podrska finansijskom knjigovodstvu

82
UNIVERZITET U NOVOM SADU FAKULTET TEHNIČKIH NAUKA NOVI SAD Odsek: Računarstvo i automatika / Smer: Računarske nauke i informatika DIPLOMSKI MASTER RAD Kandidat: Goran Panić Broj indeksa: E 9286 Tema rada: Razvoj aplikacije za podršku finansijskom knjigovodstvu Mentor rada: dr Dragan Mihajlović Novi Sad 2008.

Upload: goran-panic

Post on 27-Apr-2015

1.290 views

Category:

Documents


7 download

DESCRIPTION

Master Rad - Goran Panić

TRANSCRIPT

Page 1: Podrska finansijskom knjigovodstvu

UNIVERZITET U NOVOM SADU

FAKULTET TEHNIČKIH NAUKA

NOVI SAD

Odsek: Računarstvo i automatika / Smer: Računarske nauke i

informatika

DIPLOMSKI – MASTER RAD

Kandidat: Goran Panić

Broj indeksa: E 9286

Tema rada: Razvoj aplikacije za podršku finansijskom

knjigovodstvu

Mentor rada: dr Dragan Mihajlović

Novi Sad 2008.

Page 2: Podrska finansijskom knjigovodstvu

2

Page 3: Podrska finansijskom knjigovodstvu

3

ZADATAK DIPLOMSKOG RADA

Upoznati se sa finansijskim knjigovodstvom. Realizovati desktop aplikaciju za podršku finansijskom knjigovodstvu sa sledećim osnovnim funkcijama:

ažuriranje podataka o preduzeću i zaposlenima,

ažuriranje kontnih okvira preduzeća,

otvaranje naloga, dodavanje finansijskih promenama na nalog i generisanje promena

u glavnoj knjizi,

generisanje periodičnih i godišnjih izveštaja o poslovanju.

Aplikacija treba da funkcioniše u skladu sa pravilima finansijskog knjigovodstva.

Kao sistem za upravljanje bazom podataka koristiti Microsoft SQL Server 2005

Express, a za izradu modela baze podataka koristiti alat PowerDesigner. Implementaciju

aplikacije uraditi u programskom jeziku C# uz korišćenje alata Microsoft Visual Studio 2005 C# Express.

Page 4: Podrska finansijskom knjigovodstvu

4

Page 5: Podrska finansijskom knjigovodstvu

5

SADRŽAJ 1. UVOD .............................................................................................................................. 7 2. SPECIFIKACIJA .............................................................................................................. 9 2.1 Ciljevi programa ............................................................................................................. 9 2.2 Osnovne funkcionalnosti programa ................................................................................. 9

2.2.1 Ažuriranje podataka teritorijalne organizacije ........................................................... 9 2.2.2 Ažuriranje podataka organizacije preduzeća ............................................................. 9 2.2.3 Kontni okvir ........................................................................................................... 10 2.2.4 Poslovna godina ..................................................................................................... 10 2.2.4 Nalog ..................................................................................................................... 10 2.2.5 Vrste naloga za knjiženje........................................................................................ 11 2.2.6 Knjiženje i storno naloga ........................................................................................ 11 2.2.7 Finansijske promene............................................................................................... 11 2.2.8 Glavna knjiga ......................................................................................................... 11 2.2.9 Generisanje finansijskih izveštaja ........................................................................... 11 2.2.10 Administracija naloga........................................................................................... 15 2.2.11 Pomoć korisniku .................................................................................................. 16 2.2.12 Instalacija, reinstalacija i brisanje programa .......................................................... 16

2.3 Baza podataka ............................................................................................................... 16 2.3.1 Model objekti – veze – obeležja ............................................................................. 16 2.3.2 Relacioni model podataka ...................................................................................... 17

2.4 Sybase Power Designer ................................................................................................. 18 2.5 Programski jezik C# ...................................................................................................... 18 2.6 Microsoft SQL Server ................................................................................................... 18 2.7 Microsoft Visual Studio ................................................................................................ 19 2.8 NET Framework ........................................................................................................... 20 3. IMPLEMENTACIJA ...................................................................................................... 21 3.1 Dijagram toka podataka ................................................................................................. 21 3.2 Izrada konceptualnog modela ........................................................................................ 21 3.3 Generisani fizički model................................................................................................ 27 3.4 Logika sistema .............................................................................................................. 32 3.5 Problemi prilikom implementacije ................................................................................. 32 3.6 Instalacija ...................................................................................................................... 32 3.7 Implementirane funksionalnosti ..................................................................................... 33

3.7.1 Prijavljivanje na sistem .......................................................................................... 33 3.7.2 Izgled aplikacije ..................................................................................................... 34 3.7.3 Meni ...................................................................................................................... 35 3.7.4 Standardni prozor ................................................................................................... 39 3.7.5 Generisanje izveštaja .............................................................................................. 40 3.4.6 Poruka korisniku .................................................................................................... 43 3.7.7 Izrada sigurnosne kopije ......................................................................................... 43

3.8 Testiranje aplikacije ...................................................................................................... 45 4. ZAKLJUČAK ................................................................................................................. 47 5. PRILOG ......................................................................................................................... 49 5.1 Store procedure ............................................................................................................. 49 5.2 Trigeri ........................................................................................................................... 59 5.3 Primeri generisanih izveštaja ......................................................................................... 66 5.4 Uputstvo za instalaciju .................................................................................................. 73

5.4.1 Serverska strana ..................................................................................................... 73 5.4.2 Klientska strana...................................................................................................... 74

6. LITERATURA ............................................................................................................... 75 7. BIOGRAFIJA ................................................................................................................. 77

Page 6: Podrska finansijskom knjigovodstvu

6

Page 7: Podrska finansijskom knjigovodstvu

7

1. UVOD

Pre pojave računara ljudi su se bavili knjigovodstvom. Potom je došla era računara, u

kojoj se mnoge stvari automatizuju. Automatska obrada podataka pružila je mogućnost

paralelnog i trenutnog pristupa podacima, čak i sa udaljenih lokacija i time omogućila

efikasnije ažuriranje podataka. Pogodnosti automatske obrade podataka dovode do pojave aplikacija za pružanje podrške knjigovodstvu. Savremeno knjigovodstvo se uglavnom oslanja

na korišćenje knjigovodstvenih aplikacija, u svrsi alata koji automatizuju delove

knjigovodstvenih operacija. Cilj diplomskog rada je da se realizuje desktop aplikacija za podršku finansijskom

knjigovodstvu, korišćenjem C# programskog jezika i Microsoft SQL Server sistema za

upravljanje bazom podataka.

Rad je organizovan u sedam poglavlja:

U prvom poglavlju je dat kratak pregled onoga šta se želelo postići u ovom radu.

U drugom poglavlju je dat detaljan opis specifikacije zadatka, a u nastavku su

izložene metode i alati potrebni za realizaciju istog.

U trećem poglavlju je dat kratak opis implementacije datog programa i njegove

funkcionalnosti.

U četvrtom poglavlju je dat zaključak o realizovanom projektu i preporuke za

njegovo proširivanje.

U petom poglavlju su dati, kao prilog, saveti u vezi kreiranja dobrog korisničkog

interfejsa za poslovne aplikacije.

U šestom poglavlju je dat spisak korišćene literature.

U sedmom poglavlju su dati podaci o autoru programa.

Page 8: Podrska finansijskom knjigovodstvu

8

Page 9: Podrska finansijskom knjigovodstvu

9

2. SPECIFIKACIJA

Ovo poglavlje je posvećeno kraćem opisu finansijskog knjigovodstva i onoga što bi

trebalo da bude implementirano u aplikaciji. Biće izložene metode, tehnologije i alati pomoću

kojih je zadatak potrebno realizovati.

2.1 Ciljevi programa

Cilj programa je da obezbedi efikasno voĎenje poslovnih knjiga, sastavljanje i

podnošenje periodičnih ili godišnjih obračuna i izveštaja o poslovanju.

Knjigovodstveni metod koji će ovaj softver podržati je metod dvojnog

knjigovodstva. Dvojno knjigovodstvo se odnosi na dvostruki aspekt neke finansijske

transakcije. Nekoliko karakteristika dvojnog knjigovodstva:

1. Troškovi su evidentirani kad su napravljeni, a ne kad su plaćeni. Slično tome,

prihodi su evidentirani kad su zaraĎeni, a ne kad su primljeni 2. Priznavanjem finansijskih obaveza onda kada se dogode, a ne kad su plaćene ili

primljene, prevazilazi se vremenski raskorak i dobija stvarnija slika o finansijskoj

poziciji

3. Ovaj sistem se može baviti svim vrstama transakcija

2.2 Osnovne funkcionalnosti programa

Osnovne funkcionalnosti koje program treba da podrži:

Ažuriranje podataka teritorijalne organizacije

Ažuriranje podataka organizacije preduzeća

Kontni okvir

Poslovna godina

Nalog

Vrste naloga za knjiženje

Knjiženje i storno naloga

Finansijske promene

Glavna knjiga

Generisanje finansijskih izveštaja

Administracija naloga

Pomoć korisniku

Instalacija, reinstalacija i brisanje programa

2.2.1 Ažuriranje podataka teritorijalne organizacije

Podaci teritorijalne organizacije obuhvataju podatke o državi, regionu i naseljenom

mestu. Potrebno je omogućiti njihov unos, izmenu i brisanje. Kod izmene i brisanja podataka

voditi računa da se ne naruši integritet podataka. Obezbediti prikaz i štampanje podataka,

pretraživanje po bitnijim kriterijumima, kao i njihovo uvezivanje sa srodnim podacima.

2.2.2 Ažuriranje podataka organizacije preduzeća

Podaci organizacije preduzeća obuhvataju podatke o preduzeću, sektorima unutar

preduzeća, službama unutar sektora i odeljenjima unutar službe. TakoĎe obuhvataju podatke o zaposlenima i referentima (pod referentima se podrazumevaju ljudi koji rade sa

programom), kao i šifarnik svih delatnosti i skup registrovanih delatnosti preduzeća.

Page 10: Podrska finansijskom knjigovodstvu

10

Potrebno je omogućiti njihov unos, izmenu i brisanje. Kod izmene i brisanja podataka voditi

računa da se ne naruši integritet podataka. Obezbediti prikaz i štampanje podataka, pretraživanje po bitnijim kriterijumima, kao i njihovo uvezivanje sa srodnim podacima.

2.2.3 Kontni okvir

Treba omogućiti ažuriranje podataka kontnog okvira za aktivana preduzeća. Od tipova kontnog okvira potrebno je podržati: klasu konta, grupu konta, podgrupu konta,

sintetiku konta, analitiku konta i subanalitiku konta. Korisniku ponuditi mogućnost rada sa

kontnim okvirom od maksimalno 9 cifara (1+1+1+1+2+3).

Omogućiti unos novog kontnog okvira, njegovu izmenu i brisanje postojećeg kontnog okvira. Brisanje kontnog okvira će biti moguća samo za konta koja nisu već korišćena u

nekim nalozima, tj. nisu vezana ni za jedan nalog. Kontni okvir se može kreirati na početku

korišćenja programa, a potreba je omogućiti naknadni unos novih konta i njihovu izmenu u toku korišćenja programa. Za odabir vrste konta ponuditi izbor dugovnog i potražnog konta,

dozvoliti njihovu istovremenu selekciju. U slučaju odabira oba, izabran je dugovno-potražni

konto. Za način obračuna salda ponuditi opcije dugoni minus potražni ili potražni minus dugovni, onemogućiti istovremenu selekciju oba.

2.2.4 Poslovna godina

Poslovna godina se može razlikovati od kalendarske godine. Potrebno je omogućiti: Otvaranje nove poslovne godine – otvaranje početnog stanja: Nova poslovna

godina se označava četvorocifrenog brojem, koji je najčešće istovetan kalendarskoj godini.

Otvaranje početnog stanja za narednu poslovnu godinu se vrši jednom godišnje - na kraju

tekuće poslovne godine. Podaci koje korisnik unosi pri otvaranju početnog stanja su vrsta naloga i opis promene. Ukoliko su i saldo prihoda i saldo rashoda jednaki nuli ne otvara se

početno stanje. Kada se završi otvaranje početnog stanja tada se zatvara glavna knjiga.

Poslovna godina se može promeniti bez zaključivanja prethodne poslovne godine, kako bi se omogućio rad u slučaju da dolazi do preklapanja poslovnih godina.

Zatvaranje poslovne godine – zaključna knjiženja: Zaključna knjiženja se vrše

jednom godišnje, na kraju poslovne godine. Za zaključna knjiženja se kao i za početna stanja generišu nalozi za knjiženje. Prilikom zatvaranja poslovne godine korisnik pored vrste i opisa

naloga, unosi klasu prihoda i klasu rashoda. Zaključna knjiženja podrazumevaju da se zatvore

klase prihoda i rashoda. Pri zaključivanju knjiženja je neophodno da salda prihoda i rashoda u

glavnoj knjizi budu jednaka nuli. Nakon te operacije, program će automatski zaključiti sva konta u toj poslovnoj godini. Nakon što korisnik obavi sva knjiženja u jednoj poslovnoj

godini, treba mu omogućiti da zaključiti godinu. Kada je poslovna godina zaključena, mora se

onemogućiti bilo kakvo menjanje podataka u okviru te godine (treba omogućiti samo pregled uz mogućnost generisanja izveštaja).

2.2.4 Nalog

Osnovni ulazni dokumenat u programu za finansijsko knjigovodstvo jeste nalog za knjiženje. Nalog za knjiženje sadrži proizvoljno velik skup finansijskih promena, za koje je

zajedničko da pripadaju istom nalogu. Omogućiti ažuriranje podataka na nalogu.

Pored zakonske forme (broj naloga, datum knjiženja, dugovanje i potraživanje), treba omogućiti još unos vrste naloga, datuma kreiranja, ime referenta koji knjiži nalog i

status naloga. Ukoliko data vrsta naloga ne postoji u tabeli vrsta naloga, omogućiti unošenje

nove vrste naloga, a zatim i nastavak knjiženja. Odabir konta na nalogu, ne sme biti moguć

ukoliko dati konto nije definisan u kontnom okviru. Naloge je moguće menjati i brisati sve dok se ne proknjiže. Nad proknjiženim nalogom nije moguće dodavati nove finansijske

promene.

Potrebno je omogućiti prikaz i štampanje naloga, kao i pretragu po nekim parametrima naloga.

Page 11: Podrska finansijskom knjigovodstvu

11

2.2.5 Vrste naloga za knjiženje

Korisniku pružiti mogućnost da sam kreira svoje vrste naloga. Preporučuje se da minimalno postoje tipovi: nalog, storno, otvaranje početnog stanja, zatvaranje glavne knjige i

zaključno knjiženje. Prilikom kreiranja nove vrste naloga za knjiženje, potrebno je uneti

oznaku vrste naloga (koja će jednoznačno predstavljati datu vrstu) i naziv vrste naloga.

2.2.6 Knjiženje i storno naloga

Knjiženje naloga: Svaki kreirani, neproknjiženi, nalog je moguće proknjižiti u

glavnu knjigu ukoliko se nalazi u ravnoteži. Nalog je u ravnoteži kada je suma dugovanja jednaka sumi potraživanja. Opcija knjiženja naloga je nepovratna i ona se može samo jednom

izvršiti nad odreĎenim nalogom. Nakon knjiženja nije moguće menjanje naloga niti njegovo

brisanje. U slučaju pojave neodgovarajućih podataka u proknjiženom nalogu, nalog se stornira.

Storno naloga: Omogućiti poništavanje (storniranje) proknjiženih naloga. Potrebno

je da program automatski generiše finansijske promene koje su suprotne od onih koje se

poništavaju. Nalog se može samo jednom stornirati. Neproknjižen nalog se ne može stornirati.

2.2.7 Finansijske promene

Potrebno je omogućiti ažuriranje podataka finansijskih promena u okviru naloga. Pri

unosu nove finansijske promene treba definisati: broj naloga koji sadrži promenu, redni broj

promene, konto, opis finansijske promene, smer promene (duguje ili potražuje), iznos

promene, datum kada je nastala promena i status (da li je proknjižena ili nije). Izmena i

brisanje finansijskih promena moguća je samo nad neproknjiženim nalogom. Potrebno je omogućiti prikaz, pretragu i štampanje finansijskih promena.

2.2.8 Glavna knjiga

Predstavlja najvažniji finansijski izveštaj. Ona je potrebno da sadrži podatke o kontu, poslovnoj godini, početnom stanju (duguje potražuje), prometu (duguje potražuje) i saldu

(duguje potražuje) svih proknjiženih naloga. Potrebno je omogućiti prikaz, pretragu i

štampanje podataka iz glavne knjige.

2.2.9 Generisanje finansijskih izveštaja

Potrebno je omogućiti generisanje i ponuditi mogućnost štampanja osnovnih

finansijskih izveštaja. Opisi osnovnih izveštaja, sa primerima štampanih izveštaja, biće navedeni u nastavku teksta. Pri pravljenju izveštaja voditi računa da podaci koji se prikazuju

na njima predstavljaju zakonom propisane podatke za odreĎene tipove izveštaja. Izveštaji

treba da budu jasni, bez suvišnih ulepšavanja. Poželjno je kreirati izveštaje koji daju

minimalan utrošak boje pri štampanju, a da se pri tome ne ugrozi preglednost izveštaja.

Analitički kontni okvir

