Na tomto míst bude ociální zadání va²í práce



Podobné dokumenty
Specifikace systému ESHOP

BOZP - akcepta ní testy

IP kamerový systém Catr - uºivatelský návod k obsluze

Uºivatelská p íru ka Octopus

DeepBurner (testování UI)

Termíny zkoušek Komise Komise. subkomise 1 (obhaj.) :30 B subkomise 2 (obhaj.) :30 B8 120

ZADÁVACÍ DOKUMENTACE

Platební styk (mezibankovní, klientský) Jitka Vachtová 28. íjna 2011

U ivatelská p íru ka

Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina

Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ

1. Požadavky na provoz aplikací IISPP

Rozšířená nastavení. Kapitola 4

Komfortní datová schránka

Návod pro vzdálené p ipojení do sít UP pomocí VPN pro MS Windows 7

Pokyny pro vypln ní elektronické žádosti

Prohlá²ení. V Praze dne 18. dubna

účetních informací státu při přenosu účetního záznamu,

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1

Android Elizabeth. Verze: 1.3

ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU

Integrovaný Ekonomický Systém Zakázkový list - IES WIN 2006

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

ZADÁVACÍ DOKUMENTACE

Návod k používání registračního systému ČSLH

Management projektů. Programová podpora auditu sytému managementu kvality HOT 4IT. Návrh

Vodafone promo kit uživatelský manuál Uživatelský manuál pro aplikaci. Vodafone promo kit. Verze dokumentu: 2.

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

UŽIVATELSKÁ PŘÍRUČKA PRO INTERNETBANKING PPF banky a.s.

Manuál uživatele čipové karty s certifikátem

Zadávací dokumentace dle ustanovení 44 zákona č. 137/2006 Sb., o veřejných zakázkách (dále jen zákon )

Věc: Výzva pro předložení nabídek k veřejné zakázce s názvem: VÚ a ŠJ PŠOV, Nákup nového osmimístného vozidla

Správa požadavků. Semestrální práce

Registr UJO. Příručka pro uživatele. Institut biostatistiky a analýz. Lékařské a Přírodovědecké fakulty Masarykovy univerzity.

Oprava střechy a drenáže, zhotovení a instalace kované mříže kostel Sv. Václava Lažany

1. Informace o předmětu zakázky Stručný textový popis zakázky, technická specifikace

KUPNÍ SMLOUVA. Článek I. Smluvní strany

KUPNÍ SMLOUVA. Dodávka 3D tiskárny. I. Smluvní strany. II. ZÁKLADNÍ USTANOVENÍ

V této části manuálu bude popsán postup jak vytvářet a modifikovat stránky v publikačním systému Moris a jak plně využít všech možností systému.

Zadávací dokumentace

Zadávací dokumentace k veřejné zakázce zadané podle zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů

Výzva k podání nabídek (zadávací dokumentace)

170/2010 Sb. VYHLÁŠKA. ze dne 21. května 2010

ZADÁVACÍ DOKUMENTACE K VEŘEJNÉ ZAKÁZCE ZADÁVANÉ DLE 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 )

Zpracování on-line interaktivního vzdělávacího systému

SEZNAM DOKUMENTACE K ZADÁVACÍMU ŘÍZENÍ PRV,

DUM 05 téma: Základy obsluha Gimp

Úklidové služby v objektu polikliniky

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4.

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Manuál Kentico CMSDesk pro KDU-ČSL

WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6

NÁVRHOVÝ PROGRAM VÝMĚNÍKŮ TEPLA FIRMY SECESPOL CAIRO PŘÍRUČKA UŽIVATELE

Obchodní podmínky internetového obchodu royce-bohemia.cz. Platné od

VÝZVA K PODÁNÍ NABÍDKY A ZADÁVACÍ DOKUMENTACE

Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13

VÝZVA K PODÁNÍ NABÍDKY

Informace a návod k pouºití ablony pro BP student FZS v Plzni. Ing. Petr V elák 20. únor 2012

VÝZVA K PODÁNÍ NABÍDKY NA VEŘEJNOU ZAKÁZKU MALÉHO ROZSAHU. JAMU vzduchotechnika a klimatizace depozitáře knihovny v objektu Novobranská 691/3, Brno"

Novinky verzí SKLADNÍK 4.24 a 4.25

Výzva k podání nabídek

Evko - uºivatelská p íru ka verze 5.1.0

Pravidla. používání Národního elektronického nástroje při realizaci zadávacích postupů prostřednictvím národního elektronického nástroje

Mateřská škola, základní škola a střední škola pro sluchově postižené Valašské Meziříčí, Vsetínská 454

Směrnice pro oběh účetních dokladů Obce Batňovice

Regenerace zahrady MŠ Neděliště

Národního registru u ivatel léka sky indikovaných substitu ních látek (papírové hlá enky)

Výzva k podání nabídky. Elektro-revize pro Nemocnici s poliklinikou Česká Lípa, a. s.

Obchodní podmínky 2 ZADÁVÁNÍ REKLAMY Rezervace. 2.2 Objednávka

Koncepce rozvoje Polytematického strukturovaného hesláře (PSH)

Zadávací dokumentace k veřejné zakázce

Pokyny pro vypln ní elektronické žádosti podprogram 117D51300 Podpora výstavby technické infrastruktury

P r a v i d l a. Odstranění škod po jarní povodni v roce 2006 na hrázích a objektech rybníků.

Server. Software serveru. Služby serveru

Západní město Stodůlky, Administrativní dům A2 plynovod 1.etapa

Testovací aplikace Matematika není věda

téma: Formuláře v MS Access

Obchodní podmínky II. Objednávka, vznik kupní smlouvy

VEŘEJNÁ NABÍDKA POZEMKŮ URČENÝCH K PRODEJI PODLE 7 ZÁKONA

WEBDISPEČINK NA MOBILNÍCH ZAŘÍZENÍCH PŘÍRUČKA PRO WD MOBILE

Odpov di na dotazy k ve ejné zakázce. 30/ SSZ Registr IKP

Věc: VEŘEJNÁ ZAKÁZKA MALÉHO ROZSAHU NA STAVEBNÍ PRÁCE PRO AKCI: dodavatele k předložení nejvhodnější nabídky na výše uvedenou zakázku.

Vyplňte API klíč, který si vygenerujete v Nastavení obchodu v profilu Uloženky v části Nastavit klíč pro API.

Zadávací dokumentace

Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře. 1. kolo příjmu žádostí Programu rozvoje venkova ( )

Článek 1 Identifikační údaje zadavatele a organizátora. Povodí Odry, státní podnik CZ

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é

Obecná ustanovení Rozsah a obsah předmětu plnění

Nastavení vestav ného p evodníku Ethernet -> sériová linka ES01

Informační systém pro rezervaci pokojů hotelu SPORT

P IZNÁNÍ TISKOPIS PRO ZM NU VLASTNICTVÍ OD

Příručka pro zadavatele E-ZAK krok za krokem

Odpov di na dotazy uchaze k ve ejné zakázce. 25/

ZADÁVACÍ DOKUMENTACE

VÝZVA K PODÁNÍ NABÍDKY NA ZAKÁZKU MALÉHO ROZSAHU S NÁZVEM

