VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Počítačové systémy. Aplikace pro vedení záznamů daňové evidence

Rozměr: px
Začít zobrazení ze stránky:

Download "VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Počítačové systémy. Aplikace pro vedení záznamů daňové evidence"

Transkript

1 VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Počítačové systémy Aplikace pro vedení záznamů daňové evidence bakalářská práce Autor: Martin Halík Vedoucí práce: Ing. Marek Musil Jihlava 2015

2 Vložený papír se zadánímvysoká škola polytechnická Jihlava Tolstého 16, Jihlava ZADÁNÍ BAKALÁŘSKÉ PRÁCE Autor práce: Studijní program: Obor: Název práce: Cíl práce: Jan Novák Elektrotechnika a informatika Aplikovaná informatika Název Práce Práce se. Jméno vedoucího BP vedoucí bakalářské práce Jméno vedoucího katedry vedoucí katedry Katedra elektrotechniky a informatiky

3 Abstrakt Hlavním úkolem této práce je vytvoření databázové aplikace, která bude umožňovat provedení základních operací pro daňovou evidenci. Bude obsahovat agendy pro vytváření a evidenci účetních dokladů, nabídek a zakázek. Snahou aplikace bude maximální automatizace těchto procesů za pomocí technologií, jako je například optické rozpoznání znaků (OCR). Aplikace bude vytvořena na platformě Microsoft.NET Framework pomocí jazyka C#. Pro návrh uživatelského rozhraní bude využita platforma Windows Presentation Foundation. Dále bude využito moderního návrhového vzoru Model-View-ViewModel. Rovněž bude proveden rozbor použitých technologií a postupů. Výstupem práce pak bude plně využitelný software, která uživateli poskytne maximálně automatizovanou podporu při daňové evidenci. Klíčová slova C#, Daňová evidence, MVVM, OCR, WPF Abstract The main objective of this thesis is to develop a database application that will allow doing basic operation for tax records evidence. It will contain agendas for creation and registration of actuarial documents, offers and commisions. The goal of this application will be maximal automatization of these processes by using technologies like for example Optical Character Recognition (OCR). The application will be developed on platform Microsoft.NET Framework with C# language. For the design of user interface, the Windows Presentation Foundation platform will be used. Furthermore, the modern design pattern Model-View-ViewModel will be used. An analysis of used technologies and practices will be done. The output of the thesis will be a fully usable software which will provide maximum automated support for tax records evidence. Key words C#, MVVM, OCR, Tax Records Evidence, WPF

4 Prohlašuji, že předložená bakalářská práce je původní a zpracoval/a jsem ji samostatně. Prohlašuji, že citace použitých pramenů je úplná, že jsem v práci neporušil/a autorská práva (ve smyslu zákona č. 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ů, v platném znění, dále též AZ ). Souhlasím s umístěním bakalářské práce v knihovně VŠPJ a s jejím užitím k výuce nebo k vlastní vnitřní potřebě VŠPJ. Byl/a jsem seznámen s tím, že na mou bakalářskou práci se plně vztahuje AZ, zejména 60 (školní dílo). Beru na vědomí, že VŠPJ má právo na uzavření licenční smlouvy o užití mé bakalářské práce a prohlašuji, že s o u h l a s í m s případným užitím mé bakalářské práce (prodej, zapůjčení apod.). Jsem si vědom/a toho, že užít své bakalářské práce či poskytnout licenci k jejímu využití mohu jen se souhlasem VŠPJ, která má právo ode mne požadovat přiměřený příspěvek na úhradu nákladů, vynaložených vysokou školou na vytvoření díla (až do jejich skutečné výše), z výdělku dosaženého v souvislosti s užitím díla či poskytnutí licence. V Jihlavě dne... Podpis

5 Poděkování Na tomto místě bych rád poděkoval svému vedoucímu práce Ing. Marku Musilovi, za možnost vytvářet tuto práci pod jeho vedením.

6 Obsah 1 Úvod Současný stav na trhu Situace na trhu Doporučení vhodného produktu Návrh řešení Funkce aplikace Analýza problémových oblastí Databáze Návrh uživatelského rozhraní Realizace Popis použitých technologií Souborová struktura aplikace Rozbor hlavních funkčností programu Grafické rozhraní Návrh na další rozvoj aplikace Závěr Seznam použité literatury Seznam obrázků Seznam použitých zkratek Seznam příkladů Přílohy ER diagram Přiložené CD Manuál aplikace... 62

7 1 Úvod Již zřídka se setkáváme se stavem, že veškerá ekonomická agenda probíhá pouze v listinné podobě. Naštěstí na trhu existuje celá řada ekonomických systémů, které práci účetním subjektům ulehčují v mnoha směrech. Často se jedná o systémy pokrývající velmi širokou škálu činností - od daňové evidence, přes knihu jízd až po podvojné účetnictví a třeba personalistiku. Pro domácí vedení účetnictví jsou však tyto systémy většinou zbytečně komplikované a rozsáhlé. Pak existují aplikace naopak téměř jednostranně zaměřené (například na pouhé vytváření faktur, jednoduchou evidenci dokladů nebo pouze výpočet daně). Uživatel je tak mnohdy nucen instalovat několik takových programů najednou. Poptávku na systémy vytvářejí nejen střední a velké podniky, ale právě i menší firmy a živnostníci, kteří zpravidla nepotřebují provádět tolik úkonů. Mnohdy totiž na samotné účetnictví využívají externích služeb kvalifikovaných účetních. Proto tento segment trhu vyžaduje i aplikace mnohem jednodušší - takové, díky nimž zvládne běžnou denní práci i laik. Navíc tito zákazníci požadují co nejmenší ceny software. Při podrobnějším zkoumání trhu s ekonomickým software se však nepodařilo nalézt takový produkt, který by vyhovoval potřebám zadavatele firmě Petr Horn. Proto vznikla myšlenka vytvoření aplikace, která je obsahem této práce. Firma se potýká, podobně jako ostatní společnosti podobného formátu (do 5 zaměstnanců), s potřebou vést daňovou evidenci vlastními silami a co možná nejefektivnějším a nejrychlejším způsobem. Proto by jednou z hlavních předností aplikace měla být zvýšená míra asistence uživateli při provádění všech činností (např. asistence při tvorbě nabídek, automatické zaznamenávání faktur atd.). Cílem práce je tedy především vytvořit aplikaci pro tzv. domácí účetní. Domácími účetními rozumíme především fyzické osoby a drobné živnostníky zpracovávající si daňovou evidenci a účetnictví svépomocí v domácích podmínkách. U těchto účetních se lze často setkat s nepříliš pokročilými znalostmi výpočetní techniky a potažmo i malou ochotou tyto znalosti získávat. Program je již od začátku pojat jako řešení na míru pro firmu Petr Horn, která podniká v oboru průmyslové automatizace. 7

8 Motivací této práce je i osvojení a zdokonalení technik WPF (Windows Presentation Foundation). V práci je plánováno využití návrhového vzoru MVVM (Model-View- ViewModel), jenž je pro WPF ideálním konceptem. Ten používají i vývojáři společnosti Microsoft. V běžné programátorské praxi se tohoto vzoru příliš často nepoužívá, proto je zajímavé porovnání, jak bude probíhat vývoj aplikace s jeho striktním dodržením. Dále je cílem vytvořit aplikaci tak, aby co nejvíce usnadnila uživatelům jejich práci. To je velmi nelehký úkol, se kterým se programátoři a analytici musí potýkat každý den. Pro vývojáře není vždy lehké, vzhledem k jeho znalostem a zkušenostem na poli informačních technologií, navrhnout aplikaci tak, aby byla pro laického uživatele snadno uchopitelná, ovladatelná a práce s ní efektivní. Dnešní programy určené pro běžné uživatele se totiž snaží o totéž. Může se jednat o různé formy intuitivního uživatelského rozhraní, interaktivity, cílených nápověd, předplňování formulářových polí atd. Není ovšem ani tak potřeba kopírovat nejnovější trendy v grafickém designu formulářových aplikací, jako spíš uvědomit si, jak tyto trendy umožňují přenést část práce z člověka na výpočetní techniku. 8

9 2 Současný stav na trhu V této kapitole bude proveden rozbor současné situace na trhu k datu s ohledem na typ vznikající aplikace. Dále zde bude uvedeno několik způsobů, jak se zadaného problému zhostit. 2.1 Situace na trhu Trh se softwarem veškerého druhu je velmi rozsáhlý. Vzhledem ke své povaze je v podstatě celosvětový. Najdeme na něm jak aplikace volně šiřitelné, tak placené. V poslední době však přeci jen dochází k určitému posunu. Zhruba před deseti lety byly hlavní komoditou klientské desktopové aplikace. Dnešní trend nahrává spíše aplikacím pro mobilní zařízení nebo cloudovým službám. Cloudové služby jsou moderním trendem uchování dat a práce s nimi. Veškerá data jsou uložena na serveru, stejně tak i aplikace k nim přistupující je spouštěna na serveru. Tento způsob řešení přináší tu výhodu, že lze tedy ke svým datům přistupovat kdykoliv a odkudkoliv. Uživatelé tedy neplatí za software, ale za jeho užití. Mohlo by se tedy na první pohled zdát, že na trhu bude k dispozici aplikace, která bude splňovat klientovy požadavky. Při podrobnější úvaze lze ale dospět tomu, že tento trh je potřeba zúžit. Zde jsou vyjmenovány hlavní faktory, které umožňují toto zúžení: Výsledná aplikace nemá být plnohodnotným ekonomickým nebo účetním systémem, naopak má sloužit pouze pro evidenci a tvorbu faktur a nabídek Program má být co nejjednodušší, co se týče grafického rozhraní a uživatelského ovládání Vzhledem k jazykovým schopnostem uživatele je nutné, aby aplikace byla lokalizována v českém jazyce Program také musí ctít českou legislativu Za konkurenty na takto specifikovaném trhu se dají považovat následující výrobci a jejich produkty. Stormware s.r.o. Pohoda tento produkt je zde nutné uvést, protože již je zadavatelem pro účetnictví použit. Systém Pohoda je komplexní ekonomický systém, přesto ale nenaplňuje zadavatelovy požadavky. Dle jeho vyjádření je tento software 9

10 příliš složitý a málo přehledný, obsahuje spoustu nevyužitých funkcí. Stormware nabízí i verzi Pohoda Mini za cenu 1980 Kč bez DPH, která umožňuje základní daňovou evidenci. Ze zkušeností se stávajícím systémem však vyvstávají obavy, že i tato verze nebude příliš vyhovovat, navíc neumí tvorbu nabídek ani sdružování dokladů do zakázek. I proto se zadavatel poohlíží po nadstavbové, možná i náhražkové, aplikaci, která umožní výše požadované funkce. Ježek software s.r.o. Duel Společnost Ježek software poskytuje velmi zajímavý produkt Duel. Jedná se o modulární systém, který umožňuje využití pouze některé z jeho částí (modulů). Pro použití dle přání zákazníka by bylo možné využít modul Kancelář. Kancelář sice obsahuje více nadstavbových funkcí, ale vzhledem k poměrně dobře zpracovanému uživatelskému rozhraní se lze v programu celkem dobře orientovat. Uváděná cena za licenci verze programu pro daňovou evidenci, která obsahuje modul Kancelář, je 1500 Kč bez DPH. Uvedený software však nelze pro zadavatele doporučit, neboť neobsahuje možnosti seskupování dokladů do zakázek, evidenci a tvorbu nabídek. Ukázka z programu je na obrázku 1. Obrázek 1: Ukázka z programu Duel Milan Bánovský Fakturky Tento program je méně zajímavou variantou. Nabízí možnost vytvoření faktury, její export do různých formátů i správu vydaných a přijatých 10

11 faktur. Nicméně prezentace této aplikace nepůsobí profesionálně ani věrohodně. Mimo jiné nepřesvědčivě působí již fakt, že je na různých serverech po internetu nabízena bezplatná verze programu, kdežto na webové prezentaci výrobce je stejný software nabízen za cenu 660 Kč (navíc není zřejmé, zda se jedná o cenu bez DPH či nikoliv). I přes velmi příznivou cenu nelze produkt doporučit, neobsahuje totiž možnosti evidence zakázek, nabídek a uložení elektronického souboru. Studio Datales Faktury část zákazníkova problému by mohla řešit bezplatná aplikace s názvem Faktury. Umožňuje vytvoření a tisk faktury a s určitým omezením také cenové nabídky. Program však neobsahuje správu číselníků pro výběr např. zboží nebo příjemce faktury. Vzhledem ke své bezplatné distribuci může sloužit jako alternativa. Pro zadavatele však vhodný není, podobně jako u ostatních chybí sdružování do zakázek nebo ukládání elektronických souborů. Elisoft s.r.o Daňová evidence Lite tento produkt umožňuje evidenci a zakládání nových faktur. Není zatížen spoustou dalších agend jako ostatní ekonomické aplikace. Cena je 1980 Kč bez DPH. Neobsahuje možnost vložení elektronických souborů či práci se zakázkami. Ing. Martin Tobolka Živnostník za zmínku stojí i produkt Ing. Tobolky. Je určen primárně pro daňovou evidenci, umožňuje tedy evidenci faktur a jejich tvorbu. Nicméně i podle webové prezentace výrobce je systém již cca 3 roky neaktualizován, proto se lze snadno obávat, že uživatelská podpora nebude na valné úrovni. Tento software navíc neobsahuje funkce jako vložení souboru, práci s nabídkami a zakázkami. Licencování produktu je na webových stránkách popsáno poněkud nejednoznačně, ale dá se s určitou dávkou pravděpodobnosti vyvodit, že licence je dostupná zdarma. Correct software Firma Program Firma je určen, mimo jiné, také pro daňovou evidenci. Na rozdíl od jiných software obsahuje rozsáhlou dokumentaci včetně videonávodů. To je však jeho jedinou drobnou výhodou oproti většině ostatních produktů. Program není vybaven funkcemi pro ukládání souborů, tvorbou nabídek ani možností vzájemného provázání dokladů. Na svoji omezenou funkčnost se však vyznačuje poměrně vysokou cenou 2990 Kč (znovu není uvedeno, zda daň z přidané hodnoty je součástí ceny). 11

12 Asseco Solutions Helios Red Jedná se o komplexní ekonomický systém se zajímavým grafickým prostředím. Kromě požadované daňové evidence však obsahuje spoustu agend, které by se velmi pravděpodobně staly nevyužitými a v práci překážely a rozptylovaly. Společnost Asseco Solutions nabízí tento software dokonce i ve freeware variantě, ta je ovšem omezena maximální výší ročního obratu do Kč. Tato částka je však pro zadavatele příliš nízká. V případě vyššího obratu se pak částky za software pohybují v mnohem vyšších hladinách, od 2300 Kč až po nejdražší verzi bez omezení, která je k mání za Kč bez DPH. ZK Soft Samostatná fakturace Firma ZK Soft vyvinula modulární systém, jehož součástí je i program s názvem Samostatná fakturace, který umožňuje vystavování, tisk a evidenci faktur. Tento program by se dal vcelku dobře využít pro některé zákazníkovy potřeby. Neumožňuje však vytváření nabídkových listů, ani sdružování dokladů do zakázek. Cena modulu Samostatná fakturace je 900 Kč (znovu není uvedeno, zda daň z přidané hodnoty je součástí ceny). Ukázka z programu je na obrázku 2. Obrázek 2: Ukázka z programu Samostatná fakturace 12

13 2.2 Doporučení vhodného produktu Všechny výše uvedené programy by zákazník mohl pro svou práci využít. Žádný z nich však plně nenaplňuje jeho očekávání. Někdy je to kvůli nedostatečným funkcím (absence tvorby nabídek, seskupování do zakázek, ukládání elektronických souborů), někdy na druhou stranu kvůli přebytku funkcí nebo nepříliš snadnému ovládání. Jindy zase daný software nelze doporučit kvůli ceně, obavě z nedostatečné uživatelské podpory či obecné obavě z funkčnosti produktu. U těch aplikací, které by svou jednoduchostí a lehkostí ovládání mohly splnit některé z požadavků zadavatele, je pak problémem, že tyto programy jsou vyrobeny malými společnostmi pro konkrétní účely, navíc jejich vývoj byl mnohdy již zastaven. Proto u nich nelze čekat možnosti dalšího rozšiřování či zákaznických úprav. Požadavků na výslednou aplikaci by bylo možné také dosáhnout kombinací některých programů od různých výrobců. To by ovšem jistě nebylo vhodným řešením a vnášelo by do domácího účetnictví nechtěnou decentralizaci. Kvůli těmto skutečnostem bylo se zadavatelem dohodnuto vytvoření nového software, který bude vytvořen na míru. Navíc bude možno aplikovat v budoucnu případná rozšíření tak, aby kopírovala potřeby rozvíjející se firmy. 13