Finansijski izveštaj analitičkog kontnog okvira potrebno je da sadrži sledeće podatke: naziv preduzeća, datum generisanja izveštaja, konto ili njegov deo, naziv klase, naizv grupe,

naziv podgrupe, naziv analitike. Primer generisanog izveštaja, dat je na slici 2.2.9.1.

Page 12: Podrska finansijskom knjigovodstvu

12

Slika 2.2.9.1 – Primer izveštaja Analitički kontni okvir

Proknjižen nalog Izveštaj proknjižen nalog pored naziva preduzeća, datuma štampanja, rednog broja i

vrste naloga potrebno je da sadrži tabelarni prikaz sledećih stavki: datum proknjižavanja, opis

promene, konto, naziv subanalitike, iznos duguje, iznos potražuje i na kraju zbirne vrednosti dugovanja i potraživanja. Primer generisanog izveštaja, dat je na slici 2.2.9.2.

Slika 2.2.9.2 – Primer izveštaja Proknjižen nalog

Page 13: Podrska finansijskom knjigovodstvu

13

Konto kartica (kartica analitike)

Svi novčani tokovi odreĎenog konta se nalaze na njegovoj kontnoj kartici. Na njoj se za pored zadatog naziva preduzeća, konta, naziva konta i vremenskog intervala za koji se

generiše izveštaj, nalazi tabelarni prikaz vrste naloga, broja naloga, naziva subanalitike,

dugovanja, potraživanja, salda i na kraju zbirne vrednosti dugovanja, potraživanja i salda.

Primer generisanog izveštaja, dat je na slici 2.2.9.3.

Slika 2.2.9.3 – Primer izveštaja Kartica analitike

Dnevnik promena

U dnevniku promene se pored zadatog naziva preduzeća i vremenskog intervala za koji se generiše izveštaj, prikazuje još i konto, vrstu i broj naloga, opis finansijske promene,

dugovanje, potraživanje, saldo i na kraju zbirne vrednosti dugovanja, potraživanja i salda za

ceo izabrani vremenski period. Primer generisanog izveštaja, dat je na slici 2.2.9.4.

Slika 2.2.9.4 – Primer izveštaja Promene po danima

Page 14: Podrska finansijskom knjigovodstvu

14

Bruto bilans

Izveštaj bruto bilans predstavlja pregled finansijskih promena za svaki konto, a može se vršiti u toku ili na kraju godine. Sadrži oznaku konta, naziv konta, dugovanje i potraživanje

za početno stanje, dugovanje i potraživanje za tekući i za ukupni promet, i dugovanje i

potraživanje kao konačni saldo.

Izveštaj o bruto bilansu treba da omogući prikaz bruto bilansa za zadato preduzeće u zadatom vremenskom periodu. Primer generisanog izveštaja, dat je na slici 2.2.9.5.

Slika 2.2.9.5 – Primer izveštaja Bruto bilans

Rekapitaulacija bruto bilansa za godinu Rekapitulacija bruto bilansa predstavlja bruto bilan sumiran na nivou klasa konta.

Primer generisanog izveštaja, dat je na slici 2.2.9.6.

Slika 2.2.9.6 – Primer izveštaja Rekapitulacija bruto bilansa

Page 15: Podrska finansijskom knjigovodstvu

15

Bilans stanja

Bilans stanja predstavlja izveštaj o tome šta preduzeće poseduje i koliko duguje. Ovaj izveštaj se pravi za pola godine ili za celu godinu. Dve najvažnije stavke koje bilans stanja

poseduje su aktiva i pasiva.

Aktiva se odnosi na sve ono što preduzeće poseduje: • Obrtna sredstva - novac u banci (devize, dinari, računi, blagajna)

• Obećanja koja su vam druge strane dale da će vam platiti (zovu se potraživanja)

• Dati avansi - unapred plaćeni troškovi (kao što je zakup) • Inventar

• Nameštaj

• Oprema • Nekretnine

Pasiva se odnosi na sve ono šta preduzeće duguje. U to spada:

• Obaveze koje imate prema drugoj strani, koje treba da platite (zovu se dugovanja) • Avansni grantovi (grantovi ili donacije koje ste primili unapred, pre nego što ste

izvršili stvarne usluge)

• Računi kreditnih kartica • Krediti iz banke

Primer izveštaja bilansa stanja dat je u knjizi “Računovodstvo, za III razred ekonomske škole”, na strani 171.

Bilans uspeha

Bilans uspeha je izveštaj koji evidentira prihode i rashode za celu godinu. Njegove osnovne stavke su:

• prihodi i rashodi iz redovnog poslovanja

• vanredne stavke • dobit pre oporezivanja

• gubitak pre oporezivanja

• porez na dobit

• neto dobit • neto gubitak

Primer izveštaja bilansa uspeha dat je u knjizi “Računovodstvo, za III razred ekonomske škole”, na strani 174.

2.2.10 Administracija naloga

Potrebno je podržati četiri grupe korisnika programa i to bilansistu, knjigovoĎu, šefa knjigovodstva i administratora.

Bilansisti teba dozvoliti da pregleda i menja podatke.

KnjigovoĎi dati pravo da pregleda glavnu knjigu i kontni okvir. Dozvoliti mu

da knjiži, ali ne i da menja kontni okvir.

Šefu knjigovodstva dati pravo da sve podatke pregleda ali ne i da ih menja.

Administrator treba da ima sva moguća prava.

Logovanje na sistem

Pri startovanju aplikacije potrebno je da se prikaže forma logovanje, na kojoj bi

korisnik trebao da unese svoje korisničko ime i lozinku. Ako je unos bio korektan korisniku

treba omogućiti nastavak rada u skladu sa njegovim privilegijama. OdreĎivanje pripadnosti odroĎenoj grupi korisnika obavlja se na osnovu unetog korisničkog imena. Treba omogućiti

izmenu lozinke i korisničke grupe na osnovu zahteva korisnika. Potrebno je obezbediti

odlogovanje sa sistema na zahtev korisnika ili automatsko pri izlasku iz aplikacije.

Page 16: Podrska finansijskom knjigovodstvu

16

2.2.11 Pomoć korisniku

Help je preporučljivo odraditi u standardnom HTML Help formatu. Potrebno je da daje osnovne informacije o programu i načinu njegovog korišćenja. Tekst upotpuniti slikama,

radi lakšeg razumevanja. Omogućiti pretragu po stranama helpa. Vršenje pretrage treba još da

bude omogućeno po indeksima i ključnim rečima, odabirom željenog taba u prozoru za navigaciju.

2.2.12 Instalacija, reinstalacija i brisanje programa

Potrebno je omogućiti jednostavnu instalaciju (instal) i nesmetano brisanje programa (uninstal). Dati mogućnost podešavanja parametara konekcije na bazu podataka. Obezbediti

instalacije programa neophodnih za rad aplikacije ili ponuditi linkove ka sajtovima sa kojih se

iste mogu preuzeti.

2.3 Baza podataka

Osnovu informacionog sistema čini baza podataka. Ona se može definisati kao

kolekcija meĎusobno povezanih podataka koja modelira (prikazuje) objekte, veze objekata i obeležja objekata i veza posmatranog ralnog sistema.

1

2.3.1 Model objekti – veze – obeležja2

Model objekti - veze (MOV) potiče od naziva modela objekti - veze - obeležja (Entity-Relationship-Atribute, E-R-A, ER-model) (ostaje nejasno zašto je iz naziva

izostavljeno obeležje). MOV je prvi put objavljen u Chen-ovom članku 1976 godine i jedan je

od danas najčešće korišćenih modela podataka. MOV je nastao kao sinteza dobrih osobina tri druga modela: mrežnog, relacionog i

skupa entiteta. Postoje više verzija ovog modela podataka. U odnosu na originalni Chen-ov

model uvedeno je više proširenja tako da ga danas susrećemo pod nazivom prošireni model

objekti - veze (PMOV). Kod nas poznata verzija PMOV definisana je na Fakultetu organizacionih nauka (FON) u Beogradu. Razmatranja modela objekti - veze ovde će se

oslanjati na PMOV.

Model objekti-veze je najpopularniji i u praksi najčešće korišćen semantički model podataka koji se koristi kao grafički jezik za projektovanje konceptualne šeme baze

podataka. Konceptualna šema predstavlja takav model realnog sistema i njegove baze

podataka koji ne zavisi od konkretnog sistema za upravljanje bazom podataka. Konceptualna

šema baze podataka prema MOV može se lako prevesti u šemu baze podataka na kojoj je SUBP zasnovan.

Konceptualna šema realizovana kao MOV po pravilu se predstavlja uz pomoć

dijagrama koje nazivamo dijagrami objekti veze (DOV).

1 dr Dragan Mihajlović, “Informacioni sistemi i projektovanje baze podataka”, str.8

2 dr Dragan Mihajlović, “Informacioni sistemi i projektovanje baze podataka”, str.127

Page 17: Podrska finansijskom knjigovodstvu

17

Zbog bolje preglednosti konceptualne šeme kao dijagrama tipova objekata i veza,

dijagrami se mogu crtati na različitim nivoima detaljnosti. Najniži nivo detaljnosti je kada DOV sadrži tipove objekata i tipove veza. Viši nivo detaljnosti nastaje ako se u DOV pored

tipova objekata i tipova veza označe samo identifikaciona obeležja i informacije o

minimalnom i maksimalnom broju pojava tipova objekata koje učestvuju i vezama. Na

najvišem nivou detaljnosti DOV sadrži i sva obeležja tipova objekata i akcije u slučaju narušavanja pravila integriteta.

2.3.2 Relacioni model podataka3

Koncepcija relacionog modela podataka je prvi put objavljena u Codd-ovom članku iz 1970 godine. Osnovni razlozi za definisanje relacionog modela podataka bili su sledeći

nedostaci uočeni u korišćenju tada poznatih modela podataka:

nepostojanje jasne granice izmeĎu logičkih i fizičkih aspekata baza podataka,

strukturna kompleksnost podataka,

navigacioni jezici za manipulisanje podacima,

Ciljevi razvoja relacionog modela podataka odnosili su se pre svega na uklanjanje prethodnih nedostataka.

Nakon serije Codd-ovih radova započeo je razvoj relacionih modela i relacionih baza

podataka. No, i u relacionom modelu podataka ubrzo je uočen niz nedostataka, tako da je Codd 1979 objavio prošireni relacioni model podataka. Danas se kao dve vrste relacionog

modela podataka susreću: klasični relacioni model (RM) i prošireni relacioni model

(RM/T). Prema ranije učinjenoj klasifikaciji modela podataka može se videti da klasični

relacioni model pripada II, a prošireni relacioni model III generaciji. RM/T model u odnosu na RM model sadrži dodatne koncepte strukture, pravila integriteta i moćne operatore. No i

pored toga do danas ovaj model ima manji praktični značaj. Neki koncepti ovog modela

prihvaćeni su i preuzeti u drugim modelima podataka i implementirani u nekim SUBP. Osnovni pojam relacionog modela podataka je relacija. Relacija se može posmatrati

se sledeća dva aspekta: značenje i sadržaj. Značenje relacije i formalno se iskazuje šemom

relacije. Sadržaj relacije naziva se ekstenzijom, a iskazuje se tabelom podataka ili pojavom

šeme relacije.

U relacionom modelu podataka relacija odgovara dvodimenzionalnoj tabeli u kojoj

svaki red sadrži jednu n-torku, a svaka kolona elemente jednog domena. Svaka kolona relacije

jednoznačno je odreĎena nazivom obeležja u šemi relacije. Redosled kolona u relaciji i redosled članova u n-torci su nebitni.

Identifikator n-torki relacije naziva se kantidat ključa, u šemi relacije može ih biti

više, a jedan se bira za primarni ključ. Obeležja koja ulaze u sastav bilo kojeg kandidata ključa nazivaju se klučna obeležja. Obeležja koja ne ulaze niti u jedan od kandidata ključa

nazivaju se neključna obeležja. U relaciji uvek postoji ključ.

Šema relacije ne predstavlja podatke, već njihovu formu, a interpretacijom i značenje. Napomenimo da značenje relacije ne proizilazi iz same šeme, jer se šema u principu može

interpretirati na bezbroj načina. Stoga je bolje reći da je šema formalna predstava značenja.

Šema relacione baze podataka može da se predstavi kao S(N,I) gde je:

S – naziv baze podataka

N – skup šema relacije

I – skup uslova integriteta baze podataka

Ako se prethodni skup šema relacija dopuni opisom uslova integriteta koji se odnose

na ograničenja izmeĎu pojava šeme relacija dobijamo šemu baze podataka.

3 dr Dragan Mihajlović, “Informacioni sistemi i projektovanje baze podataka”, str.177

Page 18: Podrska finansijskom knjigovodstvu

18

2.4 Sybase Power Designer

PowerDesigner je aplikacija koja sadrži skup alata za modeliranje, proizveden je od

strane kompanije Sybase. Procenjuje se da PowerDesigner drži približno 30% svetskog tržišta

alata za modelovanje podataka. Njegova cena se kreće u radsponu od $3,000 do $7,500 USD

po komadu, ali se može preuzeti besplatna, vremenski ograničena verzija. Mnogi univerziteti u svetu od kompanije Sybase dobijaju na poklon PowerDesigner, meĎu njima je i nekoliko

domaćih fakulteta.

Sybase® PowerDesigner®

PowerDesigner pruža podršku za:

Analiza zahteva (eng. Requirements Analysis)

Objektno modelovanje (UML 2.0 dijagrami)

Data modelovanje (radi sa većinom vodećih RDBMS sistema)

Modelovanje poslovnih procesa (ProcessAnalyst) podržava BPMN

XML modelovanje, podržava XML šemu i DTD standard

Modelovanje skladišta podataka (WarehouseArchitect)

Generisanje koda (Java, C#, VB .NET, Hibernate, EJB3, NHibernate, JSF, WinForm

(.NET and .NET CF), PowerBuilder, ...)

Generisanje izveštaja

Repozitorijum

Visual Studio 2005 dodatak

Eclipse plugin

2.5 Programski jezik C#

C# (C šarp) je objektno orjentisan programski jezik razvijen od strane Mikrosofta kao

deo .NET inicijative i kasnije prihvaćen kao standard od ECMA i ISO. C# jezik se razvija kao

proceduralni, objektno orjentisani, sintaksno baziran na C++ jeziku sa uključenjem aspekata nekoliko drugih programskih jezika (posebno značajno Delfi i Java) i sa posebnom pažnjom

na uprošćenosti.

Glavni dizajner i glavni arhitekta C# programskog jezika u Mikrosoftu je Anders Hejlsberg. Njegova prethodna iskustva u programskim jezicima i framework dizajnu (Visual

J++, Borland Delphi, Turbo Pascal), mogu se lako uočiti u sintaksi C# jezika. U intervijuima i

tehničkim novinama on proučava mane u višim programskim jezicima (C++, Java, Delphi,

and Smalltalk). C# se pokazao uspešnijim od njih i postao je jedan od vodećih programskih jezika.

2.6 Microsoft SQL Server

Microsoft SQL Server je savremena relaciona baza podataka. Osim glavne baze

sadrži i komponente: Query Analyzer – konzola za upite, Enterprise Manager – konzola za

napredno upravljanje bazom, Profiler – alatka za nadzor rada baze. Microsoft Desktop Engine

– MSDE je besplatna verzija baze podataka, ali ona ne sadrži dodatne programe nalik ovim alatkama iz Microsoft SQL Servera. Microsoft SQL Server poseduje poseban programski

jezik za pisanje procedura koje će se izvršavati na serveru, Transact – SQL (T – SQL).

Page 19: Podrska finansijskom knjigovodstvu

19

SQL Server 2005 je program novije generacije namenjen upravljanju podacima i

njihovoj analizi. Sistem je osmišljen tako da firmama i ustanovama svih veličina olakša

hvatanje u koštac s brojnim izazovima vezanim za rad s podacima i omogući im efikasnije donošenje odluka. SQL Server 2005 će pomoći prilikom izgradnje, implementacije i

upravljanja sigurnijih, skalabilnijih i pouzdanijih poslovnih aplikacija, a u isto vreme

poboljšati produktivnost informatičkih odeljenja smanjivanjem složenosti i poslova oko

stvaranja, implementacije i održavanja baze podatka. Ovo se odražava i na ukupne troškove posedovanja (TCO-Total Cost of Ownership) ovakvih sistema koji zahvaljujući integrisanom

pristupu i usresreĎenosti na jednostavnost upotrebe nude najniže troškove inicijalne nabavke,

implementacije i održavanja, a time i brz povratak ulaganja u bazu podataka. Postoji besplatna verzija Microsoft SQL Servera 2005 i nosi oznaku Express.

Poseduje ograničenja na veličinu baze (maksimalno 4GB), broj procesora (jedan procesor ili

jedno jezgro) i količinu operativne memorije (maksimalno 1GB) koju može da koristi server. Server i ostale komponente se mogu preuzeti sa zvaničnog Mikrosoftovog sajta

http://download.microsoft.com, a skoro je postala dostuna i novija verzija Microsoft SQL

Server 2008.

2.7 Microsoft Visual Studio

Microsoft Visual Studio je alatka za razvoj programa. Prvo izdanje programa Visual

Studio pojavilo se na tržištu 1997. godine i sadržao je odvojene IDE-ove (koji su zahtevali posebnu instalaciju) za programe Visual C++, Visual Basic, J++, i alatku poznatu kao

