56
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 884 Odvjetnički ured Boris Handžiski Zagreb, veljača 2006.

Odvjetnicki Ured

  • Upload
    efidjbl

  • View
    38

  • Download
    7

Embed Size (px)

DESCRIPTION

Tema ovog diplomskog rada je izrada računalne aplikacije za automatizaciju poslovanja odvjetnika u hrvatskom pravnom sustavu.

Citation preview

Page 1: Odvjetnicki Ured

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 884

Odvjetnički ured

Boris Handžiski

Zagreb, veljača 2006.

Page 2: Odvjetnicki Ured

1. Uvod 1

1. Uvod Tema ovog diplomskog rada je izrada računalne aplikacije za automatizaciju poslovanja odvjetnika u hrvatskom pravnom sustavu. Prilikom kratkotrajnog rada u jednom tajničkom uredu, uočio sam dvije velike neefikasnosti u radu: prvo, veliku količinu papirologije koja je bila nužna za svakodnevne poslove, kao npr. izdavanje putnih naloga, potvrda, urudžbiranje, uz ponavljanje aktivnosti tipa ispunjavanja kućica istim standarnim tekstom (npr. redni broj dokumenta itd.), ispravljanje pogrešaka korektorom, traženja starih dokumenata po ladicama, ili još gore po mapama zaposlenika, koje naravno, osim što su bile pune prašine, nisu bile sortirane po prezimenu. Drugi problem je bila uporaba računala prilikom izrade Word dokumenata. Svaki novi Word dokument je imao poseban format (zbog nekorištenja obrazaca) i što je još gore, nije bilo načina da se jednom izrađeni dokument brzo pronađe i otvori na računalu. Ovo neugodno iskustvo potaknulo me da za temu diplomskog rada uzmem upravo područje uredskog poslovanja i izradu aplikacije koja će automatizacijom olakšati rad uredskog korisnika. Budući da je moj brat odvjetnik, učinilo mi se pogodnim da iskoristim pravo pristupa dokumentima i informacijama koje ta rodbinska veza osigurava kao i dodatnu pogodnost da ovaj rad neće imati samo svrhu ispunjenja mojih studentskih obaveza, već i praktičnu korist olakšavanja rada stvarnoj osobi u stvarnom svijetu. Tako se rodila ideja o izradi aplikacije za automatizaciju rada odvjetnika, nešto što je zvučalo dovoljno originalno za temu diplomskog rada dok je istovremeno imalo opravdanje u stvarnim potrebama korisnika. Koliko sam u svome pokušaju uspio, ostavljam na reviziju stručnoj komisiji, uz primjedbu da sam tokom izrade mogao uočiti brojne načine na koje bi se funkcionalnost aplikacije mogla proširiti, kao i na vlastitu nemogućnost da neke strane poslovanja automatiziram, obzirom na količinu vremena i moje limitirane sposobnosti. Aplikacija koju prilažem nije svakako optimalna aplikacija na tržištu i u mnogim svojstvima može se učiniti neprikladna; ipak, nadam se da se moj trud zadovoljiti kako komisiju, tako i (potencijalnog) krajnjeg korisnika. U izradi diplomskog rada slijedio sam postupke sistem-analize, od početnog upoznavanja sa strukturom poslovanja i korištenih podataka (vidi 2. i 3.1.), uočavanja problema u sadašnjem radu (3.2.), definiranja ciljeva informatizacije (3.3.), zatim kroz fazu analize izradom modela funkcija, procesa i podataka (vidi 3.5., 3.6. i 3.7.) koji će poslužiti kao osnova za izradu baze podataka i pisanje programskog koda u fazi izrade.

Page 3: Odvjetnicki Ured

2. Prikupljanje informacija 2

2. Prikupljanje informacija 2.1. Intervju

[1]Intervju je razgovor između (najčešće) dvoje ljudi, s ciljem utvrđivanja činjenica o sustavu kojeg analiziramo. Intervju je primarna tehnika prikupljanja informacija jer omogućava neposredan pristup u rad poslovne organizacije. Razlog tome je što se neusiljenim, elastičnim razgovorom može doći do činjenica koje ostale metode (npr. prikupljanje dokumenata, promatranje rada) zbog svoje neizravnosti i udaljenosti od subjekta promatranja ne omogućuvaju. Intervju se priprema utvrđivanjem liste pitanja koja se žele postaviti, dok se dodatna pitanja formuliraju kao reakcija na odgovore ispitanog, čime se brzo dolazi do važnih informacija o sustavu. Ciljevi ovog intervjua su bili sljedeći:

1. Doznati osnove rada odvjetničkog ureda (vidi 3.1.). 2. Uočiti probleme sadašnjeg stanja (vidi 3.2.). 3. Uočiti potrebe sustava (vidi 3.3. i 3.4.). 4. Uočiti osnovne funkcije sustava (vidi 3.5.). 5. Uočiti osnovne procese i tokove podataka (vidi 3.6.).

Slijedi prijepis razgovora. (neka pitanja i odgovori su rezultat kasnijih pitanja koja su propuštena tijekom prvog sastanka). Intervju je vođen na radnom mjestu odvjetnika, dok su kasniji upiti obavljeni preko telefona i u drugim neformalnim prilikama. Pitanja su označena dvotočkom (:), dok su odgovori dani ispod njih. :Čime se bavi odvjetnički ured? Ured zastupa stranke pred sudom, za njih komunicira s ostalim entitetima, poput državnim tijelima i os. društvima. Stranke: :Kako stranka pristupa uredu? Obično telefonskim pozivom, stranka može doći i osobno u ured. :Što čini odvjetnik nakon zaprimanja zahtjeva? Odvjetnik uzme osobne podatke od stranke i traži informacije o slučaju. :Kako počinje postupak? Odvjetnik prihvaća zastupanje i otvara se „folder” (mapa) s imenom stranke. Pokreće se proces nabave i pisanja dokumenata specifičnih za slučaj. :Kako se unutar ureda dodjeljuju predmeti? Nema neke čvrste formule. Predmet preuzima odvjetnik koji je primio poziv od stranke. :Kakva je komunikacija sa strankom tokom postupka? Od nje se mogu tražiti dokumenti, telefonski je se može obavijestiti o toku postupka. :Da li se predmet može prekinuti? Može. :Tipovi stranaka? Fizičke i pravne osobe. Rad sa sudom: :Tipovi dokumenata koji se predaju sudu. Žalbe, tužbe, obrane, registracije, podnesci, ...

Page 4: Odvjetnicki Ured

2. Prikupljanje informacija 3

:Dokumenti koji dolaze od suda? Presude i rješenja. :Reakcija na presudu? Po želji stranke, može se uložiti žalba, ili se odustaje od daljneg postupka. :Vrste sudova? Trgovački, općinski, prekršajni, županijski, (primjeri u dokumentima.) Rad s državnim tijelima: :Što se od njih traži? Traže se dokumenti vezani za stranku. :Primjeri državnih tijela s kojima se surađuje? Ministarstvo financija, Zavod za platni promet, Hrvatski zavod za mirovinsko osiguranje. :Dokumenti koji dolaze od državnih tijela? Uvjerenja o poreznim obavezama, o stanju na žiro-računu, o visini naknade za tjelesno oštećenje. Rad s osiguravajućim društvima: :Kako se komunicira s osiguravajućim društvom? Preko odštetnih zahtjeva i nagodbi. :Što je to odštetni zahtjev? S njime se od osiguravajućeg društva traži isplata određenog iznosa stranci koju se zastupa. :Reakcija os. društva? Ono može odbiti zahtjev ili ga prihvatiti. :Što radi ured u slučaju odbijanja? Ured pokreće tužbu protiv osiguravajućeg društva pred sudom. :Što je nagodba? S njime se stranka i os. Društvo van suda dogovaraju o visini odštete. (uzeti primjer odštetnog zahtjeva i nagodbe.) Rad s javnim bilježnikom: :Kako se komunicira s javnim bilježnikom? Preko prijedloga za ovrhu. :Što je prijedlog za ovrhu? Ako jedna strana u sporu nije isplatila iznos koji se od nje potražuje, traži se dopuštenje da se izvrši ovrha nad računom te strane. :Što šalje javni bilježnik? Rješenje, pozitivno ili negativno. (uzeti primjer zahtjeva za ovrhu.) Vanjski dokumenti: :Kako se dokumenti arhiviraju u uredu? Spremaju se u mapu klijenta. :Koje dokumente treba bilježiti u informacijskom sustavu? Presude, rješenja javnog bilježnika, pozive na sud, dokumente od državnih tijela, odgovore osiguravajućeg društva.

Page 5: Odvjetnicki Ured

2. Prikupljanje informacija 4

:Kako treba bilježiti vanjske dokumente? Zabilježiti njihov dolazak, datum, izvor i kratki opis. Izdavanje računa: (uzeti primjer računa) :Kada i kako se izdaje račun? Na kraju predmeta, nakon što se izračunaju usluge koje su pružene stranci. :Da li se račun može izdati i za vrijeme trajanja predmeta? Može. Stavke računa. :(priložen primjer računa) Način obračuna. Tarifni model. (traženje primjerka Odvjetničke tarife) :Objasniti koncepciju bodova. Ovisno o tipu slučaja, za usluge se zaračunaju bodovi koji nose određenu kunsku protuvrijednost. Načini dodjele bodova su raznoliki. Kod parničnih postupaka sastavljanje npr. tužbe donosi bodove ovisno o vrijednosti postupka (veća kunska vrijednost, više bodova). S druge strane kod pravnih lijekova sastavljanje obrane nosi fiksni broj bodova. Pogledati Odvjetničku tarifu. Putni nalozi i računi: :Da li odvjetnik koristi putne naloge? Trebaju li biti dio aplikacije? Da, odvjetnik sam piše naloge. Bilo bi poželjno da budu u aplikaciji. :Kako obraditi troškove putnih naloga? Izdavanjem putnog računa. (forma računa dogovorena na strani jednostavnosti) Stanje informatizacije: :Kakva je infrastruktura ureda? Da li posjeduje server? Ured ima mrežu, ali nema server. Odvjetnici se služe prijenosnicima. Tajnica radi na stolnom računalu. :Da li ured planira nabaviti server? Razmišlja se o tome, ali ne vidi se potreba. :Kakva je funkcija tajnice? Čemu služi njezino računalo? Ona po potrebi piše dopise stranci ili putama

:Da li postoje još neki entiteti s kojima odvjetnik komunicira? Ne. :Da li je ured već razmatrao kupnju informacijskog sustava? Uredu je ponuđeno gotovo rješenje Ruby Monday Law Office od tvrtke willevolve®, ali nije kupljeno. (priložen prezentacijski CD). :Razlog odbijanja ponude? Nesrazmjer troška nabave i potrebe za takvom aplikacijom. 2.2. Prikupljeni dokumenti U drugom koraku prikupljanja informacija zatražili smo dokumente koji se koriste u radu ureda. Ovo je potrebno radi utvrđivanja pravilnosti i strukture poslovanja. Odvjetnik je predao puno dokumenata vezanih za svoj rad, kao i vrlo bitnu kopiju Tarifnog Modela Odvjetničke Komore, bez koje je nemoguće izraditi modul za

Page 6: Odvjetnicki Ured

2. Prikupljanje informacija 5

dodavanje usluge i izradu računa. Tarifni model opisuje usluge koje odvjetnici pružaju u Republici Hrvatskoj, kao i broj bodova (ili iznos kuna) koje nose. Kompleksnost ovog modela je iziskivala brojne naknadne upite i pojašnjenja, koja nisu dani u intervjuu. Također mi je predan Dnevnik rada za 2004. godinu u kojem su upisane vremenske obaveze, što mi je poslužilo prilikom izrade kalendarskog modula. 2.3. Postojeće stanje informatizacije Odvjetnik ne posjeduje računalni informacijski sustav za automatizaciju poslovanja. Koristi se XP operativni sustav s instaliranim Microsoft® Office paketom. Za središnju aktivnost njegovog rada, izradu dokumenata, koristi se Microsoft® Word aplikacija. Tvrtka willevolve® ponudila je paket opreme za odvjetnički ured, nazvan Ruby Monday® Law Office. Ponuda je sadržavala od prezentacijski CD-ROM preko kojeg je prikazan izgled i osnovna funkcionalnost aplikacije.

Riječ je o profesionalnoj aplikaciji atraktivnog izgleda i širokih mogućnosti (tvrtka se hvali da je ona „rezultat višegodišnjeg iskustva i razvoja od strane domaćih stručnjaka”), međutim njena slabost je što nije napravljena po mjeri specifičnog odvjetnika, npr. ne pruža opciju automatizacije izrade računa koristeći Tarifni model Hrvatske Odvjetničke komore. Nije mi bila namjera oponašati ovu aplikaciju, niti sam za to bio sposoban, ali mi je pružila određenu pomoć u izradi sučelja i definiranju funkcionalnosti. Ponuda ove tvrtke nije prihvaćena jer su troškovi nabave bili previsoki u srazmjeru s percipiranom dobiti njegovog korištenja.

Page 7: Odvjetnicki Ured

3. Analiza sustava 6

3. Analiza sustava 3.1. Problemsko područje Posao odvjetnika može se ukratko opisati sa sljedećim aktivnostima:

- Otvaranje slučaja / primanje stranke o Stranka inicira kontakt sa odvjetnikom, bilo telefonski/pismeno

(češći slučaj) ili osobnim dolaskom u ured (rjeđe). o Odvjetnik se upozna sa slučajem u najkraćim crtama. Nakon što

odluči prihvatiti stranku i njen slučaj, uzima njene podatke, otvara predmet i izrađuje uputu koja opisuje slučaj i pravni položaj stranke.

- Prikupljanje dokumenata

o Ponekad je nužno tražiti dokumente od državnih tijela, npr. Uvjerenja o poreznim obavezama, o stanju na žiro-računu, o visini naknade za tjelesno oštećenje. Odvjetnik sastavlja zahtjev za tim dokumentima i šalje ih određenim tijelima.

- Sastavljanje dokumenata

o Odvjetnik priprema dokumente za sudsko ročište, ili za slanje ostalim entitetima (npr. javnom bilježniku ili osiguravajućem društvu).

- Zastupanje stranke pred sudom

o Odvjetnik odlazi na sudska ročišta gdje zastupa slučaj u ime stranke. On također prima sudsku presudu/ sudsko rješenje i konzultira i savjetuje stranku glede nastavka predmeta (npr. ulaganje žalbe, itd.). Rad odvjetnika se vrednuje odvjetničkim uslugama, koje su opisane u tarifnom modelu.