14 3 Návrh řešení Nově vytvářený program tak bude mít za cíl vyvarovat se všech výše popsaných nedostatků, které postihují ostatní ekonomické systémy a zároveň si vzít z každého to pozitivní, co ten který program nabízí. Nedostatky jsou hlavně nepokrytí všech potřeb zadavatele, neefektivní a neintuitivní práce s programem. Nejdůležitějším faktorem výjimečnosti pak bude vlastní invence, především v oblasti návrhu uživatelského rozhraní a inteligence samotného programu. Návrh vzhledu aplikace je na obrázku Funkce aplikace Obrázek 3: Návrh podoby nové aplikace Nová aplikace s pracovním názvem Domácí účetnictví tedy bude obsahovat níže uvedený výčet funkcí. Tvorba a evidence faktur a dokladů Program umožní tvorbu nových a evidenci došlých faktur a dokladů, jejichž originál je v listinné nebo elektronické podobě. Po zadání údajů do formuláře bude tento uložen do databáze. Veškeré takto zaznamenané doklady bude možno zobrazit v seznamu. 14

15 Zjednodušená evidence faktury/dokladu pomocí oskenování listinné podoby dokumentu nebo vložením naskenovaného obrázku Bude kladen důraz na úsporu práce uživatele, takže bude umožněna evidence pomocí vložení oskenované formy dokladu nebo listinné podoby do skenovacího zařízení. Poté proběhne optické rozpoznání znaků a jejich rozbor do formulářových polí s následnou kontrolou uživatelem. Automatizovaná tvorba a evidence nabídkových listů, využití šablon Aplikace umožní vytvářet a evidovat nabídkové listy, které jsou velmi podobné výsledným fakturám. Bude probíhat obdobně jako evidence dokladů, tzn. vyplněním formulářových polí a jejich uložením do databáze. Možnost sdružování jednotlivých typů dokumentů (faktur a dokladů) do jednotlivých zakázek Zadavatel si přeje mít jednoduchý přehled o svých zakázkách/dílech a proto bude možno sdružit jednotlivé dokumenty do zakázek tak, aby spolu tvořily logické celky faktury a doklady, které patří ke stejnému dílu a podobně. Možnost vložení elektronického souboru k jednotlivým dokumentům Aplikace bude uchovávat libovolné elektronické soubory, které bude možno přiřadit k dokladu, faktuře, nabídce nebo zakázce. Lze si pak snadno otevřít originální doklad nebo nákres výrobku. Možnost úpravy jednotlivých číselníků obchodních partnerů, zboží Zadavatel si přeje mít detailní přehled o součástech zakázek a svých obchodních partnerech, proto mu bude program umožňovat tyto položky spravovat, např. vkládat vlastní výrobky, které lze fakturovat, díly, ze kterých se skládají nebo upravovat adresu u subjektu. Program tak tedy bude flexibilní a bude moci obsahovat jakákoliv data z těchto oblastí. Pokročilé možnosti vyhledávání podle všech možných položek s možností uložení šablon filtrů Aplikace musí pro potřeby snadného dohledání starších dokladů a faktur obsahovat možnost prohledávání záznamů. To bude řešeno dynamickým filtrováním podle množství zvolených vlastností. Takto zvolená kritéria hledání bude možno uložit jako šablonu hledání. 15

16 Intuitivní a atraktivní uživatelské prostředí Důraz bude kladen především na intuitivitu a snadnost ovládání. Toho bude docíleno za pomoci jednoduchého vzhledu aplikace a skrýváním méně často používaných možností. Tisk dokladů, faktur a nabídkových listů Aby bylo možno využít evidovaných dokumentů také v listinné podobě, bude připravena možnost jejich tisku. Export do dokladů, faktur a nabídkových listů do PDF Aby bylo možno využít evidovaných dokumentů také v elektronické podobě, bude zapracována možnost jejich převodu do PDF Možnost přímého odeslání faktury na zadaný Pro využití v elektronickém styku s obchodními partnery bude dostupná možnost jednoduchého odeslání přímo z aplikace na zadaný . Možnost zálohy databáze Z důvodu obavy uživatelů o ztrátu svých dat bude program obsahovat možnost zálohy uložených informací. Ta bude provedena zálohou celého databázového souboru na FTP server. 3.2 Analýza problémových oblastí V této kapitole bude provedena analýza jednotlivých oblastí, které se týkají požadovaných funkcí programu a představují potenciálně obtížná místa při vývoji aplikace. Zároveň bude přednesen návrh jejich řešení. Automatizované zadávání faktur Tato oblast je jedna z nejsložitějších. Plná automatizace by představovala stav, kdy by uživatel zadal fakturu pouhými dvěma stisknutími tlačítka myši. Ideální průběh celého procesu je vyznačen na obrázku 4. 16

17 Obrázek 4: Proces automatizace zadávání dokladů Automatizované zadávání faktur spočívá v těchto krocích 1) Uživatel vloží listinnou podobu faktury do skenovacího zařízení a zmáčkne tlačítko v aplikaci. 2) Oskenuje se dokument vložený do skenovacího zařízení. 3) Nad výsledným obrázkem, který vznikl oskenováním, je proveden proces optického rozpoznání znaků (OCR). 4) Výsledkem OCR je textový soubor, ze kterého by se následně rozebraly jednotlivé položky faktury a zapsaly do příslušných políček formuláře aplikace 5) Tento formulář spolu s náhledem obrázku oskenované faktury je předložen uživateli ke kontrole zadaných údajů. 6) Uživatel stiskem tlačítka potvrdí správnost údajů a uloží fakturu do databáze. V tomto procesu se vyskytují 3 místa vyžadující zvýšenou pozornost - body 2, 3 a 4. Ad 2) Oskenování dokumentu pomocí aplikace nebude snadný úkol vzhledem k faktu, že existuje mnoho různých typů skenerů. Bude tedy třeba pro tento úkon nalézt obecné řešení. Tím by mohlo být využití rozhraní Windows WIA (Windows Image Acquisition). Ad 3) Provedení OCR je klíčové pro celý proces, jelikož jeho využitím se ušetří uživateli nejvíce práce. Naprogramování OCR systému by však bylo tématem minimálně na diplomovou práci. Proto se nabízí řešení využití některého stávajícího 17

18 OCR produktu. Jelikož je kladen také důraz na cenu aplikace, je potřeba se porozhlédnout na trhu volně dostupných nástrojů. Zde je jednoznačnou volbou OCR systém Tesseract OCR, který je momentálně nejlepším freeware OCR na světě. I kvůli tomu, že jeho sponzorem se stala v roce 2007 společnost Google, Inc. [1] Tesseract OCR disponuje rozhraním pro příkazový řádek, je tedy lehce využitelný pro napojení v aplikaci. Samotným napojením však práce nekončí, nýbrž začíná, protože existuje mnoho různých ekonomických software, existuje i mnoho podob faktur a dokladů. Faktury jsou rozdílné jak rozložením jednotlivých položek, tak použitými fonty písem, ale i třeba názvy jednotlivých položek. Tesseract OCR, ostatně jako další OCR, není bohužel všemocný nástroj, je potřeba ho určitá písma naučit. Ad 4) V případě, že se lze na výsledky z OCR spolehnout, nastává další problém jak určit, kde se která položka nachází a jaká je její hodnota. Pro ilustraci lze uvést příklad, že jedna faktura používá horizontální uspořádání (hodnota položky je umístěna vedle názvu položky), druhá používá uspořádání vertikální (hodnota položky je umístěna pod názvem položky) a třetí může využívat uspořádání smíšené. Vyřešení tohoto problému bude spočívat především v analýze co největšího množství různých faktur. Problém by se dal řešit tak, že by byly definovány šablony rozložení faktur a položky by se dohledávaly podle souřadnic. Nebo by mohla být definována klíčová slova určující názvy položek faktury a následně by se dohledávalo nejbližší vhodné slovo nalezené pomocí OCR. Ukládání elektronických souborů Tato oblast navazuje na předchozí téma automatizovaného zadávání faktur, kde je požadováno uložení naskenované podoby faktury/dokladu. Pro tuto potřebu je nutno zřídit úložiště elektronických souborů. U zadavatele se nepředpokládá přítomnost např. cloudového úložiště, proto řešením bude pravděpodobně umístění úložiště přímo na stroji, kde bude aplikace spuštěna. Je několik možností, pro tuto aplikaci je zvolena možnost ukládání na FTP server. Jako server v tomto případě poslouží volně dostupný nástroj FileZilla Server. Důvodem jeho použití je poměrně dlouhá doba jeho vývoje, ověřená spolehlivost a samozřejmě nulové pořizovací náklady. [2] 18

19 Automatizovaná tvorba nabídkových listů Tvorba nabídkových listů nebude tak častou činností, přesto je možno ji alespoň částečně zautomatizovat. Toho může být docíleno například nabízením šablon nabídkových listů, které by vznikaly na základě již dříve vytvořených nabídek. Samozřejmě by se zohledňovaly aktuální ceny jednotlivých ceníkových položek. Pokročilé možnosti vyhledávání s možností uložení šablony filtru Ačkoliv úkol zní jednoduše, je potřeba si dát pozor při jeho vypracování. Vše by mělo být zpracováno precizně na straně databáze tak, aby se mechanismus ukládání a používání filtrů dal využívat obecně pro jakoukoliv entitu databáze. Zároveň je v plánu aplikaci obohatit univerzálním hledacím políčkem, které bude hledat zadaný výraz napříč celou databází. Zamýšleným vyhledávacím motorem pak nebudou obyčejné SQL vyhledávací příkazy, ale bude vhodné využít fulltextové vyhledávání pomocí indexů, což bude i mnohem rychlejší. Export dokladů, faktur a nabídkových listů do PDF Vytvoření PDF z čistých databázových dat také není snadným úkolem. Naštěstí není potřeba studovat architekturu PDF, jehož manuál čítá cca 1200 stran, ale existují také open-source projekty, který se dají k manipulaci s PDF využít. Jedním z nich je i projekt itextsharp, knihovna pro práci s PDF napsaná v jazyce C#. Ukázka požadovaného výstupu z aplikace je na obrázku 5. 19

20 Obrázek 5: Výstup z programu v podobě PDF 3.3 Databáze Již samotný úkol jednoznačně definuje povinnost ukládat a uchovávat určité množství dat. Proto je zřejmé, že základem řešení bude databáze. Ta je ostatně jádrem většiny informačních systémů. Existuje mnoho typů a výrobců databází. Každý produkt se vždy trochu liší od předchozích a má své výhody i nevýhody. Proto je řešení koncipováno tak, aby bylo možné dle potřeby napojit hned několik druhů databáze. Typ databáze se pak určí podle požadavků klienta přímo na konkrétní instalaci. Preferována bude databáze typu embedded. Tento typ databáze umožňuje velmi snadnou správ, jelikož celá databáze představuje pouze jediný soubor na disku. Proto lze velmi snadno takovou databázi přesouvat, zálohovat a aplikace, která je na ní postavená, je přenositelná. Využitelné databázové stroje budou: Microsoft SQL Server Compact Edition, SQLite, PostgreSql, Microsoft SQL Server. ER model databáze ER model databáze je vložen jako Příloha 1. V níže uvedeném seznamu je stručný popis jednotlivých entit diagramu. Entita Adresy Aktivity Popis Seznam adres osob a subjektů Číselník aktivit databázového záznamu (aktivní, smazán atd.). 20

21 DruhZbozi Faktury FakturyZakazek FiltrOperator Filtry Kraje Nabidky NabidkyZakazek Nastaveni Obce Okresy Osoby PlatebniMoralka Polozky SablonyFiltru Soubory Subjekty TypAdresy TypEntity TypFaktury TypPrilohy UlozeneFiltry Vyrobci Zakazky Zbozi Číselník druhů zboží Seznam vydaných i přijatých faktur a dokladů Seznam faktur a dokladů přiřazených k zakázkám Operátor uloženého filtru (rovná se, obsahuje atd.) Seznam dostupných filtrů pro hledání Seznam krajů v České republice Seznam vytvořených nabídek, lze zde označit nabídku jako šablonu pro nově vytvářené Seznam nabídek přiřazených k zakázkám Uložená uživatelská nastavení, např. připojení k FTP Seznam obcí v České republice Seznam okresů v České republice Seznam kontaktních osob, které mohou být přiřazeny k subjektu Číselník typů platební morálky odběratele Seznam položek faktury, dokladu, nabídky Uložené šablony filtrů hledání Seznam souborů připojených k jednotlivým entitám (dokladu, faktuře atd.) Seznam subjektů (dodavatelé, odběratelé, výrobci atd.) Číselník typů adres (fakturační, dodací, sídlo) Číselník typů entit použitých v aplikaci, využívá se pro rozlišení v obecných seznamech, obsahuje hodnoty jako faktura, nabídka, zakázka atd. Číselník typů faktur (příjmová, výdajová, doklad atd.) Číselník typů přílohy (oskenovaný originál, příloha atd.) Seznam filtrů, které jsou obsahem šablony pro hledání Seznam výrobců zboží Seznam zadaných zakázek Seznam zboží Systém filtrů Jedním z hlavních požadavků na aplikaci byla možnost vyhledávání jednotlivých entit pomocí zadaných hodnot. Toto vyhledávání je zpracováno obecně tak, aby bylo možno 21

22 přidávat a měnit předem definované filtry pouze na základě úprav v databázi, případně v serverové části aplikace. Toho je docíleno navrženými entitami FiltrOperator a Filtry. Níže je uveden jejich podrobnější popis na základě výčtu jejich atributů. FiltrOperator Id jednoznačný identifikátor operátoru Popis textový popis operátoru, tedy například rovná se, obsahuje, větší než Znak znak, který odpovídá textovému popisu Db_znak znak, který představuje daný operátor na databázovém stroji Filtry Id jednoznačný identifikátor filtru. Popis textový popis, který uvidí uživatel, tedy položka, podle které se bude vyhledávání provádět, například Číslo faktury. Vyraz výraz, který danou položku představuje v databázovém dotazu. Zde je nutné, aby bylo v souladu se skutečně napsanými příkazy SELECT na serverové straně aplikace. Výraz se skládá z aliasu (zástupného jména) tabulky použitého v dotazu a jejího atributu, tedy například Faktury.castka_celkem. Typ určuje, ke které entitě se filtr vztahuje, cizí klíč do tabulky TypEntity. DatovyTyp datový typ, který přísluší výrazu pro hledání. Podle daného typu se aplikace rozhoduje, který operátor nabídne, například String, Int nebo DateTime. Využití aktivity V návrhu databáze je často využit atribut aktivita, který umožňuje nastavit aktivitu pro jednotlivé entity. Tento atribut nabývá hodnot z číselníku Aktivity, například aktivní, neaktivní nebo smazáno. V průběhu života databáze tak není nutno mazat záznamy SQL příkazem DELETE, což je nevratná operace, ale postačí nastavit aktivitu na hodnotu smazáno. K takovému záznamu se lze pak snadno kdykoliv vrátit, uživatel tedy chybnou operací nepřijde o svá data, což je především u laických uživatelů velmi podstatné. Navíc odpadá problém mazání nebo úpravy dat v případě, že na daný záznam je vázán cizí klíč v jiné tabulce. 22

23 3.4 Návrh uživatelského rozhraní Uživatelské rozhraní je navrženo tak, aby bylo co nejvíce přehledné a intuitivní. Zároveň je důležité, aby neobsahovalo prvky, které mohou odvádět pozornost nebo být nepříjemné pro oči, ať už svou barvou, proporcemi, nebo umístěním. Důraz je také kladen na vyvážený poměr interaktivity a jednoduchosti ovládání. Současným trendem ve vývoji webových, ale i desktopových, aplikací je také použití tzv. prázdných ploch uživatel nesmí mít pocit, že je aplikace příliš komplikovaná. Strukturu okna je na obrázku 6. Obrázek 6: Struktura hlavního okna Rámec aplikace Samotný rámec aplikace se snaží o udržení aktuální trendů v návrhu grafického rozhraní aplikací a neslouží tedy pouze k ovládání velikosti okna nebo jeho uzavření. Místo toho obsahuje navíc i prvky pro pohyb v aplikaci (mezi jednotlivými záložkami pracovní plochy) a prvky pro společné akce nad všemi spravovanými objekty (faktura, nabídka atd.). Ukázka navrženého rámce je na obrázku 7. Obrázek 7: Rozšířený rámec aplikace 23

24 Hlavní menu Jako hlavní ovládací prvek je použit pás karet, takzvaný ribbon, který se začal do podvědomí uživatelů dostávat díky novějším verzím Microsoft Office (od verze 2007) a také Microsoft Windows. Poskytuje rychlý a s pomocí ikon i graficky názorný přehled uživateli dostupných akcí. Zároveň obsahuje pole pro rychlé hledání jakékoliv položky napříč celou databází programu. Na pásu karet jsou dostupné akce všech agend spravovaných aplikací, kterými jsou Faktury, Zakázky a Nabídky. Návrh pásu karet pro aplikaci Domácí účetnictví je na obrázku 8. Obrázek 8: Pás karet Ribbon obsahuje také tzv. chytré tlačítko, které nahrazuje všeobecně známou položku menu Soubor. Mimo základních operací vložení obsahuje pokročilé možnosti aplikace. Ty jsou záměrně skryty pod tímto tlačítkem tak, aby nerozptylovaly neznalé uživatele. Ukázka takového skrytí je na obrázku 9. Obrázek 9: Ukázka skrytí nadbytečné akce 24

