Správa a tisk faktur v LaTeXu

Podobné dokumenty
faktura, LaTeX, open source, freeware, Python, multiplatformní program

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

v. 2425a Jak si na PC vypěstovat HTTP (WWW, Web) server a jak ho používat (snadno a rychle) by: Ing. Jan Steringa

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek

Demoprojekt Damocles 2404

Instalace a základní administrátorské nastavení 602LAN SUITE 5 Groupware

Úvod do Linuxu SŠSI Tábor 1

Angličtina program k procvičování slovní zásoby

Instrukce pro vzdálené připojení do učebny 39d

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Správa linuxového serveru: Webová rozhraní k poště (Squirrelmail a Roundcube)

Příprava prostředí pro výuku PHP a MySQL

DLS V v1.2. Nové funkce. Používání programu DLS V

EPLAN Electric P8 2.7 s databázemi na SQL serveru

Projekt implementace OS Linux do výuky informačních technologií

Podpora šifrovaného spojení HTTPS

1 Webový server, instalace PHP a MySQL 13

1. Webový server, instalace PHP a MySQL 13

Excel a externí data KAPITOLA 2

Na vybraném serveru vytvoříme MySQL databázi. Soubory scratch.jpa, kickstart.php a en-gb.kickstart.ini nahrajeme na vybraný server.

WNC::WebNucleatCreator

Instalace Microsoft SQL serveru 2012 Express

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST. Obor SOČ: 18. Informatika. Školní sdílení PC obrazovek. School sharing PC screens

Individuální projekt z předmětu webových stránek 2012/ Anketa

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

Instalace a první spuštění Programu Job Abacus Pro

BRICSCAD V15. Licencování

Případová studie: Adresářové řešení pro webhosting pomocí ApacheDS. Lukáš Jelínek

Střední odborná škola a Střední odborné učiliště, Hořovice

Instalace SQL 2008 R2 na Windows 7 (64bit)

Redakční systém Joomla. Prokop Zelený

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

Bakalářské. Vzdělání: Telefon: Ostrava. Bydliště: Ukázky práce: Správa a monitoring platformy provozované na AWS

Návod k instalaci S O L U T I O N S

STRUČNÝ NÁVOD K POUŽITÍ

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Konfigurace Nagios. Zadání: Příprava a prvotní problémy: Instalace a konfigurace serveru:

SPŠ NA PROSEKU. Individuální projekt z předmětu webových stránek Anketa. Filip Novotný ITB

PSK3-20. Malý poštovní server I. Instalace

Formy komunikace s knihovnami

Matematika v programovacích

APS Administrator.OP

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Nastavení propojení s eshopem

Střední odborná škola a Střední odborné učiliště, Hořovice

Vývoj multiplatformní aplikace v Qt

SYSTEM EDUBASE INSTALAČNÍ PŘÍRUČKA

Instalace a konfigurace web serveru. WA1 Martin Klíma

ČSOB Business Connector

PSK3-11. Instalace software a nastavení sítě. Instalace software

Střední odborná škola a Střední odborné učiliště, Hořovice

Instalace TEX Live 2007 pro Windows

NAS 323 NAS jako VPN Server

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž.

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Použití zásad skupin k instalaci klientské komponenty ESO9

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Operační systémy. Cvičení 1: Seznámení s prostředím

Jan Forman Manuál CLASSIFICATIO N: public / veřejný dokument IDE NTIFICATIO N N U MBER: AUTH OR:

Střední odborná škola a Střední odborné učiliště, Hořovice

Vzdálené ovládání dotykového displeje IDEC HG3G pomocí routeru VIPA TM-C VPN

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

Olga Rudikova 2. ročník APIN

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Archivace relačních databází

E-learningovýsystém Moodle

FREEWAROVÉ ŘEŠENÍ DICOM SERVERU S NÍZKÝMI NÁROKY NA HARDWAROVÉ VYBAVENÍ

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

1. Instalace MySQL Serveru Konfigurace MySql Serveru Vytvoření struktury databáze...3

Jak psát bakalářskou práci v DocBooku


PC Fand a Linux Budoucnost PC FANDu

EvMO postup při instalaci

1. V notebooku (v hlavním hostitelském operačním systému (MS Windows)) mít nainstalováno a nakonfigurováno:

ŘÍZENÍ POHLEDÁVEK A AUTOMATICKÉ UPOMÍNKY. Katalogový doplněk ABRA Gen

Střední odborná škola a Střední odborné učiliště, Hořovice

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

Nastavení DCOM. Uživatelský manuál

Automatické generování zkouškových testů

Instalace Active Directory

ID Microserver. TCP Server pro čtečky:

Instalace MS SQL Server Express a MS SQL Server Management Express

Instalační manuál. HelpDesk