MyQ samoobslužný tisk

Inovace výuky prostřednictvím šablon pro SŠ

Výzva k podání nabídky a prokázání splnění kvalifikace (Oznámení o zahájení zadávacího řízení) Zadávací dokumentace

Transkript:

Na tomto míst bude ociální zadání va²í práce Toto zadání je podepsané d kanem a vedoucím katedry, musíte si ho vyzvednout na studijním odd lení Katedry po íta na Karlov nám stí, v jedné odevzdané práci bude originál tohoto zadání (originál z stává po obhajob na kated e), ve druhé bude na stejném míst neov ená kopie tohoto dokumentu (tato se vám vrátí po obhajob ). i

ii

ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta Bakalá ská práce Softwarová podpora pro fakturaci v maloobchod Stanislav tipl Vedoucí práce: Ing. Josef Hlavá, Ph.D. Studijní program: Elektrotechnika a informatika, strukturovaný, bakalá ský Obor: Výpo etní technika 2. ledna 2012

iv

v Pod kování D kuji Ing. Josefu Hlavá ovi, Ph.D. za cenné rady a pomoc p i tvorb bakalá ské práce. D kuji svým rodi m za podporu p i studiu a psaní této práce.

vi

vii Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn a pouºil jsem pouze podklady uvedené v p iloºeném seznamu. Nemám závaºný d vod proti uºití tohoto ²kolního díla ve smyslu Ÿ60 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 (autorský zákon). V Hradci Králové dne 2. 1. 2012.............................................................

viii

Abstract This thesis deals with solving software support of invoicing process in a small internet shop. It denes requirements for the system and describes existing solutions of the problem. It includes analysis and design of the system. The main goal is implementation if invoicing application in PHP using Nette framework. Abstrakt Tato bakalá ská práce se zabývá e²ením softwarové podpory fakturace v malém internetovém obchod. Denuje poºadavky na systém a popisuje existující e²ení problému. Obsahuje analýzu a návrh systému. Hlavním cílem je implementace faktura ní aplikace v PHP s vyuºitím frameworku Nette. ix

x

Obsah 1 Úvod 1 2 Popis problému, specikace cíle 3 2.1 Poºadavky na systém................................ 3 2.1.1 Funk ní poºadavky............................. 3 2.1.2 Nefunk ní poºadavky............................ 3 2.2 Údaje na faktu e.................................. 4 2.2.1 Zákonné náleºitosti faktury........................ 4 2.2.2 Stav faktury................................. 4 2.2.3 Zp sob platby............................... 5 2.2.4 Po²tovné.................................. 5 2.2.5 Fakturované poloºky............................ 5 2.3 Evidence zboºí................................... 5 2.4 Evidence uºivatel................................. 5 2.5 Evidence klient.................................. 6 3 Existující e²ení 7 3.1 Fakturoid...................................... 7 3.2 Uctujte.cz...................................... 7 3.3 Ekonomický systém Pohoda............................ 7 3.4 BambooInvoice................................... 8 4 Analýza 9 4.1 Akté i v systému.................................. 9 4.2 P ípady uºití.................................... 10 4.2.1 Manipulace s fakturami.......................... 10 4.2.2 Manipulace se zboºím........................... 12 4.2.3 P ehledy................................... 13 4.2.4 Manipulace s uºivatelskými ú ty..................... 14 4.3 Volba technologií.................................. 16 4.4 Výb r knihoven................................... 17 5 Návrh a implementace 19 5.1 Návrh databáze................................... 19 5.2 Zabezpe ení..................................... 20 5.2.1 Autentizace a autorizace.......................... 20 xi

xii OBSAH 5.2.2 Hesla..................................... 20 5.2.3 Ochrana proti XSS............................. 20 5.2.4 Ochrana proti CSRF............................ 21 5.2.5 Ochrana proti SQL injection........................ 21 5.3 Architektura aplikace................................ 21 5.3.1 Model.................................... 21 5.3.2 View..................................... 22 5.3.3 Controller.................................. 22 5.4 JavaScript na stran klienta............................ 23 5.5 Uºivatelské rozhraní................................ 23 6 Testování 25 6.1 Uºivatelské testování................................ 25 6.2 Testování bezpe nosti............................... 25 6.2.1 Útok XSS.................................. 25 6.2.2 Útok CSRF................................. 26 6.2.3 Útok SQL injection............................. 26 6.3 Testování p ístupnosti a pouºitelnosti....................... 26 6.3.1 Validace HTML............................... 26 6.3.2 Zobrazení v r zných prohlíºe ích..................... 26 6.3.3 Vypnutí CSS a obrázk.......................... 27 6.3.4 Vypnutí JavaScriptu............................ 27 6.3.5 Kontrola formulá............................. 27 7 Záv r 29 A Seznam pouºitých zkratek 33 B Instala ní p íru ka 35 C Uºivatelská p íru ka 37 C.1 Obecné funkce................................... 37 C.2 Práce s fakturami, zboºím a p ehledy....................... 37 C.3 Administrace aplikace............................... 38 D Obsah p iloºeného CD 39

Seznam obrázk 3.1 Uºivatelské rozhraní nástroje Fakturiod..................... 8 4.1 Akté i v systému.................................. 9 4.2 UC správa faktur.................................. 10 4.3 UC správa zboºí.................................. 12 4.4 UC p ehledy..................................... 14 4.5 UC správa uºivatel................................ 15 5.1 Databáze systému................................. 19 5.2 Uºivatelské rozhraní................................ 24 6.1 Validace kódu stránky............................... 27 6.2 Vzhled stránky bez CSS.............................. 28 D.1 Seznam p iloºeného CD.............................. 39 xiii

xiv SEZNAM OBRÁZK

Kapitola 1 Úvod V souvislosti se zvý²ením dostupnosti internetu mezi ²irokou ve ejností do²lo v uplynulých letech k nár stu obliby internetových obchod. Princip nákupu v internetovém obchod je vºdy stejný, bez ohledu na druh nabízeného zboºí. Zákazník si vybere zboºí z nabídky na internetových stránkách, které si následn vyzvedne osobn nebo je mu doru eno prost ednictvím po²ty nebo zásilkové sluºby. Ve v²ech vý²e uvedených p ípadech je nutné zákazníkovi vystavit doklad o zakoupení a zaplacení zboºí. Cílem této bakalá ské práce je usnadnit vystavování doklad v malém internetovém obchod. Konkrétn se jedná o internetový obchod Chytrásek [8]. Výsledek této práce by m l být pouºitelný i v jiných p ípadech, kdy je nutné vystavovat faktury. V uvedeném obchod se doklady dosud vystavovaly a evidovaly pomocí textového editoru a tabulkového kalkulátoru, kdy kaºdý doklad musel být manuáln vypln n podle objednávky v e-shopu. Jedná se o malý obchod, jehoº provozovatel není plátcem DPH. Produkty jsou ur eny výhradn pro koncové zákazníky. Systém by m l umoºnit snadné vystavování doklad. Doklady by m ly být v systému uchovány. Tato práce se skládá z n kolika ástí. Kapitola 2 Popis problému, specikace poºadavk se zabývá bliº²í specikací funk ních i nefunk ních poºadavk na systém. Zárove jsou zde uvedeny poºadavky dané existující legislativou a podrobn j²í popis ostatních poºadavk vzniklý na základ konzultací s koncovým uºivatelem. Kapitola 3 Existující e²ení popisuje vlastnosti nalezených existujících e²ení a analyzuje moºnost jejich vyuºití pro e²ení problému. Kapitola 4 Analýza obsahuje p ípady uºití a detailní popis jejich scéná. Dále je zde zd vodn na volba pouºitých technologií. V kapitole 5 Návrh a implementace jsou popsány jednotlivé ásti návrhu e²ení a implementace poºadovaných funkcí. Kapitola 6 Testování popisuje postup dola ování funkcionality ve spolupráci se zadavatelem práce. Dále jsem se v ní zabýval ov ením zabezpe ení aplikace. Uºivatelská a instala ní p íru ka jsou za azeny jako p ílohy této práce. Sou ástí práce je také CD-ROM médium se zdrojovými kódy, strukturou databáze a obsahem tohoto dokumentu v elektronické podob. 1