25 Pracovní plocha Největší částí hlavního okna aplikace je pak pracovní plocha, která se chová jako běžný internetový prohlížeč jednotlivé úkony/stránky se zobrazují jako záložky. Mezi těmito záložkami lze jak přepínat, tak je také zavírat. Aplikace díky tomu není přeplněna otevřenými okny a uživatel ihned může vidět, jakou práci ve kterých agendách právě provádí. Možné využití pracovní plochy lze vidět na obrázku 10. Obrázek 10: Pracovní plocha 25

26 4 Realizace 4.1 Popis použitých technologií Jedná se nejen o programovací jazyky a běhová prostředí, ale také o nástroje třetích stran, bez kterých by tvorba software tohoto druhu zabrala mnohonásobně více času. Vývojářská obec je celosvětově velmi početná a většinou tak není složité najít i takové produkty, které lze zdarma využít pro vývoj komerční aplikace. V této kapitole bude také stručně popsáno, jak probíhá programování aplikace podle návrhového vzoru Model View ViewModel (dále jen MVVM). Microsoft.NET Framework 4.0.NET Framework (.NET čteme dot net) je rozsáhlá softwarová platforma, která je určena pro vývoj mnoha různých druhů aplikací. Za pomoci.net Framework můžeme vyvíjet nejen klasické aplikace pro Windows, ale mimo jiné i webové aplikace a služby, aplikace pro mobilní zařízení a mnoho dalších. [3] Platforma obsahuje velké množství knihoven pro usnadnění práce programátorů. Základní knihovnou je Base Class Library..NET obsahuje knihovny pro usnadnění přístupu k datům (ADO.NET) a XML, dále knihovny pro vývoj webových a desktop aplikací, webových a systémových služeb. K těmto základním knihován lze přímo přistupovat pomocí množství programovacích jazyků, jejichž základní vlastnosti jsou definovány v Common Language Specification (CLS). Vykonávání programů vzniklých nad.net řídí jeho součást zvaná Common Language Runtime (CLR). Programy vzniklé v.net jsou totiž kompilovány pouze do přechodového jazyka MSIL (Microsoft Intermediate Language). CLR provádí jeho překlad do strojového kódu pro konkrétní operační systém [4]. Vývoj samotný pak probíhá ve vývojovém prostředí, nejčastěji pak v Microsoft Visual Studio. Architektura platformy.net je znázorněna na obrázku

27 Obrázek 11: Architektura.NET [5] Platformu.NET byla pro práci zvolena z toho důvodu, že je stále velmi výhodnou platformou pro vývoj desktopových aplikací, má rozsáhlé zdroje informací a jednu z největších vývojářských komunit. Navíc s posledními zprávami od Microsoftu se zdá, že tato společnost chce posílit své postavení mezi programátory, jelikož vyhlásila otevření zdrojových kódů pro mnoho dalších větví.netu a také větší podporu pro operační systémy jako jsou Linux, ios nebo Android. Tato podpora by měla být v podobě speciálně upravených verzí frameworku. Minimálně aplikační logika by pak byla využitelná pro případný další budoucí rozšiřující modul v podobě aplikace pro jinou softwarovou platformu. Windows Presentation Foundation Windows Presentation Foundation (dále jen WPF) je podmnožinou výše popsaného.net frameworku a je primárně určen pro tvorbu uživatelského rozhraní. Společnost Microsoft navrhla tuto technologii jako nástupce své dřívější Windows Forms (nebo také WinForms) založené na rozhraní GDI. Obě tyto technologie v současné době Microsoft stále udržuje jako hlavní pro návrh desktop aplikací. WPF má však oproti WinForms několik hlavních výhod, které jsou vyjmenovány níže. 27

28 Není založen na GDI, ale na DirectX, což umožňuje hardwarovou akceleraci. Aplikace ve WPF jsou tedy svižnější a nezatěžují tolik procesor. Z programátorského pohledu lze oddělit část grafickou a část výkonného kódu. Mnohem rozsáhlejší možnosti úpravy grafického designu. WPF nevykresuluje grafické prvky na základě použitých pixelů, proto není závislý na změnách DPI, kdežto prvky ve WinForms se mění v závislosti na DPI. Samotné WPF používá značkovací jazyk XAML. Ten vychází z jazyka XML a má oproti klasickému zápisu grafických prvků (např. pomocí C#) dvě hlavní přednosti: Kód je přehlednější a čitelnější. Právě díky XAML lze oddělit část grafickou od části výkonného kódu. WPF se skládá ze sady základních knihoven, které tvoří dvě vrstvy: managed a unmanaged. Managed (neboli kontrolovaná) vrstva běží v.net CLR a obsahuje knihovny pro základní (knihovna PresentationCore.dll) i pokročilejší (PresentationFramework.dll) práci s uživatelským rozhraním. Součástí této vrstvy je i knihovna WindowsBase.dll, která poskytuje základní objekty pro práci s WPF, jako jsou například DispatcherObject nebo DependencyObject. Unmanaged vrstva běží mimo CLR a programátoři s ní přímo nepracují. Její součástí je knihovna milcore.dll. Její plný název zní Media Integration Library Core a stará se o překlad vyšších WPF objektů (tlačítka, pole atd.) do struktur pro DirectX. Je tedy hlavním vykreslovacím nástrojem WPF. Unmanaged vrstvy obsahuje také knihovnu WindowsCodecs.dll, která se stará o převod obrázků do vektorové grafiky. Architektura WPF je znázorněna na obrázku

29 Obrázek 12: Architektura WPF [6] Technologii WPF byla zvolena kvůli výborným možnostem grafického návrhu a také proto, abych si rozšířil odbornost v tomto oboru. Ačkoliv bylo WPF vydáno již v roce 2006 pod názvem Avalon, tak jsem vzhledem ke svému zaměstnání, kde vývoj stále probíhá ve WinForms, neměl k využití této zajímavé technologie prostor. Velmi mne také láká průzkum možnosti striktního oddělení grafického rozhraní od samotné logiky. Model-View-ViewModel Model-View-ViewModel (zkráceně MVVM) je návrhový vzor tvorby aplikací, často se používá právě ve spojistosti s WPF. Obě tyto technologie spolu tvoří mocný nástroj, který umožňuje vytvářet programy tak, aby byla pečlivě oddělena vrstva grafického návrhu od logiky. Tento přístup používají také vývojové týmy společnosti Microsoft, příkladem může být třeba aplikace Blend pro Visual Studio, která umožňuje grafický návrh WPF aplikací. 29

30 MVVM určuje princip rozdělení částí kódu do následujících tří vrstev: 1) Model Obsahuje samotná data. Většinou ve formě objektů a struktur obsahujících například informace načtené ze zdroje dat. Může představovat třeba napojení na databázi. 2) View - Představuje samotné grafické rozhraní (GUI), tedy to, jak aplikace vypadá. Má za úkol prezentovat data z části Model uživateli v co nejvhodnější formě. Pro View se využívá značkovací jazyk XAML. 3) ViewModel Umožňuje propojení View a Modelu. Může obsahovat metody a příkazy, které provedou případné změny nad daty, tedy Modelu. Tyto příkazy lze navázat a spouštět ve View například pomocí Bindingu. Výše popsaný vzor lze popsat diagramem viz obrázek 13. Obrázek 13: Návrhový vzor MVVM Oddělení grafické a logické části programu je vhodné i pro automatické testování logiky vzniklé aplikace, například pomocí Unit testování. I to je jeden z důvodů, proč bylo rozhodnuto tento návrhový vzor použít. Za předpokladu dalších úprav a rozšiřování programu bude již vhodné takové testování provádět, především v případě, že by se rozšiřoval počet uživatelů. Programování s dodržením MVVM má kromě zmíněných výhod i své nevýhody. Například při psaní této práce jsem se setkal se situací, kdy je potřeba v aplikaci otevřít podřízené okno. Jak ale otevřít okno z části programu (ViewModel), která nemá vědět o grafickém rozhraní? Řešení tohoto problému je vysvětleno níže v kapitole 4.4, ale v porovnání s klasickým přístupem bez MVVM je příliš komplikované a šroubované. 30

31 Client Interface Server V aplikaci je použito vzoru Client Interface Server (CIS), který je obdobou síťové architektury Klient Server s tou modifikací, že je využito ještě vrstvy Interface (česky rozhraní), která představuje most mezi jednotlivými vrstvami. Architektury Client Interface - Server se využívá především u databázových aplikací, u kterých je potřeba udržovat jednu centrální databázi. Tento návrh tedy obnáší rozvrstvení aplikační logiky mezi jednotlivé vrstvy tak, aby program bylo možno využívat například na aplikačním serveru nebo na stanicích a zařízeních, které nebudou mít spojení s databází (toho je možno docílit pomocí webových služeb). Rozložení je znázorněno na obrázku 14. Obrázek 14: Architektura Client Interface Server Server je vrstva, která má přímé spojení centrálním zdrojem dat, nejčastěji relační databází. Představuje pouze základní napojení, tedy sběr a ukládání dat. Interface je rozhraní učující jaké vlastnosti mají být společné pro komunikující vrstvy. Nejčastěji určuje metody, které slouží pro operace s daty uloženými v databázi. Client pak nejčastěji představuje logické seskupení dat do objektů a povolené operace nad nimi, které jsou společné pro jednotlivé typy koncových aplikací (desktop aplikace, mobilní aplikace a jiné). V terminologii MVVM tyto vrstvy dohromady tvoří Model, tedy základní datovou strukturu aplikace. Poskytují tak podklad pro tvorbu ViewModelu a následné prezentaci koncovému uživateli. Tento model byl zvolen z důvodu výhledu do budoucna, kdy je 31

32 možno celé řešení programu Domácí účetnictví rozšířit o systém webových služeb a naprogramování také webové nebo mobilní aplikace. Microsoft SQL Server Compact Edition 4.0 Microsoft SQL Server Compact Edition 4.0 je embedded databáze a je tedy určena především pro menší webové i desktop aplikace. Je postavena na stejném API jako ostatní série typu Microsoft SQL Server. [7] Důvody zvolení tohoto typu databáze pro program Domácí účetnictví a zároveň jejími hlavními přednostmi jsou: Snadný přístup pomocí.net Framework 4.0, včetně ADO.NET. Je využitelná jako 32bitová i 64bitová verze. Malá velikost a přenositelnost. Celá databáze je uložena do jediného souboru, který je velmi malý, roste až s přibývajícím množstvím dat. Je možno přenášet databázi s aplikací nebo provádět její zálohy. Většinová kompatibilita s velkými Microsoft SQL Servery. Volně dostupný a šiřitelný databázový stroj. Lze využít private deployment není potřeba instalace, postačí pouze kopírování příslušných knihoven spolu s aplikací, která databázi využívá. Velmi dobrá rychlost databáze je nahrána v paměti a přístup k ní pomocí dotazů je tak velmi rychlý Jako ostatní embedded databáze má i SQL Server CE svá omezení. Jedním z nejvýraznějších je nemožnost vytváření příkazů SELECT s vnořenými dotazy, takzvanými subselecty. Toto však lze velmi snadno obejít použitím spojení tabulek JOIN. Během práce se pak další omezení neprojevila. Tesseract OCR Jedná se o open source projekt zaměřený na optické rozpoznání znaků (OCR). OCR je proces, při kterém dochází k převodu tištěných nebo psaných textů v listinné podobě do podoby digitální. Digitální podoba pak obsahuje rozpoznaný text, ve kterém lze strojově 32

33 vyhledávat. Program provádějící rozpoznání znaků se řídí předdefinovanými strukturami znaků a na jejich základě přiřadí části obrázku odpovídající znak. V dnešní době existuje mnoho pokročilých nástrojů, které umí zpracovat téměř jakýkoliv jazyk a font, mnohdy i ručně psané písmo zcela automaticky. Někdy je potřeba OCR nástroji napovědět, co daný kus obrázku znamená, čímž se provede jeho trénink. Jak nejčastěji probíhá proces rozpoznání znaků je znázorněno na obrázku 15. Obrázek 15: Proces OCR [8] S vývojem Tesseract začala společnost Hewlett Packard už v roce V roce 2005 pak byl uvolněn jako open source a o rok později ho převzala společnost Google. Již tyto informace slibují, že se bude jednat o velmi pokročilý a kvalitní nástroj. Už jen značná vývojářská komunita okolo tohoto software je vhodným doporučením pro jeho využití na projektu. Díky tomu je také dostupno mnoho tzv. natrénovaných jazykových souborů, které umožňují použít Tesseract také pro specifické znakové a slovní sady, mezi kterými nechybí čeština. Tesseract OCR je dostupný pod licencí Apache 2.0, která umožňuje i jeho zapojení do komerčního projektu. Tento software je připraven pro operační systém Linux, Windows i Mac OS X, je samozřejmě možné ho přeložit i pro jiné platformy. Je určen pro práci přes příkazový řádek, existuje i několik projektů třetích stran, které poskytují grafické rozhraní, například SunnyPage OCR. ITextSharp ITextSharp je open source projekt, který se zaměřuje na práci se soubory ve formátu PDF. Pomocí této knihovny lze vytvářet a upravovat soubory PDF. Jedná se pravděpodobně o nejvyužívanější volně dostupný produkt pro tyto účely a jelikož je 33

34 tento projekt realizován pro platformu.net, bylo rozhodnuto ho použít pro tvorbu PDF z jednotlivých entit, jako jsou doklad či nabídka. ITextSharp je v aktuální veřejně dostupné verzi 5 poskytován pod licencí Affero General Public License, která nedovoluje jeho komerční využití. Starší verze, konkrétně do verze 4, jsou však vázány jinou licencí - GNU Lesser General Public License (LGPL), která komerční využití povoluje. Verze napojené knihovny itextsharp bude nejvyšší dostupná k aktuálnímu datu, ale v případě potřeby a rozšíření programu Domácí účetnictví je možno napojit starší verzi. Dle testování na stejném projektu jsou tyto knihovny kompatibilní, alespoň co se týká kódového zápisu v jazyku C#. 4.2 Souborová struktura aplikace Aplikace se skládá z množství vlastních knihoven i knihoven třetích stran. Jelikož je aplikace plánována v tzv. portable formě, tedy má být přenositelná na paměťovém médiu, její distribuce se provádí bez instalačního balíčku. Přesto je nutné vyřešit přítomnost všech potřebných součástí aplikace, včetně softwarových komponent Microsoft.NET Framework 4.0, Tesseract OCR a Microsoft SQL Server Compact Edition 4.0. Toto programové vybavení musí být vždy přítomno na stanici, ze které se program Domácí účetnictví spouští. Proto jsou instalační balíky kompatibilních verzí těchto komponent distribuovány společně s aplikací. Jejich případnou instalaci obstará program Instalace programu Domácí účetnictví. Instalátor Vzhledem k množství komponent, které aplikace potřebuje ke svému běhu, byl vytvořen jednoduchý instalační program Instalace programu Domácí účetnictví. Je napsán rovněž pro platformu.net, ovšem pro verzi 2.0. To z toho důvodu, aby bylo možno instalační program spustit i na operačním systému Microsoft Windows se starší verzí.net Framework. Nejnižší verzí Windows, ve které lze instalátor spustit, je Windows XP, která již v základní konfiguraci obsahuje instalaci.net Framework 2.0. Instalátor je napsán pomocí technologie WinForms, jelikož.net 2.0 neobsahuje WPF. Program instalátoru nejprve nabídne přijmutí licenčních podmínek a poté zkontroluje přítomnost požadované verze.net (4.0 a vyšší), databázového stroje Microsoft SQL Server Compact a Tesseract OCR. V případě, že některou komponentu nenalezne, oznámí to uživateli a začne instalovat. Pokud není přítomen SQL Server CE nebo 34

35 Tesseract, provede se private instalace do adresáře aplikace. Zobrazení instalovaných komponent lze vidět na obrázku 16. Obrázek 16: Ukázka z programu instalátoru Všechny potřebné komponenty jsou vloženy do instalačního balíku jako zabudované zdroje (embedded resource) v podobě archivů zip nebo instalačního soubor. Je to z toho důvodu, aby pro instalaci stačil pouze jeden soubor a nemusela se distribuovat rozsáhlá instalační sada, která by obsahoval množství souborů. Tato cesta je dobrá hlavně kvůli možnosti stažení instalačního souboru z webového úložiště, aby uživatel nebyl nucen stahovat více balíčků nebo stažený soubor rozbalovat. Jelikož je instalátor psaný pro.net 2.0 a nebylo tak možno využít systémových knihoven System.IO.Packing, jejich rozbalení provede nástroj třetí strany SharpZipLib. Rozdělení do assembly Výsledný program Domácí účetnictví se skládá jak z knihoven třetích stran, které jsou popsány výše, tak také z šesti knihoven vlastní výroby. Jedná se o knihovny samotného jádra programu, které jsou rozděleny podle výše popsané CIS (Client-Interface-Server) architektury na HomeAccountant.Client.dll (klientská část aplikační logiky), HomeAccountant.Interface.dll (rozhraní) a HomeAccountant.Server.dll (serverová část aplikační logiky), dále pak samotný spouštěcí soubor aplikace HomeAccountant.exe. 35

