Začnite opäť tým, že si otvoríte dokument faktúra a prejdite do editora makier do modulu faktura , ktorý ste si vytvorili v minulom diele. Teraz si zapíšete do tohoto modulu nasledovné makrá.
Makrá sú myslím dostatočne okomentované , ale ak nebudete rozumieť, tak sa spýtajte.
Hlavné makro, ktoré bude ukladať dokument a exportovať dáta do zošitu faktúry.ods:
sub export 'pre faktúru euro
dim tlacidlo, tlacidlo1 ,cislo,zaznam as integer
dim dokument,oDoc,octl,ocell, list, bunka ,document, dispatcher,
bunka_zaznam,bunka_cesta as object
dim cesta as string
dim hore(1) as new com.sun.star.beans.PropertyValue
hore(0).Name = "By"
hore(0).Value = 1
hore(1).Name = "Sel"
hore(1).Value = false
document= ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dokument=stardesktop.currentcomponent
list=dokument.sheets(0)
bunka=list.GetCellByPosition(11,0)'L1
cislo=trim(bunka.string)
bunka_zaznam=list.GetCellByPosition(10,0)'K1
zaznam=trim(bunka_zaznam.string)
bunka_cesta=list.GetCellByPosition(9,0)'J1
cesta=trim(bunka_cesta.string)
bunka_odberatel=list.GetCellByPosition(5,7)'F8
odberatel=trim(bunka_odberatel.string)
'zafixovanie dát:
ovladanie.vyberlb("faktúra","C3")'dátum
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
ovladanie.vloz
'uloženie dát:
'-------------------------------------------------------------------------------
tlacidlo=msgbox("Chceš uložiť dáta z dokumentu ako záznam do databázy?",
35,"Databáza")
if tlacidlo=6 then ' ano tlacidlo
ovladanie.uloz_novy_zosit("C:\firma\faktúry\faktúra
"+cesta+".ods")'uloženie tohto dokumentu
if zaznam=1 then 'záznam už je v
databáze'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'-------------tento zošit---------------------------
ovladanie.aktualizovat_tabulky("spotreba","A1")
gosub kopiruj
with ovladanie
.vyberlb("faktúra","C3")
.uloz_zosit("C:\firma\faktúry\faktúra "+cesta+".ods")
.otvor("C:\firma\databázy\faktúry.ods")
.najdi(cislo,"data")
.vloz
.uloz_zosit("C:\firma\databázy\faktúry.ods")
end with
msgbox("Všetky údaje z faktúry č."+cesta+" boli zaktualizované
",0,"Databáza")'hláška
'-------------------------------------------------------------------------------
elseif zaznam=0 then' zaznam nie je v databáze
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'--------------tento zošit---------------------------------------
'--------------fix čísla faktúry---------------------------------
gosub fix
'---------------zošit----(databáza)
gosub kopiruj
ovladanie.vyberlb("faktúra","C3")
ovladanie.otvor("C:\firma\databázy\faktúry.ods")
ovladanie.vyberlb("data","A10000")
gosub vloz_novyzaznam
ovladanie.uloz_zosit("C:\firma\databázy\faktúry.ods")
msgbox("Všetky údaje boli uložené do databázy",0,"Databáza")'hláška
'-------------------------------------------------------------------------------ovladanie.uloz_zosit("C:\firma\faktúry\faktúra
"+cesta+".ods")'uloženie a zatvorenie dokumentu
'-------------------------------------------------------------------------------
elseif zaznam=2 then'dokument bol uložený ale záznam nie
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'--------------fix čísla faktúry---------------------------------
gosub fix
ovladanie.uloz_ako("C:\firma\faktúry\faktúra "+cesta+".ods")'uloženie
dokumentu
'---------------zošit ----(databáza)
gosub kopiruj
ovladanie.vyberlb("faktúra","C3")
ovladanie.otvor("C:\firma\databázy\faktúry.ods")
ovladanie.vyberlb("data","A10000")
gosub vloz_novyzaznam
ovladanie.uloz_zosit("C:\firma\databázy\faktúry.ods" )
bunka_zaznam.value=1 'vloží číslo 1 do bunky K1 (že je už uložené do
databázy)
msgbox("Všetky údaje boli uložené do databázy",0,"Databáza")'hláška
'----------------------------------------------------------------------------
ovladanie.uloz_a_zavri'ulož a zavri
'-------------------------------------------------------------------------------
end if' koniec zaznam
'-------------------------------------------------------------------------------
elseif tlacidlo=7 then ' nie tlacidlo
tlacidlo1=msgbox("Chceš aspoň uložiť dokument ako koncept faktúra
"+odberatel+".ods?", 35,"Databáza")
if tlacidlo1=6 then ' ano tlacidlo
bunka_zaznam.Value=2 'vloží číslo 2 do bunky K1 (že je zošit uložený, ale
neuložené do databázy)
ovladanie.uloz_novy_zosit("C:\firma\faktúry\pripravené\faktúra
"+odberatel+".ods")'uloženie dokumentu
ovladanie.zavri 'zavrieť dokument
elseif tlacidlo1=7 then 'nie tlacidlo2
ovladanie.zavri 'zavrieť dokument bez uloženia
endif' koniec tlacidlo1
'-------------------------------------------------------------------------------
end if' koniec tlacidlo
exit sub
'-------------------------------------------------------------------------------
vloz_novyzaznam:
set document= ThisComponent.CurrentController.Frame
dispatcher.executeDispatch(document, ".uno:GoUPToStartOfData", "", 0,
hore())'presun na koniec dát
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0,
Array())'skok na nasledujúcu bunku
ovladanie.vloz
return
fix:
ovladanie.vyberlb("faktúra","J1")'číslo faktúry
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
ovladanie.vloz
return
kopiruj:
with ovladanie
.vyberlb("export","A2:GP2")
.zkopiruj
end with
return
end sub
Ako vidíte, sú tu veľmi málo používané samotné procedúry – väčšinou sú volané makrá z modulu ovladanie s nejakými premennými.
Každý si musí v tomto makre prepísať cestu k súborom podľa toho, kde ich má skutočne umiestnené. V editore makier si zvoľte možnosť Upraviť | Nájsť a nahradiť a nahraďte za vašu; napríklad pre Windows: /home/firma/faktúry/pripravené/ za C:\firma\faktúry\pripravené\ .
Teraz si vložte do modulu faktura ďalšie makro. Toto je makro len pre používateľov systému Linux, používatelia systému Windows si jeho spúšťanie zrušia, ako bolo písané v treťom diele: Nástroje | Prispôsobiť | Udalosti | Otvoriť dokument.
sub skontroluj_sablona_faktura
'je to tu len kvôli tomu, že v Linuxe sa to s iným obsahom otvára pri spustení aplikácie je možné, že sa otvorí dokument ako .ots
ovladanie.nastav_sablonu("faktúra") 'názov dokumentu
end sub
Makro nastav_sablonu je v makrách modulu ovladanie, v súbore s makrami tohto modulu: Ovládacie makrá . Je to tu preto, že v Linuxe sa môže stať, že si vytvoríte pevný link a ak otvoríte napríklad súbor faktúra.ots z iného adresára, ako je adresár so šablónami, môže se stať, že by vám ho program otvoril ako faktúra.ots a nie ako nový.ods. Mne sa to osobne stalo, a preto som to ošetril týmto makrom.
Príklad: súbor faktúra.ots máte defaultne vo vašom domovskom adresári home/firma/šablony/ a vytvoríte nového používateľa user, ktorému vytvoríte pevný odkaz na priečinok šablony v adresári /home/user/. Ak ho otvorí kliknutím, akcia, ktorá sa vykoná (pokiaľ ju nemá nastavenú inak), je otvoriť a nie otvoriť ako nový. Otvorí se súbor faktúra.ots z umiestnenia /home/user/šablony/ a nie z pôvodného umiestnenia home/firma/šablony/ . Týmto makrom, ktoré je spustené pri otvorení súboru, ho zavriete a otvoríte ako nový na základe šablóny faktúra.ots. Musíte však mať povolené spúšťanie makier aj z tejto novej cesty (viď prvý diel OpenOffice.org vo výrobnej firme 1). Samozrejme, kto to nebude potrebovať, tak si ho tiež dezaktivuje.
Ďalšie makro v module faktura bude slúžiť na tlač dokumentu (je to, ako vidíte, cez nahrávač makier), nakoľko som to robil dávnejšie a je to funkčné, nechal som to tak:
sub tlacit_fakturu
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Copies"
args1(0).Value = 2
args1(1).Name = "Collate"
args1(1).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())
end sub
A posledné v tomto module je makro na export do .pdf:
sub fa_export_pdf
dim dokument, list, bunka as object
dim cesta as string
dokument=stardesktop.currentcomponent
list=dokument.sheets(0)'list1
bunka=list.GetCellByPosition(9,0)'J1
cesta=trim(bunka.string)'číslo faktúry
ovladanie.SheetToPDF("pdf","/home/firma/faktúry/pdf/faktura "+cesta+".pdf")'volanie makra SheetToPDF s premennými názvu listu a cesty pod akou sa uloží .pdf
ovladanie.vyberlb("faktúra")
end sub
Samozrejme aj tu si zmeníte cestu podľa seba. Teraz si môžete zavrieť editor makier. Predpokladám, že máte stále otvorený dokument bez_názvu1. Teraz si na paneli Ovládacie prvky formulára zapnite režim návrhu tak, ako ste to robili v minulých dieloch, a vyvolajte kontextovú ponuku (ovládací prvok) na tlačidle Ukončiť, ktoré ste si tiež minule vytvorili. Samozrejme predtým musíte odomknúť list. Prejdite na kartu Udalosti a vyberte Pri inicializácii.
 Udalosti
