Mendelova univerzita v Brně Provozně ekonomická fakulta
Informační systém pro společenství vlastníků jednotek Bakalářská práce
Vedoucí práce: Ing. Ondřej Popelka, Ph.D.
Jiří Krupník
Brno 2012
Rád bych poděkoval Ing. Ondřeji Popelkovi, Ph.D. za vedení práce a odborné konzultace. Dále pak Davidu Grudlovi a ostatním vývojářům za Nette Framework.
Prohlašuji, že jsem bakalářskou práci vypracoval samostatně za použití zdrojů uvedených v seznamu. V Brně dne 25. května 2012
__________________
Abstract Krupník, J. Information system for dwelling unit owners associations. Bachelor thesis. Brno: MENDELU, 2012. The work deals with the design, implementation and deployment information system for small scale dwelling unit owners associations. Part of work is research of existing opportunities for this area, defining functional and nonfunctional requirements. Next part of this work is design appropriate relational database model and friendly user interface. Keywords Dwelling unit owners associations, information system, Nette Framework.
Abstrakt Krupník, J. Informační systém pro společenství vlastníků jednotek. Bakalářská práce. Brno: MENDELU v Brně, 2012. Práce se zabývá návrhem, implementací a nasazením informačního systému pro vybrané společenství vlastníků jednotek malého rozsahu. Součástí práce je průzkum stávajících možností v této oblasti, vytyčení funkčních i nefunkčních požadavků. Další součást práce je návrh vhodného relačního databázového modelu a přívětivého uživatelského rozhraní. Klíčová slova Společenství vlastníků jednotek, informační systém, Nette Framework.
Obsah
5
Obsah 1
2
3
4
Úvod a cíl práce
9
1.1
Úvod .......................................................................................................... 9
1.2
Cíl práce .................................................................................................... 9
Společenství vlastníků jednotek
10
2.1
Činnosti společenství ............................................................................... 11
2.2
Požadavky ................................................................................................ 11
2.2.1
Funkční požadavky .......................................................................... 11
2.2.2
Nefunkční požadavky ....................................................................... 12
Současný stav
13
3.1
Kritéria ..................................................................................................... 13
3.2
nase-sprava-domu.cz ............................................................................... 13
3.3
spoluvlastnici.cz ....................................................................................... 14
3.4
sousede.cz ................................................................................................ 15
3.5
svj.infonia.com ......................................................................................... 16
3.6
Zhodnocení .............................................................................................. 17
Návrh
18
4.1
Funkcionalita systému .............................................................................18
4.2
ER diagram ..............................................................................................18
4.2.1
Uživatelé ........................................................................................... 19
4.2.2
Funkce a typy funkcí ........................................................................ 19
4.2.3
Vlastníci........................................................................................... 20
4.2.4
Byty.................................................................................................. 20
4.2.5
Domy ............................................................................................... 20
4.2.6
Zálohy vlastníků .............................................................................. 20
4.2.7
Platby záloh vlastníků ...................................................................... 21
4.2.8
Placené zálohy společenství ............................................................. 21
4.2.9
Operace ........................................................................................... 22
Obsah
5
6
Implementace 5.1
23
MVC ........................................................................................................ 23
5.1.1
Model .............................................................................................. 23
5.1.2
View ................................................................................................. 23
5.1.3
Controller ........................................................................................ 24
5.2
Bezpečnost .............................................................................................. 24
5.3
Použité komponenty ............................................................................... 25
5.4
E-maily .................................................................................................... 26
5.5
Uživatelské rozhraní ............................................................................... 26
6
Závěr
29
7
Literatura
30
A
Kompletní ERD
34
B
DVD-ROM
35
Obsah
7
Seznam obrázků
8
Seznam obrázků Obr. 1 Počet SVJ k roku 2009 (ČSÚ, 2011)
10
Obr. 2
Prostředí systému – Naše správa domu (Excon, 2011)
14
Obr. 3
Prostředí systému – Spoluvlastníci.cz (Artin, 2012)
15
Obr. 4
Prostředí systému – Sousedé.cz (Turistika.cz, 2012)
16
Obr. 5
Prostředí systému – Svj.infonia.com (Infonia, 2008)
17
Obr. 6
ERD: část první
19
Obr. 7
ERD: část druhá
21
Obr. 8
Model uživatelského prostředí
27
Obr. 9
Schéma použitých barev
28
Obr. 10
Ukázka prostředí informačního systému
28
Obr. 11
ERD
34
Úvod a cíl práce
9
1 Úvod a cíl práce 1.1
Úvod
V době, kdy nás informační technologie doslova obklopují, práce s internetem se stává každodenní záležitostí, existují stále oblasti, kde se jejich význam ještě dostatečně neprojevil. Jednou z těchto oblastí je sféra nevýdělečných organizací, konkrétně mám na mysli sdružení vlastníků jednotek. Tuto mezeru jsem pocítil při výpomoci se správou domu společenství. Mezi činnosti spojené se správou domu patří vedení agend (seznamy členů, záloh, nákladů a dalších) v papírové podobě, což je velice nepřehledné. Nahlížení a vyhledávání informací v takových evidencích není praktické. Ostatně i další činnosti se řeší neefektivně – svolávání schůzí, sdělování informací v rámci společenství… Mnohem lepší řešení se nabízí využitím ICT, a to například tím způsobem, že správce domu pomocí pár kliknutí v informačním systému rozešle oznámení hromadným emailem, vyvěsí zprávu na virtuální nástěnce, umožní nahlédnutí do agend společenství vedené v elektronické formě. Vše pohodlně prostřednictvím internetového prohlížeče. Nejenom z těchto důvodů mi tento stávající způsob správy domu připadne zastaralý a neefektivní, proto jsem se rozhodl rozšířit možnosti využitím ICT pro tuto oblast informačním systémem.
1.2 Cíl práce Cílem práce je vytvořit a následně nasadit webovou aplikaci založenou na MVC architektuře za použití moderních webových technologií, která bude použitelná pro evidenci agend a správu vybraného společenství vlastníků jednotek. Proto je nezbytné vytyčit základní funkční i systémové požadavky na takový systém, prozkoumat a zhodnotit stávající možnosti v této oblasti. Navrhnout vhodný relační databázový model i přívětivé uživatelské rozhraní.
Společenství vlastníků jednotek
10
2 Společenství vlastníků jednotek Společenství vlastníků jednotek (dále jen „společenství“ (SVJ)) je právnická osoba, která je způsobilá vykonávat práva a zavazovat se pouze ve věcech spojených se správou, provozem a opravami společných částí domu (správa domu), popřípadě vykonávat činnosti v rozsahu zákona 72/1994 Sb. – Zákon o vlastnictví bytů a činnosti související s provozováním společných částí domu, které slouží i jiným fyzickým nebo právnickým osobám. Společenství může nabývat věci, práva, jiné majetkové hodnoty, byty nebo nebytové prostory pouze ke správě domu (Kocourek et al., 2011). Vlastníci jednotek jsou povinni přispívat na náklady spojené se správou domu. K tomuto účelu skládají vlastníci jednotek předem určené finanční částky jako zálohu. Výši záloh si určí vlastníci jednotek dopředu tak, aby byly kryty předpokládané náklady, které bude nutné vynaložit v běženém účetním období i do budoucna (Neplechová, 2009). Společenství je tedy specifická forma organizace, která má odlišné potřeby od ostatních právnických osob. Jak bylo naznačeno, neprovozuje výdělečnou činnost a jeho hlavním účelem je správa domu. Vzhledem k faktu, že je v České republice více než 43 000 společenství (ČSÚ, 2011) a s rozvojem informačních technologií, je žádoucí vývoj systému, který by alespoň usnadnil některé části prací spojené se správou domu. Nejvýraznější zlepšení a usnadnění lze spatřovat v automatizaci některých procesů a komunikaci mezi všemi obyvateli domu.
1666 3085
6827
2221
2831
3266
1951
4033
4261 2450
1776 3014
Obr. 1
3961
2205
Počet SVJ k roku 2009 (ČSÚ, 2011)
Práce se zabývá konkrétně potřebami Společenství vlastníků Znojmo, Alšova 977/11, které vzniklo 10. září 2001, do obchodního rejstříku bylo zapsáno 5. listopadu 2002 a na základě zápisu bylo přiděleno identifikační číslo 263 00 958. Dům má 12 bytových jednotek. Společenství podléhá správě Finančního
Společenství vlastníků jednotek
11
úřadu ve Znojmě. Statutárním orgánem společenství je pověřený vlastník, tuto funkci vykonává Karel Křivánek. Hlavní činností je správa domu. Snahou a cílem při hospodaření je dosažení minimálních nákladů na správu a údržbu domu. Řešení práce sice vychází z potřeb zvoleného SVJ, avšak je realizováno s důrazem na univerzálnost. Tzn. v principu obecně použitelné i pro ostatní společenství.
2.1 Činnosti společenství Správa domu, jakožto hlavní činnost společenství, obnáší nemalé časové úsilí, spojené s vedením agend a zanášením těchto údajů do tabulkového editoru. Během roku se jedná o pořádání shromáždění a domovních schůzí, kontrolu týdenního úklidu a vývozu popelnic, shromažďování dokumentů o nákladech, vedení pokladny, průběžnou kontrolu zálohových plateb. Ke konci roku je potřeba vyčíslit přeplatky či nedoplatky na zálohách jednotlivým členům a informovat je o tomto stavu.
2.2 Požadavky Informační systém by měl alespoň některé části prací spojené se správou domu usnadnit. Nejvýraznější přínos lze spatřovat v automatizaci rutinních činností, lepší komunikaci uvnitř společenství, snadnému přístupu členů k informacím. Mez rutinní činnosti, které lze automatizovat patří rozvrh s úklidem a vývozem popelnic, jeho vytvoření, kontrola a aktualizace. Dále například vyčíslení přeplatků či nedoplatků. Dosavadní komunikace uvnitř společenství probíhá ústně nebo písemně, nikoliv však elektronickou formou. V situaci, kdy chce pověřený vlastník nebo kdokoliv jiný z domu sdělit informace ostatním, tak nemá moc možností. Tento problém musí řešit systém například hromadným rozesíláním emailů, elektronickou nástěnkou či diskusním fórem. Systém musí zajistit přístup k informacím týkajících se společenství, mezi ně zejména patří stanovy, zápisy ze schůzí, domovní řád a různé účetní výkazy. 2.2.1
Funkční požadavky
Základní požadavky na systém jsou zejména: • vedení seznamu členů společenství • vedení evidence nákladů • vedení evidence plateb vlastníků i společenství • zjištění přeplatků a nedoplatků vlastníků • vedení dlužníků Vhodné rozšíření funkcionality systému: • generování přehledů – záloh, plateb, nákladů a dalších • vyčíslení aktuálního přeplatku či nedoplatku vlastníka
Společenství vlastníků jednotek
• • • • •
12
nahlížení do písemných podkladů společenství informativní nástěnka diskusní fórum fotogalerie hlášení závad a evidence jejich oprav
2.2.2
Nefunkční požadavky
Informační systém musí být neustále dostupný a snadno přístupný prostřednictví webového prohlížeče, nezávisle na operačním systému uživatele. Bude tedy implementován jako webová aplikace s využitím skriptovacího jazyka a s přívětivým uživatelským prostředím, které umožní i nezkušeným vlastníkům využívat systém. Veškerý zobrazovaný obsah musí být v češtině. Musí poskytovat podporu pro přihlašování uživatelů a nastavení přístupových práv. Pro uložení dat by měl systém používat relační databázový systém, který bude chráněn proti zneužití nepovolanými osobami.
Současný stav
13
3 Současný stav V dnešní době existuje na trhu několik firem zaměřených na vývoj systémů pro SVJ. Nejedná se však o nijak široké spektrum společností, které by nabízely tento specifický produkt. Situaci nahrává více faktů. Za prvé, společenství bytových jednotek menšího rozsahu mnohdy nejsou ochotny investovat částky navíc, a to v jakékoliv výši, jelikož se jedná o nevýdělečné organizace. Na tomto místě je dobré si uvědomit, že veškeré výdaje společenství jsou hrazeny pouze z peněžních prostředků vlastníků. Za druhé, důvodem může být averze některých vlastníků k novým věcem a změna zaběhnutého způsobu. Dále je nutné brát v potaz, že ne každý vlastní počítač s přístupem na internet. Všechny zmíněné aspekty hrají svou roli při rozhodování o zavedení IS ve společenství.
3.1 Kritéria Z uvedených činností společenství a určených požadavků na informační systém lze stanovit kritéria, podle kterých mohou být jednotlivé nabízené systémy srovnávány. Tab. 1
Kritéria pro srovnání systémů
Kritérium Cena Ovládání Rozsah Bezpečnost Typ aplikace
Popis Hlavní faktor pro rozhodování, jelikož se jedná o nevýdělečnou organizaci Snadné ovládání, tzv. user-friendly systém by mohl více pomoci odstínit averzi u starší generace vlastníků k používání IS Aplikace vhodná pro malé bytové společenství Celkové dodané řešení musí řešit přihlašování uživatelů, ochranu jejich dat Informační systém řešený jako webová aplikace zajišťující přístup uživatelů prostřednictvím webového prohlížeče
3.2 nase-sprava-domu.cz Webový informační systém je provozován jako služba, jehož provozovatelem je společnost Excon, a. s. Systém je založen na jejich vlastním konfigurovatelném informačním systému ALeX (Excon, 2005). Správa dat jednoho SVJ je poskytována první bezplatně, každý další rok stojí 2750 Kč bez DPH, cena nezahrnuje školení ani konfiguraci systému potřebám společenství (Excon, 2011). Uživatelské prostředí a ovládání není příliš přívětivé, bez předchozího důkladného seznámení s aplikací může mít nezkušený uživatel velké problémy s orientací
Současný stav
14
v systému. Systém řeší přihlašovaní uživatelů, přidělování přístupových práv až na úroveň jednotlivých položek. Funkční stránka aplikace je dostačující i přesto, že chybí například funkce na vedení úklidu, diskuze nebo přehledná fotogalerie. Hlavním nedostatkem je práce se systémem a jeho ovládání. K nalezení potřebné informace je nutno se „proklikat“ jakousi adresářovou strukturou připomínající strom.
Obr. 2
Prostředí systému – Naše správa domu (Excon, 2011)
3.3 spoluvlastnici.cz Internetovou službu poskytuje společnost ARTIN, spol. s r. o. na základě ročního předplatného. Pro sledované společenství by jednalo o 1600 Kč bez DPH ročně. Nabízenou službu nelze upravit pro následné specifické požadavky. Vzhled i ovládání jsou uživatelsky přívětivé, avšak logická stavba hlavního menu není příliš vhodná. Menu obsahuje 13 položek, což už může být pro některé uživatele příliš a matoucí. V systému se rozlišují tři typy uživatelů – nepřihlášený, přihlášený a administrátor, kterým lze nastavit práva (zobrazit, upravit) k jednotlivým částem webu (Společenství vlastníků online, 2012). Aplikace obsahuje evidenci dokumentů, nástěnku, ankety, diskusní fórum, řeší přihlašování uživatelů a přidělování přístupových práv, avšak neobsahuje žádnou funkci pro generování seznamů úklidu, kontrolu plateb či evidenci nákladů. Nezobrazuje ani aktuální stav bankovního, popřípadě úvěrového, účtu.
Současný stav
Obr. 3
15
Prostředí systému – Spoluvlastníci.cz (Artin, 2012)
3.4 sousede.cz Službu provozuje společnost Turistika.cz, s. r. o. a pro všechna společenství je zcela zdarma (Turistika.cz, 2012). Systém však nelze dále upravit či doplnit o novou funkcionalitu. Ovládání je v celku jednoduché a přehledné. Vzhled a pracovní prostředí aplikace narušuje vložená reklama, která je umístěna ve spodní a boční části. Přihlášení probíhá pomocí emailu a hesla, od ostatních uživatelů se odlišuje pouze správce webu, ale dále se již uživatelská práva neřeší. Jedná se o bezplatné řešení díky vložené reklamě. Svou činností zde může SVJ dokonce vydělat peníze nebo přispět na charitu. Systém ale rozhodně systém nenabízí všechnu požadovanou funkcionalitu. Chybí jakýkoliv přehled financí, nákladů nebo plateb.
Současný stav
Obr. 4
16
Prostředí systému – Sousedé.cz (Turistika.cz, 2012)
3.5 svj.infonia.com Webový informační systém vyrábí a provozuje firma INFONIA spol. s r.o. Jejich systémy pro SVJ jsou založené na redakčním systému Fonio (Infonia, 2010). První rok poskytnutí této služby vyjde společenství malého rozsahu na 12731 Kč včetně DPH, další roky se bude jednat o částku 4751 Kč včetně DPH. Vzhled i uspořádání položek v hlavním menu je přehledné, ovládání je i pro nezkušeného uživatele intuitivní. K přihlášení do systému je nutné přihlašovací jméno a heslo, uživatelská práva se řeší dosti jednoduše. Uživatelé jsou rozdělení do dvou kategorií – člen společenství, člen výboru. V aplikaci se nachází „uzamčená“ část určena pro práci výboru. Autoři webu však opomněli skutečnost, že dle Zákona o vlastnictví bytů může být statutárním orgánem společenství buď výbor, nebo pověřený vlastník (Česká republika, 1994). Na druhou z možností není systém připraven a bude uživatele systému zbytečně mást. Zkoumané řešení má nejvyšší náklady na pořízení a v některých situacích aplikace zobrazuje anglické texty (viz obr. 5).
Současný stav
Obr. 5
17
Prostředí systému – Svj.infonia.com (Infonia, 2008)
3.6 Zhodnocení Dosavadní řešení nevyhovují daným požadavkům a nenabízí potřebnou funkcionalitu. Systém Naše správa domu je postižena složitým ovládáním a nepřívětivým uživatelským rozhraním. Systémy Spoluvlastníci a Sousedé nedisponují požadovanými funkcemi (chybí přehledy o nákladech, zálohách, platbách). Systém od firmy Infonia, s. r. o. také nedisponuje všemi funkcemi a má vysoké pořizovací náklady. Stávající systémy jsou tedy nedostačující, je vhodné a žádoucí navrhnout vlastní řešení, které by splňovalo vytyčené požadavky (viz kap 2.2) a vyhovělo všem kritériím daného společenství (viz kap 3.1).
Návrh
18
4 Návrh Jak bylo řečeno, žádné z dosavadních řešení není plně dostačující, proto jsem se rozhodl předložit návrh aplikace vyhovující požadavkům společenství, splňující daná kritéria a odstraňující hlavní nedostatky zkoumaných systémů, které se dají shrnout: nedostatečná funkcionalita, vysoká cena za provoz a nepřehledné ovládání.
4.1 Funkcionalita systému Rozhodl jsem se vytvořit systém s následujícími funkcemi: • Nástěnka – zobrazující členům oznámení • Úklid – generování seznamu úklidu • Diskuze – umožňující komunikaci a vyjadřování názorů k dění uvnitř společenství. • Fotogalerie – hromadné nahrání obrázků, veřejná a neveřejná část galerie • Dokumenty – správa dokumentů • Přehledy – vlastníkovy zálohy a platby, náklady společenství, fond oprav, stavy účtů společenství. • Vlastníci – evidence vlastníků, jejich rozdělení podle pater, odesílání emailových zpráv (včetně hromadných zpráv). • Funkce pro uživatele – stránkování obsahu, řazení dat v tabulkách, nastavení velikosti písma.
4.2 ER diagram Na Obrázku 6 a 7 je rozdělen, pro lepší ilustraci, ER diagram1, jeho kompletní podoba je v příloze.
Symbolika diagramu: klíček – primární klíč; modrý kosočtverec – povinný atribut; prázdný kosočtverec – nepovinný atribut; červený kosočtverec – cizí klíč; kardinalita vazeb – crow's foot (prázdné kolečko – nepovinnost; svislá čára – povinnost; vidlička – více)(Kanisová a Müller, 2006) 1
Návrh
19
Obr. 6
ERD: část první
4.2.1
Uživatelé
Uzivatele jsou hlavní entitou systému. Primárně je nutno uchovávat osobní údaje: jméno a příjmení, nepovinné kontaktní údaje telefon a email. Dále autentizační informace – přihlašovací jméno a heslo. Autentizačními údaji se rozumí atributy nutné k přihlášení uživatele do systému, aby bylo možné provést proces ověření identity. Jednoznačným identifikátorem pro každého uživatele je umělý primární klíč id_uzivatele. Unikátním klíčem jsou zde ještě atributy prihlasovaci_jmeno a heslo - otisk hashovací funkce md5 s přidáním kryptografické soli (Kryptografická sůl, 2001). Tabulka neobsahuje žádné cizí klíče. 4.2.2
Funkce a typy funkcí
V systému je nutné rozlišit jednotlivé uživatele a jejich role (funkce). Entita funkce uchovává informace o přidělených funkcích jednotlivým uživatelům, přičemž uživatel nemusí mít přidělenou žádnou funkci, ale může jich mít i několik. Samotná tabulka se skládá ze dvou cizích klíčů tvořící zároveň složený primární klíč. Id_uzivatele vyjadřuje vztah k záznamům z tabulky uzivatele a id_typu_funkce je referencí na typy_funkci. Entita typy_funkci pak
Návrh
20
již definuje pouze název a popis dané role, jejím primárním klíčem je id_typu_funkce, alternativní klíč tvoří sloupec nazev. Na základě těchto údajů již můžeme rozlišovat mezi uživateli jednotlivé členy společenství, pověřeného vlastníka či pokladníka. Tyto informace se také využívají při autorizaci uživatele. 4.2.3
Vlastníci
Účelem společenství je mimo jiné evidence vlastníků – členů společenství. K tomu slouží entita vlastnici, která obsahuje dva atributy a to id_uzivatele a id_bytu. Oba atributy jsou cizí klíče, id_uzivatele je referencí do tabulky uzivatele a id_bytu odkazuje do entity byty. Zároveň jsou oba atributy složeným primárním klíčem, tato konstrukce jasně vymezuje vztah mezi bytem a vlastníkem M:N. 4.2.4
Byty
V evidenci vlastníků je potřeba uchovávat informace nejen o vlastnících, ale také o jejich bytových jednotkách. Konkrétně se jedná o plošnou výměru bytu, podlaží, na kterém se nachází. Kvůli vyúčtování zálohové platby na čištění komínů je potřeba evidovat počet komínů. Každý byt je přiřazen právě jednomu domu a vlastníkovi, přičemž vlastník může mít jeden nebo více bytů. Byty obsahují referenci na tabulku domy. A to z logického důvodu, každý byt musí náležet do nějakého domu. Jednoznačným identifikátorem je zde atribut id_bytu. Atribut cislo_bytu ve spojení s id_domu je dalším unikátním klíčem. 4.2.5
Domy
Společenství jako takové se může skládat z jednoho či více domů a pro zachycení základních údajů o domech slouží entita domy. Obsahuje základní popisné informace jako adresu, číslo popisné, číslo orientační, poštovní směrovací číslo a město. Jejím primárním klíčem je sloupec id_domu, alternativní klíč je složen ze sloupců cislo_popisne a cislo_orientacni. 4.2.6
Zálohy vlastníků
Každý vlastník má stanovené zálohové platby, které slouží ke krytí plateb společenství. Jedná se například o vodné a stočné, fond oprav a další. Entita zalohy_vlastniku slouží k zachycení těchto záloh. K tomu je zapotřebí evidovat konkrétního vlastníka, k němu typ zálohy a stanovenou částku. Součet výše definovaných záloh se poté může porovnávat se skutečnou platbou vlastníka. Tabulka obsahuje primární klíč složený ze dvou cizích klíčů – id_uzivatele, id_typu_zalohy.
Návrh
21
Obr. 7
ERD: část druhá
4.2.7
Platby záloh vlastníků
Členové společenství platí měsíčně zálohy a to ve výši, kterou mají dopředu sjednanou s pověřeným vlastníkem. V systému se jedná o součet vlastníkových záloh z tabulky zalohy_vlastniku. Tyto platby je nutno evidovat a zkontrolovat jejich správnost. Popřípadě zjistit rozdíl ve výši platby. Záporný rozdíl by znamenal, že vlastník neuhradil své zálohy v plné výši a vzniká mu dluh vůči společenství. Kladný rozdíl znamená, že vlastník uhradil vyšší než sjednanou částku a vzniká mu přeplatek. Tabulka zahrnuje informace o vlastníkovi a příslušné platbě v podobě dvou referencí – id_uzivatele a id_operace, zároveň jsou tyto atributy složeným primárním klíčem. 4.2.8
Placené zálohy společenství
Vlastníci platí zálohové platby společenství, které poté hradí taktéž zálohové platby, ale již přímo dodavatelům. Účelem této tabulky je evidovat výši záloh zaplacených společenstvím. Pro jednoznačnou identifikaci záznamů v tabulce postačí kombinace cizích klíčů id_operace a id_typu_zalohy.
Návrh
4.2.9
22
Operace
Operace je další hlavní entitou systému, jelikož zachycuje finanční operace ve společenství. U každé operace musí být uvedena pověřená osoba2, částka, datum, popis a typ úhrady. Operace reprezentují pohyby na bankovním účtu a pokladně SVJ. Atribut id_operace je umělým primárním klíčem.
Pověřenou osobou se myslí člověk, kterému je společenstvím svěřena pokladna či právo disponovat se společným bankovním účtem. Ve většině případů se jedná o pověřeného vlastníka, což je funkce dána ze zákona.
2
Implementace
23
5 Implementace K implementaci byl využit Nette Framework 2.0, což je open source nástroj pro vytváření webových aplikací v PHP. Nette Framework eliminuje bezpečnostní rizika, disponuje ladícími nástroji, má v česku širokou komunitu, podporuje moderní technologie a koncepce (AJAX, DRY, KISS, MVC, SEO), je postaven na čistě objektovém návrhu využívající vlastností PHP 5.3, komponent a událostmi řízené modelování (Nette Foundation, 2008). Nette Framework byl zvolen také z toho důvodu, že podporuje návrhový vzor MVC (Nette Foundation, 2011c), který se využívá při tvorbě webových aplikací. Principem je, že se aplikace rozdělí na tři ústřední součásti. Model – zodpovídá za správu stavu vnitřní struktury. View – pohled, zodpovídá za vnější prezentaci vnitřní struktury. Controller – řadič, zodpovídá za kontrolu průběhu a stavu uživatelského vstupu. Celý systém je rozdělen do dvou modulů, aby se odlišil veřejný a soukromý obsah. K odlišení dochází již na úrovni URL adresy, a to podle aktuálního modulu. Soukromý obsah je pod URL /is/. První modul Front je veřejně přístupný, obsahuje základní informace o společenství a galerii. Druhým je zabezpečený Admin modul, který obsahuje hlavní funkcionalitu a do něhož mají přístup pouze oprávnění uživatelé.
5.1
MVC
Logické rozdělení aplikace dodržuje MVC principy, respektive MVP (Bruckner et al., 2012) - funkci Controlleru vykonává ve frameworku Presenter. 5.1.1
Model
Model zde má konkrétně na starost komunikaci s databázovým systémem. Voláním funkcí jeho rozhraní může zjišťovat nebo měnit stav databázového systému. Není tedy nutné vytvářet databázové spojení na více místech, vytvoří se pouze jednou a následně se používá. Použitý Nette Framework nabízí vlastní databázovou vrstvu – Nette/Database/Connection, jeden z pilířů podpory modelu umožňující jednoduše skládat a spouštět SQL dotazy, získávat data. 5.1.2
View
Funkce View neboli pohled, prezentuje informace uživateli. V Nette Frameworku tuto vrstvu zajišťuje šablonovací systém Latte (Nette Foundation, 2011a). Nesmírnou výhodou použití šablon je možnost vytvoření základního rozložení aplikace a poté ostatními šablonami pouze vkládat obsahovou část. Další výtečnou vlastností je automatické ošetření vypisovaných proměnných dle kontextu obsahu, které eliminuje bezpečnostní rizika.
Implementace
24
Síla šablony se projeví také při jejich využívání pro některé výstupy ve formátu PDF, knihovna PdfResponse umí totiž zpracovat jako vstup právě šablonu. Obdobně je tomu u odesílání emailových zpráv, třída Nette\Mail\Message přijímá jako vstup šablony. 5.1.3
Controller
Nette Frameworku obsahuje presentery, což je obdoba Controlleru. Je to objekt, který obdrží požadavek a vygeneruje odpověď, je jakýmsi prostředníkem mezi modelem a pohledem, jeho součástí jsou obslužné funkce. Presenter si vyžádá data od modelu, která může daným způsobem modifikovat a předá je na výstup pohledu. Všechny presentery v aplikaci mají společného předka – BasePresenter. V něm se vytváří komponenty pro menu, drobečkovou navigaci a úklid, registruje se zde helper pro generování náhledů, kontroluje autorizaci uživatelů. Každý modul obsahuje vlastní presentery, jejich struktura vypadá následovně: • Front modul o DefaultPresenter – úvodní stránka o GaleryPresenter – fotogalerie, má veřejnou a neveřejnou sekci • Admin modul o DefaultPresenter – hlavní stránka informačního systému, obsahuje oznámení (elektronickou nástěnku). o DiskuzePresenter – diskusní fórum pro členy společenství o DokumentPresenter – správa dokumentů společenství o OperacePresenter – sekce pro správce domu o PrehledPresenter – přehledy pro členy o SignPresenter – přihlašování uživatelů o UklidPresenter – zobrazení seznamů s úklidem o UzivatelPresenter – správa uživatelů o VlastnikPresenter – správa vlastníků
5.2 Bezpečnost Zabezpečení systému zajišťuje framework, který chrání proti cross-site scripting, cross-site request forgery, URL attack, control codes, invalid UTF-8, session hijacking, session stealing, session fixation. Většinu konfigurace a opatření dělá framework automaticky. Demonstrovat to lze na obraně formulářů před útokem CSRF, kdy stačí jediný příkaz: $form->addProtection(); a formulář je chráněn. Framework generuje a ověřuje autorizační token, který má platnost po dobu existence session. Platnost je možno nastavit, předává se jako druhý parametr. Prvním parametrem této funkce je text chyby zobrazující se po vypršení platnosti tokenu (Nette Foundation, 2011b). Formuláře dále disponují validačními pravidly a v případě chybného vstupu je uživateli zobrazeno srozumitelné a výrazné chybové hlášení. Při provedení důležité akce je uživatel systému upozorněn potvrzovacím oknem.
Implementace
25
Pro přístup do neveřejného modulu je potřeba být přihlášen, musí proběhnout autentizace uživatele. K tomuto účelu se prokazuje uživatelským jménem a heslem. Autentizaci obstará nachystaná třída frameworku – Nette\Authenticator. Ověřenému uživateli je v rámci systému přidělena identita reprezentována třídou Nette\Security\Identity. Identita se udržuje v session, je tedy přístupná celé aplikaci a využívá se ke všem autorizačním procesům, obsahuje celý záznam o uživateli z tabulky Uživatelé z databáze (kromě hesla) a také přidělené role. Po úspěšné autentizaci dochází k autorizaci přihlášeného uživatele. Autorizační funkci vykonává třída – Nette\Security\Acl, jejímž úkolem je rozhodnout, zda má uživatel role povolení provést operaci se zdrojem. Role, operace a zdroje jsou staticky definovány ve třídě Acl (access control list). • Role – v systému jsou definovány čtyři role, ve kterých uživatelé vystupují. Uživatel může současně mít přiděleno více rolí3, role se přiděluje $this>addRole('pověřený vlastník', 'člen'); kde prvním parametr určuje název nové role a druhý roli, od které se mají dědit práva. o Host (guest) – v této roli vystupují všichni nepřihlášení uživatelé, nemá v podstatě žádná přístupová práva do soukromé sekce. o Člen – role je přiřazena všem členům společenství, přístupová práva dědí od hosta a má navíc přístup do soukromé sekce. o Pověřený vlastník – přístupová práva této role jsou odvozena od člena, dále jsou rozšířena o vstup do sekce pro správce (vkládání nákladů, aktualizace zůstatků. o Administrátor – má veškerá práva v systému • Zdroje – chráněné entity; v aplikaci jsou to všechny presentery. Definují se příkazem $this->addResource('Admin:Operace'); parametrem je v tomto případě název presenteru. • Operace – akce, které mohou role vykonat se zdroji. Například odstranění příspěvku, vytvoření oznámení atd. K vytvoření operace se používá příkaz $this->allow('pověřený vlastník', 'Admin:Operace', Permission::ALL); zde se určí role, zdroj a povolené akce.
5.3 Použité komponenty Systém používá několik již vytvořených komponent: • DataGrid – tvoří přehledové tabulky a vizuálně prezentuje data, která umožňuje třídit, filtrovat a jinak s nimi manipulovat s AJAXovou podporou (Sklenář, 2009). • DataPicker – slouží k výběru a vložení data do formuláře, využívá jQuery UI a HTML 5 (Tvrdík, 2011).
Přímo v systému neexistuje uživatel bez přidělené role, pokud nemá žádnou udělenou, tak se automaticky nastavuje na hodnotu „guest“ – host.
3
Implementace
26
• LayoutHelpers – využívá se především ve fotogalerii pro generování náhledů obrázků. Pokud miniatura ještě neexistuje, generátor ji vytvoří dle zvolených parametrů (výška a šířka). Poté vrací cestu k náhledu (Uestla, 2009). • MultipleFileUpload – uplatňuje se při nahrávání obrázků na server, umožňuje uživatelům interaktivně odesílat více souborů zároveň, přenos souborů je průběžně znázorňován, využívá AJAX (Kuchař, 2009). • PdfResponse – funkcionality komponenty se využívá při generování obsahu do formátu PDF, vstupem je šablona a výstupem požadovaný soubor. Je použita téměř u všech přehledů. Příkladem jsou zálohy placené vlastníkem nebo jeho příspěvky do fondu oprav, které si po vygenerování může uložit či vytisknout (Kuchař, 2010). • VisualPaginator – vizuálně stránkuje obsah, používá se na stránkách, kde je velké množství zobrazovaných informací (např. na stránkách s oznámeními, ve fotogalerii), pro takový výběr informací se musí upravit SQL dotazy a nastavit vhodný limit a offset (Grudl, 2009). • Navigation – tvoří menu a drobečkovou navigaci, v práci se využívá na hlavní horizontální menu, sekundární vertikální menu a pro generování drobečkové navigace (Marek, 2010). Kromě výše zmíněných open source komponent vytvořené komunitou Nette Frameworku se využívají i vlastní komponenty, jedná se především o Úklid. Komponenta Úklid automaticky generuje rozpis úklidu a nedělního vývozu popelnic (nemusí se nutně jednat o úklid, generuje v podstatě jakýkoliv rozpis), umožňuje nastavit frekvenci opakování a účastníky. Úklid vytváří nejen celý soupis, ale i oznámení o tom, kdo je aktuálně na řadě. Spolupracuje s PdfResponse tudíž dokáže vytvořený seznam vygenerovat do formátu PDF. Vlastní komponenty zahrnují všechny formuláře, které jsou rovněž znovu použitelné a jsou potomkem třídy Nette\ComponentModel\Container.
5.4 E-maily Rozesílání e-mailů zajišťuje komunikaci a lepší informovanost mezi vlastníky. Potřebné nástroje pro odesílání e-mailových zpráv poskytuje třída Frameworku - Nette\Mail\Message, využívají se při odesílání zpráv vlastníkům (včetně hromadných zpráv), upozornění nebo pro odeslání zapomenutého hesla. Samozřejmostí je možnost připojení přílohy ke zprávě. Obsah e-mailu může být definován jako šablona (kombinace se šablonovacím systémem). Výchozí funkcí pro odesílání je PHP funkce mail, lze však nastavit vlastní SMTP server a odesílat poštu přes něj.
5.5 Uživatelské rozhraní Uživatelské rozhraní je koncipováno jednoduše s důrazem na intuitivní ovládání systému. Rozvržení uživatelského rozhraní je znázorněno na drátěném modelu (viz obr. 8). Každá stránka systému je rozdělena do několika částí:
Implementace
Obr. 8
1.
2. 3.
4.
27
Model uživatelského prostředí
Hlavička – zobrazuje informace o uživateli, možnost přihlášení, datum a ikony pro úpravu velikosti textu (funkce realizována pomocí knihovny jQuery). Hlavní nabídka – pravá část je vyhrazena pro logo (obrázek domu) a název společenství, levá část pro horizontální menu. Drobečková navigace – zobrazuje aktuální polohu v hierarchii stránek, kde se uživatel nachází, usnadňuje v ní orientaci, všechny její položky jsou odkazy. Obsah – informace zde zobrazované se liší dle toho, jestli je uživatel přihlášen. Pokud ano, je pravá část doplněná o vertikální menu a komponentu s rozvrhem úklidu. 4.1. Úklid – informuje o tom, kdo je aktuálně na řadě s nedělním úklidem a vývozem popelnic. Jedná se o často vyhledávaný údaj, proto je umístěn nad vertikálním menu. 4.2. Menu – položky v menu jsou seřazeny relevantně, tedy podle toho co uživatel potřebuje rychle vidět.
Implementace
5. 6.
28
Patička – informace týkající se společenství Autorské právo + autor – zobrazuje tzv. copyright a informace o autorovi webových stránek. Implementované prostředí používá monochromatické barevné schéma. Převládající barvou je bílá, která okamžitě upoutá pozornost, podporuje jednoduchost a přímočarost webu. Zaujmout a zklidnit je účel použití fialové barvy. Poslední použitou barvou je šedá, je praktická a může se kombinovat se jakoukoliv barvou, na uživatele má působit seriózně.
Obr. 9
Schéma použitých barev
Obr. 10
Ukázka prostředí informačního systému
Závěr
29
6 Závěr Práce se zabývá konkrétními požadavky zvoleného SVJ – Společenství vlastníků Znojmo, Alšova 977\11, pro které bylo nezbytné definovat funkční a nefunkční požadavky na systém (viz kap 2.2). Na základě požadavků a zvolených kritérií se srovnávaly současná řešení dostupné pro danou oblast. Analýza stávajících systémů poukázala na jejich nedostatky spočívající zejména v nedostačující funkcionalitě či nepřívětivým uživatelským rozhraním (viz kap 3). Nevhodnost současných řešení byla impulsem k vytvoření vlastní aplikace splňující všechny zásadní požadavky SVJ. Aplikace byla tvořena takřka od začátku, vychází pouze ze sandboxu4 a některých hotových komponent pro framework. Bylo tedy implementováno navrhované řešení vycházející z reálných potřeb společenství. Použití Nette Frameworku a dodržení MVC principů přispělo k přehlednějšímu zdrojovému kódu, logickému členění aplikace a tím i k lepší rozšiřitelnosti a údržbě celého systému. Nasazení a využívání aplikace poukazuje na její funkčnost. Podařilo se vytvořit obecné řešení, jež může být bez velkých úprav nasazeno v dalších SVJ. Pro otestování a následné nasazení aplikace bylo nutné zvolit poskytovatele webhostingu, jehož webový server splňuje požadavky na provoz Nette Frameworku. Přičemž se zejména jednalo o podporu PHP 5.3 a dodatečných konfiguračních souborů .htaccess (Nette Foundation, 2009). Poskytovatele, který umožňuje uložení dat na databázový server, nabízí dostatečně velký diskový prostor, ale především musí být cenově dostupný a bez vložených reklam. K tomuto účelu byly vybrány hostingové služby od firmy Endora.cz, přesněji jejich program Plus. Pro uložení dat je využit databázový server InnoDB MySQL. Informační systém je dostupný z http://alsovka.maweb.eu/. Zadávání placených záloh do systému probíhá ručně na základě výpisu z bankovního účtu a u většího počtu vlastníků bude tento způsob neefektivní. Tudíž další možnosti vývoje spatřuji v doplnění importu informací z banky. Jedná se o vygenerování bankovního výpisu do CSV či obdobného formátu (internetové bankovnictví umožňuje export výpisu do různých formátů) a jeho následný import do systému. Mohu konstatovat, že reakce uživatelů jsou pozitivní. Jako důkaz mohu uvést názor pověřeného vlastníka společenství Karla Křivánka: „Informační systém je v provozu sice krátce, ale během té doby mi ušetřil čas při práci a starosti, například s obcházením sousedů, vyvěšováním rozvrhu s úklidem. Zatím nejčastěji používám elektronickou nástěnku. Ušetřil jsem čas se psaním nebo tisknutím a vyvěšováním vzkazů na nástěnku, kterou máme v přízemí na chodbě. Občas se stávalo, že tam vzkaz nevydržel viset ani jeden den, hlavně v případě nějaké stížnosti. Další výhodou je, že když jsem mimo domov, pořád vím, co se v domě děje. “ Sandbox je základní přichystaná struktura aplikace, založená na Nette Frameworku (Nette Foundation, 2011d)
4
Literatura
30
7 Literatura ARTIN Společenství vlastníků online [online]. c2012 [cit. 2012-04-05]. Dostupné z: http://www.spoluvlastnici.cz/. BRUCKNER, T., VOŘÍŠEK, J., BUCHALCEVOVÁ, A. A KOL. Tvorba informačních systémů. Praha: Grada, 2012, s. 278-279. Management v informační společnosti. ISBN 978-80-247-4153-6. ČESKÁ REPUBLIKA. Zákon ze dne 24. března 1994, kterým se upravují některé spoluvlastnické vztahy k budovám a některé vlastnické vztahy k bytům a nebytovým prostorům a doplňují některé zákony (zákon o vlastnictví bytů). In: Sbírka zákonů. 1994, č. 72, 22. Dostupné z: http://portal.gov.cz/app/zakony/download?idBiblio=41865. ČESKÝ STATISTICKÝ ÚŘAD. Bytová družstva a společenství vlastníků jednotek časové řady: Tab. 3 Společenství vlastníků jednotek v ČR v letech 2002 až 2009 [online]. Praha: Český statistický úřad, 14. 07. 2011, 31. 1. 2012 [cit. 2012-04-05]. Dostupné z: http://www.czso.cz/csu/csu.nsf/i/tab_3_bds/$File/bds130 611_03.xls. EXCON IS ALeX [online]. 2005, 2012 [cit. 2012-04-05]. Správa dokumentů. Dostupné z: http://www.isalex.cz/sprava-dokumentu/details.html. EXCON. Uživatelská příručka. Praha, 2011. Dostupné z: http://www.nase-sprava-domu.cz/Uzivatelska_prirucka.pdf. GRUDL, D. VisualPaginator. Doplňky, pluginy a komponenty [online]. 14. 7. 2009, 23. 8. 2011 [cit. 2012-05-01]. Dostupné z: http://addons.nette.org/cs/visualpaginator. INFONIA Weby pro SVJ [online]. 2008 [cit. 2012-04-06]. SVJ - demoverze Infonia. Dostupné z: http://svj.infonia.com/. INFONIA Weby pro SVJ [online]. c2010 [cit. 2012-04-06]. Dostupné z: http://www.infonia.cz/svj. KANISOVÁ, H. A MÜLLER, M. UML srozumitelně. 2. aktualizované vydání. Brno: Computer Press, 2006. ISBN 80-251-1083-4. KOCOUREK, J., ČERMÁK, J. A PEŠTUKA, J. Společenství vlastníků jednotek 2011. 2. aktualizované vydání. Praha: Eurounion, 2011. ISBN 978-80-7317-0899. Kryptografická sůl. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001-, 25. 11. 2011 [cit. 2012-04-08]. Dostupné z: http://cs.wikipedia.org/wiki/Kryptografick%C3%A1_s%C5%A Fl.
Literatura
31
KUCHAŘ, J. MultipleFileUpload. Doplňky, pluginy a komponenty [online]. 19. 8. 2009, 22. 12. 2011 [cit. 2012-05-01]. Dostupné z: http://addons.nette.org/cs/multiplefileupload. KUCHAŘ, J. PdfResponse. Doplňky, pluginy a komponenty [online]. 23. 2. 2010, 18. 2. 2011 [cit. 2012-05-01]. Dostupné z: http://addons.nette.org/cs/pdfresponse. MAREK, J. Navigation. Doplňky, pluginy a komponenty [online]. 20. 3. 2010 [cit. 2012-05-01]. Dostupné z: http://addons.nette.org/cs/navigation. NEPLECHOVÁ, M. Účetnictví pro bytová družstva a společenství vlastníků jednotek od A do Z 2009. 5. aktualizované vydání. Olomouc: ANAG, 2009. účetnictví. ISBN 978-80-7263-524-5. NETTE FOUNDATION Nette Framework [online]. 11. 12. 2008, 12. 4. 2012 [cit. 2012-04-15]. Rychlý a pohodlný vývoj webových aplikací v PHP. Dostupné z: http://nette.org/cs/#toc-features. NETTE FOUNDATION Nette Framework [online]. 14. 6. 2011a, 13. 2. 2012 [cit. 2012-04-10]. Šablony. Dostupné z: http://doc.nette.org/cs/templating. NETTE FOUNDATION Nette Framework [online]. 17. 5. 2009, 18. 6. 2011 [cit. 2012-04-15]. Požadavky. Dostupné z: http://doc.nette.org/cs/requirements. NETTE FOUNDATION Nette Framework [online]. 17. 6. 2011b, 1. 3. 2012 [cit. 2012-04-13]. Formuláře. Dostupné z: http://doc.nette.org/cs/forms. NETTE FOUNDATION Nette Framework [online]. 17. 6. 2011c, 4. 2. 2012 [cit. 2012-04-15]. MVC aplikace & presentery. Dostupné z: http://doc.nette.org/cs/presenters. NETTE FOUNDATION Nette Framework [online]. 23. 12. 2011d, 25. 2. 2012 [cit. 2012-04-28]. Začínáme. Dostupné z: http://doc.nette.org/cs/quickstart/start. SKLENÁŘ, R. DataGrid. Doplňky, pluginy a komponenty [online]. 22. 5. 2009, 18. 6. 2010 [cit. 2012-05-01]. Dostupné z: http://addons.nette.org/cs/datagrid. TURISTIKA.CZ Sousedé.cz [online]. c2012 [cit. 2012-04-05]. Dostupné z: http://www.sousede.cz/. TVRDÍK, J. DatePicker. Nette Extras [online]. 18. 1. 2011, 31. 1. 2011 [cit. 201205-01]. Dostupné z: http://nette.merxes.cz/date-picker/.
Literatura
32
UESTLA. Image helper: lazy generování náhledů. In: Nette Framework forum [online]. 21. 8. 2009, 23. 10. 2010 [cit. 2012-05-01]. Dostupné z: http://forum.nette.org/cs/2833-image-helper-lazygenerovani-nahledu.
Přílohy
33
Přílohy
Kompletní ERD
34
A Kompletní ERD Na následujícím diagramu jsou znázorněny všechny tabulky a vazby mezi nimi.
Obr. 11
ERD
DVD-ROM
35
B DVD-ROM Na přiloženém DVD-ROMu je k dispozici zdrojový kód celé aplikace, vyexportovaná struktura databáze a tato práce v elektronické podobě.