36 Obecné funkčnosti jako práce s databází, PDF, vhodné WPF objekty a další jsou sdruženy v knihovnách HaalaUtilities.dll a HaalaWpfUtilities.dll. 4.3 Rozbor hlavních funkčností programu Tato podkapitola se bude zabývat vysvětlením nejdůležitějších a nejzajímavějších částí programu z hlediska programátora, nemusí se tedy krýt s nejzajímavějšími prvky z hlediska uživatele. Ty sice mnohdy bývají velmi viditelné (především grafické prvky), ale nemusejí být až tak zajímavé pro tvůrce aplikace. Vzhledem k rozsáhlosti projektu pak nelze rozebírat všechny použité třídy nebo implementované funkce. Databázový objekt Jak již bylo uvedeno, základ programu je vytvořen tak, aby bylo možné bez větších obtíží použít odlišné databázové stroje. Mohou to být jak klasické serverové nástroje, tak také databáze typu embedded. Proto bylo nutno tento fakt brát v potaz při vytváření databázového objektu, který je použit pro práci těmito stroji. Celá funkčnost je zpracována v knihovně HaalaUtilities. Hierarchie použitých tříd je na obrázku 17. Obrázek 17: Hierarchie tříd databázového objektu 36

37 Je tedy vytvořen základní objekt HaalaDatabaseBase, který zaštiťuje všechny společné vlastnosti a metody relačních databází založených na jazyku SQL. Důraz byl kladen na to, aby veškeré databázové operace šlo provádět univerzálně. Například byl k účelu databázových dotazů a příkazů UPDATE vytvořen objekt SqlFilter. Tento objekt umožňuje automatické vytváření podmínky WHERE k zadanému SQL dotazu. [9] Pro zakládání nových a úpravu stávajících záznamů v databázi pak slouží speciální metody Update a Insert, které mají na vstupu vždy celý řádek. Tento řádek by pak měl v ideálním případě kopírovat strukturu dané tabulky. Výhodné je proto vytvářet typové datasety s typovými tabulkami. Samozřejmě u typových datasetů je obvykle vhodné i vytvořit si tabulku se sloupci, které nepříslušejí k dané tabulce (např. dotažené sloupce textového popisu z číselníkových tabulek). Pro tento případ je v metodách Update a Insert možnost nastavit předponu názvu sloupce, který do tabulky nepatří, s tímto je pak také potřeba počítat při vytváření typové tabulky. Tímto mechanismem lze docílit toho, že není potřeba psát zvláštní příkazy INSERT a UPDATE pro každou tabulku a přitom je možné mít tento proces plně pod kontrolou, na rozdíl od různých automatizovaných napojení na databázi, které jsou dostupné pro Visual Studio. Kvůli rozdílnému způsobu napojení na databázi a několika dalším odlišnostem klasických a embedded databází bylo potřeba vytvořit poděděné databázové objekty pro daný typ. Následně byl vytvořen hlavní ovládací objekt HaalaDatabase, který slučuje potřebné metody a podle zadaného typu databázové stroje rozhoduje o jejich provedení. Objekty pro tvorbu podle MVVM Pro tvorbu aplikací podle vzoru Model-View-ViewModel je nezbytné připravit několik objektů tak, aby bylo možné správně propojit View s ViewModelem a ViewModel s Modelem. K tomu slouží především objekty s implementovaným rozhraním INotifyPropertyChanged, které umožňují hlásit změnu svých vlastností, a objekty implementující rozhraní ICommand, které mohou vystavovat sadu příkazů, které pak lze navázat ve View (UI). Dříve než bude uveden stručný popis těchto rozhraní, je potřeba zmínit vlastnost grafických prvků s názvem DataContext. Tato vlastnost nabízí možnost připojení datové struktury, v případě MVVM je to vrstva ViewModel. Pokud je DataContext elementu uveden, lze pak využít Binding navázání vlastnosti datového objektu na 37

38 vlastnost elementu uživatelského rozhraní. Činnost, kterou při provázání uskutečňujeme, se nazývá bindování. INotifyPropertyChanged je rozhraní, které objektu dovoluje upozornit klienta (volající UI element) na změnu vlastnosti. Toto rozhraní existuje již od.net verze 2.0, ale jeho pravý potenciál se podařilo naplnit až s příchodem WPF. Zde je totiž možno přímo propojit grafické elementy s daty, v našem případě tedy vlastnostmi ViewModelu. Na rozdíl od dřívějšího způsobu takového bindování využitého ve WinForms má právě ve WPF význam takový, že nejen vlastnost objektu má možnost upozornit na svou změnu příslušné grafické prvky, ale i naopak, to znamená, že v případě změny vlastnosti grafického elementu (typicky třeba formulářového pole) je automaticky provedena změna vlastnosti objektu. Ve WinForms bylo nutno nejprve odchytit správnou událost (např. změnu textu na textovém políčku) a teprve poté provést samotnou změnu vlastnosti objektu [10]. Implementace rozhraní INotifyPropertyChanged v základních objektech aplikace je znázorněna na obrázku 18. Obrázek 18: Hierarchie základních tříd implementujících INotifyPropertyChanged 38

