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
Tu priradíte činnosť, a to makro export z modulu faktura.
Priradiť činnosť
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
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