- Zatvaranje slučaja

o U slučaju prekida predmeta ili donošenja konačne presude, odvjetnik slučaj zatvara i stranci izrađuje račun, s brojem žiro-računa na kojeg se očekuje isplata.

3.2. Problemi sadašnjeg stanja Budući da odvjetnik trenutno ne posjeduje informacijski sustav, javljaju se sljedeće neefikasnosti u radu:

- spori dohvat prethodno izrađenih dokumenata - neefikasna organizacija rada - pregled zakazanih obaveza - izrada računa (računanje vrijednosti usluga) - praćenje lokacija zaprimljenih vanjskih dokumenata - neujednačenost izrađenih dokumenata (nepostojanje obrazaca)

3.2.1. Rad s dokumentima Najveći problem u sadašnjem načinu rada javlja se kod rada s dokumentima, imenice, njihovom izradom, spremanjem i naročito kasnijim dohvatom. Jedna od pritužbi odvjetnika je bila da vrijeme potrošeno na pronalažanje prije izrađenog dokumenta može dostići i dva sata. Također ne postoji evidencija primljenih vanjskih dokumenata, već se oni samo umeću u mapu predmeta, tako da je teško pratiti što je primljeno. Kada odvjetnik želi izraditi novi dokument, postupak je sljedeći: otvaranje već postojećeg dokumenta koji je istog tipa kao onaj kojeg se želi izraditi (tužba, žalba, zahtjev ...), brisanje nepotrebnog teksta, upis relevantnih podataka prema potrebi i

Page 8: Odvjetnicki Ured

3. Analiza sustava 7

zatim spremanje na tvrdi disk. Imena datoteka koje odvjetnik pridaje su neuniformna i predstavljaju problem pri kasnijem pronalaženju. Otvaranje novih direktorija je jedan način s kojim se pokušalo organizirati dokumente, međutim uskoro je broj direktorija počeo smanjivati efikasnost produžujući vrijeme pretraživanja. Održavanje ovakvog sustava je također problematično. Dokumenti koji više nisu potrebni ostaju neobrisani jer korisnik nema vremena čistiti tvrdi disk, isti dokument postoji u nekoliko kopija, rezultirajući u sve većem broju datoteka i smanjenju brzine rada računala. Aplikacija bi trebala pružiti najveću uštedu upravo u ovom području, jer bi dohvat izrađenog dokumenta bio moguć u vremenu do nekoliko sekundi.

3.2.2. Praćenje stanja predmeta U sadašnjem sustavu, odvjetnik drži dokumente vezane za predmet unutar jedne mape, koja se vodi pod imenom stranke. Pregled izrađenih dokumenata, primljenih vanjskih dokumenata, pruženih usluga, itd. spor je i zamoran posao. Aplikacija bi trebala omogućiti brzi pregled relevenatnih podataka o predmetu.

3.2.3. Praćenje obaveza Obaveze se ručno bilježe u Dnevniku rada, rokovniku unutar knjige zvanoj „Sudski priručnik”. Automatsko upozoravanje odvjetnika na nadolazeću neispunjenu obavezu nije moguće. Taj posao trenutno obavlja tajnica ili odvjetnik sam provjeravajući Dnevnik rada. Odvjetnik je izrazio želju za sustavom obavješćivanja o zakazanim obavezama.

3.2.4. Izdavanje računa Ovo je jedan od velikih problema na koje se odvjetnik požalio. Izračun troškova pruženih usluga radi se preko Tarifnog Modela Odvjetničke Komore. Riječ je o ponešto konfuznom i rekurzivnom popisu točaka koje nose određen broj bodova (bod ima kunsku protuvrijednost određenu tarifom). Uz to, neke točke modela su rekurzivno povezane s drugim točkama i nose bodove prema nekom postotku prema drugoj točci. Ručna izrada računa je stoga naporan proces pogotovo za nekoga sa slabom matematičkom podlogom. Aplikacija bi trebala omogućiti ažurno praćenje pruženih usluga i automatsko računanje zbrojeva, postotaka i koančnog iznosa računa. 3.3. Ciljevi informatizacije Namjera je izraditi aplikaciju koja će olakšati rad u onim segmentima koji sad predstavljaju problem. Poboljšati efikasnost rada automatizaranjem onih dijelova rada koji se mogu izvesti računalno. Specifično, cilj je izgraditi aplikaciju sa sljedećim karakteristikama:

3.3.1. Dokumenti Aplikacija bi morala omogućiti izradu, pohranu, pregled i dohvat vlastitih dokumenata. Treba koristiti obrasce i automatsko generiranje nekih dijelova teksta. Također bi trebalo omogućiti lakši rad prikazom zadnjih izrađenih dokumenata prilikom pokretanja aplikacije, tako da odvjetnik može nastaviti rad gdje je stao. Treba se omogućiti bilježenje primljenih vanjskih dokumenata. Omogućiti bilježenje fizičke lokacije dokumenta radi kasnijeg lakšeg nalaženja.

Page 9: Odvjetnicki Ured

3. Analiza sustava 8

Treba se omogućiti izrada putnih naloga i njihovih pripadnih putnih računa. Omogućiti automatsko oblikovanje računa, sa ispisom stavaka i njihovih kunskih iznosa.

3.3.2. Vođenje predmeta Omogućiti otvaranje predmeta prilikom zaprimanja stranke. Za svaki predmet prikazati vezane dokumente, obaveze, putne naloge, usluge i račune. Predmet se vodi pod prezimenom stranke u skladu s dosadašnjom praksom. Omogućiti dodavanje usluga iz Tarifnog modela iz funkcionalnog sučelja.

3.3.3. Obaveze Omogućiti dodavanje, pregled, promjenu i brisanje obaveza. Napraviti modul koji će u prozoru izvan aplikacije upozoravati na istjecanje vremenskih obaveza. Omogućiti ispis obaveza u Word datoteci radi lakšeg praćenja.

3.3.4. Pretraživanje Omogućiti pretraživanje dokumenata, putnih naloga, putnih računa i računa uopće, entiteta, obaveza, stranaka, predmeta.

3.3.5. Izvješća Omogućiti automatsko generiranje izvješća o predmetima, strankama, obavezama i računima (u određenom vremenskom razdoblju). Izvješća su ispis podataka iz baze podataka u Word datoteku. Npr. odvjetnik možda želi ispisati listu svojih stranaka u Word predlošku, ili možda ispis o podacima izdanih računa s iznosom ukupne sume. 3.4. Sklopovska i programska podrška Odvjetnički ured trenutno ne raspolaže računalnim informacijskim sustavom, a odvjetnik se za izradu dokumenata služi prijenosnim računalima. Ured posjeduje računalnu mrežu, koja se koristi za povremenu razmjenu dokumenata. Ured već neko vrijeme razmišlja o kupnji servera, međutim nedostaje prava motivacija za takvu investiciju. U slučaju razvoja informacijskog sustava, predlaže se sljedeća konfiguracija: SERVER

- IBM xseries 206 o Procesor: P4 3.4Ghz, (Intel Pentium) o Memorija:

512MB ECC DDR HDD 160 GB Simple Swap RAID 0/1 /8487EWG

- Operacijski sustav: Windows Server 2003 - Baza Podataka: SQL Server 2000 - Programski jezik: C#.NET

RADNA MJESTA: - Procesor: Intel Celeron 2.4 GHz, - Memorija:

o 40GB HDD o 256MB, 266MHz DDR

- Operacijski sustav: Windows XP - Printer

Page 10: Odvjetnicki Ured

3. Analiza sustava 9

3.5. Model Funkcija (Dijagram dekompozicije funkcija) Prije razvoja informacijskog sustava za neku organizaciju, analitičar mora razumjeti poslovne funkcije te organizacije. Dijagram dekompozicije funkcija (functional decomposition diagram) [2] je alat s kojim se prijazuje hijerarhija poslovnih funkcija, procesa i podprocesa unutar organizacije koji su zatim opisani modelima procesa. Razlaganje (ili dekompozicija) funkcija u procese omogućava razumijevanje kompleksnih sustava. Riječ je o top-down (od gore-prema dolje) pristupu oblikovanju, gdje se poslovni subject prikazuje kao jedna kućica koja se zatim razlaže na sljedećoj, nižoj razini. Dijagram dekompozicije sastoji se od funkcija, koje su kontinuirana aktivnost unutar poslovne organizacije, bez određenog početka i kraja. Funkcije su prikazane pravokutnicima s pravim kutevima i mogu sadržavati nekoliko podfunkcija koje su nacrtane ispod funkcija i povezane s njima s ravnom linijom. Dijagram dekompozicije funkcija može imati nekoliko razina funkcija sa sve finijom gradacijom nakon čega se funkcije rastavljaju na procese. Proces je poslovna aktivnost koja ima definiranu početnu i završnu točku i obavlja se za određeni poslovni razlog. Prikazuje se pravokutnikom s zaobljenim uglovima. Procesi se mogu dalje razlagati u podprocese. Identificiranje funkcija i procesa se provodi iteracijom, tako da se dijagram mijenja i rafinira kako se poslovni proces bolje upoznaje.

Slika 3.1. Dijagram dekompozicije funkcija Treba dodati da prikazani model nije jedini niti definitivni prikaz funkcija odvjetničkog ureda već rezultat mog osobnog shvaćanja tih funkcija. 3.6. Model procesa Nakon što smo na dijagramom dekompozicije funkcija identificirali funkcije organizacije, krećemo u modeliranje procesa. Poslovni sustav može se predstaviti procesom koji komunicira s vanjskim entitetima i spremištima podataka. Prikaz procesa s vanjskim entitetima i spremištima podataka prikazan je dijagramom toka podataka (data flow diagram) koji se sastoji od više dijagrama koji su poredani u

Page 11: Odvjetnicki Ured

3. Analiza sustava 10

hijerarhiji, na čijem vrhu je dijagram konteksta, koji se dalje razlaže do razine osnovnih procesa.

3.6.1. Dijagram konteksta Dijagram konteksta prikazuje informacijski sustav kao monolitni proces (pravokutnik s zaobljenim uglovima) koji komunicira s vanjskim entitetima (pravokutnici). Sadržaj i smjer komunikacije prikazuje se imenovanim strelicama. Na slici 3.2. prikazan je dijagram konteksta odvjetničkog ureda.

DRŽAVNA TIJELA

ZAHTJEV DOKUMENTI

SUD

OSIGURAVAJUĆE DRUŠTVO

ODGOVOR

ODŠTETNI ZAHTJEV

RAČUN

STRANKA

JAVNI BILJEŽNIK

RJEŠENJE

ZAHTJEV ZA DOKUMENTIMA

DOKUMENTI

PRIJEDLOGZA OVRHU

PRESUDA

NAGODBA

PODNESAK

P0

ODVJETNIČKI URED

ODGOVOR

Slika 3.2. Dijagram konteksta

Stranka kontaktira ured radi pružanja odvjetničkih usluga. Prihvaćajući stranku, ured se dalje brine za komunikaciju s relevantnim entitetima, kreirajući dokumente, zahtijevajući ih od drugih entiteta, zastupanjem stranke pred sudom itd. Pri zatvaranju predmeta (ili iznimno za vrijeme njegovog trajanja), stranci se izdaje račun.

3.6.2. Pregledni dijagram Pregledni dijagram se sastoji od sljedećih dijelova:

1. Vanjski entiteti – predstavljeni su pravokutnicima s uglovima pod 90º. Entiteti proizvode i konzumiraju podatke (oni su izvori i ponori podataka). Entiteti ne mogu komunicirati međusobno, nego samo s procesima.

2. Spremišta podataka – na slici su predstavljeni pravokutnicima koji su otvoreni na jednoj strani. Spremišta služe za spremanje podataka za kasniju uporabu i odgovaraju na zahtjeve za upis i dohvat podataka. (koji dolaze od procesa).

3. Procesi – predstavljeni su zaobljenim pravokutnicima. Proces je ono što mijenja podatke (npr. generiranje nove informacije ili promjena postojeće). Ime procesa opisuje aktivnost te promjene. Procesi mogu komunicirati s entitetima i međusobno. Procesi s asteriksom (*) su razloženi na nižoj razini.

4. Tokovi podataka – predstavljeni strelicama na kojima su nazivi koji opisuju sadržaj toka. Tokovi prikazani isprekidanom linijom predstavljaju tok materijala. Ulazni tokovi (vrh strelice na spremištu podataka) predstavljaju operacije koje mijenjaju spremljene podatke (dodavanje, mijenjanje, brisanje). Izlazni tokovi (vrh strelice na procesu) predstavljaju dohvat podataka iz spremišta.

Page 12: Odvjetnicki Ured

3. Analiza sustava 11

Stranke

P1 P4 P5

STRANKA

zahtjevpodaci osobni

podaciZAPRIMANJE STRANKE podaci

OSIGURAVAJUĆE DRUŠTVO

P2

PRIPREMI RAČUN

račun Računiračun

DRŽAVNA TIJELA

dokumenti

P7

EVIDENTIRAJ VANJSKI

DOKUMENT

Predmetpodacio predmetu

SUD

IZRADA IZVJEŠĆA

Uslugeusluge

presude

račun

podacio predmetu

P6

PODSJETI

DEFINIRAJOBAVEZU

Obaveze obavezaobaveza

odgovor

obaveza

Vanjski dokumenti

Dokumenti

P3

DODAJUSLUGU

usluge

P8

IZRADADOKUMENTA

podnesak (tužbe, obrane,

žalbe, itd.)

zahtjevza dokumentima

JAVNI BILJEŽNIK

rješenje

vanjski dokument

dokument

P9

IZRADA PUTNOG NALOGA

Putninalozi

P10

IZRADA PUTNOG RAČUNA

Putniračuni

putninalog

putniračun

putninalog

dokumenti

odgovor

odštetnizahtjev, nagodba

prijedlogza ovrhu

Slika 3.3. Pregledni dijagram Osnovni process kontekstnog dijagrama prikazan je pomoću 10 procesa i 8 spremišta podataka koji pobliže opisuju kako se izvode pojedine poslovne operacije unutar odvjetničkog ureda.

3.6.3. Razrađeni procesi preglednog dijagrama Za neke procese s preglednog dijagrama može se nastaviti dekompozicija na podprocese.

3.6.3.1. Razrada procesa P1 (Zaprimanje stranke)

Slika 3.4. Proces „Zaprimanje stranke“

Page 13: Odvjetnicki Ured

3. Analiza sustava 12