39 Jako základní třída implementující toto rozhraní byla vytvořena NotifyObjectBase ve jmenném prostoru HaalaWpfUtilities. Jelikož se jedná o nejdůležitější třídu pro celou implementaci programu, je potřeba uvést její definici, která je v příkladu 1. public class NotifyObjectBase : INotifyPropertyChanged { /// <summary> /// Property changed event /// </summary> public event PropertyChangedEventHandler PropertyChanged; } /// <summary> /// Notify property change /// </summary> /// <param name="propertyname">property name</param> protected virtual void OnPropertyChanged(string propertyname) { PropertyChangedEventHandler handler = this.propertychanged; if (handler!= null) { var e = new PropertyChangedEventArgs(propertyName); handler(this, e); } } Příklad 1: Definice třídy NotifyObjectBase Program Domácí účetnictví obsahuje možnost vrácení (undo) a znovu provedení (redo) změn uskutečněných na jednotlivých objektech. Z hlediska programátora se jedná o objekty vrstvy Model. Proto bylo nutno vyvinout takový systém ohlašování změn, aby bylo možno tyto zachytávat, ukládat jejich historii a také je zpětně vyvolat (vrácení/znovu provedení změny). Za tímto účelem je vytvořena třída UndoableObject. Tato třída je potomkem NotifyObjectBase a umožňuje kromě vyhlášení změny vlastnosti ji také zaregistrovat do historie změn. Obsahuje totiž instanci třídy UndoRedoManager, která s historií pracuje poskytuje metody na vložení a odebrání prvku. Prvkem je myšlena informace o tom, která vlastnost kterého objektu byla změněna, tedy její starou a novou hodnotu. Tyto informace nese třída UndoableProperty, která také obsahuje nejzajímavější výkonné metody Undo a Redo, které provádějí požadované akce nad instancí objektu, jehož vlastnosti se to týká. Změna vlastností probíhá pomocí metody SetValue ze třídy PropertyInfo ze jmenného prostoru System.Reflection, jak je uvedeno v příkladu 2. 39

40 public void Undo() { m_oinstance.gettype().getproperty(m_spropertyname). SetValue(m_oInstance, m_ooldvalue, null); } Příklad 2: Nastavení vlastnosti pomocí System.Reflection Kvůli možnosti uložení jednotlivých entit byla vytvořena abstraktní třída SaveableObject, která je potomkem UndoableObject. Potomci třídy SaveableObject mají povinnost umožnit uložení objektu a také validace hodnot v ní uložených, protože implementuje níže popsané rozhraní IDataErrorInfo [11]. Napojení tohoto rozhraní na bindovaném objektu zaručí zobrazení případné chyby vstupu uživateli. Blíže o tomto rozhraní v souvislosti s validací uživatelských vstupů bude pojednáno v kapitole 4.4. ICommand je rozhraní, které má v terminologii MVVM význam hlavně pro propojení View a ViewModelu. Na množství akcí grafických prvků lze totiž navázat Commands (příkazy), pomocí nichž lze z objektu, který je připojen v DataContextu, vyvolat pomocí bindování uvedenou akci. Jako základní třída implementující rozhraní ICommand je vytvořena třída TransferCommand ve jmenném prostoru HaalaWpfUtilities. Využívá se na vrstvě ViewModel a pomáhá definici proveditelných akcí nad příslušným objektem. Všechny uživatelské interakce tak probíhají přes tuto třídu, případně její potomky. Toho lze dobře využít pro zachycení všech výjimek, které nastanou při provádění uživatelských akcí, jako jsou kliknutí na tlačítko. Proto vznikla třída HATransferCommand, která je právě potomkem TransferCommand a díky přetížení hlavní výkonné metody ICommand.Execute dojde k odchycení případné výjimky a k její obsluze. TransferCommand je tedy jednou z hlavních tříd celého řešení. Další velmi dobře využitelnou třídou ze systémových knihoven je generický seznam ObservableCollection<T>. Tato kolekce umožňuje sledovat její změny v případě přidání prvků, odebrání prvků nebo změny celého seznamu. Co však již tato třída neřeší, a z principu obecnosti ani nemůže, je situace, kdy dojde ke změně vlastnosti některého z jejích prvků. Proto jsem jako její rozšíření vytvořil ExtendedObservableCollection<T>, jejímiž prvky jsou objekty implementující rozhraní INotifyPropertyChanged. Rozšíření spočívá v tom, že se sledují změny vlastností na prvcích a na jejich základě je vyhlášena změna samotné kolekce. Tento 40

41 způsob dokáže velmi zjednodušit práci se seznamy na úrovni UI, které je potřeba občerstvit při jakékoliv změně jejich prvků. Této vlastnosti je využito například na seznamu dokladů, kdy při editaci dokladu dojde automaticky k občerstvení seznamu. Jako základ pro objekty pracující na vrstvě ViewModel je vytvořena třída ViewModelBase ve jmenném prostoru HomeAccountat.ViewModel. Tato třída dává možnost všem svým potomkům přistoupit do kontextu aplikace a také definuje důležité příkazy na zavření grafického elementu, se kterým se příslušný ViewModel spojen. Toto zavření je pak použito v rámci grafických prvků, které představují okna nebo záložky v prvku TabControl. Obecně takovéto ovládání grafických prvků může ve WPF s MVVM způsobit potíže, proto bude nyní rozepsáno, jaký postup byl při jeho implementaci zvolen. Jelikož způsoby zavírání grafických prvků jsou rozličné a Command lze navázat k libovolným akcím proveditelným z UI, musí se navázání provést obecně. Toho je docíleno vytvořením příkazu ve ViewModelu s názvem CloseCommand a vytvořením události RequestClose, která oznámí jeho zavření. CloseCommand pak vykoná vyvolání dané události, kterou lze odchytávat v libovolném místě, což se zpravidla děje v nadřízeném ViewModelu. Tam většinou dojde k tomu, že zavřený ViewModel je odebrán z kolekce zobrazených objektů, kolekce tuto změnu oznámí UI a to se překreslí již bez zavřeného elementu. Drobnou úpravou lze docílit i vrácení výsledku zavřeného okna (Ano, Ne, Zrušit atd.), stačí pouze rozšířit portfolio příkazů na ViewModelu o další, které představují právě dané akce. Dalším důležitým objektem je MainViewModel. Jak již jeho název napovídá, jedná se o hlavní ViewModel, který se používá pro hlavní okno aplikace. Obsahuje tedy velké množství proveditelných příkazů a povolení je provést. Jsou to ty, které lze vidět při startu aplikace. Tím ale v podstatě jeho práce končí, o další se pak starají již ViewModely ostatních objektů, jako jsou například InvoiceViewModel (faktury a doklady), InvoiceListViewModel (seznam faktur a dokladů), OfferSearchViewModel (hledání nabídek) a další. Mezi zajímavé příkazy patří již zmiňovaná možnost vrácení změn, možnost uložení aktuálně zobrazeného ViewModelu nebo přecházení mezi jednotlivými zobrazenými ViewModely pomocí historie procházení. 41

42 Ukládání souborů Aplikace umožňuje ukládat elektronické soubory na FTP. K tomu programově slouží třída HaalaFtp. Tu lze konfigurovat pro připojení na libovolný FTP server a je možno se připojovat i pomocí jména a hesla. Samotné ukládání je řešeno pomocí třídy System.Net.FtpWebRequest. Soubory jsou na server ukládány pod unikátními názvy, které jsou generovány pomocí třídy Guid. Tyto názvy jsou uloženy do databáze a následně je možno odkazem na ně soubor stáhnout zpět na klienta. Soubory lze v základní verzi programu vkládat k objektům faktura, nabídka a zakázka, ale lze je vkládat v podstatě k libovolné entitě, která je uvedena v databázové číselníkové tabulce Entity. Na přání zákazníka tak lze velmi snadno aplikaci obohatit o uložení souboru například k subjektu nebo k dalším entitám. Objekt na vrstvě MVVM Model, který může takto k sobě soubory ukládat, lze velmi jednoduše upravit tak, že bude implementovat rozhraní ICanContainFiles, a bude moci tuto vlastnost používat, jelikož hlavní MainViewModel ukládá soubory právě přes metody tohoto rozhraní. Rozpoznání textu pomocí OCR Jednou z nejzajímavějších a nejpokročilejších funkcí programu je rozpoznání textu pomocí OCR nástroje Tesseract. Ten jako takový je velmi vyspělý s rozšířenou komunitou vývojářů a uživatelů. Navíc disponuje rozhraním pro spouštění přes příkazový řádek a samotné jeho napojení v programu je tak jednoduché. Ukázka příkazu, kterým lze provést OCR nad obrázkem, je uveden v příkladu 3. Tesseract.exe vstupni_obrazek.png vystupni_hocr l ces hocr Příklad 3: Příkaz pro spuštění rozpoznání znaků pomocí Tesseract OCR V této ukázce je nad vstupním souborem vstupni_obrazek.png provedeno OCR, parametrem l je řečeno, že jazykem dokumentu je čeština (hodnota ces) a výstupem je formát hocr do souboru vystupni_hocr. Aby bylo dosaženo co možná nejlepších výsledků, je potřeba mít zdrojový obrázek v rozlišení alespoň 300 DPI. Pokročilejší komerční OCR nástroje umí pracovat i s horší kvalitou oskenovaného textu, Tesseract bohužel zatím ne. Samozřejmě je také vhodné 42

43 pro skenování používat co nejlepší možný skener, například ruční varianta rozhodně není dobrou volbou. Výstup a zpracování výsledků se však ukázaly mnohem obtížnějšími, přesně podle předpokladů z počáteční analýzy této práce. Výstup OCR Jako výstup z Tesseract byl zvolen obecný formát hocr. Jedná se o soubor formátu HTML, který popisuje, jaké znaky a na jakých pozicích v dokumentu byly nalezeny. Úryvek z takového souboru je uveden v příkladu 4. <div class='ocr_carea' id='block_12_12' title="bbox "> <p class='ocr_par' dir='ltr' id='par_17' title="bbox "> <span class='ocr_line' id='line_27' title="bbox "><span class='ocrx_word' id='word_74' title="bbox ">Rozpoznáno</span> </span> </p> </div> Příklad 4: Ukázka části souboru V ukázce jsou uvedeny hlavní informace, které může hocr poskytnout. V Př. 4 je potřeba se zaměřit především na element span, který má vlastnost class na hodnotu ocrx_word. Tento element nese informace o rozpoznaném slovu. Údaj zapsaný ve vlastnosti title pak udává, v jakém umístění se slovo nachází. Umístění je v hocr dáno pomocí bboxů, které jsou popsány dvěma body [12], viz obrázek 19. Obrázek 19: Specifikace bbox v hocr 43

44 Již zpracování takového výstupu není triviální záležitostí, proto byla vytvořena třída na jeho zpracování s názvem HOCRParser ve jmenném prostoru HaalaUtilities. Ta má za úkol rozebrat HTML kód a vytvořit z něj datovou strukturu. Za účelem práce s HTML je využito knihovny HtmlAgilityPack.dll, která je licencována pod Microsoft Public License (Ms-PL), je tedy povoleno i její komerční použití. Z datové struktury jsou pak nejzajímavější právě objekty BBox. Z výsledných objektů je pak vytvořena mozaika z rozpoznaného textu, která je umístěna na obrázek originální oskenované faktury k nahlédnutí uživateli. Z tohoto obrázku si pak může jednoduše tažením myší přetáhnout potřebné položky do formulářových polí. Rozbor výstupu V momentu, kdy je doklad oskenován, provedeno rozpoznání znaků a jeho výsledek je uložen v datových strukturách, nastává snad ještě složitější úkol je potřeba ze získaných dat zpětně sestavit doklad a uložit ho do databáze. Jak již bylo rozebráno v analýze v kapitole 3.2, možnost automatického sestavení dokladu je velmi složitá a časově náročná práce, vyžaduje analýzu mnoha druhů faktur a podrobné testování. Ani tak nikdy nebude možné 100% zaručit, že získaná data jsou správná a budou potřebovat kontrolu od uživatele. Proto v současném stavu projektu Domácí účetnictví není přikročeno k plné automatizaci, ale je uživateli poskytnuta alespoň částečná pomoc v podobě možnosti přetažení dat z oskenovaného dokladu do formuláře. Vedle formuláře dokladu je zobrazen vytažený text a po najetí myší se uživateli zobrazí slova, které lze přetáhnout na formulář. Způsob této práce je vyznačen na obrázku

45 Obrázek 20: Přetažení OCR textu do formuláře Automatické skenování Uživateli je umožněno nejen vložení faktury z obrázku, ale také automatizovaně přes skener, který se obsluhuje přímo z kódu. To je výhodné z toho pohledu, že je možné nastavit možnosti skenování (např. DPI) tak, aby bylo možno kvalitně rozebrat vzniklý obrázek pomocí OCR nástroje. Přístup ke skenovacímu zařízení probíhá přes Windows obecné rozhraní pro obrazová vstupně-výstupní zařízení (skenery, kamery) s názvem Windows Image Acquisition (WIA). Toto rozhraní obsahuje sadu několika metod, pomocí kterých lze ovládat ta zařízení, která jsou s WIA kompatibilní. Přistupovat k těmto metodám lze po přídání odkazu (reference) ve Visual Studiu na knihovnu COM s názvem Microsoft Windows Image Acquisition Library v2.0. [13] Důležitá je především metoda set_value(ref object pvresult) na instanci objektu WIA.Property, která umožňuje nastavení libovolné hodnoty požadovaného nastavení skeneru. Využil jsem hlavně vlastností, které zásadním způsobem ovlivňují kvalitu výsledku DPI, světlost, kontrast a barevný mód. 45

46 Tvorba PDF Pro vytváření PDF z dokladů, nabídek a potenciálně z libovolných entit byl vybrán nástroj itextsharp. Ten umožňuje tvorbu PDF jak ve zjednodušené podobě (postupné vkládání textu po řádcích), tak také v o něco složitější, která však disponuje pokročilejšími možnostmi psaní a úprav PDF (přesné pozicování textu). Aby bylo možno mít v kódu téměř vše plně pod kontrolou, byla vybrána druhá možnost. Ta obsahuje použití třídy PdfContentByte [14]. Funkčnost pro tvorbu PDF je zapracována ve třídě HaalaPdfWriter ve jmenném prostoru Haala.Utilities. Ukázka hlavní metody, která zapíše libovolný text s použitím zvoleného fontu na určenou pozici je v příkladu 5. public static void WriteText(PdfContentByte cb, string text, int x, int y, BaseFont font, int size) { cb.setfontandsize(font, size); cb.showtextaligned(pdfcontentbyte.align_left, text, x, y, 0); } Příklad 5: Metoda pro vložení textu do PDF pomocí PdfContentByte Do budoucna by mohla být do programu zapracována možnost tvorby PDF podle sestav, tedy například jiného PDF pro doklady přiřazené k zakázce A a jiného PDF přiřazeného k zakázce B. Zřejmě by šlo využít i jakéhosi návrháře sestav pomocí ovládacího prvku, kde by bylo možno přesouvat jednotlivá pole (odběratel, dodavatel, položky atd.). Jejich pozice by se následně ukládala do databáze. Tisk z aplikace Tisk vybrané entity probíhá tak, že je z ní nejprve vytvořeno PDF a to je odesláno na výchozí tiskárnu. Toto by se dalo realizovat i napřímo bez tvorby dočasného PDF, ale tento způsob byl zvolen proto, že bude společný a exportované PDF bude stejné jako vytištěný dokument. Tisk bude proveden pomocí výchozí tiskárny a jejího výchozího nastavení, odpadne tedy další uživatelská interakce při výběru tiskárny, nastavení tisku atd. Celá akce je provedena vytvořením procesu (System.Diagnostics.Process) tak, aby byl systému předán požadavek na tisk (je potřeba nastavit vlastnost Verb v ProcessStartInfo na 46

47 hodnotu print ). Systém sám dohledá aplikaci, která je k danému souboru uvedena jako možnost pro tisk a provede vytisknutí pomocí výchozí tiskárny. Vyhledávání v datech aplikace V aplikaci je uživateli umožněno hledání dokladů, faktur, nabídek a zakázek na základě předdefinovaných možností filtrování. Tento systém filtrování je psán obecně pro celou aplikaci, je možno přidávat další předdefinované filtry pouhými databázovými příkazy, není tedy potřeba měnit kód aplikace. Je tedy zřejmé, že hlavní částí vyhledávání je databáze, popis příslušných entit je v kapitole 3.3. Ve View pak proběhne samotné zobrazení filtrů, které je díky databázovému návrhu jednotné je vytvořen pouze jeden grafický prvek - SearchControl, který obsluhuje filtrování pro všechny entity. Nutné je pouze vytvořit příslušný ViewModel (pro hledání faktury, hledání nabídky atd.). Na základě jeho typu se pomocí nastaveného DataTemplate rozhodne, že se zobrazí prvek SearchControl. SearchControl umožňuje jak práci s filtry (jejich přidávání, úpravu a odebírání), tak také práci se šablonami uložených filtrů, jak lze vidět na obrázku 21. Obrázek 21: Dynamické filtrování ViewModel musí prvku SearchControl poskytnout sadu přednastavených filtrů z databázové tabulky Filtry. Ten pak sám rozhoduje, jaké operátory bude zobrazovat pro jednotlivé definované filtry. 4.4 Grafické rozhraní V této kapitole bude na několika příkladech ukázáno, jak probíhá praktický vývoj aplikací ve WPF s dodržením MVVM. Budou odhaleny výhody a nevýhody takového řešení. Při navazování vrstvy View na ViewModel nebylo použito žádného toolkitu proto, aby bylo možno pracovat s čistým kódem a všechny vlastnosti programování na 47

48 platformě WPF podle MVVM se tak mohly řádně vyzkoušet. Uživatelské rozhraní je zpracováno podle návrhu z kapitoly 3.4. Přihlašovací okno Přihlašovací okno, podobně jako ostatní okna, která je nutno z aplikace WPF psané podle vzoru MVVM otevírat, je dobrým příkladem, jak striktní dodržení tohoto principu může být mnohdy nepraktické a dokonce až na obtíž. Podle MVVM totiž nelze vytvářet instance okna přímo ve ViewModelu ViewModel by se měl starat pouze o vytváření dalších ViewModelů. Nejdříve je ukázáno v příkladu 6, jak lze otevřít okno jednoduše ve WinForms včetně získání jeho výsledku. LoginForm l_oform = new LoginForm(l_oCols); if (l_oform.showdialog() == DialogResult.OK) { } Příklad 6: Otevření okna ve WinForms Nyní je uvedeno, jak je řešeno v projektu Domácí účetnictví při maximální snaze dodržet principy MVVM. Složitost tohoto řešení oproti výše uvedeným dvěma řádkům kódu pro vytvoření okna ve WinForms dokazuje, že obecně práce s okny ve WPF ve spojitosti s MVVM není snadnou záležitostí. Jednak je použit speciální příkaz (Command) pro otevření okna. Příkaz je v programu vytvořen jako třída OpenWindowCommand<T> (potomek TransferCommand) ve jmenném prostoru HaalaWpfUtilities. Tento příkaz umožňuje dynamické vytvoření okna (jeho typ je T) na základě předání příslušného WindowViewModelu. WindowViewModel je třída, která poskytuje základ pro všechny ViewModely, které mají představovat okna. Mimo jiné obsahuje několik událostí, které simulují výstupní hodnoty oken, tak jak je známe z WinForms zavření okna, stisknutí Ok, Ne a Zrušit. Právě událost zavření okna musí být odchycena v OpenWindowCommand<T>, aby bylo možné dynamicky vytvořené okno na základě WindowViewModelu zavřít. Toto řešení je vhodné i pro jiná okna, která jsou plně závislá na svém ViewModelu. Okno přihlášení je ještě specifičtější v tom, že v době jeho vytváření neexistuje zatím žádné jiné rodičovské okno (není vykresleno) a dostupný je tak pouze nadřízený ViewModel. Jiné řešení než výše uvedené se tedy nenabízí. 48

49 Další zajímavou vlastností okna pro přihlášení je zobrazení textu v políčku, které nabádá uživatele zadat hodnotu do tohoto políčka. Takovému textu se říká watermark. Jeho využití v přihlašovacím dialogu je na obrázku 22. Obrázek 22: Přihlašovací dialog Požadovaného výsledku je dosaženo využitím dvojice textových polí, jednoho pro zobrazení watermark a druhého pro vlastní uživatelský vstup, přičemž oba vzájemně interagují pomocí vícenásobného bindingu. Na jeho základě se skrývá nebo zobrazuje políčko s watermark. Tento postup je v příkladu 7. <Grid Grid.Row="2" Background="{StaticResource brushwatermarkbackground}" Style="{StaticResource EntryFieldStyle}" > <TextBlock Margin="5,2" Text="Zadejte jméno uživatele" Foreground="{StaticResource brushwatermarkforeground}" > <TextBlock.Visibility> <MultiBinding Converter="{StaticResource TextInputToVisibilityConverter}"> <Binding ElementName="txtUser" Path="Text.IsEmpty" /> <Binding ElementName="txtUser" Path="IsFocused" /> </MultiBinding> </TextBlock.Visibility> </TextBlock> <TextBox Name="txtUser" Text="{Binding Login, UpdateSourceTrigger=PropertyChanged}" Background="Transparent" BorderBrush="{StaticResource brushwatermarkborder}" /> </Grid> Příklad 7: Zobrazení watermark 49

50 Prvek pro zobrazení OCR Postup zobrazování jednotlivých ViewModelů v rámci programu Domácí účetnictví a také ve většině WPF aplikací lze dobře demonstrovat na prvku pro zobrazení textu získaného pomocí OCR. V podstatě se využívá jakéhosi mapování ViewModelu na View. Toho lze docílit velmi snadno použitím DataTemplate. Nejprve je v příklad 8 uvedeno, jak lze takové mapování napsat. <DataTemplate DataType="{x:Type hocr:hword}" > <vw:dragthumb Canvas.Left="{Binding BBox.Left}" Canvas.Top="{Binding BBox.Top}" Width="{Binding BBox.Width}" Height="{Binding BBox.Height}" Tag="{Binding Text}">... </DataTemplate> Příklad 8: Zápis mapování objektu pomocí DataTemplate Tento zápis v podstatě říká, že kdykoliv se objeví bindovaný objekt hword ze jmenného prostoru hocr, je v UI zobrazen v podobě prvku DragThumb. V implementaci prvku pro zobrazení OCR textu je využito jedné ze základních grafických komponent WPF s názvem ItemsControl, která umožnuje zobrazovat libovolné prvky. Celý zápis zobrazení OCR textu je v příkladu 9. <Grid> <Image Source="{Binding SourceImagePath}" Stretch="Fill" Width="{Binding PictureWidth}" Height="{Binding PictureHeight}"/> <ItemsControl ItemsSource="{Binding HWords}" Panel.ZIndex="0" Opacity="50"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Canvas /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemContainerStyle> <Style> <Setter Property="Canvas.Left" Value="{Binding BBox.Left}"/> <Setter Property="Canvas.Top" Value="{Binding BBox.Top}"/> </Style> </ItemsControl.ItemContainerStyle> </ItemsControl> </Grid> Příklad 9: Konstrukce pro zobrazení OCR textu 50

51 Jako podklad je použit originální obrázek, aby se uživatel mohl lépe orientovat. Poté v podstatě stačí uvést, jaké prvky se budou zobrazovat, v našem případě to jsou HWords. Jako kontejner pro prvky je zvolen Canvas, který umožní zobrazení prvků na zvolených pozicích pomocí bindování, zde na BBox.Left a BBox.Top. Ostatní už obstará právě DataTemplate, jehož výseč je v Příklad 8. Pro ViewModely hword vytvoří odpovídající grafické zobrazení, tedy prvek s možností přetažení myší. Výsledná podoba komponenty pro zobrazení OCR nad originálním obrázkem je na obrázku 14. V momentě, kdy je kód DataTemplate zapsán v globálním souboru se zdroji aplikace (standardně GlobalResources.resx), bude stejný ViewModel zobrazen stejně ve všech částech aplikace. Validace uživatelského vstupu Velmi důležitým prvkem každé aplikace je validace (kontrola) uživatelského vstupu. Ideálně by měl být uživatel informován okamžitě při každém zadání slova nebo kliknutím myši v případě, že provádí něco nestandardního nebo nesprávného. V aplikaci Domácí účetnictví je pro každý objekt, u kterého je vyžadována validace správnosti v něm uložených dat, naimplementováno rozhraní IDataErrorInfo ze jmenného prostoru System.ComponentModel. To zaručí propojení mezi View a příslušným ViewModel, který obaluje daný datový Model. K tomu slouží nastavení vlastnosti bindování s názvem ValidatesOnDataErrors na hodnotu True. Společně s nastavením další vlastnosti UpdateSourceTrigger na hodnotu PropertyChanged se zajístí, že Binding bude sledovat hodnotu vlastnosti Error, která náleží rozhraní IDataErrorInfo. Dále už záleží pouze na způsobu zobrazení. V programu je globálně použito ikony červeného kruhu s vykřičníkem, na kterém lze zobrazit nápovědu, viz obrázek 23. Obrázek 23: Validace uživatelského vstupu 51

52 5 Návrh na další rozvoj aplikace Kromě již uvedených funkcionalit je samozřejmě v aplikaci prostor pro její další rozvoj. V této kapitole je uveden seznam možností dalšího vývoje funkcí, které nebyly obsahem této práce, ale uživatel pro ně však jistě najde uplatnění. Dotažení procesu automatizace zadávání Jak již bylo popsáno v kapitole 4.3.4, celý proces rozpoznání textu z oskenovaných dokladů je složitý a zatím není dokončen. Zbývá doplnit automatické přiřazení textu rozpoznaného pomocí OCR nástroje do příslušných formulářových polí tak, aby uživatel nemusel nic přepisovat ani kopírovat. Tato vlastnost je z hlediska pracnosti nevíce náročná, nicméně v projektu je již pro tuto funkci připravena vlastní větev kódu. Vytvoření systému webových služeb a mobilní aplikace V plánu rozvoje aplikace je vytvoření webových služeb operujících nad databázi. Bude tak možno vyrobit další modul aplikace například jako webovou stránku (nahlížení do databáze, online vytvoření nabídky a další) nebo jako aplikaci pro mobilní platformy (např. Android), která by umožnila např. zadání faktury do databáze pomocí internetu, kde by stačilo například dokument pouze nafotit mobilním telefonem a odeslat, příslušná data by se rozebrala pomocí OCR sama a uložila do databáze. Nebo by se uložil pouze elektronický soubor, který by byl pak určen k dalšímu zpracování, uživatel by mohl být pak případně upozorněn, že ještě nebyl zpracován. Sama aplikace pro mobilní telefon by pak mohla být vytvořena pro nejpoužívanější operační systém Android. Kromě ofocení a odeslání dokladu by pak měla umět i jejich dohledání z databáze na serveru a také zobrazení přímo v mobilním telefonu. Systém automatických aktualizací Vzhledem k možnému rozšíření aplikace mezi větší množství uživatelů je potřeba zpracovat systém automatických aktualizací aplikace tak, aby bylo možno aplikaci v případě chyb nebo změn (autorských, legislativních a dalších) snadno aktualizovat z internetu. To by vyžadovalo vytvoření serveru přístupného z internetu a také kontroly ze strany aplikace, zda neexistují nové aktualizace. 52

53 Historie provedených akcí Jelikož se jedná o aplikaci účetního charakteru, bylo by vhodné do budoucna doplnit i ukládání historie všech provedených databázových akcí. Pro to by byla určena tabulka Historie, která je navržena tak, aby bylo možno zrekonstruovat jednotlivé operace a vrátit je zpět ať už automaticky programově nebo ručním zásahem uživatele či administrátora. Navíc tato historizace je jakési krytí uživatele i výrobce software před případnými stížnostmi, např. na ztrátu dat a podobně. Plnění historie by mohlo být prováděno jak aplikační logikou na úrovni kódu v.net tak také pomocí uložených procedura na úrovni samotné databáze. Napojení na externí systémy Zajímavou funkcí by mohlo být i napojení na externí systémy, některými z nich mohou být i konkurenční produkty popsané v kapitole 2.1. Napojení by bylo vhodné jak pro export, tak pro import dat. Ten by mohl probíhat například pomocí webových služeb nebo výměnou dat přes datové soubory (například.csv,.xls nebo.isdoc). 53

54 6 Závěr V této práci je zpracována analýza současného stavu na trhu. Tyto poznatky jsou konfrontovány s požadavky klienta na funkce a možnosti. Výsledným verdiktem je pak shoda na vytvoření nové aplikace. Na tomto základě je pak přistoupeno k návrhu budoucího programu. Požadavky zadavatele sice mohou na první pohled působit jednoduše, přesto několik z nich představuje komplexnější a složité řešení. Například návrh grafického rozhraní je úkol, se kterým se mnohdy neúspěšně potýkají i největší výrobci v oblasti software. Dalším problémem je maximalizace automatizace všech úkonů uživatele. Většiny lze poměrně dobře docílit vhodným návrhem báze dat a algoritmů. Zamýšleným prvkem automatizace procesů je však i optické rozpoznání znaků v oskenovaném dokumentu, což ani zdaleka není lehký úkol, který sám o sobě překračuje i meze bakalářské práce. Vytvořená aplikace se snaží o splnění těchto cílů v maximální možné míře. Až na dotažení procesu plné automatizace evidence již existujících dokladů jsou zapracovány. Na aplikaci podobného typu je její uživatelské rozhraní funkční a přehledné, subjektivně i intuitivní, i když nelze předpokládat téměř u žádného software, že každý jeho uživatel bude schopen s ním pracovat bez alespoň základního proškolení nebo manuálu. Kladen je důraz na co možná nejmenší složitost prováděných operací tak, aby uživatel nebyl zatěžován požadavky ze strany programu potvrzování dialogů, různá nastavení a práce byla rutinní (což se u evidence dokladů očekává). V programu je nejvíce viditelná právě ta funkčnost, u které se předpokládá, že se ji uživatel chystá provést (toto bylo nastaveno na základě požadavku zadavatele). Vývoj programu Domácí účetnictví pak splnil i učební proniknutí do světa WPF a MVVM. Dle mého názoru je WPF nejzajímavější technologií pro vývoj grafických desktop aplikací, pokud se uváží rychlost vývoje a výsledný vzhled. Vzor MVVM je pak dobrou volbou převážně pro projekty, do kterých lze zapojit také grafické pracovníky s alespoň částečnou znalostí značkovacích jazyků. Pak je vhodné striktně odpojit grafické prvky od aplikační logiky. Své uplatnění však tento způsob návrhu najde jistě i u menších projektů. Proto lze WPF v kombinací s MVVM doporučit všem programátorům desktop aplikací. 54

55 Seznam použité literatury [1] KOSSE, Tim. FileZilla: The free FTP solution. FileZilla: The free FTP solution [online] [cit ]. Dostupné z: [2] Tesseract-ocr: An OCR Engine that was developed at HP Labs between 1985 and and now at Google. TESSERACT-OCR. Tesseract-ocr: An OCR Engine that was developed at HP Labs between 1985 and and now at Google. [online] [cit ]. Dostupné z: [3] HERCEG, Tomáš. DOTNETPORTAL.CZ: úvod do.net frameworku [online] [cit ]. Dostupné z: [4] NASH, Trey. C# 2010 Rychlý průvodce novinkami a nejlepšími postupy. 1. vydání. Brno: Computer Press, a. s., ISBN [5] SharePoint &.NET Blogs: NET Framework Overview. BIJU, Joseph. SharePoint &.NET Blogs [online]. Bangalore, India, 2013, [cit ]. Dostupné z: Overview.aspx [6] SUR, Abhishek. WPF Tutorial: Beginning. In: CODEPROJECT [online]. 2010, [cit ]. Dostupné z: /Articles/140611/WPF-Tutorial-Beginning [7] Microsoft: Download Center. MICROSOFT. Microsoft: Download Center [online] [cit ]. Dostupné z: details.aspx?id=17876 [8] IXTENT: OCR/ICR. IXTENT S.R.O. IXTENT [online] [cit ]. Dostupné z: [9] AGARWAL, V. HUDDLESTON, J.. Databáze v C# 2008 Průvodce programátora. 1. vydání. Brno: Computer Press, a. s., ISBN

56 [10] PETZOLD, Charles. Mistrovství ve Windows Presentation Foundation. Computer Press, a. s., ISBN [11] SHARP, John. Microsoft Visual C# 2008 Krok za krokem. 1. vydání. Brno: Computer Press, a. s., ISBN [12] BREUEL, Thomas. The hocr Embedded OCR Workflow and Output Format. The hocr Embedded OCR Workflow and Output Format [13] Windows Image Acquisition (WIA). MICROSOFT. Windows Image Acquisition (WIA) [online] [cit ]. Dostupné z: [14] Creating PDF documents with itextsharp. KOCH, Thomas Michael. Creating PDF documents with itextsharp [online] [cit ]. Dostupné z: 56

57 Seznam obrázků Obrázek 1: Ukázka z programu Duel Obrázek 2: Ukázka z programu Samostatná fakturace Obrázek 3: Návrh podoby nové aplikace Obrázek 4: Proces automatizace zadávání dokladů Obrázek 5: Výstup z programu v podobě PDF Obrázek 6: Struktura hlavního okna Obrázek 7: Rozšířený rámec aplikace Obrázek 8: Pás karet Obrázek 9: Ukázka skrytí nadbytečné akce Obrázek 10: Pracovní plocha Obrázek 11: Architektura.NET Obrázek 12: Architektura WPF Obrázek 13: Návrhový vzor MVVM Obrázek 14: Architektura Client Interface - Server Obrázek 15: Proces OCR Obrázek 16: Ukázka z programu instalátoru Obrázek 17: Hierarchie tříd databázového objektu Obrázek 18: Hierarchie základních tříd implementujících INotifyPropertyChanged Obrázek 19: Specifikace bbox v hocr Obrázek 20: Přetažení OCR textu do formuláře Obrázek 21: Dynamické filtrování Obrázek 22: Přihlašovací dialog Obrázek 23: Validace uživatelského vstupu

58 Seznam použitých zkratek ADO.NET CIS CLR CLS COM DPI DPH FTP GDI GUI MSIL MVVM OCR PDF SQL UI WIA WPF XAML XML ActiveX Data Object pro.net - skládá se z objektů COM pro přístup k datovým zdrojům Architektura Client Interface - Server Common Language Runtime běhové prostředí pro.net aplikace Common Language Specification sada pravidel pro jazyky Component Object Model rozhraní Windows pro komunikaci mezi procesy a napříč programovacími jazyky Dots per inch hustota rozložení pixelů na velikost jednoho palce Daň z přidané hodnoty File Transfer Protocol protokol pro přenos souborů mezi počítači Graphics Device Interface Microsoft komponenta pro zobrazování grafických objektů Graphical User Interface - grafické uživatelské rozhraní Microsoft Intermediate Language přechodový jazyk.net aplikací Model-View-ViewModel návrhový vzor pro tvorbu aplikací Optical Character Recognition metoda optického rozpoznání znaků Portable Document Format přenosný formát souboru Structured Query Language strukturovaný dotazovací jazyk pro práci s daty v relačních databázích User Interface - Uživatelské rozhraní Windows Image Acquisition rozhraní pro práci se vstupními zařízeními jako skener, fotoaparát a další Windows Presentation Foundation grafický subsystém.net Framework Extensible Application Markup Language značkovací jazyk využívaný pro tvorbu aplikací ve Windows Presentation Foundation Extensible Markup Language obecný značkovací jazyk 58

59 Seznam příkladů Příklad 1: Definice třídy NotifyObjectBase Příklad 2: Nastavení vlastnosti pomocí System.Reflection Příklad 3: Příkaz pro spuštění rozpoznání znaků pomocí Tesseract OCR Příklad 4: Ukázka části souboru Příklad 5: Metoda pro vložení textu do PDF pomocí PdfContentByte Příklad 6: Otevření okna ve WinForms Příklad 7: Zobrazení watermark Příklad 8: Zápis mapování objektu pomocí DataTemplate Příklad 9: Konstrukce pro zobrazení OCR textu

60 Přílohy 1 ER diagram Na přiloženém listu se nachází ER diagram databáze. 60

61 2 Přiložené CD Na přiloženém médiu se nachází instalátor aplikace ve složce install. Ve složce dokumentace se pak nachází tento dokument ve formě PDF a složka s projektem aplikace. 61

62 3 Manuál aplikace Instalace Program Domácí účetnictví lze nainstalovat na systém Windows verze XP a vyšší. Instalaci lze spustit pomocí souboru Domaci-ucetnictvi_setup.exe. Instalace probíhá pomocí průvodce a jsou nainstalovány všechny potřebné komponenty. Obecné postupy Nápověda Pro každou proveditelnou akci lze v aplikaci zobrazit nápovědu pomocí přidržením ukazatele myši nad příslušným tlačítkem, které akci znázorňuje. Nápověda se pak zobrazí ve formě jednoduchého textu viz Obrázek 1. Obrázek 1 - Jednoduchá nápověda Prvky pásu karet pak obsahují obsáhlejší nápovědy, jak je předvedeno na Obrázek 2. Hlavní okno Obrázek 2 - Obsáhlejší nápověda Hlavní okno aplikace lze rozdělit do 3 částí podle Obrázek 3. 62

63 Obrázek 3 - rozložení hlavního okna aplikace Rychlé volby Toto pole obsahuje tlačítka pro následující akce: - přejít na předchozí otevřenou záložku - přejít na další záložku - uložit aktuální záznam tato akce je platná pro všechny záznamy a seznamy, které lze uložit, napříč celou aplikací - vrácení provedené změny v rámci aktuálního záznamu - opětovné provedení vrácené změny v rámci aktuálního záznamu Agendy Jedná se o pás karet, které představují jednotlivé obsluhované agendy Doklady, Zakázky, Nabídky a Administrace. Mezi jednotlivými kartami lze přepínat kliknutím na záhlaví karty. Pole Agendy dále obsahuje hlavní akční tlačítko, pomocí kterého lze vyvolat akce Nový, Otevřít, Uložit jako a také spravovat možnosti aplikace. Část Agendy obsahuje také pole pro rychlé hledání, které umožňuje jednoduše vyhledat jednotlivé položky (doklady, nabídky, zakázky a další) podle zadaného textu. Hledání se spustí stiskem tlačítka. Další položkou v části Agendy je tlačítko, které vyvolá nápovědu k programu. 63

64 Pracovní plocha Nejdůležitějším prvkem hlavního okna je část Pracovní plocha. Zde se zobrazují jednotlivé otevřené seznamy i jednotlivé doklady, nabídky a tak dále. Veškerá práce uživatele se tedy odehrává právě v těchto místech. Na Obr. 2 je vidět stav pracovní plochy při stisku tlačítka pro vytvoření nové faktury. Obrázek 4 - Stav části Pracovní plocha po stisku tlačítka Nový Agendy Tato část aplikace obsahuje rozličné akce, které lze v aplikaci provádět. Obsahuje níže uvedený výčet záložek. Domů obsahuje akce pro přímé vložení faktur do aplikace, a to buď rovnou ze skenovacího zařízení, nebo ze skenovaného obrázku. Dále obsahuje volby pro zálohu databázového souboru a import a export dat ze systémů třetí strany. Doklady umožňuje správu daňových dokladů a faktur. Doklady a faktury lze zobrazit v seznamu, vyhledávat nebo vytvářet nové a evidovat již existující. Detail dokladu nebo faktury lze zobrazit v nové záložce dvojklikem na příslušný řádek v seznamu. 64

65 Zakázky umožňuje správu zakázek. Zakázky lze zobrazit v seznamu, vyhledávat, zakládat nové nebo editovat již existující záznamy. Detail zakázky lze zobrazit v nové záložce dvojklikem na příslušný řádek v seznamu. Nabídky umožňuje správu nabídek. Nabídky lze zobrazit v seznamu, vyhledávat, zakládat nové nebo editovat již existující záznamy. Detail nabídky lze zobrazit v nové záložce dvojklikem na příslušný řádek v seznamu. Administrace tato záložka umožňuje správu číselníků použitých v aplikaci. Jedná se o číselníky Subjekty, Výrobci, Zboží a Druhy zboží. Lze zakládat nové záznamy a editovat již existující. Aktuální dokument tato záložka je zobrazena pouze v případě, že je na pracovní ploše zobrazen některý z objektů Faktura, Nabídka nebo Zakázka. Tato karta pak obsahuje funkčnosti, které jsou daným objektů společné. Jedná se o možnost vložení elektronického souboru přílohy k aktuálnímu objektu, možnost uložení ve formátu PDF, uložení provedených změn do databáze, tisk pomocí výchozí tiskárny, odeslání aktuální ve formě PDF přes , smazání záznamu z databáze a uložení jako šablony (předlohy) pro jeho použití při vytváření nových objektů. Aktuální seznam - tato záložka je zobrazena pouze v případě, že je na pracovní ploše zobrazen některý z objektů seznamů například seznam faktur, nabídek, zakázek atd. Obsahuje volby pro občerstvení (opětovné načtení) seznamu, uložení změněných hodnot do databáze, možnost uložení ve formátu PDF a možnost tisku přes výchozí tiskárnu. Seznamy V aplikaci se vyskytují dva níže uvedené typy seznamů. Needitovatelný tento seznam slouží pouze pro zobrazení položek, například uložených nabídek. U těchto položek pak lze otevřít jejich detail pomocí dvojkliku na řádek. Tento detail se otevře v nové záložce, pokud je však již na některé záložce pracovní plochy otevřen, provede se přesun na tuto záložku. Hodnoty položek nelze měnit. 65

66 Obrázek 5 - Needitovatelný seznam Editovatelný tento typ seznamu se vyskytuje například v detailu faktury, kde slouží pro zaznamenání položek faktury. Přes tento seznam nelze zobrazovat detail položky, ale lze měnit jednotlivé položky. To lze provést kliknutím do políčka. Tento seznam vždy obsahuje prázdný poslední řádek, který slouží pro zadání nového záznamu. Obrázek 6 - Editovatelný seznam během editace Detail Detail je karta některého z objektů typ Faktura, Doklad, Nabídka nebo Zakázka. Slouží jako formulář, do kterého se vyplňují jednotlivé položky. Během editace detailu dochází ke kontrole vstupních dat a v případě nesrovnalostí je o nich uživatel informován pomocí výstražné ikony. Pod touto ikonou se skrývá ještě jednoduchá nápověda viz Obrázek 7. Obrázek 7 - Kontrola vstupních dat 66

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework úvod, historie, základy.net framework, programovací jazyky, vývojové prostředky Úvod strana 2 Cíl předmětu Seznámit se s vývojem aplikací

Více

Architektura. Vedení sesterské dokumentace

Architektura. Vedení sesterské dokumentace Architektura Tým Lorem Ipsum Verze 1.1 29.3.2015 Obsah 1 Kontext...3 1.1 Cíle projektu...3 2 Technologie...3 2.1 Zvolená alternativa tvorby GUI...3 3 Datové schéma...4 4 Navržená architektura...5 4.1 Fyzický

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Vytváření a evidence smluv. 2012 Petr Čulík

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Vytváření a evidence smluv. 2012 Petr Čulík PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE Vytváření a evidence smluv 2012 Petr Čulík Anotace Aplikace slouží uživateli jako nástroj pro vytváření a evidenci jednorázových,

Více

Office 2007 Styles Autor: Jakub Oppelt Vedoucí práce: Ing. Václav Novák, CSc. Školní rok: 2009 10

Office 2007 Styles Autor: Jakub Oppelt Vedoucí práce: Ing. Václav Novák, CSc. Školní rok: 2009 10 Office 2007 Styles Autor: Jakub Oppelt Vedoucí práce: Ing. Václav Novák, CSc. Školní rok: 2009 10 Abstrakt Tato práce se zabývá novým grafickým uživatelským rozhraním, který se objevil s nástupem Microsoft

Více

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Informační systém realitní kanceláře Jan Šimůnek

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Informační systém realitní kanceláře Jan Šimůnek UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Informační systém realitní kanceláře Jan Šimůnek Bakalářská práce 2011 Prohlášení autora Prohlašuji, že jsem tuto práci vypracoval samostatně.

Více

ZADAVATEL: ČR Centrum pro zjišťování výsledků vzdělávání, organizační složka státu Jeruzalémská 957/12 110 00 Praha 1 IČ: 75064421 DIČ: CZ75064421 Zastoupený ředitelem Pavlem Zeleným Registrační číslo

Více

Manuál k aplikaci SDO PILOT v.0.2

Manuál k aplikaci SDO PILOT v.0.2 Manuál k aplikaci SDO PILOT v.0.2 Základní informace o aplikaci Aplikace slouží pro zjednodušené vytváření dokumentů Souhrnů doporučených opatření pro Evropsky významné lokality. Vznikala přírustkovým

Více

Marek Laurenčík. Excel. práce s databázemi a kontingenčními tabulkami

Marek Laurenčík. Excel. práce s databázemi a kontingenčními tabulkami Marek Laurenčík Excel práce s databázemi a kontingenčními tabulkami 2010 Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována

Více

Animace ve WPF. Filip Gažák. Ing. Václav Novák, CSc. Školní rok: 2008-09

Animace ve WPF. Filip Gažák. Ing. Václav Novák, CSc. Školní rok: 2008-09 Animace ve WPF Filip Gažák Ing. Václav Novák, CSc. Školní rok: 2008-09 Abstrakt Hlavním tématem práce bude nový prvek pro tvorbu uživatelského prostředí ve WPF animace. V teoretické části se nejprve seznámíme

Více

Projekt Konsolidace IT a nové služby TC ORP Litomyšl

Projekt Konsolidace IT a nové služby TC ORP Litomyšl Projekt Konsolidace IT a nové služby TC ORP Litomyšl Technická specifikace C Minimální specifikace parametrů jednotlivých komponent včetně akceptačních podmínek. a Elektronické workflow č. parametr / požadavek

Více

Seznámení s prostředím dot.net Framework

Seznámení s prostředím dot.net Framework Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené

Více

Ing. Jiří Fůsek. Základní informace. Pracovní zkušenosti. Vzdělání. 09/2015 - nyní Freelancer. 09/2008-06/2010 Univerzita Tomáše Bati ve Zlíně

Ing. Jiří Fůsek. Základní informace. Pracovní zkušenosti. Vzdělání. 09/2015 - nyní Freelancer. 09/2008-06/2010 Univerzita Tomáše Bati ve Zlíně Základní informace Pracovní zkušenosti Ing. Jiří Fůsek Mikulova 1573/11, 149 00 Praha +420 774 331 232 fusek.jiri@gmail.com http://www.jirifusek.net/ 09/2015 - nyní Freelancer Senior C#.NET vývojář - SW

Více

Předmětem části B) veřejné zakázky je dodávku existujícího licencovaného softwaru dle této technické specifikace.