InterDev. Program Visual Studio 6.0 imao je drastična poboljšanja koja su označila roĎenje

programa Visual Basic 6 i koja su oslikavala ideju skupa jedinstvenih usluga za sve jezike.

Visual Studio .NET 2002 i Visual Studio .NET 2003 su tu ideju sproveli u delo sa aplikacijom .NET Framework. Po prvi put jedan programer je mogao da napiše aplikaciju na

jeziku po svom izboru korišćenjem mogućnosti opšteg skupa alatki uključujući dizajniranje,

kontrole “prevuci i otpusti” i IntelliSense. Zajedno sa porastom produktivnosti programera, došlo je i do porasta u veličini i kompleksnosti razvojnih projekata i timova.

Visual Studio 2005 nova je verzija programskog alata koji donosi novi pogled na razvojni proces. UnapreĎena je komunikacija i povećana produktivnost članova tima koji rade

na nekom projektu. Visual Studio Team System olakšava razvoj kvalitetnih aplikacija

omogućavajući članovima tima da se fokusiraju isključivo na rezultate. Razvojno okruženje

Visual Studio 2005 predstavlja velik korak napred u razvoju programskih rešenja i donosi inovacije u svim područjima, od razvoja desktop-aplikacija, preko web-aplikacija, sve do

aplikacija za mobilne ureĎaje.

Visual Studio 2005 je nastao da bi pomogao programerima u timovima različitih veličina da povećaju meĎusobnu saradnju i smanje kompleksnost razvoja. Sa svakim novim

izdanjem, Mikrosoft je u projektu Visual Studio ostvario komunikaciju sa programerskom

zajednicom kako bi dobio povratne informacije radi usavršavanja proizvoda. Trenutno je pored Mucrosoft Visual Studio 2005 na sajtu dostupna i Mucrosoft

Visual Studio 2008 verzija. Visual Studio je moguće nabaviti u nekoliko različitih verzija:

Express, Standard, Professional, Tools for Office i Visual Studio Team System Editions.

Page 20: Podrska finansijskom knjigovodstvu

20

Express verzija je besplatna verzije koja omogućava rad u jezicima Visual Basic, Visual C++,

Visual C# i Visual J#. Može se preuzeti sa zvaničnog Mikrosoftovog sajta gde je dostupan na adresi: http://www.microsoft.com/express/download/offline.aspx

2.8 NET Framework

Microsoft .NET Framework je softverska komponenta, koja predstavlja deo Microsoft Windows operativnog sistema. Ona obezbeĎuje veliko telo predefinisanih kod rešenja za

opšte programerske zahteve i upravlje izvršnim programa napisanim posebno za framework.

.NET Framework je Mikrosoftov poklon programerima i namenjen je da se koristi u mnogim novokreiranim aplikacijama za Windows platforme.

Predefinisana kod rešenja javljaju se u obliku framework Bazne Klas-Biblioteke i

poseduje veliki izbor programa neophodnih u oblastima: Korsnički interfejs, pristup

podacima, konekcija na bazu, kriptografija, kreiranje web aplikacija, numeričke algoritme i mrežna komunikacija. Klas-biblioteke koriste programeri koji ih kombinuju sa sopstvenim

kodom i na taj način kreiraju aplikacije.

.NET Framework je uključen u Windows Server 2003, Windows Server 2008 i Windows Vista operativne sisteme, a moguće ga je instalirati na mnoge starije verzije

operativnog sistema Windows. Trenutno su aktelne verzije NET Framework 2.0 i NET

Framework 3.5, a instalacije se mogu preuzeti sa zvaničnog Mikrosoftovog sajta: http://download.microsoft.com

Page 21: Podrska finansijskom knjigovodstvu

21

3. IMPLEMENTACIJA

U ovom poglavlju izložen je kratak opis implementacije datog programa i njegove

funkcionalnosti. Biće prikazani dijagram toka podataka, konceptualni model baze podataka i

na osnovu njega generisani fizički model. Opisaće se problemi uočeni u procesu

implementacije, način testiranja programa i proces instalacije. TakoĎe će biti izložen opis realizovanih funkcionalnosti programa.

3.1 Dijagram toka podataka

Dijagram toka podataka predstavlja skup podataka koji se paralelno izvršavaju. Na

slici 3.1, prikazan je dijagram toka podataka, na kojem se jasno mogu uočiti prava pristupa

odreĎenih tipova korisnika i njihove mogućnosti.

Slika 3.1 – Dijagram toka podataka Finanijskog knjigovodstva

3.2 Izrada konceptualnog modela

Konceptualni model baze podataka, uraĎen je u programskom paketu Power Designer

12. Hijerarhijska organizacija modela sastoji se iz dva dela: organizacione strukture i

finanijskog knjigovodstva. Ovakva organizacija omogućava lako dodavanje i povezivanje novih tipova knjigovodstva na nivou baze. Organizaciona struktura se takoĎe sastoji iz dva

dela: organizacije preduzeća i teritorijalne organizacije.

Page 22: Podrska finansijskom knjigovodstvu

22

Slika 3.2.1 – Hijerarhijska organizacija modela

U nastavku će biti prikazan konceptualni model u potpunosti. Konceptualni model se sastoji iz modela teritorijalne organizacije, slika 3.2.2, modela organizacije preduzeća, slika

3.2.3 i modela finanijskog njigovodstva , slike 3.2.4, 3.2.5 i 3.2.6.

Slika 3.2.2 – Konceptualni model teritorijalne organizacije

Page 23: Podrska finansijskom knjigovodstvu

23

Slika 3.2.3 – Konceptualni model organizacije preduzeća

Page 24: Podrska finansijskom knjigovodstvu

24

Slika 3.2.4 – Konceptualni model finansijskog knjigovodstva,

deo 1/3

Page 25: Podrska finansijskom knjigovodstvu

25

Slika 3.2.5 – Konceptualni model finansijskog knjigovodstva,

deo 2/3

Page 26: Podrska finansijskom knjigovodstvu

26

Slika 3.2.6 – Konceptualni model finansijskog knjigovodstva, deo 3/3

Page 27: Podrska finansijskom knjigovodstvu

27

3.3 Generisani fizički model

Za generisanje fizičkog modela, kao i skripta za kreiranje baze korišćen je alat Power

Designer 12. Fizički model je u potpunosti generisan na osnovu konceptualnog modela uz

neophodnu restrikciju ključeva.

Slika 3.3.1 – Fizički model teritorijalne organizacije

Page 28: Podrska finansijskom knjigovodstvu

28

Slika 3.3.2 – Fizički model organizacije preduzeća

Page 29: Podrska finansijskom knjigovodstvu

29

Slika 3.3.3 – Fizički model finansijskog knjigovodstva, deo 1/3

Page 30: Podrska finansijskom knjigovodstvu

30

Slika 3.3.4 – Fizički model finansijskog knjigovodstva, deo 2/3

Page 31: Podrska finansijskom knjigovodstvu

31

Slika 3.3.5 – Fizički model finansijskog knjigovodstva, deo 3/3

Page 32: Podrska finansijskom knjigovodstvu

32

3.4 Logika sistema

Kompletna logika aplikacije, uključujuči načine i pravila knjiženja kao i brojna

ograničenja, je smeštena na samom serveru u obliku store procedura i trigera. Na ovaj način

se mnogostruko umanjuje broj pristupa aplikacije SQL klijentu i pobojšava efikasnost i

bezbednost celokupnog sistema. TakoĎe se pruža mogućnost nesmetane implementacije nove aplikacije koja bi radila sa potpuno istom knjigovodstvenom logikom sistema.

Za implementaciju store procedura i tigera korišćen je SQL jezik Transact–SQL (T–

SQL), sa kojim radi Microsoft SQL Server. Kod store procedura dat je u prilogu (stavka 5.1 Store procedure), kod Trigera je takoĎe dat u prilogu (stavka 5.2 Trigeri).

3.5 Problemi prilikom implementacije

Prilikom implementacije javio se problem nemogućnosti automatskog generisanja koda za metode INSERT, UPDATE i DELETE, prilikom spajanja više tabela u DataSet-u.

Slika 3.5 – Problem automatskog generisanja metoda DataSet-a

Problem je rešen dodavanjem novog i izmenom postojećeg dela generisanog koda u

fajlu finansijskoDataSet.Designer.cs

3.6 Instalacija

Program radi na Windows operativnim sistemima koji poseduju Microsoft .NET

Frameworks v2.0 ili noviju verziju. Instalacija se sastoji iz dva dela: instalacije i podešavanja

serverskog dela i instalacije klijentskih aplikacija.

Uz aplikaciju za podršku finansijskom knjigovodstvu dolaze svi neophodni programi. Oni se takoĎe mogu bespatno preuzeti sa Mikrosoftovog sajta:

Page 33: Podrska finansijskom knjigovodstvu

33

http://download.microsoft.com. Sama aplikacija za podršku finansijskom knjigovodstvu

predstavlja klijentski deo sistema, a ona dolazi u tri varijante u zavisnosti od tipa operativnog sistema (x86, Itanium i x64). Izgled prozora u toku instalacije prikazan je na slici 3.6.

Slika 3.6 – Instalacija aplikacije Finansijsko Knjigovodstvo

Nakon instalacije klijentske aplikacije potrebno je podesiti parametre konekcije na bazu podataka. Detaljnije uputstvo za instalaciju, koje se distribuira uz instalaciju aplikacije,

dato je u prilogu (stavka 5.4 Uputstvo za instalaciju).

3.7 Implementirane funksionalnosti

Aplikacija sadrži standardne funkcionalnosti aplikacije za podršku finansijskom

knjigovodstvu. Podržava višenivovsko prijavljivanje na sistem. Poseduje dobro organizovan i

konzistentan MDI interfejs. Omogućava pregled, unos, izmenu i brisnje podataka, kao i pregled i štampanje izveštaja.

3.7.1 Prijavljivanje na sistem

Pri startovanju programa korisnik je obavezan da se prijavi na sistem, slika 3.7.1. Uspešnim prijavljivanjem korisnik dobija (ili mu se ukidaju) odreĎene privilegije u zavisnosti

od njegovog statusa u firmi. Podržano je pet nivoa privilegija: bilansista, knjigovoĎa, šef

knjigovodstva, administrator i ukinuta prava. Administrator ima sva prava, te i pravo da

dodaje nove i briše postojeće korisnike i definiše nivoe privilegija ostalih korisnika. Naknadno prijavljivanje na sistem se može eksplicitno pozvati odabirom stavke standardnog

menija Datoteka > Odloguj se.

Page 34: Podrska finansijskom knjigovodstvu

34

Slika 3.7.1 – Prijavljivanje na sistem

3.7.2 Izgled aplikacije

Aplikacija za podršku finansijskom knjigovodstvu je uraĎena u satandardnom MDI

(Multiple Document Interfaces) iterfejsu sa ciljem da se korisniku omogući istovremeni

prikaz svih potrebnih informacija, slika 3.7.2.1.

Slika 3.7.2.1 – Izgled aplikacije Finansijsko knjigovodstvo

Informaciju o logovanom korisniku, kao i njegove privilegije može se videti u status

baru aplikacije, slika 3.7.2.2. U slučaju izvršenja zahtevnijih operacija, u levom uglu se

pojavljuje progres bar za prećenje stanja u kojem se trenutno nalazi operacija.

Slika 3.7.2.2 – Izgled status bara aplikacije

Page 35: Podrska finansijskom knjigovodstvu

35

U gornjem desnom uglu nalazi se polje za definisanje aktivnog preduzeća

(preduzeće sa kojim želimo da radimo) i polje za definisanje aktivne poslovne godine, slika 3.7.2.3. Njih nije obavezno koristiti, ali je preporučljivo. U slučaju da je preduzeće

definisano, program filtrira podatke i prikazuje samo podatke datog preduzeća. TakoĎe

automatski popunjava sva polja u kojima je potrebno uneti neku informaciju vezanu za

preduzeće ili poslovnu godinu. Definisanje se vrši klikom na željeno polja za unos teksta, a zatim odabirom nekog od ponuĎenih preduzeća (prvo polje) ili odabira poslovne godine

(drugo polje). Taster služ za deaktivaciju opcije.

Slika 3.7.2.3 – Izgled polja za definisanje aktivnog preduzeća

3.7.3 Meni

Aplikacija sadrži standardni padajući meni, čija su prva dva nivoa hijerarhijske

organizacije prikazani na slici 3.7.3.1.

Slika 3.7.3.1 – Hijerarhijska organizacija standardnog padajućeg menija

Page 36: Podrska finansijskom knjigovodstvu

36

Izgled menija je takoće prikazan na slici slici 3.7.3.2, sa njega se lako može pristupiti

svim funkcijama programa.

Slika 3.7.3.2 – Izgled standardnog padajućeg menija

Datoteka (eng. File) je osnovna stavka standardnog padajućeg menija, slika 3.7.3.3.

Sadrži opcije za testiranja i podešavanja konekcije na bazu, opciju za logovanje korisnika i

izlaz iz programa.

Slika 3.7.3.3 – Izgled padajućeg menija stavke Datoteka

Stavka Organizacija poseduje dve celina: teritorijalnu organizaciju i organizaciju preduzeća. U teritorijalnoj organizaciji nalaze se pozivi funkcija vezanih za teritorijalnu

rasporelu, slika 3.7.3.4.

Slika 3.7.3.4 – Izgled padajućeg menija stavke Teritorijalna organizacija

Ogranizacija preduzeća sadrži pozive funkcija vezanih za strukturu preduzeća, zaposlene u predužeću i delatnosti preduzeća, slika 3.7.3.5.

Page 37: Podrska finansijskom knjigovodstvu

37

Slika 3.7.3.5 – Izgled padajućeg menija stavke Organizacija preduzeća

Stavka Finansije, slika 3.7.3.6, sadrži pozive funkcija vezanih za kontni okvir, definisanje poslovnih partnera, poslovne godine i vrste naloga. Omogućava i rad sa nalogom,

finanijskim promenama, glavnom knjigom i karakterističnim knjiženjima.

Slika 3.7.3.6 – Izgled padajućeg menija stavke Kontni Okvir

Page 38: Podrska finansijskom knjigovodstvu

38

Stavka Izveštaji, slika 3.7.3.7, sadrži stavke za pozivanje generisanja karakterističnih

finanijskih izveštaja.

Slika 3.7.3.7 – Izgled padajućeg menija stavke Izveštaji

Stavka Kopija, slika 3.7.3.8, sadrži opcije za uvoz i izvoz podataka (restore, back up) iz baze podataka. Opcije pozivaju eksternu aplikaciju Microsoft SQL Server

Management Studio Express, u kojoj postoji mogućnost rukovanja kopijom baze podataka.

Kreiranje i učitavanje kopije je opisano u tutorijalu,“Kopija Podataka“, koji stiže uz aplikaciju za podršku finansijskom knjigovodstvu.

Slika 3.7.3.8 – Izgled padajućeg menija stavke Kopija

Stavka Prozori (eng. Windows), slika 3.7.3.9, sadrži opcije za organizaciju prozora

unotar MDI konteinera. Daje spisak svih prozora i omogućava laku aktivaciju neaktivnih i

njihovo stavljanje u fokus.

Slika 3.7.3.9 – Izgled padajućeg menija stavke Prozori

Page 39: Podrska finansijskom knjigovodstvu

39

Stavka Pomoć (eng. Help), slika 3.7.3.10, je zadužena za pružanje pomoći korisniku

u obliku standardnog HTML-Helpa ili putem tutorijala. Stavka O programu nudi osnovne informacije o aplikaciji.

Slika 3.7.3.10 – Izgled padajućeg menija stavke Pomoć

3.7.4 Standardni prozor

Aplikacija za podršku finansijskom knjigovodstvu sadrži 33 tipa standardnog

pozora. Standardni prozor sadrži tabelarni prikaz elemenata, detaljan prikaz podataka

izabranog elementa i paletu alatki. U izradi prozora posebna pažnja je posvećena

konzistentnosti, tako da svi prozori izgledaju identično i poseduju iste kontrole. Prozor se sastoji iz dva dela (dela sa tabelom i dela sa podacima), razdvojenih spliterom, slika 3.4.4.1.

Slika 3.7.4.1 – Izgled standardnog prozora

U gornjem delu prozora nalazi se paleta alatki za rad sa podacima prikazanim u

prozoru. Njihove funkcionalnosti su opisane na slici 3.7.4.2.

Page 40: Podrska finansijskom knjigovodstvu

40

Slika 3.7.4.2 – Paleta alatki standardnog prozora

Pretraga se može vršiti po nekom od ponuĎenih kriterijuma, dok kriterijumi zavise

od tipa prikazanih podataka. Primer menija za pretragu prikazan je na slici 3.7.4.3. Rezultat pretrage biće prikazan u tabeli prozora nad kojim se vrši pretraga. U slučaju da je potrebna

pretraga po nekoj reči ili delu reči, potrebno je reč prvo upisati u polje pored, a zatim odabrati

tip pretrage.

Slika 3.7.4.3 – Izgled standardnog prozora

3.7.5 Generisanje izveštaja

Za generisanje izveštaja korišćena je Mikrosoftova komponenta ReportViewer, koja

dolazi uz programski paket Microsoft Visual Studio 2005. Primer prozora za dizajniranje

izveštaja može se videti na slici 3.7.5.1.

Pretraga

Prikaz ili sktivanje

tabele ili podataka

Pregled i štampanje

sadržaja tabele