Střední odborná škola a Střední odborné učiliště, Hořovice

Firmadat SMS Sender. aplikace pro odesílání SMS zpráv z Vašeho PC pomocí telefonu ZÁKLADNÍ INFORMACE A INSTALACE MILAN PASTOR, ROMAN NEPŠINSKÝ

NAS 208 WebDAV bezpečné sdílení souborů

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

Instalace a konfigurace

ZyXEL VMG8823. Návod na jednoduchou a rychlou instalaci modemu ZyXEL VMG8823-B50. Budoucnost je úžasná. Ready?

Transkript:

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Správa a tisk faktur v LaTeXu Plzeň 2012

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Obor SOČ: Informatika 18 Správa a tisk faktur v LaTeXu Management and invoice printing in LaTeX Autor: Škola: Konzultant: VOŠ a SPŠE Plzeň Koterovská 86 Ing. Petr Včelák Plzeň 2012

Anotace Program si vzhledem ke své jednoduchosti může najít uplatnění u začínajících podnikatelů, živnostníků či web designerů, kteří nedisponují dostatečným finančním kapitálem pro pořízení univerzálního účetního programu, ale přesto potřebují vystavovat faktury svým odběratelům v zákonem uznané formě. Klíčová slova: faktura, LaTeX, open source, Python, multiplatformní program, Django Annotation This Invoice-generator regarding to its simple structure will surely find its users among enterpreneur-beginners or web designers, who can t afford expensive accounting program but need to issue propper ivoices to their customers. Key words: Invoice, Latex, open source, Python, multi-platform tool, Djnago

Poděkování Děkuji Ing. Petru Včelákovi za velmi dobré vedení, za rychlou a obětavou pomoc při zpracování této práce. Dále děkuji za všechny připomínky a odborné rady, které mi během zpracování poskytl.

Prohlášení Prohlašuji, že jsem svou práci vypracoval samostatně, použil jsem pouze podklady (literaturu, SW atd.) uvedené v přiloženém seznamu a postup při zpracování a dalším nakládání s prací je v souladu se zákonem č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon) v platném znění. V Plzni dne... podpis:...........................

Obsah 1 Zadání 5 2 Úvod 5 3 Analýza problematiky 5 3.1 Multiplatformní aplikace.......................... 5 3.2 Tisk a výstup................................ 6 4 Návrh 6 4.1 Programovací jazyk............................. 6 4.2 Framework.................................. 6 4.3 Databáze.................................. 6 4.4 L A TEX.................................... 7 5 Programátorská dokumentace 7 5.1 Vývojové prostředí............................. 7 5.2 Použité programy a knihovny....................... 7 5.3 Struktura programu............................. 7 5.3.1 Modelová struktura......................... 7 5.3.2 Souborová struktura programu.................. 8 6 Uživatelská dokumentace 8 6.1 Instalace................................... 8 6.2 Konfigurace................................. 8 6.2.1 Server Apache2........................... 9 6.2.2 Django server............................ 10 6.3 Používání.................................. 10 7 Závěr 11 8 Literatura 11 8.1 Použitá literatura.............................. 11 8.2 Diskuzní fóra................................ 11

1 Zadání 1. Implementujte snadno ovladatelnou a přenositelnou aplikaci pro tvorbu, správu a tisk faktur v LaTeXu s GUI. 2. Aplikace umožňuje předdefinování šablon pro tiskovou sestavu i uložení vyplněných údajů jako vzoru pro další faktury. 3. Možnost naplnění dat z externího souboru (např. CSV, XML) a jejich dávkové zpracování. 4. Vytvoření instalačního souboru/balíčku a programátorské i uživatelské dokumentace. 2 Úvod Cílem této práce je navrhnout nenáročný program pro generování faktur, který by byl snadno ovladatelný a multiplatformní. Je důležité, aby tento program fungoval na všech operačních systémech (Linux, Windows, OS X), aby nezáleželo na grafickém prostředí ve kterém daný systém pracuje (GNOME, KDE, X-fce,... ). 3 Analýza problematiky 3.1 Multiplatformní aplikace Pokud chcete zaručit, že aplikaci budete moci používat na všech typech operačních systémů a zařízení, je to problém. Pokud se rozhodnete pro klasickou aplikaci, jsou knihovny (Tkinter, Qt, Gtk), které jsou schopny zajistit stejný vzhled. Další problém je, že LaTeX těžko zprovozníte na tabletu či mobilu. Dalším problémem je to, že tablety a telefony potřebují speciální grafické prostředí. Toto vše lze jednoduše zajistit tím, že aplikaci pustíme na serveru a budeme se k ní připojovat pomocí webového prohlížeče. Aplikaci plně optimalizujeme na linux a v klienské části nemusíme nastavovat nic. Aplikace ovšem umožňuje běh přímo na klientském PC. 5