Předmětem části B) veřejné zakázky je dodávku existujícího licencovaného softwaru dle této technické specifikace. Příloha č. 2. - Detailní specifikace zakázky pro část B) Dodávka specializovaného softwaru 1. Obecná specifikace Předmětem části B) veřejné zakázky je dodávku existujícího licencovaného softwaru dle této

Více

Výzva k podání nabídek

Výzva k podání nabídek Výzva k podání nabídek Číslo zakázky (bude doplněno poskytovatelem dotace) 1 Název programu: Registrační číslo projektu Název projektu: Název zakázky: Předmět zakázky (služba/dodávka/stavební práce): 2/01/1.2/27/01

Více

Úvod...12 Součásti aplikace... 12 Použité konvence... 13

Úvod...12 Součásti aplikace... 12 Použité konvence... 13 Obsah 1 2 Úvod...12 Součásti aplikace... 12 Použité konvence... 13 1. Instalace a nastavení...15 1.1 Než začnete instalovat... 16 1.2 Instalace... 16 Průběh... 17 1.3 Oprava instalace... 18 1.4 Odinstalování

Více

E.C.S. řada 900 - nová generace obrat o 360 ( Systém vyvinut ve Florencii v r.2009 )

E.C.S. řada 900 - nová generace obrat o 360 ( Systém vyvinut ve Florencii v r.2009 ) E.C.S. řada 900 - nová generace obrat o 360 ( Systém vyvinut ve Florencii v r.2009 ) Filozofie vývoje nové řady E.C.S. CNC klade důraz především na vyspělou technologii a nadčasový vzhled. Vývoji nového