Na zahtjev potencijalne stranke, odvjetnik uzima podatke i zatim provjerava da li stranka već postoji u bazi. Nakon toga nastavlja se s upisom stranke i upisom predmeta i na kraju se nova stranka obavještava o početku predmeta.

3.6.3.2. Razrada procesa P2 (Izdavanje računa)

Slika 3.5. Proces „Izdavanje računa“

Korisnik iz spremišta Usluge odabire usluge koje želi dodati u račun. Nakon toga za svaku dodanu uslugu izračuna se njena kunska vrijednost i zatim ukupan iznos svih usluga. Na kraju se u spremište Računi doda zapis o izradi računa i izradi pripadni dokument. 3.7. Model podataka Svrha modeliranja podataka je identifikacija svojstava i struktura podataka u poslovnom procesu te njihovo organiziranje u svrhu ispunjenja korisničkih zahtjeva. Model podataka služi kao okvir za kasniji razvoj aplikacije.

3.7.1. Model entiteti-veze (EV Dijagram) Dijagram entiteti-veze (entity relationship diagram) je slikovna predodžba entiteta i veza među njima. Služi za lako sagledavanje informacijske strukture aplikacije i služi za kasnije projektiranje baze podataka i relacija. Entiteti su glavni podatkovni objekti o kojima se prikupljaju informacije. Riječ je o prepoznatljivim konceptima tipa osoba ili dokument. Entiteti mogu biti jaki (neovisni) i slabi (ovisni). Jaki entitet egzistira samostalno, odnosno ne ovisi o drugom entitetu radi identifikacije. Na našem dijagramu označeni su pravokutnicima s jednostrukim rubom. Slabi entiteti postoje samo u vezi s jakim entitom, odnosno ovise o njemu za identifikaciju. Na dijagramu prikazani su pravokutnicima s dvostrukim rubom. Entitet na EV dijagramu odgovara relaciji u relacijskom modelu, dok pojava (instanca) entiteta odgovara retku u relaciji. Veze su prikazane linijama koje povezuju entitete. Stupanj veze je broj entiteta s kojima je povezana. Na našem dijagramu imamo samo binarne veze, odnosno veze između dva entiteta. Kardinalnost veze (od entiteta A do entiteta B) je broj pojava entiteta B koji su vezani za svaku pojavu entiteta A. Na dijagramu kardinalnost prikazujemo uporabom kružića i crtica na spoju veze i entiteta (Martin notacija).

Page 14: Odvjetnicki Ured

3. Analiza sustava 13

Slika 3.6. Model entiteti-veze

Entitet Predmet čini osnovicu modela vezujući na sebe entitete Stranka i Dokument. Svaka stranka može biti vezana za nekoliko predmeta, ali svaki predmet vezan je za samo jednu stranku. Stranka se specijalizira na fizičku i pravnu osobu. Svaki dokument je vezan za jedan predmet i jedan (vanjski) entitet i specijalizira se na putni račun, račun, putni nalog, unutarnji (predstavlja sve dokumente koji idu prema vanjskim entitetima kao npr. sudu, javnom bilježniku) i vanjski (svi dolazeći dokumenti). Za svaki predmet vezane su usluge koje je odvjetnik obavio tokom života predmeta. Usluge u tarifnom modelu mogu se referencirati na neke druge usluge što je opisano refleksivnom vezom. Svaka obaveza je vezana za jedan predmet.

3.7.2. Relacijski model Model entiteti-veze izrađen je u fazi analize i prije faze izgradnje aplikacije, dok je sljedeći relacijski model preslikan iz baze podataka. Razlike u modelu su posljedica zahtjeva aplikacije koji nisu uviđeni u fazi analize (npr. potreba za relacijom Postavka je nastala tek prilikom kodiranja). Relacijski model izrađen je u programu Microsoft Visio 2003 korištenjem opcije Reverse Engineer za izvlačenje modela iz postojeće baze podataka. Oznaka PK simbolizira primarni ključ, FK strani ključ, I indeksiranu vrijednost (radi brže pretrage) i U jedinstvenu vrijednost (ili alternativni ključ). Masnim slovima (bold) označeni su atributi relacija koji se moraju popuniti prilkom kreiranja novog zapisa.

Page 15: Odvjetnicki Ured

3. Analiza sustava 14

Slika 3.7. Relacijski model

Vidljiva je sličnost s modelom entiteti-veze, s time da je refleksivna veza kod entiteta Usluge prikazana vezom između dvije relacije tbl_Usluga i tbl_Usluga_Ref. Ova zadnja definira način na koji je jedna usluga povezana s drugom i to je izvedeno s postotkom (jedna usluga nosi određen postotak bodova neke druge usluge). Svaki tarifni broj (tbl_Tarifni_Broj) je vezan za jedan tip predmeta (krivični, ovršni, zemljišno-knjižni…). Relacija tbl_Korisnik služi za čuvanje podataka o trenutnom korisniku aplikacije. Atribut Datoteka u relacijama tbl_Dokument_Unutarnji ili tbl_Putni_Nalog predstavlja ime datoteke pod kojim je spremljen Word dokument. U relaciji tbl_Postavka držimo vrijednosti potrebne za rad aplikacije, npr: kunsku protuvrijednost boda, direktorij u kojem se drže obrasci i slično.

Page 16: Odvjetnicki Ured

4. Aplikacija 15

4. Aplikacija 4.1. Tehnička specifikacija Aplikacija „Odvjetnički Ured“ omogućava automatizaciju rada odvjetnika u hrvatskom pravnom sustavu (za detaljni opis rada pogledati točke 4.3. i 4.4.). Vrsta aplikacije: Windows Baza podataka: Microsoft SQL Server 2000 Programski jezik: Visual C#.NET Iziskuje: .NET framework, Microsoft Word 2003 Aplikacija se dostavlja s instalacijskim paketom čije je instaliranje objašnjeno u sljedećoj točci. 4.2. Instalacija aplikacije Uporabom .NET projekta Setup and Deployment Projects i obrasca Setup Project pripremljen je paket za instalaciju aplikacije, koji se sastoji od datoteka Setup.Exe, Odvjetnicki_Ured.msi i Setup.Ini, ukupne veličine od oko 2MB. Instalirana aplikacija zauzima oko 6MB slobodnog prostora, ali potrebno ju je instalirati na disk s većim slobodnim kapacitetom jer se u toku rada kreiraju dokumenti (ili promijeniti lokaciju direktorija „Files“ gdje se dokumenti spremaju, vidi 4.4.12.2.). Izvršni program, potebne datoteke (obrasci, slike i ikone) te baza podataka potrebna za rad aplikacije instaliraju se na tvrdi disk pokretanjem programa Setup.exe, čime se pokreće wizard koji vodi kroz instalaciju. Korisnik treba odabrati direktorij u kojeg će se kopirati datoteke, ili ostaviti default postavku C:\Program Files\Handžiski\Odvjetnicki Ured. Računalo na kojem se želi pokrenuti aplikacija mora imati instaliran Microsoft SQL Server 2000 i .NET Framework. Baza podataka koju aplikacija koristi sastoji se od dvije datoteke: Ured_Data.MDF i Ured_Log.LDF. Instalacijski program kopira ove datoteke u direktorij na kojem je korisnik instalirao aplikaciju (default: C:\Program Files\Handžiski\Odvjetnicki Ured\Baza) i potrebno ih je dodati na Sql Server ovako: Pokrenuti konzolu Enterprise Manager (default: Start Menu\Programs\Microsoft SQL Server/ Enterprise Manager), i zatim odabrati Console Root->Microsoft SQL Server-> SQL Server Group->(Ime vašeg SQL servera)->Databases. Na ovoj razini pritiskom desnog gumba na mišu odabrati All tasks->Attach Database, na što će se pojaviti forma za izbor MDF datoteke koja sadrži bazu podataka. Izaberite direktorij gdje se ona nalazi (default: C:\Program Files\Handžiski\Odvjetnicki Ured\Baza) i zatim datoteku Ured_Data.MDF. Pritiskom gumba OK dodajete bazu na server. Instalacijski paket kreira shortcut za pokretanje aplikacije na desktopu i u

programskom meniju pod All Programs. Ikona programa je .

Page 17: Odvjetnicki Ured

4. Aplikacija 16

4.3. Izgled sučelja U ovoj točci čemo opisati zajedničke komponente aplikacije dok ćemo u nastavku opisati komponente specifične za svaki od četiri prozora. U izradi sučelja koristili smo se, osim vođeni vlastitim ukusom,u maloj mjeri demo-verzijom Ruby Monday® Law Office a prvenstveno sugestijama mentora i krajnjeg korisnika. Tokom dizajna sučelja javljale su se nove ideje o kako o izgledu tako i o funkcionalnosti aplikacije koje prvenstveno nisu bile predviđene. Na primjer, opcija uključivanja/isključivanja slikovnih pozadina itd.

6

1

2

4

3

5

Slika 4.1. Aplikacija u radu

Zajedničke komponente su:

1. Tekstualni izbornik (podrobno opisan pod 4.3.1.) 2. Gornji slikovni izbornik (podrobno opisan pod 4.3.2.) 3. Postranični slikovni izbornik – poseban za svaki od četiri prozora i podrobno

opisan kod opisa tih prozora) 4. Četiri glavna prozora (podrobno opisana pod 4.3.3.) 5. Status panel – lijeva strana ispisuje status veze s bazom a desna trenutno

vrijeme. 6. Pozadine – opcija prikaza slikovnih pozadina ili obične sive podloge (vidi

4.4.12.1.).

4.3.1. Tekstualni izbornik

Slika 4.2. Tekstualni izbornik

Page 18: Odvjetnicki Ured

4. Aplikacija 17