2 KAPITOLA 1. ÚVOD

Kapitola 2 Popis problému, specikace cíle Cílem práce je usnadnit vystavování faktur v malém internetovém obchod. Jde o jednoduchý systém pro neplátce DPH. Systém by m l poskytovat základní funkce s moºností budoucího roz²í ení. Systém by m l fungovat na vlastním serveru, aby se k dat m nemohly dostat t etí osoby. Pouºité technologie by m ly umoº ovat pouºití systému z libovolného po íta e se sí ovým p ipojením k serveru, kde bude systém nainstalován. Systém nebude závislý na pouºitém hardwaru i opera ním systému klientského po íta e. D leºitým poºadavkem je malá po áte ní investice a nulové pravidelné poplatky za pouºívání systému. 2.1 Poºadavky na systém 2.1.1 Funk ní poºadavky 1. Vytvá ení, úprava a uchování faktur. 2. Kopírování faktury (vytvo ení nové faktury se stejným obsahem). 3. Evidence stavu faktur. 4. Automatický výpo et po²tovného. 5. Export faktur do formátu PDF. 6. Vkládání, úprava a uchování zboºí. 7. Import zboºí z externího zdroje. 8. Generování p ehledu prodaného zboºí. 2.1.2 Nefunk ní poºadavky 1. Cenov dostupné e²ení bez pravidelných poplatk. 2. Otev ený zdrojový kód v etn pouºitých knihoven. 3. Vyuºití webových a databázových technologií (PHP, JavaScript, MySQL). 3

4 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE 4. Uloºení dat v rela ní databázi. 5. Moºnost provozu na vlastním serveru. 6. Zabezpe ení p ed neoprávn ným p ístupem. 2.2 Údaje na faktu e 2.2.1 Zákonné náleºitosti faktury V následujícím textu se budu zabývat pouze doklady vydávanými ºivnostníkem, který není plátcem DPH. Doklad vystavený obchodní spole ností by se li²il údajem o zápisu do obchodního rejst íku. Náleºitosti dokladu plátce DPH (da ového dokladu) se ídí Zákonem o DPH a jejich popis by byl nad rámec této práce. Obchodní zákoník [27], ást první, Ÿ 13a stanovuje podnikateli povinnost uvád t na obchodních listinách (v etn faktury): údaj o své rm, jménu nebo názvu, sídle nebo místu podnikání a identika ním ísle, podnikatelé zapsaní v obchodním rejst íku téº údaj o tomto zápisu, v etn spisové zna ky, a podnikatelé nezapsaní v obchodním rejst íku téº údaj o zápisu do jiné evidence, v níº jsou zapsáni. Zákon o ú etnictví [28], ást druhá, Ÿ 11 dále uvání povinnost uvést na faktu e: ozna ení ú etního dokladu, obsah ú etního p ípadu a jeho ú astníky, pen ºní ástku nebo informaci o cen za m rnou jednotku a vyjád ení mnoºství, okamºik vyhotovení ú etního dokladu, okamºik uskute n ní ú etního p ípadu, není-li shodný s okamºikem vyhotovení ú etního dokladu, podpisový záznam podle Ÿ 33a odst. 4 osoby odpov dné za ú etní p ípad a podpisový záznam osoby odpov dné za jeho zaú tování 1. 2.2.2 Stav faktury Nov vystavená faktura bude oza ená jako nezaplacená. Fakturu bude moºné ozna it jako zaplacenou nebo ji stornovat. V p ípad chybného ozna ení bude moºné vrátit stav faktury na nezaplaceno. 1 Uvedený podpisový záznam je povinný aº p i zaú tování na stran odb ratele. Z tohoto bodu nevyplývá povinnost ozna ovat faktury razítkem i podpisem p i vystavení dodavatelem.

2.3. EVIDENCE ZBOšÍ 5 2.2.3 Zp sob platby Systém bude u kaºdé faktury evidovat zp sob její úhrady. Fakturu bude moºné zaplatit hotov, p evodem na ú et nebo dobírkou. 2.2.4 Po²tovné Systém bude provád t automatický výpo et po²tovného. Tento výpo et bude vycházet z p edpokladu, ºe zboºí uvedené na jedné faktu e bude zasláno v jedné zásilce a sou asn v kaºdé zásilce bude zboºí z práv jedné faktury. Pro kaºdý model zboºí bude v systému uloºeno obvyklé po²tovné. Vzhledem k tomu, ºe v prodávaném sortimentu p evaºují zásilky standardních rozm r (doporu ená zásilka, doporu ený balí ek) s hmotností do 2 kg [29], pro jednoduchost se nijak nezohled ují hmotnost a rozm ry jednotlivých kus ani celé zásilky. Nestandardních zásilek je málo a je jednodu²²í e²it je ru n. U faktury placené dobírkou nebo p evodem bude po²tovné za celou fakturu maximem po²tovného ze v²ech model zboºí uvedených na faktu e. U faktury s úhradou v hotovosti bude po²tovné nulové. Ve v²ech p ípadech bude moºné nastavit po²tovné na jinou hodnotu ru n. 2.2.5 Fakturované poloºky Faktura m ºe obsahovat libovolný po et poloºek (zboºí). U kaºdé poloºky se eviduje název zboºí, název modelu, cena za kus, po²tovné a po et kus. V p ípad, ºe dojde ke zm n ceny nebo jiných údaj o zboºí, musí údaje na vystavené faktu e z stat zachovány. 2.3 Evidence zboºí Systém bude evidovat zboºí. Kaºdé zboºí má název. Ke kaºdému zboºí m ºe existovat livolné mnoºství model zboºí. Kaºdý model má sv j název, cenu za kus a po²tovné. 2.4 Evidence uºivatel V systému budou evidováni jeho uºivatelé. Ke kaºdému uºivateli se budou evidovat údaje pro autentizaci, údaje pro autorizaci a faktura ní údaje. Konkrétn se bude jednat o: uºivatelské jméno, heslo (v zakódované podob ), typ uºivatelského ú tu, faktura ní adresu, název banky, íslo ú tu.

