Kancelářský balík OpenOffice.org je výkonný nástroj, který dokáže do jisté míry zastoupit funkci jednoduchého databázového systému. Ukažme si na jednoduchém příkladu, jak je možné sestavit chytrou tabulku s fakturací.
Před časem jsem potřeboval co nejjednodušším a nejrychlejším způsobem vyřešit fakturaci tak abych mohl bez problémů střídavě zpracovávat faktury na dvou počítačích. Lze samozřejmě namítnout, že v současnosti je k dispozici několik hotových programů pro vedení účetnictví v Linuxu např. známý Honey Calc. Jenže použití takovéhoto programu by bylo pro mých několik faktur za rok střelbou z kanonu na vrabce a přenos dat z jednoho počítače na druhý by nebyl zdaleka tak jednoduchý. Uvedený příklad, vytvořený v OpenOffice.org Calc je též možné využít jako flexibilní tiskovou sestavu plněnou daty z externí databáze a samozřejmě jej lze aplikovat i na jiné druhy dokladů, dodací listy, nabídky apod.
Nejprve si ukažme tiskový výstup, ke kterému chceme dojít. Je jím faktura obsahující veškeré zákonem předepsané údaje formátované s využitím možností, které poskytuje OpenOffice.org Calc.
Faktura se stejně jako většina podobných dokumentů se skládá z hlavičky a z položek. Proto by bylo ideální použít dvě tabulky, v našem případě dva datové listy – jeden pro hlavičku faktury, druhý pro její položky. Jenže žádná z mých faktur za poslední dva roky neměla více než tři položky a tak jsem v zájmu zjednodušení úlohy použil jediného listu s daty. Díky tomuto způsobu bylo možné obejít se bez maker, nastavování datových zdrojů a plnit tiskový list pouze pomocí vzorců.
První řádek tiskového listu (faktura) má nastaven atribut „Skrýt při tisku“ a obsahuje kromě jiného buňku P1 tj. číslo řádku listu „data“, v němž jsou údaje zobrazené faktury. Například pole „Faktura č.“ je svázáno s příslušnou buňkou na datovém listu vzorcem:
=INDIRECT(CONCATENATE("data.B";P1))
Vzorec lze přečíst zhruba takto: Do buňky obsahující vzorec zapiš obsah buňky z listu data, jejíž pozice je určena sloupcem B a řádkem odpovídajícím číslu vloženém do buňky P1 na aktivním listu faktura.
Podobným způsobem jsou naplněny i ostatní buňky tiskového listu. Jednotlivé řádky položek faktury mají jiný vzorec a to takový aby nevyplněná pole nezobrazovaly nuly ani jiné znaky, ale aby byly prázdné. Například vzorec „Popis položky 1“ bude následující:
=IF(INDIRECT(CONCATENATE("data.N";P1))=0;"";INDIRECT(CONCATENATE("data.N";P1)))
Princip je zřejmý teď se dáme do práce. Založte nový list „data“ a vhodně nazvěte sloupce jmény jednotlivých datových položek: Poř. č., Číslo faktury, Jméno odběratele, Ulice, Město, PSČ, IČ, DIČ, Datum vystavení a splatnosti, Fakturoval, Způsob, Platby, Pol. č. 1, Popis 1, Měr. j. 1, Množství 1, Cena j. 1, Částka 1, Celková částka. Položek založte kolik budete potřebovat (já jsem použil 3). Pole Částka 1,2,3 pak obsahují vzorec: Částka = Množství x Cena j, pole Celková částka obsahuje součet polí Částka 1,2,3.
Založte druhý list „faktura“ a začněte rozmisťovat, formátovat a plnit jednotlivá pole pomocí výše uvedených vzorců. Úlohu formuláře pro zadávání dat bude plnit list „data“. Všimněte si, že list „data“ může též sloužit jako Kniha vydaných faktur. Uvedený příklad chápejte jako nejjednodušší možný a funguje jak v OpenOffice.org 1.x tak v betaverzích OpenOffice.org 2.0. Soubor s příkladem najdete na URL článku.
Uvedený příklad je možné vylepšit např. pomocí zadávacího formuláře. Funkce pro jeho vytvoření najdete v OpenOffice 1.x na hlavním panelu nástrojů pátá položka shora „Ovládací prvky formuláře“ a v OpenOffice 2.0 si musíte zapnout panel „Návrh formuláře“. Pro správné fungování formuláře se ale nevyhnete připojení listu „data“ jako zdroje dat.
Na závěr připojuji malou poznámku k tisku faktur. Z vlastní zkušenosti vím, že je výhodné archivovat si tiskovou podobu faktury. Netiskněte tedy fakturu přímo, ale proveďte nejprve export první stránky (proto je tiskový list „faktura“ na prvním místě) do formátu PDF pomocí příkazu z roletového menu Soubor – Exportovat do PDF. Uložený soubor PDF bude složit pro tisk i pro účely archivace.