Tekstualni izbornik ima sljedeće dijelove: Novo Opcije u ovom meniju se ne odnose ne trenutno aktivni predmet (tome služi meni Predmet (vidi sliku 4.2.). Dakle prilikom izbora neke opcije u ovom meniju prvo se pojavljuje forma za izbor predmeta (vidi 4.4.10.) i nakon toga se nastavlja sa specifičnom aktivnošću. Npr. izborom Novo->Obaveza (CTRL+O) možemo definirati novu obavezu nakon što izaberemo predmet. Predmet Opcije u ovom meniju su vezane za trenutno aktivni predmet. Dakle izrada novih dokumenata ili putnih naloga se automatski povezuje s aktivnim predmetom. U ovom meniju dostupne su i dodatne opcije specifične za predmet, npr. brisanje predmeta, otvaranje profila stranke itd. Traži Pokreće tražilicu, opisanu u točci 4.4.1.. Izvješća Omogućava izbor izvješća kojeg želimo izraditi, kao što je opisano u 4.4.11.. Alati Sadržava opciju Postavke (vidi 4.4.12.), i opciju spajanja/odspajanja na bazu podatataka. Help Sadržava samo opciju About (F1), koja pokazuje prozor s podacima o imenu i autoru aplikacije.

4.3.2. Gornji slikovni izbornik

11 12 13 5 6 7 8 9 1 2 3 4 10

Slika 4.3. Gornji slikovni izbornik

Funkcije gumba u izborniku su sljedeće:

1. Traži – aktivira tražilicu (vidi 4.4.1.) 2. Nova stranka/predmet – zaprimanje nove stranke / otvaranje novog predmeta

(vidi 4.4.2.) 3. Novi dokument – pokreće stvaranje novog dokumenta (vidi 4.4.3.) 4. Novi vanjski dokument –zabilježba dolaska vanjskog dokumenta (vidi 4.4.4.) 5. Nova obaveza – kreiranje nove obaveze (vidi 4.4.5.) 6. Nova usluga – pokreće postupak dodavanja nove usluge (vidi 4.4.6.) 7. Novi račun – pokreće postupak izrade računa (vidi pod 4.4.7.) 8. Novi putni nalog – pokreće postupak izrade putnog naloga (vidi 4.4.8.) 9. Novi putni račun – pokreće postupak izrade putnog računa (vidi 4.4.9.) 10. Izbor predmeta – pokreće postupak izbora predmeta iz liste (vidi 4.4.10.) 11. Izrada izvješća – ispisuje račune izdane u zadanom vremenskom razdoblju

(vidi 4.4.11. ) 12. Postavke – promjena postavki aplikacije (vidi 4.4.12.) 13. Kraj – završava s radom. (vidi 4.4.13.)

Page 19: Odvjetnicki Ured

4. Aplikacija 18

4.3.3. Četiri glavna prozora

4.3.3.1. Zadnji dokumenti

Ovaj prozor služi za prikazivanje zadnje izrađenih dokumenata, tako da odvjetnik može nakon ponovnog otvaranja aplikacije nastaviti s prekinutim radom. U prozoru se prikazuje samo kategorija „Unutarnji“ dokumenti, dakle sve osim putnih naloga, putnih računa i računa.

1

2

Slika 4.4. Prozor „Zadnji dokumenti“

Ovaj prozor ima sljedeće funkcionalnosti:

1. Ažuriraj – upisuje u bazu promjene koje je korisnik unio u mrežu. 2. Obriši – briše dokument na kojeg se pokazuje iz baze. Traži potvrdu prije

izvršenja. 3. Otvori – otvara dokument na kojeg se pokazuje. 4. Osvježi – ponovno učitava podatke iz baze i prikazuje ih na ekran. 5. Kontekstni izbornik (Context Menu) sa opcijama

a. Otvori dokument – kao pod 3. b. Obriši dokument – kao pod 2. c. Otvori predmet – otvara predmet za kojeg je ovaj dokument vezan

6. Pokazuje podatke o dokumentu. 7. Podatkovna mreža (DataGrid) s ispisom dokumenata. 8. Opseg prikaza – koliko dokumenata se želi prikazati u mreži. Korisnik može voditi stanje svojih dokumenata sa ove dvije opcije: 9. Završen? – da li je dokument završen? 10. Poslan? – da li je dokument poslan na željenu adresu? (vrijedi: prazno polje = ne; kvačica = da.) Nakon promjena korisnik mora pritisnuti gumb pod (1) za unos promjena.

4.3.3.2. Predmet

Ovo je glavni prozor aplikacije jer se u njemu prikazuje trenutno aktivni predmet i omogućava navigacija kroz sve ostale predmete. U podprozorima (Tabs) korisnik može vidjeti sve objekte vezane za predmet (dokumente, račune, obaveze ...), prikazane u

3

4

5 6 8 7 9 10

Page 20: Odvjetnicki Ured

4. Aplikacija 19

vlastitim podatkovnim mrežama (DataGrid). Za svaka mrežu definirane su specifične operacije promjene /ažuriranja, kao i kontekstni izbornici.

1

2 7

3

8

4

9

5

Slika 4.5. Prozor „Predmet“

Ovaj prozor pruža sljedeće funkcionalnosti:

1. Ažuriraj – upisuje u bazu promjene koje je korisnik unio u kućicama/mrežama. 2. Obriši – briše predmet iz baze, kao i sve retke u svim relacijama vezanim za taj

predmet. Traži potvrdu prije izvršenja. 3. Ispiši – generira Word dokument u kojem su ispisani podaci o predmetu. 4. Stranka – otvara formu s podacima o stranci za koju je predmet vezan. Forma

daje mogućnost promjene podataka o stranci. 5. Osvježi – ponovno učitava podatke iz baze i prikazuje ih na ekran. Svaka

podatkovna mreža se obnavlja. 6. Zatvori/Otvori – ovisno o statusu predmeta, daje mogućnost njegovog

zatvaranja/otvaranja (slika na gumbu se također mijenja). Kod zatvaranja korisniku se daje opcija upisa datuma zatvaranja.

7. Kućice s podacima o predmetu. Sadržaj sivih kućica se ne može mijenjati. Kućica Vanjski broj se odnosi na broj pod kojim sud vodi ovaj slučaj.

8. Navigacijski gumbi za kretanje kroz predmete – |Prvi|Prethodni|Broj|Sljedeći|Zadnji| predmet.

9. Tabovi koji sadrže podatkovne mreže o svemu vezanom za predmet.

4.3.3.3. Rezultat pretrage

U ovom prozoru se ispisuju rezultati pretrage. Pretraživanje je detaljno opisano u točci 4.4.1.. Ovisno o tipu pretrage, (dokumenti, predmeti, stranke, itd.), mijenja se izgled mreže za prikaz rezultata. Dolje je prikazan prozor koji je rezultat pretraživanja putnih naloga i kontekstni izbornik je prilagođen tom rezultatu. U slučaju drugog objekta potrage, mijenja se kontekstni izbornik. Za svaku vrstu rezultata definirani su stupci koje korisnik može mijenjati.

6

10

Page 21: Odvjetnicki Ured

4. Aplikacija 20

1

2

Slika 4.6. Prozor „Rezultat pretrage“

Ovaj prozor pruža sljedeće funkcionalnosti:

1. Ažuriraj - upisuje u bazu promjene koje je korisnik unio u podatkovnoj mreži. 2. Otvori predmet – otvara predmet za kojeg je rezultat pretrage vezan. Ovaj

gumb se ne prikazuje kada to nema smisla (npr. kada se prikazuju entiteti). 3. Otvori dokument – otvara dokument. Ovaj gumb se ne prikazuje kada to nema

smisla (npr. kada se prikazuju stranke). 4. Kontekstni izbornik (Context Menu) – prilagođen ovisno tipu pretrage. U gore

prikazanom slučaju, daje mogućnosti vezane za putne naloge. 5. Podatkovna mreža – prikazuje rezultat pretrage. 6. Korisniku se pruža mogućnost promjene podataka ovisno o tipu potrage. U

gore prikazanom slučaju, mogu se mijenjati stupci Svrha i Br. Dana.

4.3.3.4. Obaveze

Ovo je prozor za prikaz vremenskih obaveza.

Slika 4.7. Prozor „Obaveze“

3

5 4

1

7 5 6

6

2

3

4

8 9

Page 22: Odvjetnicki Ured

4. Aplikacija 21

Ovaj prozor pruža sljedeće funkcionalnosti: 1. Ažuriraj – upisuje u bazu promjene koje je korisnik unio u podatkovnoj mreži. 2. Obriši – briše obavezu iz baze podataka. 3. Ispiši – generira Word dokument u kojem je ispisana tablica obaveza koje su

trenutno vidljive na ekranu. 4. Nova obaveza – otvara formu za dodavanje nove obaveze. 5. Odabir raspona prikaza (radioBox) – odabir gornje vremenske granice obaveza

koje se žele prikazati (donja granica je trenutno vrijeme). 6. Odabir raspona prikaza (dateTimePicker) – odabir gornje i donje vremenske

granice obaveza koje se žele prikazati. Donja granica je namještena na 1.1.2006. godine. Kod pritiska na radio-kontrolu (radiobox) Sve, gornja granica se postavlja na 31.12.2010. godine.

Korisnik može mijenjati sljedeće vrijednosti: 7. Gdje – mjesto obaveze 8. Opis – opis obaveze 9. Obavljeno? – da li je obaveza obavljena?

(vrijedi: prazno polje = ne; kvačica = da.) Nakon promjena korisnik mora pritisnuti gumb pod (1) za unos promjena.

4.4. Funkcionalnosti aplikacije

4.4.1. Tražilica Mogućnost pretraživanja je jedna od najbitnih i najčešće korišćenih i stoga je ugrađena. Korisnik je objasnio da se evidencija u uredu vodi po imenu stranke, pa je stoga to parametar tražilice, osim kod pretraga vremenskih obaveza, kada se daje mogućnost odabira vremenskog razdoblja (Od-Do). Traženje počinje izborom Meni ->

Traži (F3) ili pritiskom na gumb u slikovnom izborniku.

Korisnik može pretraživati dokumente, entitete, obaveze, predmete, stranke i pružene usluge (1). Ispod je dan primjer traženja dokumenta:

1

Slika 4.8. Prozor „Tražilica”

Odabiremo Dokument kao tip potrage (2) i zatim Putne naloge kao podtip (4). U polje Za stranku (3) upisujemo prezime (ili dio prezimena) za fizičke osobe, odnosno ime (ili dio imena) za pravne osobe. Pretraga je neosjetljiva na veličinu slova (case-insensitive) i može se izvesti za bilo koji dio imena (npr. samo prvo slovo).

2

3

U slučaju da se želi pretraživati za sve stranke, polje Za stranku treba ostaviti praznim.

4

Svaki tip potrage ima svoje podtipove, npr. kod pretraživanja stranaka, može se izabrati kriterij Fizičke|Pravne|Sve, kod predmeta Otvoreni|Zatvoreni|Svi itd.

Slika 4.9. Prozor „Tražilica”

Page 23: Odvjetnicki Ured

4. Aplikacija 22

Rezultat pretraživanja prikazuju se u jednom od 4 glavna prozora, „Rezultat pretrage” (vidi 4.3.3.3.):

Slika 4.10. Primjer rezultata pretrage

4.4.2. Otvaranje predmeta / Zaprimanje nove stranke Kada stranka zatraži zastupanje od stranke odvjetnika, on odlazi na Meni -> Novo ->

Predmet/Stranka (CTRL+S) ili pritiskom na gumb u glavnom meniju, pri čemu se otvara sljedeća forma:

Korisnik ovdje izabire tip predmeta kojeg želi otvoriti, npr. Krivični postupak, Ovršni postupak, Zemljišno-knjižni postupak itd. Nakon izbora tipa predmeta, otvara se mogućnost izbora stranke (slika 4.12.)

Slika 4.11. Prozor „Nova stranka” Sada korisnik može izabrati da li želi otvoriti predmet za već postojeću stranku, ili otvoriti predmet za novu stranku, pritiskom miša na odgovarajuću radio-kontrolu (1). Pritiskom gumba (2), može se birati iz liste postojećih stranaka. (slika 4.13.)

1 2

Slika 4.12. Prozor „Nova stranka”

Ako odvjetnik izabere otvaranje predmeta za već postojeću stranku, pritiskom na gumb (2) otvara se prozor za izbor stranke iz baze podataka. Ovdje odvjetnik iz liste (3) može odabrati postojeću stranku. Pružena je mogučnost filtriranja stranaka (4) po prezimenu (fizičke osobe) odnosno imenu (pravne osobe), što je pogodno u slučaju postojanja većeg broja stranaka. Filtriranje je neosjetljivo na veličinu slova (case insensitive). Ovisno o ček-kućicama (check-boxes), filtriraju se fizičke/pravne/sve osobe.

4

3

Slika 4.13. Prozor „Nova stranka”

Page 24: Odvjetnicki Ured

4. Aplikacija 23

U slučaju da je odabrano kreiranje nove stranke (5), korisnik treba odabrati tip stranke (fizička ili pravna osoba) (6);

5

6

Slika 4.14. Prozor „Nova stranka”

Nakon izbora tipa stranke, otvaraju se polja koja korisnik treba popuniti (crvenom bojom su označena obavezna polja). Kada se otvara predmet za već postojeću stranku, ova polja se automatski popunjavaju iz baze podataka: Polja za odabranu pravnu osobu se razlikuju u tome što nema polja za prezime, JMBG postaje MBR, i nema broja osobne isprave. Budući da se ne može očekivati da korisnik poznaje poštanske brojeve gradova, pritiskom na gumb (7) otvara mu se sljedeća pomoćna forma:

Slika 4.15. Prozor „Nova stranka”

Slika 4.16. Prozor „Izbor mjesta”

Ovdje se iz liste može odabrati mjesto (uz pomoć filtriranja (9), ili dodati novo (10).

Kada je završena popuna polja, korisnik nastavlja pritiskom na gumb Dalje. Ovdje sustav izvršava provjeru integriteta podataka. Npr. ako korisnik unese novu fizičku osobu istog imena ili prezimena kaja već postoji u bazi podataka, sustav ispisuje sljedeću poruku:

7

10

9

Page 25: Odvjetnicki Ured

4. Aplikacija 24

Slika 4.17. Traženje potvrde

Korisnik može nastaviti upis stranke u slučaju da se radi o drugoj osobi ili prekinuti i otvoriti predmet za već postojeću stranku. Ako korisnik pokuša otvoriti predmet za novu pravnu osobu čije ime već postoji, sustav ne dopušta nastavak. Sustav također provjerava unikatnost matičnog broja (za sve nove stranke) i broja osobne isprave (za fizičke osobe), i u slučaju povrede integriteta zaustavlja postupak i traži od korisnika da promijeni podatke. Nakon uspješnog upisa podataka za otvaranje novog predmeta, korisniku se pruža opcija za izradu upute.

4.4.3. Izrada novog dokumenta Izrada novog dokumenta počinje se izborom: Meni -> Predmet -> Vlastititi dokument (CTRL+F1) pri čemu se dokument izrađuje za trenutno aktivni predmet, ili izborom Meni -> Novo -> Dokument -> Vlastiti (CTRL+V) odnosno pritiskom

na gumb u glavnom meniju, nakon čega se od korisnika traži da izabere predmet za kojeg želi izraditi dokument. Nakon izbora predmeta, pojavljuje se sljedeća forma za izbor:

Pod (1) korisnik odabire tip dokumenta kojeg želi izraditi, a pod (2) entitet za kojeg ga izrađuje. Ako navedeni dokument/entitet nije ponuđen, može ga se dodati u bazu pritiskom na gumbe pod (3), čime se otvara prikladna forma za dodavanje entiteta / tipa dokumenta.

1

2

3

Slika 4.18. Prozor „Novi dokument” Korisnik odabire vrstu dokumenta, kao i entitet prema kojem želi poslati dokument. Pritiskom na gumb Dalje, otvara se Word aplikacija sa obrascem koji odgovara tipu dokumenta koji je odabran. Obrasci su izrađeni za sljedeće vrste dokumenata: žalba, tužba, obrana, zahtjev za dokumentima. Za ostale dokumente otvara se default prazni obrazac sa zaglavljem, brojem dokumenta i datumom izrade.

4.4.4. Zaprimanje vanjskog dokumenta Kada odvjetnik zaprimi dokument od vanjskog entiteta, može evidentirati njegov dolazak na sljedeći način: Meni -> Novo -> Predmet -> Vanjski dokument (CTRL+F2) čime se pretpostavlja da je dokument vezan za trenutno tekući predmet, ili izborom Meni -> Novo -> Dokument -> Vanjski (CTRL+A) odnosno pritiskom

Page 26: Odvjetnicki Ured

4. Aplikacija 25

na gumb , čime se korisniku daje da odredi predmet za kojeg želi evidentirati vanjski dokument. Forma za dodavanje izgleda ovako:

Odabirom pod (1) korisnik određuje tip dokumenta i entitet od kojeg je došao. Pod (2) i (3) određuje se dan nastanka kao i dan zaprimanja. Pod (4) unosi se autor dokumenta. Bitno je pratiti lokaciju dokumenta kako bi se izbjegle dugotrajne potrage, pa se to unosi pod (5). Također korisnik može označiti status obrade dokumenta klikom na ček-kućicu (7). Pod (6) može se unijeti sažetak značenja dokumenta.

1

2

3

4

5

6

7

Slika 4.19. Prozor „Novi vanjski dokument”

4.4.5. Dodavanje nove obaveze Dodavanje nove vremenske obaveze izvodi se odabirom Meni -> Novo -> Predmet -> Obaveza (CTRL+F5) za dodavanje obaveze vezane za aktivni predmet, ili

izborom Meni -> Novo -> Obaveza (CTRL+O) odnosno pritiskom na gumb za odabir drugog predmeta. Prikazuje se sljedeća forma:

1

U kontroli (1) korisnik izabire datum obaveze (.NET kalendarska kontrola se može pomicati naprijed/natrag po mjesecima). Upisom u kućice pod (2) definiraju se sat i minute. Pod (3) navodi se mjesto i pod (4) kratki opis obaveze.

3 4

2

Slika 4.20. Forma “Nova obaveza”

Nakon popunjavanja podataka korisnik pritiskom na gumb Dalje kreira obavezu. U DataGrid-u Obaveze vidimo novo kreiranu obavezu:

Slika 4.21. Prikaz kreirane obaveze u podatkovnoj mreži

Page 27: Odvjetnicki Ured

4. Aplikacija 26

4.4.6. Dodavanje nove usluge Kada odvjetnik želi zabilježiti uslugu koju je pružio stranci, on to može učiniti na sljedeći način: Meni -> Predmet -> Novo -> Usluga (CTRL+F6) za tekući predmet, ili izborom Meni -> Novo -> Usluga (CTRL+U), (odnosno pritiskom na

gumb u izborniku pomagala), prilikom čega se korisnik može odlučiti za neki drugi predmet. Prije nego se opiše način rada s formom za dodavanje usluga, potrebno je pobliže objasniti koncept odvjetničke usluge. Pod terminom usluga podrazumijeva se rad odvjetnika definiran Tarifnim modelom Hrvatske Odvjetničke Komore. Usluga je određena svojim tarifnim brojem (Tbr), točkom i stavkom, te tekstom koji je opisuje. Usluga se u bazu dodaje prema identifikatoru usluge Svaka usluga u Tarifnom modelu spada u jednu od sljedećih kategorija:

a) Usluga koja donosi određen broj bodova. b) Usluga koja je vezana za neku drugu uslugu. Ove usluge nose određeni