Navigacija kroz

elemente u tabeli

Dodavanje, brisanje, snimanje izmena i

osvežavanje sadržaja

Page 41: Podrska finansijskom knjigovodstvu

41

Slika 3.7.5.1 – Izgled prozora za dizajniranje izveštaja,

Microsoft Reports

Program omogućava pregled i štampanje ili snimanje u elektornskom obliku

(Excel, Acrobat PDF file ) 32 tipa izveštaja. Od štampanja sadržaja prikazanog na ekranu, do specifičnih knjigovodstvenih izveštaja. Primer prozora sa generisanim izveštajem dat je na

slici 3.7.5.2.

Slika 3.7.5.2 – Primer prozora sa generisanim izveštajem

Page 42: Podrska finansijskom knjigovodstvu

42

Alatka Page Setup nudi mogućnost podešavanja veličine i oblika papira za štampu, slika 3.7.5.3.

Slika 3.7.5.3 – Page Setup

Alatka Print pruža mogućnost standardnih podešavanja materijala za štampu, slika

3.7.5.4.

Slika 3.7.5.3 – Print

Primeri nekih generisanih izveštaja u aplikaciji za podršku finansijskom

knjigovodstvu dati su u prilogu (stavka 5.3 Primeri generisanih izvešraja).

Page 43: Podrska finansijskom knjigovodstvu

43

3.4.6 Poruka korisniku

U slučaju pojave greške ili u slučaju izvršenja odreĎenih operacija, korisnik se o tome obaveštava. Sve poruke se prikazuju u standardnom prozoru za poruke korisniku, slika

3.7.6.

Slika 3.7.6 – Izgled standardnog prozora za poruke korisniku

Korisniku se prikazuju informacije o uzroku koji je doveo do generisanja poruke i

načinu otklanjanja greške ukoliko je do nje došlo. Dugme prikazuje poslednje polje u kojem se korisniku nudi informacija koju je prosledio sistem, ona je od velike pomoći

ako se radi o poruci koju prosleĎuje baza podataka. Klikom na dugme nastavlja se izvršenje započete operacije, ukoliko je moguće, ili se program vraća u stanje u kojem je bio

pre započinjanja iste.

3.7.7 Izrada sigurnosne kopije

Pravo izrade sigurnosne kopije ima isključivo administrator. Za izradu kopije se

koristi program Microsoft SQL Sevrer Menagement Studio Express, slika 3.7.7.1. SQL

Sevrer Menagement Studio Express se distribuira uz ovaj program, a može se besplatno preuzeti sa zvaničnog Mikrosoftovog sajta, na adresi http://download.microsoft.com.

Page 44: Podrska finansijskom knjigovodstvu

44

Slika 3.7.7.1 – Izgled aplikacije Microsoft SQL Sevrer

Menagement Studio Express

Korisniku se nudi niz mogućnosti za podešavanje generisanja sigurnosne kopije, slika

3.7.7.2.

Slika 3.7.7.1 – Podešavanje generisanja sigurnosne kopije

Page 45: Podrska finansijskom knjigovodstvu

45

Detaljniji opis pravljenja sigurnosne kopije i njihovog korišćenja dat je u tutorijalu koji prati aplikaciju, Start > Programs > Finansijsko Knjigovodstvo > Tutorijal > Kopija

Podataka.

3.8 Testiranje aplikacije

Za testiranje aplikacije korišćen je za ovu priliku posebno kreiran SQL sktip

Test_Podaci.sql, sa test podacima koji sintaksno odgovaraju strukturi podataka finansijskog

knjigovodstva. Testiranje je takoĎe vršeno i iz same klijentske aplikacije. U naprednijem slučaju testiranja, korišćeni su slučajevi knjiženja, pronaĎeni u

knjigama “Računovodstvo, za III razred ekonomske škole” i “Računovodstvo, za IV razred

ekonomske škole”.

Greške uočene pri testiranju su ispravljene, tako da aplikacija sada korektno izvršava postavljene zahteve.

Page 46: Podrska finansijskom knjigovodstvu

46

Page 47: Podrska finansijskom knjigovodstvu

47

4. ZAKLJUČAK

U izradi baze podataka korišćen je program PowerDesigner 12.5 , sa podrškom za

savremene baze podataka (kao na primer SQL Server 2005). Kao baza podataka korišćen je

SQL Server 2005 Express. Kompletna aplikacija je uraĎena u C# programskom jeziku, uz

oslonac na .NET biblioteke. Visual Studio 2005 je program u kome je klijentska aplikacija kreirana.

Alati u kojima je ovo raĎeno predstavljaju najsavremenije alate za kreiranje

poslovnih aplikacija. Programi korišćeni u izradi ove aplikacije su besplatni ili fakultet ima licencu za njih.

Aplikacija za podršku finansijskom knjigovodstvu čini jednu zaokruženu celinu

kompjuterski podržanog sistema za finanijsko knjigovodstvo. Ona je razvijana do te mere da

zadovolji zahteve navedene u specifikaciji. Ona se može proširiti ostalim tipovima knjigovodstva, kao na primer materijalnim knjigovodstvom. Sam program je rezvijan na taj

način da se ostavi mogućnost prošitanja.

Aplikacija sadrži konzistentan MDI interfejs, čije mogućnosti paralelnog prikaza i obrade posebno dolaze do izražaja kod naprednijih korisnika ili korisnika kojima je blizak

ovakav način rada.

Posebna pažnja posvećena je osposobljavanju korisnika za korišćenje aplikacije. Korisniku se nude pored standardnog HTML help-a i tutorijali za obuku, koji na slikovit

način pomažu korisnicima da savladaju osnovne korake u korišćenju aplikacije.

O bezbednosti podataka se brine administrator sistema, a podršku za to pruža

Microsoft SQL Server Manangment Studio Express.

Prilikom testiranja aplikacija se pokazala kao stabilno, dobro dizajnirano aplikativno

rešenje, u kojem su uspešno implementirani zahtevi navedeni u specifikaciji zahteva.

Page 48: Podrska finansijskom knjigovodstvu

48

Page 49: Podrska finansijskom knjigovodstvu

49

5. PRILOG

5.1 Store procedure

-------------------------------------------------------------------- --KREIRA SE NOVA GODINA I OTVARA NALOG SA POČETNIM STANJIMA

CREATE PROCEDURE OtvaranjePocetnogStanja

-- ULAZNE PROMENLJIVE

@pPOSLOVNA_GODINA CHAR(4),

@pSIFRA_PREDUZECA CHAR(4),

@pOZNAKA_VRSTE_NALOGA CHAR(2),

@pKORISNICKO_IME_REFERENTA VARCHAR(30),

@pNAREDNA_GODINA CHAR(4)

AS

DECLARE

-- LOKALNE PROMENLJIVE

@SIFRA_PREDUZECA CHAR(4),

@POSLOVNA_GODINA CHAR(4),

@OZNAKA_KLASE CHAR(1),

@OZNAKA_GRUPE CHAR(1),

@OZNAKA_PODGRUPE CHAR(1),

@OZNAKA_SINTETIKE CHAR(1),

@OZNAKA_ANALITIKE CHAR(2),

@OZNAKA_SUBANALITIKE CHAR(3),

@POCETNO_STANJE_DUGUJE DECIMAL(12,2),

@POCETNO_STANJE_POTRAZUJE DECIMAL(12,2),

@PROMET_DUGUJE DECIMAL(12,2),

@PROMET_POTRAZUJE DECIMAL(12,2),

@SALDO_DUGUJE DECIMAL(12,2),

@SALDO_POTRAZUJE DECIMAL(12,2),

@BROJ_NALOGA NUMERIC(8),

@REDNI_BROJ_PROMENE NUMERIC(10),

@DATUM DATETIME

SET @DATUM= GETDATE()

BEGIN TRANSACTION

-- DEKLARIŠEMO KURSOR(SKUP SLOGOVA KOJEM ŢELIMO DA PRISTUPAMO)

DECLARE cursGLAVNA_KNJIGA CURSOR FOR

SELECT OZNAKA_KLASE, OZNAKA_GRUPE, OZNAKA_PODGRUPE, OZNAKA_SINTETIKE,

OZNAKA_ANALITIKE, OZNAKA_SUBANALITIKE, POCETNO_STANJE_DUGUJE,

POCETNO_STANJE_POTRAZUJE, PROMET_DUGUJE, PROMET_POTRAZUJE, SALDO_DUGUJE,

SALDO_POTRAZUJE

FROM GLAVNA_KNJIGA

WHERE

POSLOVNA_GODINA=@pPOSLOVNA_GODINA AND

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

(SALDO_DUGUJE<>0 ORSALDO_POTRAZUJE<>0)

-- OTVARANJE KURSORA, POKAZIVAČ JE NA PRVOM SLOGU

OPEN cursGLAVNA_KNJIGA

FETCH NEXT FROM cursGLAVNA_KNJIGA INTO @OZNAKA_KLASE,

@OZNAKA_GRUPE, @OZNAKA_PODGRUPE, @OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE,

@OZNAKA_SUBANALITIKE, @POCETNO_STANJE_DUGUJE, @POCETNO_STANJE_POTRAZUJE,

@PROMET_DUGUJE, @PROMET_POTRAZUJE, @SALDO_DUGUJE, @SALDO_POTRAZUJE

-- AKO NE POSTOJI, KREIRAMO NOVU POSLOVNU GODINU

IF NOT EXISTS ( SELECT 1 FROM POSLOVNA_GODINA WHERE

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND POSLOVNA_GODINA=@pNAREDNA_GODINA)

INSERT INTO POSLOVNA_GODINA VALUES ( @pSIFRA_PREDUZECA, @pNAREDNA_GODINA)

-- KREIRAMO NOVI NALOG

IF EXISTS (

SELECT 1 FROM NALOG_ZA_KNJIZENJE

)

BEGIN

SELECT

@BROJ_NALOGA=max(BROJ_NALOGA)+1

FROM NALOG_ZA_KNJIZENJE

END

ELSE

Page 50: Podrska finansijskom knjigovodstvu

50

BEGIN

SET @BROJ_NALOGA = 0;

END

INSERT INTO NALOG_ZA_KNJIZENJE VALUES(

@pOZNAKA_VRSTE_NALOGA,@pSIFRA_PREDUZECA,

@pNAREDNA_GODINA, @BROJ_NALOGA, @pKORISNICKO_IME_REFERENTA, @DATUM, 0, 0, NULL,

'N')

-- PROVERAVAMO DALI JE NALOG KREIRAN, UČITAVAMO ZADNJI BROJ NALOGA

IF EXISTS

(SELECT 1 FROM NALOG_ZA_KNJIZENJE WHERE

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

POSLOVNA_GODINA=@pNAREDNA_GODINA )

BEGIN

SELECT

@BROJ_NALOGA=max(BROJ_NALOGA)

FROM NALOG_ZA_KNJIZENJE

END

ELSE

BEGIN

RAISERROR ('DOSLO JE DO GRESKE, NALOG NIJE KREIRAN', 16, 1)

END

-- UČITAVAMO ZADNJI BROJ NALOGA

IF EXISTS

(SELECT 1 FROM FINANSIJSKE_PROMENE WHERE

BROJ_NALOGA=@BROJ_NALOGA AND

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

POSLOVNA_GODINA=@pNAREDNA_GODINA AND

OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA

)

BEGIN

SELECT @REDNI_BROJ_PROMENE=max(REDNI_BROJ_PROMENE) FROM

FINANSIJSKE_PROMENE

END

ELSE

BEGIN

SET @REDNI_BROJ_PROMENE=0;

END

-- ZA @@FETCH_STATUS=0 ZNAČI DA NIJE KRAJ

WHILE @@FETCH_STATUS=0

BEGIN

-- ZA DUGOVNI SALDO

IF(@SALDO_DUGUJE>0)

BEGIN

SET REDNI_BROJ_PROMENE=@REDNI_BROJ_PROMENE+1