6 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE 2.5 Evidence klient Internetový obchod Chytrásek má velký po et klient, kte í v²ak obvykle nakupují v tomto obchod pouze jednou. Nemá smysl je samostatn evidovat, zadávání údaj do evidence by jen zdrºovalo uºivatele a nic by nep ineslo. Klient bude vºdy uveden pouze na faktu e.

Kapitola 3 Existující e²ení 3.1 Fakturoid Fakturoid [10] je online nástroj pro tvorbu a tisk faktur. Jedná se o eský nástroj, který umí vystavovat faktury jak v e²tin a eských korunách, tak i v cizích m nách a v angli tin. Umí ukládat faktury do PDF a zasílat je e-mailem. Obsahuje statistiky a umí p es Iƒ importovat kontaktní údaje klient. Podporuje pravidelné a zálohové faktury a umí automaticky zasílat upomínky. Nabízí import bankovních výpis z vybraných bank. P i fakturaci do 5 klient je moºné nástroj pouºivat zdarma, do 20 klient je cena 150 K /m síc a nad 20 klient je cena 300 K /m síc. Obrázek 3.1 obsahuje ukázku uºivatelského rozhraní. Aplikace Fakturoid spl uje funk ní poºadavky s výjimkou importu dat o zboºí. Je v²ak zpoplatn na p íli² vysokým m sí ním poplatkem. Zdrojové kódy aplikace nejsou dostupné a aplikace neumoº uje pouºití na vlastním serveru. 3.2 Uctujte.cz Systém Uctujte.cz [6] je zjednodu²enou verzí ekonomického systému FlexiBee, který vychází z ekonomického systému WinStrom. Umoº uje p ístup k dat m p es webový prohlíºe, mobilní telefon i tablet i desktopovou aplikaci. V základní verzi do 50 doklad ro n umoº uje pouºívání zdarma. Cena za pouºívání aplikace do 500 doklad ro n je 199 K m sí n a do 2000 doklad ro n 499 K m sí n. Samotný systém FlexiBee je moºné pouºívat i na vlastním serveru. Cena nejlevn j²í verze FlexiBee Mini+, která to umoº uje, je 6490 K. Po et doklad ve verzi zdarma není dostate ný. M sí ní poplatky nebo po izovací cena vy²²í verze jsou p íli² vysoké. Systém obsahuje mnoho funkcionality, která není poºadována. 3.3 Ekonomický systém Pohoda Program Pohoda [26] je komplexní ú etní a ekonomický software pro malé, st ední a v t²í rmy z ad fyzických i právnických osob. Umoº uje vést ú etnictví i da ovou evidenci a bude vyhovovat plátc m i neplátc m DPH. Systém funguje jako desktopová aplikace. Cena základní verze systému Pohoda 2012 Mini je 1 980 K. 7

8 KAPITOLA 3. EXISTUJÍCÍ E ENÍ Obrázek 3.1: Uºivatelské rozhraní nástroje Fakturiod Moºnosti systému spl ují funk ní poºadavky. Systém ale nespl uje v t²inu nefunk ních poºadavk. Nejsou dostupné zdrojové kódy a systém nevyuºívá webových technologií. Základní verzi není moºné provozovat na vlastním serveru. Ve vy²²ích verzích to moºné je, ale je nutné mít na klientských po íta ích nainstalovanou desktopovou aplikaci. 3.4 BambooInvoice BambooInvoice [5] je svobodný software pro tvorbu faktur. Je napsán v PHP a ²í en pod licencí GPL. Umoº uje tvorbu faktur, export do PDF, evidenci zákazník a tvorbu p ehled. Software je moºné provozovat na vlastním serveru. Je poskytován pod vhodnou licencí. Pro jeho pouºití by bylo nutné provést rozsáhlé úpravy, zejména p izp sobit evidované údaje a formát výsledné faktury eským zákon m a doplnit zcela novou funkci evidence zboºí.

Kapitola 4 Analýza Z p edchozí kapitoly vyplývá, ºe ºádné z porovnávaných e²ení nevyhovuje v²em poºadavk m. Jako nejvhodn j²í z uvedených systém se zdá BambooInvoice, bylo by ov²em nutné provést rozsáhlé úpravy, jejichº náro nost by byla srovnatelná s tvorbou nového systému. Proto byla zvolena moºnost tvorby vlastního systému, který bude spl ovat v²echny funk ní i nefunk ní poºadavky. D leºitou sou ástí této kapitoly jsou UML diagramy, p i jejichº tvorb jsem vycházel z knihy UML 2 a unikovaný proces vývoje aplikací [7]. Pro kreslení diagram jsem pouºil nástroj ArgoUML [1]. 4.1 Akté i v systému Akté i nep edstavují konkrétní osoby, ale uºivatelské role. Jeden uºivatel m ºe mít (a asto má) více rolí. Mezi uºivatelskými rolemi m ºe být vztah generalizace. Platí pravidlo, ºe potomek m ºe zastoupit p edka. Přihlášený uživatel Nepřihlášený uživatel Správce faktur Správce uživatelů Obrázek 4.1: Akté i v systému Obrázek 4.1 ukazuje jednotlivé role uºivatel v systému. 9

10 KAPITOLA 4. ANALÝZA Nep ihlá²ený uºivatel p edstavuje uºivatele, který není p ihlá²en do systému. P ihlá²ený uºivatel je uºivatel, který je p ihlá²en do systému. Jeho potomky jsou Správce uºivatel a Správce faktur. Správce uºivatel se stará se o vytvá ení a úpravy dal²ích uºivatel. Správce faktur vystavuje, upravuje a tiskne faktury, zadává a upravuje údaje o zboºí a zobrazuje p ehledy. 4.2 P ípady uºití 4.2.1 Manipulace s fakturami Obrázek 4.2 zobrazuje p ípady uºití pro manipulaci s fakturami. UC_0101_Vypsat_faktury UC_0102_Vytvorit_fakturu Přihlášený uživatel UC_0103_Upravit_fakturu Správce uživatelů Správce faktur UC_0104_Zkopírovat_fakturu UC_0105_Změnit_stav_faktury UC_0106_Vygenerovat_PDF Obrázek 4.2: UC správa faktur UC0101 Vypsat faktury 1. Uºivatel zvolí funkci Vypsat faktury 2. Systém vypí²e v²echny faktury 3. UC kon í