Udalosti
Tu priradíte činnosť, a to makro export z modulu faktura.
 Priradiť činnosť
Priradiť činnosť
 Vyberač makier
Vyberač makier
Pri tejto činnosti je potrebné mať nainštalované prostredie Java (JRE), pokiaľ ho nemáte, OpenOffice.org vás na to upozorní.
Teraz tak isto priraďte makro tlacit_fakturu k tlačítku Tlač a k tlačítku Export do pdf samozrejme makro fa_export_pdf. K tlačidlu Nový si priradíte makro neskôr, nakoľko je v module odberatel, ktorý je spätý so zošitom odberateľ a o ňom si povieme v inej časti seriálu.
Nemusíte si dialóg Úpravy ovládacích prvkov zatvárať a opäť otvárať na novom prvku, stačí, ak myšou označíte ďalší prvok (tlačidlo), a už upravujete vlastnosti tohto prvku, samozrejme bez zatvorenia dialógu.
Teraz si nezabudnite na paneli Ovládacie prvky formulára vypnúť režim návrhu, zamknite list a uložte ako faktúra.ots. Ešte vám odporúčam dokument uložiť napríklad do záloh ako faktúra.ods, lebo makro vám zapisuje a mení šablónu. No ak by ste potrebovali niečo stratené alebo pôvodné nájsť, tak to bude v poslednom uloženom dokumente. Pokiaľ máte nastavenú cestu k zálohám ako v prvom diele, tak si ešte nastavte v Nástroje | Možnosti | Načítať/uložiť | Vždy vytvoriť záložnú kópiu a hľadajte potom v priečinku firma/zálohy/OOo.
 Nastavenie vytvorenia záložnej kópie