Více

ZADÁVACÍ DOKUMENTACE ve smyslu 44 zákona č. 137/2006 Sb., o veřejných zakázkách, v platném znění (dále jen ZVZ )

ZADÁVACÍ DOKUMENTACE ve smyslu 44 zákona č. 137/2006 Sb., o veřejných zakázkách, v platném znění (dále jen ZVZ ) ev.č. 18685/2015 č.j. MUCL/15189 /2015 ZADÁVACÍ DOKUMENTACE ve smyslu 44 zákona č. 137/2006 Sb., o veřejných zakázkách, v platném znění (dále jen ZVZ ) pro podlimitní veřejnou zakázku na služby zadávanou

Více

NÁVRH A REALIZACE WWW PREZENTACE ČKR

NÁVRH A REALIZACE WWW PREZENTACE ČKR NÁVRH A REALIZACE WWW PREZENTACE ČKR Šárka Ocelková Ústav výpočetní techniky MU v Brně, Botanická 68a, 602 00 Brno, ČR E-mail: ocelkova@ics.muni.cz Abstrakt U zrodu www prezentace České konference rektorů

Více

Abstrakt. Klíčová slova. Abstract. Key words

Abstrakt. Klíčová slova. Abstract. Key words Vize portálu KNIŽNÍ DATABÁZE Jakub Houžvička Abstrakt Tato semestrální práce má pomoci seznámit s vizí projektu Knižní databáze. Jedná se o projekt v podobě webového portálu přístupnému všem uživatelům

Více

ELEKTRONICKÁ FORMA KOMUNIKACE SE SPRÁVCEM DANĚ

ELEKTRONICKÁ FORMA KOMUNIKACE SE SPRÁVCEM DANĚ ELEKTRONICKÁ FORMA KOMUNIKACE SE SPRÁVCEM DANĚ Zdeněk Schwarz student doktorandského studia ComTax Advising s.r.o. zdenek.schwarz@comtax.cz ABSTRAKT: Příspěvek poodhaluje způsob komunikace s finančními

Více

ELEKTRONICKÉ AGENDY PRO VÁŠ ÚŘAD, ANONYMIZACE A PÉČE O DOKUMENTY PDF A MS OFFICE

ELEKTRONICKÉ AGENDY PRO VÁŠ ÚŘAD, ANONYMIZACE A PÉČE O DOKUMENTY PDF A MS OFFICE ELEKTRONICKÉ AGENDY PRO VÁŠ ÚŘAD, ANONYMIZACE A PÉČE O DOKUMENTY PDF A MS OFFICE Michal Vejvoda a Martin Vondrouš neuděluje poskytnutím informací žádné licence na užití autorských děl ani jiná práva duševního

Více

Kmenové údaje. Všeobecně

Kmenové údaje. Všeobecně Kmenové údaje Všeobecně V této podnabídce kmenových dat naleznete takové programy, které mají přímý vliv na účetní zpracování klienta v EURO-FIBu. Zde provedená nastavení/ zadání se projeví jak v dalších

Více

UNIVERSAL SHOP. www.uninet.cz/pokladny, pokladny@uninet.cz. Přehlednost. Pokladní modul POS

UNIVERSAL SHOP. www.uninet.cz/pokladny, pokladny@uninet.cz. Přehlednost. Pokladní modul POS UNIVERSAL SHOP www.uninet.cz/pokladny, pokladny@uninet.cz Pokladní modul POS Program POS je výkonný síťový pokladní modul pro obchody a restaurace pracující na platformě Windows XP, Vista a Win7, námi

Více

Software pro personalizaci karet

Software pro personalizaci karet Software pro personalizaci karet Intuitivní, rychlý a efektivní, těžko uvěřit, že je to software pro identifikační karty. Jediný program pro všechny tiskárny. Asure ID 7 pracuje s tiskárnami pro potisk

Více

Modul EPNO. Téma: Elektronické odesílání evidenčních listů přepravy nebezpečných odpadů

Modul EPNO. Téma: Elektronické odesílání evidenčních listů přepravy nebezpečných odpadů Modul EPNO Téma: Elektronické odesílání evidenčních listů přepravy nebezpečných odpadů Program: EVI 8 Vypracoval: Mgr. Tomáš Čejchan (oddělení Podpora) Revize: 07.03.2014 Tento dokument popisuje funkcionalitu

Více

USNESENÍ VLÁDY ČESKÉ REPUBLIKY č. 624/2001

USNESENÍ VLÁDY ČESKÉ REPUBLIKY č. 624/2001 USNESENÍ VLÁDY ČESKÉ REPUBLIKY č. 624/2001 V l á d a I. s c h v a l u j e Pravidla, zásady a způsob zabezpečování kontroly užívání počítačových programů uvedená v příloze tohoto usnesení (dále jen "Pravidla")

Více

Vladimír Mach. @vladimirmach 2. 1. 2013

Vladimír Mach. @vladimirmach 2. 1. 2013 Vladimír Mach @vladimirmach 2. 1. 2013 SQL Server Compact Edition Jednoduchá relační databáze Použití i v malých zařízeních s omezenými zdroji Dříve pod názvem SQL Server Mobile Časté využití při programování

Více

XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS

XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS Roman MALO - Arnošt MOTYČKA This paper is oriented to discussion about using markup language XML and its features in LCMS

Více

Vysoká škola ekonomická v Praze

Vysoká škola ekonomická v Praze Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky obor informatika 2007 Srovnání portálů zdravotních pojišťoven z pohledu malého a středního podniku jako zaměstnavatele (bakalářská práce)

Více

Statistica, kdo je kdo?

Statistica, kdo je kdo? Statistica, kdo je kdo? Newsletter Statistica ACADEMY Téma: Typy instalací Typ článku: Teorie Někteří z vás používají univerzitní licence, někteří síťové, podnikové atd. V tomto článku Vám představíme,

Více

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz Platformy / technologie Jaroslav Žáček jaroslav.zacek@osu.cz Které platformy / technologie znáte Java Java Java EE 5 Java EE 6 Pruning, Extensibility Ease of Dev, CDI, JAX-RS Java EE 7! JMS 2, Batch, Concurrency,

Více

Rozdílová dokumentace k ovládání IS KARAT.net

Rozdílová dokumentace k ovládání IS KARAT.net Dokumentace k IS KARAT.net Rozdílová dokumentace k ovládání IS KARAT.net programový modul: Rozdílová dokumentace k ovládání IS KARAT.net OBSAH: 1 ÚVOD... 3 2 PŘIHLAŠOVACÍ DIALOG... 4 3 NAVIGACE... 5 3.1

Více

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

Lekce 11 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská

Více

pro zpracování nabídky k veřejné zakázce na dodávky zadané ve zjednodušeném podlimitním řízení s názvem:

pro zpracování nabídky k veřejné zakázce na dodávky zadané ve zjednodušeném podlimitním řízení s názvem: ZADÁVACÍ DOKUMENTACE dle ust. 44 zákona č. 137/2006 Sb., o veřejných zakázkách, v platném znění pro zpracování nabídky k veřejné zakázce na dodávky zadané ve zjednodušeném podlimitním řízení s názvem:

Více

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL Petr Štefan Václav Trunec, KP-sys, Čacké 155, Pardubice 1 Úvod Firma KP-SYS spol. s r. o. dodává na náš trh integrované

Více

CineStar Černý Most Praha 31. 10. 2012

CineStar Černý Most Praha 31. 10. 2012 CineStar Černý Most Praha 31. 10. 2012 Stejná aplikace na více zařízeních Michael Juřek Microsoft s.r.o. Potřebné ingredience 1. Portable libraries 2. Návrhový vzor MVVM 3. XAML 4. Abstrakce platformy

Více

Filr 2.0 Uživatelská příručka k aplikaci Filr Web. Únor 2016

Filr 2.0 Uživatelská příručka k aplikaci Filr Web. Únor 2016 Filr 2.0 Uživatelská příručka k aplikaci Filr Web Únor 2016 Právní vyrozumění Informace o právních upozorněních, ochranných známkách, prohlášeních o omezení odpovědnosti, zárukách, omezeních exportu a

Více

Společnost Xerox vytváří škálovatelné, hostované řešení pro optimalizaci globální správy tiskových aktiv

Společnost Xerox vytváří škálovatelné, hostované řešení pro optimalizaci globální správy tiskových aktiv Microsoft Visual Studio 2005 a Microsoft SQL Server 2005 Případová studie zákaznického řešení Společnost Xerox vytváří škálovatelné, hostované řešení pro optimalizaci globální správy tiskových aktiv Přehled

Více

Mobilní aplikace Praha 11 v mobilu

Mobilní aplikace Praha 11 v mobilu ÚMČ Praha 11 odbor správy majetku P O P T Á V K O V Ý L I S T Výtisk č. 1 M Ě S T S K Á Č Á S T P R A H A 1 1 se sídlem Ocelíkova 672, 149 41 Praha 4 Vám nabízí možnost předložit nabídku na zakázku malého

Více

Funkce Chytrý dotyk. verze 1.4. A-61629_cs

Funkce Chytrý dotyk. verze 1.4. A-61629_cs Funkce Chytrý dotyk verze 1.4 A-61629_cs Používání funkce chytrého dotyku Obsah Přehled... 1 Spuštění funkce chytrého dotyku... 2 Používání funkce chytrého dotyku s výchozími čísly funkcí a předem definovanými

Více

Dotazy k zadávacímu řízení Digitalizace dat SUKL:

Dotazy k zadávacímu řízení Digitalizace dat SUKL: Dotazy k zadávacímu řízení Digitalizace dat SUKL: Je požadováno v rámci digitalizace dokumentů skenovat dokumenty přes tzv. ploché lože (sešité dokumenty, smlouvy apod.)? Ano, digitalizovány budou také

Více

myavis NG MOBILE SOLUTIONS CRM s podporou obchodních procesů v terénu

myavis NG MOBILE SOLUTIONS CRM s podporou obchodních procesů v terénu myavis NG MOBILE SOLUTIONS CRM s podporou obchodních procesů v terénu KOMPLEXNÍ ŘEŠENÍ CRM PRO SPRÁVU A ŘÍZENÍ OBCHODNÍCH, MARKETINGOVÝCH A DISTRIBUČNÍCH ČINNOSTÍ, S PODPOROU PRÁCE V TERÉNU, PRO EFEKTIVNÍ

Více

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče. KAPITOLA 3 Architektura aplikací na frameworku Rails V této kapitole: modely, pohledy, řadiče. 58 Část I: Začínáme Jedna ze zajímavých vlastností frameworku Rails spočívá v tom, že klade docela závažná

Více

OPERAČNÍ SYSTÉMY. Ing. Luděk Richter

OPERAČNÍ SYSTÉMY. Ing. Luděk Richter OPERAČNÍ SYSTÉMY Ing. Luděk Richter Střední škola, Havířov-Šumbark, Sýkorova 1/613, příspěvková organizace Tento výukový materiál byl zpracován v rámci akce EU peníze středním školám - OP VK 1.5. Výuková

Více

SharePoint 2010 produktové portfolio a licencování

SharePoint 2010 produktové portfolio a licencování SharePoint 2010 produktové portfolio a licencování Kamil Juřík SharePoint MVP Lead Consultant & Platform Architect Kamil.Jurik@ProSharePoint.cz Systémové požadavky software Aneb co potřebujeme? 64-bit

Více

ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk

ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk Anotace: Příspěvek se zabývá rozvojem informačních a komunikačních technologií se zaměřením na trendy technického a programového

Více

ELEARNING NA UJEP PŘEDSTAVY A SKUTEČNOST

ELEARNING NA UJEP PŘEDSTAVY A SKUTEČNOST ELEARNING NA UJEP PŘEDSTAVY A SKUTEČNOST JAN ČERNÝ, PETR NOVÁK Univerzita J.E. Purkyně v Ústí nad Labem Abstrakt: Článek popisuje problematiku rozvoje elearningu na UJEP. Snahu o vytvoření jednotného celouniverzitního

Více

Databázové systémy trocha teorie

Databázové systémy trocha teorie Databázové systémy trocha teorie Základní pojmy Historie vývoje zpracování dat: 50. Léta vše v programu nevýhody poměrně jasné Aplikace1 alg.1 Aplikace2 alg.2 typy1 data1 typy2 data2 vytvoření systémů

Více

Redakční systém pro skautské weby Poptávka

Redakční systém pro skautské weby Poptávka Redakční systém pro skautské weby Poptávka Obsah Obsah... 1 1. Základní Informace... 2 1.1. Název projektu... 2 1.2. Poptávající subjekt... 2 1.3. Odpovědné osoby... 2 1.4. Další informace... 2 2. Shrnutí

Více

ZADÁVACÍ DOKUMENTACE

ZADÁVACÍ DOKUMENTACE ZADÁVACÍ DOKUMENTACE dle 44 zákona č. 137/2006 Sb., o veřejných zakázkách, v platném znění pro zpracování nabídky k podlimitní veřejné zakázce na služby zadávané v otevřeném řízení s názvem: ZAJIŠTĚNÍ

Více

MS ACCESS A MS WORD V KAŽDODENNÍ PRAXI