4.2. P ÍPADY UšITÍ 11 UC0102 Vytvo it fakturu 1. Uºivatel zvolí funkci Vytvo it fakturu 2. Systém zobrazí prostor pro zadání údaj s p edvypln ným íslem faktury, datem vystavení a datem splatnosti 3. Uºivatel vyplní údaje na faktu e 4. Systém ov í validitu zadaných údaj a uloºí je 5. ALTERNATIVA: Pokud údaje nejsou validní, návrat na bod 3 bez uloºení 6. UC kon í UC0103 Upravit fakturu 1. Uºivatel vybere fakturu k úprav ze seznamu faktur 2. Pokud je faktura nezaplacená, systém zobrazí údaje o faktu e a zboºí 3. ALTERNATIVA: Pokud je faktura zaplacená nebo stornovaná, systém neumoºní úpravu faktury, UC kon í 4. Uºivatel upraví údaje o faktu e nebo p idá zboºí a potvrdí 5. Systém zvaliduje zadané údaje a uloºí je do databáze 6. ALTERNATIVA: Pokud údaje nejsou validní, návrat na bod 4 bez uloºení 7. Uºivatel m ºe znovu p ejít na bod 4 nebo UC kon í UC0104 Zkopírovat fakturu 1. Uºivatel vybere ze seznamu faktur funkci Zkopírovat u konkrétní faktury 2. Systém zkopíruje v²echny údaje a poloºky na faktu e, vyplní nový variabilní symbol ( íslo faktury), datum vystavení a datum splatnosti 3. UC kon í UC0105 Zm nit stav faktury 1. Uºivatel vybere ze seznamu faktur funkci Zm nit stav faktury 2. Pokud je faktura zaplacená, systém vyplní datum zaplacení a zm ní stav na zaplaceno 3. ALTERNATIVA: Pokud je faktura zaplacená nebo stornovaná, systém se zeptá, zda ozna it fakturu jako nezaplacenou, po potvrzení ji takto ozna í a smaºe datum zaplacení 4. UC kon í

12 KAPITOLA 4. ANALÝZA UC0106 Vygenerovat PDF 1. Uºivatel zvolí ze seznamu faktur volbu Vygenerovat PDF u konkrétní faktury 2. Systém zobrazí fakturu v PDF 3. UC kon í 4.2.2 Manipulace se zboºím Obrázek 4.3 zobrazuje p ípady uºití pro manipulaci se zboºím. UC_0201_Zobrazit_seznam_zboží Přihlášený uživatel UC_0202_Přidat_zboží Správce uživatelů Správce faktur UC_0203_Upravit_zboží UC_0204_Smazat_zboží UC_0205_Importovat_zboží Obrázek 4.3: UC správa zboºí UC0201 Zobrazit seznam zboºí 1. Uºivatel vybere funkci Zobrazit seznam zboºí 2. Systém zobrazí seznam zboºí 3. UC kon í UC0202 P idat zboºí 1. Uºivatel vybere funkci P idat zboºí 2. Systém zobrazí pole pro zadání názvu zboºí

4.2. P ÍPADY UšITÍ 13 3. Uºivatel vyplní název zboºí a potvrdí 4. Systém uloºí údaje o zboºí 5. UC kon í UC0203 Upravit zboºí 1. Uºivatel vybere funkci Upravit u konkrétního zboºí 2. Systém zobrazí název zboºí a názvy, ceny a po²tovné jednotlivých model 3. Uºivatel upraví údaje o zboºí a potvrdí je 4. Systém zvaliduje zadané údaje a uloºí je 5. ALTERNATIVA: Pokud nejsou údaje validní, systém vyzve uºivatele k oprav údaj a pokra uje se bodem 3 6. UC kon í UC0204 Smazat zboºí 1. Uºivatel zvolí moºnost Smazat u konkrétního zboºí 2. Systém ozna í zboºí jako smazané. Zboºí z stane v systému uloºeno, protoºe jiº m ºe být na fakturách. 3. UC kon í UC0205 Importovat zboºí 1. Uºivatel zvolí moºnost Importovat zboºí 2. Systém zobrazí pole pro výb r importovaného souboru a formátu 3. Uºivatel zadá soubor a formát a potvrdí import 4. Systém importuje údaje o zboºí 5. ALTERNATIVA: Zadané údaje nejsou validní, import se neprovede, pokra uje se bodem 3 nebo UC kon í 6. UC kon í 4.2.3 P ehledy Obrázek 4.4 obsahuje p ípad uºití pro zobrazení p ehled.

14 KAPITOLA 4. ANALÝZA Přihlášený uživatel UC_0301_Zobrazit_přehled Správce uživatelů Správce faktur Obrázek 4.4: UC p ehledy UC0301 Zobrazit p ehled 1. Uºivatel zvolí moºnost P ehledy 2. Systém zobrazí pole pro zadání data za átku a data konce p ehledu 3. Uºivatel vyplní pole 4. Systém zobrazí p ehled v uvedeném asovém rozsahu 5. ALTERNATIVA: Zadané údaje nejsou validní, p ehled se nezobrazí, pokra uje se bodem 3 nebo UC kon í 6. UC kon í 4.2.4 Manipulace s uºivatelskými ú ty Obrázek 4.5 zobrazuje p ípady uºití pro manipulaci s uºivatelskými ú ty. UC0401 P ihlásit se 1. Nep ihlá²ený uºivatel vstoupí do aplikace 2. Systém zobrazí pole pro zadání uºivatelského jména a hesla 3. Uºivatel vyplní uºivatelské jméno a heslo 4. Systém ov í zadané údaje a role uºivatele se zm ní na Správce faktur nebo Správce uºivatel 5. ALTERNATIVA: Zadané údaje nejsou validní, systém zobrazí informaci o této skute nosti a pokra uje se bodem 2 6. UC kon í

4.2. P ÍPADY UšITÍ 15 UC_0401_Přihlásit_se Nepřihlášený uživatel UC_0402_Změnit_heslo Přihlášený uživatel UC_0403_Odhlásit_se UC_0404_Vytvořit_uživatele UC_0405_Zobrazit_seznam_uživatelů Správce faktur Správce uživatelů UC_0406_Upravit_uživatele Obrázek 4.5: UC správa uºivatel UC0402 Zm nit heslo 1. Uºivatel vybere volbu Zm nit heslo 2. Systém zobrazí pole pro zadání stávajícího a nového hesla 3. Uºivatel vyplní pole 4. Systém zvaliduje heslo a uloºí jej v zakódované podob 5. ALTERNATIVA: Zadané stávající heslo není v po ádku, pokra uje se bodem 2 nebo UC kon í 6. UC kon í UC0403 Odhlásit se 1. Uºivatel zvolí moºnost Odhlásit se 2. Systém odhlásí uºivatele a role se zm ní na Nep ihlá²ený uºivatel 3. UC kon í

16 KAPITOLA 4. ANALÝZA UC0404 Vytvo it uºivatele 1. Uºivatel vybere moºnost Vytvo it uºivatele 2. Systém zobrazí pole pro zadání uºivatelského jména, hesla, role, faktura ní adresy, názvu banky a ísla ú tu 3. Uºivatel vyplní údaje 4. Systém zvaliduje zadané údaje a uloºí je 5. ALTERNATIVA: Zadané údaje nejsou v po ádku, opravou údaj podle bodu 2 nebo UC kon í 6. UC kon í UC0405 Zobrazit seznam uºivatel 1. Uºivatel vybere moºnost Zobrazit uºivatele 2. Systém zobrazí seznam v²ech uºivatel systému 3. UC kon í UC0406 Upravit uºivatele 1. Uºivatel vybere u konkrétního uºivatele moºnost Upravit uºivatele 2. Systém zobrazí p edvypln ná pole (uºivatelské jméno, role, faktura ní adresa, název banky a íslo ú tu) a dv prázdná pole pro heslo 3. Uºivatel opraví nebo vyplní poºadované údaje 4. Systém zvaliduje zadané údaje a uloºí je 5. ALTERNATIVA: Zadané údaje nejsou v po ádku, pokra uje se bodem 3 nebo UC kon í 6. UC kon í 4.3 Volba technologií Jazyk PHP V zadání je explicitn uveden jazyk PHP, takºe v tomto jazyce provedu implementaci práce. Vzhledem k rozsahu projektu povaºuji tento jazyk za nejvhodn j²í. Dal²ími moºnostmi jsou nap íklad jazyky Java, Python nebo Ruby s vyuºitím pat i ného frameworku. HTML a CSS Pouºití zna kovacího jazyka HTML a kaskádových styl (CSS) vyplývá ze skute nosti, ºe se bude jednat o webovou aplikaci.