postotak bodova iz neke druge usluge. c) Usluga koja nosi određenu kunsku vrijednost.

Sve usluge u modelu prikazane su u listi (1), po formatu [Tbr/Točka/Stavka/Kratki opis], radi što lakšeg pregledavanja. Tekst-kućice u okviru (2) su dinamički vezane za retke u listi (vidi 4.5.1.3.1.) i u njima se prikazuju podaci vezanu za tu uslugu, među ostalim broj bodova koje nosi i puni opis. Pritiskom na gumb (3) dodaje se usluga u bazu podataka. Pritiskom na gumb (4) spremaju se promjene koje su eventualno napravljene u tekst-kućicama Bodovi i Opis u okviru (2). Za usluge pod a), dovoljno je odabirom iz (1) i pritiskom na (3) obaviti postupak dodavanja usluge. Međutim za usluge iz b), korisniku se u listi (6) otvaraju vezane usluge za odabranu uslugu iz (1) i korisnik može te vezane usluge odabirati isto kao u listi (1). Na odabir se u tekst-kućici % u okviru (5) prikazuje postotak pod kojim je usluga vezana. U kućici (7) pokazuje se broj bodova kao rezultat umnoška nominalnog broja bodova i postotka. Za usluge pod c), korisnik treba upisati vrijednost u kunama koje on zahtijeva za pruženu uslugu. Ova kunska vrijednost će se (prema definiranoj kunskoj protuvrijednosti boda) pretvoriti u bodove i tako upisati u bazu podataka. Na kraju, usluge se mogu količinski kvantificirati u broju sati, i to se ostvaruje upisom u kućicu (8). U status-panelu (9) se prikazuje vrijednost predmeta za kojeg se usluge dodaju, kao i broj dodanih usluga u ovoj seansi. Pritiskom na gumb (10) korisnik može poništiti rad u seansi. Pritiskom na gumb (11) postupak se završava. Svakim pritiskom na gumb (3) u bazu podataka dodaje se identifikator usluge (Usluga_ID), broj bodova te broj sati. Kasnije se iz ovih parametara može izračunati kunska protuvrijednost usluge, pa nije potrebno spremati iznos u ovom trenutku.

Page 28: Odvjetnicki Ured

4. Aplikacija 27

1 6

2

9

4 3

5 10

9

11

7

Slika 4.22. Prozor „Nova usluga” 8

Prilikom dodavanja usluga pritiskom na gumb (3) korisnik može vidjeti upravo dodanu uslugu u podatkovnoj mreži „Usluge“ koja se nalazi u glavnom prozoru „Predmet“ (slika 4.5.). Budući da kontrolom (kao što je podatkovna mreža) može manipulirati samo dretva koja ju je kreirala (a to je dretva glavnog programa), ovo se moralo izvesti tako da se formi za dodavanje usluga proslijedi delegat s imenom metode koja popunjava podatkovnu mrežu usluge (ta metoda je definirana u glavnom programu).

//Glavni program. //Deklaracija delegata koji će pokazivati na metodu koja za //parametar prima integer vrijednost public delegate void PopulateDataGridUslugaCallback( int nPredmet_ID); //... //Kreiranje instance forme za dodavanje usluge //prosljeđuje se delegat s imenom metode koja popunjava //podatkovnu mrežu s uslugama iz baze, vezano za broj predmeta FormUsluga_Dodaj frmUslDod = new FormUsluga_Dodaj( nPredmet_ID, new PopulateDataGridUslugaCallback( Populate_dgPredmet_Usluge) ); DialogResult diaRes = frmUslDod.ShowDialog();

//FormUsluga_Dodaj //Deklaracija delegata u kojeg će biti preslikan //delegat koji je došao kao ulazni parametar private PopulateDataGridUslugaCallback callback; //konstruktor razreda public FormUsluga_Dodaj( int nPredmet_ID, PopulateDataGridUslugaCallback callbackDelegate) { //... // callback = callbackDelegate; }

Page 29: Odvjetnicki Ured

4. Aplikacija 28

Svaki put kada se pritisne gumb (3) poziva se metoda Osvjezi() koja pak poziva metodu iz glavnog programa na koju pokazuje callback delegat:

public void Osvjezi() { if (callback != null) callback(nPredmet_ID); }

4.4.7. Izrada novog računa Za dodavanje novog računa treba odabrati: Meni -> Predmet -> Novo -> Račun (CTRL+F7), za izradu računa za trenutno aktivni predmet, ili izborom Meni -> Novo

-> Račun (CTRL+R) (odnosno pritisnuti gumb u gornjem slikovnom izborniku) za izbor predmeta za kojeg se želi izraditi račun. Nakon što se odredi predmet za koji se račun izrađuje, otvara se forma koja je popunjena iz baze podataka s pruženim uslugama za taj predmet:

(1) Ovdje su ispisane pružene usluge za dani predmet. Mogu se odabrati usluge koje se žele uključiti u račun. Pritiskom na gumb (4) odabiru se sve usluge. Korisnik ovdje može dodati novu uslugu pritiskom na gumb (5).

4 5

1

(2) Ovdje su dani podaci za odabranu pruženu uslugu, Tbr.(tarifni broj), Točka, broj bodova, opis, broj sati i iznos u kunama. 2

(3) Ovdje su ispisani ukupna suma (bez PDV-a) i podaci o žiro-računu.

3

Slika 4.23. Forma za izradu računa

U ovome trenutku korisnik može dodati uslugu pritiskom gumba Dodaj uslugu, čime se otvara izbornik objašnjen u točci 4.4.6. Nakon odabiranja usluga koje se želi uključiti u račun, pritiskom gumba Dalje poziva se ugrađena procedura koja u bazu upisuje relevantne podatke o računu, kao iznos, žiro račun na kojem se traži uplata itd. Ta ista procedura vraća parametre Broj_Racuna, koja predstavlja redni broj računa kojeg kreiramo, Datoteka, što je ime datoteke pod kojim će se nalog spremiti, Dokument_ID, što je broj dokumenta pod kojim se ovaj nalog vodi (svaki dokument ima jedinstveni broj). Nakon toga pokreće se generiranje Word dokumenta temeljenog na obrascu Racun.dot, koji je pokazan na slici 4.42. Dodatne informacije o izradu računa korištenjem Word objekta dane su u točci 4.5.3.2.

Page 30: Odvjetnicki Ured

4. Aplikacija 29

4.4.8. Izrada novog putnog naloga Aplikacija ima opciju izrade putnog naloga izborom Meni -> Predmet ->Novo -> Putni nalog (CTRL+F3) za izradu putnog naloga za aktivni predmet, ili Meni ->

Novo -> Putni nalog (CTRL+P), odnosno pritiskom na gumb u gornjem slikovnom izborniku, pri čemu se može odabrati neki drugi predmet. Forma za putni nalog je sljedeća: Korisnik treba postaviti sljedeće parametre:

1. Datum putovanja, pri čemu se iz kalendarske kontrole izabire datum

