České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů
Bakalářská práce
Rezervační systém carsharingové společnosti Ondřej Nebeský
Vedoucí práce: Ing. Martin Komárek
Studijní program: Softwarové technologie a management Obor: Softwarové inženýrství 8. června 2009
i
Poděkování Rád bych poděkoval všem členům teamu, kteří se podíleli na tomto projektu, za jejich ochotu pracovat do pozdních nočních hodin a jejich vytrvalost. Dále bych chtěl poděkovat vedoucímu práce, panu Ing. Martinu Komárkovi, za jeho nápady, aktivní účast, pohotové obstarání veškerého hardware a čas, který projektu věnoval.
ii
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). Souhlasím s šířením díla pod BSD licencí.
V Praze dne 5. 6. 2009
.............................................................
iv
Abstract The bachelor project is focused on analysis, design and implementation of a booking system for a carsharing company. Software enables users to show car locations on the map, book a car and view statistics of their own journeys, allows the operator monitor car expenses and creation of new branches. Result of this bachelor project is functional system prepared for field test.
Abstrakt Náplní bakalářské práce je analýza, návrh a implementace rezervačního systému pro carsharingovou společnost. Systém umožňuje uživatelům zobrazit rozmístění automobilů na mapě, jejich rezervaci a sledování vlastních jízd, dovoluje provozovateli systému sledovat náklady na provoz vozidla a podporuje vznik poboček. Výsledkem této práce je funkční systém připravený pro zkušební provoz.
v
vi
Obsah 1 Úvod
1
2 Popis problému a cíle práce 2.1 Modely car-sharingu . . . 2.2 Ochrana osobních údajů . 2.3 Provozní náklady . . . . . 2.4 Slovník pojmů a zkratek .
. . . .
3 3 3 4 4
. . . . . . . . .
5 5 5 6 6 6 7 7 7 8
. . . . . . . . . . . . . .
9 9 9 11 12 12 12 12 12 12 12 13 13 14 14
. . . .
. . . .
. . . .
. . . .
. . . .
3 Existující řešení 3.1 Společnosti provozující car-sharing 3.1.1 Zipcar . . . . . . . . . . . . 3.1.2 City CarShare . . . . . . . 3.1.3 GreenWheels . . . . . . . . 3.1.4 Mobility CarSharing . . . . 3.2 Software pro carsharing . . . . . . 3.2.1 eileo . . . . . . . . . . . . . 3.2.2 Autovera . . . . . . . . . . 3.3 Vyhodnocení existujících řešení . . 4 Analýza 4.1 Katalog požadavků . . . . . . 4.1.1 Funkční požadavky . . 4.1.2 Nefunkční požadavky 4.2 Uživatelské role . . . . . . . . 4.2.1 Nepřihlášený uživatel 4.2.2 Zákazník . . . . . . . 4.2.3 Manager . . . . . . . . 4.2.4 Technik . . . . . . . . 4.2.5 Administrátor . . . . . 4.3 Správa vozového parku . . . . 4.4 Evidence nákladů za palivo . 4.5 Rezervace . . . . . . . . . . . 4.6 Kniha jízd . . . . . . . . . . . 4.6.1 Životní cyklus jízdy .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
vii
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . .
. . . . . . . . .
. . . . . . . . . . . . . .
viii
OBSAH
5 Návrh 5.1 Výběr CMS . . . . . . . . . . . . . . . . . 5.1.1 InfoGlue . . . . . . . . . . . . . . . 5.1.2 Joomla! . . . . . . . . . . . . . . . 5.1.3 Drupal . . . . . . . . . . . . . . . . 5.1.4 typo3 . . . . . . . . . . . . . . . . 5.1.5 Vyhodnocení . . . . . . . . . . . . 5.2 Komponenty systému a jeho nasazení . . 5.3 Návrh databázového schéma . . . . . . . . 5.3.1 Uživatelé . . . . . . . . . . . . . . 5.3.2 Rezervace a jízdy . . . . . . . . . . 5.3.3 Vozový park a parkoviště . . . . . 5.4 Komunikace s palubními jednotkami . . . 5.4.1 Strukura a zabezpečení . . . . . . 5.4.2 Data . . . . . . . . . . . . . . . . . 5.5 SMS komunikace . . . . . . . . . . . . . . 5.5.1 Možnosti příjmu a odesílání zpráv 5.5.2 Formát zpráv . . . . . . . . . . . . 6 Implementace 6.1 Přístupová práva . . . . . . . . . 6.1.1 Výpis uživatelských práv 6.2 Struktura modulu a architektura 6.2.1 Architektura . . . . . . . 6.2.2 metrocar.install . . . . . . 6.2.3 metrocar.info . . . . . . . 6.2.4 metrocar.module . . . . . 6.3 Konvence . . . . . . . . . . . . . 6.4 Formuláře . . . . . . . . . . . . . 6.5 Překlad rozhraní . . . . . . . . . 6.6 Franchising . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
19 19 19 19 20 20 20 21 21 21 21 22 23 23 23 24 24 25
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
29 29 30 30 30 31 31 32 32 33 34 34
7 Testování 7.1 Metody testování . . . . . . . . . . 7.2 Simpletest . . . . . . . . . . . . . . 7.3 Implementace testů . . . . . . . . . 7.4 Testování komunikačního rozhraní 7.5 Zhodnocení testování . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
37 37 37 38 38 39
8 Závěr 8.1 Budoucí práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41 41
Literatura
43
9 Přílohy
45
Seznam obrázků 4.1 4.2 4.3 4.4 4.5
Případ užití - správa agendy Diagram stavů - účtenka . . Diagram stavů - rezervace . Případ užítí - kniha jízd . . Diagram stavů - jízda . . .
aut . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
15 16 16 17 17
5.1 5.2
Kompletní schéma databáze . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagram nasazení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26 28
6.1
Proces zpracování formuláře . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
7.1
Zobrazení výsledku neúšpěšného testu . . . . . . . . . . . . . . . . . . . . .
38
ix
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
x
SEZNAM OBRÁZKŮ
Kapitola 1
Úvod Car-sharing je služba, která svým zákazníkům umožňuje využívat automobil, aniž by jej museli vlastnit, či se starat o jeho provoz a údržbu. Služba tak doplňuje nabídku veřejné dopravy o možnost využívání individuálních jízdních prostředků. Car-sharing je ve světě již poměrně běžnou záležitostí, funguje v mnoha velkých městech [3]. Jednotlivá auta jsou rovnoměrně rozmístěna po městě a k jejich půjčení postačí pouhá rezervace přes internet nebo SMS, před jízdou není potřeba vyplňovat novou smlouvu jako v autopůjčovně. Jednou z nesporných výhod je šetrnost k životnímu prostředí a možné snížení počtu automobilů v hustě osídlených aglomeracích.
1
2
KAPITOLA 1. ÚVOD
Kapitola 2
Popis problému a cíle práce Projekt Metrocar se zabývá vývojem podpůrného software pro car-sharingovou společnost [1], která se stará se o jejich provoz a údržbu. Uživatel je díky rezervačnímu systému schopný najít pozici auta na mapě a rezervovat automobil na určitý časový úsek. Tato bakalářská práce se zabývá pouze webovým rozhraním, konkrétně rezervačním systémem, agendou automobilů, knihou jízd, správou uživatelů a komunikací s automobily. Fakturování, výpočet ceny za jízdu, ceníky a další finanční záležitosti nejsou zahrnuty v této práci. Kompletní řešení v sobě dále zahrnuje palubní jednotku každého vozu, která autentizuje uživatele pomocí RFID karty, odemyká vůz, sbírá souřadnice z GPS a odesílá je na server. Rezervační systém je vyvíjen jako modul do CMS Drupal (více v návrhu 5.1.3) pod BSD licencí. Projekt bude pravděpodobně nasazen do zkušebního provozu již v roce 2009 a posléze by mohl zpřístupnit car-sharing pro širší veřejnost.
2.1
Modely car-sharingu
Carsharing v České republice existuje zatím pouze v podobě, kde uzavřená komunita uživatelů sdílí několik málo automobilů, které sami vlastní[6]. Uživatelé se mezi sebou navzájem znají a automobil si rezervují pomocí jednoduché rezervační aplikace, správu nákladů na vozidlo řeší sám majitel. Vzhledem k nízkému počtu aut má každý uživatel vlastní klíč od auta. Model, pro který je určený tento software, připomíná více autopůjčovnu. Automobily vlastní jeden majitel, který je za poplatek nabízí ostatním účastníkům. Automobily jsou zaparkovány na různých místech po celém městě a každý uživatel je oprávněn půjčit si jakýkoliv automobil. Přístup do automobilu je potom řešen pomocí RFID karet a palubní jednotky v každém automobilu. Oproti autopůjčovně odpadá podepisování smlouvy před každou cestou a automobil je i lépe využitý, protože lze vypůjčit na krátký časový úsek.
2.2
Ochrana osobních údajů
Pozice automobilů jsou pravidelně ukládány na server a to pokaždé, když se automobil uvede do pohybu. Teoreticky je tak možné sledovat pohyb zákazníků v reálném čase, popřípadě zpětně zrekonstruovat celou cestu. Ačkoliv cíl cesty není podle zákona o ochraně osobních údajů [5] považován za osobní údaj, skutečnost, že někdo může sledovat pohyb 3
4
KAPITOLA 2. POPIS PROBLÉMU A CÍLE PRÁCE
automobilů, by mohla odradit některé zákazníky od používání služby. Z tohoto důvodu byl již od počátku vývoje projektu kladen důraz na ochranu osobních údajů, aby nikdo z vedení společnosti neviděl víc údajů o pozici nebo cestě než nezbytně potřebuje. Systém nicméně uchovává osobní údaje o zákaznících, takže je na zákon o osobních údajích potřeba brát ohled a osobní údaje zabezpečit. Primární úlohou palubní jednotky ve vozidle během cesty je sbírání zeměpisných souřadnic, ze kterých se posléze vypočítá délka cesty, souřadnice jako takové jsou důležité až teprve v okamžiku zaparkování a vrácení vozidla k zobrazení polohy na mapě pro dalšího zákazníka.
2.3
Provozní náklady
Jedním z hlavních cílů celého projektu je snížit provozní a administrativní náklady na minimum. Co nejvíce úkonů je pokud možno směrováno přímo na zákazníky a společnost tak potřebovala minimum zaměstnanců. Zákazníci mohou například sami tankovat palivo a kontrolovat stav vozu. S automobilem tak přijde zaměstnanec do kontaktu jenom jednou za čas při pravidelné prohlídce.
2.4
Slovník pojmů a zkratek
GPS
GPRS
RFID
Palubní jednotka
UML IMEI CMS
zkratka pro Global Positioning System, navigační systém, který umožní určit zeměpisnou polohu kdekoliv na planetě. GPS příjmač v každém voze sbírá informace o aktuální pozici automobilu. je zkratka pro General Packet Radio Service, technologii umožňující připojení na mobilní internet. GPRS modem v každém voze zprostředkovává připojení k internetu a k centrální databázi informačního systému. zkratka pro Radio-frequency identification. Každý uživatel má svoji unikátní přístupovou kartu (v systému označenou jako RFID kartu), která po přiložení ke čtečce ve vozidle identifikuje zákazníka a odemkne dveře. V tomto textu je palubní jednotka označení pro zařízení namontované v každém automobilu, které se skládá z GPRS modemu, GPS příjmače, čtečky RFID karet a vlastního počítače. Unified Modelling Language. Dnešní standard pro kresení diagramů při návrhu software. Unikátní číslo GRPS modemu v palubní jednotce, podle kterého jsou rozlišovány jednotlivé automobily. Content Management System - systém pro správu obsahu známý také jako redakční systém.
Kapitola 3
Existující řešení Společnosti, provozující službu používají většinou vlastní software, nicméně je dobré zaměřit se alespoň na hlavní rysy těchto uzavřených systému. Srovnání společností vychází z rešerše Radka Rejfíře [4], zde jsou zmíněny pouze ty nejvýznamější. Druhá část kapitoly se zaměřuje na software, který je možné přímo použít ke sdílení automobilů. Seznam všech provozovatelů lze najít na wikipedii [3].
3.1 3.1.1
Společnosti provozující car-sharing Zipcar
Lokace: Východní a západní pobřeží USA, Londýn UK Společnost založená v roce 1999 vlastní cca 5500 aut na území USA a UK. Uživatelé mají možnost zobrazit lokaci aut na internetu a zároveň provést online nebo telefonicky rezervaci daného auta. Každá rezervace zahrnuje ujetí 180 mil každý den rezervace. Každé auto má své domovské parkoviště. Člen Zipcar obdrží po registraci přístupovou kartu, která otevře pouze auto které rezervovali v době rezervace. Lokace aut nejsou při pohybu sledovány, tuto funkci však lze zapnout pokud je to nutné. Data odesílaná při provozu pomocí bezdrátového spojení jsou pouze čas a ujeté kilometry. Auta obsahují takzvanou ‘kill’ funkci, která znemožní nastartování auta v případě krádeže. Nabízí speciální programy pro obchodní členy a pro partnerství s vysokými školami (které poskytují službu Zipcar svým studentům, například vyhrazením parkovacích míst speciálně pro auta Zipcar v místech školních campusů a kolejí). Odkazy 1. http://www.zipcar.com 2. http://www.bowdoin.edu/news/archives/1bowdoincampus/005403.shtml informace o používání Zipcar na Bowdoin College 3. http://en.wikipedia.org/wiki/Zipcar 5
6
KAPITOLA 3. EXISTUJÍCÍ ŘEŠENÍ
3.1.2
City CarShare
Lokace: Okolí San Franciska USA Společnost založená v roce 2001, spolupracuje s obchodními partnery a s vládními organizacemi, pro které zajišťuje půjčování aut pro kratší výjezdy. Jedná se o neziskovou organizaci, vybírá poplatky pouze za provoz. Umožňuje rezervace po internetu, zobrazování polohy auta na interaktivní mapě. Odkazy 1. http://www.citycarshare.org/
3.1.3
GreenWheels
Lokace: Německo, Holandsko Největší společnost zabývající se Carsharingem v Holandsku. Zákazníci mají na výběr z několika měsíčních tarifů, podobně jako u mobilních operátorů. Čím větší je měsíční platba, tím menší jsou ceny za jednotlivé jízdy. Odkazy 1. http://www.greenwheels.de/video Ukázka funkce, přístup k autu
3.1.4
Mobility CarSharing
Lokace: Švýcarsko Největší společnost zabývající se Carsharingem ve Švýcarsku, nabízí 2200 vozů na 1100 místech. Nabízí několik modelů automobilů, u všech je kladen důraz na ekonomický provoz. Společnost nabízí i dlouhodobý pronájem vozidel od jednoho měsíce za zvýhodněné ceny. Zákazníci si mohou vyzkoušet možnosti rezervačního systému s ukázkovým účtem, který nevytvoří platnou rezervaci. Tento systém nabízí tvorbu šablon, podle kterých lze snadno vytvořit rezervaci často půjčovaných vozidel a opakované rezervace, na které se vztahuje sleva 20%. Délku trasy lze odhadnou pomocí plánovače trasy a přesněji tak určit výslednou cenu. Odkazy 1. http://www.mobility.ch ukázka funkce, přístup k autu 2. https://webportal.mobility.ch/webportal/?lang=3&test=1 Ukázky jednotlivých zařízení
3.2. SOFTWARE PRO CARSHARING
3.2 3.2.1
7
Software pro carsharing eileo
Francouzská společnost eileo nabízí software a zařízení pro car-sharing od komunitního sdílení vozů až po velké společnosti. ZIBOX-LT EMBEDDED COMPUTER, zařízení, které společnost nabízí pro montáž do automobilů obsahuje GPRS, GPS, RFID, GSM a BLUETOOTH technologie, obsahuje i push-to-call assistence tlačítko pro telefonický hovor operátorovi a propojení s imobilizérem pro znehybnění vozidla. Společnost také nabízí online software, zde jsou jeho hlavní rysy: • registrace zákazníka • online rezervace • správa uživatelů a plateb • správa automobilů a jejich sledování • Spolujízda
1
• Roaming mezi organizacemi • Upozornění přes email i sms • vícejazyčné rozhraní Software používá společnost Hertz Global Holdings, která půjčuje automobily na letištích po celém světě. Společnost nabízí také hosting svého sofware na clusterovaných serverech. Odkazy 1. http://www.eileo.com/ 2. http://www.eileo.com/eileo_carsharing_ZiboxLT_v203_01_Overview.pdf Specifikace zařízení 3. http://www.hartz.com/
3.2.2
Autovera
Systém Autovera, který je vyvýjen společností Metavera používájí v současné době společnosti provozující car-sharing ve městech Philladelphii a Baltimore (USA). Autovera je pouze webová část celého systému, nicméně obsahuje rozhraní na propojení s produkty třetích stran, pomocí kterého komunikují i palubní jednotky. Hlavní rysy • správa uživatelů 1
Spolujízda je označení druhu dopravy, kdy se cestující předem domluví s řidičem automobilu, který by jinak nebyl plně vytížen nebo jehož jízda s méně přepravovanými osobami by nebyla efektivní, na společné jízdě nebo pravidelném společném dojíždění. Více info na http://cs.wikipedia.org/wiki/Spolujízda.
8
KAPITOLA 3. EXISTUJÍCÍ ŘEŠENÍ • rezervační systém • správa plateb • správa automobilů • automatický hlasový systém pro rezervace Odkazy 1. http://www.metavera.com/products/autovera-platform.html/ 2. http://www.phillycarshare.org/ 3. http://www.baltimorecity.gov/government/parking/car_sharing.php
3.3
Vyhodnocení existujících řešení
Řešení zaběhnutých společností jsou ryze soukromého charakteru a pro budoucího provozovatele v české republice nedostupné. Provozovatel by ho mohl získat pouze v případě, že by zde založil pobočku. Rešerše softwarových společností nabízející tento software ukázala, že car-sharing lze spustit i bez vývoje vlastního software. Zejména řešení společnosti eileo 3.2.1 je velice komplexní a pokrývá i požadavky velkých společností. Cena za používání systému se odvíjí od velikosti flotily automobilů. Palubní jednotky lze pronajmout nebo odkoupit. Na trhu nicméně neexistuje žádný použitelný open source systém pro poskytovatele carsharingu. Za předpokladu, že se vývoje otevřené aplikace do budoucna ujme širší komunita, je ji možné lépe přizpůsobit konkrétní společnosti a snížit tak výslednou cenu za ujetý kilometr.
Kapitola 4
Analýza Kapitola se zabývá specifikací požadavků a jejich podrobnějším rozborem. Analýza byla provedena v nástroji Enerprise Architect 7.0 [2] v jazyce UML 1 . Online část systému obsahuje kromě rezervačního systému i platební systém, který je vyvíjen jiným členem týmu a není uveden v této práci, ale je součástí analýzy přiložené na CD.
4.1 4.1.1
Katalog požadavků Funkční požadavky
Uživatelé a karty • Uživatel bude mít možnost registrace na webu, během registrace musí odsouhlasit podmínky používání. • Manažer bude mít možnost aktivovat uživatelské účty a přiřazovat jim role. • Každý uživatel bude mít možnost měnit své kontaktní údaje. • Manažer bude mít úplný přístup k datům, které se týkají jeho firmy. • Systém umožní vytvořit uživatele s omezenými přístupovými právy. • Administrátor bude mít úplný přístup k uživatelským účtům a přístupovým právům. • Systém umožní správu RFID přístupových karet, Každý zákazník jich může vlastnit několik. • Každou kartu i uživatelský účet bude možné zablokovat. • Systém bude u uživatelů evidovat: Jméno, Příjmení, datum narození, pohlaví, adresu, email, až dva telefony, číslo řidičského průkazu, číslo občanského průkazu, výši počátečního vkladu, uživatelské jméno a heslo. • Servisní přístupové karty mohou odemknout automobil i bez předchozí rezervace. 1
Unified Modelling Language. Dnešní standard pro kresení diagramů při návrhu software.
9
10
KAPITOLA 4. ANALÝZA Auta a parkoviště • Systém umožní evidenci parkovišť a pakovacích míst. Parkoviště bude obsahovat údaje o počtu vyhrazených míst, adresu, popis, přiložené obrázky, GPS pozici, velikost parkoviště (radius v metrech). • V seznamu parkovacích míst musí být vidět i vozy, které se na těchto místech nacházejí. Parkoviště si mohou prohlížet všichni uživatelé. • Ke každému vozu bude možné přiřadit povolená parkoviště. Systém umožní nastavení vybraných automobilů tak, aby bylo možné ukončit rezervaci pouze na povoleném parkovišti. • Systém umožní evidenci modelů automobilů. Každý model bude obsahovat výrobce a model, vybrané technické parametry, komentář a fotografii modelu vozidla. • Systém umožní evidenci automobilů. Automobil bude obsahovat datum pořízení, barvu karoserie, komentář, fotografie a údaje palubní jednotky. • Ke každému automobilu bude také možné připojit záznamy o technických prohlídkách, zjištěné škody na vozidle, náklady na opravy a další výdaje. • Pokud je automobil k dispozici, uvidí každý uživatel i jeho pozici na mapě, jinak se zobrazí poslední známá pozice. • U hybridních automobilů se budou evidovat dva druhy paliva. • Pokud automobil nevlastní společnost, půjde k němu přiřadit vlastník. Rezervační systém • Uživatelé budou mít možnost rezervace automobilu. • Systém bude schopný v případě konfliktu rezervace nabídnout alternativu. • Systém umožní i případnou změnu a zrušení rezervace. Určité role budou mít oprávnění ke správě všech rezervací. • Systém bude zobrazovat uživateli seznam vlastních rezervací. • Rezervaci lze vytvořit přes webové rozhraní i přes SMS. • Systém bude obsahovat nastavení pro minimální a maximální dobu rezervace, minimální dobu mezi dvěma výpůjčkami. • Systém bude uživateli posílat zprávy při vytvoření, změně a zrušení rezervace a před začátkem rezervace. Uživatel bude mít možnost volby času upozornění během vytváření rezervace. Formát zpráv bude volitelný. • Systém bude zobrazovat mapu s rozmístěním vozidel. • Systém nabídne možnost automatického zrušení rezervace, pokud nedojde k vyzvednutí automobilu.
4.1. KATALOG POŽADAVKŮ
11
Kniha jízd • Kniha jízd bude obsahovat kdo s jakým vozem jel, kolik ujel km, jak dlouho a v které době měl vozidlo vypůjčeno. • Jízdu i rezervaci bude možné označit jako servisní, tedy neúčtovanou. • Do knihy jízd bude možné vložit vyrovnávací záznam, kterým lze kompenzovat případné nesrovnalosti mezi najetými kilometry dle tachometru a ujetými km dle GPS • Systém zaznamená všechny GPS souřadnice zaslané zařízením a bude schopný zobrazit celou cestu na mapě. Trasu cesty uvidí pouze sám uživatel. • V systému bude možnost zobrazit aktuální polohu automobilu. Pokud je rezervovaný, bude vyžadovat potvrzovací formulář. • Kniha jízd bude obsahovat i průměrnou spotřebu. • Systém bude evidovat účtenky za palivo. Účtenku vkládá uživatel a je schvalována manažerem. Komunikační rozhraní • Systém nabídne komunikační rozhraní pro výměnu dat s palubními jednotkami. • Každá palubní jednotka musí být před použitím tohoto rozhraní autentizovaná. • Systém bude umožnovat zobrazit seznam automobilů, které se neohlásily v očekávaném čase.
4.1.2
Nefunkční požadavky
• Nastavení palubních jednotek bude prováděno přes webové rozhraní • Systém bude navržený tak, aby do budoucna umožňoval vznik poboček hostovaných na jednom serveru. • Systém bude vytvořen jako modul do CMS Drupal. • Systém bude mít možnost volby vlastního grafického motivu webu. • Systém bude posílat zprávy přes email a SMS. • Pro zobrazování tras a automobilů budou použity mapy od společnosti Google. • Uživatelům se budou přiřazovat práva pomocí skupin. • Webové rozhraní bude funkční ve všech běžných webových prohlížečích. • Serverová část poběží na Apache httpd + MySQL. • Uživatelské rozhraní bude přístupné v češtině a angličtině s možností vytvořit překlad pro další jazyky. • Komunikace s palubní jednotkou musí být optimalizovaná tak, aby byla výměna dat co nejstručnější.
12
4.2 4.2.1
KAPITOLA 4. ANALÝZA
Uživatelské role Nepřihlášený uživatel
Náhodný kolemjdoucí, který dosud nemá účet nebo nepřihlášený uživatel. Tento uživatel by měl mít přístup k sekcím, které popisují výhody car-sharingu a mapě vozů, aby mohl najít parkoviště blízko svého bydliště.
4.2.2
Zákazník
Přihlášený uživatel, který má přístup k rezervacím.
4.2.3
Manager
Zaměstnanec, který má plný přístup k administraci metrocar modulu. Může spravovat vozy, zákazníky, rezervace, účtenky za palivo a další sekce v rámci modulu. V příručkách je manager označen jako operátor.
4.2.4
Technik
Uživatel, který má pouze částečný přístup k administraci systému. Jedná se o zaměstnance, který se stará o údržbu jednotlivých vozů, může využívat přístupových karet, které otevírají auto i bez rezervace.
4.2.5
Administrátor
Uživatel, který nemá přístup do car-sharingové části, ale může spravovat vše ostatní, jako je update systému, volba grafických témat, nastavení jazyka, správa uživatelů, uživatelských rolí a přístupových práv, správa menu, překladu rozhraní a instalace nových modulů. Přístup k tomuto účtu bude mít pravděpodobně někdo z managerů.
4.3
Správa vozového parku
Správa vozového parku je klíčová pro funkčnost celého systému. Společnost většinou nakupuje automobily ve větším množství od jednoho modelu, je proto rozumné řadit je v systému pod jednotlivé modely. Zákazníkovi to dává možnost vyhledávat model auta podle parametrů a poté vybrat konkrétní vůz. Systém počítá i s hybridními vozy, každý automobil proto eviduje i alternativní palivo. Vlastníkem všech vozidel by měla být společnost sama. Před vznikem společnosti se počítá se zkušebním provozem v komunitním prostředí, kde automobily mohou vlastnit i jednotliví členové. V analýze byl tento fakt zohledněn a uživatelé tak mohou do jisté míry spravovat a sledovat i svá vlastní vozidla. Vozového parku se týká i kniha jízd a sledování nákladů na provoz automobilu. Náklady se skládají z pravidelných provozních nákladů (pojištění, výměna pneumatik, čištění, parkování), zvláštních výdajů (např. servis a opravy) a výdajů za palivo (viz. sekce 4.4).
4.4. EVIDENCE NÁKLADŮ ZA PALIVO
13
Systém pro zjednodušení nerozlišuje mezi pravidelnými a zvláštními náklady za provoz, vše spadá pod záznam auta, ale rozlišuje účtenky za palivo, které mohou vkládat i sami uživatelé. Díky všem těmto záznamům může systém zobrazit i náklady na jeden kilometr. Každý automobil může mít přiřazeno několik vyhrazených parkovišť. Pokud provozovatel nemá pronajmutá vyhrazená parkovací místa, slouží tento atribut pouze jako informace o přibližné poloze vozu pro zákazníky. Automobil, který má vyhrazené parkovací místo, by neměl parkovat nikde jinde a systém by neměl ukončit rezervaci pokud ho zákazník nevrátí na správné místo.
4.4
Evidence nákladů za palivo
V pilotní části projektu bude každý zákazník platit za palivo hotově ze svých vlastních peněz a údaje o tankování sám vkládat do systému. Po potvrzení vloženého záznamu mu budou peníze přičteny na účet. Schválení účtenky proběhne až po předání účtenky provozovateli, který je potřebuje pro daňové účely. Předání může probíhat osobně nebo pomocí schránky ve voze. Pokud uživatel nechá účtenku ve voze, napíše na ni číslo své karty, podle které provozovatel dohledá uživatele, rezervaci a vůz. V pozdější fázi nasazení projektu nebudou uživatelé platit za palivo vlastními penězi, ale kartou uloženou v každém voze. Princip předávání účtenek zůstane stejný. Účtenky slouží pro evidenci nákladů na vozidlo a pro výpočet průměrné spotřeby.
4.5
Rezervace
Rezervaci lze provést pomocí webového rozhraní nebo sms. Zákazník, který rezervaci provádí musí vědět, které auto chce zarezervovat a s tím i přesný čas. Automobil i čas lze před začátkem rezervace dodatečně změnit. Pokud nemá zákazník přístup k internetu, může využít služeb telefonického centra (pokud ho provozovatel má) a rezervaci vytvoří, upraví nebo zruší někdo ze zaměstnanců společnosti. Automobil lze vybrat z mapy, tabulky automobilů nebo podle modelu automobilu. Před začátkem a koncem rezervace je odeslána uživateli připomínka, stejně tak systém odesílá připomínky při každé její změně. Formát připomínky je konfigurovatelný. V době začátku rezervace se uživateli odblokuje vybraný automobil a vytvoří se nová jízda, která se ukonční při uzamčení automobilu kartou (viz. sekce 4.6). Rezervace se může nacházet jednom z těchto stavů (viz. Diagram stavů 4.3): Rezervováno Započatá Aktivní Neukončená
Přetahuje Zrušená
Rezervace je vytvořena a čeká na svůj start. Rezervace přejde do tohoto stavu v momentě jejího začátku. Automobil již byl vyzvednut a je používán. Do tohoto stavu se dostane v momentě jejího plánovaného ukončení a čeká, než ji systém ukončí a vypočte cenu. V tomto stavu setrvává nejdéle dvě minuty. Rezervace již měla být ukončena, ale automobil je stále používán. K ukončení dojde ihned po vrácení automobilu. Rezervace byla zrušena uživatelem nebo operátorem.
14
4.6
KAPITOLA 4. ANALÝZA
Kniha jízd
Kniha jízd je díky palubním jednotkám plně automatizovaná, nicméně musí existovat možnost, jak dorovnat odchylky v knize jízd a skutečností. Uživatelé by neměli mít možnost editovat záznamy o jízdách přímo, protže seznam jednotlivých jízd spadá pod jednu rezervaci a uživatel je ani neuvidí. Kompenzaci ujetých kilometrů lze provést ručním přidáním záznamu, který může mít i zápornou délku jízdy. Tím lze snadno dohledat každou úpravu změnu délky jízdy. Kniha jízd existuje ve dvou pohledech, první se váže k automobilu a druhý k uživateli. Každý uživatel by měl mít přehled o vlastních jízdách včetně jejich zobrazení na mapě. Jak bylo zmíněno v kapitole 2.2, detail jízdy může vidět pouze uživatel, který ji uskutečnil, nikdo jiný.
4.6.1
Životní cyklus jízdy
Jízda je obvykle součástí rezervace, ale pokud je automobil odemčen servisní kartou, může existovat i jako samostatná entita. Jízda přejde při jejím vytvoření přímo do stavu running a ukončí se při uzamčení automobilu viz. state diagram jízdy 4.5.
4.6. KNIHA JÍZD
15
Obrázek 4.1: Případ užití - správa agendy aut
16
KAPITOLA 4. ANALÝZA
Obrázek 4.2: Diagram stavů - účtenka
Obrázek 4.3: Diagram stavů - rezervace
4.6. KNIHA JÍZD
17
Obrázek 4.4: Případ užítí - kniha jízd
Obrázek 4.5: Diagram stavů - jízda
18
KAPITOLA 4. ANALÝZA
Kapitola 5
Návrh 5.1
Výběr CMS
Pro potřeby projektu je nutné vybrat co nejvhodnější redakční systém (CMS 1 ), který by usnadnil implementaci a umožnil rozšiřitelnost pomocí pluginů třetích stran. Díky externím pluginům se může rozšířit funkcionalita systému bez dalších nákladů na vývoj a kontrolu nad pluginy má uživatel systému. Jedním z hlavních hledisek výběru CMS je podpora pro případný Franchising2 , podporu pro více poboček. V tomto případě je ale vhodnější použít termín multisite“, což je podpora pro subdomény. ” Mezi kandidáty se dostaly tyto open source redakční systémy: InfoGlue, Joomla, Drupal a typo3.
5.1.1
InfoGlue
Je pokročilý, rozšiřitelný a robustní redakční systém napsaný v jazyce Java. Je vhodný pro širokou šklálu aplikací a organizací. Spolupracuje s mnoha databázovými stroji, podporuje portlety, vícejazyčné verze obsahu, sdílení obsahu mezi jednotlivými weby a možnost nastavit vlastní workflow proces [9]. Ačkoliv se tento CMS vyvíjí již několik let, nenabízí příliš rozšiřitelných modulů a žádné vlastní vzhledy webu. InfoGlue nabízí poměrně rozsáhlou dokumentaci pro vývojáře, což kompenzuje složitou tvorbu vlastních modulů.
5.1.2
Joomla!
Joomla! je vyspělým CMS, který je nabízen v mnoha světových jazycích včetně češtiny pod licencí GNU GPL. Joomla je založena na skriptovacím jazyce PHP a podporuje pouze MySQL databázi. Systém je modulární, takže poskytuje mnoho možností rozšíření od jednoduchých funkcí až po složitější moduly, jako je třeba internetový obchod. Joomla nabízí ke stažení stovky modulů a šablon vzhledu zdarma, další je možno stáhnout za 1
Content Management System - systém pro správu obsahu Franchising je způsob obchodní činnosti a marketing výrobků nebo služeb, který je používán v různých odvětvích průmyslu a obchodu. Jedná se o poskytnutí práva užívat obchodní známku a znalosti vlastněné nějakou korporací pro své vlastní podnikání. Citace z wikipedie http://cs.wikipedia.org/wiki/Frenčízing 2
19
20
KAPITOLA 5. NÁVRH
poplatek (v řádu desítek euro). Tyto moduly a šablony nejsou většinou vyvíjeny pod licencí GNU GPL [10]. Joomla! je jedním z nejpopulárnějších redakčních systémů a i za několik málo let vývoje si dokázal vytvořit kolem sebe velmi početnou skupinu uživatelů a vývojářů. Moduly mohou využívat jak joomla api, tak i funkcí Zend frameworku, což umožňuje tvorbu i velice komplexních modulů, na druhou stranu je to vykoupeno složitou strukturou každého modulu. Oficiální dokumentace není příliš rozsáhlá, ale vzhledem k velikosti komunity existuje nepřeberné množství článků a příspěvků na fórech zabývajích se vývojem modulů. Joomla! bohužel obsahuje i velké množství chyb, které se nechají zneužít hackery. Tyto chyby jsou většinou obsaženy v modulech třetích stran, ale v menší míře i v jádru systému. Každý měsíc je objeveno několik nových zranitelností a tak nezbývá, než se o instalaci pravidelně starat a neustále kontrolovat a instalovat aktuální verze systému i modulů.
5.1.3
Drupal
Drupal je modulární framework a redakční systém napsaný v PHP vhodný pro weby všech velikostí. Sdružuje kolem sebe poměrně početnou komunitu aktivních vývojářů a velké mmožství modulů a grafických témat ke stažení. Drupal je velice flexibilní systém, dovoluje nastavit většinu parametrů v administrační části. Se svými 250 000 instalacemi se jedná jeden z nejrozšířenějších CMS. Struktura modulu je velice jednoduchá, což umožňuje rychlý start vývoje. Od verze 7 klade důraz na testování kódu, ale podpora testů existuje i ve starších verzích. Systém není napsán objektově, ale procedurálně za použití hook3 funkcí. Uživatelé ho častěji označují za framework než za CMS [14].
5.1.4
typo3
Typo3 je rozsáhlý a komplexní systém pro správu obsahu založený na technologii PHP + MySQL. Systém lze rozšiřovat pomocí zásuvných modulů, kterých je v současné době ke stažení zhruba 1500. Systém šablon a cache umožňuje oddělit grafický vzhled od kódu a obsahu a kompenzuje vysokou náročnost systému. Typo3 používá vlastní scriptovací jazyk TypoScript, který nabízí určitou rozšiřitelnost celého systému. Tvorba vlastního modulu je díky propritarnímu scriptovacímu jazyku a struktuře systému pro začátečníka velice náročná.[11]
5.1.5
Vyhodnocení
Ze srovnávaných CMS nakonec vyšel nejlépe Drupal pro jeho flexibilitu, snadnou rozšiřitelnost a jednoduchou strukturu modulu, která umožňuje rychlejší vývoj. Oproti Joomla! obsahuje méně chyb. Kód z historických důvodů není objektový, ale vzhledem ke struktuře systému to vůbec není na překážku[8]. 3 Funkce, která zachycuje volání jiné funkce za účelem její změny. V drupalu slouží jako náhrada za interface a dědičnost tříd [8].
5.2. KOMPONENTY SYSTÉMU A JEHO NASAZENÍ
5.2
21
Komponenty systému a jeho nasazení
Diagram nasazení 5.2 zobrazuje jednotlivé logické celky komponent a jejich vzájemné propojení. Podle předběžných průzkumů bude komunikace s bankou probíhat pouze jednosměrně a to parsováním4 příchozích emailů. Stejným způsobem budou získávány SMS zprávy od uživatelů. Účel RFID čtečky připojené k počítači provozovatele je přečíst kód karty při vložení do systému přes webový formulář, na počítači neběží žádná klientská aplikace. Databázový server samozřejmě nemusí být na stejném stroji jako Apache Server, zobrazení v diagramu je pouze příklad. Modul Metrocar je vlastní webové rozhraní tohoto projektu a je realizováno jako modul do Drupalu. Další Drupal moduly nejsou pro přehlednost v diagramu uvedeny 5 .
5.3 5.3.1
Návrh databázového schéma Uživatelé
Tabulka uživatelů v databázi 5.1 neobsahuje uživatelské jméno, heslo, email, ani uživatelské role. Je to z toho důvodu, že tabulka rozšiřuje globální uživatele Drupalu, který spravuje i uživatelská práva. Jednotlivé role jsou řešeny pomocí skupin a jsou plně konfigurovatelné. Tabulky jsou propojeny pomocí primárního klíče uid.
5.3.2
Rezervace a jízdy
Rezervace je vždy svázána s konkrétním uživatelem a automobilem. Atributy cancel date a cancelled jsou nastaveny pouze pokud uživatel rezervaci stornoval. Při stornu tak za ní stále může být účtován poplatek a rezervace se stane neplatnou. cancel interval je počet minut, po kterém dojde k automatickému zrušení nevyzvednuté rezervace. Zákazník tak má možnost ušetřit nějaké peníze, pokud nemůže automobil vyzvednout a šance na jeho využití se zvýší. Při vytvoření nové jízdy je třeba nastavit atribut reservation start, který odpovídá času vytvoření první jízdy. Jedná se sice o duplicitní atribut (je již obsažen v jízdě), ale výrazně zjednoduší dotazy nad databází. Obdobně se nastavuje i reservation end. Nová jízda vznikne vždy při odemčení dveří automobilu a skončí při jejich uzamčení. Celková délka jedné jízdy je uvedena v atributu length, který se sčítá průběžně v průběhu jízdy. V délce jízdy mohou vznikat drobné nepřesnosti, protože datový typ je INTEGER a palubní jednotka odesílá vzdálenost s přesností na dvě desetinná místa. Atribut length, který obsahuje vzdálenost v metrech od posledního známého bodu v tabulce car position tedy neslouží ke zjištění celkové délky trasy, ale může posloužit např. při generování grafu průběhu rychlosti. 4 5
parsování - získávání dat z textu, u kterého předem známe přesný formát. Seznam vyžadovaných modulů je uveden v příručce administrátora.
22
5.3.3
KAPITOLA 5. NÁVRH
Vozový park a parkoviště
Automobil obsahuje jak samotné údaje o automobilu, tak i informace pro palubní jednotku. Atribut imei slouží pro vygenerování autentizačního klíče (connection code) pro palubní jednotku, postup je uveden v sekci komunikační rozhraní 5.4.1. Atribut last echo obsahuje čas posledního připojení palubní jednotky, device command je potvrzovací kód, pomocí kterého lze vynutit update seznamu přístupových karet nebo nastavení který se odešle při příštím připojení. Podobně jako kartu a uživatele lze i automobil deaktivovat nastavením atributu active na nulu. Parkoviště obsahuje krom údajů o poloze i radius, který určuje velikost parkoviště v metrech. Pokud má automobil nastavený atribut dedicated parking only, porovnává se při ukončení rezrvace poloha vozu s plochou tohoto parkoviště. Automobil může mít přiřazeno více parkovišť, stejně tak na jednom parkovišti může parkovat více automobilů, z toho plyne vazba M:N.
5.4. KOMUNIKACE S PALUBNÍMI JEDNOTKAMI
5.4 5.4.1
23
Komunikace s palubními jednotkami Strukura a zabezpečení
Jednotlivé palubní jednotky jsou připojeny k internetu pomocí GPRS technologie, u které oprerátoři většinou neposkytují veřejné ip adresy, spojení proto musí vždy inicializovat klient. Při návrhu komunikačního protokolu je brán ohled na množství dat, které jednotka odesílá, úsporu energie zařízení a zabezpečení přenosu. Pernamentní připojení přes TCP port by sice umožňovalo okamžitou oboustranou výměnu informací mezi jednotkou a serverem, jednotka by ale musela mít neustále aktivovaný gprs modem, což by výrazně zvýšilo spotřebu elektrické energie. Výhodnější je v tomto ohledu připojení teprve až v okamžiku, kdy má jednotka nějaká data na odeslání. Protokol XML-RPC6 má příliš vysokou režii na výměnu užitečné informace, zvolili jsme proto textový protokol podobný struktuře ini souborů v kombinaci s CSV7 formátem. Jednotka navazuje spojení odesláním autentizačního klíče na URL8 metrocar/server na serveru a s ním všechny ostatní data v POST9 požadavku. Server vrací odpověď opět v textovém formátu a ukončuje ji potvrzovacím kódem. Pomocí potvrzovacího kódu se jednotka ujišťuje, že přijmula všechna data a zároveň se tak dozví o možných updatech na serveru. Možné hodnoty jsou OK, OK SYNC CARD, OK SYNC SETTINGS, SYNC, OK POSITION. Šifrování komunikace bylo z návrhu vypuštěno pro příliš vysokou režii na navázání spojení, SSL handshake by navýšil každý požadavek o několik KB. Každá palubní jednotka má unikátní IMEI 10 , které je spolu v kombinaci s přístupovým heslem použito pro autentizaci jednotky na serveru. Autentizační klíč se získá zahashováním IMEI a hesla md5(IMEI + secret key) algoritmem md5. V případě změny hesla na serveru se znovu vygenerují všechny přístupové klíče pro jednotky a jednotka tak nebude mít možnost získat nové heslo. Tento problém řeší dočasné vypnutí autentizace pro přenos nastavení.
5.4.2
Data
Nastavení frekvence čtení dat GPS a jejich odesílání se provádí pomocí webového rozhraní, komunikační rozhraní zajišťuje jejich přeposlání všem palubním jednotkám. Všechny parametry nastavení přenášené palubním jednotkám jsou v uvedeny v tabulce 5.4.2.
6
XML-RPC je protokol pro vzdálené volání procedur ve formátu XML s předem definovanou strukturou, odesílaného přes HTTP 7 CSV - Comma-Separated Values - hodnoty oddělené čárkami 8 URL definuje doménovou adresu serveru, umístění zdroje na serveru a protokol, kterým je možné zdroj zpřístupnit. 9 POST - data obsažená v HTTP požadavku, která narozdíl od GET metody mohou být delší než 512B 10 Unikátní číslo GRPS modemu v palubní jednotce, podle kterého jsou rozlišovány jednotlivé automobily.
24
KAPITOLA 5. NÁVRH
Parametr GPSCheckInterval minDistanceLocation minTimeLocation locationSendInterval retrySendInterval echoInterval time
Vysvětlivka interval po kterém se čtou data z GPS příjmače minimální vzdálenost, po které zaznamená údaj o poloze minimální doba (v minutách), po které zaznamená údaj o poloze maximální interval, po kterém navazuje spojení se serverem interval, po kterém se znovu navazuje spojení se serverem po předchozím neúspěšném pokusu maximální čas, po kterém si vůz stahuje aktualizace karet ze serveru v případě, že není používán synchronizace času se serverem
Palubní jednotka dále potřebuje mít aktualizovaný seznam přístupových karet. Přenáší se samozřejmě pouze karty které mohou daný automobil otevřít a pouze v rozsahu příštích 30ti dnů. Servisní karty, které mohou otevřít automobil bez předchozí rezervace, mají nastavenou platnost 30 dnů. Kdykoliv dojde k rezervaci automobilu, server vynutí aktualizaci seznamu karet. Server vrací karty ve formátu idKarty1;RFIDKarty1;casOd;casDo, kde RFID karty je kód vrácený čtečkou v base6411 kódování a idKarty je identifikátor z databáze. Při každém odemčení nebo uzamčení automobilu RFID kartou dojde k vytvoření nové jízdy. Jednotka odešle na server požadavek s aktuálním časem, typem použití a identifikátorem RFID karty. Dokud je automobil v provozu, odesílá seznam nasbíraných souřadnic na server v tomto formátu: POST[’location’][]="zemepisnaSirka;zemepisnaDelka;vzdalenost;cas" Všechny události komunikačního rozhraní by měly být ukládány do logu na serveru.
5.5
SMS komunikace
Tato sekce se zabývá návrhem obousměrného komunkačního rozhraní pomocí SMS, které bude v tomto systému hrát důležitou roli. SMS jsou použity pro připomenutí rezervace, informace o změně stavu rezervace, vytvoření, prodloužení a zrušení rezervace. Systém neobsahuje samotnou implementaci, nicméně je potřeba s SMS počítat alespoň v návrhu.
5.5.1
Možnosti příjmu a odesílání zpráv
SMS brána Při využívání služeb cizí SMS brány je zpoplatněna pouze odchozí SMS (cca 1kč) a komunikace probíhá přes SMTP nebo webové rozhraní. Pro odesílání připomínek je plně použitelný, ale neumožňuje příjem SMS. SMS brány, které příjem zpráv nabízí, jsou pro potřeby tohoto projektu příliš drahé. Jednotka připojená k serveru U vlastního serveru lze mít připojený GSM modul nebo je možné pro tyto účely vyhradit jednu XT65 jednotku z automobilu, která by SMS četla přes GPRS rozhraní ze serveru. SMS by pokaždé byly odeslány z jednoho telefoního čísla. 11
Base64 je datový formát zobrazující binární data pomocí tisknutelných znaků ASCII
5.5. SMS KOMUNIKACE
25
Všechny SMS by bylo možné posílat na jedno telefonní číslo, což by bylo jednodušší pro zákazníky. Toto řešení nese také své nevýhody jako je omezená kapacita přijatých SMS a další náklady na připojení k internetu a jednotku samotnou. Palubní jednotka instalovaná v automobilu Server pošle příkaz pro odeslání SMS zprávy první jednotce, která naváže připojení na komunikačním rozhraní. Prodleva odeslání zprávy záleží na počtu automobilů a jejich využití. Každý automobil, který není v provozu, by se měl pravidelně ohlašovat každou půlhodinu. Pro zákazníka by mohlo být matoucí jiné číslo v každé přijaté SMS. U přijatých SMS lze použít pro identifikaci vozidla telefonní číslo, v praxi by uživatel při požadavku na prodloužení rezervace posílal kratší zprávu. Závěr Ve zkušební fázi projektu by měly být pro odesílání i příjem SMS být použity palubní jednotky, protože nevyžadují další hardware a snižují náklady. V momentě, kdy se vozový park rozroste na desítky vozů, lze některým palubním jednotkám pořídit výhodnější tarif pro odesílání SMS a snažit se na ně směrovat odesílané zprávy.
5.5.2
Formát zpráv
Nastavení formátu odesílaných zpráv se příliš neliší od formátu emailů, formát půjde nastavit v administrační sekci. Jediné omezení je velikost zprávy 160 znaků, která bude kontrolována před předáním palubní jednotce. Zprávy budou také před odesláním zbaveny diakriky. Příjem zpráv Zprávy by měly být kontrolovány při příjmu v palubní jednotce i na serveru, klíčová slova jsou závislá na jazyce a měla by být nastavitelná v administraci. U klíčových slov nebude rozlišována velikost písmen a každé bude obsahovat i další alternativy. Uživatel bude jednoznačně určen podle telefonního čísla. Při parsování datumu a času z sms je potřeba počítat s několika formáty a možnými překlepy. klíčová slova budou použita k určení: • automobilu • času počátku rezervace • času konce rezervace • rezervace • příkazu vytvoření rezervace • příkazu prodloužení rezervace • příkazu zrušení rezervace • příkazu informace o rezervaci Po příjmu zprávy z palubní jednotky server požadavek ihned zpracuje a vrací výsledek palubní jednotce, která odešle odpověď uživateli. Nemělo by tak docházet k prodlevě delší než 60 vteřin.
26
KAPITOLA 5. NÁVRH
Obrázek 5.1: Kompletní schéma databáze
5.5. SMS KOMUNIKACE
27
28
KAPITOLA 5. NÁVRH
Obrázek 5.2: Diagram nasazení
Kapitola 6
Implementace
Jak již bylo zmíněno v návrhu 5.1, implementace je provedena jako modul do CMS Drupal[14]. Vývoj probíhá na serveru http://www.metrocar.cz, pravděpodobně ale bude nasazen na jiné doméně. Fakt, že se vyvíjí pouze modul a ne celý systém, umožňuje zaměřit se více na aplikační logiku a přesouvá funkce některých částí aplikace přímo na jádro Drupalu, popřípadě další moduly. Popis implementace zmiňuje pouze důležité části, které vybočují z běžných principů psaní kódu v PHP.
6.1
Přístupová práva
Uživatelské role 4.2 jsou realizovány jako uživatelské skupiny, kterým lze přiřadit jemnější přístupová práva. Tím lze vytvořit uživatele, který může spravovat celý systém a zároveň rezervovat vozy, tak i vytvořit novou roli, která bude mít pouze omezený přístup k administraci systému. Seznam přístupových práv je uveden v tabulce 6.1.1. 29
30
6.1.1
KAPITOLA 6. IMPLEMENTACE
Výpis uživatelských práv
Přístupové právo add card manage cards access cards view own card manage global settings view current car location manage parking manage models access models access cars manage cars access fuel bills view all fuel bills manage all fuel bills create reservation manage reservations access reservations create reservation view all journey details
manage journey list access journey list administrer branches
6.2
Vysvětlivka Pouze přidat přístupovou kartu bez možnosti její editace. Přidávání, editace a odstraňování karet. Zobrazení seznamu přístupových karet. Zobrazení detailů vlastní přístupové karty. Správá nastavení GPS, fakturace, emailů. Zobrazení aktuální pozice automobilu, které vyvolá odeslání potvrzovacího emailu. Správa parkovacích míst. Správa modelů aut. Zobrazení seznamu modelů aut a jejich detailů. Zobrazení seznamu automobilů a jejich detailů. Správa vozového parku. Zobrazení vlastních účtenek a možnost přidání nové. Zobrazení všech účtenek v systému. Správa účtenek, je potřeba ke schválení účtenky přidané uživatelem. Vytvoření nové rezervace, editace vlastní rezervace. Správa všech rezervací v systému, je potřeba použít v kombinaci s access reservations. Přístup k seznamu vlastních rezervací bez možnosti vytvoření nové. Právo vytvoření nové rezervace. Zobrazení detailů jízd všech uživatelů. Detail jízdy obsahuje i trasu zobrazenou na mapě, přístupové právo je určeno pouze pro zkušební provoz. Správa knihy jízd, povoluje úpravu délky trasy. Zobrazení knihy jízd automobilu. Správa nastavení databáze poboček.
Struktura modulu a architektura
Povinná struktura modulu je velice jednoduchá, obsahuje tři soubory, funkční kód je pouze v jednom z nich. Napsat celý modul pouze do jednoho souboru by na přehlednosti příliš nepřidalo, proto je modul dále členěn do několika komponent podle jednotlivých entit.
6.2.1
Architektura
Architektura modulu je přizpůsobena Drupalu a neobsahuje plně oddělené vrstvy, jako je tomu v MVC1 , nicméně se mu alespoň částečně podobá. Z důvodu specifické architektury Drupalu je tato sekce až v kapitole zaměřené na implementaci. 1 Model View Controller - architektonický model, který rozděluje datový model, uživatelské rozhraní a logiku do třech vrstev.
6.2. STRUKTURA MODULU A ARCHITEKTURA
31
Model je implementován pomocí schéma, které obsahuje všechny tabulky a atributy z databáze, v zásadě se ale jedná o abstraktní vrstvu, ke které neexistuje přímý přístup. Každá komponenta obsahuje load funkci, která vrací objekt z databáze a může ho přitom rozšířit o další atributy nebo na něj navázat další objekty. Zápis dat do databáze je prováděn pomocí funkce drupal write record, která generuje SQL dotazy podle schéma databáze, zabrání tak vzniku překlepu v dotazu a zabezpečí dotaz proti SQL injection2 . Dosud by se ještě jednalo o oddělenou Controller vrstvu, ale kámen úrazu je v přístupu k datům ve více tabulkách, kterého využívají funkce zobrazující tabulky (seznamy) a většina get funkcí. Filtrování a řazení záznamů v tabulce je provedeno v SQL dotazu a nelze snadno oddělit od samotné funkce. View část systému je obsažena ve funkcích s příponou list pro tabulky a view pro zobrazení informace. Informace jsou povětšinou zobrazovány do tabulek, které lze získat použitím funkce theme table, takže html kód je v této vrstvě obsažen opravdu jenom minimálně (např. nadpisy). Podobně jako pro zobrazení generické tabulky lze nadefinovat vlastní theme funkce, které vytvoří html kód ze zadaných dat a mohou při tom využít šablony v externích souborech, podobně jako to dělají jiné šablonovací systémy. Absence plnohodnotného MVC v tomto případě není na škodu a nebrání snadné rozšiřitelnosti modulu. Rozšíření schématu o nové atributy a tabulky nenaruší funkci systému a při jejich změně nebo odebrání by měl problémy odhalit regresní test (kapitola 7).
6.2.2
metrocar.install
Tento soubor obsahuje především schéma databáze a výchozí nastavení proměnných. Funkce metrocar schema obsahuje kompletní strukturu databáze, která je nezávislá na databázovém stroji (podporované jsou prozatím MySQL a PostgreSQL). Podle této struktury vznikají tabulky v databázi při instalaci a probíhají update a insert operace při manipulaci s daty. Více o hook schema se lze dočíst na http://api.drupal.org/api/function/ hook_schema.
6.2.3
metrocar.info
Info soubor obsahuje informace týkající se názvu modulu, jeho verze a závislostmi na dalších modulech. Modul metrocar ke své funkčnosti dále potřebuje moduly uvedené v tabulce 6.2.3.
2 SQL injection - technika vsunutí vlastního dotazu do jiného, která využívá neošetřeného vstupu. Více na http://en.wikipedia.org/wiki/Sql_injection
32
KAPITOLA 6. IMPLEMENTACE Název modulu gmap
date popup
tinymce
imce
6.2.4
popis Api pro práci s Google maps[17]. Modul dále obsahuje administrační sekci, kde lze zvolit výchozí hodnoty nastavení mapy. Modul pro zobrazování popup kalendářů pro zadávání dat je distribuován spolu s date modulem, který nabízí funkce pro práci s datumem. Modul pro integraci wysiwyg3 editoru TinyMCE4 do prostředí drupalu. Funkčnost metrocar modulu příliš neovlivní, nicméně dokáže zjednodušit editaci všech textů. Manager obrázků, který v kombinaci s TinyMCE dokáže zjednodušit vkládání obrázků do popisků a textů.
metrocar.module
Základní stavební kámen celého modulu, obsahuje veškeré funkční části, podrobněji bude rozebrán v následujících bodech.
6.3
Konvence
Konvence pro psaní zdrojového kódu vyplývají ze samotného jádra drupalu[16] a jeho modulů, pokud se dodrží i v tomto projektu, budou zdrojové kódy přehlednější pro vývojáře, kteří Drupal znají a snažší na pochopení pro budoucí vývojáře, kteří mohou hledat inspiraci v jiných modulech.
• Všechny názvy funkcí, tabulek, proměnných a javadoc komentáře jsou v angličtině, čeština je použita pouze u nejednoznačných anglických názvů jako pomocný komentář. • Všechny funkce musí mít z důvodu zabránění vzniku kolize s jiným modulem předponu metrocar . • Názvy tabulek a sloupců v databázi jsou psána malými písmeny, stejně tak i všechny názvy funkcí. • Názvy tabulek mají předponu metrocar • Všechny primární klíče v tabulkách mají příponu id popř. používají jména zavedená drupalem, např. atribut uid. • Zdrojové kódy používají kódování utf-85 5 UCS Transformation Format, způsob kódování řetězců znaků do sekvence bytů. http://en.wikipedia. org/wiki/Utf_8
6.4. FORMULÁŘE
6.4
33
Formuláře
Form API [18] v drupalu je velmi mocný nástroj pro návrh, validaci a zpracování formulářů. Vnitřní zpracování formulářů ochrání formuláře před vkládáním cizích prvků. Proces zpracování je znázorněn na diagramu 6.1. Každý formulář je nadefinovaný pomocí asociovaného pole, které obsahuje jednotlivé prvky formuláře, viz. následující příklad:
{} $form[’foo’] = array( ’#type’ => ’textfield’, ’#title’ => t(’bar’), ’#default_value’ => $object[’foo’], ’#size’ => 60, ’#maxlength’ => 64, ’#description’ => t(’baz’), ); Díky struktuře formuláře definovaném v poli se rozšiřuje znovupoužitelnost kódu, protože pro vlkádání i editaci lze použít jeden formulář, popřípadě je možné použít část pole na rozšíření jiného formuláře. Proces zpracování začíná zavoláním funkce drupal get form(), která vytvoří prázdné pole pro uchování dat $form values a nastaví $form submitted na false. V dalším kroku se nastaví příznak (token) založený na proměnné drupal private key, která se vztahuje k aktuální session uživatele a nastaví identifikátor formuláře jako skrytou hodnotu. Jakmile mechanizmus naschromáždí informace o všech prvcích najde validační funkce (obvykle formID validate) a submit funkci (formID submit). Před samotným sestavením formuláře jsou ještě prohledány ostatní moduly, které mohou formulář pozměnit. Přidáním funkce mujmodul formID form alter() tak lze upravit prvky v libovolném formuláři v systému. Posledním krokem před zobrazením formuláře je jeho sestavení, drupal zde může provést změny vzhledu výsledného HTML kódu zavoláním funkcí definovaných v položkách #theme a #after build. Po odeslání dat z formuláře přichází na řadu jejich zpracování a validace. Mechanizmus porovnává hodnoty form id a příznak s těmi, které předtím uložil do uživatelské session v databázi, zkontroluje přítomnost všech prvků a jejich povolených hodnot (např. pro selectboxy) a zavolá uživatelskou validační funkci. Validační funkce kontroluje především formát a rozsah vstupních dat, problémové prvky jsou potom zvýrazněny a doplněny o popis chyby. Pokud proběhla validace úspěšně, jsou data předána submit funkci, která data zpracuje. Zde se uplatní schéma databáze 6.2.2, podle kterého funkce drupal write record vytvoří SQL dotazy a uloží data do databáze. Zpracování formuláře probíhá přesměrováním na jinou url zadanou v atributu $form state[’redirect’] [19].
34
KAPITOLA 6. IMPLEMENTACE
6.5
Překlad rozhraní
Drual obsahuje mechanizmus na překlad uživatelského rozhraní v modulech i šablonách, který je použit i pro modul Metrocar. Každý řetězec, který lze přeložit do jiného jazyka je v kódu označen funkcí t(), která má hned několik využití. Prvním z nich je nalezení všech řetězců, které potřebují překlad, tyto řetězce jsou sbírány dynamicky za běhu programu. Z nasbíraných řetězců, které jsou ukládány do databáze, je možné vygenerovat šablonu překladu .pot6 . Šablona je poté použita k vytvoření .po souboru, který obsahuje samotný překlad a dovoluje vytvoření nové jazykové verze během několika málo hodin. K editaci .po souborů a jejich korekci je vhodné použít nějaký sofistikovaný editor, například Poedit (http://www.poedit.net/). Soubor s překladem je naimportován do Drupalu automaticky při instalaci modulu nebo později ručně, předpokladem k importu je nainstalovaný modul locale. Při zobrazování stránky je překlad načten z databáze, použití t() funkce je podle konvencí [16] povinné. Struktura po souboru vypadá takto: # metrocar_car.inc:325 msgid "Vehicle (id %id) was successfully deactivated." msgstr "Automobil (id %id) byl úspěšně deaktivován." První řádek obsahuje nepovinný komentář s umístěním zdroje, na druhém je překládaný text a na třetím překlad. Překlad je možné doplňovat i o proměnné, které se předávají jako asiociativní pole funkci t() [20]. Toto řešení sice nabízí snadnou tvorbu lokalizačních souborů, ale přináší i několik problémů. Prvním z nich je fakt, že všechny texty, jako jsou názvy menu, popisky a chybové hlášky musí být v angličtině, na kterou nelze aplikovat překlad rozhraní. To sebou přináší i druhý problém, složitý update překladu při změně textu v kódu. Při nahrazení slova v jedné větě bude řetězec uzavřený v t() odlišný od překladu v .po souboru a korekturu lze vyřešit pouze modifikací těchto dvou souborů a následným importem souboru. Více o překladu rozhraní lze nalézt na http://api.drupal.org/api/function/t/6.
6.6
Franchising
Jedním z požadavků je i podpora několika poboček hostovaných na jednom serveru. Hlavní podmínkou pro výběr CMS byla právě podpora multisite, bez které by nemohl franchising fungovat. Přizpůsobit přístupová práva systému, který nepodporuje multisite by bylo výrazně náročnější na vývoj i údržbu. Drupal podporuje běh několika webů na jediné instanci, kde každá vlastní svoji databázi nebo sadu tabulek s určitým prefixem. To dovoluje vznik naprosto soběstačných poboček, kde každá může používat vlastní moduly, vzhled, obsah i přístupová práva. Sdílení dat mezi pobočkami je potom možné provést třemi způsoby: 1. pomocí sdílených tabulek 2. provedením dotazů nad několika tabulkami a sloučením jejich výsledků 6 .pot pocházejí z GNU knihovnoy gettext [http://en.wikipedia.org/wiki/Gettext], která je použita pro překlad rozhraní i v řadě jiných projektů
6.6. FRANCHISING
35
3. vytvořením pohledu, který spojí jednotlivé tabulky dohromady Sdílené tabulky lze použít pouze v případech, kdy neobsahují žádné cizí klíče, protože by potom musely být sdílené i tabulky na které se odkazují a ve výsledku pravděpodobně celá databáze. Vzhledem k faktu, že komunikace mezi pobočkami není příliš častá, lze použít i metodu dotazování nad několika tabulkami. Sdílená tabulka branch obsahuje seznam všech databázových prefixů. Cílem propojení jednotlivých poboček je umožnit zákazníkům jedné pobočky využívat služeb jiné pobočky a možnost zobrazit seznam automobilů všech poboček na jedné mapě popř. v jedné tabulce. Základním předpokladem je přístup uživatele na každou z těchto poboček, který lze vyřešit sdílením tabulek users, metrocar user, session a role. Pokud by nebyla tabulka session sdílená, uživatelé by museli zadávat svoje uživatelské jméno a heslo při přístupu na web jiné pobočky. Tabulka role obsahuje pouze názvy uživatelských rolí, jejich přístupová práva jsou uložena jinde. Manager pobočky A tedy může mít přiřazenou roli zákazníka v pobočce B a žádný přístup do pobočky C. Každá pobočka má kromě vlastní databáze i vlastní doménu, složku s nastavením, moduly, grafickými tématy a soubory. Strukturu souborů lze vytvořit php scriptem v administrační části, databáze vznikne po spuštění install scriptu nového webu, ale záznam o doméně (popřípadě subdoméně) musí vytvořit provozovatel serveru a nasměrovat ho na výchozí instalaci drupalu. Více o možnostech multisite v Drupalu lze nalézt na http://drupal.org/node/43816.
36
KAPITOLA 6. IMPLEMENTACE
Obrázek 6.1: Proces zpracování formuláře [21]
Kapitola 7
Testování Úkolem testování je prokázat správnost kódu a ověřit, že změna jedné části aplikace neohrozí funkčnost jiné části. V první části vývoje projektu byly testy doplňovány podle testovacího plánu, později se přešlo na psaní testů zároveň při implementaci.
7.1
Metody testování
Drupal je více zaměřen na systémové testy namísto testování jednotek. V důsledku to znamená, že se netestují jednotlivé funkce nebo části kódu, ale systém jako celek. Pro ověření formátu telefonního čísla není volána přímo funkce, která ho kontroluje, ale je vyplňeno pole ve formuláři, který funkci zavolá při kontrole formuláře. Tento druh testování spadá do kategorie black-box. Testy ověřují především: 1. volání metod přináší očekávané změny v databázi 2. kontrola správné validace formulářů 3. stránka existuje a obsahuje správné informace 4. kontrola přístupových práv
7.2
Simpletest
Simpletest modul je výborným nástrojem pro testování jednotek v Drupalu, umí např. vytvářet uživatele, odesílat formuláře a instalovat moduly. Během vývoje sedmé verze se stalo testování kódu prioritou číslo jedna a tento modul je navržen tak, aby automatizoval, zjednodušil a zpřehlednil veškeré testování. Simpletest [23] je nástroj pro obecné testování jednotek v PHP a není distribuován spolu se Simpletest modulem. [21]
Během testování používá Simpletest vlastní vnitřní prohlížeč [24] pro pohyb po stránkách a je jedinou možností, jak získat výstup ze stránky, která je součástí testu. Před každým testem se celé prostředí vytváří znovu, to dává možnost zvolit testovací data nezávisle na současném stavu databáze. Vnitřní prohlížeč je rozlišen pomocí proměnné $ SERVER[’HTTP USER AGENT’ a přistupuje do prostředí, které používají vlastní databázové tabulky rozlišené prefixem simpletest a náhodným číslem. Spouštění i prohlížení výsledků testu probíhá přes webové 37
38
KAPITOLA 7. TESTOVÁNÍ
rozhraní, viz. obrázek 7.1. Verze simpletest 6.x-2.7 podporuje testování pouze v anglické lokalizaci uživatelského rozhraní, všechny testy jsou tomu přizpůsobeny. Ačkoliv je prostředí takto oddělené, existuje možnost přístupu do produkční databáze, nehledě na vysoké zatížení serveru a testy proto není doporučené spouštět na produkčním serveru.
Obrázek 7.1: Zobrazení výsledku neúšpěšného testu
7.3
Implementace testů
Testy jsou do modulu Metrocar implementovány pomocí hook funkce metrocar simpletest(), která vrací seznam souborů se samotnými testy. Každý unit test je třída rozšiřující DrupalWebTestCase uložená ve vlastním .test souboru, která musí implementovat metodu get info(): function get_info() { return array( ’name’ => t(’Car test’), ’description’ => t(’Create, modify, view and delete a car and ...’), ’group’ => t(’Metrocar’), ); } Každý test je funkce v této třídě, která začíná prefixem test. Před spuštěním testu dojde k instalaci modulů, vytvoření uživatele a dodatečné přípravě databáze, spuštění všech testů trvá řádově minuty.
7.4
Testování komunikačního rozhraní
Všechny funkce komunikační rozhraní musí být pokryty testy, protože je to jediný způsob, jak odhalit případnou chybu. V každé jiné části aplikace může odhalit chybu uživatel, komunikační rozhraní nemá žádný uživatelský výstup na straně serveru ani na straně klienta.
7.5. ZHODNOCENÍ TESTOVÁNÍ
39
Základním předpokladem k debugování chyb je záznam veškeré komunikace mezi serverem a klientem. Palubní jednotka odesílá na server data pomocí $ POST požadavků směrovanými na url která je stejná pro testování i běžný provoz. Ke komunikaci je potom znovu potřeba použít vnitřní prohlížeč, který ovšem nepodporuje odesílání libovolných $ POST požadavků, ale pouze těch, které jsou zpracovávány formuláři. K odeslání požadavků byla vytvořena funkce sendUnitPost(), která nepoužívá CURL1 jako všechny ostatní testy, ale přímé volání funkce metrocar unit server (whitebox metoda). Přímé volání stránky a přeposílání požadavků přes post by nemuselo fungovat v jiné verzi simpletest modulu. Testuje se přenos nastavení ze serveru, přenos povolených karet, autentizace, vytvoření servisní i běžné jízdy, detekce polohy vozu při vrácení na vyhrazené parkoviště a odesílání pozice.
7.5
Zhodnocení testování
Testy by měly být podle dokumentu o zajištění kvalitiy [22] spouštěny vždy před commitem kódu na SVN2 server pro ověření celkové funkčnosti, ale ukázaly se být praktické i při hledání chyb v závislostech po větších změnách. Chyby, které testy objevily byly povětšinou způsobené změnou struktury databáze, syntaktickou chybou nebo změnou struktury menu. Testy tvoří zhruba 30% veškerého kódu a pokrývají dvě třetiny funkcí. Vzhledem k rozsahu samotné implementační části nebylo možné psát testy podrobněji. Testy použitelnosti a uživatelského rozhraní dosud nebyly provedeny, ale ani neměly být součástí práce. Použitelnost systému bude prověřena až během zkušebního provozu.
1 2
CURL - nástroj na odesílání souborů s URL syntaxí, domovská stránka projektu http://curl.haxx.se/ SVN - Subversion, verzovací systém
40
KAPITOLA 7. TESTOVÁNÍ
Kapitola 8
Závěr Cílem práce bylo analyzovat, navrhnout a implementovat rezervační systém pro car-sharingovou společnost. Samotná implementace software vycházela z analýzy zhotovené v rámci semestrálních projektů pro předměty SIN a SI2 a částečně i z řešení existujících společností [3]. Na analýze, která je založena na seznamu požadavků [4.1], se podílelo několik lidí, její výsledek je na přiloženém CD. Návrh jednotlivých částí systému byl realizován až po provedení analýzy existujících CMS na kterých by mohl být systém založen, hlavní kritérium výběru byla podpora multisite [5.1]. Zvolen byl CMS Drupal, pro jeho rozšiřitelnost, bezpečnost a integraci testů. Pokud by bylo potřeba přepsat celý systém, např. na komerčního řešení založené na nějaké sofistikovanější technologii, poslouží analýza spolu s existujícím funkčním systémem a jeho databází jako dobrý základ. Zadání zahrnuje pouze část funkčnosti systému, za další části zaměřené především na fakturaci, účtování a další finanční záležitosti je zodpovědný jiný člen teamu. Rezervační systém a kniha jízd implementuje téměř všechny definované požadavky. Vytváření rezervací přes SMS a odesílání SMS připomínek není implementované, protože závisí na palubních jednotkách, které by měly sloužit jako SMS brány a návrh tohoto řešení byl proveden příliš pozdě na to, aby byl realizován. Systém byl po funkční stránce odzkoušen regresními testy, které lze kdykoliv později zopakovat. Integrovaný Simpletest se ukázal jako velice praktický a během vývoje pomohl nalézt několik chyb, které by se jinak špatně dohledávaly. Testování systému je podrobněji popsáno v kapitole 7. Samotná použitelnost systému jako celku bude prověřena až během zkušebního provozu se skutečnými automobily. Za předpokladu pokračujícího vývoje vytváří celý systém dobrý základ konkurence schopného řešení, které se vyrovná komerčním produktům, ale vzhledem k jeho BSD licenci sníží náklady pro provozovatele systému a umožní tak nasadit nižší ceny pro koncové zákazníky.
8.1
Budoucí práce
Během vývoje neustále přicházely nové podněty na rozšíření aplikace, které nebyly obsaženy v analýze a na jejich realizaci nezbývalo mnoho času. Zde je jejich seznam: 41
42
KAPITOLA 8. ZÁVĚR • K automobilu lze vkládat záznamy o nákladech spojených s provozem tohoto automobilu. Většina nákladů se bude pravděpodobně vkládat v pravidelných intervalech, může to být například pojištění, platba za internet nebo platba za parkovací místo. Systém by mohl nabídnout automatizované vkládání těchto úloh. • V systému chybí jednoduchá možnost komunikace zákazníka a provozovatele. V současné implementaci může zákazník psát maily jednotlivým uživatelům nebo jim telefonovat a provozovatel může zpětnou vazbu vytvořit pouze pomocí fóra. Uživatelé by měli mít možnost vyjádřit se ke stavu jednotlivých vozů, např. pro nahlášení závady na vozidle. • V aplikaci chybí vyhledávač modelu vozidla podle jeho parametrů. • Systém by mohl nabídnout export dat ze systému do souboru pro zobrazení cesty v externí aplikaci a zpracování knihy jízd v tabulkovém procesoru. • Modul do Drupalu je nezávislý na jeho vlastním vzhledu, uživatelské rozhraní by vypadalo lépe s vlastním vzhledem, logem a ikonkami. • Aplikace by mohla obsahovat kalkulátor nákladů na vlastní vozidlo, který by porovnával náklady s car-sharingem. Uživatelé by si mohli snadno vypočítat, zda se jim vůbec využívání služby vyplatí. • Při platbě čerpací kartou za palivo by mělo být možné vygenerovat měsíční výpis a tento výpis vložit do systému tak, aby sám vložil jednotlivé účtenky do databáze. • Zadávání rezervace na časové ose namísto dvou kalendářů by bylo uživatelsky přívětivější. • Aplikace by mohla obsahovat i sekci Lost & Found pro hlášení předmětů nalezených ve voze. • Čištění automobilů se bude opakovat pravděpodobně celkem pravidelně, systém by měl obsahovat záznamy o jejich čištění a prohlídkách. Zároveň by měl upozornit zodpovědnou osobu předem. Palubní jednotka • Po přijmutí SMS nebo telefonního hovoru by měla přejít do pohotovstního režimu a kontaktovat server. • Podobně jako existují servisní RFID karty by mohla existovat servisní telefonní čísla, která by přes SMS odemkla automobil. • Palubní jednotka by mohla mít jednoduchý znakový display pro zobrazení ujetých kilometrů a času zbývajícím do konce rezervace. V případě, že by současná jízda blokovala rezervaci někoho dalšího, jednotka by použila display pro zobrazení této informace. • Přídavná klávesnice by mohla sloužit pro ověření číselného pinu (další stupeň autorizace) a pro prodloužení nebo zkrácení současné rezervace. Rezervaci by sice mělo jít upravit přes SMS, ale klávesnice s displayem by nabídla okamžitou zpětnou vazbu.
Literatura [1] Carsharing http://en.wikipedia.org/wiki/Carsharing [2] Sparx systems Enterprise Architect http://www.sparxsystems.com.au [3] Seznam provozovatelů car-sharingu http://en.wikipedia.org/wiki/List of carsharing operators [4] Radek Rejfíř Porovnání existujích projektů http://www.assembla.com/spaces/metrocar/documents/ d37e-4Wm0r3zNvab7jnrAJ/download/Porovnaniexistujicichprojektu.doc [5] Zákon č. 101/2000 Sb., o ochraně osobních údajů http://www.uoou.cz/index.php?l=cz&m=left&mid=01:01:00 [6] Auto napůl http://autonapul.hornimlyn.cz/ [7] Drupal Revealed as 2008 Open Source CMS Award Winner http://www.packtpub.com/article/ 2008-open-source-cms-award-winner-announced [8] Drupal Programming from an Object-Oriented Perspective http://api.drupal.org/api/file/developer/topics/oop.html/6 [9] InfoGlue http://webscripts.softpedia.com/ scriptDownload/InfoGlue--Download-38771.html [10] Joomla - obecné dotazy http://www.joomlaportal.cz/content/view/25/43/ [11] Lukáš Jelínek Recenze redakčního systému Typo3 http://www.linuxexpres.cz/software/redakcni-system-typo3 [12] XML-RPC http://cs.wikipedia.org/wiki/XML-RPC [13] Secure Sockets Layer Handshake http://support.microsoft.com/kb/257591 [14] Drupal.org http://drupal.org 43
44
LITERATURA
[15] api.drupal.org - popis prostředí a systémových funkcí http://api.drupal.org [16] Drupal coding standards http://drupal.org/coding-standards [17] Google Maps API http://code.google.com/intl/cs-CZ/apis/maps/ [18] Drupal form API http://api.drupal.org/api/group/form api/6 [19] Drupal Form API : An Introduction http://amiworks.co.in/talk/drupal-form-api-an-intrdouction/ [20] Drupal t function http://api.drupal.org/api/function/t/6 [21] An Introduction to Unit Testing in Drupal http://www.lullabot.com/articles/introduction-unit-testing [22] Ondřej Nebeský Projekt Metrocar - Zajištění kvality https://www.assembla.com/spaces/metrocar/documents/ aP9KCs0a4r3yBzab7jnrAJ/download/Rizeni kvality metrocar.odt [23] SimpleTest http://www.simpletest.org/ [24] Simpletest API functions http://drupal.org/node/265762
Kapitola 9
Přílohy A Příručka administrátora B Příručka operátora C Příručka uživatele D Podnikatelský plán G Diagramy z analýzy E Obsah přiloženého CD Přiložené CD obsahuje tuto bakalářskou práci spolu s celým projektem metrocar, jehož aktuální verzi lze najít v SVN repozitáři (https://www.assembla.com/wiki/show/ metrocar).
analyza/ bakalarska prace/ dokumenty/ importer/
metrocar/ palubni jednotka/ php dokumentace/ prirucky/ bakalarska prace.pdf metrocar.zip svn metrocar.zip
Složka s .eap souborem analýzy z Enterprise Architectu a vygenerovanou html dokumentací. Složka s tex zdrojáky bakalářské práce. Dokumenty, které postupně vznikaly během vývoje projektu. Aplikace pro import dat z palubní jednotky na server. Jedná se o desktopovou Java aplikaci, která simuluje chování palubní jednotky. Složka se zdrojovými soubory modulu. Složka obsahuje Java projekt pro palubní jednotky. Dokumentace vygenerovaná z komentářů v kódu. Složka s uživatelskými příručkami ve formátu .odt a .pdf. Text této bakalářské práce. Archiv s modulem projektu, který lze nainstalovat do Drupalu. Záloha SVN repository celého projektu z 8. 6. 2009.
45
1
Příručka administrátora verze 1.0
2
Obsah 1 Úvod..........................................................................................................................................3 2 Instalace Drupalu......................................................................................................................3 2.1 Instalace jádra....................................................................................................................3 2.1.1 Struktura....................................................................................................................3 2.1.2 htaccess......................................................................................................................3 2.1.3 settings.php................................................................................................................3 2.1.4 Instalace.....................................................................................................................4 2.2 Instalace dalších modulů...................................................................................................4 2.2.1 GMap.........................................................................................................................4 2.2.2 TinyMCE...................................................................................................................4 2.2.3 IMCE.........................................................................................................................5 2.2.4 Cron...........................................................................................................................5 2.3 Práva..................................................................................................................................6 2.4 Uživatelé............................................................................................................................6 3 Instalace modulu.......................................................................................................................6 3.1.1 Práva..........................................................................................................................6 3.2 Grafický vzhled.................................................................................................................7 4 Menu.........................................................................................................................................7 5 Jazyky........................................................................................................................................8 5.1 Úprava překladu rozhraní..................................................................................................8 5.2 Vytvoření nové jazykové verze.........................................................................................8 6 Pobočky.....................................................................................................................................8 6.1 Přidání nové pobočky........................................................................................................8 7 Údržba systému.........................................................................................................................9 7.1 Aktualizace........................................................................................................................9
3
1. Úvod Manuál popisuje instalaci Drupalu, Metrocar modulu a dalších na něm závislých modulů. Dále obsahuje nastavení webu specifické pro Drupal a nejčastější ukoly administrátora systému. Všechny snímky obrazovek zobrazují web s upravenou šablonou foliage a vzhled tak nemusí odpovídat systému po čerstvé instalaci. Manuál odpovídá verzi Drupalu 6.11 a některé části se mohou lišit od postupů uvedených na webu (zejména wysiwyg editor a instalace modulů), zde jsou uvedeny pouze některé možné postupy.
2. Instalace Drupalu 2.1
Instalace jádra
Modul Metrocar je kompatabilní s Drupalem verze 6, nejnovější verzi lze stáhnout na http://www.drupal.org. Spolu s jádrem systému je také vhodné stáhnout i českou lokalizaci. Oba balíčky se následovně rozbalí do jednoho adresáře (např. Drupal).
2.1.1 Struktura Nejdůležitějsí adresáře a soubory: •
includes – jádro drupalu
•
modules – základní moduly, neobsahuje rozšiřující moduly
•
sites – soubory, moduly a šablony pro všechny weby •
•
default – výchozí web •
themes – šablony pro výchozí web
•
modules – moduly pro výchozí web
all – soubory společné pro všechny weby •
themes – společné šablony
•
modules – společné moduly
•
themes – základní šablony
•
cron.php – spouštěč automatických úloh
•
.htaccess – nastavení webového serveru
2.1.2 htaccess S jádrem je dodán i výchozí htaccess soubor, jeho nastavení samozřejmě závisí na samotném webovém serveru. Z bezpečnostních důvodů je vhodné zakomentovat řádek Options +FollowSymLinks a pro povolení rewrite url (na kterém je modul závislý) je nutné odkomentovat řádek
4 # RewriteBase /
2.1.3 settings.php Soubor default.settings.php, který se nachází v adresáří sites/default/, je před začátkem instalace nutné zkopírovat na settings.php.
2.1.4 Instalace Pomocí FTP klienta se zkopíruje obsah adresáře, ve kterém jsou rozbaleny všechny soubory, na server do kořenového adresáře. Databázi je nutné mít připravenou ještě před samotným instalačním procesem, i v případě „multisite“ (poboček) nasazení stačí vytvořit jednu. Dále instalace pokračuje na adrese výchozího webu (např. http://www.metrocar.cz). Pro podporu multisite je potřeba zvolit prefix tabulek, např „default_“. Při instalaci je vytvořen účet administrátora, který má automaticky všechna přístupová práva, tento účet by měl být použit pouze k administraci (podobně jako uživatel root v Linuxu). Vice o instalaci drupalu lze nalézt na http://navody.c4.cz/drupal-6-instalace.
2.2
Instalace dalších modulů
Všechny lze stáhnout na http://www.drupal.org. Archiv modulu obsahuje pouze jednu složku, která se přenese na server přes FTP do sites/all/modules/. Instalace, deaktivace a odinstalování modulů se provádí v administrační sekci admin/build/modules. Modul metrocar je závislý na těchto modulech: •
Date – obsahuje několik modulů, spolu s date je potřeba aktivovat i date_popup
•
GMap – google mapy
•
TinyMCE – wysiwyg editor
•
IMCE – manager obrázků, který lze propojit s TinyMCE
2.2.1 GMap Modul Gmap je stěžejní pro funkci celého modulu, vyžaduje vytvoření api klíče pro přístup k mapám. Klíč lze získat na adrese http://code.google.com/intl/cs-CZ/apis/maps/signup.html. V nastavení modulu lze dále zvolit např. výchozí pohled na mapu, vzhled mapy a typy čar.
5
2.2.2 TinyMCE Tento modul je začleněn pouze pro pohdlnější práci se systémem, ale neovlivňuje jeho funkčnost. Do modulu (složka tinymce) je potřeba zkopírovat samotný editor, který lze stáhnout na stránce http://tinymce.moxiecode.com/. TinyMCE editor je umístěn ve složce tinymce/tinymce. Modul umožňuje vznik profilů, po instalaci je potřeba vytvořit alespoň jeden výchozí a nastavit práva na přístup k tomuto modulu. Modul lze aktivovat i na vybraných stránkách, tyto jsou doporučené: node/* user/* comment/* metrocar/* V modulu lze dále nastavit vzhled samotného editoru, jako jsou tlačítka a nástrojové lišty.
2.2.3 IMCE Podobně jako TinyMCE i tento modul podporuje profily. Nový profil bude restriktivnější než u editoru, protože nebudeme chtít, aby uživatelé nahrávali obrázky na server a tak bude přístupný pouze pro provozovatele. Profil obsahuje složky pro upload a prohlížení obrázků, vytváření náhledů a uživatelské kvóty. Důležitý krok je integrace s TinyMCE, do souboru se šablonou (template.php, pokud neexistuje, tak vytvořit) se doplní následující funkce: function phptemplate_tinymce_theme($init, $textarea_name, $theme_name, $is_running) { static $access, $integrated; if (!isset($access)) { $access = function_exists('imce_access') && imce_access(); } $init = theme_tinymce_theme($init, $textarea_name, $theme_name, $is_running); if ($init && $access) { $init['file_browser_callback'] = 'imceImageBrowser'; if (!isset($integrated)) { $integrated = TRUE; drupal_add_js("function imceImageBrowser(fid, url, type, win) {win.open(Drupal.settings.basePath +'?q=imce&app=TinyMCE| url@'+ fid, '', 'width=760,height=560,resizable=1');}", 'inline'); } } return $init; }
2.2.4 Cron Periodické spouštění úloh je pro modul velice důležité, protože díky cronu je možné odesílat informace o rezervacích mailem, rušit nevyzvednuté rezervace a kontrolovat aktualizace.
6 Pokud systém běží na linuxovém serveru, cronová úloha se vloží příkazem crontab -e a vložením řádku: */2 * * * * /usr/bin/wget -O - -q -t 1 http://metrocar/cron.php který způsobí periodické spouštění každé 2 minuty. Upomínka o rezervaci tak může dorazit s maximálním spožděním 2 minuty.
2.3
Práva
Administrace → Uživatelé Práva se aplikují na uživatelské role, modul metrocar by měl mít alespoň dvě: •
Manager – provozovatel systému, má přístup do administrace
•
Uživatel – zákazník
2.4
Uživatelé
V této sekci je také možné vytvářet nové uživatele, aktivovat / blokovat jejich účty a přiřazovat role. Uživatelé jsou sdíleni mezi všemi pobočkami, pokud administrátor zablokuje uživatele, uživatel nebude mít přístup do žádné pobočky. V sekci „Uživatelské nastavení“ lze zvolit politiku registrace uživatelského účtu, podrobnější správa uživatelů je popsána v manuálu Příručka operátora. Do systému lze doinstalovat mnoho modulů, které rozšiřují uživatelské účty a jejich chování.
3. Instalace modulu Samotná instalace modulu probíhá klasickou cestou, tj. zkopírování do složky sites/all/modules a aktivací v administraci systému. Při instalaci dojde k vytvoření databáze, menu, importu lokalizace a integraci do systému.
3.1.1 Práva První krok po instalaci modulu je přiřadit vhodná práva uživatelským rolím. Seznam práv je v tabulce níže. Zvýrazněná práva by měla být přiřazena roli uživatele.
7 Přístupové právo
Vysvětlivka
zobrazit záznamy automobilů
Jedná se o záznamy typu „Poškození, faktura, účet za internet ...“, měl by jej mít pouze technik a manager.
zobrazit karty
Zobrazit seznam všech RFID karet v systému.
zobrazit automobily
Zobrazit seznam automobilů a jejich detaily.
přístup k účtenkám
Toto právo umožňuje vkládat účtenky do systému a zobrazit vlastní účtenky.
zobrazit knihu jízd
Kniha jízd automobilu. Vlastníci aut mají toto právo automaticky.
přístup k logům
Přístup k logům modulu metrocar, drupal obsahuje ještě další log.
přístup k nastavení logů
Nastavení logovacích událostí
zobrazit modely automobilů
Zobrazit seznam a detaily všech modelů.
zobrazit rezervace
Zobrazit seznam vlastních rezervací.
přidat záznam k automobilu
Umožňuje vložení nového záznamu, ne jeho editaci. Je potřeba použít v kombinaci se zobrazením nebo nahradit editací.
přidat kartu
Vložit novou RFID kartu do systému.
spravovat nastavení metrocar modulu
Správa nastavení modulu, která se skládá s nastavení mailů a parametrů modulu.
spravovat ceníky
Správa ceníků modelů aut.
spravovat pobočky
Správa poboček (vytváření, editace, rušení)
vytvořit rezervaci
Umožňuje rezervovat automobil, je potřeba použít v kombinaci s „přístup k rezervacím“
smazat záznam automobilu
Maže záznam automobilu.
editovat záznamy automobilů
Kompletní přístup k záznamům autmobilu.
spravovat všehny účtenky
Umožňuje schválení účtenky a kompletní správu všech účtenek, včetně jejich smazání.
spravovat karty
Správa RFID karet.
spravovat automobily
Správa detailů automobilů, včetně přiřazení k parkovišti.
spravovat knihu jízd
Umožňuje zobrazení knihy jízd a přidání vyrovnávacího záznamu.
spravovat modely automobilů
Správa detailů modelů automoblů.
spravovat parkoviště
Správa detailů parkovišť (bez přiřazení automobilu k parkovišti).
spravovat rezervace
Editace, rušení a mazání všech rezervací.
zobrazit všechny účtenky
Zobrazení všech účtenek za palivo v systému
zobrazit detaily všech jízd
Obsahuje citlivé informace o jízdě, pouze pro testovací účely!
zobrazit aktuální pozici automobilu Zobrazení pozice, které je zaznamenáno do logu a je
8 odeslán informační mail uživateli, který má automobil vypůjčený. zobrazit vlastní kartu
3.2
Zobrazení detailů vlastní RFID karty.
Grafický vzhled
Administrace → Prvky webu → Témata vzhledu Modul není závislý na konkrétní šabloně a ani není se šablonou dodáván. Hotové šablony lze stáhnout na http://drupal.org/project/themes. Složku se šablonou je možné uložit do sitest/all/themes a bude tak přístupná pro všechny pobočky nebo do sites/default/themes a bude přístupná pouze pro výchozí pobočku. Vytvořit vlastní vzhled není nic složitého, na internetu lza najít řadu návodů, zde je uvedeno pouze pár ukázek: http://tips.webdesign10.com/how-to-make-a-drupal-theme http://www.lullabot.com/articles/hacking_phptemplate
4. Menu Administrace → Prvky webu → Navigation Všechna menu jsou po instalaci modulu v navigačním menu pod položkou metrocar. Stránka se skládá z bloků, menu mezi ně patří. V administraci menu lze zvolit, která menu budou zobrazena, zde lze například nahradit Navigation za Primary links. Důležitější je možnost přeskupit položky v menu a tím je například přesunout z kontejneru metrocar o položku výš a menu doplnit o nejdůležitější stránky. Jednotlivé položky lze přetahovat metodou drag & drop a upravovat jejich názvy.
5. Jazyky Čeština je naimportována už při instalaci modulu, nicméně časem může vzniknout potřeba vytvoření další jazykové mutace nebo úpravy současného jazyka. Překlady všech jazyků (krom angličtiny) lze provést ve webovém rozhraní. Pokud není požadovaný překlad k dispozici, použije se anglická verze.
5.1
Úprava překladu rozhraní
Administrace → Prvky webu → Překlad rozhraní Pokud chceme provést pouze drobnou změnu kteréhokoliv popisku v systému, lze použít záložku „Hledat“, vyhledat řetězec, upravit a uložit. Pro rozsáhlejší změny je vhodnější vyexportovat překlad do .po souboru v záložce „Extract“ (pro přehlednost je vhodné vybrat pouze jeden modul) a změny provést pomocí editoru (např. PoEdit http://www.poedit.net/). Soubor s překlady lze dostat do zpět do systému v záložce import, pokud došlo ke změně řádků, je třeba zvolit volbu „Řetězce v souboru nahradí existující, nové se přidají. „. Pokud chceme uživatelům dovolit přepínant mezi jazyky, je třeba nastavit rozeznávání jazyka v
9 Administrace → Nastavení webu → Jazyky → Nastavení na „Prefix cesty s nouzovým jazykem“. Toto nastavení musí být shodné pro všechny pobočky, je nutné například pro vytvoření rezervace z jiné pobočky.
5.2
Vytvoření nové jazykové verze
V prvním kroku se vytvoří překlad pro Drupal, jazykové mutace lze stáhnout na www.drupal.org. Soubor se naimportuje v sekci překlad rozhraní, je potřeba zvolit z menu i správný jazyk importu. V druhé části je potřeba vytvořit překlad pro samotný modul Metrocar. Podobně jako v předchozím odstavci se vyexportuje překlad rozhraní do souboru, ale zaškrtne se volba „Language independent template“. Modul obsahuje několik stovek řádků, překlad může trvat několik hodin. Import opět probíhá v záložce import.
6. Pobočky Administrace → Metrocar → Pobočky Modul Metrocar podoruje provoz více poboček na jednom serveru. Všechny pobočky jsou uloženy v jedné databázi a rozlišené pouze pomocí prefixu. Každá pobočka musí být uvedena v seznamu „Pobočky“ včetně výchozí pobočky.
6.1
Přidání nové pobočky
1. Vytvořit novou doménu popř. subdoménu. Tato doména slouží jako alias výchozí adresy serveru. Pokud existuje doména metrocar.cz a chceme vytvořit pobočku pobocka.metrocar.cz, musí být server dostupný z obou adres. Lze toho docílit přidáním direktivy ServerAlias do konfigurace virtuálního hosta na Apache serveru. 2. Vložit pobočku do systému kliknutím na „Přidat novou pobočku“. Prefix by měl být shodný s názvem pobočky, v tomto případě „pobocka_“. Pokud má webový server dostatečná oprávnění, vytvoří složku sites/pobocka a její konfigurační soubor settings.php. Konfigurační soubor lze vytvořit i ručně zkopírováním výchozího a upravením několika řádků. 3. Spustit instalaci otevřením adresy http://pobocka.metrocar.cz, dále je postup stejný jako v kapitole Instalace modulu. Je potřeba také nastavit všechny ostatní moduly, vzhled, překlad rozhraní atd.
10
7. Údržba systému Aktualizace jádra a ostatních modulů vychází zhruba v periodě jednoho měsíce, pokud má být systém dobře zabezpečený, je potřeba tyto aktualizace aplikovat. Aktualizace jsou kontrolovány automaticky, pokud je k dispozici nová verze, objeví se hlášení v administrační části systému.
7.1
Aktualizace
Administrace → Prvky webu → Moduly Před samotnou aktualizací je vždy dobré provést zálohu souborů i databáze. V případě aktualizace jádra se na serveru nahradí všechny soubory kromě .htaccess a složky sites. Po každé aktualizaci je nutné přejít na stránku http://metrocar.cz/update.php (s přihlášeným administrátorem) a spustit update databáze, pokud je vyžadován. Pokud je to možné, je dobré ověřit funkčnost aktualizace na jiném, než produkčním serveru.
1
Příručka operátora verze 1.0
2
Obsah 1. Úvod..........................................................................................................................................3 2. Nastavení modulu......................................................................................................................3 2.1 Uživatelé...........................................................................................................................3 2.2 Palubní jednotky a GPS....................................................................................................3 2.3 Rezervace.........................................................................................................................4 2.4 Číselníky...........................................................................................................................4 2.5 Formát zpráv a připomínek..............................................................................................4 2.6 Fakturační údaje...............................................................................................................5 3. Editor.........................................................................................................................................5 4. Uživatelé...................................................................................................................................7 4.1 Registrace uživatele..........................................................................................................7 4.2 Deaktivace uživatele.......................................................................................................10 4.3 Výpis uživatelů...............................................................................................................10 5. Přístupové karty......................................................................................................................10 6. Parkoviště................................................................................................................................12 6.1 Vyhrazená parkoviště......................................................................................................14 7. Vozový park.............................................................................................................................14 7.1 Modely automobilů........................................................................................................14 7.2 Automobily.....................................................................................................................14 7.3 Kniha jízd.......................................................................................................................15 7.3.1 Vyrovnávací záznam...............................................................................................15 7.3.2 Náklady...................................................................................................................16 7.3.3 Spotřeba..................................................................................................................16 7.3.4 Záznamy.................................................................................................................16 7.3.5 Zobrazení aktulální pozice automobilu..................................................................17 8. Správa účtenek za palivo.........................................................................................................17 8.1 Vložení účtenky do systému...........................................................................................18 8.2 Schválení účtenky...........................................................................................................18 9. Logování.................................................................................................................................19 10. Domovská stránka.................................................................................................................19 11. Správa rezervací....................................................................................................................20 12. Ceníky automobilů................................................................................................................20 12.1 Úprava ceníku...............................................................................................................21 12.1.1 Kopírování ceníků................................................................................................21 12.2 Časová osa....................................................................................................................21 12.3 Přidávání a upravování záznamů v časové ose ceníku.................................................23 12.4 Kopírování záznamů v časové ose...............................................................................24 13. Uživatelské tarify..................................................................................................................24 13.1 Správa tarifů.................................................................................................................24 13.1.1 Přidání a úprava tarifů..........................................................................................24 13.1.2 Mazání tarifů.........................................................................................................25
1. Úvod Manuál popisuje práci se systémem z pohledu operátora, instalace je popsána v příručce administrátora. Tato část se zaměřuje pouze na modul Metrocar. Všechny snímky obrazovek zobrazují web s upravenou šablonou foliage a vzhled tak nemusí odpovídat systému po čerstvé instalaci.
2. Nastavení modulu Administrace → Nastavení webu → Metrocar nebo Metrocar → Nastavení
2.1 Uživatelé •
Textu na registračním formuláři - očekává se, že bude obsahovat smluvní podmínky, ačkoliv k podpisu samotné smlouvy pravděpodobně dojde později osobně.
•
Další text lze do registračního formuláře vložit v sekci Administrace → Uživatelé → Uživatelská nastavení.
2.2 Palubní jednotky a GPS •
Heslo pro navázání spojení s palubní jednotkou - Toto heslo je součástí každé komunikace mezi serverem a zařízením. Změna hesla může způsobit problémy v komunikaci s automobily. Pokud nejsou automobily nastavené, lze dočasně povolit
přenos nastavení bez autentizace. •
GPS check time - Čas ve vteřinách, po které jednotka vyčítá údaje z GPS. Tento parametr má vliv na spotřebu zařízení, měl by být menší než čas pro ukládání polohy.
•
Minimální vzdálenost pro uložení - Minimální vzdálenost v metrech, po které jednotka zaznamená údaj o poloze vozu.
•
Minimální čas pro uložení dat - Minimální čas ve vteřinách, po které jednotka zaznamená údaj o poloze vozu. Jednotka uloží polohu vozu podle času nebo vzdálenosti, záleží, co nastane jako první.
•
Minimální čas pro odeslání dat -Minimální čas v minutách, po které navazuje jednotka spojení se serverem. Z důvodů šetření datových přenosů by neměl být tento interval příliš nízký.
•
Interval opětovného odeslání - Pokud je spojení neúspěšné, jednotka se pokusí navázat spojení znovu po uplynutí tohoto intervalu.
•
Echo interval - Interval v minutách, po kterém se snaží jednotka odeslat 'ještě žiju' hlášení. Echo se odesílá pouze pokud není automobil v pohybu. Tato komunikace je důležitá pro zjištění stavu vozidla, může detekovat například krádež nebo vybitou baterii.
•
Přenost nastavení bez autentizace – všechny tyto parametry lze odeslat jednotce i když se špatně autentizuje, dovolí tak přenos nového hesla všem jednotkám.
2.3 Rezervace Nastavení rezervací obsahuje tyto volby: •
Minimální doba rezervace v minutách
•
Maximální doba rezervace ve dnech
•
Výchozí délka rezervace v minutách
•
Minimální prodleva mezi rezervacemi - Počet minut po každé rezervaci, po které nepůjde vytvořit rezervace. Snižuje se tím rizikovzniku konfliktu mezi rezervacemi při pozdním vrácení
2.4 Číselníky Tato část obsahuje dynamicky nastavovatelné číselníky, u kterých může dojít ke změně hodnot. Jednotlivé údaje se zadávají do textového pole a jsou odděleny čárkou (text samozřejmě může obsahovat mezery). •
Typy automobilů – Seznam typů automobilů, podle kterých lze dále filtrovat automobily. Seznam by měl obsahovat pouze ty typy, které společnost vlastní.
•
Typy záznamů automobilů – Každý záznam má svůj typ, může se jednat například o platbu za internet, splátku za auto, účet za servis nebo jenom poznámku o automobilu.
2.5 Formát zpráv a připomínek Tato část formuláře obsahuje formáty všech emailů odesílaných z modulu Metrocar. Každý mail obsahuje předmět a proměnné, které lze vložit do jeho obsahu (začínají vykřičníkem). Systém neodesílá html emaily, formát je čistě textový.
2.6 Fakturační údaje Název firmy, adresa a další údaje, které se vkládají na faktury. Tyto údaje jsou na fakturu vždy zkopírovány, takže pokud dojde ke změně sídla, neovlivní to již vydané faktury.
3. Editor Systém používá wysiwyg editor TinyMCE (tinymce.moxiecode.com/) a manager obrázků IMCE. Ukázka je vidět níže, postup instalace a nastavení editoru je uveden v příručce administrátora. Ukázka je vidět na následujících obrázcích:
Obrázek 1: Editace modelu Popisy automobilů by měly obsahovat i nějaké fotografie, obrázek se vloží kliknutím na ikonu pro vložení obrázku (zelený strom).
Obrázek 2: Dialog vložení obrázku V tomto dialogu lze vložit obrázky, pokud známe jejich cestu. Díky rozšíření IMCE lze jednoduše nahrát libovolný obrázek na server. IMCE se zobrazí po kliknutí na ikonu vedle URL obrázku. Obrázky lze uploadovat na server a měnit jejich velikost. Pro vložení do textu slouží tlačítko Send to TinyMCE.
Obrázek 3: IMCE manažer obrázků Práce s tímto rozhraním je více do detailů popsána na: http://www.maxiorel.cz/drupal-video-tinymce-imce-lightbox-obrazky-v-drupalu-podruhe http://www.drupal.cz/clanky/moduly/tinymce-editor-pro-fajnsmekry-i-bezne-uzivatele
4. Uživatelé Administrace → Uživatelé Metrocar → Uživatelé Uživatelé jsou sdíleni mezi pobočkami, pokud je uživatel registrovaný v jedné pobočce, může se přihlásit na webu jiné pobočky. Uživatelské role již sdíleny nejsou, takže pokud chce využít služeb jiné pobočky, musí požádat příslušného managera o přístup a ten mu přiřadí roli Uživatele.
4.1 Registrace uživatele
Obrázek 4: Vytvoření nového účtu
Obrázek 5: Registrační formulář Po odeslání formuláře čeká účet na schválení managerem. Ke schválení by mělo dojít ihned po ověření údajů a osobním podpisu smlouvy. Po schválení účtu přijde uživateli email s adresou, kde si zvolí nové heslo do systému a dokončí tak aktivaci svého účtu. Postup registrace nového uživatele lze samozřejmě upravit v administrační části Administrace → Uživatelé → Uživatelská nastavení kde lze také nastavit formáty uvítacích emailů. Uvítací email by měl obsahovat další informace o postupu registrace a odkazy na jednotlivé stránky a postupy. Modul metrocar neobsahuje žádné předvyplňené formáty zpráv.
Obrázek 6: Nastavení registrace uživatelů
Obrázek 7: Schválení uživatelského účtu
Obrázek 8: Aktivní uživatelský účet
4.2 Deaktivace uživatele Deaktivovat uživatele lze dvěma způsoby: odebráním role a deaktivací uživatelského účtu. Při deaktivaci účtu nebude mít uživatel přístup do žádné pobočky, pokud manager odebere roli „Uživatel“, odebere uživateli přístup k využívání carsharingu.
4.3 Výpis uživatelů Metrocar → Uživatelé Na výpis uživatelů lze aplikovat různé filtry a zobrazit tak například pouze uživatele této pobočky (role Uživatel).
Obrázek 9: Výpis uživatelů, kteří mohou vytvářet rezervace
5. Přístupové karty Metrocar → Přístupové karty Přístupové karty slouží k ověření zákazníka při odemykání vozu, každý by měl mít právě jednu, ale je možné přiřadit i několik karet (například pro členy rodiny). Existuje speciální typ karty, označovaný jako servisní, který může otevřít libovolný automobil i bez předchozí rezervace a slouží tak jako univerzální klíčky. Zákazník by neměl nikdy dostat do rukou tuto kartu, je určena pouze pro techniky.
Obrázek 10: Seznam karet v systému Kartu lze v případě ztráty deaktivovat nebo odebrat vlastníka a tím ji zneplatnit.
Obrázek 11: Vložení nové karty
6. Parkoviště Automobily jsou rozmístěny po celém městě, nicméně by měly být vždy vráceny na stejné místo, na své parkoviště. Každé parkoviště má svoji GPS pozici, podle které systém určuje, zda se automobil nachází na parkovišti. Samozřejmě je nutné počítat i nepřesností GPS a s možností, že parkovací místo bude obsazené, proto je nutné volit radius s rezervou. Počet míst na parkovišti je pouze orientovaný a má smysl pouze pokud se jedná o vyhrazené parkoviště (určené pouze pro vozy společnosti). Parkoviště je možné pojmout i jako městskou čtvrť. Automobily nesmí v žádném případě parkovat v podzemních garážích, GPS příjmač by tam pravděpodobně neměl signál. I každé jiné parkoviště je potřeba před zanesením do systému prověřit na dostupnost GPS a GPRS signálu.
Obrázek 12: Seznam parkovišť
Obrázek 13: Detail parkoviště Vůz lze přiřadit k parkovišti detailech vozu:
Obrázek 14: Přiřazení parkoviště
6.1 Vyhrazená parkoviště U každého automobilu lze zvolit, jestli má parkovat pouze na vyhrazených parkovištích nebo je možné vrátit automobil kdekoliv. Pokud by se zákazník pokusil vrátit automobil, který lze vrátit pouze na vyhrazeném parkovišti, kdekoliv jinde, systém rezervaci neukončí. Zákazník má v tuto chvíli dvě možnosti: 1. Dojet na nejbližší parkoviště (adresa přijde emailem nebo SMS). 2. Zavolat operátorovi a domluvit se na dočasném zrušení vyhrazeného parkoviště.
7. Vozový park 7.1 Modely automobilů Metrocar → Modely aut Technické parametry jsou uvedeny u modelu vozu a měl by zde být obsažen i popis, další doplňkový popis je uveden u jednotlivých vozů. V případě, že existují dva automobily stejného typu, ale liší se například pouze motorem, je potřeba vytvořit nový model. •
Motor – textové pole, měl by obsahovat minimálně obsah, v lepším případě i výkon a typ.
•
Palivo – systém počítá s hybrdními vozy, první typ paliva je povinný, druhý volitelný
•
Objem kufru – důležité především u užitkových vozů a combi verzí
Více o ovládání wyiswyg editoru se lze dočíst v sekci 3.
7.2 Automobily •
Model – obsahuje většinu technických parametrů vozu, musí být vyplněn.
•
Barva karoserie – pomáhá zákazníkovi najít vůz na parkovišti
•
Popis – obsahuje doplňkové informace k modelu specifické pro tento konkrétní vůz. V popisu by měla být obsažena i fotografie pro snadnější nalezení na parkovišti.
•
Datum výroby – volitelný parametr, podle kterého lze určit stáří vozu.
•
Telefonní číslo GSM/GPRS zařízení – telefonní číslo sim karty ve voze, je důležité pro funkci rezervace přes SMS a další SMS funkce.
•
IMEI číslo GPRS zařízení – jedná se o IMEI číslo, podle kterého jsou rozlišovány jednotlivé vozy. Toto číslo by mělo být uvedeno na samotném zařízení (deska XT 65).
•
Aktivní – pokud již vůz dosloužil (prodej, nehoda), lze ho deaktivovat a zabránit tak další rezervaci nebo zobrazení v systému. Deaktivaci lze použít i v případě, že je vůz delší dobu nepojízdný nebo v servisu.
•
Pouze vyhrazené parkoviště – systém nedovolí vrátit vůz jinde, než na nadefinováném parkovišti (více o parkovištích je uvedeno v sekci Parkoviště)
•
Majitel – většinou je majitelem společnost, toto pole je zde pouze pro testovací provoz, kdy automobily mohou dodávat i sami uživatelé. Majitel automobilu má přístup ke knize jízd i k jeho výdajům.
7.3 Kniha jízd Metrocar → Automobily → vůz → Kniha jízd Kniha jízd obsahuje souhrn všech výdajů za automobil, jízd, spotřeby a využití. Systém automaticky eviduje všechny jízdy, které mohou být dvojího druhu: •
běžná jízda – vznikla z rezervace, její začátek a konec je shodný s rezervací. Může se skládat z několika dílčích jízd, které ovšem nejsou v systému nikde viditelné
•
servisní jízda – vznikla za použití servisní karty a není vázána na rezervaci. Neobsahuje žádné další dílčí jízdy
7.3.1
Vyrovnávací záznam
Může se stát, že stav tachometru nebude odpovídat této knize jízd (například z důvodu výpadku palubní jednotky), do systému lze proto vložit i vyrovnávací záznam.
Obrázek 15: Výběr rezervace pro vyrovnávací záznam
Prvním krokem při vložení vyrovnávacího záznamu je výběr rezervace, u které chceme upravit délku trasy. Systém nabízí možnost vložit i záznam nezávislý na rezervaci. Tyto záznamy nelze jednotlivě prohlížet ani mazat. Pro zkrácení délky trasy lze vložit záporný počet kilometrů.
7.3.2
Náklady
Systém eviduje veškeré náklady spojené s provozem automobilu, skládají se z nákladů za palivo a všech ostatních nákladů. Pokud se náklady evidují důkladně, může systém vypočítat náklady na kilometr a náklady na hodinu rezervace, podle kterých lze upravit ceníky.
Obrázek 16: Náklady na provoz 7.3.3
Spotřeba
Kromě průměrné spotřeby systém eviduje i spotřebu v jednotlivých měsících.
7.3.4
Záznamy
Pod tuto položku spadají všechny ostatní výdaje. Zaznamy lze použít pro evidenci nákladů na vozidlo, jako jsou splátky, platby za internet, náklady na servis, pojištění, ale i poznámky o stavu vozidla. Záznamy mohou obsahovat i přiložené soubory, které mohou sloužit například pro uchování faktury spojené s nákladem na vozidlo.
Obrázek 17: Výpis dalších výdajů v knize jízd
Obrázek 18: Vložení záznamu 7.3.5
Zobrazení aktulální pozice automobilu
Z důvodu ochrany soukromí uživatelů nelze zobrazit aktulání pozici automobilu, pokud ho někdo používá, nicméně pro nouzové případy nabízí systém zobrazení pozice s informováním zákazníka. Pokud automobil není používán, každý uživatel vidí jeho aktuální pozici.
8. Správa účtenek za palivo Metrocar → Účtenky
Účtenky by měl do systému vkládat sám zákazník, manager společnosti je už bude pouze schvalovat v okamžiku, kdy se k němu fyzicky dostane. Předání lze provést pomocí schránky v automobilu nebo osobním předáním. Účtenky jsou důležité pro sledování nákladů na automobil.
8.1 Vložení účtenky do systému
Obrázek 19: První krok - zvolení rezervace, ke které účtenka náleží V prvním kroku se vybere rezervace, ke které účtenka náleží. Tento krok pouze předvyplní údaje do formuláře, pokud není známá rezervace, lze všechny údaje vyplnit ručně kliknutím na „Vložit jinou účtenku“.
Obrázek 20: Formulář pro vložení účtenky
8.2 Schválení účtenky Pokud vkládá účtenku manžer, je schválena automaticky. Seznam neschálených účtenek je v záložce „Dosud neschválené“. Proces schválení je vidět na následujícím obrázku.
Obrázek 21: Schválení účtenky Před schválením může manažer letmým pohledem odhalit podvod, pokud se spotřeba od posledního tankování výrazně liší s průměrnou spotřebou.
9. Logování Metrocar → Log Log uchovává události, které se v systému odehrály a nebyly by jinak dohledatelné. V současné době lze logovat tyto události: •
Problémy s konektivitou automobilů – log vznikne ve chvíli, kdy se automobil neohlásí v očekávaný okamžik
•
Vytvoření vyrovnávacího záznamu jízdy – slouží pro dohledání nesrovnalostí v délce jízdy při stížnosti zákazníka
•
Smazané účtenky – neschválené účtenky nejsou v systému uchovány, pokud je na účtence nějaká nesrovnalost, je jí potřeba řešit se zákazníkem, tak aby neexistovaly žádné neschválené účtenky.
Logy jsou uchovány v databázi a nelze je měnit ani mazat.
10. Domovská stránka Globální domovská stránka by měla být nastavena na modul „metrocar“, ovšem záleží na managerovi, kam bude ukazovat. Nastavit lze v sekci Administrace → Nastavení webu → Informace o webu Nastavení domovské stránky modulu Metrocar lze upravit v nastavení modulu, záložce „Domovská stránka“. Domovská stránka může obsahovat text, mapu vozů nebo obojí.
11. Správa rezervací Manžer může s výchozím nastavení oprávnění rezervace pouze spravovat, pro vytváření vlastních rezervací potřebuje roli zákazníka. Správa je užitečná v případě, že operátor provozuje call centrum. Oproti běžnému zákazníkovi vidí seznam všech rezervací, může aktivovat zrušené rezervace, a modifikovat rezervace všech zákazníků. Proces vytváření rezervace je popsán v příručce uživatele.
12. Ceníky automobilů Metrocar→ Ceníky Manažer je oprávněn zobrazit, vytvářet a upravovat ceníky automobilů. Každý ceník je vždy vázán na jeden konkrétní model vozidla. Hlavním parametrem ceníku je kromě modelu vozidla především datum platnosti. Ceníky mají parametr „Platný od“, který vyjadřuje od kdy daný ceník platí. Jako platný se uvažuje vždy ceník, který má datum „Platný od“ nastaveno tak, že je nejbližší předchozí datu pro které chceme platnost zjistit.
Obrázek 22: Seznam ceníků Koncepce výpočtu ceny je následující: • U ceníku se nastaví základní parametry ceny:
• •
◦ Fixní poplatek za vytvoření rezervace ◦ Fixní poplatek za vyzvednutí automobilu ◦ Základní sazba za 1 ujetý kilometr ◦ Základní sazba za 1 hodinu výpůjčky K ceníku se přidají záznamy specifické pro konkrétní dny v týdnu, nebo konkrétní data během roku. U těchto denních záznamů lze navíc specifikovat jednotlivé časové úseky s různou modifikací základní sazby za 1 hodinu výpůjčky a to následovně: ◦ Nastavení koeficientu pokud je v tento časový úsek automobil používán. ◦ Nastavení koeficientu pokud automobil používán není. ◦ Nastavení koeficientu pro přesah výpůjčky (označováno jako pozdní vrácení automobilu).
12.1
Úprava ceníku
Metrocar→ Ceníky→ Upravit
Obrázek 23: Úprava ceníku Upravovat ceníky je oprávněn pouze manažer. Kromě parametrů popsaných v předchozím odstavci může manažer dále nastavit, zda daný ceník je dostupný zákazníkům. To lze využít například při sestavování ceníku, kdy ještě nejsou vyplněny všechny potřebné záznamy.
12.1.1
Kopírování ceníků
Sekce pro úpravu ceníků kromě samotného uložení úprav umožňuje i ceník kopírovat. Pouze místo tlačítka Uložit využijeme tlačítko Kopírovat.
12.2
Časová osa
Důležitou součastí ceníků je tzv. „časová osa“. Na časové ose můžeme prohlížet jednotlivé denní úpravy pro daný ceník. Ke každému dni pak přísluší i legenda, která usnadňuje orientaci v cenách během dne. Existují dva druhy zobrazení časové osy: Metrocar→ Ceníky→ Zobrazit •
Časová osa pro zákazníky. Tu zobrazíme výběrem zobrazit ceník. Tato volba zobrazení zachycuje jak záznamy v časové ose, tak i základní ceny pro daný ceník.
Obrázek 24: Zobrazení časové osy pro zákazníky Metrocar→ Ceníky→ Časová osa ceníku •
Časová osa pro administrátory. Toto zobrazení je přizpůsobeno potřebám administrátorů a je běžným zákazníkům nedostupné. Zobrazení této varianty vyvoláme pomocí odkazu „časová osa“, který se zobrazí po tom, co klikneme na úvodním seznamu na odkaz „upravit“. Administrátor kromě sledování jednotlivých nastavených koeficientů může navíc mazat, přidávat a upravovat jednotlivé záznamy v časové ose ceníku.
Obrázek 25: Zobrazení časové osy pro administrátory
12.3
Přidávání a upravování záznamů v časové ose ceníku
Metrocar→ Ceníky→ Časová osa ceníku→ Upravit
Obrázek 26: Úprava časového záznamu Úpravu či přidání provedeme stejným způsobem, tj. vyplněním parametrů a kliknutím na tlačítko Uložit. Mění se pouze nadpis formuláře.
12.4
Kopírování záznamů v časové ose
Metrocar→ Ceníky→ Časová osa ceníku→ Kopírovat Pro ušetření práce při vytváření nových ceníků je možné kopírovat jednotlivé denní záznamy – vybereme si den, který již máme vytvořený a pomocí volby kopírovat tento den zkopírujeme na nějaký jiný. Nemusíme se tak zabývat opakovaným vytvářením stejných časových úseků.
Obrázek 27: Kopírování časového záznamu
13. Uživatelské tarify Uživatelé mají možnost si předplatit jeden z tarifů. Tyto tarify jim poskytují za určitý měsíční paušální poplatek získat volné kilometry a navíc někdy i slevu na jejich veškeré rezervace. Tato sleva se nastavuje pomocí koeficientu, kterým se pronásobí běžná cena. Dalším parametrem ceníku je to, zda je momentálně aktivní (a uživatelé ho tak mohou využívat), či nikoliv.
13.1
Správa tarifů
Metrocar→ Uživatelské tarify
Obrázek 28: Kopírování časového záznamu Základní obrazovka poskytuje přehled současných tarifů. Nabízí se možnosti přidat, upravit a smazat.
13.1.1
Přidání a úprava tarifů
Metrocar→ Uživatelské tarify→ Přidat / Upravit Z této sekce můžeme přidávat či upravovat tarify. Kromě parametrů, o kterých byla zmínka v úvodu této sekce lze u tarifu ještě vyplnit popis, kde lze specifikovat, co je na něm výhodné, pro které zákazníky je určen apod.
Obrázek 28: Kopírování časového záznamu 13.1.2
Mazání tarifů
Metrocar→ Uživatelské tarify Tarif smažeme kliknutím na smazat. Pokud pouze chceme daný tarif zneaktivnit, aby si ho nemohli uživatelé prohlížet, je vhodnější použít úpravu a nastavit tarif jako neaktivní.
1
Příručka uživatele verze 1.0
2
Obsah 1. Úvod..........................................................................................................................................3 2. Registrace..................................................................................................................................3 3. Uživatelský účet........................................................................................................................4 3.1 Změna kontaktních údajů.................................................................................................5 3.2 Změna hesla......................................................................................................................6 4. Správa rezervací........................................................................................................................6 4.1 Vytvoření rezervace..........................................................................................................6 4.1.1 Výběr času a automobilu..........................................................................................6 4.1.2 Potvrzení rezervace...................................................................................................7 4.2 Prodloužení rezervace......................................................................................................7 4.3 Zrušení rezervace..............................................................................................................7 4.4 Stavy rezervace.................................................................................................................7 5. Jízdy..........................................................................................................................................8 6. Účtenky za palivo....................................................................................................................10 7. Rezervace automobilů jiné pobočky.......................................................................................12 8. Ceníky automobilů..................................................................................................................13 9. Uživatelské tarify....................................................................................................................14
1. Úvod Příručka popisuje ovládání rezervačního systému, především práci s modulem Metrocar z pohledu běžného uživatele. Použitý vzhled na snímcích obrazovky se může lišit od skutečného nasazení systému.
2. Registrace
Obrázek 1: Vytvoření nového účtu
Obrázek 2: Registrační formulář
Po odeslání formuláře čeká účet na schválení managerem. Ke schválení by mělo dojít ihned po ověření údajů, osobním podpisu smlouvy a předání přístupové karty. Po schválení účtu přijde uživateli email s adresou, kde si zvolí nové heslo do systému a dokončí tak aktivaci svého účtu.
3. Uživatelský účet Můj účet Sekce můj účet obsahuje informace o uživateli a rychlé odkazy na další důležité části webu. Rychlá rezervace zobrazuje pouze dříve rezervované vozy a nebude zobrazena u čerstvě vytvořeného účtu. Statistiky obsahují sumu ujetých kilometrů a hodin rezervace za různá období.
3.1 Změna kontaktních údajů Můj účet → Upravit
3.2 Změna hesla Změna hesla je možná ve formuláři Upravit, v případě zapomenutého hesla je odeslán email s odkazem na stránku, kde lze heslo změnit (odkaz je v hlavním menu pro nepřihlášené uživatele).
4. Správa rezervací Metrocar → Rezervace
4.1 Vytvoření rezervace 4.1.1
Výběr času a automobilu
Obrázek 3: Rezervační formulář je možné předvyplnit v uživatelské části ve formuláři „Rychlá rezervace“.
4.1.2
Potvrzení rezervace
Potvrzení rezervace je závazné, rezervaci lze sice v časovém předstihu zrušit, ale může být naúčtován poplatek za její vytvoření. Tlačítko „Upravit“ vrací zpět na první část formuláře.
Obrázek 4: Potvrzení rezervace
4.2 Prodloužení rezervace Posun začátku rezervace je možný pouze před uplnynutím doby začátku rezervace
4.3 Zrušení rezervace Zrušit rezervaci lze pouze před jejím začátkem, jakmile začne, zrušení lze docílit zkrácením rezervace na nejkratší možnou dobu (půl hodiny ve výchozím nastavení).
4.4 Stavy rezervace Rezervace se může nacházet v těchto stavech: Rezervováno Rezervace je vytvořena a čeká na svůj start. Započatá
Rezervace přejde do tohoto stavu v momentě jejího začátku, začíná běžet účtování za hodinu (obvykle nižší sazba, než v aktivním stavu)
Aktivní
Automobil je již vyzvednut a používán.
Neukončená
Do tohoto stavu se dostane v momentě jejího plánovaného ukončení a čeká, než ji systém ukončí a vypočte cenu. V tomto stavu setrvá nejdéle dvě minuty.
Přetahuje
Rezervace již měla být ukončena, ale automobil je stále používán. K ukončení dojde ihned po vrácení automobilu.
Zrušená
Rezervace byla zrušena uživatelem (před jejím začátkem) nebo operátorem.
5. Jízdy Můj účet → Moje jízdy Jízdu je možné uskutečnit pouze po předchozí rezervaci, detaily jízdy obsahují její trasu, čas a cenu. Detaily může vidět pouze uživatel, který jízdu uskutečnil, provozovatel systému nemá k detailům jízdy zákazníků přístup.
Obrázek 5: Přehled všech jízd
Detaily jízdy je možné zobrazit kliknutím na odkaz „zobrazit“ v knize jízd.
6. Účtenky za palivo Metrocar → Účtenky Palivo tankují sami zákazníci, účtenky předávají provozovateli, který je přičte k účtu jako platbu za používání služby nebo je zákazníkovi proplatí. Předání účtenky probíhá osobně nebo prostřednictvím schránky ve voze. Každou účtenku za palivo je nicméně potřeba vložit do systému, tuto část by měl provádět uživatel, který palivo čerpal.
Obrázek 6: Výběr rezervace, ve které bylo čerpáno palivo
Obrázek 7: Formulář účtenky. Údaje by měly odpovídat papírové účtence.
Peníze jsou připsány na účet zákazníka ihned po schválení účtenky.
7. Rezervace automobilů jiné pobočky
Obrázek 8: Žluté značky označují volné automobily z jiných poboček
Uživatelský účet je mezi pobočkami sdílený, nicméně jeho aktivaci v jiné pobočce je třeba dohodnout s operátorem. Při prvním přístupu na stránky jiné pobočky je nutné znovu se přihlásit. Automobily všech operátorů lze zobrazit na jedné mapě kliknutím na odkaz „Zobrazit automobily všech poboček“.
Obrázek 9: Odkazy vedou na stránky dané pobočky
Obrázek 10: Rezervace dále probíhá stejně jako v domovské pobočce
8. Ceníky automobilů Metrocar → Ceníky
Uživatelé mohou prohlížet jednotlivé ceníky a zobrazovat tarifní podmínky pro všechny typy automobilů během dne.
Obrázek 11: Seznam ceníků
Zobrazení detailů ceníku provedeme kliknutím na odkaz zobrazit. Metrocar → Ceníky→ Zobrazit
Obrázek 11: Seznam ceníků
V detailu ceníku lze dohledat konkrétní tarifní podmínky. Ceny carsharingu se liší během dne. Dále jsou specifické pro každý model automobilu.
9. Uživatelské tarify Metrocar → Tarify Pro časté uživatele je velmi výhodné využít některý z nabízených tarifů. Tarify nabízejí výrazné slevy pro náročné zákazníky, kteří si automobily půjčují často. Tarify jsou složeny ze
dvou základních položek: volných kilometrů a slevy ze základní ceny jednotlivých modelů aut daná číselným koeficientem.
Obrázek 12: Seznam dostupných tarifů
Pro zakoupení tarifu je třeba kontaktovat administrátory, kteří vám tarif nastaví. To provedeme kliknutím na tlačítko “koupit”.
Příloha D – Podnikatelský plán Tento podnikatelský plán vznikl jako semestrální práce do předmětu Y16EPD (Ekonomie podnikání). Podnikatelský plán obsahuje kalkulaci nákladů, odhad zisků a způsoby financování. Může být užitečný pro budoucího provozovatele car-sharingu.
1
Obsah
1.Úvod..........................................................................................................................................3 2.Profil firmy................................................................................................................................3 2.1 Tarify................................................................................................................................3 3.Analýza trhu..............................................................................................................................3 3.1 Existuje skutečná potřeba carsharingu?............................................................................4 4.Fáze projektu.............................................................................................................................4 5.Lidské zdroje.............................................................................................................................5 6.Marketing..................................................................................................................................5 7.Technologické operace..............................................................................................................5 7.1 Server................................................................................................................................5 7.2 Palubní jednotka...............................................................................................................5 7.3 Náklady na informační systém.........................................................................................6 8.Automobily................................................................................................................................6 8.1 Výpočet RPSN..................................................................................................................7 9.Financování...............................................................................................................................7 9.1 Finanční leasing vs. Úvěr.................................................................................................7 9.2 Vratné vklady...................................................................................................................7 9.3 Dlouhodobý úvěr..............................................................................................................8 10.Výpočet nákladů......................................................................................................................8 10.1 Správní náklady..............................................................................................................8 10.2 Automobily.....................................................................................................................9 10.3 Celkové výdaje.............................................................................................................10 11.Výpočet tržeb........................................................................................................................10 12.Finanční výkazy....................................................................................................................11 12.1 Rozvaha........................................................................................................................11 12.2 Výkaz zisků a ztrát.......................................................................................................13 12.3 Cash flow......................................................................................................................14 13.Finanční ukazatele.................................................................................................................14 14.Hodnocení efektivnosti investic............................................................................................14 14.1 NPV a IRR....................................................................................................................16 14.2 Zhodnocení...................................................................................................................16 15.Rizika projektu......................................................................................................................16 16.Závěr......................................................................................................................................17 17.Přílohy...................................................................................................................................18
2
1. Úvod Car-sharing je služba, která svým zákazníkům umožňuje využívat automobil, aniž by jej museli vlastnit, či se starat o jeho provoz a údržbu. Služba tak doplňuje nabídku veřejné dopravy o možnost využívání individuálních jízdních prostředků. Car-sharing je ve světě již poměrně běžnou záležitostí, funguje v mnoha velkých městech. Jednotlivá auta jsou rovnoměrně rozmístěna po městě a k jejich půjčení postačí pouhá rezervace přes internet nebo SMS, před jízdou není potřeba vyplňovat novou smlouvu jako v autopůjčovně. Jednou z nesporných výhod je šetrnost k životnímu prostředí a možné snížení počtu automobilů v hustě osídlených aglomeracích. Více o carsharingu se lze dočíst na wikipedii http://en.wikipedia.org/wiki/Carsharing.
2. Profil firmy Společnost vznikne jako společnost s ručením omezeným a z počátku bude zaměstnávat pouze dva zaměstnance. Sídlo bude mít v pronajaté kanceláři. Pro udržení konkurenceschopnosti budou veškeré náklady stlačené na nutné minimum. Zisky budou plynout z pronajímání vozidel, u kterých se platí za půjčenou hodinu a kilometr a měsíčních paušálů. Další finanční zdroje získává společnost od zákazníků ve formě vratných vkladů. Společnost bude plátcem DPH. Předpokladem k úspěchu je neustálý růst, funkční rezervační online systém, nízká kolize rezervací, ale především již od počátku přemýšlet ve velkém. Společnost bude poskytovat služby soukromým i firemním zákazníkům a nabízet jak osobní, tak i užitkové vozy.
2.1 Tarify Společnost bude nabízet tyto tarify: •
Start – nízké měsíční i vstupní poplatky, ale vyšší cena za hodinu a kilometr. Tarif je vhodný především pro zákazníky, kteří jezdí pouze příležitostně.
•
Optimum – Nabízí nižší cenu za používání služby, oproti start variantě jsou placeny vyšší měsíční poplatky.
•
Bonus – Cena za hodinu a kilometr je stejná jako u varianty optimum, ale v tarifu jsou navíc zahrnuty další volné kilometry, které vycházejí výhodněji, než u tarifu Optimum.
Cena výpůjčky klesá s její délkou, výpůjčka na celý den má nižší hodinovou sazbu než na několik hodin. V noci jsou všechny ceny nižší, o víkendu naopak stoupají. Ceník jednoho modelu automobilu je uveden v sekci „Výpočet tržeb“.
3. Analýza trhu Osobní automobily jsou největším konkurentem car-sharingové organizace. Přesvědčit současné majitele osobních aut k využívání jiných druhů dopravy je výzva, služba pravděpodobně více osloví lidi bez vlastního automobilu. Některé majitele by mohlo přesvědčit porovnání nákladů za vlastní auto a půjčené auto. Dalšími konkurenty jsou městská hromadná doprava, taxi služba a auto půjčovny. V případě městské hromadné dopravy je opravdu těžké konkurovat cenou, nicméně v ohledu 3
flexibility a dostupnosti ji může car-sharing doplnit. Týká se to především nočních hodin a hůře dostupných cílů cesty. Z finančních i ekologických důvodů je navíc vhodné nevyužívat pouze car-sharing, ale kombinovat ho s městskou hromadnou dopravou. Taxi službu využívají především lidé, kteří se potřebují přepravit rychle z místa A do místa B bez předchozího časového plánu. Pro tento typ použití by byl car-sharing příliš drahý a nepraktický, protože automobil je potřeba vždy vrátit na původní místo. Car-sharing má oproti taxi službě velkou konkurenční výhodu pro zákazníky, kteří plánují v předstihu cestu tam i zpět a obě cesty od sebe nejsou časově příliš vzdálené. Posledním a nejvýraznějším konkurentem jsou autopůjčovny, které nabízí podobnou službu. Car-sharing nabízí vyšší dostupnost, protože vozy jsou rozmístěny po městě a mohou být v pěším dosahu. Cenově si obě služby odpovídají, nicméně car-sharing umožňuje oproti autopůjčovnám kratší výpůjčky než jeden den. Pro cizince, kteří jsou v zemi pouze krátce zůstává nadále výhodnější autopůjčovna.
3.1 Existuje skutečná potřeba carsharingu? Car-sharing je v dnešní době v Praze určitě potřebný a je i v zájmu města podporovat podobný druh služeb. Nedostatek parkovacích míst se stává skutečným problémem, protože nových aut neustále přibývá a parkovací kapacity už nelze dále rozšiřovat. Jedno auto může být sdíleno pěti až deseti uživateli, což výrazně snižuje nároky na parkovací místo. Velká část obyvatel města většinou ani vlastní automobil nevyužije, ale je donucena si ho koupit, protože nemají jinou alternativu. V Praze existuje několik míst, kde by byl car-sharing použitelný, jsou to nejen hustě osídlená místa, ale i sídliště a periferní části města.
4. Fáze projektu Rok
Počet automobilů
Počet uživatelů
Počet zaměstnanců
0,5
6
30
2
1
15
100
3
2
30
180
4
3
40
300
5
4
50
480
5
5
70
620
7
6
90
700
8
Tabulka 1: Fáze projektu
Kritickým faktorem úspěchu je perfektně funkční rezervační systém a jednoduché zaběhnuté postupy. První rok je proto nutné příliš nerozšiřovat flotilu a připravit půdu pro další roky i za cenu nulového zisku. Plán počítá s pořízením alespoň deseti automobilů ročně, přesný počet samozřejmě bude záviset na poptávce. Po čtvrtém roce budou splacena první vozidla, dojde k jejich prodeji a nahrazení novými vozy. Fáze projektu mohou reagovat na aktuální poptávku na trhu a podle toho se mohou zkrátit i prodloužit. Poměr automobilů a zákazníků by neměl překročit 1:10, 4
skutečný poměr bude vycházet z tarifů zákazníků, je důležité zajistit nízkou kolizi rezervací a zároveň vhodnou využitost automobilu.
5. Lidské zdroje Provozní doba kanceláře je 6 hodin denně, nicméně není kritická a může být i zkrácena. Flotila patnácti automobilů vyžaduje nejméně jednoho technika, který bude vozy pravidelně kontrolovat a čistit. První dva roky musí být role všech zaměstnanců zaměnitelné, po rozšíření flotily budou potřeba další zaměstnanci, zhruba jeden na každých 15 aut. Po prvním roce provozu se společnost rozšíří o dalšího fleet mangera / technika, po dvou letech o účetní, ve třetím roce o technika. S dalším rozvojem firmy bude potřeba najmout zaměstnance na údržbu informačního systému a přípravu nových automobilů, telefonního operátora a dalšího technika.
6. Marketing Každý automobil bude mít polepy a stane se tak bezplatnou reklamní plochou. Další marketing budou představovat články v časopisech a na internetu, které budou publikovat manažeři společnosti i její uživatelé. Jedná se o novou službu, která jistě vzbudí zájem veřejnosti. Marketingová kampaň bude podporována samozřejmě i reklamou v časopisech a na internetu, ale vzhledem ke snaze snížit náklady na minimum bude preferována nízko-nákladová reklama.
7. Technologické operace Základním předpokladem k nabízení car-sharingových služeb je informační systém, který obsahuje správu vozového parku, rezervační systém, fakturování a knihu jízd. K tomuto účelu poslouží opensource software Metrocar, který je v současné době připraven ke zkušebnímu provozu. Systém se skládá ze serveru a palubních jednotek umístěných v každém voze. Systém je navržen tak, aby zaměstnanci společnosti přišli do kontaktu s vozem co nejméně. Vývojová verze je umístěna na adrese http://www.metrocar.cz.
7.1 Server Software je možné provozovat téměř na libovolném hostingovém serveru, náklady na jeho provoz budou minimální, vyžadována bude pouze garance vysoké dostupnosti. Tento software bude hlavním komunikačním prostředkem mezi provozovatelem a zákazníkem, rezervace automobilu je provedena převážně přes webové rozhraní. Systém samozřejmě bude obsahovat i přehled jízd a plateb.
7.2 Palubní jednotka Palubní jednotka je připojená k internetu pomocí GPRS modemu, sbírá informace o pozici z GPS přijímače, které neustále odesílá na server, autentizuje uživatele pomocí přístupových RFID karet, odemyká automobil a obsahuje funkci imobilizéru. Každý zákazník má svoji přístupovou kartu, kterou dokáže odemknout každý automobil, který si předem zarezervuje. Odhadovaná životnost palubní jednotky jsou 4 roky. Palubní jednotka je složena z několika komponent a běží na vlastním software.
5
7.3 Náklady na informační systém Díky použití open source technologií výrazně klesnou počáteční náklady, ale do budoucna bude potřeba vyčlenit peníze i na další vývoj systému. Cena jedné palubní jednotky by neměla překročit 6000 Kč.
8. Automobily Automobily budou kupovány vždy nové, vybírány podle obliby u zákazníků a aktuálních slev. Předpokládaná doba provozu automobilu je 4 roky, ale v závislosti na stavu vozu může být i prodloužena. Předpokládané využití je 6 hodin denně, během kterých se najede 100 km K pořizovacím nákladům je přičtena cena za palubní jednotku, polepy a další volitelnou výbavu. Cena za palubní jednotku a polepy je 10000 Kč, cena klesne při objednání většího množství. Škoda Fabia classic – 1.2 htp
Peugeot Bipper Furgon 1,4 75k
Renault Thailia 1,2 75k
Citroen Berlingo X 1.4I
Citroen C1 X 5D 1.0
Cena po slevě 161 919
120 000
136 890
169 290
145 719
Cena za hotové
182 169
170 000
153 819
217 647
170 019
Cena včetně úroků
194 302
144 000
164 268
203 148
174 862
Úroky
32 383
24 000
27 378
33 858
29 143
Pořizovací cena
171 919
130 000
146 890
179 290
155 719
Měsíční náklady
11 495
11 130
11 091
13 114
9 792
Náklady na kilometr
3,70 Kč
3,58 Kč
3,57 Kč
4,22 Kč
3,15 Kč
Náklady na hodinu rezervace
54,00 Kč
52,27 Kč
52,09 Kč
46,62 Kč
46,00 Kč
Průměrná spotřeba (l/100km)
5,9
6,9
5,9
8
4
Sleva při využití přímého financování
25 000
50 000
20 000
50 000
30 000
Tabulka 2: Použité automobily, všechny ceny jsou bez DPH
6
Odkazy na vozy, které budou pořízeny v první fázi projektu: •
http://automodul.idnes.cz/skoda-fabia-classic-1-2-htp-c27852
•
http://automodul.idnes.cz/peugeot-bipper-furgon-1-4-75k-c30651
•
http://www.autosystem.cz/citroen-c1-x-5d-1-0-vvt-i-50-68-kw-k-c12263?sps=691
•
http://automodul.idnes.cz/renault-thalia-authentique-new-2008-1-2-16v-75k-c47802
•
http://automodul.idnes.cz/citroen-berlingo-x-1-4i-c41753
8.1 Výpočet RPSN Cena vozu Renault Thailia je 136 890,- bez DPH, při využití Renault spotřebitelského úvěru, době splácení 4 roky bude celková zaplacená částka 4243 x 48 = 203664,- s DPH (164967,bez DPH), automobil bude ve výsledku přeplacen o 20%, RPSN vychází na 12%.
9. Financování Na všechny vybrané vozy lze použít spotřebitelský úvěr přímo od automobilky a získat tak další slevu z pořizovací ceny vozidla. Nejkratší doba leasingu je pro podnikatele podle legislativy 5 let, což ho činí nepoužitelným pro tento projekt, kde se počítá s životností vozu 4 roky. Nabízené slevy se vztahují jak na leasing, tak i na úvěr od automobilky. Pro tento projekt je využití přímého financování velice důležité, protože výsledná cena je oproti nákupu za hotové jenom nepatrně vyšší a odpadá nutnost úvěru z banky, který by byl pro tyto částky problematický a téměř nerentabilní. V dalších letech by délka splácení vozu pravděpodobně klesla na rok a s tím i RPSN. Nově lze díky novele zákona o DPH započítat do nákladů i DPH každé splátky automobilu. Další finance firma získává firma od svých zákazníků ve formě vratných vkladů (tabulka 3).
9.1 Finanční leasing vs. Úvěr •
délka smlouvy úvěru může být od 12 měsíců, nejkratší leasing je na 5 let
•
u úvěru lze provést okamžitý odpočet DPH
•
úvěr vstupuje do aktiv a má vliv na ROA
•
leasing je většinou snadněji dostupný
•
u úvěru se vůz okamžitě stává majetkem firmy a lze jím ručit
9.2 Vratné vklady Vratné vklady jsou peníze, se kterými může společnost operovat, využije je především na nákup nových automobilů, ale slouží i jako pojistka včasné platby za služby od zákazníka. V okamžiku, kdy zákazník ukončí smlouvu, bude mu tento vklad vrácen.
7
1. rok
2. rok
3. rok
4. rok
5. rok
6.rok
Počet zákazníků
100
180
300
480
620
700
Vklady celkem
350 000
630 000
1 050 000
1 680 000
2 170 000
2 450 000
Nové vklady
350 000
280 000
420 000
630 000
490 000
280 000
Tabulka 3: Vratné vklady zákazníků
9.3 Dlouhodobý úvěr Půjčka je potřeba pro první dva roky provozu na pokrytí provozu vozidel a mzdy zaměstnanců. Podle výsledovky chybí na první dva roky provozu necelé 2 mil. Kč , 350 000,- (620 000,druhý rok) je k dispozici ve formě vratných vkladů, 200 000 je vlastní majetek. Půjčka od banky bude ve výši 1 800 000,- s dobou splatnosti 3 roky a úrokem 12%. Rok
Úmor
Úrok
Splátka
1
533 428
216 000
749 428
2
597 440
151 989
749 428
3
669 132
80 296
749 428
celkem
1 800 000
448 285
2 248 284
Tabulka 4: Úvěr s konstantní splátkou
10.
Výpočet nákladů
Výpočet nákladů je v této fázi důležitý pro stanovení ceny a limitů nákladů, do budoucna především pro sledování rentability jednotlivých vozů.
10.1
Správní náklady
Správní náklady se skládají z nákladů za provoz kanceláře a nákladů na zaměstnance.
8
Ro Mzda Pronájem k zaměstnanců kanceláře
Provozní náklady kanceláře
Rezervační Marketing systém
Další náklady
Celke m
1
93150
12000
11000
8000
6000
8231
138381
2
124200
12000
13000
5000
5000
8231
167431
3
115000
12000
14000
5000
3000
16462
165462
4
155250
12000
15000
5000
3000
16462
206712
5
198000
20000
15000
5000
3000
16462
257462
6
227800
20000
15000
5000
3000
16462
287262
Tabulka 5: Správní náklady
•
Tabulka uvádí měsíční výdaje za provoz kanceláře.
•
Jedná se o hrubou mzdu, která zahrnuje sociální a zdravotní pojištění.
•
Provozní náklady kanceláře zahrnují energii, telefony internet a náklady na kancelářské potřeby.
•
Další náklady zahrnují náklady na provoz firemních vozidel, které slouží především pro techniky (Citroen C1, od třetího roku dva).
10.2
Automobily
Detailní rozpis nákladů je uveden v přiložených tabulkách, neobsahuje správní náklady a uvádí všechny ceny bez DPH. Pro výpočty nákladů v dalších letech byl určen referenční automobil Škoda Fabia. Do nákladů na automobil samotný je potřeba promítnout i správní náklady, je tak učiněno prostou kalkulací dělením. Jak je zmíněno v sekci automobily, je předpokládáno využití 6 hodin denně a 100 km. Náklady na hodinu rezervace zahrnují veškeré náklady spojené s provozem společnosti i automobilů. Jeden z těchto ukazatelů je potřeba při sestavování ceníku rozpočítat do měsíčních paušálů a cen za kilometr a hodinu. Náklady na automobil Rok
Počet automobilů
Provoz
Celkem
Kilometr
Hodina rezervace
0,5
6
7 447
34 559
14,34 Kč
209,00 Kč
1
15
7 447
24 190
10,18 Kč
148,00 Kč
2
30
7 447
18 811
9,09 Kč
132,00 Kč
3
40
7 447
16 933
8,60 Kč
125,00 Kč
4
50
7 447
15 629
8,63 Kč
125,00 Kč
5
70
7 447
15 173
8,38 Kč
122,00 Kč
6
90
7 447
14 687
8,60 Kč
119,00 Kč
Tabulka 6: Celkové měsíční náklady na automobil včetně započítaných režijních nákladů při předpokladu využití automobilu v tabulce 9. Náklady na automobil jsou přepočteny na kilometr i na hodinu rezervace.
9
10.3
Celkové výdaje Celkové měsíční výdaje
Rok
Počet automobilů
Provozní náklady automobilů
Správní náklady
Splátka půjčky
Celkem
0,5
6
68 970
138 381
207 351
1
15
172 425
138 381
52 043
362 849
2
30
344 850
167 431
52 043
564 324
3
40
459 800
165 462
52 043
677 305
4
50
574 750
206 712
781 462
5
70
804 650
257 462
1 062 112
6
90
1 034 550
287 262
1 321 812
Tabulka 7: Celkové náklady na provoz společnosti. Provozní náklady automobilů zahrnují i měsíční splátklu úvěru.
100 90 80 70 60 Počet automobilů
50
Náklady na automobil (tis. Kč)
40 30 20 10 0 1
11.
2
3
4
5
6
Výpočet tržeb
Tržby plynou z měsíčního paušálu a jednotlivých jízd, bez předchozího průzkumu je téměř nemožné určit rozložení tarifu zákazníků, bude proto rozdělen půl na půl mezi tarify start a optimum. Náklady na kilometr a hodinu se liší u jednotlivých modelů automobilů, navíc jsou 10
přizpůsobeny délce výpůjčky a denní době, další výpočty budou uvažovat střední hodnoty uvedené v tabulce, které odpovídají modelu Škoda Fabia. Vstupní vklad je vratná částka, která slouží na pokrytí škod způsobeným zákazníkem a také jako způsob financování na nákup nových vozů. Ceny jsou uvedeny bez DPH. Tarif
Start
Optimum
Bonus
Měsíční paušál
200 Kč
500 Kč
1 200 Kč
Vstupní vklad
2 000 Kč
5 000 Kč
5 000 Kč
Cena za kilometr
5 Kč
4 Kč
3 Kč
Cena za hodinu
65 Kč
57 Kč
57 Kč
Volné kilometry
0
0
500
Tabulka 8: Ceník
Předpoklad využití automobilu Kilometry denně
100
Hodiny denně
6
Dny v měsící
22
Tabulka 9: Předpoklad využití automobilu
Měsíční tržby Rok
Počet automobilů
Počet uživatelů
Tržby z paušálu
Tržby z rezervací
Tržby celkem
0,5
6
30
10 500
107 712
118 212
1
15
100
35 000
269 280
304 280
2
30
180
63 000
538 560
601 560
3
40
300
105 000
718 080
823 080
4
50
480
168 000
897 600
1 065 600
5
70
620
217 000
1 256 640
1 473 640
6
90
700
245 000
1 615 680
1 860 680
12.
Finanční výkazy
12.1
Rozvaha
Je třeba zajistit prostory pro kancelář, marketing a nakoupit a vybavit automobily. Daňové odpisy se řídí zákonem, automobily se odepisují 3 roky.
11
Počáteční rozvaha ke dni 1.1. 2010 Aktiva
Pasiva
Automobily
1 041 000
Vlastní kapitál
250 000
Vybavení automobilů
60 000
Půjčky od automobilek
1 041 000
Vybavení kanceláře
80 000
Dlouhodobý úvěr
1 500 000
Běžný účet
1 610 000
Celkem
2 791 000
Celkem
2 791 000
Automobily v počáteční rozvaze: • 1 x užitkový Peugeot Bipper Furgon • 2 x Škoda Fabia Classic • 2 x Citroen C1 (jeden pro potřeby technika) • 1 x Citroen Berlingo • 1 x Renault Thalia
12
12.2
Výkaz zisků a ztrát 1. rok
2. rok
3. rok
4. rok
5. rok
6. rok
Mzdy
-1 117 800
-1 490 400
-1 380 000
-1 863 000
-2 376 000
-2 733 600
Provozní náklady
-542 772
-518 772
-605 544
-617 544
-713 544
-713 544
Náklady na -1 340 460 provoz automobilů
-2 680 920
-3 574 560
-4 468 200
-6 255 480
-8 042 760
Vyplacené -76 424 úroky (vozidla)
-256 879
-326 501
-392 632
-517 375
-624 286
Odpisy
-2 428 785
-2 023 988
-1 619 190
-2 428 785
-3 238 380
-151 989
-80 296 971 514
971 514
-1 214 393
Vyplacené -216 000 úroky Zisky z prodeje aut Tržby
2 534 952
7 218 720
9 876 960
12 787 200 18 655 194 23 299 674
Hrubý zisk -1 972 896
-309 025
1 886 071
3 826 634
7 335 524
8 918 618
Daň ze zisku
0
0
396 075
803 593
1 540 460
1 872 910
Čistý zisk
-1 972 896
-309 025
1 489 996
3 023 041
5 795 064
7 045 708
Tabulka 10: Výsledovka
•
Splátka úvěru je zahrnuta v nákladech
•
Doba odpisu automobilů je podle novely zákona 2 roky, odepisuje se pouze cena po slevě
•
Daň ze zisku je podle §37, zákona o daních z příjmů 21%
•
Automobily budou po čtyřech letech používání odprodány za 40% pořizovací ceny
13
12.3
Cash flow 1. rok
2. rok
3. rok
4. rok
5. rok
Zisky
-1 972 896
-309 025
1 489 996
3 023 041 5 795 064
7 045 708
Odpisy
1 214 393
2 428 785
2 023 988
1 619 190 2 428 785
3 238 380
Úmor vozidel
-636 865
-2 140 657
-2 720 842
-3 271 931 -4 311 462 -5 202 382
Půjčka
1 266 572
-597 440
-669 132
CF
-128 797
-618 337
124 010
1 370 300 3 912 387
6. rok
5 081 706
Tabulka 11: Cash flow v jednotlivých letech počítaný nepřímou metodou
13.
Finanční ukazatele
Finanční ukazatelé vycházejí z stavu společnosti ve čtvrtém roce. Úroková sazba úvěru je 12% a náklady na vlastní kapitál jsou 10%. Vlastní kapitál je 6 395 837,- (splacené vozy) cizí 2 678 889,- (nesplacená část flotily), aktiva činí 9 954 726,-
14.
Finanční ukazatel
Hodnota
ROA
0,4
ROE
0,47
Věřitelské riziko
0,28
WACC
0,098
EVA
2 129 499
Hodnocení efektivnosti investic
Jediné místo pro investice v této společnosti je v pořízení nového automobilu, model se vždy vybírá na základě poptávky zákazníků a na současné nabídce automobilek. Dražší automobily mají vyšší hodinovou sazbu, pokud mají nadprůměrnou spotřebu, tak i vyšší sazbu za kilometr. Zisky jsou vypočítány na základě těchto ceníků: Model
Cena za kilometr
Cena za hodinu
Škoda Fabia
3,7
54
Peugeot Bipper
3,58
52,27
Citroen C1
3,15
46
Tabulka 12: Ceník modelů
Odhadovaný zisk pro jednotlivé modely automobilů udává následující tabulka:
14
Model
Cena
1. rok
2. rok
3. rok
4. rok
5. rok
Škoda Fabia
171 919
78 584
78 584
78 584
78 584
60 172
Peugeot Bipper
130 000
64 972
64 972
64 972
64 972
45 500
Citroen C1 155 719
69 234
69 234
69 234
69 234
54 502
Zisk je vypočítán podle ceníku v tabulce 9 při předpokladu využití automobilu podle tabulky 7 a zahrnuje veškeré provozní náklady (palivo, pojištění, údržba). Pátý rok bude vůz prodán za 35% pořizovací ceny.
15
14.1
NPV a IRR
Jako diskontní sazba je zvolena úroková míra 12%, údaje v tabulce znázorňují diskontované peněžní toky v jednotlivých letech. Hodnota IRR (vnitřní výnosové procento) je taková hodnota, pro kterou je NPV (čistá současná hodnota) rovno nule. Model Škoda Fabia
Investic e
1. rok
2. rok
3. rok
4. rok
5. rok
NPV
IRR
0
70 164
62 647
55 935
49 942
34 143
272 830 26,13%
Peugeot 0 Bipper
58 011
51 795
46 246
41 291
25 818
223 161 30,44%
Citroen 0 C1
61 816
55 193
49 279
43 999
30 926
241 214 24,96%
14.2
Zhodnocení
Dle finančních ukazatelů se vyplatí koupit užitkový vůz Peugeot Bipper, vyšší IRR vyšlo především díky vysoké slevě při využití přímého financování, při koupi za hotové by byly hodnoty nižší. Výpočet počítá se stejným využitím všech vozů, které bude ve skutečnosti záležet na lokalitě a ceníku.
15.
Rizika projektu
1. Nedostatek poptávky – kritické 2. Zcizení nebo poškození vozu – vysoké 3. Poškození vybavení vozu – vysoké 4. Příliš vysoké opotřebení vozu 5. Ztráta zaměstnance – vysoké (především v prvních dvou letech) 6. Výpadek informačního systému – střední až vysoké Car-sharing není v České republice příliš známý a lidé k němu zpočátku nebudou mít důvěru. Potencionální zákazníky by mohla odrazovat na první pohled vyšší cena služby. Riziko by se mělo snížit průběžným prováděním průzkumů a vhodným umístěním automobilů převážně v hustě osídlených oblastech. V prvním roce se toto riziko sníží marketingovou kampaní, psaní PR článků do časopisů a internetových magazínů. V dalších letech se o reklamu zaslouží vlastní vozy, které budou viditelné po celém městě a připoutají pozornost dalších obyvatel města. Riziko zcizení nebo poškození vozu je vzhledem k veřejnému přístupu k vozům vysoké, ale lze snížit vhodným pojištěním vozu a spoluúčastí zákazníka, který je za případné poškození zodpovědný. V prvních dvou letech nebude projekt příliš ziskový a nové automobily nebudou vyžadovat vysokou pozornost techniků, takže společnost bude zaměstnávat nejnižší možný počet zaměstnanců. Informační systém je klíčový pro funkčnost služby a jeho výpadek by znemožnil rezervaci 16
automobilů a snížil důvěru zákazníků ke společnosti. Riziko lze snížit důkladným testováním software během vývoje a provozováním u společnosti, jejíž servery jsou zabezpečeny proti výpadku.
16.
Závěr
Pro zjednodušení počítá plán od druhého roku pouze s provozem jednoho modelu vozidla, skutečné modely by byly vybírány podle aktuálních akcí, nabídky automobilek a oblíbenosti u zákazníků. Před zpracováním tohoto plánu nebyl proveden průzkum, na kterém lze postavit rozmístění vozidel, jejich počet a modely, ani není známa skutečná poptávka. V plánu nejsou uvedena žádná jména zaměstnanců, má pouze naznačit možný postup pro potencionálního provozovatele. Všechny uvedené výdaje a zisky je také třeba brát s nadhledem, v praxi mohou být zisky poloviční a výdaje o polovinu vyšší. Vzhledem k tomu, že v ČR dosud neexistuje žádný provozovatel carsharingu, má tento projekt perspektivu do budoucnosti a i přes vysoká rizika existuje vysoká šance na úspěch, podmínkou je ovšem uvažovat již od začátku ve velkém.
17
17.
Přílohy
Výpočet nákladů na kilometr všechny ceny jsou uvedeny bez dph
Roční výdaje
Předpokládané využití vozu
Servis Pojištění Další provozní náklady Výměna pneu Čištění
12 000 Kč 11 000 Kč 2 000 Kč 5 500 Kč 4 000 Kč
Parkování Internet Celkem
4 000 Kč 38 500 Kč
Hodin v provzu Maximální Optimistické Realistické Pesimistické Žádné
24 12 7 3 0
Cena paliva Délka používání (roky)
22 4
Další pořizovací náklady Palubní jednotka Polepy Celkem
5 000 Kč 5 000 Kč 10 000 Kč
18
Hilometry za den Kilometry ročně 350 127750 175 63875 102,08 37260,42 43,75 15968,75 0 0
Náklady na automobil Automobil Pořizovací cena Další pořizovací náklady Další měsíční náklady Spotřeba Náklady celkem
Škoda Fabia classic Peugeot Bipper Citroen C1 X 5D Renault Thailia 1,2 – 1.2 Furgon 1,4 75k Citroen Berlingo X 1.4I 75k 1.0 194 302 Kč 144 000 Kč 203 148 Kč 174 862 Kč 174 863 Kč 0 0 5,90 204 302 Kč
0 0 6,90 154 000 Kč
0 0 8 213 148 Kč
0 0 4 184 862 Kč
0 0 5,9 184 863 Kč
Maximální využití Náklady na km Náklady na hodinu Náklady den Fixní náklady na den Roční náklady Měsíční náklady Fixní roční náklady Náklady na palivo
2,00 Kč 29,15 Kč 699,71 Kč 245,41 Kč 255 395,00 Kč 21 282,92 Kč 89 575,50 Kč 165 820 Kč
2,12 Kč 30,93 Kč 742,26 Kč 210,96 Kč 270 924,50 Kč 22 577,04 Kč 77 000,00 Kč 193 925 Kč
2,48 Kč 36,14 Kč 867,47 Kč 251,47 Kč 316 627,00 Kč 26 385,58 Kč 91 787,00 Kč 224 840 Kč
1,54 Kč 22,50 Kč 540,10 Kč 232,10 Kč 197 135,50 Kč 16 427,96 Kč 84 715,50 Kč 112 420 Kč
1,96 Kč 28,60 Kč 686,40 Kč 232,10 Kč 250 535,25 Kč 20 877,94 Kč 84 715,75 Kč 165 820 Kč
Optimistické využití Náklady na km Náklady na hodinu Náklady den Fixní náklady na den Roční náklady Měsíční náklady Fixní roční náklady Náklady na palivo
2,70 Kč 39,38 Kč 472,56 Kč 245,41 Kč 172 485,25 Kč 14 373,77 Kč 89 575,50 Kč 82 910 Kč
2,72 Kč 39,72 Kč 476,61 Kč 210,96 Kč 173 962,25 Kč 14 496,85 Kč 77 000,00 Kč 96 962 Kč
3,20 Kč 46,62 Kč 559,47 Kč 251,47 Kč 204 207,00 Kč 17 017,25 Kč 91 787,00 Kč 112 420 Kč
2,21 Kč 32,17 Kč 386,10 Kč 232,10 Kč 140 925,50 Kč 11 743,79 Kč 84 715,50 Kč 56 210 Kč
2,62 Kč 38,27 Kč 459,25 Kč 232,10 Kč 167 625,50 Kč 13 968,79 Kč 84 715,75 Kč 82 910 Kč
Realistické využití Náklady na km Náklady na hodinu Náklady den Fixní náklady na den Roční náklady Měsíční náklady Fixní roční náklady Náklady na palivo
3,70 Kč 53,99 Kč 377,92 Kč 245,41 Kč 137 939,52 Kč 11 494,96 Kč 89 575,50 Kč 48 364 Kč
3,58 Kč 52,27 Kč 365,92 Kč 210,96 Kč 133 561,31 Kč 11 130,11 Kč 77 000,00 Kč 56 561 Kč
4,22 Kč 61,59 Kč 431,14 Kč 251,47 Kč 157 365,33 Kč 13 113,78 Kč 91 787,00 Kč 65 578 Kč
3,15 Kč 45,99 Kč 321,93 Kč 232,10 Kč 117 504,67 Kč 9 792,06 Kč 84 715,50 Kč 32 789 Kč
3,57 Kč 52,09 Kč 364,60 Kč 232,10 Kč 133 079,77 Kč 11 089,98 Kč 84 715,75 Kč 48 364 Kč
Pesimistické využití Náklady na km Náklady na hodinu Náklady den Fixní náklady na den Roční náklady Měsíční náklady Fixní roční náklady Náklady na palivo
6,91 Kč 100,73 Kč 302,20 Kč 245,41 Kč 110 302,94 Kč 9 191,91 Kč 89 575,50 Kč 20 727 Kč
6,34 Kč 92,46 Kč 277,37 Kč 210,96 Kč 101 240,56 Kč 8 436,71 Kč 77 000,00 Kč 24 241 Kč
7,51 Kč 109,49 Kč 328,47 Kč 251,47 Kč 119 892,00 Kč 9 991,00 Kč 91 787,00 Kč 28 105 Kč
6,19 Kč 90,20 Kč 270,60 Kč 232,10 Kč 98 768,00 Kč 8 230,67 Kč 84 715,50 Kč 14 053 Kč
6,60 Kč 96,30 Kč 288,89 Kč 232,10 Kč 105 443,19 Kč 8 786,93 Kč 84 715,75 Kč 20 727 Kč
19
Příloha G – Diagramy z analýzy Všechny tyto diagramy byly vygenerovány vygenerovány v nástroji Enterprise Architect, projekt je přiložen na CD.
Obsah Databáze .................................................................................................................................................................................2 Tabulky ...........................................................................................................................................................................3 Deployment Model ...............................................................................................................................................................4 Případy užití............................................................................................................................................................................5 Uživatelské role ...............................................................................................................................................................5 Všechny případy užití........................................................................................................................................................6 Agenda aut .......................................................................................................................................................................7 Správa knihy jízd ..............................................................................................................................................................8 Správa půjčovného ...........................................................................................................................................................9 Správa rezervací .............................................................................................................................................................10 Správa rezervací managerem ....................................................................................................................................11 Správa rezervací zákazníkem ...................................................................................................................................12 Vedení agendy parkovišť................................................................................................................................................13 Správa uživatelù .............................................................................................................................................................14 Správa účtenek ...............................................................................................................................................................15 Platby .............................................................................................................................................................................16 Administrace systému ....................................................................................................................................................17 SMS ...............................................................................................................................................................................18 Bussines process model........................................................................................................................................................19 Účtenky za palivo ..........................................................................................................................................................19 Proces rezervace a výpůjčky .........................................................................................................................................20 Stavové diagramy.................................................................................................................................................................21 Rezervace .......................................................................................................................................................................21 Jízda ................................................................................................................................................................................22 Účtenka ..........................................................................................................................................................................22
1
Databáze class Databáze Metrocar M odel popisuje strukturu databáze, ze které bude systém získávat data. Sam otné tabulky se nebudou tvořit DDL příkazy, ale schem a instalátorem drupalu a všechny tabulky budou m ít ve výsledku prefix "pobocka_m etrocar_"
+ account + account_activity + branches + car + car_m odel + car_parking + car_position + car_record + car_record + card + device_update + fixed_paym ent_tariff + fuel + fuel_bill + invoice + invoice_item + journey + log + m etrocar_car_parking + parking + paym ent_item + pricelist + pricelist_day + pricelist_day_tim eline + reservation + settings + user + user_fixed_paym ent_tariff + user_fixed_paym ent_tariff_history
2
Tabulky class Database metrocar_car_parking
pricelist
pricelist_day V real ne databazi pak bude mi sto typu SMALLINT v pri cel i st_day_weekday_from pouzi to spise ENUM ('Po', 'Ut', ... ). Databazove om ezeni ze pri cel i st_day bud muze byt den v tydnu (pri cel i st_day_weekday_from neni NULL), nebo konkretni datum v roce pro umozneni vyj i mek z tari fu (pri cel i st_day_date neni NULL). Dny tarifu se vyhodnocuj i v pri ori te: 1. konkretni datum 2. konkretni den v tydnu, nebo nej bl i zsi predchozi dl e pri cel i st_day_weekday_from 3. chyba databaze
«col umn» *PK pri cel i st_day_i d: INT EGER pri cel i st_day_weekday_from : SMALLINT pri cel i st_day_date: DAT E * pri cel i st_i d: INT EGER «PK» + PK_pri cel i st_day(INT EGER) 1
1..*
*
«PK» + PK_car_posi tion(BIGINT ) *
1
car
car_model
1 «col um n» car_i d: INT EGER car_model _i d: INT EGER color: VARCHAR(50) notes: T EXT m obi le_number: VARCHAR(50) * m anufacture_date: VARCHAR(50) regi strati on_number: VARCHAR(50) connecti on_code: VARCHAR(50) acti ve: T INYINT i m ei : VARCHAR(50) l ast_echo: DAT ET IME devi ce_comm and: VARCHAR(50) owner: INT EGER = NULL * dedi cated_parki ng_onl y: T INYINT = 0
«col umn» car_m odel_i d: INT EGER manufacturer: VARCHAR(50) model : VARCHAR(50) notes: T EXT 1 seats: T INYINT engine: VARCHAR(50) type: VARCHAR(50) fuel _i d: T INYINT storage_capaci ty: INT EGER al ternati ve_fuel _i d: T INYINT
log 0..1
*
1
* «col um n» *PK j ourney_i d: INT EGER * l enght: INT EGER = 0 * start_date: DAT ET IM E end_date: DAT ET IM E = 0 comm ent: T EXT * * ui d: INT EGER * car_i d: INT EGER 0..1
1 user «column» *PK ui d: INT EGER * l ast_name: VARCHAR(60) * fi rst_name: VARCHAR(50) phone: VARCHAR(16) phone: VARCHAR(20) * gender: T INYINT = 0 dri ver_l i cense_number: VARCHAR(25) bi rthday: DAT ET IME deposi t: INT EGER i dentity_card_number: VARCHAR(50) address: T EXT 0..1 i nvoi ce_day: DAT ET IM E * m onth_charge: INT EGER = 0 * home_branch: SMALLINT user_fi xed_paym ent_tari ff_i d: INT EGER 1
*
user_fixed_payment_tariff «col umn» *PK user_fi xed_payment_tari ff_i d: INT EGER * fi xed_payment_tari ff_i d: INT EGER * accum ul ated_free_km : INT EGER = 0
«PK» * + PK_j ourney(INT EGER)
1
«PK» + PK_user_fixed_payment_tariff(INT EGER) 0..1
1
* «col um n» *PK fuel_bi l l _i d: INT EGER ui d: INT EGER 1 * * car_i d: INT EGER * pri ce: DOUBLE * li tres: DOUBLE comm ent: VARCHAR(255) * bi l l _date: DAT ET IM E fuel_i d: T INYINT approved: T INYINT
1
1
fixed_payment_tariff user_fixed_payment_tariff_history
1
«col umn» *PK user_fi xed_paym ent_tari ff_hi story_i d: INT EGER * ui d: INT EGER * fi xed_paym ent_tari ff_i d: INT EGER * from: DAT E ti l l : DAT E
0..*
1
* «PK» + PK_T abl e1(INT EGER)
«PK» + PK_user_fi xed_payment_tari ff_history(INT EGER)
1
1
1 «PK» + PK_bi ll (INT EGER) *
account
0..1 branches
card
«PK» + PK_branches(INT EGER)
«col umn» *PK card_id: INT EGER * regi strati on_number: VARCHAR(50) * acti ve: T INYINT = 1 * code: INT EGER * m odi fied: DAT ET IM E ui d: INT EGER * servi ce_card: T INYINT = 0
«uni que» + UQ_branches_base_url(VARCHAR) + UQ_branches_db_prefix(NVARCHAR)
«PK» + PK_card(INT EGER)
«col umn» *PK branch_i d: INT EGER * db_prefi x: VARCHAR(16) * base_url : VARCHAR(128)
«PK» + PK_car_record(INT EGER)
«col um n» *PK account_i d: INT EGER * bal ance: DECIMAL(10,2) = 0 * ui d: INT EGER
*
1
car_record «col umn» *PK car_record_i d: INT EGER * car_i d: INT EGER * type: VARCHAR(60) descri pti on: T EXT * cost: DECIM AL(10,2) = 0 fid: INT EGER ui d: INT EGER * record_date: DAT ET IME
«PK» + PK_account(INT EGER) «uni que» + UQ_account_uid(INT EGER) 1
*
«unique» + UQ_card_code() + UQ_card_regi stration_num ber()
account_activ ity «col umn» *PK account_acti vity_i d: INT EGER * acti vity_date: DAT ET IME * description: VARCHAR(255) account_i d: INT EGER «PK» + PK_account_acti vi ty(INT EGER) * inv oice 0..1
inv oice_item 0..1 payment_item «col um n» *PK paym ent_i tem _i d: INT EGER invoi ce_id: INT EGER fuel l _bi l l _i d: INT EGER descri pti on: VARCHAR(128) quantify: M EDIUMINT unit: VARCHAR(8) pri ce_per_uni t: REAL
0..1
*
0..1
fuel_bill
*
j ourney 1
1
*
fuel
«PK» + PK_reservati on(INT EGER) *
«uni que» + UQ_car_i m ei (VARCHAR)
*
«col um n» fuel_i d fuel
«col um n» *PK car_posi ti on_i d: BIGINT * j ourney_i d: T INYINT * l ati tude: NUMERIC(10,2) * l ongi tude: NUMERIC(10,2) * posi ti on_tim e: DAT ET IM E di stance = 0
1
1..2
«PK» + PK_l og(INT EGER)
car_position
«col um n» *PK reservati on_id: INT EGER reserved_from: DAT ET IME reserved_to: DAT ET IME ui d: INT EGER * car_i d: INT EGER reservati on_date: DAT ET IME modi fi ed: DAT ET IME cancell ed: T INYINT cancel_date: DAT ET IM E * cancel_i nterval : INT EGER = 0 * fi ni shed: T INYINT = 0 * remi nder: INT EGER = 0 * pri ce: BIGINT = 0 comm ent: T EXT reservati on_start: DAT ET IM E reservati on_end: DAT ET IM E
«uni que» + UQ_parki ng_name(VARCHAR)
0..1
pricelist_day_timeline
* «col um n» *PK log_i d: INT EGER ui d: INT EGER car_i d: INT EGER * * type: VARCHAR(60) * message: VARCHAR(255) * record_date: DAT ET IME
reservation
«col umn» address: T EXT name: VARCHAR(50) l ongi tude: NUM ERIC(10,2) = 0 l ati tude: NUMERIC(10,2) = 0 radi us: INT EGER = 15 number_of_pl aces: INT EGER = 1 parking_i d: INT EGER
* * * * * *PK
«PK» + PK_parki ng(INT EGER)
*
«PK» + PK_pri cel ist_day_ti mel i ne(INT EGER)
0..1
«PK» + PK_car_model _priceli st(INT EGER)
*
«col umn» *PK pri cel i st_day_ti mel ine_i d: INT EGER * tim e_from : T IM E * car_used_ratio: NUM ERIC(3,3) = 1.0 * car_unused_rati o: NUMERIC(3,3) = 1.0 * l ate_return_rati o: NUMERIC(3,3) = 1.0 * pri cel i st_day_i d: INT EGER
parking
«col um n» * car_i d: INT EGER * descri pti on: VARCHAR(255) * parki ng_i d: INT EGER
«col um n» *PK pri cel i st_id: INT EGER * name: VARCHAR(100) descri pti on: T EXT val id_from: DAT E * pri ce_of_reservati on: NUM ERIC(5,3) * pri ce_of_pi ckup: NUMERIC(5,3) 1 * pri ce_per_km: NUMERIC(3,3) = 0 * pri ce_per_hour: NUMERIC(3,3) = 0 * car_m odel _id: INT EGER * avai l abl e: BOOL = 0 * del eted: BOOL = 0
«col um n» *PK i nvoi ce_i tem_i d: INT EGER i nvoi ce_i d: INT EGER payment_i tem_id: INT EGER reservati on_i d: INT EGER descri pti on: VARCHAR(128) quanti fy: M EDIUM INT uni t: VARCHAR(8) pri ce_per_uni t: NUM ERIC(10,3) i tem_name: VARCHAR(50) 0..1 vat: INT EGER = 19
*
«col umn» *PK i nvoice_i d: INT EGER uid: INT EGER state: VARCHAR(12) i nvoice_date: DAT E due_date: DAT E receive_date: DAT E address: T EXT fi rm _nam e: VARCHAR(128) fi rst_name: VARCHAR(80) second_nam e: VARCHAR(150) i c: VARCHAR(8) dic: VARCHAR(12) vs: VARCHAR(50) 1 eureverse: INT EGER
«PK» + PK_payment_i tem(INT EGER)
«PK» + PK_i nvoi ce_item(INT EGER)
«PK» + PK_invoi ce(INT EGER)
«uni que» + UQ_payment_item_payment_i tem_id(INT EGER)
«uni que» + UQ_i nvoi ce_i tem_invoi ce_i tem_i d(INT EGER)
«uni que» + UQ_i nvoi ce_invoi ce_i d(INT EGER)
3
0..*
1
«col um n» *PK fixed_paym ent_tariff_i d: INT EGER * name: VARCHAR(100) descri pti on: T EXT * pri ce_per_m onth: DECIMAL(10,2) * free_km_per_m onth: INT EGER = 0 * pri ce_correcti on_rati o: DECIM AL(3,3) = 1.0 * del eted: BOOL = 0 «PK» + PK_fi xed_payment_tari ff(INT EGER)
Deployment Model deployment Deployment Model
PC - zákazník
Serv er
Banka
HT T P Internetov ý prohlížeč
Apache HTTPD
Drupal
SM T P
Mail serv er
Metrocar IM AP PC - prov ozov atel HT T P Internetov ý prohlížeč Databáze MySQL USB
SMTP serv er
« d e vi ce » čtečka RFID karet
HT T P
Palubní j ednotka « d e vice » Imobilizér
SM S
Se ri a l
« d e vi ce » Mobil - zákazník
GPRS
« d e vi ce » Centrální zámek dv eří
S e ria l
GPS
GSM
4
S e ri a l
« d e vice » čtečka RFID karet
Případy užití
Uživatelské role uc Actors Actors
Manager
Zákazník
Technik
5
Administrátor
Všechny případy užití pkg MetroCar M etro Ca r Agenda aut
Agenda parkov išť
+ Editace auto m obi lu
+ Editace p arkoviště
+ Editace zá zna m u s provo zním i ná kl ady
+ Přidán í nového parko viště
+ Editova t zá zna m vlastníh o au ta
+ Vym azá ní pa rkoviště
+ Odeb rání m ode lu auta
+ Zobraze ní seznam u parko višť
+ Přid ání n ové ho m odelu auta + Vložit d okum e nt s pro vozním i nákla dy auta + Vložit d okum e nt s pro vozním i nákla dy vlastn ího a uta + Zo brazení autom obilu + Zo brazit provo zní statistiky auta
Správ a knihy jízd
+ Zo brazit provo zní statistiky vla stn ího a uta + Zo brazit zázn am y vlastních au t
+ Dopln it vyro vná vací zázn am p ro jízdu
+ In form o ván í zá kazn íka o prohlíd ce záznam u
+ Ozna č it jízdu jako ne placeno u
+ Přid ání n ové ho au ta
+ Zob razit knihu jízd
+ Přid ání záznam u s provozním i náklad y
+ Zob razit seznam vlastn ích jízd
+ Vym azání auta
+ Odhlážení za m ěstna nce ze systém u
+ Vytvo zázn am o zob razení p olohy Správ a pujřit čov ného + Zo brazit aktu ální p oloh u + Přiřa dit ceník k m odel u auta + Zo brazit zázn am y autom ob ilu + Upra vit cen ík + Vytvo řit ceník + Zo brazit ceník
Správ a rezerv ací + Správa rezervací m a nagerem + Správa rezervací zá kazn íke m
Správ a uživ atelů + Editace u živatel e + Přiřazení uživate lské role + Registra ce uživate le + Sm azání uživate le + Správa záznam ů a do ku m en tů
Správ a účtenek
+ Výpi s uživate lů
+ Edi tace úč tenky
+ Zm ě na kon taktních úd ajů
+ Potvrzení úč ten ky
+ Zobraze ní pro filu
+ Sm azá ní ne potvrze né ú č tenky
+ Zobrazit pohyby na úč tu
+ Sm azá ní úč tenky
+ Zobrazit zů sta tek úč tu
+ Vlo žen í úč tenky + Zobrazení úč te nky ú č tenky + Zobrazit p rovo zní náklad y a utom obilu
Platby
+ Zobrazit vlastní úč te nky
+ Edi tace faktury + Ruč ní zaúč tová ní pla tby + Sm azá ní faktu ry + Zobrazení přeh ledu faktur + Zobrazení statistických pře hledů + Zobrazení vla stních faktur
6
Agenda aut pkg Agenda aut A ge n d a a u t
Vložit dokument s prov ozními náklady v lastního auta
Zákazník
Editov at záznam v lastního auta
« in clu d e »
Zobrazit záznamy v lastních aut
(fro m A cto rs) « i ncl u de » Zobrazit prov ozní statistiky v lastního auta
Odebrání modelu auta
Přidání nov ého modelu auta
Přidání nov ého auta
Editace automobilu « i ncl u de »
Manager
Zobrazení automobilu
Zobrazit prov ozní statistiky auta
«i n clu d e»
(from A ctors) « in cl ud e »
Zobrazit záznamy automobilu
Editace záznamu s prov ozními náklady « in clu d e »
« in cl u de » Technik (fro m A cto rs)
Přidání záznamu s prov ozními náklady
Vymazání auta
Informov ání zákazníka o prohlídce záznamu « e xte n d »
Zobrazit aktuální polohu
7
«e xten d »
Vytv ořit záznam o zobrazení polohy
Správa knihy jízd pkg Správ a knihy j ízd Kniha jízd Zobrazit knihu j ízd «include»
Zobrazit záznamy automobilu
«include» Manager (from Actors)
(from Agenda aut) Doplnit v yrov náv ací záznam pro j ízdu
Zobrazit seznam v lastních j ízd Zákazník (from Actors)
8
Správa půjčovného pkg Sprav a puj cov neho S prava p ujcovn eho
Vytv ořit ceník
Přiřadit ceník k modelu auta
Manager (from Actors)
Uprav it ceník
Zobrazit ceník
Zákazník (from Acto rs)
9
Správa rezervací pkg Správ a rezerv ací S prá va re ze rva cí
Správ a rezerv ací managerem + Up ra vit re ze rva ci + Zru šit re ze rva ci + In fo rm o va t zá ka zn íka o zm ě n ě + Zo b ra zit re ze rva ce Správ a rezerv ací zákazníkem + Výb ěr a u ta + Vyh le d a t a u to m o b il y p o dl e d a tu m u (NE W) + Zo b ra zit a u ta n a m a p ě + Zo b ra zit se zn a m a u t + Zo b ra zit vl a stní reze rva ce + Při dá n í re ze rva ce + Vym a zá ní reze rva ce + Zm ě n a re ze rva ce
10
Správa rezervací managerem pkg Správ a rezerv ací managerem Správa rezervací m anangerem
Zobrazit rezerv ace
Manager
Uprav it rezerv aci
(from Actors)
«include»
«include»
Zrušit rezerv aci
11
Informov at zákazníka o změně
Správa rezervací zákazníkem pkg Správ a rezerv ací zákazníkem Správa rezervace zákazníkem
Změna rezerv ace
«include» Zobrazit v lastní rezerv ace «i ncl ude»
Vymazání rezerv ace
Zákazník (from A ctors)
Vyhledat automobily podle datumu (NEW)
Přidání rezerv ace
«i nclude»
«extend»
Zobrazit seznam aut
«extend»
Zobrazit auta na mapě
12
Výběr auta
Vedení agendy parkovišť pkg Vedení agendy parkov išť Ve den í a gen dy parko višť
Přidání nov ého parkov iště
Editace parkov iště
Manager (from Actors)
« in clud e» Zobrazení seznamu parkov išť
« incl ude »
Vymazání parkov iště
13
Správa uživatelù pkg Správ a uživ atelů Správa uživatelů
Smazání uživ atele
Výpis uživ atelů
«i nclude»
«incl ude»
Editace uživ atele
Manager (from Actors) Správ a záznamů a dokumentů Přiřazení uživ atelské role
«i nclude»
Zobrazení profilu
Registrace uživ atele
Zákazník (from Actors)
Změna kontaktních údaj ů
Zobrazit zůstatek účtu
Zobrazit pohyby na účtu
14
Větši nu uži vatel ských operací řeší sám drupal , m ají být souč ástí boundary?
Správa účtenek pkg Správ a účtenek S prá va úč tene k
Smazání účtenky
Potv rzení účtenky «i nclud e» «in clude » Manager (from Actors)
Zobrazení účtenky účtenky
« incl ude»
Editace účtenky
Zákazník
Vložení účtenky
(from Actors)
Zobrazit v lastní účtenky
«i ncl ude»
15
Smazání nepotv rzené účtenky
Platby pkg Platby
Smazání faktury
«in clude» Manager
Zobrazení přehledu faktur
(from Actors)
Editace faktury
Zobrazení statistických přehledů
Ruční zaúčtov ání platby
Zobrazení v lastních faktur Zákazník (from Actors)
16
«include»
Administrace systému pkg Administrace systému Drupal
Update systému
Správ a grafických témat
Překlad rozhraní
Správ a modulů Správ a přístupov ých práv
Administrátor
Aktiv ace a blokov ání uživ atelů
(from Actors)
M etrocar
Nastav ení poboček
Manager (from Actors)
Nastav ení formátu emailů a SMS
Nastav ení palubních j ednotek
Nastav ení rezerv ací Nastav ení fakturačních údaj ů
17
SMS uc SMS SM S rezervace
Vytv ořit rezerv aci
«include»
Informov at se o rezerv aci Zákazník (from Actors) Zrušit rezerv aci «include»
Prodloužit rezerv aci
18
Bussines process model Účtenky za palivo BPMN Účtenky za paliv o «Pool» Metrocar «Lane»
«Lane»
Zákazník
Manager
Na ta nko ván í pa li va Vl ože ní ú č te nky do datab áze
Pře vzetí úč ten ky
Úč tenka za pa li vo
Před ání ú č tenky prob íh á oso bn ě n ebo přes sch rá nku v au to m obi lu . Na úč te nku vho zen ou do schrán ky při píše zá ka zník i č íslo karty pro snad nou do hl eda te ln ost.
Vyhle dá ní úč te nky v da ta bázi
Po tvrze ní ú č tenky
19
Proces rezervace a výpůjčky BPMN Proces rezerv ace a v ýpůj čky
V ytvo ře n í re ze rva ce V ýb ě r a u ta
P řih l á še n ý u živa te l Jso u tu za d o u ci i d a lsi ko m u n ika cn i za le zito sti j a ko je o d e sla n i p o zice a td ? ? ?
V o lb a za č á tku a ko n ce re ze rva ce V yb ra n é a u to
K o n tro la vstu p u a ko n fli ktů
De a kti va ce ka rty
Komunikační rozhraní
«Lane»
Webové rozhraní
Zákazník
«Lane»
«Pool»
Rezervační systém
«Lane»
P o tvrze n í re ze rva ce
O d e sl á n í se zn a m u p o vo le n ých ka re t
A ktiva ce ka rty p ro d a n ý vů z v d a n ý č a s A kti vo va n á ka rta
P říj e m p o ža d a vku
K o n tro l a RFID ka rty P řil o že n í RFID ka rty
Automobil
«Pool»
O d e m kn u tí a p o u žívá n í a u to m o b il u
V rá ce n í a u to m o b il u
20
Uza m č e n í a u to m i b il u
Stavové diagramy Rezervace stm Rezerv ace
Zru še n í re ze rva ce
Reserv ed
Zru še ní re ze rva ce
Ca n ce lle d
Running
zač á tek d o b y re ze rva ce
Vytvo řen í re ze rva ce
[n e do šl o k vyzve d n u tí]
[vyzve d n u tí]
V yzved n u tí a u to m o b il u FIn ish e d
V rá ce n í a u tom o bi lu In-use
vrá ce n í a u to m o b i lu [a n o ]
Vyp rše l č a s re ze rva ce
[ne ]
Ov errunning
21
Jízda stm Jízda Existuje platná rezervace?
Jedná se o servisní kartu? Uzam č ený autom obil [ne]
[ne]
Přiložení karty
[ano]
Running
[ano]
Uzam č ení autom obilu
Finished
Ú
Účtenka stm Účtenka
Vl ože ní ú č ten ky d o systé m u
Neschv álená
Edita ce m an ag erem
Schv álená
Vystavená úč tenka za palivo
Sm a zá ní úč ten ky z data bá ze
22
Pla tná úč te nka