4.4. VÝB R KNIHOVEN 17 Databáze MySQL Data aplikace budou ukládána v rela ní databázi. Zvolil jsem databázový systém MySQL, s nímº jiº mám zku²enosti z jiných aplikací v PHP. Díky standardizaci jazyka SQL by v²ak po drobných úpravách m lo být moºné pouºít i jiný databázový systém. Webový server Apache Aplikace bude vyvíjena a testována na webovém serveru Apache, ale bude moºné ji provozovat i na jiném webovém serveru s podporou PHP. 4.4 Výb r knihoven Nette Framework Implementaci aplikace provedu ve frameworku Nette [4]. Jedná se o eský framework pro tvorbu webových aplikací v PHP. Framework jsem zvolil proto, ºe s ním jiº mám zku²enosti z d ív j²í doby. Komponenta DataGrid DataGrid [24] je komponenta pro Nette. Komponenta výrazn zjednodu²uje tvorbu p ehledových tabulek a zaji² uje vizuální prezentaci t chto dat uºivateli. Umoº uje data rychle t ídit, ltrovat a manipulovat s nimi uºivatelsky denovanými rutinami. V aplikaci bude pouºita upravená verze [22]. Knihovna mpdf Knihovna mpdf [16] umoº uje generovat dokumenty ve formátu PDF. Je zaloºena na knihovn FPDF. Soubor ve formátu PDF je generován z HTML ²ablony. Knihovna dibi Framework Nette obsahuje vlastní vrstvu pro práci s databází [19]. Tato ást frameworku, která vychází z knihovny NotORM [9], v²ak byla do frameworku p idána pom rn nedávno a nepovaºuji ji za ov enou a dostate n stabilní. Dostupná dokumentace je navíc pom rn stru ná. Z t chto d vod jsem pro práci s databází zvolil knihovnu dibi [2], která usnad uje a zp ehled uje zápis SQL dotaz. Jedná se o tenkou vrstvu pro p ístup k databázi. Vzhledem k rozsahu projektu povaºuji knihovnu za vhodné e²ení, pro v t²í projekt by bylo vhodn j²í pouºít ORM (nap. Doctrine 2 [13]). Knihovna jquery Knihovna jquery [14] klade d raz na interakci mezi JavaScriptem a HTML. Z velké ásti eliminuje problémy s r znou implementací JavaScriptu ve webových prohlíºe ích. Umoº uje snadno vytvá et stránky vyuºívající AJAX. Srovnatelnou alternativou k jquery je knihovna Prototype [21]. Knihovna jquery UI Knihovna jquery UI [15] je JavaScriptový framework. Uleh uje implementaci pokro ilých efekt. V systému bude vyuºita nap íklad pro zadávání data vystavení, splatnosti a zaplacení faktury.

18 KAPITOLA 4. ANALÝZA

Kapitola 5 Návrh a implementace 5.1 Návrh databáze Pro vytvo ení struktury databáze byl pouºit nástroj MySQL Workbench [23]. Jedná se o nástroj p ímo od rmy Oracle, který je dostupný zdarma pro Windows, Linux a Mac OS pod licencí GPL a komer ními licencemi. Obrázek 5.1 znázor uje strukturu databáze systému. rows id INT(10) name VARCHAR(64) model VARCHAR(64) price DECIMAL(10,2) shipping DECIMAL(10,2) count INT(11) prices_id INT(11) docs_id INT(10) Indexes prices id INT(10) goods_id INT(10) model VARCHAR(64) price DECIMAL(10,2) shipping DECIMAL(10,2) Indexes docs id INT(10) number INT(10) date DATE date_pay DATE date_paid DATE customer TEXT shipping DECIMAL(10,2) type INT(11) status INT(11) note TEXT users_id INT(10) Indexes goods id INT(10) name VARCHAR(64) users_id INT(10) deleted INT(10) Indexes users id INT(10) login VARCHAR(64) password VARCHAR(64) role VARCHAR(64) address TEXT bank VARCHAR(64) account VARCHAR(64) Indexes Obrázek 5.1: Databáze systému 19

20 KAPITOLA 5. NÁVRH A IMPLEMENTACE Tabulka users Obsahem tabulky jsou vlastnosti uºivatel systému. Jedná se o údaje pro autorizaci a autentizaci (login, password, role) a faktura ní údaje (address, bank, account). Tabulka docs V tabulce jsou uloºeny hlavi ky jednotlivých faktur. Jedná se o íslo faktury (number), datum vystavení, splatnosti a zaplacení (date, date_pay, date_paid), údaje o zákazníkovi (customer), manuáln nastavené po²tovné (shipping), zp sob úhrady (type), stav faktury (status), poznámku (note) a cizí klí na vlastníka faktury (users_id). Tabulka goods Obsahem tabulky je zboºí v systému. Jedná se o název zboºí (name), p íznak smazání (deleted) a cizí klí na vlastníka zboºí (users_id). Tabulka prices Obsahem tabulky jsou názvy (model) a ceny (price) jednotlivých model zboºí. Tabulka dále obsahuje minimální po²tovné za model zboºí (shipping). K p i azení modelu ke zboºí slouºí cizí klí na tabulku goods (goods_id). Tabulka rows V tabulce jsou uloºeny jednotlivé poloºky faktury. Vzhledem k tomu, ºe v pr b hu asu m ºe dojít ke zm n názvu zboºí i zm n názvu, ceny a po²tovného pro model zboºí, obsahuje tabulka hodnoty t chto údaj v dob p idání zboºí na fakturu (name, model, price, shipping). Dále obsahuje po et kus (count), cizí klí e na fakturu (docs_id) a na model zboºí (prices_id). 5.2 Zabezpe ení 5.2.1 Autentizace a autorizace P ihla²ování uºivatel a ov ování uºivatelských rolí obstarává p ímo framework Nette bez nutnosti zásahu programátora. P i prvním p ístupu na webovou stránku je vygenerováno tzv. Session ID, které je uloºeno jak na stran klienta (ve form cookies), tak na stran serveru. Pomocí tohoto ID se prokazuje, ºe se jedná o stále stejného klienta. 5.2.2 Hesla Hesla nejsou v databázi uloºena v istém textu, ale jsou zakódována pomocí algoritmu md5. Pro zvý²ení bezpe nosti je p idána tzv. salt, takºe na za átek kaºdého hesla je p ed zavoláním algoritmu md5 p idán et zec znak. 5.2.3 Ochrana proti XSS Jednou z nej ast j²ích zranitelností webových aplikací je Cross site scripting (XSS). Útok XSS je zneuºitím neo²et ených výstup. Princip útoku spo ívá v tom, ºe úto ník podstr í do stránky vlastní skript. Tento typ útoku se asto vyskytuje nap íklad v diskuzních fórech. O ochranu proti XSS se stará p ímo framework Nette [18].