INSERT INTO FINANSIJSKE_PROMENE VALUES (

@pOZNAKA_VRSTE_NALOGA,@pSIFRA_PREDUZECA, @pNAREDNA_GODINA, @BROJ_NALOGA,

@REDNI_BROJ_PROMENE, @OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE,@OZNAKA_SUBANALITIKE, 'OTVARANJE POCETNOG

STANJA', 'D',@SALDO_DUGUJE, @DATUM, 'N')

END

-- ZA POTRAŢNI SALDO

IF(@SALDO_POTRAZUJE>0)

BEGIN

SET REDNI_BROJ_PROMENE=@REDNI_BROJ_PROMENE+1

INSERT INTO FINANSIJSKE_PROMENE VALUES (

@pOZNAKA_VRSTE_NALOGA,@pSIFRA_PREDUZECA, @pNAREDNA_GODINA, @BROJ_NALOGA,

@REDNI_BROJ_PROMENE, @OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE,@OZNAKA_SUBANALITIKE, 'OTVARANJE POCETNOG

STANJA', 'P',@SALDO_DUGUJE, @DATUM, 'N')

END

-- PRISTUPAMO SLEDEĆEM SLOGU

FETCH NEXT FROM cursGLAVNA_KNJIGA INTO @OZNAKA_KLASE,

@OZNAKA_GRUPE, @OZNAKA_PODGRUPE, @OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE,

@OZNAKA_SUBANALITIKE, @POCETNO_STANJE_DUGUJE, @POCETNO_STANJE_POTRAZUJE,

@PROMET_DUGUJE, @PROMET_POTRAZUJE, @SALDO_DUGUJE, @SALDO_POTRAZUJE

END

-- ZATVARAMO KURSOR I DELOCIRAMO RESURSE

CLOSE cursGLAVNA_KNJIGA

DEALLOCATE cursGLAVNA_KNJIGA

COMMIT TRANSACTION

GO

--------------------------------------------------------------------

-- VRŠI KNJIŢENJE NEPROKNJIŢENOG NALOGA

Page 51: Podrska finansijskom knjigovodstvu

51

CREATE PROCEDURE KnjizenjeNaloga

-- ULAZNE PROMENLJIVE

@pSIFRA_PREDUZECA CHAR(4),

@pPOSLOVNA_GODINA CHAR(4),

@pOZNAKA_VRSTE_NALOGA CHAR(2),

@pBROJ_NALOGA NUMERIC(8)

AS

DECLARE

-- LOKALNE PROMENLJIVE

@STATUS CHAR(1),

@UKUPNO_DUGUJE DECIMAL(12,2),

@UKUPNO_POTRAZUJE DECIMAL(12,2),

@SIFRA_PREDUZECA CHAR(4),

@OZNAKA_KLASE CHAR(1),

@OZNAKA_GRUPE CHAR(1),

@OZNAKA_PODGRUPE CHAR(1),

@OZNAKA_SINTETIKE CHAR(1),

@OZNAKA_ANALITIKE CHAR(2),

@OZNAKA_SUBANALITIKE CHAR(3),

@POSLOVNA_GODINA CHAR(4),

@BROJ_NALOGA NUMERIC(8),

@SMER_PROMENE CHAR(1),

@IZNOS_PROMENE DECIMAL(12,2),

@OZNAKA_VRSTE_NALOGA CHAR(2),

@POCETNO_STANJE_DUGUJE DECIMAL(12,2),

@POCETNO_STANJE_POTRAZUJE DECIMAL(12,2),

@PROMET_DUGUJE DECIMAL(12,2),

@PROMET_POTRAZUJE DECIMAL(12,2),

@SALDO_DUGUJE DECIMAL(12,2),

@SALDO_POTRAZUJE DECIMAL(12,2),

@SALDO_DUG_POTR BIT,

@OK BIT

-- DA LI POSTOJI NALOG KOJI TRAŢIMO

IF NOT EXISTS ( SELECT 1 FROM NALOG_ZA_KNJIZENJE

WHERE

SIFRA_PREDUZECA = @pSIFRA_PREDUZECA AND

POSLOVNA_GODINA = @pPOSLOVNA_GODINA AND

OZNAKA_VRSTE_NALOGA = @pOZNAKA_VRSTE_NALOGA AND

BROJ_NALOGA = @pBROJ_NALOGA )

BEGIN

RAISERROR('NIJE IZABRAN VALIDAN NALOG',11,2)

RETURN

END

-- ČITAMO PODATKE IZ NALOGA DA BIH GA PROVERILI

SELECT @STATUS = STATUS, @UKUPNO_DUGUJE = UKUPNO_DUGUJE,

@UKUPNO_POTRAZUJE=UKUPNO_POTRAZUJE FROM NALOG_ZA_KNJIZENJE

WHERE

SIFRA_PREDUZECA = @pSIFRA_PREDUZECA AND

POSLOVNA_GODINA = @pPOSLOVNA_GODINA AND

OZNAKA_VRSTE_NALOGA = @pOZNAKA_VRSTE_NALOGA AND

BROJ_NALOGA = @pBROJ_NALOGA

-- PROVERAVAMO DA NALOG NIJE VEĆ PROKNJIŢEN

IF (@STATUS ='P')

BEGIN

RAISERROR('NALOG JE VEC PROKNJIZEN',11,2)

RETURN

END

BEGIN

SELECT 1 FROM FINANSIJSKE_PROMENE WHERE

OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA AND

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

POSLOVNA_GODINA=@pPOSLOVNA_GODINA AND

BROJ_NALOGA=@pBROJ_NALOGA

-- DA LI POSTOJE FINANSIJSKE PROMENE KOJE TRAŢIMO, DUGOVNOG TIPA

--IZRAČUNAVAMO SUMU DUGOVNIH PROMENA

IF EXISTS (SELECT 1 FROM FINANSIJSKE_PROMENE

WHERE SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@pPOSLOVNA_GODINA AND

BROJ_NALOGA=@pBROJ_NALOGA AND SMER_PROMENE='D')

BEGIN

Page 52: Podrska finansijskom knjigovodstvu

52

SELECT @UKUPNO_DUGUJE=SUM(IZNOS_PROMENE) FROM FINANSIJSKE_PROMENE WHERE

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@pPOSLOVNA_GODINA AND BROJ_NALOGA=@pBROJ_NALOGA AND

SMER_PROMENE='D'

END

ELSE SET @UKUPNO_DUGUJE=0

-- DA LI POSTOJE FINANSIJSKE PROMENE KOJE TRAŢIMO, POTRAŢNOG TIPA

-- IZRAČUNAVAMO SUMU POTRAŢNIH PROMENA

IF EXISTS (SELECT 1 FROM FINANSIJSKE_PROMENE

WHERE SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@pPOSLOVNA_GODINA AND

BROJ_NALOGA=@pBROJ_NALOGA AND SMER_PROMENE='P')

BEGIN

SELECT @UKUPNO_DUGUJE=SUM(IZNOS_PROMENE) FROM FINANSIJSKE_PROMENE WHERE

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@pPOSLOVNA_GODINA AND BROJ_NALOGA=@pBROJ_NALOGA AND

SMER_PROMENE='P'

END

ELSE

SET @UKUPNO_POTRAZUJE=0

UPDATE NALOG_ZA_KNJIZENJE SET UKUPNO_DUGUJE=@UKUPNO_DUGUJE,

UKUPNO_POTRAZUJE=@UKUPNO_POTRAZUJE WHERE

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@pPOSLOVNA_GODINA AND

BROJ_NALOGA=@pBROJ_NALOGA

-- ISPITUJEMO DA LI JE UKUPNO_DUGUJE == UKUPNO_POTRAZUJE (TJ. DA LI JE NALOG

URAVNOTEŢEN)

IF(@UKUPNO_DUGUJE=@UKUPNO_POTRAZUJE)

BEGIN

-- SVI PREDUSLOVI SU ISPUNJENI, MOŢEMO DA KNJIŢIMO

BEGIN TRANSACTION

-- DEKLARIŠEMO KURSOR(SKUP SLOGOVA KOJEM ŢELIMO DA PRISTUPAMO)

DECLARE cursFINANSIJSKE_PROMENE CURSOR FOR

SELECT POSLOVNA_GODINA, SIFRA_PREDUZECA, OZNAKA_KLASE,

OZNAKA_GRUPE, OZNAKA_PODGRUPE, OZNAKA_SINTETIKE, OZNAKA_ANALITIKE,

OZNAKA_SUBANALITIKE, SMER_PROMENE, IZNOS_PROMENE,OZNAKA_VRSTE_NALOGA

FROM FINANSIJSKE_PROMEN WHERE BROJ_NALOGA=@pBROJ_NALOGA

AND OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA AND

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

POSLOVNA_GODINA=@pPOSLOVNA_GODINA

-- OTVARANJE KURSORA, POKAZIVAČ JE NA PRVOM SLOGU

OPEN cursFINANSIJSKE_PROMENE

-- PRISTUPAMO PRVOM SLOGU

FETCH NEXT FROM cursFINANSIJSKE_PROMENE INTO

@POSLOVNA_GODINA,@SIFRA_PREDUZECA,@OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE, @SMER_PROMENE,

@IZNOS_PROMENE,@OZNAKA_VRSTE_NALOGA

-- ZA @@FETCH_STATUS=0 ZNAČI DA NIJE KRAJ

WHILE (@@FETCH_STATUS=0)

BEGIN

-- DA LI POSTOJI RED U GLAVNOJ KNJIZI KOJI ODGOVARA USLOVIMA

IF EXISTS(SELECT 1 FROM GLAVNA_KNJIGA WHERE

@SIFRA_PREDUZECA =SIFRA_PREDUZECA AND @POSLOVNA_GODINA=POSLOVNA_GODINA AND

@OZNAKA_KLASE=OZNAKA_KLASE AND @OZNAKA_GRUPE=OZNAKA_GRUPE AND

@OZNAKA_PODGRUPE=OZNAKA_PODGRUPE AND @OZNAKA_SINTETIKE=OZNAKA_SINTETIKE AND

@OZNAKA_ANALITIKE=OZNAKA_ANALITIKE AND

@OZNAKA_SUBANALITIKE=OZNAKA_SUBANALITIKE)

-- POSTOJI, UČITAVAMO NJEGOVE VREDNOSTI

BEGIN

-- UPISUJEMO VREDNOSTI REDA U LOKALNE PROMENLJIVE

SELECT @POCETNO_STANJE_DUGUJE = POCETNO_STANJE_DUGUJE,

@POCETNO_STANJE_POTRAZUJE = POCETNO_STANJE_POTRAZUJE, @PROMET_DUGUJE =

PROMET_DUGUJE, @PROMET_POTRAZUJE = PROMET_POTRAZUJE, @SALDO_DUGUJE = SALDO_DUGUJE,

@SALDO_POTRAZUJE = SALDO_POTRAZUJE FROM GLAVNA_KNJIGA WHERE @SIFRA_PREDUZECA

=SIFRA_PREDUZECA AND @POSLOVNA_GODINA=POSLOVNA_GODINA AND @OZNAKA_KLASE=OZNAKA_KLASE

AND @OZNAKA_GRUPE=OZNAKA_GRUPE AND @OZNAKA_PODGRUPE=OZNAKA_PODGRUPE AND

@OZNAKA_SINTETIKE=OZNAKA_SINTETIKE AND @OZNAKA_ANALITIKE=OZNAKA_ANALITIKE AND

@OZNAKA_SUBANALITIKE=OZNAKA_SUBANALITIKE

END

-- NE POSTOJI, KREIRAMO NOVI

Page 53: Podrska finansijskom knjigovodstvu

53

ELSE

BEGIN

-- UPISUJEMO NULTE VREDNOSTI LOKALNE PROMENLJIVE

SELECT @POCETNO_STANJE_DUGUJE = 0, @POCETNO_STANJE_POTRAZUJE = 0,

@PROMET_DUGUJE = 0, @PROMET_POTRAZUJE = 0, @SALDO_DUGUJE = 0, @SALDO_POTRAZUJE = 0

-- KREIRAMO POTREBAN RED U GLAVNOJ KNJIZI

INSERT INTO GLAVNA_KNJIGA VALUES (@pSIFRA_PREDUZECA, @pPOSLOVNA_GODINA, @OZNAKA_KLASE,

@OZNAKA_GRUPE,

@OZNAKA_PODGRUPE,@OZNAKA_SINTETIKE,@OZNAKA_ANALITIKE,@OZNAKA_SUBANALITIKE,@POCETNO_STA

NJE_DUGUJE,@POCETNO_STANJE_POTRAZUJE,@PROMET_DUGUJE,@PROMET_POTRAZUJE,@SALDO_DUGUJE,@S

ALDO_POTRAZUJE)

END

-- ISPITUJEMO DA LI VRSTA NALOGA POČETNO STANJE

IF ( @OZNAKA_VRSTE_NALOGA='03' )

BEGIN

IF (@SMER_PROMENE='D')

SET @POCETNO_STANJE_DUGUJE=@POCETNO_STANJE_DUGUJE+ @IZNOS_PROMENE

ELSE

SET @POCETNO_STANJE_POTRAZUJE=@POCETNO_STANJE_POTRAZUJE +@IZNOS_PROMENE

END

-- VRSTA NALOGA NIJE POČETNO STANJE

ELSE

BEGIN

IF (@SMER_PROMENE='D')

SET @PROMET_DUGUJE= @PROMET_DUGUJE+@IZNOS_PROMENE

ELSE

SET @PROMET_POTRAZUJE=@PROMET_POTRAZUJE+@IZNOS_PROMENE

END

-- UPISUJEMO UKUPNO DUGOVANJE I POTRAŢIVANJE

SET @UKUPNO_DUGUJE = @POCETNO_STANJE_DUGUJE+@PROMET_DUGUJE

SET @UKUPNO_POTRAZUJE = @POCETNO_STANJE_POTRAZUJE+ @PROMET_POTRAZUJE

-- UČITAVAMO U LOKALNU PROMENLJIVU IZ SUBANALITIKE, "SLADO DUGUJE-POTRAŢUJE"

SELECT @SALDO_DUG_POTR = SALDO_DUG_POTR FROM SUBANALITICKI_KONTO

WHERE SIFRA_PREDUZECA = @pSIFRA_PREDUZECA AND

OZNAKA_KLASE = @OZNAKA_KLASE AND

OZNAKA_GRUPE = @OZNAKA_GRUPE AND

OZNAKA_PODGRUPE = @OZNAKA_PODGRUPE AND

OZNAKA_SINTETIKE = @OZNAKA_SINTETIKE AND

OZNAKA_ANALITIKE = @OZNAKA_ANALITIKE AND

OZNAKA_SUBANALITIKE = @OZNAKA_SUBANALITIKE

-- SALDO DUGOVNI =1

IF (@SALDO_DUG_POTR =1)

BEGIN

SET @SALDO_DUGUJE=@UKUPNO_DUGUJE - @UKUPNO_POTRAZUJE

SET @SALDO_POTRAZUJE=0

END

-- SALDO POTRAŢNI =0

ELSE

BEGIN

SET @SALDO_DUGUJE=0

SET @SALDO_POTRAZUJE=@UKUPNO_POTRAZUJE - @UKUPNO_DUGUJE

END

-- AKO JE NEGATIVNO DUGUJE

IF (@SALDO_DUGUJE<0)

BEGIN

SET @SALDO_POTRAZUJE=-@SALDO_DUGUJE

SET @SALDO_DUGUJE=0

END

-- AKO JE NEGATIVNO POTRAŢUJE

IF (@SALDO_POTRAZUJE<0)

BEGIN

SET @SALDO_DUGUJE=-@SALDO_POTRAZUJE

SET @SALDO_POTRAZUJE=0;

END

-- OSVEŢAVAMO PODATKE U GLAVNOJ KNJIZI

UPDATE GLAVNA_KNJIGA SET

POCETNO_STANJE_DUGUJE = @POCETNO_STANJE_DUGUJE,

POCETNO_STANJE_POTRAZUJE = @POCETNO_STANJE_POTRAZUJE,

PROMET_DUGUJE = @PROMET_DUGUJE,

PROMET_POTRAZUJE = @PROMET_POTRAZUJE,

SALDO_DUGUJE = @SALDO_DUGUJE,

SALDO_POTRAZUJE = @SALDO_POTRAZUJE

WHERE @SIFRA_PREDUZECA =SIFRA_PREDUZECA AND @POSLOVNA_GODINA=POSLOVNA_GODINA AND

@OZNAKA_KLASE=OZNAKA_KLASE AND @OZNAKA_GRUPE=OZNAKA_GRUPE AND

Page 54: Podrska finansijskom knjigovodstvu

54

@OZNAKA_PODGRUPE=OZNAKA_PODGRUPE AND @OZNAKA_SINTETIKE=OZNAKA_SINTETIKE AND

@OZNAKA_ANALITIKE=OZNAKA_ANALITIKE AND @OZNAKA_SUBANALITIKE=OZNAKA_SUBANALITIKE

-- PRISTUPAMO SLEDEĆEM SLOGU

FETCH NEXT FROM cursFINANSIJSKE_PROMENE INTO

@POSLOVNA_GODINA,@SIFRA_PREDUZECA,@OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE, @SMER_PROMENE,

@IZNOS_PROMENE,@OZNAKA_VRSTE_NALOGA

END

-- ZATVARAMO KURSOR I DELOCIRAMO RESURSE

CLOSE cursFINANSIJSKE_PROMENE

DEALLOCATE cursFINANSIJSKE_PROMENE

-- OBRAĐENE PROMENE SE OZNAČAVAJU KAO PROKNJIŢENE

UPDATE FINANSIJSKE_PROMENE SET PROKNJIZEN = 'P'

WHERE BROJ_NALOGA=@pBROJ_NALOGA AND OZNAKA_VRSTE_NALOGA=@pOZNAKA_VRSTE_NALOGA

AND

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA AND

POSLOVNA_GODINA=@pPOSLOVNA_GODINA

-- STATUS NALOGA SE OZNAČAVA KAO PROKNJIŢEN I STAVLJA SE TRENUTNI DATUM ZA DATUM

KNJIŢENJA

UPDATE NALOG_ZA_KNJIZENJE SET STATUS ='P', DATUM_KNJIZENJA=GETDATE() WHERE

SIFRA_PREDUZECA = @pSIFRA_PREDUZECA AND

POSLOVNA_GODINA = @pPOSLOVNA_GODINA AND

OZNAKA_VRSTE_NALOGA = @pOZNAKA_VRSTE_NALOGA AND

BROJ_NALOGA = @pBROJ_NALOGA

-- KNJIŢENJE USPELO

COMMIT TRANSACTION

END

ELSE

BEGIN

RAISERROR('NALOG NIJE URAVNOTEŢEN',11,2)

RETURN

END

END

GO

-------------------------------------------------------------------

-- VRŠI SE ZATVARANJE GLAVNE KNJIGE

CREATE PROCEDURE ZatvaranjeGlavneKnjige

-- ULAZNE PROMENLJIVE

@pPOSLOVNA_GODINA CHAR(4),

@pSIFRA_PREDUZECA CHAR(4),

@pOZNAKA_VRSTE_NALOGA CHAR(2),

@pKORISNICKO_IME_REFERENTA VARCHAR(30)

AS

DECLARE

-- LOKALNE PROMENLJIVE

@SIFRA_PREDUZECA CHAR(4),

@POSLOVNA_GODINA CHAR(4),

@OZNAKA_KLASE CHAR(1),

@OZNAKA_GRUPE CHAR(1),

@OZNAKA_PODGRUPE CHAR(1),

@OZNAKA_SINTETIKE CHAR(1),

@OZNAKA_ANALITIKE CHAR(2),

@OZNAKA_SUBANALITIKE CHAR(3),

@PROMET_DUGUJE DECIMAL(12,2),

@PROMET_POTRAZUJE DECIMAL(12,2),

@SALDO_DUGUJE DECIMAL(12,2),

@SALDO_POTRAZUJE DECIMAL(12,2),

@BROJ_NALOGA NUMERIC(8),

@REDNI_BROJ_PROMENE NUMERIC(10),

@DATUM DATETIME

SET @DATUM=GETDATE()

-- KREIRAMO TRANSAKCIJU

BEGIN TRANSACTION

-- DEKLARIŠEMO KURSOR(SKUP SLOGOVA KOJEM ŢELIMO DA PRISTUPAMO)

DECLARE cursGLAVNA_KNJIGA CURSOR FOR

SELECT OZNAKA_KLASE, OZNAKA_GRUPE, OZNAKA_PODGRUPE, OZNAKA_SINTETIKE,

OZNAKA_ANALITIKE, OZNAKA_SUBANALITIKE,PROMET_DUGUJE, PROMET_POTRAZUJE, SALDO_DUGUJE,

SALDO_POTRAZUJE FROM GLAVNA_KNJIGA

WHERE

POSLOVNA_GODINA=@pPOSLOVNA_GODINA AND

Page 55: Podrska finansijskom knjigovodstvu

55

(SALDO_DUGUJE<>0 OR SALDO_POTRAZUJE<>0 )AND

SIFRA_PREDUZECA=@pSIFRA_PREDUZECA

-- OTVARANJE KURSORA, POKAZIVAČ JE NA PRVOM SLOGU

OPEN cursGLAVNA_KNJIGA

FETCH NEXT FROM cursGLAVNA_KNJIGA INTO @OZNAKA_KLASE, @OZNAKA_GRUPE,

@OZNAKA_PODGRUPE, @OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE,

@PROMET_DUGUJE, @PROMET_POTRAZUJE, @SALDO_DUGUJE, @SALDO_POTRAZUJE

IF EXISTS (

SELECT 1 FROM NALOG_ZA_KNJIZENJE

)

BEGIN

SELECT @BROJ_NALOGA=max(BROJ_NALOGA)+1 FROM NALOG_ZA_KNJIZENJE

END

ELSE

BEGIN

SET @BROJ_NALOGA = 0;

END

-- KREIRAMO NOVI NALOG

INSERT INTO NALOG_ZA_KNJIZENJE VALUES(

@pOZNAKA_VRSTE_NALOGA, @pSIFRA_PREDUZECA,

@pPOSLOVNA_GODINA, @BROJ_NALOGA,

@pKORISNICKO_IME_REFERENTA, @DATUM, 0, 0, NULL, 'N')

-- PRONALAZIMO SLOBODAN REDNI_BROJ_PROMENE

IF EXISTS (

SELECT 1 FROM FINANSIJSKE_PROMENE

)

BEGIN

SELECT @REDNI_BROJ_PROMENE=max(REDNI_BROJ_PROMENE)

FROM FINANSIJSKE_PROMENE

END

ELSE

BEGIN

SET @REDNI_BROJ_PROMENE = 0;

END

-- ZA @@FETCH_STATUS=0 ZNAČI DA NIJE KRAJ

WHILE (@@FETCH_STATUS=0)

BEGIN

-- SALDO DUGOVNI

IF(@SALDO_DUGUJE>0)

BEGIN

SET @REDNI_BROJ_PROMENE=@REDNI_BROJ_PROMENE+1

INSERT INTO FINANSIJSKE_PROMENE VALUES (

@pOZNAKA_VRSTE_NALOGA, @pSIFRA_PREDUZECA, @pPOSLOVNA_GODINA, @BROJ_NALOGA,

@REDNI_BROJ_PROMENE, @OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE, 'ZAKLJUCNO

KNJIZENJE', 'D', -@SALDO_DUGUJE, @DATUM, 'N')

END

-- SALDO POTRAţNI

IF(@SALDO_POTRAZUJE>0)

BEGIN

SET REDNI_BROJ_PROMENE=@REDNI_BROJ_PROMENE+1

INSERT INTO FINANSIJSKE_PROMENE VALUES (

@pOZNAKA_VRSTE_NALOGA, @pSIFRA_PREDUZECA, @pPOSLOVNA_GODINA, @BROJ_NALOGA,

@REDNI_BROJ_PROMENE, @OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE, 'ZAKLJUCNO

KNJIZENJE', 'P', -@SALDO_DUGUJE, @DATUM, 'N')

END

FETCH NEXT FROM cursGLAVNA_KNJIGA INTO @OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE, @PROMET_DUGUJE,

@PROMET_POTRAZUJE, @SALDO_DUGUJE, @SALDO_POTRAZUJE

END

CLOSE cursGLAVNA_KNJIGA

DEALLOCATE cursGLAVNA_KNJIGA

COMMIT TRANSACTION

GO

---------------------------------------------------------------------

-- VRŠI SE ZAKLJUČNO KNJIŢENJE

CREATE PROCEDURE ZakljucnaKnjizenja

-- ULAZNE PROMENLJIVE

@pOZNAKA_KLASE_PRIHOD CHAR(1),

@pOZNAKA_KLASE_RASHOD CHAR(1),

Page 56: Podrska finansijskom knjigovodstvu

56

@pPOSLOVNA_GODINA CHAR(4),

@pSIFRA_PREDUZECA CHAR(4),

@pOZNAKA_VRSTE_NALOGA CHAR(2),

@pKORISNICKO_IME_REFERENTA VARCHAR(30)

AS

DECLARE

-- LOKALNE PROMENLJIVE

@SIFRA_PREDUZECA CHAR(4),

@POSLOVNA_GODINA CHAR(4),

@OZNAKA_KLASE CHAR(1),

@OZNAKA_GRUPE CHAR(1),

@OZNAKA_PODGRUPE CHAR(1),

@OZNAKA_SINTETIKE CHAR(1),

@OZNAKA_ANALITIKE CHAR(2),

@OZNAKA_SUBANALITIKE CHAR(3),

@PROMET_DUGUJE DECIMAL(12,2),

@PROMET_POTRAZUJE DECIMAL(12,2),

@SALDO_DUGUJE DECIMAL(12,2),

@SALDO_POTRAZUJE DECIMAL(12,2),

@BROJ_NALOGA NUMERIC(8),

@REDNI_BROJ_PROMENE NUMERIC(10),

@DATUM DATETIME

SET @DATUM=GETDATE()

-- ZAPOČINJEMO TRANSAKCIJU

BEGIN TRANSACTION

-- DEKLARIŠEMO KURSOR(SKUP SLOGOVA KOJEM ŢELIMO DA PRISTUPAMO)

DECLARE cursGLAVNA_KNJIGA CURSOR FOR

SELECT OZNAKA_KLASE, OZNAKA_GRUPE, OZNAKA_PODGRUPE, OZNAKA_SINTETIKE,

OZNAKA_ANALITIKE, OZNAKA_SUBANALITIKE,PROMET_DUGUJE,PROMET_POTRAZUJE, SALDO_DUGUJE,

SALDO_POTRAZUJE

FROM GLAVNA_KNJIGA

WHERE

(OZNAKA_KLASE = @pOZNAKA_KLASE_PRIHOD OR

OZNAKA_KLASE = @pOZNAKA_KLASE_RASHOD) AND

POSLOVNA_GODINA = @pPOSLOVNA_GODINA AND

(SALDO_DUGUJE<>0 OR SALDO_POTRAZUJE<>0 )AND

SIFRA_PREDUZECA = @pSIFRA_PREDUZECA

-- OTVARANJE KURSORA, POKAZIVAČ JE NA PRVOM SLOGU

OPEN cursGLAVNA_KNJIGA

-- PRISTUPAMO PRVOM SLOGU

FETCH NEXT FROM cursGLAVNA_KNJIGA INTO @OZNAKA_KLASE, @OZNAKA_GRUPE,

@OZNAKA_PODGRUPE, @OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE,

@PROMET_DUGUJE, @PROMET_POTRAZUJE, @SALDO_DUGUJE, @SALDO_POTRAZUJE

-- PRONALAZIMO SLOBODAN BROJ NALOGA

IF EXISTS (

SELECT 1 FROM NALOG_ZA_KNJIZENJE

)

BEGIN

SELECT @BROJ_NALOGA=max(BROJ_NALOGA)+1 FROM NALOG_ZA_KNJIZENJE

END

ELSE

BEGIN

SET @BROJ_NALOGA = 0;

END

-- KREIRAMO NOVI NALOG

INSERT INTO NALOG_ZA_KNJIZENJE VALUES( @pOZNAKA_VRSTE_NALOGA,

@pSIFRA_PREDUZECA,@pPOSLOVNA_GODINA, @BROJ_NALOGA, @pKORISNICKO_IME_REFERENTA, @DATUM,

0, 0, NULL, 'N')

-- PRONALAZIMO SLOBODAN REDNI_BROJ_PROMENE

IF EXISTS (

SELECT 1

FROM FINANSIJSKE_PROMENE

)

BEGIN

SELECT @REDNI_BROJ_PROMENE=max(REDNI_BROJ_PROMENE)

FROM FINANSIJSKE_PROMENE

END

ELSE

BEGIN

SET @REDNI_BROJ_PROMENE = 0;

END

-- ZA @@FETCH_STATUS=0 ZNAČI DA NIJE KRAJ

WHILE (@@FETCH_STATUS=0)

BEGIN

Page 57: Podrska finansijskom knjigovodstvu

57

-- DUGOVANJE

IF(@SALDO_DUGUJE>0)

BEGIN

SET REDNI_BROJ_PROMENE=@REDNI_BROJ_PROMENE+1

INSERT INTO FINANSIJSKE_PROMENE VALUES (

@pOZNAKA_VRSTE_NALOGA,@pSIFRA_PREDUZECA,@pPOSLOVNA_GODINA,

@BROJ_NALOGA,@REDNI_BROJ_PROMENE,@OZNAKA_KLASE, @OZNAKA_GRUPE,

@OZNAKA_PODGRUPE,@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE,'AKLJUCNO

KNJIZENJE','D', -@SALDO_DUGUJE, @DATUM, 'N')

END

-- POTRAŢIVANJE

IF(@SALDO_POTRAZUJE>0)

BEGIN

SET @REDNI_BROJ_PROMENE=@REDNI_BROJ_PROMENE+1

INSERT INTO FINANSIJSKE_PROMENE VALUES (

@pOZNAKA_VRSTE_NALOGA,@pSIFRA_PREDUZECA,@pPOSLOVNA_GODINA,

@BROJ_NALOGA,@REDNI_BROJ_PROMENE,@OZNAKA_KLASE, @OZNAKA_GRUPE,

@OZNAKA_PODGRUPE,@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE,'AKLJUCNO

KNJIZENJE','P', -@SALDO_DUGUJE, @DATUM, 'N')

END

-- PRISTUPAMO SLEDEĆEM SLOGU

FETCH NEXT FROM cursGLAVNA_KNJIGA INTO @OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE, @PROMET_DUGUJE,

@PROMET_POTRAZUJE, @SALDO_DUGUJE, @SALDO_POTRAZUJE

END

-- ZATVARAMO KURSOR I DELOCIRAMO RESURSE

CLOSE cursGLAVNA_KNJIGA

DEALLOCATE cursGLAVNA_KNJIGA

-- POTVRĐUJEMO TRANSAKCIJU

COMMIT TRANSACTION

GO

---------------------------------------------------------------------

-- POMOĆNA PROCEDURA, POZIVAJU JE TRIGERI

CREATE PROCEDURE AzuriranjeDugovanjaIPotrazivanjaNaNalogu

-- ULAZNE PROMENLJIVE

@SIFRA_PREDUZECA CHAR(4),

@OZNAKA_VRSTE_NALOGA CHAR(2),

@POSLOVNA_GODINA CHAR(4),

@BROJ_NALOGA NUMERIC(8)

AS

DECLARE

-- LOKALNE PROMENLJIVE

@UKUPNO_DUGUJE DECIMAL(12,2),

@UKUPNO_POTRAZUJE DECIMAL(12,2)

-- IZRAČUNAVAMO UKUPNO DUGOVANJE

IF EXISTS (SELECT 1 FROM FINANSIJSKE_PROMENE WHERE

SIFRA_PREDUZECA=@SIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA=@OZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@POSLOVNA_GODINA AND

BROJ_NALOGA=@BROJ_NALOGA AND

SMER_PROMENE='D')

BEGIN

SELECT @UKUPNO_DUGUJE=SUM(IZNOS_PROMENE) FROM FINANSIJSKE_PROMENE WHERE

SIFRA_PREDUZECA=@SIFRA_PREDUZECA AND OZNAKA_VRSTE_NALOGA=@OZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@POSLOVNA_GODINA AND BROJ_NALOGA=@BROJ_NALOGA AND SMER_PROMENE='D'

END

ELSE

SET @UKUPNO_DUGUJE=0

-- IZRAČUNAVAMO UKUPNO POTRAŢIVANJE

IF EXISTS ( SELECT 1 FROM FINANSIJSKE_PROMENE WHERE

SIFRA_PREDUZECA=@SIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA=@OZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@POSLOVNA_GODINA AND

BROJ_NALOGA=@BROJ_NALOGA AND SMER_PROMENE='P')

BEGIN

SELECT @UKUPNO_DUGUJE=SUM(IZNOS_PROMENE) FROM FINANSIJSKE_PROMENE WHERE

SIFRA_PREDUZECA=@SIFRA_PREDUZECA AND OZNAKA_VRSTE_NALOGA=@OZNAKA_VRSTE_NALOGA AND

POSLOVNA_GODINA=@POSLOVNA_GODINA AND BROJ_NALOGA=@BROJ_NALOGA AND SMER_PROMENE='P'

END

ELSE

SET @UKUPNO_POTRAZUJE=0

-- OSVEŢAVANJE UKUPNIH DUGOVANJA I POTRAŢIVANJA

Page 58: Podrska finansijskom knjigovodstvu

58

UPDATE NALOG_ZA_KNJIZENJE SET UKUPNO_DUGUJE=@UKUPNO_DUGUJE,

UKUPNO_POTRAZUJE=@UKUPNO_POTRAZUJE WHERE

SIFRA_PREDUZECA=@SIFRA_PREDUZECA AND OZNAKA_VRSTE_NALOGA=@OZNAKA_VRSTE_NALOGA

AND

POSLOVNA_GODINA=@POSLOVNA_GODINA AND BROJ_NALOGA=@BROJ_NALOGA

GO

----------------------------------------------------------------------

-- RADI STORNIRANJE NALOGA, POŠTO BRISANJE PROKNJŢENOG NIJE MOGUĆE

CREATE PROCEDURE StornoNaloga

-- ULAZNE PROMENLJIVE

@pOZNAKA_VRSTE_NALOGA CHAR(2),

@pSIFRA_PREDUZECA CHAR(4),

@pPOSLOVNA_GODINA CHAR(4),

@pBROJ_NALOGA NUMERIC(8),

@pKORISNICKO_IME_REFERENTA VARCHAR(30)

AS

DECLARE

-- LOKALNE PROMENLJIVE

@SIFRA_PREDUZECA CHAR(4),

@POSLOVNA_GODINA CHAR(4),

@OZNAKA_KLASE CHAR(1),

@OZNAKA_GRUPE CHAR(1),

@OZNAKA_PODGRUPE CHAR(1),

@OZNAKA_SINTETIKE CHAR(1),

@OZNAKA_ANALITIKE CHAR(2),

@OZNAKA_SUBANALITIKE CHAR(3),

@SMER_PROMENE CHAR(1),

@IZNOS_PROMENE DECIMAL(12,2),

@DATUM DATETIME,

@BROJ_NALOGA NUMERIC(8),

@REDNI_BROJ_PROMENE NUMERIC(10),

@STATUS CHAR(1)

-- UZIMAMO TRENUTNO VREME

SET @DATUM=GETDATE()

-- STATUS NALOGA MORA BITI PROKNJIŢEN DA BI SE RADIO STORNO

SELECT @STATUS=STATUS FROM NALOG_ZA_KNJIZENJE

WHERE

POSLOVNA_GODINA = @pPOSLOVNA_GODINA AND

SIFRA_PREDUZECA = @pSIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA = @pOZNAKA_VRSTE_NALOGA AND

BROJ_NALOGA = @pBROJ_NALOGA

IF (@STATUS <> 'P')

BEGIN

RAISERROR('MORA BITI PROKNJIŢEN DA BI SE STORNIRAO',11,2)

RETURN

END

BEGIN

BEGIN TRANSACTION

-- DEKLARIŠEMO KURSOR(SKUP SLOGOVA KOJEM ŢELIMO DA PRISTUPAMO)

DECLARE cursFINANSIJSKE_PROMENE CURSOR FOR

SELECT OZNAKA_KLASE, OZNAKA_GRUPE, OZNAKA_PODGRUPE, OZNAKA_SINTETIKE,

OZNAKA_ANALITIKE,

OZNAKA_SUBANALITIKE, SMER_PROMENE, IZNOS_PROMENE FROM FINANSIJSKE_PROMENE WHERE

POSLOVNA_GODINA = @pPOSLOVNA_GODINA AND SIFRA_PREDUZECA = @pSIFRA_PREDUZECA AND

OZNAKA_VRSTE_NALOGA = @pOZNAKA_VRSTE_NALOGA AND

BROJ_NALOGA = @pBROJ_NALOGA

-- OTVARANJE KURSORA, POKAZIVAČ JE NA PRVOM SLOGU

OPEN cursFINANSIJSKE_PROMENE

-- PRISTUPAMO PRVOM SLOGU

FETCH NEXT FROM cursFINANSIJSKE_PROMENE INTO @OZNAKA_KLASE, @OZNAKA_GRUPE,

@OZNAKA_PODGRUPE, @OZNAKA_SINTETIKE,

@OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE, @SMER_PROMENE, @IZNOS_PROMENE

-- PRONALAZIMO SLOBODAN BROJ NALOGA

IF EXISTS (

SELECT 1 FROM NALOG_ZA_KNJIZENJE

)

BEGIN

SELECT @BROJ_NALOGA=max(BROJ_NALOGA)+1 FROM NALOG_ZA_KNJIZENJE

END

ELSE

BEGIN

SET @BROJ_NALOGA = 0;

Page 59: Podrska finansijskom knjigovodstvu

59

END

-- KREIRAMO NOVI NALOG

INSERT INTO NALOG_ZA_KNJIZENJE VALUES('02', @pSIFRA_PREDUZECA,

@pPOSLOVNA_GODINA, @BROJ_NALOGA, @pKORISNICKO_IME_REFERENTA, @DATUM, 0, 0, NULL, 'N')

-- PRONALAZIMO SLOBODAN REDNI_BROJ_PROMENE

IF EXISTS (

SELECT 1 FROM FINANSIJSKE_PROMENE

)

BEGIN

SELECT

@REDNI_BROJ_PROMENE=max(REDNI_BROJ_PROMENE)

FROM FINANSIJSKE_PROMENE

END

ELSE

BEGIN

SET @REDNI_BROJ_PROMENE = 0;

END

--ZA @@FETCH_STATUS=0 ZNAČI DA NIJE KRAJ

WHILE (@@FETCH_STATUS=0)

BEGIN

SET @REDNI_BROJ_PROMENE=@REDNI_BROJ_PROMENE+1

INSERT INTO FINANSIJSKE_PROMENE VALUES (

'02', @pSIFRA_PREDUZECA, @pPOSLOVNA_GODINA, @BROJ_NALOGA,

@REDNI_BROJ_PROMENE, @OZNAKA_KLASE, @OZNAKA_GRUPE, @OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE,

@OZNAKA_SUBANALITIKE, 'STORNO', @SMER_PROMENE, IZNOS_PROMENE,

@DATUM, 'N')

FETCH NEXT FROM cursFINANSIJSKE_PROMENE INTO @OZNAKA_KLASE, @OZNAKA_GRUPE,

@OZNAKA_PODGRUPE, @OZNAKA_SINTETIKE, @OZNAKA_ANALITIKE, @OZNAKA_SUBANALITIKE,

@SMER_PROMENE, @IZNOS_PROMENE

END

-- ZATVARAMO KURSOR I DELOCIRAMO RESURSE

CLOSE cursFINANSIJSKE_PROMENE

DEALLOCATE cursFINANSIJSKE_PROMENE

COMMIT TRANSACTION

END

GO

5.2 Trigeri

--------------------------------------------------------------------

-- CREATE TRIGGER NEMA_EDITOVANJA_PROKNJIZENIH_TRANSAKCIJA ON FINANSIJSKE_PROMENE

-- NE DOZVOLJAVA AŢURIRANJE VEĆ PROKNJIŢENIH TRANSAKCIJA

-- NE DOZVOLJAVA AŢURIRANJE SMERA FINANSIJSKE PROMENE AKO TO SUBANALITIKA NE

DOZVOLJAVA ( POTRAŢNA I/ILI DUGOVNA )

-- NE DOZVOLJAVA PROMENU PARTNERA AKO NOVI PARTNER NE ODGOVARA IZABRANOJ ULOZI ( KUPAC

I/ILI DOBAVLJAČ )

crEATE TRIGGER KontrolaAzuriranjaFinansijskihPromena ON FINANSIJSKE_PROMENE FOR

UPDATE

AS

--DEKLARISEMO PROMENLJIVE

DECLARE

-- FINANSIJSKE PROMENE

@SIFRA_PREDUZECA char(4),

@OZNAKA_KLASE char(1),

@OZNAKA_GRUPE char(1),

@OZNAKA_PODGRUPE char(1),

@OZNAKA_SINTETIKE char(1),

@OZNAKA_ANALITIKE char(2),

@OZNAKA_SUBANALITIKE char(3),

@SMER_PROMENE char(1),

@PROKNJIZEN char(1),

-- SUBANALITIKA

@DUGOVNI bit,

@POTRAZNI bit,

@SUBANALITIKA_DOBAVLJACA bit,

@SUBANALITIKA_KUPACA bit,

@SUBANALITIKA_ZAPOSLENOG bit,

@SUBANALITIKA_ODELJENJA bit,

-- POSLOVNI PARTNERI

@SIFRA_PARTNERA char(4),

Page 60: Podrska finansijskom knjigovodstvu

60

@TIP_POSLOVNOG_PARTNERA char(1),

@KUPAC bit,

@DOBAVLJAC bit,

-- NALOG

@OZNAKA_VRSTE_NALOGA char(2),

@BROJ_NALOGA numeric(8,0),

@POSLOVNA_GODINA char(4)

-- PROVERAVAMO DA DOKUMENT RANIJE NIJE PROKNJIŢEN

SELECT @PROKNJIZEN = PROKNJIZEN

FROM DELETED

IF (@PROKNJIZEN='P')

BEGIN

RAISERROR ('NE MOŢETE IZMENITI PROKNJIŢENU TRANSAKCIJU', 16, 1)

ROLLBACK

END

--UCITAVAMO PODATKE KOJE SMO DOBILI DA IZMENIMO U FINANSIJSKOJ PROMENI

SELECT

@PROKNJIZEN = PROKNJIZEN ,

@SIFRA_PREDUZECA = SIFRA_PREDUZECA,

@OZNAKA_KLASE = OZNAKA_KLASE,

@OZNAKA_GRUPE = OZNAKA_GRUPE,

@OZNAKA_PODGRUPE = OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE = OZNAKA_SINTETIKE,

@OZNAKA_ANALITIKE = OZNAKA_ANALITIKE,

@OZNAKA_SUBANALITIKE = OZNAKA_SUBANALITIKE,

@SMER_PROMENE = SMER_PROMENE,

@OZNAKA_VRSTE_NALOGA = OZNAKA_VRSTE_NALOGA,

@BROJ_NALOGA = BROJ_NALOGA,

@POSLOVNA_GODINA = POSLOVNA_GODINA

FROM INSERTED

-- UČITAVAMO PODATKE IZ SUBANALITIKE

SELECT

@DUGOVNI = DUGOVNI,

@POTRAZNI = POTRAZNI,

@SIFRA_PARTNERA = SIFRA_PARTNERA,

@TIP_POSLOVNOG_PARTNERA = TIP_POSLOVNOG_PARTNERA,

@SUBANALITIKA_DOBAVLJACA = SUBANALITIKA_DOBAVLJACA,

@SUBANALITIKA_KUPACA = SUBANALITIKA_KUPACA,

@SUBANALITIKA_ZAPOSLENOG = SUBANALITIKA_ZAPOSLENOG,

@SUBANALITIKA_ODELJENJA = SUBANALITIKA_ODELJENJA

FROM Subanaliticki_konto

WHERE

SIFRA_PREDUZECA = @SIFRA_PREDUZECA AND

OZNAKA_KLASE = @OZNAKA_KLASE AND

OZNAKA_GRUPE = @OZNAKA_GRUPE AND

OZNAKA_PODGRUPE = @OZNAKA_PODGRUPE AND

OZNAKA_SINTETIKE = @OZNAKA_SINTETIKE AND

OZNAKA_ANALITIKE = @OZNAKA_ANALITIKE AND

OZNAKA_SUBANALITIKE = @OZNAKA_SUBANALITIKE

-- PROVERA DA LI JE BILO STA PRONADJENO (TJ. DA LI ZADATI POSTOJI KONTO)

IF (@DUGOVNI = NULL)

BEGIN

RAISERROR ('NE MOŢETE KNJIŢITI NA NEPOSTOJUĆI KONTO', 16, 1)

ROLLBACK

RETURN

END

-- PROVERAVAMO PRAVA KNJIŢENJA U ODNOSU NA TIP SUBANALITIKE (KONTA)

IF (@SMER_PROMENE = 'D')

BEGIN

IF (@DUGOVNI = 0)

BEGIN

RAISERROR ('NE MOŢETE KNJIŢITI DUGUJE NA POTRAŢNU SUBANALITIKU', 16, 1)

ROLLBACK

RETURN

END

END

ELSE IF (@SMER_PROMENE = 'P')

BEGIN

IF (@POTRAZNI = 0)

BEGIN

RAISERROR ('NE MOŢETE KNJIŢITI POTRAŢUJE NA DUGOVNU SUBANALITIKU', 16,

1)

ROLLBACK

RETURN

END

END

Page 61: Podrska finansijskom knjigovodstvu

61

-- PROVERAVAMO DA LI STATUS POSLOVNOG PARTNERA ODGOVARA NJEGOVOM OPISU

IF(( (@SIFRA_PARTNERA<>NULL) OR (@SIFRA_PARTNERA<>'') )AND (

(@TIP_POSLOVNOG_PARTNERA<>NULL) OR (@TIP_POSLOVNOG_PARTNERA<>'') ))

BEGIN

-- UČITAVAMO PODATKE IZ TABELE POSLOVNIH PARTNERA

SELECT

@DOBAVLJAC=DOBAVLJAC, @KUPAC=KUPAC

FROM POSLOVNI_PARTNERI

where

SIFRA_PREDUZECA=@SIFRA_PARTNERA and

TIP_POSLOVNOG_PARTNERA=@TIP_POSLOVNOG_PARTNERA and

SIFRA_PARTNERA=@SIFRA_PARTNERA

-- PROVERA ZA SLUČAJ DOBAVLJAČA

IF (@SMER_PROMENE = 'D')

BEGIN

IF(@DOBAVLJAC=0)

BEGIN

RAISERROR ('PARTNER IZABRAN ZA DOBAVLJAČA NEMA STATUS

DOBAVLJAČA', 16, 1)

ROLLBACK

END

END

ELSE IF (@SMER_PROMENE = 'P')

BEGIN

IF(@KUPAC=0)

BEGIN

RAISERROR ('PARTNER IZABRAN ZA KUPCA NEMA STATUS KUPCA', 16, 1)

ROLLBACK

END

END

END

-- AZURIRANJE PODATAKA NA NALOGU SA KOJEG JE OBRISANA FINANSIJSKA PROMENA

EXEC AzuriranjeDugovanjaIpotrazivanjaNaNalogu @SIFRA_PREDUZECA,

@OZNAKA_VRSTE_NALOGA, @POSLOVNA_GODINA, @BROJ_NALOGA

GO

--------------------------------------------------------

--CREATE TRIGGER NEMA_UNOŠENJA_PROKNJIZENIH_TRANSAKCIJA ON FINANSIJSKE_PROMENE

-- NE DOZVOLJAVA UNOS VEĆ PROKNJIŢENIH TRANSAKCIJA

-- NE DOZVOLJAVA UNOS NEODGOVARAJUĆEG SMERA FINANSIJSKE PROMENE ( U ODNOSU NA

SUBANALITIKU ( POTRAŢNA I/ILI DUGOVNA ))

-- NE DOZVOLJAVA UNOS KUPCA I/ILI DOBAVLJAČA I/ILI ZAPOSLENOG I/ILI SLUŢBE AKO

IZABRANA SUBANALITIKA TO NE PODRŢAVA ( SUBANALITIKA KUPCA,DOBAVLJAČA,ZAPOSLENOG I

SLUŢBE )

-- NE DOZVOLJAVA UNOS PARTNERA AKO PARTNER NE ODGOVARA IZABRANOJ ULOZI ( KUPAC I/ILI

DOBAVLJAC )

CREATE TRIGGER KontrolaUnosaFinansijskihPromena ON Finansijske_promene

FOR INSERT

AS

-- DEKLARISEMO PROMENLJIVE

DECLARE

-- FINANSIJSKE PROMENE

@SIFRA_PREDUZECA char(4),

@OZNAKA_KLASE char(1),

@OZNAKA_GRUPE char(1),

@OZNAKA_PODGRUPE char(1),

@OZNAKA_SINTETIKE char(1),

@OZNAKA_ANALITIKE char(2),

@OZNAKA_SUBANALITIKE char(3),

@PROKNJIZEN char(1),

@SMER_PROMENE char(1),

-- SUBANALITIKA

@SIFRA_SEKTORA char(1),

@SIFRA_SLUZBE char(2),

@SIFRA_ODELJENJA char(2),

@MATICNI_BROJ char(4),

@DUGOVNI bit,

@POTRAZNI bit,

@SUBANALITIKA_DOBAVLJACA bit,

@SUBANALITIKA_KUPACA bit,

@SUBANALITIKA_ZAPOSLENOG bit,

@SUBANALITIKA_ODELJENJA bit,

Page 62: Podrska finansijskom knjigovodstvu

62

-- POSLOVNI PARTNERI

@SIFRA_PARTNERA char(4),

@TIP_POSLOVNOG_PARTNERA char(1),

@KUPAC bit,

@DOBAVLJAC bit,

-- NALOG

@OZNAKA_VRSTE_NALOGA char(2),

@POSLOVNA_GODINA char(4),

@BROJ_NALOGA numeric(8,0),

@STATUS char(1)

-- UČITAVAMO PODATKE KOJE SMO DOBILI DA INSERTUJEMO U FINANSIJSKU PROMENU

SELECT

@PROKNJIZEN =PROKNJIZEN ,

@SIFRA_PREDUZECA = SIFRA_PREDUZECA,

@OZNAKA_KLASE = OZNAKA_KLASE,

@OZNAKA_GRUPE = OZNAKA_GRUPE,

@OZNAKA_PODGRUPE = OZNAKA_PODGRUPE,

@OZNAKA_SINTETIKE = OZNAKA_SINTETIKE,

@OZNAKA_ANALITIKE = OZNAKA_ANALITIKE,

@OZNAKA_SUBANALITIKE = OZNAKA_SUBANALITIKE,

@SMER_PROMENE = SMER_PROMENE,

@OZNAKA_VRSTE_NALOGA=OZNAKA_VRSTE_NALOGA,

@POSLOVNA_GODINA=POSLOVNA_GODINA,

@BROJ_NALOGA=BROJ_NALOGA

FROM INSERTED

-- PROVERAVAMO DA DOKUMENT RANIJE NIJE PROKNJIŢEN

IF (@PROKNJIZEN='P')

BEGIN

RAISERROR ('NE MOŢETE UNETI PROKNJIŢENU TRANSAKCIJU', 16, 1)

ROLLBACK

END

-- UČITAVAMO PODATKE IZ SUBANALITIKE

SELECT

@SIFRA_PARTNERA=SIFRA_PARTNERA,

@TIP_POSLOVNOG_PARTNERA=TIP_POSLOVNOG_PARTNERA,

@SIFRA_SEKTORA=SIFRA_SEKTORA,

@SIFRA_SLUZBE = SIFRA_SLUZBE,

@SIFRA_ODELJENJA = SIFRA_ODELJENJA,

@MATICNI_BROJ=MATICNI_BROJ,

@DUGOVNI = DUGOVNI,

@POTRAZNI = POTRAZNI,

@SUBANALITIKA_DOBAVLJACA=SUBANALITIKA_DOBAVLJACA,

@SUBANALITIKA_KUPACA=SUBANALITIKA_KUPACA,

@SUBANALITIKA_ZAPOSLENOG=SUBANALITIKA_ZAPOSLENOG,

@SUBANALITIKA_ODELJENJA=SUBANALITIKA_ODELJENJA

FROM SUBANALITICKI_KONTO

WHERE

SIFRA_PREDUZECA = @SIFRA_PREDUZECA AND

OZNAKA_KLASE = @OZNAKA_KLASE AND

OZNAKA_GRUPE = @OZNAKA_GRUPE AND

OZNAKA_PODGRUPE = @OZNAKA_PODGRUPE AND

OZNAKA_SINTETIKE = @OZNAKA_SINTETIKE AND

OZNAKA_ANALITIKE = @OZNAKA_ANALITIKE AND

OZNAKA_SUBANALITIKE = @OZNAKA_SUBANALITIKE

-- PROVERA DA LI JE BILO STA PRONADJENO (TJ. DA LI ZADATI POSTOJI KONTO)

IF (@SUBANALITIKA_DOBAVLJACA = NULL)

BEGIN

RAISERROR ('NE MOŢETE KNJIŢITI NA NEPOSTOJUĆI KONTO', 16, 1)

ROLLBACK

RETURN

END

--PROVERAVAMO PRAVA KNJIZENJA U ODNOSU NA TIP SUBANALITIKE (KONTA)

IF (@SMER_PROMENE = 'D')

BEGIN

IF (@DUGOVNI = 0)

BEGIN

RAISERROR ('NE MOŢETE KNJIŢITI DUGUJE NA POTRAŢNU SUBANALITIKU', 16, 1)

ROLLBACK

Page 63: Podrska finansijskom knjigovodstvu

63

RETURN

END

END

ELSE IF (@SMER_PROMENE = 'P')

BEGIN

IF (@POTRAZNI = 0)

BEGIN

RAISERROR ('NE MOŢETE KNJIŢITI POTRAŢUJE NA DUGOVNU SUBANALITIKU', 16,

1)

ROLLBACK

RETURN

END

END

-- SUBANALITIKA ZAPOSLENOG

IF( (@MATICNI_BROJ<>NULL) OR (@MATICNI_BROJ<>'') )

BEGIN

IF EXISTS ( SELECT 1 FROM ZAPOSLENI WHERE

SIFRA_PREDUZECA=@SIFRA_PREDUZECA AND

MATICNI_BROJ=@MATICNI_BROJ)

BEGIN

IF(@SUBANALITIKA_ZAPOSLENOG=0)

BEGIN

RAISERROR ('IZABRANA SUBANALITIKA NIJE SUBANALITIKA

ZAPOSLENOG', 16, 1)

ROLLBACK

END

END

ELSE

BEGIN

RAISERROR ('NE POSTOJE SVI NEOPHODNI PARAMETRI ZAPOSLENOG', 16,

1)

ROLLBACK

END

END

-- SUBANALITIKA ODELJENJA

IF( ( (@SIFRA_SEKTORA<>NULL) OR (@SIFRA_SEKTORA<>'') ) OR

( (@SIFRA_SLUZBE<>NULL) OR (@SIFRA_SLUZBE<>'') ) OR

( (@SIFRA_ODELJENJA<>NULL) OR (@SIFRA_ODELJENJA<>'') ) )

BEGIN

IF EXISTS ( SELECT 1 FROM ODELJENJE WHERE

SIFRA_PREDUZECA=@SIFRA_PREDUZECA AND

SIFRA_SEKTORA=@SIFRA_SEKTORA AND

SIFRA_SLUZBE=@SIFRA_SLUZBE AND

SIFRA_ODELJENJA = @SIFRA_ODELJENJA)

BEGIN

IF(@SUBANALITIKA_ODELJENJA=0)

BEGIN

RAISERROR ('IZABRANA SUBANALITIKA NIJE SUBANALITIKA ODELJENJA',

16, 1)

ROLLBACK

END

END

ELSE

BEGIN

RAISERROR ('NE POSTOJE SVI NEOPHODNI PARAMETRI ODELJENJA', 16, 1)

ROLLBACK

END

END

-- SUBANALITIKA POSLOVNOG PARTNERA

IF(( (@SIFRA_PARTNERA<>NULL)OR(@SIFRA_PARTNERA<>'')) OR

((@TIP_POSLOVNOG_PARTNERA<>NULL)OR(@TIP_POSLOVNOG_PARTNERA<>'') ))

BEGIN

SELECT

@DOBAVLJAC=DOBAVLJAC,

@KUPAC=KUPAC

FROM POSLOVNI_PARTNERI

WHERE

SIFRA_PARTNERA=@SIFRA_PARTNERA AND

TIP_POSLOVNOG_PARTNERA=@TIP_POSLOVNOG_PARTNERA

IF EXISTS (SELECT 1 FROM POSLOVNI_PARTNERI WHERE

SIFRA_PARTNERA=@SIFRA_PARTNERA AND

TIP_POSLOVNOG_PARTNERA=@TIP_POSLOVNOG_PARTNERA)

BEGIN

IF (@SMER_PROMENE = 'D')

Page 64: Podrska finansijskom knjigovodstvu

64

BEGIN

IF((@DOBAVLJAC=0) OR (@DOBAVLJAC=NULL))

BEGIN

RAISERROR ('PARTNER IZABRAN ZA DOBAVLJAČA NIJE

DOBAVLJAČ', 16, 1)

ROLLBACK

END

IF((@SUBANALITIKA_DOBAVLJACA=0)OR(@SUBANALITIKA_DOBAVLJACA=NULL))

BEGIN

RAISERROR ('IZABRANA SUBANALITIKA NIJE SUBANALITIKA

DOBAVLJAČA', 16, 1)

ROLLBACK

END

END

ELSE IF (@SMER_PROMENE = 'P')

BEGIN

IF((@KUPAC=0) OR (@KUPAC=NULL) )

BEGIN

RAISERROR ('PARTNER IZABRAN ZA KUPCA NIJE KUPAC', 16, 1)

ROLLBACK

END

IF((@SUBANALITIKA_KUPACA=0) OR (@SUBANALITIKA_KUPACA=NULL) )

BEGIN

RAISERROR ('IZABRANA SUBANALITIKA NIJE SUBANALITIKA

KUPCA', 16, 1)

ROLLBACK

END

END

END

ELSE

BEGIN

RAISERROR ('NE POSTOJE SVI NEOPHODNI PARAMETRI POSLOVNOG PARTNERA', 16,

1)

ROLLBACK

END

END

SELECT

@STATUS=STATUS

FROM NALOG_ZA_KNJIZENJE WHERE

SIFRA_PREDUZECA=@SIFRA_PREDUZECA AND

POSLOVNA_GODINA=@POSLOVNA_GODINA AND

OZNAKA_VRSTE_NALOGA=@OZNAKA_VRSTE_NALOGA AND

BROJ_NALOGA=@BROJ_NALOGA

IF(@STATUS='P')

BEGIN

RAISERROR ('NE MOŢETE DODATI FINANSIJSKU PROMENU NA PROKNJIŢEN NALOG', 16, 1)

ROLLBACK

END

EXEC AzuriranjeDugovanjaIpotrazivanjaNaNalogu

@SIFRA_PREDUZECA,@OZNAKA_VRSTE_NALOGA,@POSLOVNA_GODINA,@BROJ_NALOGA

GO

--------------------------------------------------------------

-- NE DOZVOLJAVA BRISANJE FINANSIJSKE PROMENE SA STATUSOM PROKNJIŢENA

CREATE TRIGGER KontrolaBrisanjaFinansijskihPromena ON FINANSIJSKE_PROMENE FOR DELETE

AS

-- DEKLERACIJA PROMENLJIVIH

declare

@PROKNJIZEN char(1),

@SIFRA_PREDUZECA char(4),

@OZNAKA_VRSTE_NALOGA char(2),

@POSLOVNA_GODINA char(4),

@BROJ_NALOGA numeric(8,0)

-- UČITAVAMO POTREBNE PODATKE O ELEMENTU KOJI TREBA DA SE BRIŠE

SELECT

@PROKNJIZEN =PROKNJIZEN ,

@OZNAKA_VRSTE_NALOGA=OZNAKA_VRSTE_NALOGA,

@POSLOVNA_GODINA=POSLOVNA_GODINA,

@BROJ_NALOGA=BROJ_NALOGA,

@SIFRA_PREDUZECA = SIFRA_PREDUZECA

FROM DELETED

Page 65: Podrska finansijskom knjigovodstvu

65

IF (@PROKNJIZEN='P')

BEGIN

RAISERROR ('NE MOZETE OBRISATI PROKNJIZENU TRANSAKCIJU', 16, 1)

ROLLBACK

END

-- AŢURIRANJE PODATAKA NA NALOGU SA KOJEG JE OBRISANA FINANSIJSKA PROMENA

EXEC AzuriranjeDugovanjaIpotrazivanjaNaNalogu

@SIFRA_PREDUZECA,@OZNAKA_VRSTE_NALOGA,@POSLOVNA_GODINA,

@BROJ_NALOGA

GO

--------------------------------------------------------------

-- NE DOZVOLJAVA AZURIRANJE PROKNJIZENIH NALOGA

crEATE TRIGGER KontrolaAzuriranjaNaloga ON NALOG_ZA_KNJIZENJE

FOR UPDATE

AS

DECLARE

@STATUS CHAR(1)

SELECT @STATUS =STATUS FROM DELETED

IF (@STATUS='P')

BEGIN

RAISERROR ('NE MOŢETE VRŠITI IZMENU NAD PROKNJIŢENIM NALOGOM', 16, 1)

ROLLBACK

END

GO

--------------------------------------------------------------

-- NE DOZVOLJAVA UNOS NALOGA SA STATUSOM PROKNJIZEN

crEATE TRIGGER KontrolaUnosaNaloga ON NALOG_ZA_KNJIZENJE

FOR INSERT

AS

DECLARE

@STATUS CHAR(1)

SELECT @STATUS =STATUS FROM INSERTED

IF (@STATUS='P')

BEGIN

RAISERROR ('NE MOŢETE UNETI PROKNJIŢEN NALOG, STATUS PRI UNOSU MORA IMATI

VREDNOST "N"', 16, 1)

ROLLBACK

END

GO

--------------------------------------------------------------

-- NE DOZVOLJAVA BRISANJE NALOGA SA STATUSOM PROKNJIZEN

crEATE TRIGGER KontrolaBrisanjaNaloga ON nalog_za_knjizenje

FOR DELETE

AS

DECLARE

@STATUS CHAR(1)

SELECT @STATUS =STATUS FROM DELETED

IF (@STATUS='P')

BEGIN

RAISERROR ('NE MOŢETE OBRISATI PROKNJIŢENI NALOG',

16, 1)

ROLLBACK

END

GO

Page 66: Podrska finansijskom knjigovodstvu

66

5.3 Primeri generisanih izveštaja

Page 67: Podrska finansijskom knjigovodstvu

67

Page 68: Podrska finansijskom knjigovodstvu

68

Page 69: Podrska finansijskom knjigovodstvu

69

Page 70: Podrska finansijskom knjigovodstvu

70

Page 71: Podrska finansijskom knjigovodstvu

71

Page 72: Podrska finansijskom knjigovodstvu

72

Page 73: Podrska finansijskom knjigovodstvu

73

5.4 Uputstvo za instalaciju

Program radi na Windows operativnim sistemima i koristi Microsoft .NET

Frameworks v2.0 .

5.4.1 Serverska strana

Podizanje servera:

x86 OS

Pokrenuti .\Server\Microsoft SQL Server 2005 Express Edition Service Pack

2\SQLEXPR32.EXE (preporuka, koristiti Windows Authentication kao pravo

pristupa)

Pokrenuti .\Server\Microsoft SQL Server 2005 Express Edition Service Pack

2\SQLServer2005_SSMSEE.msi

U slučaju da server nije automatsi startovan , startovati ga.

x64 OS

Pokrenuti .\Server\Microsoft SQL Server 2005 Express Edition Service Pack

2\SQLEXPR.EXE (preporuka, koristiti Windows Authentication kao pravo pristupa)

Pokrenuti .\Server\Microsoft SQL Server 2005 Express Edition Service Pack

2\SQLServer2005_SSMSEE.msi

U slučaju da server nije automatsi startovan , startovati ga.

Kreiranje baze podataka:

Pokrenuti Start→Progrms→Microsoft SQL Server 2005→SQL Server Managment

Studio Express.

Konektovati se na bazu.

Kreirati bazu podataka pod imenom "finansijsko". Koristiti komandu: create database

finanijsko

Nad novokreiranom bazom izvršiti skriptove ovim redosledom

.\Server\SQL Skript\crebas.sql --tabele, veze, indeksi

.\Server\SQL Skript\Procedure.sql --logika .\Server\SQL Skript\Trigeri.sql --logika

.\Server\SQL Skript\Test Podaci.sql --(*ovo samo u slučaju testiranja programa)

Kreirati prvog administratora naloga (*ukoliko je prethodno pokretan TestPodaci.sql

ovo preskociti). Primer kreiranja admin naloga: INSERT INTO DRZAVA VALUES('srb', 'Srbija', 1)

INSERT INTO NASELJENO_MESTO VALUES('srb', 11000, 's', 'Beograd')

INSERT INTO PREDUZECE VALUES('0001', 'srb', 11000, 'C-Market','Mise

Dimitrijevica 4b', '1285565', '9331233', '011/123-456', 1)

INSERT INTO ZAPOSLENI VALUES('0001','0001', 'srb', 11000, '1','20','91',

'Panic', 'Goran', 'Isa', 1234005290123, 'Đure Jakšiča 87', '011-123123',

'Pripravnik')

INSERT INTO REFERENTI VALUES('a','0001','0001','a',4)

Kreirati vrste naloga (**moguće je uraditi iz klijentske aplikacije) (*ukoliko je

prethodno pokretan TestPodaci.sql ovo preskociti) INSERT INTO VRSTE_NALOGA_ZA_KNJIZENJE VALUES ( '01', 'NALOG' )

INSERT INTO VRSTE_NALOGA_ZA_KNJIZENJE VALUES ( '02', 'STORNO' )

INSERT INTO VRSTE_NALOGA_ZA_KNJIZENJE VALUES ( '03', 'OTVARANJE POČETNO STANJA' )

INSERT INTO VRSTE_NALOGA_ZA_KNJIZENJE VALUES ( '04', 'ZATVARANJE GLAVNE KNJIGE' )

INSERT INTO VRSTE_NALOGA_ZA_KNJIZENJE VALUES ( '05', 'ZAKLJUČNO KNJIŢENJE' )

Page 74: Podrska finansijskom knjigovodstvu

74

5.4.2 Klientska strana

Neophodni programi:

x86 OS

Ukoliko nemate windowsInstaller v2.0 ili noviju, potrebno je instalirati

.\Client\WindowsInstallerV2x86\WindowsInstaller-KB893803-v2-x86.exe

Ukoliko nemate Microsoft .NET Frameworks v2.0 ili noviji instalirati

.\Client\Microsoft .NET Frameworks 3.5\ WindowsInstaller-KB893803-v2-

x86.exe\dotNetFx35setup.exe

x64 OS

Ukoliko nemate windowsInstaller v2.0 ili noviju, potrebno je instalirati

.\Client\WindowsInstallerV2x64\WindowsInstaller-KB893803-v2-x64.exe

Ukoliko nemate Microsoft .NET Frameworks v2.0 ili noviji instalirati

.\Client\Microsoft .NET Frameworks 3.5\ WindowsInstaller-KB893803-v2-

x64.exe\dotNetFx35setup.exe

Program Finanijsko Kjigovodstvo v2.0:

x86 OS

- Instalirajte program (*Program je potrebno instalirati (automatski podeseno) u

folder pod imenom ...\Finansijsko Knjigovodstvo\ ) .\Client\Finanijsko Knjigovodstvo\x86\Setup.exe

Podesiti konekcioni string: Start → Progrms → Finansijsko Knjigovodstvo →

Konfigurisanje → Finansijsko.exe.config

Pokrenite program i ulogujte se pod nalogom koji vam je kreirao administrator u

skladu sa vašim pravima (za primer gore: "a" , "a" ) x64 OS

Instalirajte program (*Program je potrebno instalirati (automatski odeseno) u folder

pod imenom ...\Finansijsko Knjigovodstvo\ )

.\Client\Finanijsko Knjigovodstvo\x64\Setup.exe

Podesiti konekcioni string: Start → Progrms → Finansijsko Knjigovodstvo →

Konfigurisanje → Finansijsko.exe.config

Pokrenite program i ulogujte se pod nalogom koji vam je kreirao administrator u

skladu sa vašim pravima (za primer gore: "a" , "a" )

Page 75: Podrska finansijskom knjigovodstvu

75

6. LITERATURA

[1] dr Dragan Mihajlović, “Informacioni sistemi i projektovanje baze podataka”, Novi Sad,

1998

[2] Vera Poznanić - Leko, “Računovodstvo”, za III razred ekonomske škole, Beograd, Juna

1997

[3] Vera Poznanić - Leko, “Računovodstvo”, za IV razred ekonomske škole, Beograd, Januar

2002

[4] dr Dragan Ivetić, “Interakcija čovek računar”, skripta, Novi Sad, 2006

[5] Karli Watson, Christian Nagel, Jacob Hammer Pedersen, Jon D. Reid, Morgan Skinner,

Eric White; “Beginning Visual C# 2005”, Wiley Publishing Inc. Indianapolis - Indiana, Copyright 2006

Page 76: Podrska finansijskom knjigovodstvu

76

Page 77: Podrska finansijskom knjigovodstvu

77

7. BIOGRAFIJA

Goran Panić je roĎen 5. januara 1981. godine u Kikindi. Osnovnu školu završio u

IĎošu školske 1995/1996. Srednju tehniču školu, smer elektrotehničar automatike završio u Kikindi školske 1999/2000 godine. Školske 2000/2001 upisao Fakultet tehničkih nauka,

odsek elektrotehnika i računarstvo, smer računarstvo i automatika. Školske 2005/2006 upisao

se na usmerenje za računarske nauke i informatiku.

Page 78: Podrska finansijskom knjigovodstvu

78

Page 79: Podrska finansijskom knjigovodstvu

KLJUČNA DOKUMENTACIJSKA INFORMACIJA

Redni broj,

RBR:

Identifikacioni broj,

IBR:

Tip dokumentacije,

TD: monografska publikacija

Tip zapisa,

TZ: tekstualni štampani dokument

Vrsta rada,

VR: diplomski rad

Autor,

AU: Goran Panić

Mentor,

MN: dr Dragan Mihajlović

Naslov rada, NR: Razvoj aplikacije za podršku finansijskom knjigovodstvu

Jezik publikacije,

JP: srpski (latinica)

Jezik izvoda,

JI: srpski / engleski

Zemlja publikovanja,

ZP: Srbija

Uže geografsko područje, UGP: Vojvodina

Godina,

GO: 2008

Izdavač,

IZ: autorski reprint

Mesto i adresa, MA: Novi Sad, Fakultet tehničkih nauka, Odsek za

računarstvo i automatiku, Trg D. Obradovića 6

Fizički opis rada,

FO: broj poglavlja: 7

broj stranica : 77

broj referenci : 5

broj tabela : 0

broj slika : 55

broj grafikona : 0

broj priloga : 4

Naučna oblast,

NO: računarske nauke

Page 80: Podrska finansijskom knjigovodstvu

Uža naučna oblast,

ND: informacioni sistemi

Predmetna odrednica/

ključne reči,

PO: finansijsko knjigovodstvo, nalog za knjiženje, finansijske promene, glavna knjiga, generisanje finansijskih izveštaja, NET Framework,

programski jezik C#, Microsoft SQL server

UDK broj,

UDK:

Čuva se u,

ČU: Biblioteka Fakulteta tehničkih nauka,

Trg D. Obradovića 6, Novi Sad

Važna napomena,

VN

Izvod,

IZ: U radu je opisana realizacija desktop aplikacije za podršku

finansijskom knjigovodstvu. Za implementaciju sistema korišćen je

C# programski jezik, NET Framework i Microsoft SQL Server

sistem za upravljanje bazom podataka.

Datum prihvatanja teme od

naučno-nastavnog veća,

DP:

Datum odbrane,

DO:

Članovi komisije,

KO

Predsednik: prof. dr Cvijan Krsmanović, red. prof., FTN Novi Sad

Član: prof. dr Ivan Luković, red. prof., FTN Novi Sad

Mentor: dr Dragan Mihajlović, docent, FTN Novi Sad

Page 81: Podrska finansijskom knjigovodstvu

KEY WORDS DOCUMENTATION

Accession number,

ANO:

Indentification number,

INO:

Document type,

DT: Monographic publication

Type of recordset,

TR: Textual material

Contents code,

CC: BSC Thesis

Author,

AU: Goran Panić

Mentor,

MN: Dragan Mihajlović, PhD

Title, TI: Development of application for finantial accountancy

support

Language of text,

LT: Serbian (latin)

Language of abstract,

LA: Serbian and English

Country of publication,

CP: Serbia

Locality of publication,

LP: Vojvodina

Publication year,

PY: 2008

Publisher,

PB: Author reprint

Publish place,

PL: Novi Sad, 21000, RS Trg Dositeja Obradovića 6

Physical description

PD: number of chapters: 7

number of pages : 77

number of referecnces: 5

number of tables : 0

number of pictures : 55

number of charts : 0

number of appendix :4

Scientific field,

Page 82: Podrska finansijskom knjigovodstvu

SF: Computing Science

Scientific discipline,

SD: Information systems

Subject/Key words, SX: finantial accountancy, accountancy order, main book, generation of

finantial reports, NET framework, C# programming language,

Microsoft SQL Server

UC:

Holding data,

AB: Library of Faculty of Technical Sciences,Novi Sad, RS

Note,

NT:

Abstract, AB: This paper describes realization of desktop application for support

for finantial accountancy. C# programming language, NET

Framework i Microsoft SQL Server system for managing databases

are used for implementing this system.

Accepted by Scientific

Board on:

ASP:

Defended on,

DE:

Thesis defended board (named/degree/title/faculty),

DB:

President: Cvijan Krsmanović, PhD, full prof., FTN Novi Sad

Member: Ivan Luković, PhD, full prof., FTN Novi Sad

Member: Dragan Mihajlović, PhD, assist. prof., FTN Novi Sad