3.2 Tisk a výstup Výstup této aplikace má být vytištěná faktura a soubor s fakturou, vhodný k archivaci či posílání mailem. Tisk můžeme docílit přímím tiskem z html. Přímý tisk není nezávyslí na výstupním zařízení a chybí výstup do soboru. Pro výstup aplikace jsem zvolil formát PDF, který splňuje standart DVI (device independent - nezávislý na výstupním zařízení), je neupravitelný (dá se sice upravit, ale ne omylem), vhodný k archyvaci a téměř všichni mají v počítači prohlířeč PDF. 4 Návrh 4.1 Programovací jazyk Pokud jsme se dříve rozhodli, že aplikace bude běžet na servru máme na výběr z několika programovacích jazyků. Musíme zvolit kompromis mezi rychlostí (Perl, PHP) a jednoduchostí kódu (Python, Ruby). Zvolil jsem si Python, protože s tímto jazykem pracuji už dlouho. 4.2 Framework Psát aplikaci od začátku by nebylo moc vhodné, protože bych již objevoval objevené a zajímal se už o dávno řešené a vyřešené problémy. Myslím si, že je zbyteční zdržovat se například validací vstupních polí. Proto jsem si zvolil framework Django. Tento framework obsahuje všechny funkce pro psaní moderní webové aplikace podle modelů MVC (model - view - controller), DRY (don t repeat yourself) a dalších. 4.3 Databáze Framework Django obsahuje dosti propracované API a DB model, takže nemusíme řešit jakou databázy použijeme. Django podporuje PostgreSQL, MySQL, sqlite3 a oracledb. Pro servrové použtí (apache2) je nejvhodnější MySQL, protože je dost rychlá a konfigurace MySQL serveru je velmy jednoduchá. Naopak pro aplikaci která se bude spouštět na django serveru je vhodnější sqlite3, protože nepotřebuje server a nekonfiguruje se. 6

4.4 LaTeX Propojení aplikace s LaTeXem je zajištěno systémovými příkazy, které zajistí přeložení vygenerovaného *.tex dokumentu pdflatexem. Pro spouštení systémových příkazů je v pythonu funkce system v knihovně os. 5 Programátorská dokumentace 5.1 Vývojové prostředí Operační systém Linux Distribuce Debian 6 Testing Grafické prostředí i3wm Verze kernelu 3.1.0-1-amd64 Verze GCC 4.6.2 Editor vim, gedit 5.2 Použité programy a knihovny pdflatex 3.1415926-1.40.10 překladač TeX souborů do PDF Python 2.7.2+ Jazyk, ve kterém je napsaná aplikace Django 1.3 Python framework pro webové aplikace 5.3 Struktura programu Program splňuje požadavky modelu MVC, takže má oddělěné DB modely, controllery (v našem případě je to Django) a pohledy. Dále je oddělená knihovna pro tvorbu a překlad faktur v *.tex soborech. 5.3.1 Modelová struktura Aplikace se skládá z modelů předdefinovaných Djangem a vlastnímy modely. Jediný model Djanga který využívám je model User (uživatelé), který využívám k přihlášení do aplikace. Dále jsem si definoval modely pro databázy adres, faktury, položky faktur, výstupní pdf a šablon faktur. 7

5.3.2 Souborová struktura programu Kořenový adresář je po rozbalení invoice-generator. Jméno tohoto adresáře můžeze změnit, ostatních nikoliv. V kořenovém adresáři se nachází: app/ - zdrojové kódy aplikace asset/ - z tohoto adresáže se načítají statické soubory do static db/ - databáze sql media/ - soubory vložené za běhu programu, viditelné z vnějšku static/ - statické soubory tmp/ - adresář, kde probýhá překlad LaTeXem var/ - adresáž obsahující vygenerované PDF djago.wsqi - konfigurační soubor pro mod wsgi apache2 6 Uživatelská dokumentace 6.1 Instalace Tento program pro svojí činnost potřebuje Python2.6 a vyšší, MySQL 4, Djano 1.3, Apache2, pdflatex s českou lokalizací a knihovny pro propojení těchto prostření mod wsgi, python-mysql. Na Debianu a Ubuntu můžeme použít systém repozitářů a příkazem apt-get install python mysql-server mysql-client python-django python-mysql apache2 libapace2-modwsgi texlive-full Ve windows si musíte všechny části stáhnout a nainstalovat samostatně. Aplikace je zabalená do archivu tar.gz, stačí tak rozbalit do příslušného adresáře. 6.2 Konfigurace Pokud nechceme používat MySQL server tak tento krok vynecháme. Nejdříve je nutné, vytvořit databázi v MySQL serveru. Tu vytvoříme příkazy: user@localhost: mysql -h localhost -u user -p mysql > CREATE DATABASE invoicegenerator; Tímto jste vytvořily databázy a proto musíte zadat přístupové údaje do databáze do souboru config.py ve složce app. 8

DB ENGINE = mysql # mysql or sqlite3 DB NAME = invoicegenerator DB USER = user DB PASSWD = asdfqwer DB HOST = # empty for default DB PORT = # empty for default Dále je nutno nastavit práva pro zápis do var a tmp pro uživatele www-data. chown www-data:www-data tmp var -R Nakonec je nutné vytvořit databázi a uživatele. Ve složce app spust te příkaz python manage.py syncdb. Příkazm vytvoříte taulky v databázi a uživatele. Zeptá se vás na jméno, heslo a email. Email pro chod aplikace není důležitý, ale musí tam být dokonce ve formátu emilu. Pokud nechcete zadávat vlastní, zadejte například a@a.com. 6.2.1 Server Apache2 Budeme konfigurovat lokální server na Apache2 a bude předpokládat, že na něj budeme přistupovat z počítače na kterém běží. Nejdříve si musíme zvolit ServerName. Do souboru /etc/hosts přidáme na poslední řádek 127.0.0.1 invoice-generator (invoice-generator je naše zvolené server name). Pak si musíme vytvořit konfigurační soubor pro apache ve složce /etc/apache2/sitesavailable/invoice-generator. Zde je základní nastavení Apache2. Zde se musí zadat cesty k adresáři a aplikací. PATH TO PROJECT je cesta ke kořenovému adresáři aplikace. Například /opt/invoice-generator. <VirtualHost *:80> ServerName invoice-generator WSGIScriptAlias / PATH TO PROJECT/django.wsgi Alias /media/ PATH TO PROJECT/media/ Alias /static/ PATH TO PROJECT/static/ <Directory PATH TO PROJECT/static> Order deny,allow Allow from all </Directory> <Directory PATH TO PROJECT/media> 9

Order deny,allow Allow from all </Directory> </VirtualHost> Musíte vytvořit symbolický odkaz na konfigurační soubor, aby Apache věděl, že ho má načítat. To provedete příkazem ln -s /etc/apache2/sites-available/invoice-generator /etc/init.d/apache2/sites-enabled/. Ted stačí jen restartovat server Apache2 příkazem /etc/init.d/apache2 restart a aplikace běží. Připojíte se k ní v prohlížeci adresou http://invoice-generator. 6.2.2 Django server Pokud k Aplikaci nechcete přistupovat po síti, stačí vám použití na jednom počítači stačí použít server, který je obsažen přímo v Djangu. Není tak výkonný jako Apache2 mod WSGI, ale pro jednoho uživatele bohatě stačí. Server se spouští z adresáře app příkazem python manage.py runserver. Server se spustí na adrese http://localhost:8000 pokud chcete jinou ip nebo port spouštějte python manage.py runserver 192.168.1.10:80. K aplikaci přistupujeme přes webový prohlížeč. 6.3 Používání Používání této aplikace je velmi intujitivní. Po grafické stránce je aplikace velmi strohá. Hlavní výhodou je jednoduchost, kterou tato aplikace splňuje. 10

7 Závěr Práce a vytvořený program splňuje požadavky zadání. Program je sice optimalizován pro běh na linuxových strojích, kde v 90% času poběží (serverové použití), ale byl testován při spouštění na django serveru na PC s Windows. Vzhled faktur je flexibilní a snadno modifikovatelný použitím jiné šablony. Zatím program obsahuje pouze jednu šablonu. V budoucnu bude možnost výběru z několika předdefinovaných šablon. Například šablona s doplněním loga živnostníka. Na některé dílčí části se nedostalo, z důvodu velkého rozsahu zpracovávané problematiky a nutnosti získat znalosti s použitím LaTeX, Python, Django. Dávkové zpracování v současné době realizováno není, ale je s ním do budoucna počítáno a program je pro jeho realizaci navržen. Uplatnitelnost tohoto programu je velice dobrá. Program je open source a uživatelům umožňuje, aby měli nejen možnost program používat, ale i jej upravit přesně pro své podmínky. Tento systém generování faktur již v praxi používá internetový obchod WigiShop.cz. 8 Literatura 8.1 Použitá literatura Tobias Oetiker : Nepříliš stručný úvod do systému LaTeX2E Michal Švamberg: Seriál jak na LaTeX, http://www.root.cz/serialy/jak-na-latex Úvod do Tkinter: http://tkinter.programujte.cz Drsný úvod do latexu, http://apfyz.upol.cz/ucebnice/down/mini/drslat.pdf 8.2 Diskuzní fóra http://ubuntuforums.org http://forum.ubuntu.cz http://forum.root.cz 11