5.3. ARCHITEKTURA APLIKACE 21 5.2.4 Ochrana proti CSRF Útok CSRF ( teno jako sea-surf) je druh útoku, kdy p im jeme uºivatele nav²tívit stránku, která skryt vykoná p ístup na webovou aplikaci, ve které je uºivatel práv p ihlá²en. Uºivatel tak neúmysln a bez svého v domí spustí akci na na svém ú tu v rámci této aplikace. Framework Nette obsahuje vestav nou ochranu formulá proti CSRF [18]. 5.2.5 Ochrana proti SQL injection Dal²ím druhem útoku je vloºení SQL dotazu z webu, které je známé jako SQL injection. Uºivatel by mohl vloºit dotaz nap íklad do formulá e pro p ihlá²ení nebo do jména zákazníka i názvu zboºí. Tím by se mohl nep ihlá²ený i p ihlá²ený uºivatel dostat k dat m ostatních uºivatel nebo provést jejich úpravu i smazání. Pouºitá databázová vrstva dibi zahrnuje ochranu proti útoku SQL injection [3]. 5.3 Architektura aplikace Aplikace vyuºívá architektury MVC. 5.3.1 Model Modelová komponenta systému postihuje aplika ní logiku. Spravuje sv j vnit ní stav a je moºné volat jeho metody, kterými lze tento stav m nit. Model neví o existenci a stavu View a Controlleru. Framework Nette v pouºité verzi obsahuje obsahuje podporu Dependency injection [17], kterou jsem vyuºil pro práci s instancemi modelových t íd. T ída ModelLoader V konguraci je nastaveno, ºe se instance této t ídy vytvo í jako sluºba. Do konstruktoru t ídy je p edána kongurace databáze. Sluºba je pak dostupná v kaºdém presenteru a jejím prost ednictvím se vytvá i instance konkrétních model, a to aº ve chvíli, kdy je toho t eba. T ída Base T ída je spole ným p edkem v²ech t íd modelové ásti aplikace (s výjimkou t ídy ModelLoader). Konstruktor této t ídy p ijímá parametr typu \Nette\DI\Container, jehoº instanci si uloºí pro dal²í pouºití. Pomocí metody getuser() je moºné získat p ihlá²eného uºivatele. Pomocí metody getdatabase() je moºné získat p ipojení k databázi. T ída Users T ída implementuje rozhraní Nette\Security\IAuthenticator, aby mohla slou- ºit k p ihla²ování uºivatel v rámci frameworku Nette. Dále obsahuje metody pro vytvo ení, tení a úpravu uºivatelských údaj a metody pro zm nu hesla uºivatele. T ída Docs T ída umoº uje íst, vytvá et a upravovat faktury a poloºky faktur. Pro kaºdého uºivatele t ída umoº uje pracovat jen s údaji o jeho vlastních fakturách. To je zaji²t no pomocí metody getuser() z rodi ovské t ídy Base.

22 KAPITOLA 5. NÁVRH A IMPLEMENTACE T ída Goods T ída umoº uje íst, vytvá et a upravovat zboºí a modely zboºí v etn cen. Podobn jako t ída Docs umoº uje kaºdému uºivateli pracovat jen s vlastním zboºím. T ída Summary T ída obsahuje metody pro získání p ehledu. 5.3.2 View Komponenta View p evádí data do podoby vhodné k interaktivnímu zobrazení uºivateli. V Nette Framework je tvo ena zejména tzv. Latte ²ablonami. ablonovací systém Latte usnad uje tvorbu ²ablon ve srovnání s istým PHP. Slouºí k tomu makra a helpery. Dále podporuje nap íklad automatické escapování obsahu prom nné. Makra Makro v latte se zapisuje mezi závorky { a }. Pokud mezi závorky napí²eme název prom nné, vypí²e se její obsah s vyuºitím escapování. Helpery Helper je jednoduchá funkce, jejímº prvním parametrem je obvykle et zec. Dal²í parametry ur ují zp sob, jakým bude et zec zformátován. Funkce vrací et zec, který se vypí²e na výstup. Helpery se pouºívají nap íklad pro formátování data a íselných údaj. V Latte je vestav no n kolik helper pro obvyklé pouºití. Krom vestav ných helper je moºné vytvo it i vlastní helpery. V aplikaci jsou helpery czdate, czmoney, docstatus a docpayment. Ty slouºí k formátování výpisu data v eském formátu, ástky v eských korunách, stavu faktury a zp sobu platby. 5.3.3 Controller Obdobou Controller v Nette jsou Presentery [20]. Presenter je t ída, která je obvykle potomkem t ídy \Nette\Application\UI\Presenter. Zpracovává poºadavky uºivatele, na jejich základ volá model a ºádá view o zobrazení dat. Presentery mají n kolik druh metod. Nejd leºit j²í z nich jsou akce, které slouºí k zobrazení stránky, a signály, které slouºí k vykonání operace. Presentery v aplikaci tvo í hierarchii, která do jisté míry odpovídá uºivatelským rolím. BasePresenter Tento presenter je potomkem t ídy \Nette\Application\UI\Presenter a zárove p edkem v²ech ostatních presenter v aplikaci. Jeho úkoly jsou následující: umoº uje p ístup do aplikace pouze p ihlá²enému uºivateli, na základ role uºivatele vytvá í odpovídající nabídku (menu), roz²i uje výchozí Nette formulá e o DatePicker [25] a vlastní helpery, obsahuje formulá a zpracování formulá e pro zm nu hesla, obsahuje metody invalidateformcontrol a invalidatevalue, coº jsou univerzální metody pro AJAX formulá e.

5.4. JAVASCRIPT NA STRAN KLIENTA 23 SingPresenter uºivatele. Je sou ástí distribude frameworku a slouºí k p ihla²ování a odhla²ování ErrorPresenter Je sou ástí distribude frameworku a slouºí k zobrazování chyb. Pokud se v aplikaci vyskytne výjimka, tento presenter zobrazí chybovou stránku podle typu výjimky. DocsPresenter Slouºí pro práci s fakturami. Je p ístupný pouze uºivatel m v roli Správce faktur. Akce default slouºí k zobrazení seznamu faktur. Akce doc2 slouºí pro vytvo ení nebo editaci faktury. Akce pdf slouºí k vygenerování faktury ve formátu pdf. Signál pay slouºí k ozna ení faktury jako zaplacené. Signál renew slouºí k ozna ení faktury jako nezaplacené. Signál copy slouºí k vytvo ení kopie faktury. Signály changemodel a changename slouºí k dynamickým zm nám select box p i editaci faktury. Továrni ka createcomponentdatagrid slouºí k vytvo ení komponenty pro výpis seznamu faktur. GoodsPresenter faktur. Slouºí pro práci se zboºím. Je p ístupný pouze uºivatel m v roli Správce SummaryPresenter v roli Správce faktur. Slouºí pro zobrazování p ehled. Je p ístupný pouze uºivatel m UsersPresenter Slouºí pro správu uºivatelských ú t v etn zm ny hesel. Je p ístupný pouze uºivatel m v roli Správce uºivatel. 5.4 JavaScript na stran klienta Ke zprovozn ní AJAX je pouºita upravená knihovna [11]. Pro zprovozn ní dopl ku DatePicker s eskou lokalizací byl pouºit kód z [12]. JavaScript je dále vyuºit pro validaci formulá a pro zprovozn ní DataGridu. 5.5 Uºivatelské rozhraní Pro aplikaci jsem vytvo il jednoduché uºivatelské rozhraní. Obrázek 5.2 obsahuje jeho ukázku. Navíc je v systému vyuºito originální gracké rozhraní dopl k DatePicker a DataGrid.