Nastavenie vytvorenia záložnej kópie
Otvorte znovu dokument na základe šablóny faktúra.ots (bez_názvu1) a môžte si vyskúšať, ako fungujú makrá. Stlačte tlačidlo Export do pdf a pozrite sa na vytvorený pdf dokument v priečinku firma/faktúry/pdf ,teraz si vyskúšajte tlačidlo Ukončiť a skontrolujte v súbore firma/databázy/faktúry.ods záznam, ktorý ste exportovali, a tiež v priečinku firma/faktúry dokument, ktorý sa uložil. Skúste a skontrolujte všetky možnosti makra spúšťaného tlačidlom Ukončiť.
Ak je všetko v poriadku, môžete pokračovať ďalej. Pokiaľ ste sa dostali až sem, ďalšiu prácu na systéme už poľahky zvládnete. Nabudúce začnete pracovať na ďalších dokumentoch spätých s faktúrou.
- 
Makrá z modulu faktura: Makrá z modulu faktura 
- 
Dokument faktúra: Dokument faktúra 
 
 Minule ste si vytvorili ovládacie makrá a dnes sa s použitím týchto makier budete snažiť dostať dáta z vytvorenej faktúry do zošita faktúry.ods, tak isto si vytvoríte makrá, ktoré vám faktúru uložia pod originálnym názvom.
Minule ste si vytvorili ovládacie makrá a dnes sa s použitím týchto makier budete snažiť dostať dáta z vytvorenej faktúry do zošita faktúry.ods, tak isto si vytvoríte makrá, ktoré vám faktúru uložia pod originálnym názvom.