2. U mjesto, gdje mu se pruža izbor poštanskog broja iz liste mjesta na pritisak gumba (1) (vidi sliku

1 3. Broj dana, gdje treba upisati cijeli

broj dana 4. Osobni automobil, padajuća lista

gdje se može izabrati vrsta prijevoznog sredstva

5. Na teret 6. Svrha

Slika 4.24. Forma za izradu putnog naloga

Na pritisak gumba Dalje, poziva se ugrađena procedura s kojom se u bazu podataka unosi novi zapis s podacima iz forme. Ta procedura u program vraća tri parametra, Broj_Naloga, što je redni broj naloga koji se upravo kreira, Datoteka, što je ime datoteke pod kojim će se nalog spremiti i Dokument_ID, što je broj dokumenta pod kojim se ovaj nalog vodi. (svaki dokument ima jedinstveni broj). Nakon rada s bazom, aktivira se obrazac PutniNalog.dot iz direktorija obrazaca, koji sadrži prije definirana polja (bookmarks), u koje se upisuju podaci s forme, kao i parametri koji su vraćeni iz baze. Neke vrijednosti poput zaglavlja, imena i matičnog broja putnika dohvaćaju se iz relacije tbl_Korisnik, koja sadrži podatke o trenutnom korisniku aplikacije i mogu se promijeniti kako je opisano u točci 4.4.12.3. Konačno, ovako izgleda generirani dokument:

Page 31: Odvjetnicki Ured

4. Aplikacija 30

Slika 4.25. Izrađeni putni nalog Vidimo da neke vrijednosti odgovaraju onima iz forme, dok su druge (broj dokumenta, broj naloga, ime putnika, zaglavlje) dohvaćeni iz baze. Na kraju, datum generira sam program.

4.4.9. Izrada novog putnog računa Za postojeći putni nalog korisnik može izraditi i putni račun. Izgled i stavke putnog računa dogovorene su u skladu s potrebama korisnika i nisu ma razini složenosti poput putnih računa koji se koriste u drugim poslovnim organizacijama. Izrada putnog računa se započinje izborom Meni -> Predmet -> Novo -> Putni račun (CTRL+F4), pri čemu je sljedeći korak odabir iz liste putnih naloga napravljenih za trenutno aktivni predmet, ili izborom Meni -> Novo -> Putni račun

(CTRL+N), odnosno pritiskom na gumb u gornjem slikovnom izborniku, pri čemu se je sljedeći korak odabir iz liste svih dosad napravljenih putnih naloga. Za izradu putnog računa zadužena je forma prikazana na slici 4.26.

Page 32: Odvjetnicki Ured

4. Aplikacija 31

1

Pod (1) navedeni su podaci s već izrađenog putnog naloga, poput mjesta i dana putovanja. Pod (2) navodi se ukupan trošak putovanja (ovakva obrada troškova dogovorena je s korisnikom). Pod (3) može se unijeti kratka primjedba o izvršenom putovanju.

2

3

Slika 4.26. Forma za izradu putnog računa Nakon ispunjavanja forme i pritiska na gumb Dalje, pomoću ugrađene procedure u bazu podataka se upisuju podaci o računu. Ti isti podaci se zatim ubacuju u obrazac PutniRacun.dot. Podaci o putnom nalogu pročitani su iz zapisa u bazi koji odgovara broju putnog naloga za kojeg se odabralo izraditi račun. Iz slika 4.25. i 4.27. vidi se kako putni račun odgovara putnom nalogu.

Slika 4.27. Izrađeni putni račun

Page 33: Odvjetnicki Ured

4. Aplikacija 32

4.4.10. Izbor predmeta Korisnik može direktno skočiti na predmet odabirom Meni -> Predmet -> Promijeni

(F7), odnosno pritiskom gumba u slikovnom izborniku. Otvara se sljedeća forma:

1

2

Slika 4.28. Izbor predmeta

U podatkovnoj mreži (1) daje se ispis trenutnih predmeta koje korisnik može odabrati tako da mišem klikne na njihov redak. Pomoću kontrole (2) može se mijenjati prikaz predmeta otvoreni|zatvoreni|svi. Na pritisak gumba Dalje, vrijednost aktivnog predmeta (cGlobal.nAktivniPredmet) se postavlja na novu vrijednost koja je netom odabrana.

4.4.11. Izrada izvješća Korisnik može u formatiranoj Word datoteci ispisati automatski generirana izvješća o svom radu. Moguć je:

1. ispis obaveza u vremenskom razdoblju, Meni -> Izvješća -> Obaveze (SHIFT+F1, +F2, +F3)

2. ispis stranaka (fizičkih, pravnih, oba), Meni -> Izvješća -> Stranke (SHIFT+F4, +F5, +F6)

3. ispis predmeta (otvoreni, zatvoreni, oba), Meni -> Izvješća -> Predmeti (SHIFT+F7, +F8, +F9)

4. ispis izdanih računa u vremenskom razdoblju, Meni -> Izvješća ->

Računi (SHIFT+F10) ili pritiskom na gumb u gornjem slikovnom izborniku.

Za izradu se koriste prije napravljeni obrasci (Predmet.dot, Obaveze.dot, Stranke.dot i Racuni.dot) koji se nalaze u direktoriju obrazaca. Način rada s obrascima detaljnije je opisan je u točkama 4.5.3.1. i 4.5.3.2. Ispod je dan primjer izgleda izvješća za predmete, stranke, i za račune u danom vremenskom razdoblju.

Page 34: Odvjetnicki Ured

4. Aplikacija 33

1. Za sve predmete

Slika 4.29. Izvješće o predmetima

Zaglavlje, podaci u tablici i datum se dinamički generiraju dok je ostali tekst statički sadržaj obrasca (obaveze.dot).

2. Za sve stranke

Slika 4.30. Izvješće o strankama

3. Za račune u vremenskom razdoblju Korisniku se prvo daje da odabere izbor razdoblja iz forme:

Slika 4.31. Forma za izbor razdoblja

i pritiskom na gumb Dalje generira se sljedeći ispis:

Page 35: Odvjetnicki Ured

4. Aplikacija 34

Slika 4.32. Izvješće o računima

Kreiranje izvješća se ne evidentira u bazi podataka, budući da se radi o automatski generiranom sadržaju. Imena pod kojima se spremaju izvješća su također automatski generirana i tokom vremena dolazi do povećanja njihovog broja na tvrdom disku. Korisniku se stoga daje mogućnost da iste obriše, izborom Meni -> Izvješća -> Očisti (SHIFT+F12), čime se brišu sva izvješća s tvrdog diska. Još jedna opcija pod menijem Izvješća je ispis dokumenta koji sadrži Tarifni model Meni -> Izvješća -> Tarifni model (SHIFT+F11)

4.4.12. Postavke Opciju Postavke korisnik odabire izborom Meni -> Alati -> Postavke (F2), iz

tekstualnog izbornika, ili pritiskom na gumb iz gornjeg slikovnog izbornika. Korisniku su na izbor sljedeće postavke koje može podešavati:

4.4.12.1. Općenite postavke

Korisnik može uključiti/isključiti sljedeće opcije: (slika 4.33.) 1. Pokaži zadnje dokumente – ako je ova opcija uključena, nakon

pokretanja aplikacije prvo se pokazuje prozor sa zadnje izrađenim dokumentima.

2. Pokaži poruke – ako je ova opcija uključena, korisniku se pokazuju poruke tipa, „Dodali ste obavezu”, „Dodali ste novu stranku” i slično.

3. Pokaži iznimke – ako je ova opcija uključena, korisniku se pokazuju razumljive poruke o greškama koje su nastale u radu aplikacije. Ovu opciju se NE preporučuje isključivati.

4. Pokaži splash screen – ako je ova opcija uključena, prije pokazivanja glavne forme, korisniku se pokazuje mali prozor s ponudom opcija. Detaljniji opis u točci 4.4.14.1.

5. Pokaži pozadine – ako je ova opcija uključena, aktiviraju se slikovne pozadine u formama. Ova opcija poboljšava izgled aplikacije ali može usporiti njen rad.

6. Pokaži podsjetnik – ako je ova opcija uključena, pri pokretanju se aktivira prozor s tekućim neizvršenim vremenskim uslugama. Podsjetnik je detaljnije opisan u točci 4.4.14.2.

7. Vrijednost boda – određuje kunsku protuvrijednost boda prema Tarifnom modelu Hrvatske odvjetničke komore.

8. PDV – određuje iznos Poreza na dodanu vrijednost za odvjetničke usluge.

Page 36: Odvjetnicki Ured

4. Aplikacija 35

Slika 4.33. Prozor „Općenito”

4.4.12.2. Postavke direktorija

Aplikacija koristi razne datoteke za svoj rad, kao što su Word obrasci, dokumenti, slike i ikone, i ove datoteke su radi preglednosti smještene u vlastite direktorije. Ako korisnik želi premjestiti lokaciju nekog direktorija on to može izborom u prozoru Direktoriji: (slika 4.34.)

Slika 4.34. Prozor „Direktoriji”

Važno: Ako se korisnik odluči na promjenu vrijednosti direktorija npr. slika, mora premjestiti relevantne datoteke u nove direktorije, u protivnom aplikacija neće raditi. Radni direktorij se odnosi na direktorij u kojem se aplikacija pokreće. Zadnji radni direktorij je spremljen u bazi podataka i prilikom pokretanja aplikacije vrši se provjera da li je trenutni direktorij iz kojeg je aplikacija pokrenuta jednak onomu iz baze podataka, odnosno zadnjem radnom direktoriju aplikacije. Ukoliko nije, vrijednost radnog direktorija se postavlja na novu vrijednost. Ovaj postupak omogućava uspješno pokretanje aplikacije prilikom prijenosa na drugo računalo i u drugi direktorij.

4.4.12.3. Postavke odvjetnika

U zaglavlju dokumenata, prilikom izrade putnih naloga, kod izrade računa, itd. nužno je ispisati podatke o sadašnjem korisniku aplikacije. Korisnik može ove podatke podesiti u prozoru Odvjetnik: (slika 4.35.)

Page 37: Odvjetnicki Ured

4. Aplikacija 36

Slika 4.35. Prozor „Odvjetnik”

4.4.13. Završetak rada Kada je korisnik spreman završiti svoj rad, on to može učiniti izborom Meni -> Novo

-> Kraj (CTRL+K), iz tekstualnog izbornika, ili pritiskom na gumb iz gornjeg slikovnog izbornika. Ova akcija prvo u bazu podataka upisuje vrijednost trenutno aktivnog predmeta, kako bi se taj predmet automatski pokrenuo kod sljedećeg pokretanja aplikacije, kao i vrijednost radnog direktorija, zbog razloga opisanog u točci 4.4.12.2. Nakon ovih operacija, program prekida vezu s bazom podataka, otpušta zauzete resurse objekata za komunikaciju s bazom podataka, (DataSet i DataAdapter) i prozor se zatvara.

4.4.14. Dodaci Osim glavnog prozora aplikacije, postoje još i sljedeći dodaci.

4.4.14.1. Splash screen

Jedna od opcija je uključivanje splash screen-a, odnosno malog prozora koji se pojavljuje prije pokretanje aplikacije:

Slika 4.36. Splash screen

Izborom jedne od opcija korisnik izravno počinje s radom.

4.4.14.2. Podsjetnik Jedna od najbitnih stvari u radu bilo koje organizacije je poštovanje zakazanih sastanaka. U poslu odvjetnika kašnjenje na npr. sudsko ročište ima posebnu težinu. Stoga je u aplikacij dodan modul Podsjetnik:

Page 38: Odvjetnicki Ured

4. Aplikacija 37

Slika 4.37. Podsjetnik

Modul Podsjetnik sjedi izvan aplikacije u malom prozoru, ispisujući neispunjene obaveze u svojem prozoru. Omogućeno je mijenjanje podataka u retcima prozora, npr. poništavanje kućice Obavljeno?, čime se ta obaveza više neće pokazivati. Ovaj modul egzistira u posebnoj dretvi, koja svaku minutu iz baze podataka dohvaća obaveze i ispisuje ih na sučelje. Korisnik može iz menija Interval odabrati do kojeg datuma želi vidjeti obaveze (npr. ako se izabere interval 1 sat, ispisivaće se obaveze do 1 sata od trenutnog vremena, ili ako se izabere 7 dana, ispisivaće se obaveze do 7 dana od trenutnog vremena, itd.). Pritiskom na meni Nova, može se dodati nova obaveza. Glavna karakteristika ovog modula je da provjerava da li su obaveze prešle zadano kritično vrijeme prije isteka obaveze. Npr. ako je obaveza zakazana u 17:36, trenutno vrijeme je 17:00, a korisnik je postavio Kritično vrijeme na 30 minuta, u 17:06 korisnika će se obavijestiti o približavanju roka tako da se ta obaveza (i sve druge koje zadovoljavaju kriterij) pocrveni.

Slika 4.38. Podsjetnik s kritičnom obavezom

Kritična obaveza će nastaviti crvenjeti dok trenutno vrijeme ne pređe vrijeme zakazane obaveze ili korisnik ne klikne polje Obavljeno?. Korisnik može u meniju Kritično vrijeme odrediti koliko prije isteka obaveze želi aktivirati obaviješćivanje, npr. 30 minuta, 60 minuta ili 2 sata. 4.5. Opis programa Broj linija koda u ovoj aplikaciji dosegnuo je skoro 20,000, od toga oko 50% otpada na definiciju kontrola (gumbi, panela, formi, izbornika) jer za svaku kontrolu treba navesti položaj, veličinu, itd. Onih ostalih 50% destiliranog koda kojeg sam napisao nema smisla pobliže opisivati, nego ću samo objasniti neke bitne koncepte korištene u izgradnji.

4.5.1. Rad s bazom podataka Za bazu podataka odabran je Microsoft® SQL Server 2000 [3] , jedna od najpopularnijih baza za podršku klijent-aplikacija. Budući da koristimo Windows Server

Page 39: Odvjetnicki Ured

4. Aplikacija 38

2003 operativni sustav, Microsoft Visual Studio .NET razvojno okruženje i Microsoft Office 2003 programski paket, bili smo naklonjeni izabrati i Microsoft bazu podataka. Jedna od mogućih baza bila je i Microsoft Access, koja bi možda s obzirom na broj relacija i broj zapisa bila pogodna za naše potrebe. Međutim ova baza, između ostalog, ne podržava ugrađene procedure (stored procedures), što je presudno utjecalo na izbor, jer nismo htjeli pisati SQL kod unutar C# koda. Microsoft SQL Server koristi T-SQL (Transact-SQL Programming Language), jezik koji je inačica SQL-a, jezika s kojim smo se upoznali tokom studija. T-SQL je jezik 3. generacije i ne podržava koncepte objektno-orijentiranog programiranja, poput C#-a. Za komunikaciju s bazom koristi se ADO.NET objektni model, koji je komponenta Microsoft .NET Framework-a za pristup podacima. Glavni razred u ovom modelu je DataSet, koji nam služi za pohranjivanje podskupa baze podataka, i DataAdapter, koji izravno komunicira s bazom. Pobliže su objašnjeni u točci 4.5.1.2.1.

4.5.1.1. Povezivanje s bazom podataka

Za vezu s bazom podataka [4] zadužen je SqlConnection objekt. Budući da se sva komunikacija s bazom odvija preko jedne veze, u razredu cGlobal definiran je objekt SqlConnection con, koji je dostupan svim objektima:

public static SqlConnection con; //Tekst veze string sConnString = String.Format( "Integrated Security=SSPI;"+ "Persist Security Info=False;"+

"User ID=dbo;"+ "Initial Catalog=Ured4;"+ "Data Source=localhost;"+ "Packet Size=4096;"); cGlobal.con = new SqlConnection(sConnString); cGlobal.con.Open();

Prekidanje veze se ostvaruje s naredbom:

cGlobal.con.Close();

4.5.1.2. Rad s podacima iz baze

Za dohvat i izmjenu podataka u bazi podataka koristimo se ugrađenim procedurama (stored procedure). Ovo je prikladnije od pisanja T-SQL koda u kod-editoru C# jezika jer se greška u kodu lakše otkrije (Sql Server 2000 okruženje ne dopušta kreiranje procedure koja nije leksički/sintaksno korektna). Druga stvar je povećana preglednost C# koda, jer tako u njemu sada nema dugih T-SQL naredbi. Treće, ugrađene procedure se ne prevode (compiling) svaki put prilikom poziva kao što je to slučaj s T-SQL kodom, nego su već prevedene jednom prilikom kreiranja, što ubrzava rad. Četvrto, ugrađene procedure uvode strukturiranost u rad s bazom jer istu proceduru možemo promatrati kao modul s ulazom i izlazom, čiji kod ne moramo pamtiti jer nam je bitno samo ponašanje te procedure. Na primjer, imamo slučaj da jedna da jedna procedura poziva drugu, ili da se jedna procedura poziva s više mjesta u C# kodu. Sve ovo znači da je rad s procedurama puno lakši za programera od direktnog rada s T-SQL kodom. Na nekim mjestima gdje je kod trivijalan, odlučili smo se za pisanje T-SQL koda iz tijela programa, ali riječ je o malom broju iznimaka. Na kraju, ugrađene procedure neposredno pružaju fleksibilnost u kodiranju i to na sljedeći način: ako procedura prima ulazne parametre (ili ima izlazne parametre), i

Page 40: Odvjetnicki Ured

4. Aplikacija 39

ako se ti parametri koriste u više procedura, moguće ih je definirati u razredu cSqlParameter, tako da se kod poziva procedura uzme jedan od prije definiranih parametara. Ovo će biti objašnjeno u nastavku. Ovo je primjer korištenja ugrađene procedure u radu:

//Deklaracija Sql naredbe, pridjeljivanje imena ugrađene //procedure, na vezi cGlobal.con SqlCommand com = new SqlCommand("

uspPredmet_Usluga_Select", cGlobal.con);

//Obavezno. Naznačiti da je naredba tipa ugrađene procedure com.CommandType = CommandType.StoredProcedure; //Fleksibilno. Razred cSqlParameter smo kreirali kako bi u //jednoj liniji na Sql naredbu dodali Sql parametar, //s vrijednošću nPredmet_ID cSqlParameter.iPredmet_ID(nPredmet_ID, ref com);

U razredu cSqlParameter:

//... private static SqlParameter iParam(

string paramName, object paramValue, SqlDbType dbType, ref SqlCommand com)

{ //ove linije se ponavljaju za svaki parametar

SqlParameter param = com.Parameters.Add( paramName, dbType);

param.Direction = ParameterDirection.Input; param.Value = paramValue; return param;

} //... public static SqlParameter iPredmet_ID(

object paramValue, ref SqlCommand com) {

return iParam("@Predmet_ID", paramValue, SqlDbType.Int, ref com);

} Nakon oblikovanja Sql naredbe, treba ju predati bazi podataka i dočekati rezultat njenog izvođenja na poslužitelju. To smo činili na dva načina:

4.5.1.2.1. Razredi SqlDataAdapter i DataSet.

Razred SqlDataAdapter posreduje između baze podataka i razreda DataSet, koji nam služi kao spremište podataka. SqlDataAdapter može čitati podatke iz baze u DataSet, ili ih pisati iz objekta DataSet u bazu. Na primjer:

//Deklaracija Data adaptera, pridjeljivanje Sql naredbe SqlDataAdapter dad = new SqlDataAdapter(com); //Deklaracija Data seta DataSet ds = new DataSet(); //Punjenje Data seta iz baze prema Sql naredbi com, //posredstvom Data adaptera dad.Fill(ds, "Ime_Tablice"); //...

Page 41: Odvjetnicki Ured

4. Aplikacija 40

Ako želimo podatke iz DataSet-a preko DataAdapter-a upisati u bazu, postupak je sljedeći:

//Tekst Update naredbe string sUpdate = “...”; //Definirati Update naredbu SqlDataAdapter-a dad.UpdateCommand = new SqlCommand(sUpdate, cGlobal.con); //Definirati SqlParametre naredbe SqlParameter prm = dad.UpdateCommand.Parameters.Add(...); //Od kuda parameter vuče vrijednost prm.SourceColumn = "Ime_stupca_u_Data_Set-u"; //Uzmi trenutnu vrijednost stupca DataSet-a prm.SourceVersion = DataRowVersion.Current; //... //Reci SqlDataAdapter-u gdje da traži podatke dad.Update(ds.Tables["Ime_Tablice"]);

Nakon dohvata podataka iz baze, možemo ih izlistavati upotrebom foreach naredbe:

//Prolaz kroz svaki redak DataSet-a foreach (DataRow dr in ds.Tables["Ime_Tablice"].Rows) { //operacije s retcima }

Međutim ono što se češće koristi je povezivanje podataka (DataBinding) između neke kontrole i DataSet-a. Kontola može biti tekst-kućica (TextBox), lista (ListBox), ili u ovoj aplikaciji najčešće podatkovna-mreža (DataGrid). Povezivanje se izvodi ovako:

//txtKucica ce sadrzavati vrijednost stupca Ime_stupca //iz tablice ds.Tables[“Ime_Tablice”]. txtKucica.DataBindings.Add("

Text”, ds.Tables["Ime_Tablice"], "Ime_stupca"); //Ili za DataGrid imena dg dg.DataSource = ds.Tables["Ime_Tablice"]; //U DataGridu dg će biti ispisan sadržaj tablice //ds.Tables[“Ime_Tablice”]

4.5.1.2.2. Razred SqlDataReader

Razred SqlDataReader služi za čitanje redaka iz SqlServer baze na sljedeći način (pretpostavka da je com definiran SqlCommand objekt):

//Definirati SqlDataReader kao rezultat Sql naredbe SqlDataReader dar = com.ExecuteReader(); //Prolaz kroz podatke, dok ih ima while (dar.Read()) { sw.WriteLine("{0}\t{1}\t{2}\t{3}", dar[1], dar[2],

dar[3], dar[4]); } //Obavezno zatvoriti SqlDataReader jer je nemoguće koristiti //vezu dok je on otvoren dar.Close();