24 KAPITOLA 5. NÁVRH A IMPLEMENTACE Obrázek 5.2: Uºivatelské rozhraní

Kapitola 6 Testování 6.1 Uºivatelské testování Testování aplikace probíhalo pr b ºn od po átku vývoje systému. První fázi testování jsem provád l sám p ímo p i vývoji. Zárove jsem pr b ºn odstra- oval chyby. Druhou fázi testování provád l p ímo koncový uºivatel systému. V po átku vývoje jsem testovací verzi za tímto ú elem zprovoznil na serveru dostupném na internetu. Pozd ji byl systém nainstalován p ímo na serveru u koncového uºivatele. Hlá²ení chyb probíhalo prost ednictvím e-mailu. Uvádím n kolik p íklad chyb, které byly nahlá²eny p ímo koncovým uºivatelem: po zm n po tu zboºí na faktu e a stisknutí klávesy enter do²lo k vymazání poloºky, u faktury jde zadat stav zaplaceno, aniº by bylo uvedeno datum zaplacení, v PDF chybí po²tovné a celková ástka, datum na faktu e není v eském formátu, na faktu e není uveden variabilní symbol a forma úhrady. V²echny nahlá²ené problémy byly v pr b hu lad ní odstran ny. 6.2 Testování bezpe nosti 6.2.1 Útok XSS P i testování jsem se pokou²el vloºit JavaScriptový kód do ozna ení zákazníka, názvu zboºí a modelu zboºí. Tento kód v²ak byl vyescaponán ²ablonovacím systémem Latte a ke spu²t ní skriptu nedo²lo. Uºivatelem zadané údaje se navíc zobrazí pouze v rámci jeho ú tu. Z toho vyplývá, ºe pokud by escapování nebylo funk ní, neohrozilo by to ostatní uºivatele systému. 25

26 KAPITOLA 6. TESTOVÁNÍ 6.2.2 Útok CSRF P i testování jsem se nejd íve pokusil provést útok na formulá. Tam nebyl útok úsp ²ný, protoºe formulá e ve frameworku Nette obsahují speciální token. Tento token je náhodn vygenerováný a úto ník jej nem ºe p edem znát. Kaºdý token je vyuºit pouze jednou, ímº se navíc zabrání opakovanému odeslání formulá e. Narazil jsem v²ak na problém u ostatních akcí. Bylo by moºné, aby úto ník metodou CSRF ozna il fakturu jako zaplacenou, nezaplacenou nebo provedl smazání zboºí. Úto ník by v²ak musel znát formát URL adres v rámci systému a id modikované poloºky v databázi. Nedostatek jsem odstranil p idáním tokenu pro ochranu proti CSRF i do v²ech akcí. 6.2.3 Útok SQL injection P i testování jsem se pokusil vloºit SQL dotaz do formulá. Konkrétn jsem do pole Login p ihla²ovacího formulá e vloºil et zec: a '; DELETE FROM users WHERE '1 Pokud by aplikace nebyla chrán na proti SQL injection, do²lo by ke spu²t ní dotaz, které mohou potenciáln smazat obsah tabulky users. SELECT * FROM users WHERE login =' a '; DELETE * FROM users WHERE '1 '; Díky knihovn dibi v²ak dojde k vyescaponání apostrofu, takºe se spustí dotaz v následující podob : SELECT * FROM users WHERE login =' a\'; DELETE * FROM users WHERE \ '1 '; Tento dotaz patrn vrátí nulový po et ádk, ale nezp sobí ºádné ohroºení dat v aplikaci. 6.3 Testování p ístupnosti a pouºitelnosti 6.3.1 Validace HTML Zdrojový kód n kolika stránek webu jsem vloºil do validátoru na adrese http://validator.w3c.org/. Stránky jsou validní podle deklarovaného doctype HTML5. Výsledek jednoho z test ukazuje obrázek 6.1. 6.3.2 Zobrazení v r zných prohlíºe ích Aplikace se b ºn pouºívá v prohlíºe i Mozilla Firefox. V rámci testování jsem ji v²ak zkou²el otev ít v prohlíºe ích Internet Explorer (IE) ve verzích 6, 7 a 8, Google Chrome a Opera. Mezi prohlíºe i byly drobné rozdíly ve vzhledu stránky, ale itelnost obsahu a pouºitelnost aplikace z stala zachována.

6.3. TESTOVÁNÍ P ÍSTUPNOSTI A POUšITELNOSTI 27 Obrázek 6.1: Validace kódu stránky 6.3.3 Vypnutí CSS a obrázk Pokud je struktura stránek aplikace správn navrºena, m la by aplikace být pouºitelná i po vypnutí kaskádových styl a obrázk. P i testování jsem provedl vypnutí CSS a obrázk v prohlíºe i Mozilla Firefox. Vzhled stránky se zm nil, jak ukazuje obrázek 6.2, ale funk nost v²ech prvk z stala zachována. 6.3.4 Vypnutí JavaScriptu V ideálním p ípad by aplikace s vypnutým JavaScriptem m la poskytovat stejné funkce jako s podporou JavaScriptu. Po et uºivatel, kte í mají JavaScript zcela vypnutý, je v²ak tak malý, ºe se od tohoto e²ení v praxi ob as upou²tí. Aplikaci jsem testoval s vypnutým JavaScriptem v prohlíºe i Mozilla Firefox. Prohlíºení v²ech stránek v etn generování PDF a zadávání zboºí bylo funk ní, pouze validace formulá probíhala aº na stran serveru. Funk ní v²ak nebylo p idávání a úprava poloºek na faktu e. Vzhledem k tomu, ºe tato funkce je e²ena dynamickými Select Boxy, není moºné podporu bez JS jednodu²e doplnit. 6.3.5 Kontrola formulá Framework Nette obsahuje ²irokou nabídku nástroj pro validaci formulá. Obsah textových polí je moºné validovat podle p eddenovaných funkcí nebo pomocí regulárních výraz. Dále se nap íklad kontroluje, zda vybraná hodnota v Select Boxu je z mnoºiny povolených hodnot. P i testování jsem se pokou²el do polí zadávat nepovolené hodnoty. U n kterých polí jsem zjistil, ºe jsem zapomn l nastavit validaci. Tyto chyby jsem opravil. Pokud byla validace správn nastavena, fungovala bez problém.

28 KAPITOLA 6. TESTOVÁNÍ Obrázek 6.2: Vzhled stránky bez CSS