Július Pastierik / 04. 08. 2010, 09:21
Hľadáte program pre tlač dvoch kópií faktúry vo formáte A5 na jednu stranu A4? Vytvorte si ju v OpenOffice.org, skopírujte pomocou makra a vytlačte.
Mnohí podnikatelia (napríklad slobodní umelci, ale aj tzv. „zamestnanci na živnosť“) potrebujú vystaviť faktúry iba občas, pričom ich faktúry nepresahujú veľkosť A5. V takýchto prípadoch je vhodné, aby (v rámci šetrenia papierom, t. j. lesov) kópiu pre seba aj odberateľa vytlačili na jednu stranu bežného papiera vo formáta A4.
Za týmto účelom si môžete v module Writer pripraviť dve tabuľky, ktorých obsah budú predstavovať vlastné faktúry. Pravdaže, pri vlastnej práci by bolo nepohodlné, aby ste ich museli vypisovať dvakrát, a preto je potrebné, aby ste si pripravili aj makro, pomocou ktorého dokážete skopírovať obsah jednej tabuľky do druhej. Pre jednoduchú prácu je zároveň vhodné, aby ste si do tlačiva vložili tlačidlo, pomocou ktorého faktúru skopírujete a pre ešte pohodlnejšiu prácu je možné do tlačiva vložiť aj tlačidlo pre tlač faktúry.
Pre podnikateľov, ktorí nie sú platcami DPH, sme preto pripravili jednoduché tlačivo faktúr, ktoré obsahuje spomínané funkcie. Ako písmo je použité Open Source písmo Linux Libertine – linuxlibertine.sourceforge.net. Pozor, dokument obsahuje makrá, ktoré je potrebné pri jeho otváraní povoliť.
Pre správnu funkciu je potrebné vypísať prvú („hornú“) faktúru a následne stlačiť tlačidlo Kopíruj. Týmto sa všetky údaje (úplne všetky, vrátane názvu „FAKTÚRA č.“) prenesú do druhej („dolnej“) faktúry. Pre zjednodušenie práce je pod tlačidlom Kopíruj umiestnené tlačidlo Tlač, pomocou ktorého môžete oboje faktúry ihneď vytlačiť a medzi faktúrami sú vložené aj orezové značky pre rozdelenie papiera na dve polovice.
Pravdaže, všetky prednastavené údaje si každý musí najprv upraviť podľa svojej potreby. Ešte upozorňujeme, že pri kopírovaní sa neprenáša formátovanie (veľkosť písma, jeho rez – tučné písmo, kurzíva) a ani sa nemenia veľkosti buniek tabuľky, pomocou ktorej sú faktúry vytvorené a preto, pokiaľ chcete zmeniť tieto nastavenia, musíte tak urobiť v obidvoch faktúrach.
Stiahnite si tlačivo faktúr v slovenskom alebo českom jazyku.
A pre programátorov teraz uvádzame vlastné makro pre kopírovanie obsahov tabuliek a tlač dokumentu:
REM Funkcia na výmaz znaku LF z reťazca
function Vymaz_LF (S as string) as string
dim ps as string
ps=s
while instr(ps,chr$(10))<>0 ' Pokiaľ je v reťazci LF
i=instr(ps,chr$(10)) ' Poloha LF
ps=left(ps,i-1)+right(ps,len(ps)-i) ' Ľavá časť pred LF + pravá časť za LF
wend
Vymaz_LF=ps
end function
REM Procedúra skopíruje "hornú" tabuľku – faktúru do "dolnej"
sub Kopiruj_fa
dim dokument, tabulkah, tabulkad, bunkah, bunkad as object
dokument=StarDesktop.CurrentComponent.GetTextTables()
dim i,j,k as integer
for k=1 to 4
' Výber tabuľky s číselným údajom podľa jej názvu
tabulkah=dokument.GetByName("Tabulka"+trim(str(k)))
tabulkad=dokument.GetByName("Tabulka"+trim(str(k+4)))
' Výber buniek podľa jednotlivých tabuliek
select case k
case 1 ' Tabulka1 – A1 – B1, A2 – A5
for i=0 to 1
bunkah=tabulkah.getCellByName(chr(asc("A")+i)+"1") ' Bunka A1 – B1 z "hornej" tabuľky
bunkad=tabulkad.getCellByName(chr(asc("A")+i)+"1") ' Bunka A1 – B1 z "dolnej" tabuľky
bunkad.SetString(Vymaz_LF(bunkah.GetString)) ' Vlastný prenos
next i
for i=2 to 5
bunkah=tabulkah.getCellByName("A"+trim(str(i))) ' Bunka A2 – A5 z "hornej" tabuľky
bunkad=tabulkad.getCellByName("A"+trim(str(i))) ' Bunka A2 – A5 z "dolnej" tabuľky
bunkad.SetString(Vymaz_LF(bunkah.GetString)) ' Vlastný prenos
next i
case 2 ' Tabulka2 – A1, A2 – B2
bunkah=tabulkah.getCellByName("A1") ' Bunka A1 z "hornej" tabuľky
bunkad=tabulkad.getCellByName("A1") ' Bunka A1 z "dolnej" tabuľky
bunkad.SetString(Vymaz_LF(bunkah.GetString)) ' Vlastný prenos
for i=0 to 1
bunkah=tabulkah.getCellByName(chr(asc("A")+i)+"2") ' Bunka A2 – B2 z "hornej" tabuľky
bunkad=tabulkad.getCellByName(chr(asc("A")+i)+"2") ' Bunka A2 – B2 z "dolnej" tabuľky
bunkad.SetString(Vymaz_LF(bunkah.GetString)) ' Vlastný prenos
next i
case 3 ' Tabulka3 – A1 – B2
for i=1 to 2
for j=0 to 1
bunkah=tabulkah.getCellByName(chr(asc("A")+j)+trim(str(i))) ' Bunka A1 – B2 z "hornej" tabuľky
bunkad=tabulkad.getCellByName(chr(asc("A")+j)+trim(str(i))) ' Bunka A1 – B2 z "dolnej" tabuľky
bunkad.SetString(Vymaz_LF(bunkah.GetString)) ' Vlastný prenos
next j
next i
case 4 ' Tabulka4 – A1 – B1, A2
for i=0 to 1
bunkah=tabulkah.getCellByName(chr(asc("A")+i)+"1") ' Bunka A1 – B1 z "hornej" tabuľky
bunkad=tabulkad.getCellByName(chr(asc("A")+i)+"1") ' Bunka A1 – B1 z "dolnej" tabuľky
bunkad.SetString(Vymaz_LF(bunkah.GetString)) ' Vlastný prenos
next i
bunkah=tabulkah.getCellByName("A2") ' Bunka A2 z "hornej" tabuľky
bunkad=tabulkad.getCellByName("A2") ' Bunka A2 z "dolnej" tabuľky
bunkad.SetString(Vymaz_LF(bunkah.GetString)) ' Vlastný prenos
end select
next k
end sub
REM Procedúra vytlačí dokument na defaultnú tlačiareň
sub Tlac_fa
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())
end sub
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk