Masarykova univerzita Fakulta informatiky
Prototyp programu pro ekonomický reporting podniku Bakalářská práce
Petra Jouzová Brno, 2015
Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracovala samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování použila nebo z nich čerpala, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
V Brně dne 15. května 2015
Petra Jouzová
Vedoucí práce: prof. RNDr. Jiří Hřebíček, CSc.
iii
Poděkování Chtěla bych poděkovat prof. RNDr. Jiřímu Hřebíčkovi, CSc. za velmi cenné rady, trpělivost, připomínky, vedení práce a čas, který mi věnoval během psaní této bakalářské práce. Dále panu Ing. Oldřich Faldíkovi za podporu a rady k řešení implementační části mé bakalářské práce.
v
Shrnutí Tato bakalářská práce se zabývá tvorbou modulu na podporu webového informačního systému s názvem Měření podnikové udržitelnosti ve vybraných odvětvích, který bude sloužit pivovarům k vytvoření dobrovolného reportingu podniku. Vytvoření modulu usnadní podnikům vyplňování webového formuláře pro výpočet indikátoru výkonnosti EVA dle zadaného roku. Bakalářská práce obsahuje současný stav informačního systému, požadavky na modul, návrh a implementaci modulu, která je řešená pomocí jazyka PHP a Nette Framework.
Klíčová slova Reporting podniku, webový informační systém, optické rozeznávání znaků, OCR, ekonomická přidaná hodnota, EVA, PHP, Nette Framework.
vii
Obsah Úvod 1
Reporting výkonnosti podniku
Povinný reporting ............................................................................................... 5
1.2
Dobrovolný reporting ......................................................................................... 6
1.3
Indikátory výkonnosti podniku ........................................................................... 6
1.3.1
Environmentální výkonnost ....................................................................... 6
1.3.2
Sociální výkonnost ..................................................................................... 7
1.3.3
Corporate governance výkonnost ............................................................... 8
1.3.4
Ekonomická výkonnost .............................................................................. 9
Výběr ekonomických ukazatelů výkonnosti ..................................................... 10
Současný stav informačního systému 2.1 2.2
4
13
Projekt Měření podnikové udržitelnosti ve vybraných odvětvích .................... 13
2.1.1
3
5
1.1
1.4 2
3
Cíl projektu............................................................................................... 13
Aktuální stav informačního systému ................................................................ 13
Požadavky na modul
17
3.1
Funkční požadavky na modul ........................................................................... 17
3.2
Zdroje vstupních dat ......................................................................................... 17
3.2.1
Administrativní registr ekonomických subjektů (ARES) ........................ 17
3.2.2
Obchodní rejstřík ...................................................................................... 19
3.2.3
Struktura a obsah účetní závěrky ............................................................. 20
3.3
Formát PDF ...................................................................................................... 22
3.4
Optické rozpoznání znaků ................................................................................ 22
3.4.1
Historie OCR ............................................................................................ 23
3.4.2
Funkčnost OCR ........................................................................................ 23
3.5
Syntaktický analyzátor (parser) ........................................................................ 24
3.6
Položky účetní závěrky pro výpočet EVA........................................................ 24
3.7
Matematický postup výpočtu EVA pro informační systém ............................. 25
Návrh modulu 4.1
29
Schéma logické architektury............................................................................. 29
1
5
4.2
Unified Modeling Language (UML) ................................................................. 30
4.3
Diagram případu užití ....................................................................................... 30
4.4
Diagram tříd ...................................................................................................... 31
Implementace modulu
33
5.1
Programovací jazyk – PHP ............................................................................... 33
5.2
Nette Framework ............................................................................................... 33
5.2.1
Model – View – Presenter (MVP) ............................................................ 34
5.3
Struktura aplikace.............................................................................................. 35
5.4
Integrace modulu do IS ..................................................................................... 36
5.5
Implementace modulu ....................................................................................... 37
5.6
Funkce formFieldsDom() .................................................................................. 37
5.6.1 5.7
Funkce curlDownloadPdf() ............................................................................... 38
5.7.1 5.8
Rozhraní DOM ......................................................................................... 38 Knihovna cURL ........................................................................................ 38
Funkce ocrPdf() ................................................................................................. 38
5.8.1
Vhodný OCR nástroj ................................................................................ 38
5.8.2
Funkce shell_exec() .................................................................................. 39
5.9
Funkce parseWord() .......................................................................................... 40
5.9.1
Funkce preg_match() ................................................................................ 40
5.10 Vstup a výstup modulu ..................................................................................... 40 5.11 Stav IS po připojení modulu ............................................................................. 41 Závěr
43
Seznam použité literatury
45
Přílohy
50
2
Úvod Reporting podniku je podávání zpráv, českým ekvivalentem je výkaznictví. Podle jeho typu je dáno, komu se musí reporty odevzdat, co musí obsahovat a jakou formou musí být napsán. Základní dělení reportingu je na povinný reporting, který musí podniky ohlašovat na státní správě, a dobrovolný reporting, který může podnikům pomoci s jejich výkonností. Reporting se zaobírá čtyřmi základními oblastmi, a to: environmentální, sociální, „corporate governance“ (systém vedení a kontrolování podniku) a ekonomickou. Každá oblast je specifická a má své ukazatele pro stanovení výkonnosti podniku. Pokud se zaměříme na ekonomický reporting, tak obsahuje například následující ukazatele: aktiva, krátkodobé a dlouhodobé závazky, osobní náklady, tržby atd. Tyto a mnoho dalších údajů jsou podniky povinny každý rok vykazovat v účetní závěrce a výroční zprávě, které obsahují rozvahu, výkaz zisků a ztráty, přehled o změnách vlastního kapitálu atd. Existuje mnoho informačních systémů, které pomáhají podnikům s vytvářením dobrovolných reportingů. Jedním z nich je i informační systém s názvem Měření podnikové udržitelnosti ve vybraných odvětvích. Tento informační systém bude zaměřen na pivovary. Bude jim nápomocný s tvorbou dobrovolného reportingu a výpočtem jejich roční ekonomické výkonnosti. Na projektu spolupracují tři vysoké školy v Brně: Mendelova univerzita, Masarykova univerzita a Vysoké učení technické. Projekt vede doc. Ing. Alena Kocmanová, Ph.D. a prof. Jiří Hřebíček. Hlavním iniciátorem tvorby webového informačního systému je Ing. Oldřich Faldík z Mendelovy univerzity. Vytváření tohoto systému je zadáno také jako bakalářská práce, na které pracuje student Masarykovy univerzity Václav Bukovský. Cílem mé bakalářské práce je ulehčit pivovarům vyhledávání dat pro dobrovolný reporting z účetních závěrek, a to pomocí vytvoření prototypu modulu, který má za úkol najít data a vložit je do webového formuláře. Pro implementaci je potřeba provést analýzu registru ekonomických subjektů a obchodního rejstříku, ze kterého se stahují konkrétní data ve formátu PDF podle zadaného roku a IČ pivovaru. Data ve formátu PDF se převedou do čitelné podoby, k čemuž se použije metoda zvaná optické rozpoznávání znaků [16]. Dále je potřeba vytvořit syntaktický analyzátor (parser), který dokáže najít
3
a uložit deset indikátorů, které byly vybrány spolupracovníky projektu, pro výpočet indikátoru ekonomická přidaná hodnota (EVA). Ten slouží k výpočtu výkonnosti podniku. Bakalářská práce je rozdělena do pěti kapitol. První kapitola pojednává o teoretické přípravě, vysvětlení pojmů a klíčových bodů reportingu a jeho indikátorů. V druhé kapitole je nastíněn současný stav informačního systému. Ve třetí kapitole se zaměřuji na popis požadavků na modul z hlediska teoretických znalostí. Obsahem třetí kapitoly je tedy vysvětlení základních pojmů, které jsou k tématu potřebné, a matematický postup výpočtu ukazatele EVA. Čtvrtá kapitola obsahuje návrh modulu vykreslený pomocí diagramů. A poslední kapitola zahrnuje praktickou část, tedy samotnou implementaci, především použité nástroje, programovací jazyk a knihovny. Dále také stav informačního systému po propojení s modulem. Program implementovaný pro podporu informačního systému by měl pivovarům sloužit pro předvyplnění dat z účetních závěrek veřejně přístupných v obchodním rejstříku. Informační systém ještě není zcela kompletní, takže využitelnost bude možné pozorovat až po jeho spuštění. Cílem projektu je rozšířit informační systém z pivovarů na co největší množství průmyslových odvětví. Pokračování v podpoře tohoto informačního systému bych se ráda věnovala ve svém navazujícím studiu v diplomové práci.
4
1
Reporting výkonnosti podniku
Pojem reporting znamená podávání zpráv podnikem. Tyto zprávy obsahují informace o všech činnostech, které podnik vykonává nebo které souvisí s jeho chodem, ale také o aktivech, pasivech, pohledávkách, závazcích a dalších přidružených měřitelných úkonech. V České republice je ekvivalentním slovem k reportingu slovo výkaznictví. Reporting je vytvářen pro státní orgány, vnitřní a vnější zainteresované strany nebo další zájmové skupiny. Data, která podniky uchovávají, jsou pomocí podnikového informačního systému zpracovávána a upravována podle požadavků na formální i obsahovou stránku reportingu. Informační systém mění data na statisticky měřitelné informace podniku. Známé jsou dva druhy reportingu, a to povinný a dobrovolný.
1.1
Povinný reporting
Povinný reporting zahrnuje ohlašování povinných zpráv státní správě (úřady, ministerstva) v oblasti environmentální, sociální a ekonomické. Do environmetálního reportingu spadají hlášení o znečišťování ovzduší, emisích, nakládání s nebezpečnými odpady atd. Tyto informace pak podniky pravidelně ohlašují státní správě životního prostředí (obce s rozšířenou působností, krajské úřady, Ministerstvo životního prostředí atd.) [11]. V souvislosti se sociálním reportingem mají podniky povinnost ohlašování dvěma organizacím. První z nich je Česká správa sociálního zabezpečení (ČSSZ), která eviduje např. evidenční list důchodového pojištění, přehled o výši pojistného, oznámení o nástupu do zaměstnání. Druhou organizací je oborová zdravotní pojišťovna (OZP). Zde je potřeba ohlašovat např. přihlášení nového zaměstnavatele, přehled o platbě pojistného zaměstnavatele za zaměstnance, záznam o pracovním úrazu. Povinnost vykazovat sociální reporting vyplývá ze Zákoníku práce, Obchodního zákoníku a Zákonu o kolektivním vyjednávání [11]. Ekonomický reporting, na který se v této bakalářské práci zaměřuji, je vymezen zákonem o účetnictví a jednotlivými ustanoveními zákonů o daních z příjmů a dani z přidané hodnoty. Základní povinností podniku z hlediska ekonomického reportingu je vykazování informací v účetní závěrce a výroční zprávě. Výroční zpráva má uceleně,
5
vyváženě a komplexně informovat o vývoji jeho výkonnosti, činnosti a stávajícím hospodářském postavení. Výroční zpráva má dále obsahovat finanční i nefinanční informace o aktivitách v oblasti ochrany životního prostředí a pracovněprávních vztazích. Do finančního reportingu patří např. sdělení o aktivech a pasivech, tržbách nebo osobních nákladech [11].
1.2
Dobrovolný reporting
Už z názvu vyplývá, že nejsou podniky povinny vytvářet dobrovolný reporting. Tvorba takového reportingu přináší podniku vyšší náklady, na druhou stranu může podniku prozradit mnohem více informací o jeho výkonnosti. Dobrovolný reporting se dělí na dva typy, které se liší tím, jaké používají nástroje. Nástroje mohou být buď standardizované, nebo takové, které se řídí doporučenými přístupy. Standardizované nástroje představují pravidla, doporučení, postupy ohledně požadavků kladených na reporting. Jsou to např. G4 Guidelines od organizace Global Reporting Initiative (GRI), OECD Guidelines of Multinational Enterprises od organizace OECD nebo The International Framework od organizace International Integrated Reporting Council (IIRC) [19]. U doporučeného přístupu nejsou pravidla striktně určena, existují jen doporučené postupy a je na samotných podnicích, jak zprávy zpracují.
1.3
Indikátory výkonnosti podniku
Každý podnik chce mít udržitelnou podnikovou výkonnost, kterou můžeme definovat jako integraci čtyř hlavních oblastí: environmentální, sociální, corporate governance, dohromady označované zkratkou ESG, a ekonomické výkonnosti. Základním pilířem reportingu je výběr klíčových ukazatelů výkonnosti (KPIs) pro každou z těchto oblastí. 1.3.1
Environmentální výkonnost
Hodnocení environmentální výkonnosti můžeme popsat jako průběžný proces shromažďování a hodnocení dat a informací, který má zajistit hodnocení aktuální výkonnosti podniku a vývojových trendů v určitém časovém období. Hodnocení environmentální výkonnosti podniku popisované normou ČSN EN ISO 14031 je řídící nástroj, který napomáhá podniku lépe chápat, zlepšovat a demonstrovat efektivnost aplikací principů ochrany životního prostředí ve všech aktivitách, které podniky vykonávají [3]. Je potře-
6
ba velké množství dat nastřádaných vzhledem k dopadům výrobků, výroby a činností podniku na životní prostředí, aby bylo pomocí ukazatelů možné najít rovnováhu mezi ekonomickými a environmentálními efekty, čímž může podnik najít cestu k udržitelnosti. Klíčové environmentální ukazatele jsou důležité v následujících oblastech životního prostředí (dále ŽP) [5][8]:
Účinnost materiálové spotřeby,
Energetická účinnost,
Vodní hospodářství,
Odpadové hospodářství,
Biologický rozmanitost (biodiverzita),
Emise do ovzduší,
Ostatní.
Konkrétní ukazatele environmentální výkonnosti jsou [11]:
1.3.2
EN1 - Investice na ochranu ŽP,
EN2 - Neinvestiční náklady na ŽP,
EN3 - Celkové emise do ovzduší,
EN4 - Celkové emise skleníkových plynů,
EN5 - Celková roční spotřeba energie,
EN6 - Celková spotřeba obnovitelné energie,
EN7 - Spotřebované materiály,
EN8 - Recyklované vstupní materiály,
EN9 - Celková roční spotřeba vody,
EN10 - Celková roční produkce odpadu,
EN11 - Celkový roční produkce nebezpečného odpadu.
Sociální výkonnost
Sociální výkonnost není měřitelná tak jednoduše jako environmentální. Sociální výkonnost se soustředí na zaměstnance a další zájmové skupiny a vztahy mezi nimi. Podnik, který chce mít vysokou sociální výkonnost, musí o své zaměstnance pečovat. Ma-
7
nagement podniku by měl své zaměstnance motivovat k vyšší výkonnosti práce, snažit se zlepšovat vztahy mezi zaměstnanci a nastavit klidné, příjemné pracovní prostředí. Spokojenost zaměstnanců tvoří jednu z podmínek jejich stability a ochoty podávat očekávaný výkon. K hodnocení sociální výkonnosti se používají především nefinanční indikátory. U sociální výkonnosti je zapotřebí určit, podle kterých norem budou vybrány sociální ukazatele. Mezi ty, které zahrnují do svého kontextu sociální oblast, patří: GRI, Společenská odpovědnost firem (CSR), Social Accountability 8000, ČSN ISO 26000:2010 – Pokyny pro oblast společenské odpovědnosti, Bezpečný podnik atd. [11]. Pro většinu z těchto organizací jsou základními oblastmi zájmu: Společnost, Lidská práva, Pracovně právní vztahy a důstojné pracovní podmínky, Odpovědnost za produkty. Konkrétní ukazatele sociální výkonnosti jsou [11]: SOC1 - Komunita, SOC2 - Příspěvky obcím, SOC3 - Diskriminace, SOC4 - Rovné příležitosti, SOC5 - Míra fluktuace zaměstnanců, SOC6 - Výdaje na vzdělání a trénink, SOC7 - Nemoci z povolání, SOC8 - Počet úmrtí, SOC9 - Marketingová komunikace, SOC10 - Zdraví a bezpečnost zákazníků. 1.3.3
Corporate governance výkonnost
Asi nejjednodušší definice corporate governance (dále CG) je používaná ve Velké Británii v dokumentu Cadbury Report z roku 1992, a to následovně: „CG je systém prostřednictvím, kterého jsou obchodní společnosti řízeny a kontrolovány.“ Existuje velké
8
množství definic CG, dalo by se říci, že každý stát má svoji vlastní definici. Všechny se ale shodují v tom, že CG zahrnuje systém pravidel pro spravování a kontrolu podniku. Podniky se snaží nalézat lepší a lepší způsoby CG, aby zvýšily svou výkonnost, udržitelnost a konkurenceschopnost na trhu [11]. CG se orientuje na následující oblasti řízení [11]:
Monitoring,
Efektivnost zainteresovaných stran,
Struktura správní rady,
Dodržování (pokuty, soudní spory, rizika).
Konkrétní ukazatel CG výkonnosti jsou [11]:
1.3.4
CG1 - Informace o společnosti,
CG2 - Odpovědnost,
CG3 - Etické chování,
CG4 - Odměňování,
CG5 - Složení členů managementu,
CG6 - Rovné příležitosti,
CG7 - Dodržování zákonných norem.
Ekonomická výkonnost
Finanční prostředky si můžeme představit jako vlastnictví aktiv a majetku, a výkonnost je schopnost rozšiřovat toto vlastnictví. Kvalita a úspěšnost podniku se proto v poslední době hodnotí podle jeho výkonnosti, konkrétně jeho schopnosti zvyšovat svoji hodnotu a tím zvyšovat i výnosy z investic věřitelům. Jedním z hlavních cílů podniku je maximalizovat a zvýšit tržní hodnotu podniku v delším časovém horizontu. Hlubší analýza může podniku pomoci zorientovat se ve všech finančních oblastech, najít nedostatky a následně hledat řešení pro zvýšení výkonnosti. Finanční ukazatele můžeme rozdělit do dvou kategorií, a to na klasické a moderní ukazatele. Klasické ukazatele se opírají především o maximalizaci zisku vyčtenou ze statistik účetních výkazů. Patří zde např. rentabilita aktiv, výnos z akcií apod.
9
Oproti tomu moderní ukazatele postavily své základy na komplexním pohledu na činnosti podniku i lidí účastnících se podnikových procesů. Do této kategorie můžeme zařadit např. ekonomickou přidanou hodnotu (EVA), tržní přidanou hodnotu, míru sledující ekonomickou výkonnost (cash flow), ohodnocení podniku (CFROI), přidanou hodnotu pro akcionáře (SVA) apod. [11]. V souvislosti s reportingovým rámcem GRI můžeme rozdělit ekonomické ukazatele do následujících 4 skupin [8]:
Ekonomické výsledky,
Nepřímé ekonomické vlivy a dopady,
Postupy při zadávání veřejných zakázek,
Pozice na trhu.
Konkrétní ukazatel ekonomické výkonnosti jsou [11]:
EKO1 - Ukazatelé výkonnosti,
EKO2 - Zisk,
EKO3 - Velikost obratu,
EKO4 - Odměňování,
1.4
EKO5 - Přidaná hodnota,
EKO6 - Likvidita,
EKO7 - Zadluženost,
EKO8 - Obrat aktiv,
EKO9 - Provozní cash flow,
EKO10 - Volné cash flow,
EKO11 - Přístupy k získávání zaměstnanců z daného regionu,
EKO12 - Finanční příspěvky od státu,
EKO13 - Politika a přístupy k dodavatelům z daného regionu.
Výběr ekonomických ukazatelů výkonnosti
Výběr ukazatelů výkonnosti není jednoduchý. Možnosti, které můžeme vybrat je mnoho, ale jenom správná kombinace těch nejúčinnějších nám dá nejlepší představu o výkonnosti podniku.
10
Dle výzkumu týmu autorů Richard a Devinney, kteří prošli 722 článků publikovaných v letech 2005 až 2007 v předních světových periodikách, byly v 53 % článků k měření výkonnosti použity klasické ukazatele založené na účetních datech. Mezi konkrétními ukazateli autoři identifikovali peněžní toky, výsledek hospodaření před zdaněním a úroky (EBIT), provozní výsledek po zdanění (NOPAT), tržby (ROS), růst tržeb, rentabilitu typu rentability aktiv (ROA), vlastní kapitál (ROE), investovaný kapitál (ROIC) a čistá aktiva (RONA) [22]. Na české scéně se otázkou finanční analýzy zabývalo Ministerstvo průmyslu a obchodu, které svou analýzu opírá o výpočet ekonomické přidané hodnoty (dále EVA). Výpočet EVA je založen na bázi vlastního kapitálu [28]. Právě výpočet ukazatele EVA využijeme pro měření výkonnosti v informačním systému. Postup výpočtu je popsán na konci další kapitoly.
11
12
2 Současný stav informačního systému 2.1
Projekt Měření podnikové udržitelnosti ve vybraných odvětvích
Má bakalářská práce je součástí projektu Měření podnikové udržitelnosti ve vybraných odvětvích s registračním číslem GA ČR GA14/23079S [7]. Tento projekt navazuje na projekt Konstrukce metod pro více faktorové měření komplexní podnikové výkonnosti ve vybraném odvětví s registračním číslem CEP ID GAP403/11/2085. Hlavními řešiteli projektu jsou doc. Ing. Alena Kocmanová, Ph.D. působící na Fakultě podnikatelské Vysokého učení technického v Brně a vedoucí mé bakalářské práce prof. RNDr. Jiří Hřebíček, CSc. působící na Provozně ekonomické fakultě Mendelovy univerzity a na Přírodovědné fakultě Masarykovy univerzity. Hlavním oborem projektu je řízení, správa a administrativa. Projekt byl spuštěn 1. 1. 2014 a bude ukončen 31. 12. 2016. 2.1.1
Cíl projektu
Udržitelnost podniku je multidimenzionální koncept, který má tři důležité rozměry: ekonomický růst; sociální odpovědnost a ochranu životního prostředí. Řešení projektu vychází z hypotézy, že podniková výkonnost a udržitelnost (dále PVU) je ovlivňována integrujícím působením ESG a ekonomických faktorů. Současné modely PVU (např. EVA, SVA atd.) i metody (např. DEA) mají nedostatky v omezeném počtu faktorů, nerespektují složité vzájemné závislosti mezi faktory a jejich vypovídací schopnost neodpovídá vždy realitě. Cílem projektu je ve vybraných odvětvích národního hospodářství v ČR a EU navrhnout nový model měření PVU a integrovaného reportingu. Výsledkem projektu bude jak teoreticko-metodologické zpracování metod pro měření PVU, tak i nový model včetně integrovaného reportingu, který bude verifikován a implementován s využitím pokročilých matematických, ekonometrických, statistických metod a IT. Vytvořený software bude zpřístupněn veřejnosti i podnikům ve zkoumaných odvětvích na webu [7].
2.2
Aktuální stav informačního systému
Vývojem informačního systému (dále IS) pro projekt se zabývá Ing. Oldřich Faldík ve spolupráci s Václavem Bukovským, který má analýzu a návrh IS jako zadání své bakalářské práce. IS je k nalezení na stránce: http://gacr.pefka.mendelu.cz/reporting/. Infor-
13
mační systém je zatím ve fázi vývoje, proto není plně funkční. Bude v něm možné vygenerovat dobrovolný reporting a zjistit tak výkonnost podniku.
Obrázek č. 1 – Úvodní stránka IS Úvodní stránku reportingu můžeme vidět na obrázku č. 1. Kromě reportingu najde uživatel na webové stránce také informace o projektu a projektový záměr. Uživatel má možnost se do podnikového reportingu přihlásit nebo zaregistrovat. Zkušební registrační údaje jsou:
e-mail:
[email protected],
heslo: test.
Každý uživatel, který se přihlásí, bude moci spravovat své organizace a dotazníky. Bude moci spravovat více organizací a pro každou organizaci zjistit výkonnost podle zadaného roku. V současné době je možné zjistit výkonnost podniku pouze po kliknutí na odkaz „Přidat organizaci“, čímž se na obrazovce objeví webový formulář s požadavkem na vyplnění základních údajů a údajů nutných k výpočtu EVA. Do budoucna by se měly dotazníky vyplňovat pomocí odkazu „Vyplnění dotazníku“, nebude tedy nutné pokaždé přidávat novou organizaci. Základní údaje obsahují následující informace (obrázek č. 2): název podniku, IČO, sídlo podniku, CZ-NACE (klasifikace ekonomických činností), OKEČ (odvětvové klasifikace ekonomických činností), právní forma podnikání (možnost výběru z akciové společnosti, společnosti s ručením omezeným, družstva a státního podniku) a rok.
14
Obrázek č. 2 – Základní informace Dále musí uživatel vyplnit údaje nutné k výpočtu EVA (obrázek č. 3), které si v současné době musí sám vyhledat v účetní závěrce. Cílem mé bakalářské práce je usnadnit uživatelům tento úkon, a to přidáním tlačítka „Vyplnit formulář pomocí justice.cz“. Stisknutím tohoto tlačítka se spustí modul, který vyhledá data v účetní závěrce a uloží je do prázdných polí údajů nutných k výpočtu EVA. Uživatel bude tedy mít na výběr, jestli informace vyhledá sám nebo využije můj modul. Pro zjištění hodnoty indikátoru EVA je potřeba vyplnit celý formulář. Kliknutím na tlačítko „Odeslat“ dojde k výpočtu indikátoru EVA, jehož hodnota se následně uloží. Uživatel si tyto údaje bude moci kdykoliv prohlédnout nebo je upravit.
15
Obrázek č. 3 – Část dotazníku nutná k získání údajů pro výpočet EVA
16
3 Požadavky na modul 3.1
Funkční požadavky na modul
Náplní bakalářské práce je vytvoření modulu pro podporu webového formuláře informačního systému pro pivovary. Funkční požadavky na modul můžeme rozdělit do čtyř částí, a to: 1. Vyhledání účetní závěrky pro daný podnik dle zadaného roku v obchodním rejstříku, 2. Stažení těchto dat ve formátu PDF, 3. Převedení dat z formátu PDF do digitálního formátu pomocí metody optického rozpoznávání textu (dále OCR), 4. Vytvoření syntaktického analyzátoru pro nalezení hodnot indikátorů pro výpočet EVA.
3.2
Zdroje vstupních dat
V České republice je každé podnikající fyzické osobě, právnické osobě a organizační složce státu uděleno unikátní osmimístné identifikační číslo (dále IČ). IČ je identifikátor, podle kterého mohou být podniky vyhledány ve všech rejstřících a registrech, např. v Českém statistickém úřadu nebo v Administrativním registru ekonomických subjektů. 3.2.1
Administrativní registr ekonomických subjektů (ARES)
Obrázek č. 4 – Vyhledávání v ARES
17
Administrativní registr ekonomických subjektů (ARES) je informační systém, který zpřístupňuje veřejné údaje o ekonomických subjektech z informačních systémů (zdrojů) veřejné správy. Obsahuje údaje ze základních (majoritních) zdrojů, které jsou formou odkazů doplněny údaji z dalších zdrojů. Při zpracování se používají kontrolní zdroje [1]. Majoritní zdroje: Obchodní rejstřík, vedený rejstříkovými soudy, Živnostenský rejstřík, vedený Ministerstvem průmyslu a obchodu ČR, Registr ekonomických subjektů, vedený Českým statistickým úřadem, Registr církví a náboženských společností, vedený Ministerstvem kultury ČR, Registr zdravotnických zařízení, vedený Ústavem zdravotnických informací a statistiky ČR, Seznam občanských sdružení a spolků, vedený Ministerstvem vnitra ČR, Evidence zemědělského podnikatele, vedená Ministerstvem zemědělství ČR, Seznam politických stran a hnutí, vedený Ministerstvem vnitra ČR, Rejstřík škol a školských zařízení, vedený Ministerstvem školství a tělovýchovy ČR. Další zdroje: Registr plátců daně z přidané hodnoty, vedený Finanční správou ČR, Registr plátců spotřební daně, vedený Celní správou ČR, Účelový registr organizací systému ARIS, vedený Ministerstvem financí ČR, Centrální evidence dotací z rozpočtu, která je vedena Ministerstvem financí ČR, Centrální evidence úpadců, která je vedena Ministerstvem spravedlnosti ČR, Insolvenční rejstřík, který je veden Ministerstvem spravedlnosti ČR.
18
Kontrolní zdroj: Územně identifikační registr adres, vedený Ministerstvem práce a sociálních věcí ČR. Data, která využijeme ve webovém formuláři infomačního systému, nalezneme v Obchodním rejstříku. 3.2.2
Obchodní rejstřík
Obrázek č. 5 – Vyhledávání v obchodním rejstříku Obchodní rejstřík je veřejný seznam, do kterého se zapisují zákonem stanovené údaje o podnikatelích. Obchodní rejstřík je veden v elektronické podobě. Součástí obchodního rejstříku je sbírka listin [31]. Rejstříkový soud zveřejní zápis do obchodního rejstříku, jeho změnu či výmaz, jakož i uložení listiny do sbírky listin bez zbytečného odkladu po zápisu, ledaže právní předpis ukládá tuto povinnost někomu jinému. Zveřejňované údaje rejstříkový soud nejpozději do jednoho týdne ode dne zápisu oznámí také příslušnému daňovému orgánu, orgánu státní statistiky a orgánu, který vydal průkaz živnostenského nebo jiného podnikatelského oprávnění [31]. Obchodní rejstřík je veřejně přístupný. Každý do něj může nahlížet a pořizovat si z něj kopie či výpisy [31].
19
Každý podnik má v obchodním rejstříku zveřejněny identifikační údaje (název subjektu, spisová značka, sídlo, IČ, den zápisu atd.). Je možné získat výpis z obchodního rejstříku, který kromě základních informací obsahuje navíc předmět podnikání, právní formu atd. Rozlišují se dva typy výpisu: úplný výpis a výpis platných k určitému datu. Jak již bylo řečeno, rejstřík také obsahuje sbírku listin, ve které jsou uloženy důležité dokumenty týkající se jednotlivých společností (např. notářský zápis, zakladatelská listina, účetní závěrka atd.). 3.2.3
Struktura a obsah účetní závěrky
Účetní závěrka je souhrn přehledně uspořádaných informací, které vytvářejí základ pro orientaci uživatelů o finanční pozici subjektu, o objemu majetku, zdrojů, z nichž je financován, přírůstcích a úbytcích tohoto majetku včetně pohybu zdrojů jeho krytí, důvodech přírůstku a úbytků majetku a o toku peněžních prostředků. Účetní závěrka podává uživateli také většinou první informaci o způsobu řízení podniku, zda manažeři více či méně riskuji při svém rozhodování, do jaké míry akceptují zásady opatrnosti, uvažují o budoucnosti podniku nebo je zajímá pouze okamžitý efekt, současný zisk a jeho využití [2]. Základnou, která umožní sestavení účetní závěrky, je účetnictví. Jeho předmětem je zobrazení stavu a pohybu majetku, závazků a vlastního kapitálu ve všech jeho souvislostech, tzn. včetně vyjádření nákladů, výnosů a výsledku hospodaření [2]. Účetní závěrka je nedílný celek a tvoří ji [32]: rozvaha (bilance), výkaz zisku a ztráty, příloha, která vysvětluje a doplňuje informace obsažené v částech uvedených výše; příloha obsahuje též informace o nedoplatcích evidovaných v evidenci daní u orgánů Finanční správy České republiky a orgánů Celní správy České. Účetní závěrka může zahrnovat i přehled o peněžních tocích nebo přehled o změnách vlastního kapitálu.
20
Účetní závěrka musí obsahovat následující údaje [32]: jméno a příjmení, obchodní firmu nebo název účetní jednotky, dále sídlo, nebo bydliště a místo podnikání, identifikační číslo, pokud je má účetní jednotka přiděleno, právní formu účetní jednotky, předmět podnikání nebo jiné činnosti, případně účel, pro který byla zřízena, rozvahový den nebo jiný okamžik, k němuž se účetní závěrka sestavuje, okamžik sestavení účetní závěrky. 3.2.3.1 Rozvaha (bilance) Rozvaha je jeden z nejdůležitějších účetních výkazů, který má předepsanou formu, a musí jej sestavovat všechny subjekty, které vedou účetnictví, tzn. i rozpočtové a příspěvkové organizace, banky, pojišťovny, společenské organizace a církve. Rozvahu můžeme definovat jako přehledné sestavení majetku podniku – aktiv a zdrojů jeho krytí – pasiv k určitému dni. Tento den nazýváme rozvahový den [14]. Aktiva i pasiva jsou v rozvaze uvedena v peněžním vyjádření. Výše aktiv nebo pasiv v peněžním vyjádření se nazývá rozvahový stav. Každé aktivum nebo pasivum uvedené v rozvaze slovním označením a peněžní částkou označujeme jako rozvahovou položku [14]. 3.2.3.2 Výkaz zisku a ztráty V účetním výkazu označovaném obecně jako výsledovka či výkaz zisku a ztráty se porovnávají výnosy a tržby s náklady, a to v různém členění. Tím vznikají informace o ziskovosti podniku. Tato data jsou porovnatelná s obdobím minulým, jelikož výkaz zisku a ztráty obsahuje data jak z období sledovaného, tak z minulého. Varianty výsledovky používané v České republice vycházejí ze čtvrté směrnice rady EU, o ročních účetních závěrkách některých forem společností [4]. Celkově je výkaz členěn na tři části, v nichž se porovnávají výnosy a náklady, a to z činnosti provozní, finanční a mimořádné [2]. Účetní uzávěrka je v obchodním rejstříku uložená ve formátu PDF.
21
3.3
Formát PDF
Formát PDF (z anglického Portable Document Format – Přenosný formát dokumentů) je souborový formát, který společnost Adobe Systems vyvinula před 20 lety. Nyní je otevřeným standardem pro elektronickou výměnu dokumentů. Spravuje ho Mezinárodní organizace pro normalizaci (ISO). Dokumenty, formuláře nebo webové stránky převedené do formátu PDF vypadají úplně stejně jako vytištěné. Na rozdíl od tištěných dokumentů mohou soubory PDF obsahovat odkazy, tlačítka, formulářová políčka, video nebo zvuk [18]. Soubory uložené ve formátu PDF nelze jednoduše převést do digitální podoby, protože mohou obsahovat naskenované dokumenty nebo obrázky, proto je potřeba pro digitalizaci textu použít metodu optického rozpoznávání znaků.
3.4
Optické rozpoznání znaků
Optické rozpoznávání znaků (z anglického Optical Character Recognition) je metoda, která pomocí skeneru umožňuje digitalizaci tištěných textů, s nimiž pak lze pracovat jako s normálním počítačovým textem. Počítačový program převádí obraz buď automaticky, nebo se musí naučit rozpoznávat znaky. Převedený text je třeba v závislosti na kvalitě předlohy podrobit důkladné korektuře, protože jinak OCR program nedokáže rozeznat všechna písmena správně. Čím kvalitnější je vstup, tím výkonnější bude OCR systém [17]. Vstupem pro OCR mohou být všechny tištěné výstupy z laserových, inkoustových, termální nebo jehličkových tiskáren, ale také soubory ve formátu PDF, naskenované soubory nebo dokumenty vyfocené digitálním fotoaparátem. Výstup se liší v závislosti na vybraném softwaru. Nejčastějším výstupem je prostý text (ve formátech TXT, DOC, DOCX, RTF, HTML atd.). Optické rozpoznávání znaků se stává nejúspěšnější aplikací a technologií na poli rozpoznávání a umělé inteligence. Existuje velké množství softwarů umožňujících digitalizaci textu. Můžeme nalézt jak placené, tak neplacené verze. Mezi placené softwary patří ABBYY Finereader OCR, Readiris, PDF-XChange Viewer Pro a mnoho další. Jejich cena se pohybuje od 70 € do 1000 € podle přesnosti, rychlosti a funkčnosti. Ne-
22
placené softwary jsou buď třicetidenní zkušební verze placených softwarů, nebo OCR s omezením např. maximální počet stran, přesnost, omezení vstupních formátů atd. 3.4.1
Historie OCR
Snaha vytvořit z tištěných dokumentů digitální, v počítači editovatelné texty bez nutnosti manuálního přepisování se objevila na přelomu 19. a 20. století a gradovala spolu s rozvojem elektronických počítačů. Už v červnu roku 1933 si ve Spojených státech podal Paul W. Handel z General Electric žádost o patent přístroje s názvem Statický stroj (Statistical machine). Z dnešního pohledu primitivní, avšak převratné zařízení umělo rozeznat tištěná čísla [13]. Důležitý zlom přišel o 30 let později, kdy se v USA v roce 1966 standardizovalo tzv. písmo OCR-A, první písmo umožňující strojové čtení. Tvary tohoto písma byly zjednodušeny, aby strojové čtení bylo co nejpřesnější, ale písmo nebylo dobře čitelné okem. Tento standard našel uplatnění především ve velkých bankách. Krátce na to se v Evropě objevil standard OCR-B. Bylo to v roce 1968 a jeho autorem byl Adrian Frutiger [16]. 3.4.2
Funkčnost OCR
Celý postup optického rozpoznávání písma lze rozdělit do několika kroků. Nejprve se pomocí skeneru sejme předloha. Dále se pak obraz písma digitalizuje, tj. převádí se do matice černých a bílých bodů (informace o stupni šedi se ztrácí). Klasický formát A4, při rozlišení skeneru 300 bodů na palec (tj. 118 bodů na cm), je tak převeden na 8 950 500 bodů, což představuje 1,125 MB paměti. Tato matice je přenesena do počítače jako obrázkový soubor, tedy bodový rastr. OCR program rozezná v tomto okamžiku černé a bílé body, ale nedokáže rozpoznat, zda se jedná o text [16]. Dále z pixelů extrahuje OCR textové informace. Prvně rozdělí stránku s textem do samostatných řádků, analyzuje zkosení řádků, jejich rozteč, iniciály a odděluje řádky, které se dotýkají. Poté přichází na řadu segmentace slov a znaků, která izoluje jedno slovo od druhého a odděluje jednotlivá písmena ve slově. Pokud mají znaky stejnou šířku (např. v DOSu), je segmentace znaků jednoduchá. Problémy nastávají, pokud šířka písmene závisí na jeho tvaru (proporcionální písmo), jestliže dochází k převisu určité
23
části písmene a k dotýkání znaků (ligatury), nebo když se používají fonty jehličkových tiskáren (znaky vytvořené ze shluků izolovaných teček) [10]. V posledním kroku je ke každému samostatnému tvaru přiřazen podle charakteristiky daného znaku správný symbol. OCR analyzuje segmentované znaky. Extrahuje tvary (čáry, kličky, mezery, uzly, úhly, apod.) a porovnává je vůči předdefinovanému nebo naučenému zdroji znalostí. Tento přístup se nazývá topologická analýza [10].
3.5
Syntaktický analyzátor (parser)
Syntaktickou analýzou (slangově podle angličtiny též parsování nebo parsing) se v informatice a v lingvistice nazývá proces analýzy posloupnosti formálních prvků s cílem určit jejich gramatickou strukturu vůči předem dané formální gramatice. Program, který vykonává tuto úlohu, se nazývá syntaktický analyzátor (slangově parser). Syntaktické analýze zpravidla předchází lexikální analýza, při níž se vstupní text rozděluje na posloupnost lexikálních symbolů neboli tokenů – elementárních nositelů významu v rámci daného formálního jazyka. Při analýze textu v přirozeném jazyce jsou symboly obvykle slovní tvary a interpunkce, v programovacím jazyce identifikátory, literály (čísla, řetězce), klíčová slova, operátory, oddělovače apod. Pro parser to jsou dále nedělitelné stavební jednotky, které používá při interpretaci vstupních dat [27].
3.6
Položky účetní závěrky pro výpočet EVA
Bylo vybráno deset položek, které jsou zapotřebí pro výpočet EVA. Jsou uvedeny v obou hlavních dokumentech účetní závěrky, a to v rozvaze a výkazu zisku a ztráty. Z rozvahy jsou to následující údaje v běžném účetním období: Aktiva celkem (netto), dále pouze Aktiva, Oběžná aktiva (netto), Vlastní kapitál, Krátkodobé závazky, Bankovní úvěry a výpomoci, Bankovní úvěry dlouhodobé, Bankovní úvěry krátkodobé.
24
Z výkazu zisku a ztráty to jsou následující údaje v sledovaném účetním období: Nákladové úroky, Daň z příjmů za běžnou činnost, Výsledek hospodaření za běžnou činnost, dále pouze Výsledek hospodaření. Dále jsou zapotřebí dva ukazatele, a to běžná likvidita průmyslu, která je defaultně nastavená na hodnotu 1,6, a výnos bezrizikového aktiva (rf), která je defaultně nastavená na hodnotu 0,0371.
3.7
Matematický postup výpočtu EVA pro informační systém
K výpočtu ukazatele EVA je zapotřebí spočítat následující ukazatele: 1. Náklady na cizí kapitál Pro výpočet nákladů na cizí kapitál je potřeba zjistit cizí kapitál.
Pokud je cizí kapitál roven 0, budou náklady na cizí kapitál také rovny 0, jinak se budou rovnat:
2. Podíl úročeného kapitálu Pro podíl úročeného kapitálu je potřeba úročený kapitál.
Vynásobení nákladů na cizí kapitál a podílu úročeného kapitálu nazveme náklady krát podíl.
25
3. Rentabilita aktiv Pro výpočet rentability aktiv je potřeba výpočet zisku před úhradou úroků a daně z příjmů EBIT (Earnings before Interest and Taxes).
4. Velikost podniku (rLA) Dále je potřeba zjistit hodnotu funkce ukazatelů charakterizující velikost podniku (rLA). Pokud je určený kapitál větší než 3 mld., pak je hodnota rLA rovna 0, pokud je určený kapitál menší než 100 mil, pak je hodnota rLA rovna 5. Jinak platí, že:
5. Produkční síla (rPodnik) Výpočet funkce charakterizující tvorbu produkční síly (rPodnik) je při rentabilitě aktiv menší než 0 roven 10, pro rentabilitu aktiv větší než náklady krát podíl je roven 0 a jinak:
6. Vztah mezi aktivy a pasivy (rFinStav) Pro výpočet rFinStav je potřeba znát běžnou likviditu podniku.
26
Výpočet funkce ukazatelů charakterizujících vztahy mezi aktivy a pasivy (rFinStav) je roven 0, pokud je běžná likvidita podniku větší než běžná likvidita průmyslu, pokud je běžná likvidita podniku menší než 1, pak je hodnota rFinStav rovna 10 a jinak:
7. WACC (Weighted Average Cost of Capital) Výpočet vážených průměrných nákladů na kapitál WACC:
8. Náklady vlastního kapitálu (re) Výpočet nákladů vlastního kapitálu (re) je roven:
uk … úročený kapitál, T … daň (tax), která je rovna 19 %. 9. ROE (Return On Equity) Výpočet rentability vlastního kapitálu ROE je:
10. EVA (Economic Value Added) Výpočet ekonomické přidané hodnoty EVA:
27
28
4 Návrh modulu Každý modul, program nebo informační systém by měl mít návrh, jak bude vypadat a fungovat.
4.1
Schéma logické architektury
Logická architektura dává programátorovi první postřehy, jak bude cílový software vypadat, zejména po stránce filosofie jeho funkcionality. Vychází z požadavků problémové domény a je nezávislá na informačních technologiích. Jelikož není možné neuvažovat o architektuře cílového softwaru, je logická architektura prostředkem přechodu od požadavků k návrhovému modelu architektury a potom ke konstrukci fyzické architektury cílového software [25].
Obrázek č. 6 – Schéma logické architektury Na schématu logické architektury k modulu (obrázek č. 6) je vidět, že pokud se uživatel přihlásí a bude chtít vyplnit dotazník pro vygenerování reportingu a spočítání indikátoru výkonnosti podniku (EVA), může využít modul, který za pomoci justice.cz vyplní potřebné údaje místo něj.
29
4.2
Unified Modeling Language (UML)
Pro vytvoření konkrétnějšího návrhu jsem si vybrala jazyk UML (Unified Modeling Language). UML je soubor grafických notací, který se používá pří vývoji softwaru. V oblasti analýzy a návrhu se stal standardem. Podporuje objektově orientovaný přístup k analýze, návrhu a popisu programových systémů. Existuje 14 různých diagramů UML, které se liší tím, jestli se zaměřují na strukturu nebo na chování, interakci mezi objekty nebo na třídy. Pro pochopení funkčnosti a napojení modulu k informačnímu systému jsem vytvořila dva diagramy, a to diagram případu užití a analytický diagram tříd.
4.3
Diagram případu užití
Diagram případů užití (Use Case Diagram) se používá k popisu chování systému z hlediska uživatele a zachycuje, které typy uživatelů se systémem pracují a jaké činnosti v rámci systému vykonávají. Poskytuje nám odpovědi na otázky, jaké hlavní úlohy, funkce nebo služby mají být prováděny systémem pro uživatele. Umožňuje znázornit funkční požadavky na systém tím, že popisuje interakci mezi ním a uživateli. Diagram případu užití umožňuje zobrazit hranice systému a jeho hlavní funkce [23]. Diagram případu užití na obrázku č. 7, ukazuje, jak bude systém pracovat, až bude funkční. V systému existují tři základní typy uživatelů: Nepřihlášený uživatel – z řad veřejnosti a dalších zájmových skupin, Přihlášený uživatel – zástupce podniku, před každým použitím systému se musí přihlásit pomocí uživatelského jména a hesla, Administrátor – vývojář informačního systému. Každý typ uživatele má přiřazeny události, které může provádět. Nepřihlášený uživatel může provádět pouze: Přihlášení, Registraci.
30
Přihlášený uživatel může: Spravovat dotazníky (zobrazit jejich seznam a detail, upravit nebo smazat je, vyplnit nový dotazník (sám nebo s pomocí justice.cz)), Spravovat organizace (zobrazit jejich seznam a detail, přidat organizaci, smazat ji a ji upravit), Administrátor může: Spravovat systém (smazat uživatele, organizaci nebo report, zobrazit uživatele, organizaci nebo report).
Obrázek č. 7 – Diagram případu užití
4.4
Diagram tříd
Diagram tříd (Class Diagram) představuje „statický pohled na modelovaný systém“ a jeho úkolem je znázornit typy objektů v systému a jejich vztahy. Při tvorbě diagramu
31
tříd je nutné vzít v úvahu jeho účel a rozlišit, zda potřebujeme vyjádřit požadavky na modelovaný software nebo získat podrobný popis návrhu atd. Z tohoto důvodu se rozeznávají tři úrovně modelu tříd – konceptuální, návrhová a implementační [23]. Pro nás je důležitá pouze první úroveň. Konceptuální (doménový nebo analytický) model je vytvářen za účelem analýzy požadavků na software. U jednotlivých tříd se uvádí obvykle jen názvy klíčových atributů a některých klíčových metod.
Obrázek č. 8 – Analytický diagram tříd Analytický diagram tříd (obrázek č. 8) ukazuje pouze dvě třídy z celého informačního systému, které jsou pro importování modulu podstatné. Třídy mají názvy podle návrhového vzoru Model – View – Presenter (detailní vysvětlení tohoto modelu je v následující kapitole). Červeně jsou označeny metody a atributy, které byly přidány nebo upraveny, aby byl modul funkční.
32
5 Implementace modulu 5.1
Programovací jazyk – PHP
Volba programovacího jazyka je vždy klíčovou částí celé implementace. Na každý problém je nutné nahlížet z různých úhlů pohledu, abychom našli všechny klady a zápory výběru programovacího jazyku. K implementaci modulu jsem si vybrala skriptovací programovací jazyk PHP, který velice dobře spolupracuje s webovým serverem a má také velké množství řetězcových funkcí pro syntaktickou analýzu, což je velká výhoda vzhledem k zadání. Výběr jazyka PHP nebyl náročný, protože to byla jediný možnost, kterou jsem měla, jelikož je informační systém, který bude obsahovat můj modul, realizovaný pomocí Nette Framework [9], který je napsaný v PHP 5. PHP je imperativní, procedurální a objektově orientovaný jazyk. Je určený především pro programování dynamických internetových stránek a webových aplikací. PHP lze použít i k tvorbě konzolových a desktopových aplikací [21]. Při použití PHP pro dynamické stránky jsou skripty prováděny na straně serveru, kde jsou stránky uloženy. Výhodou je, že na všech prohlížečích je výsledek, který je přenášen k uživateli, stejný. Nevýhodou je menší interaktivita, ke zpracování dojde vždy po odeslání požadavku na server [21]. PHP podporuje mnoho knihoven pro různé účely - např. zpracování textu, grafiky, práci se soubory, přístup k většině databázových systémů, podporu celé řady internetových protokolů [21]. PHP je nejrozšířenějším skriptovacím jazykem pro web, v současnosti (březen 2015) s podílem 82 % ze všech programovacích jazyků, které se používají pro tvorbu webových stránek [29]. Oblíbeným se stal především díky jednoduchosti použití a bohaté zásobě funkcí.
5.2
Nette Framework
Pro vybudování aplikace je v informačním systému využíván Nette Framework. Framework je softwarová struktura, která slouží jako podpora při programování, vývoji a organizaci jiných softwarových projektů. Může obsahovat podpůrné programy,
33
knihovny API, podporu pro návrhové vzory nebo doporučené postupy při vývoji. Mezi ty známější patří například Ruby on Rails, jQuery, .NET, Zend Framework nebo již zmiňovaný Nette Framework [6]. Nette Framework je napsaný v PHP 5 s plným využitím objektů (OOP). Ačkoliv vznikl už v roce 2004, teprve vloni byl uvolněn jako open source tj. software s veřejně dostupným kódem. Nette využívá návrhový model MVP [9]. 5.2.1
Model – View – Presenter (MVP)
Model – View – Presenter (MPV) je spíše než návrhový vzor softwarová architektura, která rozděluje aplikaci do tří vrstev: na datový model, uživatelské rozhraní a řídicí logiku, přičemž modifikace některé z nich má pouze minimální vliv na ostatní. Každá část kódu webových aplikací skutečně spadá do jedné z těchto kategorií. MVP však říká, že tyto části je nutné oddělit do samostatných komponent nebo modulů. Vývojáři si ověřili, že tato separace je nezbytná pro udržení přehledného kódu [15].
Obrázek č. 9 - Model – View – Presenter Zdroj: http://magenic.com/BlogArchive/AnMVPPatternforAndroid MVP dále určuje vztah jednotlivých komponent znázorněný na obrázku č. 9: Model zajišťuje přístup k datům a manipulaci s nimi, View převádí data reprezentovaná modelem do podoby vhodné k prezentaci uživateli, Presenter reaguje na události pocházející od uživatele a zajišťuje změny v modelu nebo v pohledu. Tento princip poprvé popsal Trygve Reenskaug v roce 1979. Dnes je velmi populární právě u webových aplikací [15].
34
5.3
Struktura aplikace
Adresová strukturu aplikace odráží doporučené adresářové členěni Nette Framework. adresář webové aplikace
app config
konfigurační soubory
model
všeobecně použitelné modelové soubory
AclModel
model pro přístup
Authenticator
model pro autentizaci
BaseException
model pro výjimky
BaseModel
základní model
InfoModel
model pro nápovědu
ReportingModel
model pro vytváření reportingů
SignInForm
formulář pro přihlášení
SurveyGrid
soubor pro vytváření reportu
SurveyModel
model pro práci s databází
UserModel
model pro správu uživatelů
presenters
třídy presenterů
BasePresenters
základní presenter
BaseCsPresenter
základní presenter v češtině
BaseEnPresenter
základní presenter v angličtině
ErrorPresenter
presenter pro chybové hlášky
InfoPresenter
presenter pro nápovědu
ReportingPresenter presenter pro reporting SignPresenter
presenter pro přihlášení uživatelů
SurveyPresenter
presenter pro reporty
router
konfigurace URL adres
35
templates
šablony aplikace
Basic
základní šablony
BasicCs
základní informace v češtině
BasicEn
základní informace v angličtině
Error
šablony pro chybové hlášky
Info
šablony pro nápovědu
Reporting
šablony pro reporting
default
šablona pro úvodní stránku
detail
šablona pro detail společnosti
new
šablona pro vyplnění formuláře pro reporting
show
šablona pro seznam organizací
update
šablona pro změnu údajů společnosti
Sign
šablony pro přihlášení uživatelů
Survey
šablony pro práci s databází
bin
adresář s utilitami
libs
zdrojové kódy třetích stran (knihovny)
log
adresář pro chybové logy
temp
adresář pro dočasné soubory
tests
adresář pro testy
vendor
knihovna pro aplikaci (např. Nette)
www
místní kořenový adresář webu (přístupný z internetu)
5.4
Integrace modulu do IS
Do informačního systému byly doplněny části, které propojí můj modul s IS. Bylo zapotřebí doprogramovat všechny částí modelu MVP následovně.
36
Model se nachází v souboru app/model/ReportingModel.php, obsahuje celé implementační řešení modulu, tedy funkci getIndicator() a další její pomocné funkce, View se nachází v souboru app/templates/Reporting/new.latte, obsahuje šablonu formuláře pro reporting, do které bylo přidáno tlačítko „Vyplnit formulář pomocí justice.cz“, Presenter se nachází v souboru app/presenters/ReportingPresenter.php, byla do něj přidána funkce formForJustice(), která volá funkci getIndicator() z modelu, a následně byla upravena funkce createComponentSurveyNewForm(), která umožní uživateli naplnit data do formuláře ručně nebo s pomocí funkce formForJustice().
5.5
Implementace modulu
Samotná implementační část je uložena v souboru getIndicator.php a také je zakomponovaná v aplikaci v souboru ReportingModel.php. Oba soubory jsou doplněny dokumentací. Je rozdělena do několika samostatných funkcí, které postupně řeší všechny podproblémy zadání. Těmito funkcemi jsou: formFieldsDom(), curlDownloadPdf(), ocrPdf(), parseWord().
5.6
Funkce formFieldsDom()
Funkce formFieldDom() slouží k vyhledání dokumentu ve formátu PDF podle dvou zadaných argumentů, IČ a roku. Dle IČ podniku, program vyhledává na webové stránce https://or.justice.cz/ias/ui/rejstrik konkrétní podnik. Po vyhledání podniku, přejde na Sbírku listin daného podniku, a v ní podle zadaného roku najde k němu odpovídající odkaz na účetní závěrku. Procházení HTML (HyperText Markup Language) dokumentu lze řešit několika způsoby, já jsem se rozhodla využít rozhraní DOM.
37
5.6.1
Rozhraní DOM
Rozhraní DOM (Document Object Model) je standardní rozhraní pro práci s dokumenty XML (Extensible Markup Language) definované konsorciem W3C. Rozhraní definuje způsob, jakým se dokument XML mapuje na hierarchii objektů v paměti. Každé části dokumentu, jako je element, atribut, textový uzel apod., odpovídá v paměti jeden objekt. Pomocí metod a vlastností dostupných na každém objektu je možné zjišťovat druh uzlu, jaký ve stromu dokumentu XML zastupují jejich název, obsah, seznam objektů reprezentujících dětské uzly, objekt zastupující rodiče uzlu atd. [12].
5.7
Funkce curlDownloadPdf()
Funkce curlDownloadPdf() je volána funkcí formFieldsDom(). Jejím účelem je stažení souboru ve formátu PDF, který je uložený na adrese, kterou získá jako argument, do složky app/temp pod názvem output.pdf. Ke stažení souboru jsem použila knihovnu cURL [26], která slouží ke komunikaci mezi skriptem a serverem. 5.7.1
Knihovna cURL
cURL je počítačový softwarový projekt poskytující uživatelům knihovnu a také příkazový řádek jako nástroj pro přenos dat pomocí různých protokolů. Projekt cURL zaštiťuje dva produkty, libcurl a cURL, a byl vydán v roce 1997. cURL používá k přenosu dat příkazový řádek nebo skript. Je schopen stahovat nebo posílat soubory pomocí syntaxe URL. Používá se v automobilech, směrovačích, mobilních telefonech, hudebních přehrávačích a dalších elektronických zařízeních. Je páteří internetového přenosu pro tisíce softwarových aplikací, které používá více než miliarda uživatelů [26].
5.8
Funkce ocrPdf()
Funkce ocrPdf() slouží k převedení souboru ve formátu PDF do formátu TXT. 5.8.1
Vhodný OCR nástroj
Vyzkoušela jsem nespočetné množství webových stránek podporujících OCR např. newocr.com, onlineocr.net, free-ocr.com atd. Všechny tyto nástroje nedokázaly vyčíst data z tabulek, ve kterých jsou informace z účetní závěrky uloženy. Našla jsem pouze tři
38
nástroje, které to dokázaly, a to webová stránka pdftoword.pro, nástroj Maestro 6.0 a nástroj Tesseract. Webová stránka pdftoword.pro generovala velice kvalitní výstup, ale zapojení do modulu nebylo jednoduše programovatelné. Maestro 6.0 má nejlepší kvalitu výstup pro naskenovaná data v tabulkách. Je spustitelný v příkazovém řádku nebo v aplikaci. Vstupem pro Maestro 6.0 je soubor ve formátu PDF, výstup soubor ve formátu TXT. Má dvě verze, a to neplacenou nebo placenou za 600 € ročně. Bohužel je spustitelná pouze na platformě Windows, protože má příponu exe, a informační systém běží na volně dostupné linuxové distribuci CentOS. Proto jsem zvolila třetí variantu, a tou je nástroj Tesseract. Vytvořila jsem skript s názvem ocr.sh. Soubor ocr.sh je napsaný ve skriptovacím jazyce bash, což je jeden z unixových shellů, který interpretuje příkazový řádek. Tesseract je pravděpodobně nejpřesnější OCR, který je volně k dispozici. Nemá grafické rozhraní, je tedy nutné ho spouštět přes příkazový řádek nebo si nainstalovat program po práci s tesseractem (např. gImageReader). V kombinaci s Leptonica Image Proccessing Library může číst širokou škálu obrázkových formátů a převádět je do textové podoby ve více než 60 jazycích. Byl jeden ze tří nejlepších strojů v roce 1995 v UNLV testu přesnosti. Mezi lety 1995 a 2006 na něm nebylo moc pracováno, ale poté ho výrazně vylepšil Google. Funguje pod licencí Apache Licence 2.0 [30]. Tesseract může běžet na Linuxu, Windows i Mac OSX. Může běžet i na dalších platformách jako jsou Android nebo iOS, ačkoliv neprošli tak velkým počtem testů [30]. Bash se v modulu spouští pomocí funkce shell_exec(). 5.8.2
Funkce shell_exec()
Funkce shell_exec() je jedna z funkcí, která slouží k interakci s operačním systémem. Funkce shell_exec() se nejlépe hodí ke spouštění takových aplikací na úrovni operačního systému (vyznačených jako cmd), u nichž je záměrem, aby běžely na pozadí serveru [24]. Syntax: string exec (string $cmd])
39
5.9
Funkce parseWord()
Funkce parseWord() načítá soubor ve formátu TXT a ten prochází po řádcích, které předává funkci parser() pro hledání indikátorů, které jsou zapotřebí pro výpočet EVA. Funkce parser() využívá pro syntaktickou analýzu funkci preg_match(). Pokud je obsah řádku shodný s indikátorem, předá se řádek funkci numberIndicator(), která uloží hodnoty indikátoru do pole, které vrátí jako výsledek. 5.9.1
Funkce preg_match()
Funkce najde první shodu regulárního výrazu pattern s řetězcem subject. Funkce vrací 0, pokud nebyla nalezena shoda, 1 pokud shoda byla nalezena. Pokud je funkci předána reference na pole matches, jsou do tohoto pole uloženy části řetězce subject, které odpovídají jednotlivým podvýrazům regulárního výrazu pattern. Pod indexem 0 je v poli matches uložena shoda s celým regulárním výrazem. V dalších prvcích pole jsou uloženy řetězce odpovídající jednotlivým podvýrazům (pokud regulární výraz má podvýrazy) [20]. Argument flags může obsahovat příznak PREG_OFFSET_CAPTURE, který způsobí vrácení pozice, kde byl regulární výraz nalezen. Funkce preg_match() prohledává vstup od začátku řádku. Jestliže je potřeba začít prohledávat vstup z jiného místa, je to možné nastavit pomocí nepovinného argumentu offset [20]. Syntax: int preg_match (string $pattern, string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0]]])
5.10 Vstup a výstup modulu Vstupními argumenty modulu jsou IČ podniku a v rámci něj rok, podle kterého je možné najít konkrétní účetní závěrku. Výstupem je pole s deseti hodnotami, které odpovídají postupně všem deseti indikátorům potřebným pro výpočet EVA. Pokud je indikátor nalezen, je jeho hodnota uložena v poli jako číslo, pokud není nalezen, je do pole uložena hodnota „x“. Nenalezení indikátoru může nastat z důvodu nedostatečné kvality skenovaného PDF, špatné digitalizace dat nebo nedokonalého posouzení vzoru s indikátorem.
40
5.11 Stav IS po připojení modulu Po propojení modulu s IS se vzhled formuláře změnil jenom minimálně a to tak, že přibylo tlačítko „Vyplnit formulář pomocí justice.cz“. Po vyplnění základních údajů o podniku má uživatel nyní dvě možnosti. Buď klikne na tlačítko „Vyplnit formulář pomocí justice.cz“, nebo vyplní formulář vyhledáním dat z účetní závěrky sám.
Obrázek č. 10 – Vyplněná část dotazníku Pokud uživatel klikne na tlačítko, spustí se modul, který do předpřipravených oken formuláře uloží vyhledaná data, přičemž vyplňování pomocí modulu je plně funkční pro účetní závěrky od roku 2009. Pro roky 2003 – 2008 nejsou funkční položky Vlastní kapitál a Krátkodobé závazky, protože se změnilo číslování rozvahových položek v účetní závěrce.
41
Modul by měl podnikům pomoci s co největším počtem indikátorů. Může se však stát, že modul nedokáže vyhledat všechny údaje, pak bude IS po uživateli vyžadovat doplnění chybějících dat ručně. Tuto situaci vidíme na obrázku č. 10, který ukazuje vyplněný formulář pro podnik Rodinný pivovar Bernard, a.s. z účetní závěrky z roku 2013. Program vyhledal 9 z 10 údajů. Nevyplněný údaj, bankovní úvěry, musí doplnit uživatel ručně.
42
Závěr Cíl práce, tedy vytvoření programu pro usnadnění výpočtu ekonomické přidané hodnoty (EVA) pomocí předvyplnění webového formuláře hodnotím ze svého pohledu jako splněný. Vytvořený program splňuje požadavky, jež jsou na něj kladeny v zadání programu, a je schopen sloužit podnikům. Kromě těchto výsledků mě těší, že jsem díky této bakalářské práci získala znalosti v oblasti programování v jazyce PHP, detailně jsem prostudovala knihovnu cURL a získala jsem základy vytváření informačního systému v Nette Framework, za což vděčím Ing. Oldřichu Faldíkovi, protože jsem docházela na jeho cvičení, která vyučuje na Mendelově univerzitě. Na druhou stranu musím poznamenat, že řešení optického rozpoznávání textu není nejrychlejší, neboť přečtení dokumentu o např. čtyřiceti stránkách metodou OCR dle mého názoru trvá déle, než bude uživatel ochoten akceptovat. Tento problém by mohlo vyřešit zvýšení výpočetní síly serveru. Dalším možným směrem vývoje informačního systému by mělo být vyřešení tohoto problému a vyladění všech detailů pro tvorbu reportingů, aby byl informační systém do konce roku 2016 plně funkční.
43
44
Seznam použité literatury 1. ARES - Popis. MINISTERSTVO FINANCÍ ČR. Administrativní registr ekonomických subjektů [online]. 2013. [cit. 2015-04-13]. Dostupné z: http://wwwinfo.mfcr.cz/ ares/ares_popis.html.cz. 2. BŘEZINOVÁ, Hana, ŠTOHL, Pavel. Účetní závěrka: výklad a praktické příklady: pro studenty vysokých škol s ekonomickým zaměřením. 2. aktualiz. vyd. Znojmo: Soukromá vysoká škola ekonomická Znojmo, 2010. 77 – 113 s. ISBN 978-8087314-074. 3. ČSN EN ISO 14031. ČSN EN ISO 14031:2014 – Environmentální managment – Hodnocení environmentálního profilu – Směrnice. Praha: Úřad pro technickou normalizaci, metrologii a státní zkušebnictví. 2013. 4. ČTVRTÁ SMĚRNICE RADY (78/660/EHS), ze dne 25. července 1978 [online]. 2007.
[cit.
2015-04-24].
Dostupné
z:
http://www.kacr.cz/file/95/
01978L066020070101-cs.pdf. 5. EMAS III. Nařízení Evropského parlamentu a Rady (ES) č. 1221/2009 ze dne 25. listopadu 2009 o dobrovolné účasti organizací v systému Společenství pro environmentální řízení podniku a audit (EMAS) a o zrušení nařízení Rady (ES) č. 761/2001, rozhodnutí Komise 2001/681/ES a 2006/193/ES [online]. 2009. [cit. 2015-02-17]. Dostupné z: http://eurlex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:342: 0001:0045:CS:PDF. 6. Framework [online], aktualizace 2014-08-26 [cit. 2015-04-14]. Wikipedie. Dostupné z: http://cs.wikipedia.org/ wiki/Framework. 7. GA14-23079S – Měření podnikové udržitelosti ve vybraných odvětvích (2014 – 2016, GA0/GA). INFOSCIENCE PRAHA. Informační systém výzkumu, experimentálního vývoje a inovací: výzkum, vývoj a inovace podporované z veřejných prostředků ČR [online]. 2010 [cit. 2015-04-13]. Dostupné z: http://www.isvav.cz /projecDetail.do;jsessionid=FB200CC73864507E1FF3FDE6555F8D4D?rowId=GA 14-23079S. 8. GRI. Sustainability Reporting Guidelines [online]. 2013. [cit. 2015-02-17]. Dostupné z: https://www.globalreporting.org/resourcelibrary/GRIG4-Part1ReportingPrinciplesand-Standard-Disclosures.pdf.
45
9. GRUDL, David. Nette Framework: zvyšte svoji produktivitu. DEVEL.CZ LAB Zdrojak.cz [online]. 2009. [cit. 2015-04-13]. Dostupné z: http://www.zdrojak.cz/clanky /nette-framework-zvyste-svoji-produktivitu/. 10.
Jak používat OCR? [I]. PCWorld [online]. 2001. [cit. 2015-05-13]. Dostupné z:
http://pcworld.cz/software/jak-pouzivat-ocr-i-readiris-4-17-12781. 11.
KOCMANOVÁ, Alena, HŘEBÍČEK, Jiří. Měření podnikové výkonnosti. 1. vyd.
Brno: Littera, 2013. ISBN 978-808-5763-775. 12.
KOSEK, Jiří. DOM - načteme to do pamětí. DEVEL.CZ LAB Zdrojak.cz [onli-
ne]. 2009. [cit. 2015-04-13]. Dostupné z: http://www.zdrojak.cz/clanky/domnacteme-to-do-pameti/. 13.
MAREK, Tomáš. Přehled softwaru: rozpoznávání textu OCR a jak na to. EX-
TRA PUBLISHING, Cnews.cz [online]. 2011. [cit. 2015-04-14]. Dostupné z: http:// www.cnews.cz/prehled-softwaru-rozpoznavani-textu-ocr-jak-na. 14.
MRKOSOVÁ, Jitka. Účetnictví 2011: učebnice pro SŠ a VOŠ. Brno: Computer
Press, 2011. 20 s. Daně a účetnictví. ISBN 978-80-251-3422-1. 15.
Model-View-Presenter (MVP). NETTE FOUNDATION. Nette [online]. 2008.
[cit. 2015-04-13]. Dostupné z: http://doc.nette.org/cs/0.9/model-view-presenter. 16.
OCR, optické rozpoznávání písma. REDAKCE QUIDO MAGAZÍNU. Q-klub
AMAVET Příbram [online]. 2014. [cit. 2015-04-14]. Dostupné z: http://www .quido.cz/objevy/ocr.htm. 17.
OCR [online], aktualizace 2015-03-15 [cit. 2015-04-14], Wikipedie. Dostupné
z: http://cs.wikipedia.org/wiki/OCR. 18.
O Adobe PDF. ADOBE SYSTEMS INCORPORATED. Adobe dokument
cloud [online]. 2015. [cit. 2015-04-13]. Dostupné z: https://acrobat.adobe.com/cz/cs/ products/about-adobe-pdf.html. 19.
POPELKA, Ondřej, et al. Information System for Global Sustainability Repor-
ting. In: Environmental software systems: fostering information sharing: 10th IFIP WG 5.11 International Symposium, ISESS 2013, Neusiedl am See, Austria, October 9 – 11, 2013. Proceedings. Berlin, Heidelberg: Springer Berlin Heidelberg, 2013. s. 630 – 640. DOI: 10.1007/978-3-642-41151-9_59. Dostupné z: http://link.springer. com/10.1007/978-3-642-41151-9_59.
46
20.
Preg_match. THE PHP GROUP. PHP: Hypertext Preprocessor [online]. 2001.
[cit. 2015-04-13]. Dostupné z: http://php.net/manual/en/function.preg-match.php. 21.
PROCHÁZKA, David. PHP 6: začínáme programovat. 1. vyd. Praha: Grada,
2012. 20 – 21, 69 – 71 s. Průvodce (Grada). ISBN 978-80-247-3899-4. 22.
RICHARD, Pierre J., et al. Measuring Organizational Performance: Towards
Methodological Best Practice. Journal of Management [online]. 2009. roč. 35, č. 3, 718 – 804 s. [cit. 2015-04-15]. DOI: 10.1177/0149206308330560. Dostupné z: http://jom.sagepub.com/cgi/doi/10.1177/0149206308330560. 23.
REJNKOVÁ, Petra. 2009. Příklady použití diagramů UML 2.0 [online]. [cit.
2015-05-08]. Dostupné z: http://uml.czweb.org/index.html. 24.
Shell_exec. THE PHP GROUP. PHP: Hypertext Preprocessor [online]. 2001.
[cit. 2015-04-13]. Dostupné z: http://php.net/manual/en/function.shell-exec.php. 25.
Softwarové inženýrství: Část II. architektury software. 2011. Akela.mendelu.cz:
Studentský server [online]. [cit. 2015-05-12]. Dostupné z: https://akela.mendelu.cz /~xostrize/school/1.semestr/SWI/Pr--Cast_II.pdf. 26.
STENBERG, Daniel. CURL. CURL: curl groks URLs [online]. 1997. [cit. 2015-
04-13]. Dostupné z: http://curl.haxx.se/. 27.
Syntaktický analýza [online], aktualizace 2014-10-28 [cit. 2015-04-14], Wiki-
pedie. Dostupné z: http://cs.wikipedia.org/wiki/Syntaktick%C3%A1anal%C3%BDza. 28.
ŠIŠKA, Ladislav, LÍZALOVÁ, Lenka. Výběr ekonomických ukazatelů pro mě-
ření dlouhodobé výkonnosti podniku. Journal of Competitiveness [online]. Zlín: Univerzita Tomáše Bati, Fakulta managementu a ekonomiky, 2009 -, 2011. č. 1, 5 s. [cit. 2015-02-17]. Dostupné z: http://www.cjournal.cz/files/40.pdf. 29.
Usage of server-side programming languages for websites. Q-SUCCESS. Web
Technology Surveys [online]. 2015. [cit. 2015-04-14]. Dostupné z: http:// w3techs.com/technologies/overview/programming_language/all. 30.
Tesseract-ocr. 2006. Tesseract-ocr [online]. [cit. 2015-05-12]. Dostupné z:
https://code.google.com/p/tesseract-ocr/. 31.
Zákon č. 513/1991 Sb., obchodní zákoník, Hlava III: Obchodní rejstřík, §27 –
§28. 1991. [cit. 2015-04-14]. Dostupné z: http://business.center.cz/business/pravo /zakony/obchzak/cast1.aspx.
47
32.
Zákon č. 563/1991 Sb., o účetnictví, o účetnictví, Část třetí: Účetní závěrka, §18.
1991. [cit. 2015-04-14]. Dostupné z: http://business.center.cz/business/pravo/zakony /ucto/cast3.aspx.
48
Seznam obrázků Obrázek č. 1 Úvodní stránka IS
14
Obrázek č. 2 Základní informace
15
Obrázek č. 3 Část dotazníku nutná k získání údajů pro výpočet EVA
16
Obrázek č. 4 Vyhledávání v ARES
17
Obrázek č. 5 Vyhledávání v obchodním rejstříku
19
Obrázek č. 6 Schéma logické architektury
29
Obrázek č. 7 Diagram případu užití
31
Obrázek č. 8 Analytický diagram tříd
32
Obrázek č. 9 Model – View – Presenter
34
Obrázek č. 10 Vyplněná část dotazníku
41
49
Přílohy Obsah CD Součást bakalářské práce je CD-ROM, které obsahuje:
Soubor getIndicator.php – samostatný kód mého modulu v jazyce PHP, kód má defaultně zadaný rok a IČ a výstup nevrací pole, ale vypisuje ho na obrazovku,
Soubor output.pdf – ukázka staženého dokumentu z justice.cz, dokument obsahuje výroční zprávu pivovaru Bernard, a.s. za rok 2013,
Soubor text.txt – ukázka dokumentu po provedení metody OCR nástrojem Tesseract,
Soubor ocr.sh – skript využívající Tesseract, který se volá ve funkci ocrPdf()
Soubor gacr.zip – všechny soubory potřebné k fungování IS v Nette Framework včetně souborů reportingModel.php, new.latte a reportingPresenter.php, které byly upraveny,
50
Obrázky obsažené v celé bakalářské práci,
Text bakalářské práce.