MS ACCESS A MS WORD V KAŽDODENNÍ PRAXI MS ACCESS A MS WORD V KAŽDODENNÍ PRAXI Martin Fussek VL Servis s.r.o., Ruská 24/83, 706 02 Ostrava Vítkovice, fussek@lahvarna.cz Abstrakt Příspěvek volně navazuje na můj příspěvek na TS 1999, přičemž nyní

Více

Úvod...15. Používané konvence... 16. 1. Seznámení s Outlookem...17

Úvod...15. Používané konvence... 16. 1. Seznámení s Outlookem...17 Obsah Úvod...15 Používané konvence... 16 1. Seznámení s Outlookem...17 1.1 Novinky verze 2003... 17 1.1.1 Navigační podokno...17 1.1.2 Nabídka Přejít...17 1.1.3 Podokno pro čtení...18 1.1.4 Rozložení seznamu

Více

SMART GATE webové a aplikační ovládací rozhraní zařízení ESIM120

SMART GATE webové a aplikační ovládací rozhraní zařízení ESIM120 ALARM PRODEJ.CZ OFICIÁLNÍ DISTRIBUTOR VÝROBKŮ ELDES PRO ČESKOU REPUBLIKU UVÁDÍ INSTRUKTÁŽNÍ PREZENTACI SMART GATE webové a aplikační ovládací rozhraní zařízení ESIM120 ALARM PRODEJ.CZ je součástí CENTR

Více

Helios RED a Internetový obchod

Helios RED a Internetový obchod (pracovní verze!) Helios RED a Internetový obchod Obsah dokumetace: 1. Úvod 2. Evidované údaje na skladové kartě 3. Přenos skladových karet z Helios RED do e-shopu 4. Přenos objednávek z e-shopu do Helios

Více

INTERNET SERVIS MANUÁL

INTERNET SERVIS MANUÁL INTERNET SERVIS MANUÁL VÍTÁME VÁS! Právě jste otevřeli manuál Raiffeisen stavební spořitelny a.s. (dále jen RSTS ) pro práci s první aplikací internetového servisu s aktivními operacemi pro stavební spoření

Více

ALFIS 2014 komplexní ekonomický systém verze 2014.5

ALFIS 2014 komplexní ekonomický systém verze 2014.5 ALFIS 2014 komplexní ekonomický systém verze 2014.5 Návod na instalaci Fuksa Ladislav Sedlčanská 1327/65 140 00 Praha 4 Tel. 223 010 785, 603 463 137 E-mail alfis@fksoft.cz Web www.alfis.cz, www.fksoft.cz

Více

Relační databáze a povaha dat

Relační databáze a povaha dat Relační databáze a povaha dat Roman Bartoš Copyright istudium, 2005, http://www.istudium.cz Žádná část této publikace nesmí být publikována a šířena žádným způsobem a v žádné podobě bez výslovného svolení

Více

Vývoj, výroba, prodej a montáž docházkových a identifikačních systémů. Docházka 3000 Personalistika

Vývoj, výroba, prodej a montáž docházkových a identifikačních systémů. Docházka 3000 Personalistika BM Software, Němčičky 84, 69107 Němčičky u Břeclavi Vývoj, výroba, prodej a montáž docházkových a identifikačních systémů Tel: 519 430 765, Mobil: 608 447 546 e-mail: bmsoft@seznam.cz web: http://www.dochazka.eu

Více

E-EDUCATION NEBOLI VYUŽITÍ ICT VE ŠKOLÁCH

E-EDUCATION NEBOLI VYUŽITÍ ICT VE ŠKOLÁCH E-EDUCATION NEBOLI VYUŽITÍ ICT VE ŠKOLÁCH ANDREA BAREŠOVÁ A KOL. Hewlett-Packard Abstrakt: e-education je název znamenající zapojení informačních technologií do výuky. S tímto pojmenováním přišla společnost

Více

Elektronizace správních řízení a jejich příprava na základní registry

Elektronizace správních řízení a jejich příprava na základní registry Odůvodnění nadlimitní veřejné zakázky Elektronizace správních řízení a jejich příprava na základní registry podle 156 odst. 1 zákona č. 137/2006 Sb., o veřejných zakázkách, v platném znění a v souladu

Více

Kapitola 1: Co je Microsoft Access? 27 Kapitola 2: Mnoho tváří aplikace Microsoft Access 41 Kapitola 3: Návrh databázové aplikace 75

Kapitola 1: Co je Microsoft Access? 27 Kapitola 2: Mnoho tváří aplikace Microsoft Access 41 Kapitola 3: Návrh databázové aplikace 75 Stručný obsah Část 1 Základy aplikace Microsoft Access Kapitola 1: Co je Microsoft Access? 27 Kapitola 2: Mnoho tváří aplikace Microsoft Access 41 Kapitola 3: Návrh databázové aplikace 75 Část 2 Vytváření

Více

DUM 01 téma: Úvod do PowerPointu

DUM 01 téma: Úvod do PowerPointu DUM 01 téma: Úvod do PowerPointu ze sady: 03 tematický okruh sady: Tvorba multimediální ze šablony: 09 počítačová grafika určeno pro: 1-4. ročník vzdělávací obor: vzdělávací oblast: číslo projektu: anotace:

Více

Změny v AdmWin ve verzi 2.20 od 2.15

Změny v AdmWin ve verzi 2.20 od 2.15 Změny v AdmWin ve verzi 2.20 od 2.15 Provádí se update datových struktur z nižších verzí. Zálohy si nelze obousměrně předávat s nižší verzí!!! Před instalací nové verze nutno provést zálohování! 1. Zálohování

Více

2N Helios IP Manager Software pro konfiguraci a správu dveřních komunikátorů 2N Helios IP.

2N Helios IP Manager Software pro konfiguraci a správu dveřních komunikátorů 2N Helios IP. 2N Helios IP Manager Software pro konfiguraci a správu dveřních komunikátorů 2N Helios IP. Uživatelský manuál Verze 1.0.0 Software 1.0.x www.2n.cz Společnost 2N TELEKOMUNIKACE a.s. je českým výrobcem a

Více

Obslužný software. vizualizaci zařízení

Obslužný software. vizualizaci zařízení 5 645 Obslužný software pro vizualizaci zařízení ACS715 Obslužný, alarmový a software pro zpracování úloh v systému s centrálami OCI600, OCI611, OZW10 a OZW111 Servisní software pro regulátory s komunikací

Více

Příloha č. 1 zadávací dokumentace veřejné zakázky Spisová služba pro ČIŽP Technické podmínky

Příloha č. 1 zadávací dokumentace veřejné zakázky Spisová služba pro ČIŽP Technické podmínky Příloha č. 1 zadávací dokumentace veřejné zakázky Spisová služba pro ČIŽP Technické podmínky 1.1.1. Obecné požadavky na systém Požadovaný informační systém musí být schopen realizovat plánované i ad hoc

Více

Workshop Exact Software CEE

Workshop Exact Software CEE Workshop Exact Software CEE (Exact Synergy Enterprise) Praha 11.12.2012 Martin Burian 2012 Exact Agenda Verze Synergy Enterprise Změny v systémových požadavcích Configurator + Validace a alokace (připojení)

Více

Integrovaný Ekonomický Systém Účetnictví - IES WIN 2006. Úvod...5

Integrovaný Ekonomický Systém Účetnictví - IES WIN 2006. Úvod...5 Úvod...5 Přehled funkcí modulu účetnictví...6 Účtový rozvrh...11 Výsledovka...12 Rozvaha...12 Saldokonto...12 Druh dokladu...12 Zpracování daňového dokladu...12 Nastavení zpracování DPH (období, sazeb,

Více

- 1 - Smlouva o dílo. uzavřená podle 536 a násl. obchodního zákoníku v účinném znění

- 1 - Smlouva o dílo. uzavřená podle 536 a násl. obchodního zákoníku v účinném znění - 1 - Smlouva o dílo uzavřená podle 536 a násl. obchodního zákoníku v účinném znění Přílohy : A Technická dokumentace a popis díla B Kalkulace ceny díla 1. Účastníci smlouvy Smluvní strany této smlouvy,

Více

UŽIV ATELSKÁ PŘÍRUČKA

UŽIV ATELSKÁ PŘÍRUČKA UŽIVATELSKÁ PŘÍRUČKA Autor: Marek Klimša Úprava: Stanislav Chromý Verze dokumentu: 1.1 Poslední aktualizace: 11. května 2012 Obsah 1. Začínáme 3 1.1 Co je to ADVOKÁTNÍ SPIS 3 1.2 Po prvním spuštění 3 1.3

Více

M I S Y S - W E B. Intranet řešení systému MISYS. Verze 9.00. Příručka uživatele

M I S Y S - W E B. Intranet řešení systému MISYS. Verze 9.00. Příručka uživatele M I S Y S - W E B Intranet řešení systému MISYS Verze 9.00 Příručka uživatele GEPRO s.r.o. Září 2008 Copyright GEPRO s.r.o. 2008 Ochranné známky GEPRO spol. s r.o. KOKEŠ, MISYS Ochranné známky Microsoft

Více

Architektury informačních systémů

Architektury informačních systémů Architektury informačních systémů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes/vyuka/tis Miroslav.Benes@vsb.cz Obsah přednášky Co je to

Více

Zrakové postižení a mobilní telefony (smartphony)

Zrakové postižení a mobilní telefony (smartphony) České vysoké učení technické v Praze Fakulta elektrotechnická Katedra Kybernetiky Biomedicínské inženýrství Zrakové postižení a mobilní telefony (smartphony) Semestrální úloha - A6M33AST Jarolímek Tomáš

Více

KATALOG VEŘEJNÝCH SLUŽEB

KATALOG VEŘEJNÝCH SLUŽEB KATALOG VEŘEJNÝCH SLUŽEB Catalogue of public services Ing Renáta Halásková, PhD Vysoká škola logistiky v Přerově, Katedra ekonomických, právních a společenských disciplín e-mail: renatahalaskova@vslgcz

Více

Technická dokumentace

Technická dokumentace Příloha č. 1 k veřejné zakázce malého rozsahu Technická dokumentace Obsah 1 Předpoklady... 3 1.1 Účel... 3 1.2 Přínosy pro uživatele... 3 2 Popis předmětu plnění... 3 2.1 Funkční specifikace řešení...

Více

Architektury informačních systémů

Architektury informačních systémů Architektury informačních systémů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes/vyuka/tis Miroslav.Benes@vsb.cz Obsah přednášky Co je to

Více

Uživatelská příručka + základní informace o IS o ISVS

Uživatelská příručka + základní informace o IS o ISVS Uživatelská příručka + základní informace o IS o ISVS Vážení uživatelé, vítejte v Informačním systému o informačních systémech veřejné správy (dále jen IS o ISVS ) Obsah uživatelské příručky: 1. Obecně

Více

Uživatelem řízená navigace v univerzitním informačním systému

Uživatelem řízená navigace v univerzitním informačním systému Hana Netrefová 1 Uživatelem řízená navigace v univerzitním informačním systému Hana Netrefová Abstrakt S vývojem počítačově orientovaných informačních systémů je stále větší důraz kladen na jejich uživatelskou

Více

OBCHODNÍ PODMÍNKY PRO ELEKTRONICKÝ STYK S BANKOU SBERBANK ONLINE BANKING

OBCHODNÍ PODMÍNKY PRO ELEKTRONICKÝ STYK S BANKOU SBERBANK ONLINE BANKING Účinné od 1. 10. 2014 Část I. Úvodní ustanovení (1) Tyto Obchodní podmínky pro elektronický styk s bankou Sberbank Online Banking (dále jen Podmínky ) stanoví závazná pravidla pro elektronický styk s bankou

Více

Technologie počítačových sítí 5. cvičení

Technologie počítačových sítí 5. cvičení Technologie počítačových sítí 5. cvičení Obsah jedenáctého cvičení Active Directory Active Directory Rekonfigurace síťového rozhraní pro použití v nadřazené doméně - Vyvolání panelu Síťové připojení -

Více

Programové vybavení počítače

Programové vybavení počítače Programové vybavení počítače Číslo projektu Název školy Předmět CZ.1.07/1.5.00/34.0425 INTEGROVANÁ STŘEDNÍ ŠKOLA TECHNICKÁ BENEŠOV Černoleská 1997, 256 01 Benešov IKT Tematický okruh Téma Počítač Programové

Více

Dodávka služeb na vzdělávání zaměstnanců v rámci projektu

Dodávka služeb na vzdělávání zaměstnanců v rámci projektu Zadávací dokumentace pro projekt : Dodávka služeb na vzdělávání zaměstnanců v rámci projektu Zvýšení adaptability zaměstnanců společnosti Neotech, a.s. na změnu technologických a ekonomických podmínek

Více

Výzva k podání nabídek

Výzva k podání nabídek V Plzni dne 24. 4. 2014 Výzva k podání nabídek Zadavatel veřejné zakázky malého rozsahu v řízení podle 12 odst. 3 zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů (dále jen zákon

Více

Compatibility List. GORDIC spol. s r. o. Verze 3.60.5 8.4.2009

Compatibility List. GORDIC spol. s r. o. Verze 3.60.5 8.4.2009 Compatibility List Verze 3.60.5 8.4.2009 GORDIC spol. s r. o. Copyright 1993-2009 1 Obsah Obsah 1 2 3 4 5 6 7 8 9 3.1 3.2 Úvodní informace Podporované databázové systémy Klientské prostředí Tlustý klient...

Více

Úvod do počítačové grafiky

Úvod do počítačové grafiky Úvod do počítačové grafiky Zpracoval: ing. Jaroslav Chlubný Počítačová grafika Počítačová grafika a digitální fotografie zaujímá v současnosti stále významnější místo v našem životě. Uveďme si jen několik

Více

10. Editor databází dotazy a relace

10. Editor databází dotazy a relace 10. Editor databází dotazy a relace Dotazy Dotazy tvoří velkou samostatnou kapitolu Accessu, která je svým významem téměř stejně důležitá jako oblast návrhu a úpravy tabulek. Svým rozsahem je to ale oblast

Více

Univerzita Palackého v Olomouci. Služby spojené s Active Directory

Univerzita Palackého v Olomouci. Služby spojené s Active Directory Moderní učitel CZ.1.07/1.3.00/51.0041 Univerzita Palackého v Olomouci Pedagogická fakulta Služby spojené s Active Directory doc. PhDr. Milan Klement, Ph.D. Olomouc 2015 Publikace vznikla v rámci ESF projektu

Více

Program pro flexibilní tvorbu evidencí. VIKLAN - Evidence. Uživatelská příručka. pro seznámení se základními možnostmi programu

Program pro flexibilní tvorbu evidencí. VIKLAN - Evidence. Uživatelská příručka. pro seznámení se základními možnostmi programu Program pro flexibilní tvorbu evidencí VIKLAN - Evidence Uživatelská příručka pro seznámení se základními možnostmi programu Vlastimil Kubínek, Ing. Josef Spilka VIKLAN - Evidence Verse 1.11.8.1 Copyright

Více

Univerzita Pardubice Fakulta elektrotechniky a informatiky

Univerzita Pardubice Fakulta elektrotechniky a informatiky Univerzita Pardubice Fakulta elektrotechniky a informatiky Podpora kreslení všech typů značek liniového charakteru v AutoCADu podle ČSN 01 3411 v jazyce C# Luděk Špetla Bakalářská práce 2009 Prohlašuji:

Více

N e j č a s t ě j š í d o t a z y k e k u k i t V

N e j č a s t ě j š í d o t a z y k e k u k i t V Nejčastější dotazy ke Kuki TV Nejčastější otázky a odpovědi ke Kuki TV Tvoje otázka? 1. Jak dlouho trvá vyexpedování STB Kuki? Set-top boxy ke službě Kuki expedujeme zpravidla do 3 (pracovních) dnů od

Více

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné Analyzujte, navrhněte a implementujte aplikaci pro sledování spánku dětí Chůvička pro telefony na platformě Android. Od existujících aplikací se bude aplikace odlišovat tímto: funkční na dual-sim telefonech

Více

ELEKTRONIZACE VEŘEJNÉ SPRÁVY

ELEKTRONIZACE VEŘEJNÉ SPRÁVY ELEKTRONIZACE VEŘEJNÉ SPRÁVY ANDREA SCHELLEOVÁ Právnická fakulta Masarykovy univerzity Abstract in original language Článek se zaobírá problematikou elektronizace veřejné správy s důrazem na elektronické

Více

SMLOUVA O NÁJMU MULTIFUNKČNÍCH SÍŤOVÝCH TISKÁREN

SMLOUVA O NÁJMU MULTIFUNKČNÍCH SÍŤOVÝCH TISKÁREN ZADÁVACÍ DOKUMENTACE VEŘEJNÉ ZAKÁZKY Nájem multifunkčních síťových tiskáren PŘÍLOHA Č. 1 Vzorový návrh smlouvy o nájmu multifunkčních síťových tiskáren SMLOUVA O NÁJMU MULTIFUNKČNÍCH SÍŤOVÝCH TISKÁREN

Více