Page 42: Odvjetnicki Ured

4. Aplikacija 41

Razlika u ova dva pristupa je da SqlDataReader objekti mogu samo čitati retke iz baze i ne mogu se koristiti za umetanje/ažuriranje/brisanje. Brzina dohvata redaka je prednost ovog načina. Objekti razreda DataSet omogućuju pohranjivanje kopije podataka iz baze, s kojom se kopijom može raditi i kad smo od baze odspojeni. DataSet objekt omogućava (kao što je gore prikazano) promjenu podataka u bazi. Također, jedan DataSet objekt može sadržavati nekoliko relacija iz baze. Naredbom:

//dad – SqlDataAdapter objekt //ds – DataSet objekt dad.Fill(ds, "Ime_Tablice");

u objekt ds sprema se relacija pod imenom “Ime_Tablice”. Kada kasnije želimo dohvatiti tu relaciju to činimo navodeći joj ime:

ds.Tables["Ime_Tablice"]

4.5.1.2.3. Razred CurrencyManager

Ovaj razred koristimo za rukovanje s vezanim objektima (Binding objects). U našoj aplikaciji koristimo objekt ovog razreda za navigaciju kroz kolekciju predmeta (vidi sliku 4.5, znak 8). Iz baze podataka čitamo podatke vezane za predmet (broj predmeta, vrijednost, itd.) i te podatke spremamo u tablicu:

SqlCommand com = new SqlCommand(" uspPredmetSelectSve", cGlobal.con); com.CommandType = CommandType.StoredProcedure; dadPredmet = new SqlDataAdapter(com); try { dadPredmet.Fill(dsAll, "Predmet_Data"); }

Sada za taj izvor podataka specificiramo CurrencyManager objekt:

cmPredmet = (CurrencyManager)this.BindingContext[dsAll.Tables["Predmet_Data"]];

Koristeći Position svojstvo CurrencyManager-a, možemo se kretati kroz kolekciju predmeta, npr. za kretanje naprijed:

//Ako nismo na kraju if (cmPredmet.Position < cmPredmet.Count - 1) { cmPredmet.Position++; //sljedeći }

4.5.1.3. Prikaz podataka iz baze u aplikaciji

Podatke koje dohvaćamo iz baze nužno je prikazati korisniku u razumljivom i pristupačnom obliku. U tu svrhu koristili smo sljedeće System.Windows.Forms kontrole:

4.5.1.3.1. Tekst-kućice (TextBox)

Tekst-kućice se obično koriste za unos podataka od stranke korisnika, međutim u njima se mogu i ispisivati informacije. U ovom slučaju je prvenstveno riječ o

Page 43: Odvjetnicki Ured

4. Aplikacija 42

jednostavnim, kratkim podacima, npr. broju ili riječi. Tekst-kućice možemo popuniti, npr. izravnim pridjeljivanjem:

//txtKucica ce sadrzavati vrijednost stupca Ime_stupca txtKucica.Text = dr["Ime_Stupca"].ToString()); //gdje je dr[“Ime_Tablice”] vrijednost stupca u retku dr

Puno češća i korisnija uporaba ove kontrole je s pomoću podatkovnog-povezivanja (DataBinding). Riječ je o tome da neko svojstvo tekst-kučice (npr. Text) povežemo s nekim izvorom podataka (npr. DataSet), tako da se prilikom listanja po tom izvoru podataka, vrijednost Text svojstva tekst-kućice mijenja ovisno o trenutnom retku DataSet-a. Npr:

//Podatkovno-povezivanje: txtPredmet_ID.DataBindings.Add( "Text", //svojstvo koje povezujemo ds.Tables["Predmet_Data"], //izvor podataka "Predmet_ID"); //za što se vežemo //Text svojstvo tekst-kućice je sada vezano s vrijednošću //”Predmet_ID” iz DataSet-a. Kako se korisnik kreće kroz //DataSet, tako se mijenja tekst u tekst-kućici. U ovom //slučaju tekst-kućica sadrži broj koji predstavlja broj //predmeta

Treba pripaziti da se ista kontrola ne smije dvaput povezati na izvor podataka. Povezivanje se može poništiti metodom Clear().

4.5.1.3.2. Padajuća lista (ComboBox)

Ovo je vrlo pogodna kontrola koja se koristi kada treba izabrati jednu od n vrijednosti, npr:

Slika 4.39. Dinamičko popunjavanje padajuće liste

Poanta je da su vrijednosti u padajućoj listi dohvaćene iz baze tijekom izvođenja programa, a na statički upisane kod kreiranja kontrole. Evo kako je ovo ostvareno:

SqlCommand com = new SqlCommand(" SELECT Ime, Prijevozno_Sredstvo_ID FROM

tbl_Prijevozno_Sredstvo", cGlobal.con);

Page 44: Odvjetnicki Ured

4. Aplikacija 43

//tbl_Prijevozno_Sredstvo je relacija u bazi, s primarnim //ključem Prijevozno_Sredstvo_ID i atributom Ime SqlDatAdapter dad = new SqlDataAdapter(com); DataSet ds = new DataSet(); dad.Fill(ds, "tbl_Prijevozno_Sredstvo"); //Vežemo pad. listu s izvorom podataka, opet to je DataSet cboPrijevozno_Sredstvo.DataSource = ds.Tables["tbl_Prijevozno_Sredstvo"]; //Što korisnik vidi cboPrijevozno_Sredstvo.DisplayMember = "Ime"; //Vrijednost s kojima aplikacija radi; primarni ključ relac. cboPrijevozno_Sredstvo.ValueMember="Prijevozno_Sredstvo_ID";

U pozadini, padajuća lista radi s numeričkom vrijednošću Prijevozno_Sredstvo_ID, međutim korisnik izabire po imenu; izbor će se naravno zapamtiti po numeričkoj vrijednosti, ali to ostaje skriveno od korisnika.

4.5.1.3.3. Liste (ListBox) i Ček-liste (CheckListBox)

Liste pružaju puno bolju preglednost i povećanu funkcionalnost od kontrola koje smo dosad razmatrali. Pogledajmo primjer korištenja lista kod izrade računa:

Slika 4.40. Forma za izradu računa

Ovdje je riječ o ček-listi, gdje korisnik može izabrati od ponuđenih vrijednosti, kao što je objašnjeno u točci 4.4.7. Riječ je dinamički generiranim vrijednostima i povezivanju liste s DataSet-om. Evo kako je to realizirano:

//ds je DataSet object u kojem su retci računa //Povezivanje na izvor podataka clb.DataSource = ds.Tables[0]; //Korisnik vidi kratki sažetak usluge clb.DisplayMember = "Synopsis"; //S ovime radi sustav clb.ValueMember = "Usluga_ID";

Page 45: Odvjetnicki Ured

4. Aplikacija 44

Kada se želimo kretati kroz kolekciju čekiranih redaka, to možemo korištenjem svojstva clb.CheckedIndices.

4.5.1.3.4. Podatkovna-mreža (DataGrid)

Slika 4.41. Primjer podatkovne mreže (DataGrid)

Ovo je korisnički-najpogodnija kontrola za prikaz podataka i pruža široku funkcionalnost. U ovoj aplikaciji je zbog toga često korištena. Kao i kod prije objašnjenih kontrola, poanta je povezivanje podatkovne-tablice s izvorom podataka, međutim kod ove kontrole možemo izabrati broj i izgled stupaca koje prikazujemo; budući da mreža svoje podatke dohvaća iz tablice podataka, imamo opciju definirati stil te tablice (boju, broj stupaca, širinu stupaca, itd.), tako da korisniku dajemo izgled koji mu je pristupačniji. Budući da se u aplikaciji koristi nekoliko stilova (npr. za Obaveze, za Predmet, za Fizičke osobe, itd.) kreiran je razred cDataGridStilovi u kojem su ovi stilovi definirani. Stil tablice iz koje mreža dohvaća podatke definira se instancom razreda DataGridTableStyle. Ovaj object sadrži kolekciju objekata razreda GridColumnStyles, koji definiraju izgled i ponašanje pojedinog stupca u tablici. Za potrebe aplikacije, iz razreda DataGridTableStyle nasljedili smo onoliko razreda koliko nam je stilova bilo potrebno:

//Ovaj razred će definirati stil za prikaz putnih naloga public class DataGridTableStyle_Putni_Nalog :

DataGridTableStyle { ... } Isto smo učinili i sa stilovima stupaca. Umjesto da za svaku mrežu definiramo stilsku-tablicu i zatim definiramo stilske-stupce, na jednom mjestu definiramo stilski-stupac koji se često koristi u ispisu (npr. DataGridColumnAdresa za prikaz adrese) i onda ga recikliramo koliko nam je potrebno:

//Nasljeđujemo od .NET razreda DataGridTextBoxColumn public class DataGridColumnAdresa : DataGridTextBoxColumn { public DataGridColumnAdresa(ref DataSet ds) { //od kuda se dohvaća vrijednost koje prikazujemo this.MappingName = ds.Tables[0].Columns["Adresa"].ToString(); //parametri širine, ime zaglavlja, itd. this.Width=150; this.HeaderText = "Adresa"; this.NullText = string.Empty; } }

Bitno je naglasiti da će se na ekran ispisati samo oni stupci koji su dodani stilskoj-tablici. Iako baza vraća npr. 10 stupaca po retku, mi možemo regulirati broj i položaj tih stupaca u ispisu prema tome kako ih dodajemo stilskoj-tablici:

Page 46: Odvjetnicki Ured

4. Aplikacija 45

public class DataGridTableStyle_Obaveza : DataGridTableStyle { public DataGridTableStyle_Obaveza(ref DataSet ds,

bool ShowStranka_Ime) { this.MappingName = ds.Tables[0].ToString(); if (ShowStranka_Ime == true)

this.GridColumnStyles.Add(new DataGridColumnStranka_Ime(ref ds)); //Dodajemo instance razreda stilskih-stupaca //nenavedeni stupci u DataSet-u se ne pokazuju this.GridColumnStyles.Add( new DataGridColumn_Obaveza_Kada(ref ds)); this.GridColumnStyles.Add( new DataGridColumn_Obaveza_Gdje(ref ds)); this.GridColumnStyles.Add( new DataGridColumn_Obaveza_Opis(ref ds)); this.GridColumnStyles.Add( new DataGridColumn_Obaveza_Obavljeno(ref ds)); } }

Jedan problem do kojeg je došlo u radu s ovom kontrolom je kako dohvatiti red u tablici koja služi kao izvor podataka za podatkovnu mrežu, vezano za redak u mreži na kojoj se trenutno pokazuje. Npr. ako je korisnik na mrežu ispisao putne naloge, izvor podataka za mrežu je tablica imena kao ds.Tables[“Putni_Nalozi”]. Korisnik zatim mišem odabere jedan redak iz mreže i recimo želi, pomoću gumba sa strane ili kontekst-izbornika, otvoriti taj putni nalog u Word-u. Nekako moramo naći vezu između retka u mreži koji je odabran i retka u DataSet-u u kojem tražimo informaciju (imeno Dokument_ID) s kojom možemo otvoriti document. Istina je da mreža sadrži svojstvo dg.CurrentRowIndex koja daje redni broj retka na kojeg se pokazuje. Ako tu vrijednost sad “ukopčamo” u DataSet sa:

ds.Tables["Putni_Nalozi"].Rows[dg.CurrentRowIndex]["Dokument_ID"]; ovo će vratiti korektan redak iz DataSet-a sve dok korisnik ne odluči sortirati mrežu pritiskom na zaglavlje nekog stupca, kada se zavisnost gubi i vraćaju se krivi retci. Ako je korisnik odlučio brisati retke, biti će obrisani krivi zapisi. Nažalost .NET ne pruža brz način da se dohvati pravi redak iz DataSet-a, pa smo stoga u razredu cHelp definirali ovakvu statičku metodu [5]:

public static DataRow CurrentRow(DataGrid dg) { CurrencyManager xCM = (CurrencyManager) dg.BindingContext[dg.DataSource, dg.DataMember]; DataRowView xDRV = (DataRowView)xCM.Current; return xDRV.Row; }

Page 47: Odvjetnicki Ured

4. Aplikacija 46

Metoda je deklarirana kao statička da bi bila dostupna bez instanciranja objekta. Ono što vraća je točan redak iz izvora podataka vezano na redak na kojeg se pokazuje u mreži. Sada možemo pisati:

DataRow xRow = cHelp.CurrentRow(dg); int nDokument_ID = Convert.ToInt32(xRow["Dokument_ID"]); Otvori_Dokument(nDokument_ID);

Možda se čini da bi ovo isto dobili korištenjem svojstva Position CurrencyManager-a:

CurrencyManager cm = (CurrencyManager) this.BindingContext[ds.Tables["Putni_Nalozi"]]; int nDokument_ID = Convert.ToInt32( ds.Tables["Putni_Nalozi"].Rows[cm.Position]["Dokument_ID"]); Otvori_Dokument(nDokument_ID);

Ali ovo isto propada nakon sortiranja mreže, jer indeksi mreže više ne odgovaraju indeksima izvora podataka.

4.5.2. Windows aplikacija Budući da se radi o Windows aplikaciji koristimo se objektima razreda System.Windows.Forms.Form, odnosno formama. Visual Studio automatski generira kod za definiranje kontrola koje je programer postavio na formu (to su npr. tekst-kućice, labele i gumbi), dok programer piše kod za opis ponašanja tih kontrola. Na primjer, kada korisnik pritisne gumb, potrebno je napisati rukovatelja događajem (Event Handler) koji će obaviti izvjesnu operaciju. To može biti poziv ugrađene procedure ili otvaranje nove forme. Dodavanjem nove forme u projekt kreira se tijelo razreda te forme. Glavnina koda u programu napisana je upravo u razredu forme, npr. kod za dodavanje nove stranke napisan je u razredu FormNovaStranka. Međutim pojavila se potreba za kreiranjem razreda npr. za obradu parametara koji se prosljeđuju u ugrađene procedure. Budući da se kod svake deklaracije Sql parametra mora navesti tip podatka koji parametar koristi (a ovi su uglavnom integer ili nvarchar), zatim da li je riječ o ulaznom ili izlaznom parametru, napravili smo razred cSqlParameter sa statičkim metodama koje vraćaju izrađene parametre. (vidi prva dva prozora s kodom u točci 4.5.1.2.) Također smo kreirali razred cDataGridStilovi radi oblikovanja izgleda podatkovnih mreža ili razred cPozadine koji postavlja pozadine u sve forme. Razred cGlobal sadrži globalne vrijednosti aplikacije, npr. trenutno aktivni predmet u varijabli nAktivni_Predmet ili SqlConnection objekt kojeg koriste svi ostali objekti. Jedan korisni razred je cPoruka koji ispisuje poruke korisniku korištenjem razreda FormPoruka. Ovo omogućava ispis poruka na hrvatskom, pogotovo kada se korisniku nudi Da/Ne izbor kao na slici 4.17. Isti razred ispisuje i iznimke. Razred cPostavke brine se za dohvat postavki iz baze prilkom pokretanja aplikacije i za njihovu pohranu kada ih korisnik promijeni i potvrdi u prozoru Postavke.

4.5.3. Word objekt Za izradu dokumenata, u dosadašnjem sustavu i u ovom informacijskom sustavu koristi se Microsoft® Word, jedan od danas najčešće korištenih paketa. Većina korisnika koristi Word samo kao tekstualni editor, ali Word ima bogati i snažan objekt-model koji se može programirati za specifične svrhe. U tu svrhu potrebno je na

Page 48: Odvjetnicki Ured

4. Aplikacija 47

računalo instalirati Microsoft Visual Studio Tools za Microsoft Office System, koji omogućava programeru da komunicira s Word-modelom koristeći se s jednim od .NET jezika, kao u našoj aplikaciji s jezikom Microsoft Visual C#®. Na vrhu hijerarhije razreda Word-modela [6] imamo razrede Application i Document. Objekt Application predstavlja cijelu Word aplikaciju i roditelj je svih drugih objekata. Njegovi članovi se odnose na cijeli Word, i s njegovim svojstvima i metodama kontrolira se Word okruženje. Za korištenje Word objekta moramo deklarirati:

using Word = Microsoft.Office.Interop.Word; using Office = Microsoft.Office.Core;

4.5.3.1. Obrasci (Templates) i Žigovi (Bookmarks)

Kod izrade dokumenata, putnih naloga, putnih računa, računa te izvješća koriste se prije definirani MS Word obrasci (templates) [7]. Obrasci se koriste kad se želi olakšati izrada dokumenata koji slijede neku utvrđenu formu. Na primjer, putni nalog uvijek ima čvrsto određeno formu (mjesto za svrhu putovanja, za prijevozno sredstvo, itd.), pa je pogodno one elemente koji se ponavljaju uvrstiti u obrazac; kada se želi izraditi novi putni nalog, poziva se taj obrazac i na osnovu njega se kreira novi dokument. Svaki obrazac sadrži statički, fiksni tekst, i dinamički, promjenljivi tekst. Statički tekst se upisuje pri izradi obrasca, dok se dinamički generira kod izrade novog dokumenta. Za kreiranje dinamičkog teksta koristi se Word kontrola žig (bookmark). (slika 4.42).

Statički tekst

Dinamički tekst (bookmark)

Slika 4.42. Obrazac za izradu računa

Page 49: Odvjetnicki Ured

4. Aplikacija 48

Kao što je vidljivo iz slike, statički tekst služi samo kao opis i nema nikakvo određeno značenje po sebi, dakle može se reciklirati; ono što dokumentu daje smisao je sadržaj koji će popuniti definirane žigove. Svaki žig ima svoje ime s kojim ga se referencira. Npr. ime žiga na kojeg se pokazuje na slici 4.42. je Stranka_Ime. Popunjavanje žiga sadržajem događa se iz programa, na sljedeći način:

//prvo definirati žig koji referencira bookmark u obrascu po //imenu object bkmStranka_Ime = "Stranka_Ime"; //zatim u okvir tog žiga upisati vrijednost varijable //sStranka_Ime, koja sadrži ime stranke doc.Bookmarks.get_Item(ref bkmStranka_Ime).Range.Text = sStranka_Ime;

Nakon otvaranja dokumenta, program će potražiti žig zadanog imena i popuniti ga odgovarajućim sadržajem. Ako navedeni žig ne postoji, sustav će prijaviti grešku.

4.5.3.2. Primjer izrade dokumenta Za primjer izrade dokumenta koristeći Word objekt iz .NET okruženja pokazat ćemo izradu računa. Koristi se obrazac prikazan na slici 4.42. Prilikom izrade računa koristi se forma prikazana na slici 4.23. Nakon odabira usluga koje se želi koristiti u izradi računa i pritiska gumba Dalje, u bazu podataka se dodaje zapis o novom računu sa iznosom izračunatim iz odabranih usluga. Zatim se poziva metoda Create() u razredu FormNoviRacun. Prvo se obavljaju “kućanski poslovi” oko Word objekta:

//Deklaracija objekta Application i Document Word._Application app; Word._Document doc; //Instanciranje, aktiviranje aplikacije app = new Word.Application(); app.Visible = true; app.Activate(); //Instanciranje doc objekta na novi dokument temeljen na //obrascu templateName (ovdje je to racun.dot) doc = app.Documents.Add(ref templateName, ref missingValue, ref missingValue, ref missingValue);

Zatim se kreće u obradu žigova (bookmarks). Obrazac racun.dot (slika 4.42.) sadrži nekoliko žigova, od kojih ćemo razmotriti žig koji će sadržavati tablice sa stavkama računa:

//Definiranje žiga za ispis tablice object bkmTablica = "Tablica"; Word.Range wrdRng = doc.Bookmarks.get_Item(ref bkmTablica).Range; //Deklariramo objekt Table Word.Table oTable; //Dimenzije tablice: //broj redaka = broj čekiranih redaka u listi usluga + 1 za //zaglavlje s imenima stupaca //broj stupaca = 2, jedan za tekst usluge, drugi za kunsku

Page 50: Odvjetnicki Ured

4. Aplikacija 49

//vrijednost usluge. oTable = doc.Tables.Add(wrdRng, clb.CheckedItems.Count + 1, 2, ref missingValue, ref missingValue);

Nakon što postavimo još neke postavke (npr. širina tablice), krećemo u popunjavanje tablice: //Za svaku čekiranu uslugu foreach (int i in clb.CheckedIndices) { //oblikujemo tekst iz izvora podataka koji sadrži usluge string sOpis = ds.Tables[0].Rows[i]["Opis"].ToString(); string sTBR = ds.Tables[0].Rows[i]["Tarifni_Broj"].ToString(); //... //sTekst će se ispisati u prvom stupcu sTekst = String.Format("{0}. {1}", nStavka.ToString(), sOpis); sTekst += Environment.NewLine; sTekst += String.Format("Po Tbr. {0}., Točka {1}.", sTBR, sTocka); sTekst += Environment.NewLine; sTekst += String.Format("Bodovi: {0}, Broj sati: {1}", sBodovi, sBroj_Sati); decimal Iznos = decimal.Round(Convert.ToDecimal(ds.Tables[0].Rows[i]["Iznos"]), 2); //sIznos će se ispisati u drugom stupcu string sIznos = String.Format(provider, "{0}", Iznos) + " Kn."; //Dodajemo u prvi stupac tekst usluge oTable.Cell(++nStavka, 1).Range.Text = sTekst; //Dodajemo u drugi stupac iznos usluge oTable.Cell(nStavka, 2).Range.Text = sIznos; //... } Nakon što smo obradili sve žigove, novom dokumentu dajemo ime i spremamo ga s:

doc.SaveAs(ref fileName, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue);

Objekt filename je vrijednost izlaznog parametra ugrađene procedure za ubacivanje računa u bazu podataka, procedure koja se izvodi prije izgradnje dokumenta. Ta procedura formira ime nove datoteke jednostavno uzimajući redni broj novog dokumenta i dodajući prefiks “doc” i sufiks “.doc”. Izgled izrađenog dokumenta je dan na sljedećoj slici. Žigovi (I) su ostavljeni vidljivima kako bi se vidio dinamički sadržaj i usporediti sa slikom 4.42.

Page 51: Odvjetnicki Ured

4. Aplikacija 50

Slika 4.43. Izrađeni račun iz aplikacije

Page 52: Odvjetnicki Ured

4. Aplikacija 51

Ovo je primjer stvarnog računa koji je dosad bio u uporabi:

Slika 4.44. Račun koji je trenutno u uporabi

Page 53: Odvjetnicki Ured

5. Zaključak 52

5. Zaključak U ovom diplomskom radu prošli smo kroz korake sistem-analize i izgradnje informacijskog sustava za automatizaciju rada odvjetnika u hrvatskom pravnom sustavu. Korišteni su Visual C#.NET programski jezik i Microsoft SQL Server 2000 baza podataka. Aplikacija se oslanja na paket Microsoft Word za izradu dokumenata. Rezultat projekta je aplikacija koja automatizira neke aspekte rada odvjetnika, kao što su izrada dokumenata, praćenje obaveza, pretraživanje, dodavanje usluga i izrada računa. Najveća dobit je mogućnost brzog nalaženja već izrađenih dokumenata, što je najgori problem u sadašnjem radu. Nedostatak aplikacije je to što nije namijenjena za više-korisnički rad, što bi se moglo omogućiti u idućoj verziji. Također izgled sučelja nije posve profesionalan jer se radi o standard kontrolama iz Visual Studio Forms Designer-a. Nadam se da će ovaj program (ili njegova inačica) naći primjenu u stvarnom svijetu odvjetničkog ureda.

Page 54: Odvjetnicki Ured

6. Literatura 53

6. Literatura [1] Projektiranje informacijskih sustava, Skripta, Doc.dr.sc. Krešimir Fertalj, Prof.dr.sc.

Damir Kalpić, Fakultet Elektrotehnike i Računarstva [2] Analysis of Information Organizations and Systems http://www.sims.berkeley.edu/courses/is208/s01/Decomposition.doc [3] Microsoft® SQL Server 2000 Weekend Crash Course™, Published by Hungry

Minds, Inc., 909 Third Avenue, New York, NY 10022 [4] Mastering C# Database Programming by Jason Price Sybex © 2003 [5] http://www.codeproject.com/cs/miscctrl/DBGridCurrentRow.asp [6] Understanding the Word Object Model from a .NET Developer's Perspective http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_vsto2003_ta/html/WordObject.asp [7] Microsoft Office System 2003 Edition, Microsoft Press, 2004

Page 55: Odvjetnicki Ured

Sadržaj i

........................................................................................................ 1 1. Uvod.............................................................................. 2 2. Prikupljanje informacija

.............................................................................................. 2 2.1. Intervju........................................................................... 4 2.2. Prikupljeni dokumenti

.............................................................. 5 2.3. Postojeće stanje informatizacije3. Analiza sustava.......................................................................................... 6

............................................................................. 6 3.1. Problemsko područje..................................................................... 6 3.2. Problemi sadašnjeg stanja

........................................................................ 6 3.2.1. Rad s dokumentima................................................................. 7 3.2.2. Praćenje stanja predmeta

............................................................................ 7 3.2.3. Praćenje obaveza

............................................................................ 7 3.2.4. Izdavanje računa

............................................................................ 7 3.3. Ciljevi informatizacije..................................................................................... 7 3.3.1. Dokumenti

........................................................................... 8 3.3.2. Vođenje predmeta........................................................................................ 8 3.3.3. Obaveze

.................................................................................. 8 3.3.4. Pretraživanje......................................................................................... 8 3.3.5. Izvješća

.......................................................... 8 3.4. Sklopovska i programska podrška..................................... 9 3.5. Model Funkcija (Dijagram dekompozicije funkcija)

...................................................................................... 9 3.6. Model procesa....................................................................... 10 3.6.1. Dijagram konteksta

........................................................................ 10 3.6.2. Pregledni dijagram.......................................... 11 3.6.3. Razrađeni procesi preglednog dijagrama

................................... 11 3.6.3.1. Razrada procesa P1 (Zaprimanje stranke)...................................... 12 3.6.3.2. Razrada procesa P2 (Izdavanje računa)

.................................................................................. 12 3.7. Model podataka................................................... 12 3.7.1. Model entiteti-veze (EV Dijagram)

............................................................................ 13 3.7.2. Relacijski model................................................................................................ 15 4. Aplikacija

.......................................................................... 15 4.1. Tehnička specifikacija........................................................................... 15 4.2. Instalacija aplikacije

..................................................................................... 16 4.3. Izgled sučelja........................................................................ 16 4.3.1. Tekstualni izbornik

................................................................... 17 4.3.2. Gornji slikovni izbornik..................................................................... 18 4.3.3. Četiri glavna prozora.................................................................... 18 4.3.3.1. Zadnji dokumenti

................................................................................. 18 4.3.3.2. Predmet..................................................................... 19 4.3.3.3. Rezultat pretrage

................................................................................. 20 4.3.3.4. Obaveze.................................................................... 21 4.4. Funkcionalnosti aplikacije

....................................................................................... 21 4.4.1. Tražilica................................ 22 4.4.2. Otvaranje predmeta / Zaprimanje nove stranke

............................................................... 24 4.4.3. Izrada novog dokumenta4.4.4. Zaprimanje vanjskog dokumenta..................................................... 24

............................................................... 25 4.4.5. Dodavanje nove obaveze.................................................................. 26 4.4.6. Dodavanje nove usluge

...................................................................... 28 4.4.7. Izrada novog računa........................................................... 29 4.4.8. Izrada novog putnog naloga........................................................... 30 4.4.9. Izrada novog putnog računa

........................................................................... 32 4.4.10. Izbor predmeta............................................................................ 32 4.4.11. Izrada izvješća

.................................................................................... 34 4.4.12. Postavke................................................................. 34 4.4.12.1. Općenite postavke

............................................................... 35 4.4.12.2. Postavke direktorija

............................................................... 35 4.4.12.3. Postavke odvjetnika........................................................................... 36 4.4.13. Završetak rada

....................................................................................... 36 4.4.14. Dodaci

Page 56: Odvjetnicki Ured

Sadržaj ii

4.4.14.1. Splash screen........................................................................ 36 4.4.14.2. Podsjetnik............................................................................. 36

4.5. Opis programa ................................................................................... 37 4.5.1. Rad s bazom podataka................................................................... 37

4.5.1.1. Povezivanje s bazom podataka .................................................. 38 4.5.1.2. Rad s podacima iz baze ............................................................ 38 4.5.1.3. Prikaz podataka iz baze u aplikaciji ............................................ 41

4.5.2. Windows aplikacija ........................................................................ 46 4.5.3. Word objekt ................................................................................. 46

4.5.3.1. Obrasci (Templates) i Žigovi (Bookmarks)................................... 47 4.5.3.2. Primjer izrade dokumenta......................................................... 48

5. Zaključak................................................................................................ 52 6. Literatura ............................................................................................... 53