Specializarea Informatic a [625803]

Ministerul Educat ¸iei Nat ¸ionale
Universitatea ”OVIDIUS” din Constant ¸a
Facultatea de Matematic ˘a s ¸i Informatic ˘a
Specializarea Informatic ˘a
TaxEPay – Platfoma online pentru plata
taxelor s ,i impozitelor
Lucrare de licent ¸ ˘a
Coordonator s ¸tiint ¸ific:
Lect. univ. dr. B ˘autu Elena
Absolvent: [anonimizat]˘aciun Petris ¸or
Constant ¸a
2019

Cuprins
Cuprins i
List˘a de figuri iv
1 Introducere 2
1.1 Motivat ¸ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Rezumatul lucr ˘arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Starea actual ˘a a domeniului 5
2.1 Platforme similare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 Ghiseul.ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.2 Spit-Constanta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Tehnologii utilizate pentru dezvoltarea aplicat ¸iei . . . . . . . . . . . . . . 8
2.2.1 Framework Laravel . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 Artisan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.3 Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.4 Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.5 Eloquent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
i

Cuprins Cuprins
2.2.6 Blade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.7 Session Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.8 Composer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.9 Mysql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.10 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.11 Bootstrap 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Solut ,ia propus ˘a 18
3.1 Faza de proiectare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.1 Actori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.2 Cazuri de utilizare . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.3 Arhitectura bazei de date . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 Implementare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1 Utilizare modelului arhitectural MVC . . . . . . . . . . . . . . . . 26
3.2.2 Arhitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3 Proiectarea modelului aplicat ,iei . . . . . . . . . . . . . . . . . . . 28
3.2.4 Nivelul de View . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.5 Proiectarea controller-elor . . . . . . . . . . . . . . . . . . . . . . 30
3.2.6 Implementarea bazei de date . . . . . . . . . . . . . . . . . . . . . 34
4 Prezentare aplicat ¸iei 36
4.1 Panou principal ˘a utilizator . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2 Pagina Cl ˘adiri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.3 Pagina Obligat ¸ii de plat ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Pagina Alte taxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.5 Pagina Istoric pl ˘at ¸i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.6 Panou operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.7 Panou administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
ii

Cuprins Cuprins
4.8 Vizualizare profil utilizator . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.9 Pagina impozite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5 Concluzii 44
5.1 Realiz ˘ari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 Dezvoltari ulterioare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
iii

List˘a de figuri
2.1 Previzualizare platforma online ghiseul . . . . . . . . . . . . . . . . . . . . . 7
2.2 Previzualizare platforma online Spit-Constanta . . . . . . . . . . . . . . . . . 8
2.3 Google Trends. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 DB-Engines Ranking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 PhpMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6 Stackoverflow – https://insights.stackoverflow.com/survey/2018 . . . . . . . . . 16
3.1 Cazuri de utilizare pentru Utilizator . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Cazuri de utilizare pentru Operator . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Cazuri de utilizare pentru Administrator . . . . . . . . . . . . . . . . . . . . . 20
3.4 Fluxul evenimentelor pentru cazul de utilizare ”Plat ˘a alte taxe” . . . . . . . . . 22
3.5 Fluxul evenimentelor pentru cazul de utilizare ”Calculare impozit cl ˘adiri” . . . 23
3.6 Structura bazei de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7 Componenetele sablonului arhitectural MVC din cadrul framework-ului Laravel 26
3.8 Structura de fis ,iere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.9 Clasa model() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.10 Definirea routelor pentru grupul administrator . . . . . . . . . . . . . . . . . . 29
4.1 Panou principal ˘a utilizator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2 Pagina Cl ˘adiri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
iv

List˘a de figuri List ˘a de figuri
4.3 Pagina Obligat ¸ii de plat ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4 Pagina Alte taxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.5 Dovada de plat ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6 Pagina Istoric pl ˘at ¸i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.7 Exemplu factur ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.8 Panou operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.9 Panou operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.10 Vizualizare profil utilizator- Operator . . . . . . . . . . . . . . . . . . . . . . . 43
4.11 Panou operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1

Capitolul 1
Introducere
TaxEPay este o platform ˘a online dedicat ˘a utilizatorilor care doresc sa is ¸i plateasc ˘a
datoriile c ˘atre institut ¸iile locale online far ˘a a fi nevoie s ˘a se deplaseze , totul realizandu-se la
orice or ˘a , sistemul fiind us ¸or de accesat de pe orice dispozitiv mobile sau desktop.Aceast ˘a
platform ˘a permite utilizatorului s ˘a vizulizeze lista obligat ¸iilor de plat ˘a datorate ,precum s ¸i
cl˘adirile,mijloacele de transport s ¸i terenurile det ¸inute.
Prin selectarea unei cl ˘adiri utilizatorul va putea vizualiza informat ¸ii detaliate despre
aceasta,precum num ˘arul actului de dob ˆandire , suprafat ¸a total ˘a, suprafat ¸a rezident ¸ial ˘a cˆat s ¸i
cea nerezident ¸ial ˘a , plus alte informat ¸ii despre cl ˘adirea selectat ˘a.Utilizatorul va dispune de
acceas ¸i opt ¸iune s ¸i ˆın cazul mijloacelor de transport s ¸i terenurilor pe care acesta le det ¸ine
,informat ¸iile fiind ˆın funct ¸ie de obiectul impozabil selectat.
Platforma va oferi utilizatorului posibilitatea de a selecta amenzile,taxele sau impozitele
pentru care dores ¸te s ˘a efectueze plat ¸i. ˆın cazul plat ¸ilor efectuate pana pe data de 31 martie a
anului ˆın curs utilizatorul va beneficia de o reducere de 10% pentru plata impozitelor pentru
orice tip de bun det ¸inut(cl ˘adiri,mijloace de transport,terenuri).
Utilizatorul va putea vizualiza lista plat ¸ilor efectuate.Istoricul plat ¸ilor efectuate poate fi
generat pe o perioada de timp definit ˘a de utilizator prin selectarea anului pentru care dores ¸te
s˘a vizualizeze istoricul. ˆIn cazul ˆın care utilizatorul nu selecteaz ˘a un an , se va alege implicit
anul curent. Dac ˘a pentru un an selectat nu au fost g ˘asite pl ˘at ¸i efectuate,utilizatorul va primi
un mesaj in care este specificat faptul ca nu au fost efectuate pl ˘at ¸iˆın anul respectiv.
Platforma ofer ˘a utilizatorului posibilitatea s ˘a efectueze pl ˘at ¸i s ¸i pentru anumite taxe care
nu fac parte din lista obligat ¸iilor de plat ˘a. Aceste taxe sunt reprezentate de taxe pentru care
este nevoie dovada de plat ˘aˆın cadrul anumitor dosare, pentru anumite institut ¸ii,etc.
Pentru o protect ¸ie mai bun ˘a a datelor, utilizatorul va putea activa opt ¸iunea de autentifi-
care ˆın doi pas ¸i.Dup ˘a activarea acestei opt ¸iuni , utilizatorul va primi un cod QR ce va trebui
scanat folosind aplicat ¸ia Google Authentificator sau o extensie browser pentru a primi coduri
folosite pentru autentificare.
2

Introducere Motivat ¸ie
1.1 Motivat ¸ie
TaxEPay este o platforma online care permite utilizatorilor de orice tip o interfata
prietenoasa si usor de folosit pentru a putea efectua plati pentru obligatiile de plata dato-
rate.Accesarea platformei poate fi realizata de pe orice dispozitive mobile sau desktop fiind
nevoie doar de acces la internet.
Alegerea acestei teme de licent ¸ ˘a a fost una dificil ˘a,deoarece am vrut sa realizez un
proiect care s ˘a m˘a ajute sa ˆımi dezvolt g ˆandirea analitic ˘a , la dezvoltarea mea s ¸i acumularea
de noi cunos ¸tint ¸e ,dar ˆın acelas ¸i timp scot ¸ ˆandu-m ˘a din zona de confort.
Numarul aplicatiilor de genul este destul de redus fiind nevoie de multe informatii ,aten-
tie la numeroase detalii de natura fiscal ˘a s ¸i o perioad ˘a lung ˘a de timp pentru a putea imple-
menta cu lux de am ˘anunte fiecare detaliu. Realizarea s ¸i proiectarea acestei platforme online
a reprezentat pentru mine o adevarat ˘a provocare prin complexitatea ei,mereu exist ˆand mici
detalii care puteau fi us ¸or de neglijat.
1.2 Context
Tehnologia evolueaza zi de zi fiind prezent ˘aˆın toate activi ˘at ¸ile pe care le realizam
ajutˆand la eficientizarea viet ¸ii noastre cotidiene. Aceasta evolutia a tehnologiei a dus la
introducerea de instrumente mai rapide s ¸i eficiente pentru a imbunatati productivitatea in
diferite industrii.
Sectorul bancar este o industrie ˆın schimbare,dezvoltandu-se continuu oferind noi me-
tode tranzactionale mai flexibile.In prezent serviciile bancare tranditionale reprezentate de
cozi lungi , costuri ridicate ale tranzactiilor,pierdere de timp,etc pot fi considerate de dome-
niul trecutului, fiind inlocuite de noile servicii de internet banking care permit clientilor sa
utilizeze toate serviciile de pe un simplu dispozitiv mobil sau de la un calculator conectat la
internet. Prin folosirea serviciului de internet banking pentru efectuarea de plati utilizatorii
economisesc timp nefiind necesara deplasarea economisind in acelasi timp , totul realizandu-
se in cateva secunde.
Platforme online asemanatoare celei realizate sunt: Ghiseul.ro, Spit- Serviciul online de
plati taxe si impozite Constanta,globalpay.ro,etc.
3

Introducere Rezumatul lucr ˘arii
1.3 Rezumatul lucr ˘arii
Lucrarea de licent ¸ ˘a este structurat ˘a pe 6 capitole. ˆın continuare se va realiza o enumerare,c ˆat
s ¸i o descriere a capitolelor prezentate ˆın cadrul acestei lucr ˘ari:
.Capitol 1 : Introducere – ˆın acest capitol este prezentat ˘a motivat ¸ia alegerii acestei
teme,beneficiile aduse de platforma care se dores ¸te s ˘a fie implementat ˘a.
.Capitol 2: Starea actuala a domeniului – ˆın cadrul acestui capitol sunt prezentate plat-
forme simulare celei dezvoltate s ¸i tehnologiile web folosite pentru dezvoltarea platfor-
mei web..
.Capitol 3: Solut ¸ia propus ˘a -ˆIn acest capitol sunt prezentat ,i pas ,ii urmat ,i pentru reali-
zarea platformei.
.Capitol 4: Prezentare aplicat ¸iei – ˆın acest capitol este prezentat ˘a aplicat ,ia realizat ˘a.
.Capitol 5: Concluzii – ˆın acest capitol sunt prezentate concluzii despre implementarea
sistemului s ¸i posibile dezvolt ˘ari ulterioare.
4

Capitolul 2
Starea actual ˘a a domeniului
ˆIn cadrul acestui capitol sunt prezentate informat ,ii despre starea actual ˘a a dome-
niului,platforme similare celei dezvoltate s ,i tehologiilor web utilizate printre care se afl ˘a
framework-ul Laravel,JavaScript,MySql,Bootstrap,etc.
Dezvoltarea lent ˘a a aplicat ,iilor guvernamentale electronice continu ˘a s˘a fie o problem ˘a
ˆın toate t ,˘arile ce se afl ˘aˆıntr-o continu ˘a dezvoltare. ˆIn ultimii ani au fost realizate diferite
studii ce au avut ˆın centrul atent ,iei sectorul financiar.Aceste studii au fost efectuate pentru
a aduna informat ,ii legate de uzabilitate,modul ˆın care ar putea fi folosite aceste sisteme s ,i
credibilitatea oferit ˘a.
ˆIn articolul [1] este prezentat un studiu realizat ˆın Nigeria,care a avut drept scop prin-
cipal examinarea efectului de mediere ˆın ceea ce prives ,te us ,urint ,a de utilizare a serviciilor
fiscale s ,i sistemele fiscale online.Acest studiu contribuie la ˆınt,elegerea utiliz ˘arii eficiente
a sistemului fiscal online prin intermediul contribuabililor care desf ˘as,oar˘a activit ˘at,i inde-
pendente, ceea ce conduce la o cres ,tere a conformit ˘at,ii fiscale s ,i a gener ˘arii de venituri ˆın
Nigeria.
Nigeria nu este singura t ,ar˘aˆın care au fost efectuate astfel de cercet ˘ari,num ˘arul cer-
cet˘arilor realizate este mult mai mare s ,iˆın diferite t ,˘ari.Dup ˘a cum arat ˘a articolul [2] astfel
de studii au fost realizate s ,iˆın Thailanda unde rezultatele prezint ˘a faptul c ˘a sperant ,a de
performant ,˘a,facilitarea condit ,iilor,influent ,a s,i credibilitatea perceput ˘a sunt factori semnifi-
cativi.Teoria unificat ˘a a accept ˘arii s ,i utiliz ˘arii tehnologiei este integrat ˘a cu teoria autodeter-
min˘arii,cu riscul perceput s ,i cu credibilitatea perceput ˘a pentru a dezvolta un model care s ˘a
explice acceptarea de c ˘atre utilizatori a serviciilor de guvernare electronic ˘a.
Pe plan nat ,ional,a fost efectuat un studiu asupra uzabilitatii aplicat ,iilor guvernamentale
electronice ˆın cadrul articolului [3].Diferite metrici de evaluare au fost testate.
In viitor,platforma TaXEpay va fi supus ˘a unui studiu similar, ˆıntr-un context mai larg.
5

Starea actual ˘a a domeniului Platforme similare
2.1 Platforme similare
ˆIn prezint num ˘arul platformelor dezvoltate pentru plata taxelor s ¸i impozitelor on-
line este redus,put ¸ine administrat ¸ii publice locale dorind s ˘aˆınlocuiasc ˘a modul tradit ¸ional de
plat˘a din cauza costurilor mari pentru dezvoltarea s ,i implementarea unei astfel de platforme.
Administrat ¸iile pot alege ˆınrolarea ˆın sistemul nat ¸ional de pl ˘at ¸i a taxelor s ¸i impozitelor sau
pot dezvolta solut ¸ii proprii.
ˆIn continuare vor fi prezentate dou ˘a platforme disponibile,folosite de c ˘atre administrat ¸iile
publice locale.Prima platform ˘a prezentat ˘a reprezint ˘a o solut ¸ie de ˆınrolare la sistemul nat ¸ional
de plat ˘a,iar a doua platform ˘a constituie o platform ˘a dezvoltat ˘a pe plan local.
2.1.1 Ghiseul.ro
Platforma online www.ghiseul.ro reprezint ˘a sistemul nat ,ional prin care persoanele fi-
zice s ,i juridice pot efectua pl ˘at,i pentru amenzi,taxe s ,i impozite datorate.Acest sistem nat ,ional
permite ˆınrolarea administrat ,iilor locale din toat ˘a t,ara pentru a oferi tuturor posibilitatea la
un sistem de plat ˘a a taxelor s ,i impozitelor online.Accesul pe platforma se face cu ajutorul
unui card bancar,care va fi folosit la efectuarea pl ˘at,ilor s ,i cu ajutorul datelor personale.Dup ˘a
autentificare datele vor fi verificate de c ˘atre un operator,iar pe cont vor fi ad ˘augate toate
amenzile,taxele,impozitele locale s ,i impozitele ˆınregistrate la ANAF.
6

Starea actual ˘a a domeniului Platforme similare
Figura 2.1 : Previzualizare platforma online ghiseul
2.1.2 Spit-Constanta
Platforma web Spit-Constanta este disponibil ˘a doar personelor din judetul Constant ,a
s,i reprezint ˘a o solut ,ie dezvoltat ˘a pe plan local.Platform ˘a ofer ˘a posibilitatea,persoanelor fizice
s,i juridice,de a vizualiza liste cu taxele s ,i impozitele datorate,liste cu cl ˘adirile,mijloacele de
transport s ,i terenurile det ,inute de acest ,ia,lista pl ˘at,ilor efectuate s ,i posibilitatea de a depune
cereri online.Pentru a obt ,ine acces pe platforma persoanele care doresc un cont sunt nevoite
s˘a complete un formular pentru a trimite o cerere.Dup ˘a trimiterea cererii datele vor fi trimise
la domiciliul persoanei sau pot fi ridicate de la orice centru Spit din Constant ,a.
7

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
Figura 2.2 : Previzualizare platforma online Spit-Constanta
2.2 Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
2.2.1 Framework Laravel
Laravel este un framework PHP folosit pentru dezvoltarea aplicat ¸iilor web,prezentat
pentru prima dat ˘aˆın septembrie 2011[4].
ˆIn ultimul timp Laravel a devenit tot mai popular in r ˆandul dezvoltatorilor de aplicat ¸ii
web oferind noi caracteristici cu fiecare versiune care apare s ¸i are o mare influent ¸ ˘a asupra
cadrelor cum ar fi Ruby on Rails, ASP.NET si Sinatra [5]. In prezent exista 17 versiuni
disponibile. Ultima versiune dispibila este 5.8 aparut ˘a pe 26 februarie 2019 [4]. Laravel este
excelent pentru dezvoltarea aplicat ¸iilor de dimensiuni reduse dar s ¸i pentru aplicat ¸iile mai
mari,oferind instrumente puternice pentru orice tip de aplicat ¸ie.
8

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
Figura 2.3 : Google Trends.
In graficul de mai sus putem observa faptul ca Laravel a devenit un framework PHP tot
mai popular ˆın comparat ¸ie cu celelalte cadre web.
Laravel sustine proiectarea arhitectural ˘a MVC s ¸i il extinde cu cateva straturi suplimen-
tare.Un model arhitectural MVC imparte dezvoltarea aplicat ¸iei software ˆın trei straturi pentru
a oferi o arhitectur ˘a mai bun ˘a.
O scurt ˘a descriere a celor trei straturi MVC:
.Model – componenta responsabila de comunicarea cu baza de date
.View – responsabil cu afisarea datelor din model si contine elemente vizuale.
.Controller – proceseaza actiunile utilizatorului.
Acest s ,ablon arhitectural va fi detaliat ˆın cadrul unei subcapitol urm ˘ator.
2.2.2 Artisan
Artisan este o interfat ¸ ˘a de comand ˘a inclus ˘a in framework-ul Laravel,care extinde com-
ponenta consolei Symfony cu noi facilitate s ¸i comenzi [6].Aceasta ofer ˘a o serie de comenzi
utile pentru crearea de modele, controale, middleware, cazuri de testare s ¸i multe alte tipuri
de fis ¸iere ˆın cadrul aplicat ¸iei.
9

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
Pentru a vizualiza o list ˘a a tuturor comenzilor Artisan disponibile, se va folosi urmatoa-
rea comand ˘a:
php artisan list
Comenzile artisan disponibile au urmatoarea sintaxa :
php artisan [optiune][argumente]
Chiar daca artisan ofera o gam ˘a variat ˘a de comenzi ,pot fi adaugate comenzi personali-
zateˆın funct ¸ie de preferint ¸e s ¸i necesitate.Comenzile sunt stocate ˆın directorul app/console/-
commands .
2.2.3 Route
Routarea este un concept esent ¸ial ˆın aplicat ¸iile Laravel.Routarea ˆın Laravel permite
direct ¸ionarea tuturor cererilor de solicitarea catre controller-ul adecvat.Toate cererile sunt
mapate cu ajutorul routelor,acestea fiind salvate ˆın folderul routes.Toate routele care au lega-
tura cu aplicat ¸ia pot fi definite in fisierul web.php, iar cele pentru API ˆın fisierul api.php.
Exemplu de routa definit ˘a :
Route::get(’/’, function () {
return view(’numeFisier’);
});
ˆın exemplul prezentat mai sus este definit ˘a o noua rut ˘a pentru care se face o solici-
tare, iar raspunsul va fi un view.Pentru ad ˘augarea de noi route se va respecta sintaxa Ro-
ute::tipSolicitare(..) , tipSolicitare reprezent ˆand metoda de solicitare HTTP.
10

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
Tipurile de solicitari s ¸i metode de rutare existente ce pot fi folosite sunt:
.GET – Aceast ˘a metoda este cel mai des ˆıntˆalnit˘a s ¸i este folosit ˘a pentru solicitarea da-
telor dintr-o resurs ˘a specific ˘a.Metoda GET nu poate fi folosit ˘a pentru trimiterea date-
lor,datele trimise fiind adaugate ˆın interiorul link-ului URL care vor ramane ˆın istoricul
browser-ului.
.POST – Metoda POST este folosit ˘a pentru trimiterea dator la servere s ¸i folosirea aces-
tora pentru orice operat ¸iune de tip CRUD. Aceast ˘a metoda este mult mai sigur ˘a pen-
tru trimiterea datelor deoarece datele trimise nu mai sunt ad ˘augate ˆın cadrul link-ului
URL.
.PUT – La fel ca ˆın cazul metodei POST ,aceast tip de cerere este folosit pentru ad ˘augare
s ¸i modificarea datelor despre o anumit ˘a resurs ˘a.La accesarea de mai multe ori a unui
URL cu cerere de tip PUT rezultatul este acelas ¸i, ˆın cazul metodei POST exist ˆand mo-
dific˘ari.Aceast ˘a cerere nu poate fi folosit ˘a prin intermediul unui formular HTML,ci
doar folosind AJAX.
.DELETE – Aceast ˘a metoda este folosit ˘a pentru s ¸tergerea anumitor resurse.
.PATCH – Metoda PATCH este folosit ˘a pentru realizarea de mici modific ˘ariˆın cadrul
unei resurse.
.RESOURCES – Acest tip de declarat ¸ie este folosind ˆın cadrul aplicat ¸iilor Laravel s ¸i
creeaz ˘a mai multe route pentru a gestiona o varietate de act ¸iuni pentru o anumit ˘a re-
surs˘a.Pentru folosirea acestui tip de cereri se va crea un controller folosind interfat ¸a
de comanda artisan. Noul controller ad ˘augat va avea metodele pentru fiecare act ¸iune
CRUD.
2.2.4 Migration
Laravel Migration ofera mecanisme care faciliteaz ˘a definirea structurii bazei de date,fiecare
tabel nou,coloana,index,etc fiind definite ˆın cod,far ˘a a fi nevoie de folosirea interogarilor
SQL sau interfet ,elor grafice pentru administrarea acestora.
Pentru adaugarea unei noi tabele in baza de date cu ajutorul Migration se urmaresc pas ¸ii
prezentat ¸i mai jos.
Se creeaza fisierul migration prin executarea urmatoarei comenzi:
php artisan make:migration create_table_numeTabel
In urma executarii comenzii de mai sus fisierul creat va arata ca in exemplul urmator:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateNumeTable extends Migration
11

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
{
public function up()
{
Schema::create(’numeTabel’, function (Blueprint $table) {
$table->increments(’id’);
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists(’numeTabel’);
}
}
In exemplul prezentat mai sus exista doua metode : up() si down(). Metoda up() este
folosita pentru crearea de noi tabele sau campuri in baza de date.Metoda down() este folosita
pentru a sterge tabela.
Apelarea metodei up() pentru adaugarea tabelei se face executand comanda:
php artisan migrate
Metoda down() este folosita la executarea comenzii:
php artisan rollback
2.2.5 Eloquent
Eloquent este cea mai avansat ˘a implementare PHP pentru conceptul ActiveRecord
ORM (object-relational mapper).Acesta ofer ˘a o sintax ˘a simpl ˘a s ¸i frumoas ˘a pentru a obt ¸ine
interog ˘ari complexe in cateva secunde fara a scrie interogari lungi.
Fiecare tabel ˘a din baze de date are un ”Model” corespunz ˘ator care este utilizat pentru
a interact ¸iona cu tabelul respectiv. ˆın modelul MVC (Model View Controller) modelul are
responsabilitatea de a stoca s ¸i gestiona datele dintr-o aplicat ¸ie.
Pentru a fi mai usor de inteles acest concept se va prezenta in cele ce urmeaza pasii
necesari pentru crearea unui Model si informatii despre aceasta.
Pentru adaugarea unui nou Model in Laravel este nevoie sa folosim Artisan , prezentat
intr-un subcapitol mai sus , urmatoarea comanda:
php artisan make:model numeTabel
Dupa executarea comenzii in directorul /app se va crea un nou fisierul cu numele nu-
meModel.Noul fisier creat va avea urmatoare structura:
<?php
namespace App\Models;
12

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
class numeTabel extends Model
{
}
Putem observa dupa generarea noului fisier ca nu exista variabile declarate.Pentru a se
stie exact ce tabela sa foloseasca se va introduce manual variabila table astfel: protected
$table = ’numeTabel’ .Dac ˘a numele modelului este acelas ,i cu numele tabelelei pentru care
se face referire nu mai este necesar ˘a declararea variabilei table.
Deoarece clasa numeTabel este o extindere a clasei Model vom putea folosi toate me-
todele pe care aceasta le ofer ˘a.Pentru cautarea datelor se va folosi metoda find($id) care
returneaza primul tuplu pentru care condit ,ia este satisfacut ˘a.Pentru salvarea datelor este fo-
losit˘a metoda save(),s ,tergere cu ajutorul metodei delete(),iar modificarea datele cu ajutorul
metodei update().
In exemplul urmator se va prezenta cazul ˆın care metoda save() este folosit ˘a pentru
modificarea datelor.
$variabila = new Model();
$variabila->numeColoana = ’valoareString’;
$variabila->save();
Des ,i aceasta clasa este una destul de complex ˘a poate fi completat ˘a cu metoda proprii.
2.2.6 Blade
Blade view este motorul de templating oferit de framework-ul Laravel pentru a permite
dezvoltatorilor s ˘a creeze s ¸i s ˘a organizeze vizualiz ˘ari HTML ˆıntr-un mod simplu, consistent
s ¸i unificat,acesta fiind inspirit dupa Razor sintaxa din ASP.NET.
Fisierele blade sunt compilate ˆın cod PHP s ¸i stocate ˆın memoria cache p ˆan˘a cˆand apar
noi modific ˘ari.Toate aceste fis ¸iere view folosesc extensia .blade.php s ¸i sunt stocate ˆın direc-
torul resources/views .
Motorul de templating Blade este caracterizat de mos ¸tenirea s ¸abloanelor s ¸i sect ¸iunilor.
Aceste doua beneficii valoroase oferite reprezint ˘a o modalitate excelent ˘a de a transmite anu-
mite sect ¸iuni sau cont ¸inut ˆıntr-un View.
Pentru a fi mai us ¸or de ˆınt ¸eles conceptul de mos ¸tenire a s ¸abloanelor s ¸i sect ¸iunilor vor fi
explicat ¸i pas ¸ii care trebuie urmat ¸i.
.Definirea s ¸ablonului -ˆın general majoritatea aplicat ¸iilor web ofer ˘a un s ¸ablon gene-
ral pentru toate paginile,modific ˘arile av ˆand loc in zone specificate ˆın funct ¸ie de ce-
rerile utilizatorilor. Pentru definirea anumitor zone ˆın s ¸ablon vom folosi acronimul
@yield(’numeZona’).
<html>
<head>
13

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
<title>App Name – yield(’title’)
</title></head><body>section(’sidebar’)
This is the master sidebar.
show<div class="container">yield(’content’)
</div>
</body>
</html>
.Extinderea s ¸ablonului – dup ˘a ce a fost definit s ¸ablonul general,toate celelalte pagini
il vor extinde s ¸i se va injecta cont ¸inutul acestora ˆın zonele specificate cu @yield.
extends(’layouts.app’)section(’title’, ’Page Title’)
section(’sidebar’)parent
<p>This is appended to the master sidebar.</p>
endsectionsection(’content’)
<p>This is my body content.</p>
endsection
.Afisarea datelor – Dupa ce datele au fost trimise catre Blade view,afis ¸area variabilelor
se va face folosind acoladele duble $numeVariabila.
2.2.7 Session Driver
Sesiunea este o modalitate de stocare s ¸i transmitere a datelor pentru diferite cereri
ˆıntre pagini.Sesiunele sunt deobicei pe o perioada nedeterminat ˘a,datele fiind disponibile c ˆat
timp exist ˘a conexiunea client-server,dar ˆın funct ¸ie de aplicat ¸ia web s ¸i preferint ¸e acestea pot fi
definite pe o anumit ˘a perioad ˘a de timp de c ˘atre programator,c ˆat s ¸i definirea locului de stocare
a datelor.
Laravel permite utilizarea urm ˘atoarelor drivere de sesiuni:
.File – Acest tip de drivere este cel mai folosit s ¸i setat ca implicit fiind us ¸or de folosit.
Aceste sesiuni funct ¸ioneaz ˘a prin atribuirea unui identificator unic fiec ˘arui utilizator.La
salvarea datelor ˆın sesiune,identificatorul unic va fi salvat ˆıntr-un cookie pe computerul
utilizatorului ,iar pe server va fi creat un nou fis ¸ier cu datele stocate ˆın sesiune.
.Cookie – O dat ˘a folosit acest driver pentru sesiune server web va folocita browser-ului
web s ˘a stocheze toate infromat ¸iile ˆıntr-un cookie securizat s ¸i criptat.
.Database – Des ¸i driverul de sesiune File este cel mai us ¸or de folosit prezint ˘a s ¸i unele
dezavantaje legate de securitate, driverul database reprezent ˆand o metod ˘a mai sigura
s ¸i rapid ˘a ,datele fiind stocate ˆın baza de date a aplicat ¸iei.
.Memcached – Sesiunea va fi salvat ˘aˆın memoria cache a serverului.
.Array – Sesiunea va fi salvat ˘aˆın tablouri PHP.
14

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
2.2.8 Composer
Composer este un instrument de gestionare a dependent ¸elor ˆın PHP.[9] Composer st ˘a
la baza noilor cadre PHP datorit ˘a solut ¸iilor oferite pentru problemele fundamentale ˆıntalnite
ˆın majoritatea aplicat ¸iilor web.
Acest instrument este ˆıntˆalnit tot mai des la noile cadre PHP pentru a eficientiza proce-
sul de dezvoltare a aplicat ¸iilor prin rezolvarea problemelor de instalarea manuala a pache-
telor,actualizarea pachetelor care necesit ˘a mult timp s ¸i volumul crescut al acestora. Com-
poser ofer ˘a o solut ¸ie pentru problemele enumerate prin ad ˘augarea unui singur fis ¸ier special
denumit composer.json responsabil de stocarea listei de biblioteci s ¸i versiunile acestora.La
desc˘arcarea unui nou pachet acesta este ad ˘augat ˆıntr-un singur loc cu restul pachetelor exis-
tente,iar Composer creeaz ˘a automat un autoloader care le leag ˘a.
Pentru actualizarea unei libr ˘arii este necesar ˘a o schimbare ˆın fis ¸ierul de configurare s ¸i
apelarea din CLI a unei metode de instalare pentru composer.
Exemplu de dependet ¸ ˘a definit ˘aˆın cadrul fis ¸ierului ”composer.json”:
{
"require":
{
"vendor/nume\_pachet": "1.0",
}
}
Composer foloses ¸te informat ¸iile prezentate ˆın exemplul de mai sus pentru a alege corect
setul de fis ¸iere ce se dores ¸te a fi folosit ˆın cadrul aplicat ¸iei.
2.2.9 Mysql
Mysql este unul dintre cele mai populare sisteme de gestiune a bazelor de date open-
source, ocup ˆand locul doi ˆın topul celor mai folosite sistem de gestiune.[7]
Figura 2.4 : DB-Engines Ranking
Mysql este folosit pentru realizarea diferitelor aplicat ¸ii,cel mai des fiind ˆıntˆalnit ˆın ca-
drul aplicat ¸iilor web,acest lucru constituind s ¸i un posibil motiv pentru popularitatea aces-
tuia. Des ¸i majoritatea aplicat ¸iilor care folosesc Mysql sunt realizate cu ajutorul limbajului
15

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
de programare PHP,pentru accesarea datelor din baza de date,pot fi realizate diferite aplicat ¸ii
folosind s ¸i alte limbaje de programare precum C,C#,C++,Java,Delphi,etc. [8].
Administrarea bazelor de date MySql poate fi us ,or de realizat cu ajutorul aplicat ,iei web
PhpMyAdmin care ofer ˘a o interfat ,˘a grafic ˘a us ,or de folosit.
Figura 2.5 : PhpMyAdmin
2.2.10 JavaScript
JavaScript este un limbaj de programare,orientat obiect folosit pentru realizarea site-
urilor interactive prin ad ˘augarea elementelor dinamice.Din punct de vedere sintactic JavaS-
cript seamana cu majoritatea limbajelor de programare precum C,C++ s ¸i Java. [11]
Figura 2.6 : Stackoverflow – https://insights.stackoverflow.com/survey/2018
16

Starea actual ˘a a domeniului Tehnologii utilizate pentru dezvoltarea aplicat ¸iei
Privind analiza ”Stack Overflow’s 2018 Developer” putem observa ˆın imaginea de mai
sus,faptul ca JavaScript este cel mai popular limbaj de programare.Aproximativ 65% din
persoanele care au participat la acest sondaj au interact ¸ionat cu JavaScript ˆın ultimul an.
Comparativ cu alte limbaje de programare ˆın JavaScript pentru declararea variabilelor
se va folosi urmatoarea sintaxa var numeVariabila;. La declararea unei variabile nu este
obligatorie atribuirea unei valoari sau definirea tipului,aceasta schimb ˆandu-se la atribuirea
unei noi valori de alt tip.
2.2.11 Bootstrap 4
Bootstrap este un framework CSS gratuit s ¸i open-source, folosit pentru dezvoltarea
aplicat ¸iilor web responsabile.Acesta cont ¸ine s ¸abloane de design CSS s ¸i (opt ¸ional) bazate
pe JavaScript pentru tipografie,formulare,butoane,navigat ¸ie s ¸i alte componente ale interfet ¸ei.
[10]
Acest framework a devenit tot mai popular s ¸i folosit pentru partea de front-end,oferind
blocuri de coduri gata f ˘acute s ¸i compatibile cu cele mai noi versiuni ale browserelor web,
dezvoltarea aplicat ¸iilor web realizandu-se mult mai rapid.
17

Capitolul 3
Solut ,ia propus ˘a
3.1 Faza de proiectare
3.1.1 Actori
ˆIn cadrul aplicat ,iei dezvoltate vor exista 3 tipuri de utilizatori.Fiecare utilizator va
avea permisiuni specifice ˆın funt ,ie de grupul din care face parte. ˆIn continuare vom enumera
actorii s ,i permisiunile acestora.
.Utilizator:
Are acces la lista cu obligat ,iile de plat ˘a datorate
Posibilitatea de a efectua pl ˘at,i pentru obligat ,iile de plat ˘a
Poate efectua pl ˘at,i pentru alte taxe.
Poate vizualiza lista pl ˘at,ilor efectuate.
Vizualizarea informat ,iilor despre o anumit ˘a plat ˘a.
Printarea informat ,ilor despre o anumit ˘a plat ˘a efectuat ˘a.
Modifcarea datelor de conectare.
Posibilitatea de a activa activarea ˆın 2 pas ,i.
Vizualizarea istoric acces ˘ari cont.
Exportarea informat ,iilor despre o plat ˘a efectuat ˘a in format PDF.
.Operator:
Ad˘augarea s ,i modificarea datelor despre utilizatorii ˆınregistrat ,i.
Confirmarea conturilor ad ˘augate recent.
Ad˘augarea s ,i modificarea datelor despre cl ˘adiri,mijloace de transport s ,i terenuri.
Ad˘augare amenenzi
Ad˘augare taxe
Ad˘augare impozite
18

Solut,ia propus ˘a Faza de proiectare
.Administrator:
Modificare valorilor folosite pentru calcularea impozitelor pentru cl ˘adiri.
Modificarea indicilor folosit ,i pentru calcularea impozitelor mijloacelor de trans-
port.
Modificarea valorilor folosite pentru calcularea impozitelor pentru terenuri.
Ad˘augarea,modificarea s ,i dezactivarea taxelor.
Ad˘augarea,modificarea s ,i dezactivarea amenzilor.
Dispune de toate permisiunile actorului Operator.
3.1.2 Cazuri de utilizare
O digram ˘a complet ˘a a cazurilor de utilizare este utilizat ˘a pentru a identifica s ,i orga-
niza funct ,ionalit ˘at,ile sistemului pentru fiecare actor ˆın parte.Pentru a fi mai us ,or de urm ˘arit
diagrama a fost ˆımp˘art,it˘aˆın mai multe figuri ˆın funct ,ie de actori.
Cazurile de utilizare pentru Utilizatorii inregistrat ,i:
Figura 3.1 : Cazuri de utilizare pentru Utilizator
19

Solut,ia propus ˘a Faza de proiectare
Cazurile de utilizare pentru Operator:
Figura 3.2 : Cazuri de utilizare pentru Operator
Cazurile de utilizare pentru Administratori:
Figura 3.3 : Cazuri de utilizare pentru Administrator
20

Solut,ia propus ˘a Faza de proiectare
CU1
Numele cazului de utilizare: Plat˘a alte taxe
Descrierea cazului de utilizare: descrie interact ,iunea dintre sistem s ,i utilizator pentru cazul
ˆın care utilizatorul solicit ˘a plata pentru alte taxe.
Actor software: Utilizatorul.
Eveniment declans ,ator: utilizatorul alege plata pentru alte taxe.
Precondit ,ii:Sistemul trebuie sa funct ,ioneze corect.
Postcondit ,ii:
.Este creat ˘aˆın baza de date o intrare pentru un nou obiect de plat ˘a.
.Informat ,iile despre taxa selectat ˘a sunt salvate ˆın baza de date.
.Baza de date nu trebuie sa sufere alte modific ˘ari dec ˆat cele de ad ˘augarea de noi ˆınregistr ˘ari.
Flux principal:
Utilizator Sistem
1.Utilizatorul cere plata pentru alte taxe. 2.Cere selectarea unei taxe
3.Introduce si trimite numele taxei 4. Verifica numele taxei [A1]
5. Afiseaza lista taxelor gasite
6. Selecteaza taxa
7. Introduce informat ,iile auxiliare
8. Alege modalitatea de plat ˘a s,i trimite da-
tele9. Verific ˘a dac ˘a a fost efectuat ˘a plata [A2]
10. Memoreaz ˘a datele pentru plata efec-
tuat˘a
Flux de baz ˘a:
Inceput caz de utilizare: Acest caz de utilizare ˆıncepe atunci c ˆand actorul dores ,te s˘a
realizez ˘a o plat ˘a pentru anumite tipuri de taxe.
1.Actorul acceseaz ˘a pagina dedicat ˘a ”Alte taxe”.
2.Actorul selecteaz ˘a cˆampul pentru a introduce numele taxei,iar pe ecran apare o list ˘a cu
toate taxele ˆınregistrate ˆın sistem.
3.Utilizatorul poate alege o tax ˘a din list ˘a afis ,at˘a sau poate introduce un criteriu de c ˘autare.
4. Actorul selecteaz ˘a taxa,introduce informat ,ii auxiliare s ,i selecteaz ˘a o metoda de plat ˘a.
5.Sistemul verific ˘a datele introduse de utilizatorul.
6.Sistemul verific ˘a dac ˘a plata a fost efectuat ˘a.
7.Sistemul informeaz ˘a utilizatorul c ˘a plata a fost efectuat ˘a cu succes s ,i toate datele au fost
memorate ˆın sistem.
Sfˆars,it caz de utilizare: Utilizatorul se va deconecta de pe platform ˘a.
Flux alternativ:
[A1]: Utilizatorul nu a introdus un nume pentru o tax ˘a.
1. Fluxul principal se incheie.
[A2]: Utilizatorul nu a efectuat plata:
1.Sistemul afiseaza un mesaj de eroare
2.Fluxul principal se incheie.
Diagram ˘a de activitate:
21

Solut,ia propus ˘a Faza de proiectare
Figura 3.4 : Fluxul evenimentelor pentru cazul de utilizare ”Plat ˘a alte taxe”
CU2
Numele cazului de utilizare: Ad˘augare impozit cl ˘adiri
Descrierea cazului de utilizare: descrie interact ,iunea dintre sistem s ,i operator pentru cazul
ˆın care operatorul solicit ˘a ad˘augarea impozitelor pentru cl ˘adiri.
Actor software: Operatorul.
Eveniment declans ,ator: operatorul alege ad ˘augarea impozitelor pentru cl ˘adiri.
Precondit ,ii:Sistemul trebuie sa funct ,ioneze corect.
Postcondit ,ii:
.Este creat ˘aˆın baza de date o intrare pentru un nou obiect de plat ˘a.
.Informat ,iile despre impozitul selectat sunt salvate ˆın baza de date.
.Baza de date nu trebuie sa sufere alte modific ˘ari dec ˆat cele de ad ˘augarea de noi ˆınregistr ˘ari.
Flux principal:
Operator Sistem
1.Operatorul cere ad ˘augarea impozitelor
pentru cl ˘adiri.2.Verific ˘a dac ˘a exist ˘a cl˘adiri care nu au im-
pozitul calculat pentru anul ˆın curs.[A1]
3.Afis ,eaz˘a lista impozitelor calculate
4. Introduce s ,i trimite impozitele calculate 5.Verific ˘a datele introduse.[A2]
6.Memoreaz ˘a datele despre impozitele cal-
culate.
Flux de baz ˘a:
Inceput caz de utilizare: Acest caz de utilizare ˆıncepe atunci c ˆand actorul dores ,te s˘a .
1.Actorul acceseaz ˘a pagina dedicat ˘a pentru aceast ˘a operat ,ie.
22

Solut,ia propus ˘a Faza de proiectare
2.Sistemul verific ˘a dac ˘a exist ˘a cl˘adiri pentru care este necesar s ˘a fie calculat impozitul.
3.Operatorul verific ˘a datele afis ,ate de sistem s ,i introduce noi date,dac ˘a este cazul.
4.Sistemul verific ˘a datele introduse de c ˘atre operator.
5.Sistemul informeaz ˘a operator faptul c ˘a impozitele calculate au fost ad ˘augate s ,i memorate
ˆın sistem.
Sfˆars,it caz de utilizare: Nu mai exist ˘a impozite de calculat.
Flux alternativ:
[A1]: Nu exist ˘a cl˘adiri pentru care este necesar s ˘a fie calculat impozitul.
1. Fluxul principal se incheie.
[A2]: Datele introduse sunt eronate:
1.Sistemul afiseaza un mesaj de eroare
2.Fluxul continu ˘a cu pasul 4 din fluxul principal.
Diagram ˘a de activitate:
Figura 3.5 : Fluxul evenimentelor pentru cazul de utilizare ”Calculare impozit cl ˘adiri”
3.1.3 Arhitectura bazei de date
Modelul relational al bazei de date TaxEPay este compus din 30 de tabele,grupate ˆın
module,evident ,iate grafic cu ajutorul cadranelor din figura urm ˘atoare:
23

Solut,ia propus ˘a Faza de proiectare
Figura 3.6 : Structura bazei de date
Se evident ,iaz˘a modulele: Plata taxe, Amenzi,Impozit cl ˘adiri, Impozit terenuri, Impozit
mijloace fixe, Generice,Alte tabele.
Ideea de baz ˘a din spatele acestei proiect ˘ari este cea c ˘a pentru calculul pl ˘at,ilor pentru
impozite pentru cl ˘adiri,terenuri s ,i mijloace fixe se face ˆın aceeas ,i maniera, ˆıns˘a acestea au ca-
racteristici definitorii diferite.De aceea,pentru fiecare dintre aceste tipuri de entit ˘at,i,s-a creat
o relat ,ieˆın cadrul bazei de date relat ,ionale.Pentru a trata ˆın maniera unitar ˘a,ˆın aplicat ,ie, cal-
culul acestor impozite s ,i pentru a beneficia de o proiectare folosind s ,abloane de proiectare,
am creat relat ,ia ObiectImpozabil, care se obt ,ine,ˆın sens matematic,ca sum ˘a direct ˘aˆıntre cele
trei relat ,ii ment ,ionate anterior.
ˆIn limbajul specific modelului matematic elementar al datelor [referinta la cartea dlui
Mancas], se scrie:
ObiectImpozabil = cl ˘adiri
ˆIn mod analog, tin ˆand cont c ˘a modalitatea de calcul pentru taxe s ,i amenzi este,de aseme-
nea,similar ˘a,am creat relat ,ii separate pentru cele dou ˘a tipuri de entit ˘at,i ment ,ionate:plata taxe,
respectiv amenzi. ˆIns˘a,am creat relat ,ia ObiectPlata,care ment ,ine caracteristicile comune ce-
lor dou ˘a,astfel ˆıncˆat cele dou ˘a se constituie ˆın specializ ˘ari ale relat ,iei ObiectPlat ˘a.ˆIn sens
matematic,scriem:
ObiectPlata =
ˆIn continuare sunt descrise tabelele s ,i interact ,iunile dintre acestea.
24

Solut,ia propus ˘a Faza de proiectare
ˆIn tabelul ”utilizatori” sunt stocate datele despre utilizatorii care folosesc platforma,cum
ar fi nume,prenume,telefon,cnp,tipul de persoana,rolul pe pletforma s ,i datele folosite la au-
tentificare,pentru fiecare cont exist ˆand un email unic.Pentru a garanta protect ,ia datelor,parolele
sunt criptate folosind funct ,ia hash BCrypt pe parte de server, ˆınainte de a fi stocate ˆın baza de
date. Acest tabel are 2 relat ,ii ”one-to-many” cu tabelele ”obiect impozabil” s ,i ”obiect plata”.Din
cele 2 relat ,ii reiese faptul c ˘a un utilizator poate avea mai multe obiecte impozabile reprezen-
tate de cl ˘adiri,mijloace de transport sau terenuri s ,i mai multe obiecte de plat ˘a constituite din
alte taxe,amenzi s ,i impozitele pentru obiectele impozabile.
Tabelul ”roluri” p ˘astreaz ˘a denumirile rolurilor disponbile pe platform ˘a.Acest tabel are
o singur ˘a relat ,ie ”one-to-many” cu tabelul ”utilizatori”.
ˆIn tabelul ”cl ˘adiri sunt stocate informat ,ii despre cl ˘adiri,precum num ˘ar act dob ˆandire,data
construct ,ie,dat ˘a dob ˆandire,date despre suprafat ,a util ˘a,rezident ,iala s ,i nerezident ,ial˘a,etc.Datele
stocate ˆın acest tabel sunt folosite pentru calcularea impozitelor pentru cl ˘adiri.Fiecare ˆınregistrare
din acest tabel poate fi indentificat ˘a unic cu ajutorul cheii primare ”cl ˘adire id”.
Tabelul ”terenuri” stocheaz ˘a informat ,ii ca suprafat ,a,data dob ˆandire,tipul de teren s ,i alte
infromat ,ii folosite ca ˆın cazul datelor din tabelul cl ˘adiri pentru calcularea impozitelor pentru
terenuri.
ˆIn tabelul ”mijloace detransport” sunt p ˘astrate informat ,ii despre mijloacele de trans-
port ˆınregistrate ˆın baza de date, toate datele fiind folosite pentru calcularea impozitelor
pentru mijloace de transport pentru fiecare utilizator.
Tabelul ”amenzi” p ˘astreaz ˘a date despre amenzile utilizatorilor,precum serie proces ver-
bal,numar proces verbal,data ˆıntocmire,dat ˘a comunicare s ,i alte informat ,ii legate de amenzile
utilizatorilor.
ˆIn tabelult ”tip cladire” sunt p ˘astrate informat ,ii despre tipurile de cl ˘adiri care pot fi
ˆınregistrate ˆın sistem.
Tabelul ”categorie cladire” ment ,ine date despre categoriile de cl ˘ari din baza de date.
ˆIn tabelul ”adrese” sunt stocate informat ,ii despre num ˘arul unei cl ˘adiri sau a unui te-
ren,bloc,scar ˘a,etaj,apartament s ,i id-ul str ˘azii pe care se afl ˘a o adres ˘a.Acest tabel are 2 relat ,ii
”one-to-many” cu tabelele ”cl ˘adiri” s ,i ”terenuri”.
Tabelul ”zone incadrare” memoreaz ˘a date despre tipurile zonelor de ˆıncadrare ce pot fi
ad˘augate.
Tabelul ”valori teren” stocheaz ˘a informat ,ii despre valorile terenurilor ˆın funct ,ie de am-
plasare s ,i categoria din care fac parte.
ˆIn tabelul ”documente” sunt memorate toate informat ,iile despre documentele disponi-
bile utilizatorilor.
Tabelul ”str ˘azi” stocheaz ˘a toate denumirile str ˘azilor.
ˆIn tabelul ” ˆıntreb ˘arifrecvente” sunt memorate informat ,ii despre anumite ˆıntreb ˘ari s ,i
r˘aspunsuri pentru acestea.
25

Solut,ia propus ˘a Implementare
Tabelul ”tip amenzi” stocheaz ˘a denumirile amenzilor s ,i suma de plat ˘a pentru fiecare
amend ˘a.
Tabelul ”lista taxe” memoreaza informat ,ii despre denumirile taxelor s ,i sumele de plat ˘a
pentru fiecare tax ˘a.
ˆIn tabelul ”plat ˘ataxe” sunt memorate pl ˘at,ile efectuate pentru anumite taxe.
3.2 Implementare
3.2.1 Utilizare modelului arhitectural MVC
ˆIn acest subcapitol vor fi detaliate aspecte despre modul ˆın care este implentata arhi-
tectura MVC ˆın framework-ul Laravel.
MVC (Model,View,Controller) este un model arhitectural folosit in dezvoltarea aplicat ,iilor,partea
de stocare a datelor fiind separat ˘a de interfat ,˘a s ,i de prelucrarea datelor.Indiferent de ti-
pul de limbaj de programare folosit acest model arhitectural reprezint ˘a o structur ˘a com-
plex˘a,organizat ˘a s,i eficient ˘a.
Figura 3.7 : Componenetele sablonului arhitectural MVC din cadrul framework-ului Laravel
ˆIn figura de mai sus este prezentat modul ˆın care este folosit s ,ablonul arhitectural ˆın
26

Solut,ia propus ˘a Implementare
cadrul aplicat ,iilor realizate cu ajutorul framework-ului Laravel.Pentru a fi mai us ,or de ˆınt,eles
vom detalia cum este folosit ˆıntregul s ,ablon.
ˆIn momentul ˆın care utilizatorul interact ,ioneaz ˘a cu aplicat ,ia web,browser-ul trimite o
cerere c ˘atre server ˆın funct ,ie de opt ,iunile utilizatorului.Pentru alegerea controller-ului res-
ponsabil pentru cererea trimis ˘a,aceasta trece prima dat ˘a prin motorul de redirect ,ionare care
va stabili controller-ul specific ˆın funct ,ie de adresa URL accesat ˘a.ˆIn funct ,ie de cererile
utilizatorului,controller-ul poate interact ,iona cu baza de date cu ajutorul modelelor pentru
a obt ,ine date ˆın funct ,ie de parametri transmis ,iˆın urma cererii,rezultatul acestei operat ,ii va fi
un view cu informat ,iile rezultate dup ˘a validarea parametrilor.
3.2.2 Arhitectura
Pentru a fi us ,or de ˆınt,eles modul ˆın care poate fi folosit sablonul arhitectural MVC ˆın
cadrul aplicat ,iilor Laravel, mai jos vor fi prezentate informat ,ii despre fis ,ierele oferite de Lara-
vel.Directorul principal este alc ˘atuit din urm ˘atoarele directoare:app,boostrap,config,database,
resources,routes,storage,tests s ,i vendor prezentate ˆın imaginea urm ˘atoare:
Figura 3.8 : Structura de fis ,iere
Director app cont ,ine codul surs ˘a a aplicat ,iei , fiind nucleul aplicat ,iei. Acesta cuprinde
modele,evenimente,except ,ii,middleware s ,i controllere.
ˆIn directorul bootstrap reg ˘asim toate scripturile din cadrul framework-ului Boostrap,un
director cache ˆın care sunt stocate fis ,iere pentru cache-ul unei aplicat ,ii web s ,i fis ,ierul app.php
folosit pentru rularea cadrului Bootstrap s ,i configurarea autoloading-ului.
Directorul config cont ,ine fis ,ierele folosite pentru configurarea aplicat ,iei.
27

Solut,ia propus ˘a Implementare
ˆIn directorul database reg ˘asim fis ,ierele de migrare a bazei de date.
Resource cont ,ine toate fis ,ierele view ale aplicat ,iei.Aceste fis ,iere reprezint ˘a interfat ,a
disponbil ˘a utilizatorilor folosind motorul de templating Blade prezentat ˆıntr-un subcapitol
anterior.
Directorul routes cont ,ine toate rutele aplicat ,iei stocate ˆın fis ,ierul web.php.
ˆIn directorul storage ,dup ˘a cum sugereaz ˘a s ,i numele reg ˘asim toate fis ,ierele necesare
pentru gestionarea s ,i stoca sesiunilor, cache-urilor s ,i jurnalelor(logs).
Tests cont ,ine toate cazurile de testare.
ˆIn directorul vendor reg ˘asim toate bibliotecile instalate.Este unul dintre directoarele
importante ale aplicat ,ieiˆımpreun ˘a cu alte directoare.
3.2.3 Proiectarea modelului aplicat ,iei
Acest nivel din cadrul aplicat ,iei este folosit pentru a prelua informat ,ii din baza de date
s,i a le afis ,aˆın nivelul de view.Pentru fiecare tabel din baza de date exist ˘a un model specific
ˆın directorul Models din folderul app ce interactioneaza cu baza de date cu ajutorul ORM
Eloquent.
Exemplu de model din cadrul aplicat ,iei dezvoltate:
Figura 3.9 : Clasa model()
ˆIn exemplul de mai sus este prezentat modelul creat pentru tabela obiect impozabil ce
extinde clasa Illuminat – Database-Eloquent-Model din cadrul framework-ului Laravel.
28

Solut,ia propus ˘a Implementare
ˆIn aplicat ,iile dezvoltate cu Laravel,Eloquent foloses ,te numele clasei model ca nume
implicit pentru tabelul din baza de date.Deoarece numele clasei Model nu este acelas ,i cu
numele tabelei din baza de dat,a fost declarat ˘a o variabil ˘a protejat ˘a $table cu scop principal
de a defini numele tabelului.
Pentru fiecare tabel din baza de date,Eloquent presupune in mod implicit ca exist ˘a o
cheie primar ˘a care se autoincrementeaz ˘a s,i este denumit ˘a ”id”. ˆIn cazul ˆın care numele cam-
pului difer ˘a se va declara o variabil ˘a $primaryKey pentru a defini numele coloanei.
3.2.4 Nivelul de View
Nivelul de view este nivelul responsabil de interact ,iunea utilizatorului cu funct ,ionalit ˘at,ile
oferite de platform ˘a.Acest nivel este alc ˘atuit din mai multe pagini,cu care utilizatorii vor
interact ,iona pentru a efectua diferite operat ,iuni.Pentru fiecare pagin ˘a a fost creat un view
specific,iar pentru realizarea acestora s-a folosit HTML,CSS,elemente din framework-ul Bo-
otstrap,JavaScript,AJAX s ,i bilioteca JQuery.
Pentru fiecare pagini disponibil ˘a,ce poate fi accesat ˘a,ˆın fis ,ierul web.php din directorul
routes au fost definite rutele pentru fiecare pagin ˘aˆın parte,acestea fiind imp ˘art,ite pe grupuri
s,i tipurile de permisiuni existente.
Figura 3.10 : Definirea routelor pentru grupul administrator
29

Solut,ia propus ˘a Implementare
3.2.5 Proiectarea controller-elor
Acest nivel face leg ˘atura dintre nivelul de view s ,i cel de model fiind responsabil de pro-
cesarea datelor s ,i decide ce s ˘a afis ,ezeˆın view,acesta fiind prezent ˆın partea de backend,dar s ,i
ˆın cea de front-end, ˆın funct ,ie de cererile utilizatorilor.De exemplu pentru afis ,area obligat ,iilor
de plat ˘a,controlerul verific ˘a dac ˘a utilizatorul are obligat ,ii de plat ˘a s,iˆıntoarce spre view lista
obligat ,iilor de plat ˘a,ˆın caz contrar va afis ,a un mesaj ˆın care utilizatorul este informat c ˘a nu
are obligat ,ii de plat ˘a.
Datorit ˘a dimensiunii mari ale acestei aplicat ,ii,au fost folosite mai multe controllere
pentru a fi mai us ,or de implementat noi funct ,ionalit ˘at,i pe viitor.Pentru fiecare tip de uti-
lizator din cadrul aplicat ,iei exist ˘a un controler specific cu numele grupului din care face
parte.Majoritatea act ,iunilor disponibile unui operator se reg ˘asesc ˆın controlerul Operator,iar
pentru administrator ˆın controlerul Administrator.
Controlerul Utilizator este folosit de c ˘atre nivelul de vizualizare pentru a afis ,a obligat ,iile
de plat ˘a datorate de c ˘atre utilizator,cl ˘adile,mijloacele de transport s ,i terenurile det ,inute de
acesta.
.listaCladiri() – aceasta metod ˘a returneaz ˘a o list ˘a cu toate cl ˘adirile det ,inute de un uti-
lizator. Aceast ˘a metoda este apelat ˘a la cerere utilizatorilor,care utilizeaza maparea
/lista-cladiri
.listaMijloaceTransport() – aceast ˘a metoda este folosit ˘a pentru a returna lista mijloace-
lor de trasponsport det ,inute de un utilizator.
.listaTerenuri() – la fel ca cele doua metode listaCladiri() s ,i listaMijloaceTransport(),aceast ˘a
metoda va returna tot o lista cu informat ,ii despre terenuri.
.obligatii plata() – aceast ˘a metod ˘a returneaz ˘a o list ˘a cu toate obligat ,iile datorate de c ˘atre
utilizator. ˆIn cadrul acestei metode sunt verificate date din mai multe tabele pentru a
afis ,a lista amenzilor,taxelor s ,i fiecare tip de impozit datorat.
.factura($id) – afis ,eaz˘a lista obiectelor de plat ˘a pentru care s-a realizat plata, fidgrepre-
zint˘a id-ul facturii pentru care se dores ,te afis ,area informat ,iilor.
Controlerul Administrator contituie controller-ul care folosit pentru gestiunea datelor
s,i valorilor folosite pentru calcularea impozitelor.Acest controller ofer ˘a urm ˘atoarele funct ,ionalit ˘at,i:
30

Solut,ia propus ˘a Implementare
.paginaPrincipala() – aceasta metoda returneaza numarul total al utilizatorilor inscrisi
pe site, numarul cladirilor, terenurilor si mijloacelor de transport inregistrate in baze
de date , precum si informatii despre versiunea de PHP, dimensiunea bazei de date si
versiunea de Laravel instalata.
.indexTipMijlaoce() – returneaza tipurile mijloacelor de transport.
.indexMarci() – returneaza lista marcilor mijloacelor de transport
.indexModele() – returneaza lista modelelor mijloacelor de transport.
.indexZoneDeIncadrare() – returneaza lista zonelor de incadrare din baza de date cat si
valorile specifice fiecarei zone de incadrare.
.indexStrazi() – returneaza lista strazilor
.indexTipCladire() – returneaza o lista cu toate tipurile de cladiri.
.adaugaStrada –aceasta metoda permite adaugarea unei noi strazi.
.editeazaStrada – metoda permite editarea informatiilor despre o strada selectata de
catre Administrator.
.modificareZoneIncadrare – permite modificarea valorilor folosite in calcularea impo-
zitelor.
.modificareTipCladire – permite modificarea valorilor unuia sau mai multor tipuri de
cladire
ListaAmenziController – este controller-ul care se ocupa de gestionarea amenzilor din
sistem.
.store – aceast ˘a metod ˘a este folosit ˘a pentru adaugarea unei noi amenzi in sistem.
.destroy – metod ˘a folosita pentru stergea unei amenzi.
.editeazaAmenda – aceasta metod ˘a permite modificarea informatiilor despre o amenda.
.amendaVizibila – metoda permite administratorului sa faca o amenda vizibila sau sa
fie ascunsa.
ListaTaxeController reprezint ˘a controller-ul respensabil de gestionarea datelor despre
taxele din baza de date. Acest controller ofera urmatoarele functionalitati:
.store – metoda folosita pentru adaugarea unei noi taxe in sistem.
.destroy – metoda folosita pentru stergea unei taxe.
.editeazaTaxa – aceasta metoda permite modificarea informatiilor despre o amenda.
.taxaVizibila – metoda permite administratorului sa faca o taxa vizibila sau sa fie as-
cunsa operatorului si utilizatorului.
Operator este controller-ul ce poate fi accesat doar de catre operator,folosit pentru a
31

Solut,ia propus ˘a Implementare
efectua gestiona date despre utilizatori,impozite,cladiri,mijloace de transport s ,i terenuri.
.listaUtilizatori – returneaz ˘a o list ˘a cu tot ,i utilizatorii ˆınregistrat ,i.
.cautaUtilizator – metoda folosit ˘a pentru a c ˘auta un utilizator ˆın funct ,ie de un CNP
introdus de la tastatura.
.listaCladiri – aceast ˘a metod ˘a returneaz ˘a lista cl ˘adirilor existente ˆın baza de date.
.cautareCladire – aceast ˘a metod ˘a este folosit ˘a pentru a c ˘auta o cl ˘adire ˆın funct ,ie de
CNP-ul utilizatorului.
.listaMijloaceTransport – aceast ˘a metoda returneaz ˘a lista tuturor mijloacelor de trans-
port.
.listaTerenuri – metoda returneaza lista terenurilor din baza de date.
.dateGenerale($id) – metoda returneaza utilizatorul cu id-ul specificat si informat ,iile
despre acesta.
.cladiriUtilizator($id) – aceast ˘a metod ˘a este folosit ˘a pentru a afis ,a informat ,ii despre o
cl˘adire anumite,fidgreprezint ˘a id-ul cl ˘adirii pentru care se dores ,te informat ,ii
.terenuriUtilizator – lista terenurilor detinute de utilizatorul cu id-ul selectat de operator.
.istoricUtilizator – istoricul pl ˘at,ilor efectuate de c ˘atre utilizatorul selectat de c ˘atre ope-
rator.
.obligatiiUtilizator – lista amenzilor,taxelor si impozitelor datorate de un utilizator spe-
cificat prin id-ul selectat.
.detaliiCladire($id) – informatii detaliate despre o cladire specificata.
.adaugaUtilizator – metoda folosita pentru adaugarea unui nou cont in sistem.
.impozitMijloace – aceasta metoda calculeaza impozitele pentru toate mijloacele de
transport din sistem si afiseaza primele 10 impozite calculate, dupa adaugare afisand
urmatoarele.
.impozitCladiri – metoda folosita pentru calcularea impozitului pe cladiri.
.salveazaImpozitMijloace – aceasta metoda permite salvarea primelor 10 impozite ve-
rificate de catre operator.
.salveazaImpozitCladiri – metoda adauga in baza de date primele impozite adaugate de
catre operator.
.adaugaCladire – aceast ˘a metod ˘a este utilizat ˘a de c ˘atre operatori pentru a adauga o noua
cl˘adire.
.adaugaMijlocTransport – metod ˘a folosit ˘a pentru ad ˘augarea de noi mijloace de trans-
port.
.adaugaTaxaUtilizator – metod ˘a folosit ˘a pentru a adauga o nou ˘a tax ˘a pentru un utilizator
anume.
.editeazaDateUtilizator – metod ˘a folosit ˘a pentru editarea informat ,iilor despre un utili-
zator.
Pentru calcularea impozitelor pentru mijloacele de transport este folosit ˘a metoda impo-
zitMijloace() care calculeaz ˘a s,i afis ,eaz˘a primele 10 impozite calculate f ˘ar˘a a le salva ˆın baza
de date,pentru a evita cazurile speciale ˆın care impozitul poate fi calculat gres ,it.
ˆIn cadrul metodei impozitMijloace() sunt efectuate diferite operat ,iuni pentru a returna
lista mijloacelor de transport pentru care este necesar adaugarea impozitelor.Un lucru im-
portant ˆın cadrul acestei metode este faptul c ˘a trebuie s ˘a se t ,in˘a cont de impozitele calculate
ˆın trecut,dar nu au fost calculate s ,i pentru anul ˆın curs.Pentru a nu exista date eronate s ,i
32

Solut,ia propus ˘a Implementare
pentru a prinde ˆın lista returnat ˘a toate mijloacele pentru care este necesar ˘a calcularea impo-
zitului,primul pas va fi returnarea listei mijloacelor de transport pentru care ˆın trecut s-a mai
calculat impozitul s ,i a fost salvat ˆın baza de date.Dac ˘a exist ˘a impozite calculate ˆın trecut,dar
nu s ,i pentru anul ˆın curs atunci se va returna aceast ˘a lista pan ˘a la calcularea tuturor impo-
zitelor pentru aceste tipuri.Dup ˘a ce au fost ad ˘augate toate impozitele pentru aceste mijloace
de tranport se va face o noua verificare pentru lista mijloacelor de transport ad ˘augate recent
ˆın baza de date.
Pentru calcularea impozitului pentru mijloace de transport este necesar imp ˘art,irea ca-
pacit ˘at,ii cilindrice la 200 s ,iˆınmult ,irea acesteia cu valoarea specific ˘a tipului de mijloc de
transport.
Aceast ˘a metoda arat ˘a astfel:
$anCurent = date("Y");
$listaMijloace = DB::table(’mijloace_transport’)
->join(’obiect_impozabil’, ’mijloace_transport.mijloc_tran_id’, ’=’, ’
obiect_impozabil.id_obiect_impozabil’)
->join(’utilizatori’, ’obiect_impozabil.utilizator_id’, ’=’, ’
utilizatori.id’)
->join(’impozite’, ’obiect_impozabil.id_obiect_impozabil’, ’=’, ’
impozite.obiect_impozabil’)
->whereNotIn(’obiect_impozabil’,function($not){$not->select(’
obiect_impozabil’)->from(’impozite as impozit’)->whereYear(’
data_calculare’,date("Y"));})
->where(’scutit_plata’,’=’,’0’)
->paginate(10);
if($listaMijloace->count() == 0 )
{
$listaMijloaceAni = DB::table(’mijloace_transport’)
->join(’obiect_impozabil’, ’mijloace_transport.mijloc_tran_id’,
’=’, ’obiect_impozabil.id_obiect_impozabil’)
->join(’utilizatori’, ’obiect_impozabil.utilizator_id’, ’=’, ’
utilizatori.id’)
->whereNotIn(’mijloc_tran_id’, DB::table(’impozite’)->pluck(’
obiect_impozabil’))
->where(’scutit_plata’,’=’,’0’)
->paginate(10);
$listaMijloace = $listaMijloaceAni;
}
$valoriImpozit = [];
foreach($listaMijloace as $mijloc)
{
$valoareImpozit = TipMijloc::select(’valoare’)->find($mijloc->
tip_mijloc_id);
array_push($valoriImpozit,round(floatval($mijloc->
capacitate_cilindrica/200) *$valoareImpozit->valoare));
}
Dup˘a verificarea valorilor calculate operatorul va putea modifica s ,i salva impozitele ˆın
baza de date cu ajutorul metodei salveazaImpozitMijloace().
33

Solut,ia propus ˘a Implementare
Pentru calcularea impozitelor pe cl ˘adiri ˆın controller-ul Operator exist ˘a metoda impo-
zitCladiri().La fel ca ˆın cazul mijloacelor de transport,aceast ˘a metoda calculeaz ˘a primele
10 impozite s ,i le afis ,eaz˘a oferind operatorului posibilitatea de a verifica valorile calculate
s,i de a le modifica ˆın cazul ˆın care nu sunt corecte.Fat ,˘a de metoda folosit ˘a la calcularea
impozitelor pentru mijloace de transport ˆın cadrul acestei metode sunt efectuate diferite ve-
rific˘ari precum: verificarea tipului de contribuabil pentru care este calculat impozitul,tipul
de cl ˘adire,indicele specific pentru materialul din care este construit ˘a cl˘adirea,indicele spe-
cific zonei de ˆıncadrare,etc toate aceste valori fiind gestionate de c ˘atre un administrator al
platformei.
Metoda impozitCladiri() comparativ cu metoda care calculeaz ˘a impozitul pe mijloace
de transport s ,i cea pentru terenuri este mai complex ˘a din cauza numarului mare de informat ,iilor
necesare.La fel ca ˆın cazul metodei prezentate mai sus aceast ˘a metoda are la baz ˘a acelas ,i mod
de verificare a impozitelor.Prim dat ˘a sunt calculate impozitele pentru cl ˘adirile care au impo-
zite salvate ˆın baza de date pentru anii trecut ,i,dar nu s ,i pentru anul ˆın curs.Dac ˘a lista este
goal˘a se trece la verificarea cl ˘adirilor noi ˆınregistrare.
3.2.6 Implementarea bazei de date
Pentru ca baza de date s ˘a fie proiectat ˘a direct ˆın aplicat ,ie au fost folosite caracteristicie oferite
de Migration,prezentate ˆın subcapitolul Migration.Fiecare tabel ˘a a bazei de date va avea aso-
ciat un fis ,ierˆın cadrul c ˘aruia vor fi definite atributele tabelei respective. ˆIn cadrul framework-
ului Laravel toate fis ,ierele Migration extind clasa Schema care funct ,ionez ˘a cu orice baz ˘a de
date suportat ˘a de Laravel. ˆIn prezent Laravel suport ˘a patru baze de date:MySQL,PostgreSQL,SQLite,SQL
Server.[13]
ˆIn exemplul de mai jos este prezentat ˘a tabel ˘a cl˘adiri cu toate coloanele definite ˆın fis ,ierul
de migrare denumit create cladiri table.php.
Schema::create(’cladiri’, function (Blueprint $table) {
$table->integer(’cladire_id’)-> unsigned ()->unique();
$table->decimal(’suprafata_utila’);
$table->decimal(’suprafata_rezidentiala’);
$table->decimal(’suprafata_nerezidentiala’);
$table->integer(’nr_act_dobandire’)->unique();
$table->date(’data_constructie’);
$table->date(’data_dobandire’);
$table-> enum (’utilitati’, [’da’,’nu’]);
$table-> enum (’scutit_plata’, [’0’,’1’]);
$table->integer(’adresa_id’)-> unsigned ()->unique();
$table->integer(’tip_id’)-> unsigned ();
$table->integer(’categorie_id’)-> unsigned ();
$table->foreign(’adresa_id’)->references(’id_adresa’)->on(’adrese’);
$table->foreign(’cladire_id’)->references(’id_obiect_impozabil’)->on(’
obiect_impozabil’);
$table->foreign(’tip_id’)->references(’id_tip’)->on(’tip_cladire’);
$table->foreign(’categorie_id’)->references(’id_categorie’)->on(’
categorie_cladire’);
$table->timestamps(); }
34

Solut,ia propus ˘a Implementare
Pentru definirea unei noi tabele este folosit ˘a metoda table din cadrul clasei Schema.Aceast ˘a
metoda primes ,te ca argumente numele tabelei s ,i o instant ,˘a Blueprint pentru ad ˘augarea co-
loanelor.Constructorul de scheme folosit de Laravel ofer ˘a numeroase tipuri de coloane s ,i
indexuri ce pot fi folosite pentru definirea acestora.
ˆIn mod implicit,toate coloanele noi definite ˆın migration admit valori duplicat,dar nu
s,i cˆampuri goale f ˘ar˘a valori de tip NULL.Pentru a defini o coloan ˘a care nu admite valori
duplicate se va folosit metoda unique(),iar pentru coloanele care pot accepta valori NULL se
va folosit metoda nullable().
ˆIn exemplu urm ˘ator a fost definit ˘a coloana nr actdobandire de tip integer ce admite
doar valori unice s ,i NOT NULL.
$table->integer(’nr_act_dobandire’)->unique();
35

Capitolul 4
Prezentare aplicat ¸iei
4.1 Panou principal ˘a utilizator
Dup˘a autentificarea pe platform ˘a utilizator va fi redirect ,ionat pe panoul principal.Pe aceast ˘a
pagina sunt prezentate ultimele anunt ,uri ad ˘augate s ,i num ˘arul obligat ,iilor de plat ˘a dato-
rate.Dac ˘a contul este recent ˆınregistrat s ,i nu a fost confirmat pe aceast ˘a pagina va fi afis ,at
un mesaj ˆın care este specificat faptul c ˘a acel cont nu este ˆınc˘a activ s ,i ca un operator sa
efectueze verific ˘arile necesare.
Figura 4.1 : Panou principal ˘a utilizator
36

Prezentare aplicat ¸iei Pagina Cl ˘adiri
4.2 Pagina Cl ˘adiri
Pe aceast ˘a pagina utilizatorul autentificat poate vizualiza lista complet ˘a cu toate cl ˘adirile
det ,inute s ,i informat ,iile despre acestea.Utilizatorul va putea vizualiza informat ,ii precum: nu-
mar act dob ˆandire,suprafat ,˘a util ˘a,suparafat ,˘a rezident ,ial˘a s,i alte informat ,ii importante prezen-
tateˆın figura de mai jos.
Figura 4.2 : Pagina Cl ˘adiri
4.3 Pagina Obligat ¸ii de plat ˘a
Pe aceasta pagin ˘a utilizatorii platformei pot vizualiza o lista detaliat ˘a a taxelor,amenzilor
s ¸i impozitelor datorate c ˘atre administrat ¸iile publice locale.Utililizatorii vor putea selecta din
lista afis ¸at ˘a obiectele de plat ˘a pentru care doresc sa efectueze pl ˘at ¸i s ¸i metoda de plat ˘a.
37

Prezentare aplicat ¸iei Pagina Alte taxe
Figura 4.3 : Pagina Obligat ¸ii de plat ˘a
ˆIn funct ¸ie de c ˆampurile selectate sumele de plat ˘a se vor schimba dinamic,acestea fiind
afis ¸ate ˆın timp real cu fiecare selectare sau deselectare a unui c ˆamp.Pentru pl ˘at ¸ile efectuate
ˆın perioada 01.01 – 31.01 a anului ˆın curs,se va calcula o reducere de 10% la suma total ˘a
de plat ˘a,pentru impozitele de orice tip.Dac ˘a utilizatorul care acceseaz ˘a aceast ˘a pagin ˘a nu
figureaz ˘aˆın baza de date cu obligat ¸ii de plat ˘a,pe pagin ˘a va fi afis ¸at un mesaj ˆın care este
precizat c ˘a persoana nu are obligat ¸ii de plat ˘a.
Tot pe aceast ˘a pagin ˘a,utilizatorii pot selecta opt ,iunea de a fi redirect ,ionat ,i pe pagini de
vizualizare a cl ˘adirilor,mijloacelor de transport sau terenurilor det ,inute.
4.4 Pagina Alte taxe
Aceasta pagina ofera utilizatorilor posibilitatea de a efectua pl ˘at ¸i pentru anumite taxe
care nu sunt incluse la obligat ¸iile de plat ˘a,dar dovezile pentru plata acestora sunt nece-
sare.Utilizatorii vor putea c ˘auta o tax ˘a dup ˘a nume ˆıntr-o lista detaliat ˘a cu toate denumirile
taxelor s ¸i suma de plat ˘a pentru fiecare.
38

Prezentare aplicat ¸iei Pagina Alte taxe
Figura 4.4 : Pagina Alte taxe
Dupa ce utilizatorul a selectat taxa pentru care dores ¸te sa efectueze plata toate campu-
rile vor fi completate automat cu informat ¸iile despre taxa s ¸i valoarea acesteia.C ˆampul total
de plat ˘a va fi mereu blocat deoarece toate taxele au o valaore fix ˘a care nu poate fi modifi-
cat˘a.Dup ˘a ce au fost completate toate c ˆampurile utilizatorul va putea alege metoda de plat ˘a
s,i poate efectua plata pentru taxa selectat ˘a.Dupa efectuarea pl ˘at,ii acesta va fi redirect ,ionat pe
o pagin ˘a unde este specificat ˘a suma pl ˘atit˘a s,i data ˆın care a fost efectuat ˘a plata.
Exemplu dovada de plat ˘a:
Figura 4.5 : Dovada de plat ˘a
39

Prezentare aplicat ¸iei Pagina Istoric pl ˘at ¸i
4.5 Pagina Istoric pl ˘at ¸i
Aceast ˘a pagina ofer ˘a utilizatorilor o lista detaliat ˘a a pl ˘at ¸ilor efectuate.Utilizatorii dis-
pun de posibilitatea de a alege un an pentru care doresc sa vizualizeze o plat ˘a efectuat ˘a.ˆın
cazul nu este selectat un an pentru care se dores ¸te o list ˘a detaliat ˘a pe aceast ˘a pagina vor fi
afis ¸ate toate pl ˘at ¸ile efectuate ˆın ordine invers cronologic ˘a.
Figura 4.6 : Pagina Istoric pl ˘at ¸i
Pentru fiecare plat ˘a efectuat ˘a utilizatorul va putea vizualiza o list ˘a detaliat ˘a pentru
amenzile,taxele sau impozitele pentru care a efectuat pl ˘at,i.Aceste informat ,ii sunt prezen-
tate pe o pagin ˘a sub forma unei facturi s ,i utilizatorul poate selecta printarea acestora sau
exportarea ˆıntr-un fis ,ier PDF.Exemplu de factur ˘a:
Figura 4.7 : Exemplu factur ˘a
40

Prezentare aplicat ¸iei Panou operator
4.6 Panou operator
Aceast panou este destinat operatorilor pentru a efectua toate operat ¸iunile necesare
pentru gestionarea datelor despre utilizatori,cl ˘adiri,mijloace de transport s ¸i terenuri.
Figura 4.8 : Panou operator
Dup˘a cum se poate vedea in figura prezentat ˘a mai sus pe acest panou operatorul dispune
de urmatoarele pagini:
.Utilizatori – Pe aceast ˘a pagina operatorii vor putea vizualiza tot ¸i membri ˆınregistrat ¸i
s ¸i informat ¸ii despre aces ¸tia.V or putea modifica informat ¸ii,activa conturi s ¸l cauta un
utilizator dup ˘a CNP-ul acestuia.
.Cl˘adiri – Pe aceast ˘a vor fi prezentate informat ¸ii despre toate cl ˘adirile utilizatorilor.
.Mijloace de transport – Aceast ˘a pagina ofer ˘a informat ¸ii despre mijloacele de transport
ale utilizatorilor.
.Terenuri –
.Taxe si Amenzi – Pentru a oferi o solut ¸ie mai rapid ˘a de ad ˘augare a taxelor s ¸i amenzilor
a fost adaugat ˘a aceast ˘a pagin ˘a pe care sunt prezentate taxele s ¸i amenzile din baza de
date , dar pot adaugate unele noi.
.Pl˘at ¸i efectuate – Pe aceasta pagina sunt prezentate toate pl ˘at ¸ile efectuate.
.Impozite – Pe aceast ˘a pagina operatorii pot adauga impozitele calculate dup ˘a verifi-
care. ˆıntr-un subcapitol urm ˘ator vor fi descrise funct ¸ionalit ˘at ¸ile oferite de aceast ˘a pa-
gin˘a.
41

Prezentare aplicat ¸iei Panou administrator
4.7 Panou administrator
Acest panou este destinat special administratorilor pentru a efectua toate operat ¸iunile
necesare ca toate datele utilizate ˆın calcularea impozitelor sa fie disponibile s ¸i ˆın acelals ¸i
timp gestionarea amenzilor si taxelor din sistem.
Figura 4.9 : Panou operator
Administratorii acestei platforme dispun de urmatoarele pagini din panoul de adminis-
trator:
.Pagini – Pe aceast ˘a pagina administratorii pot edita anunt ¸urile,documentele s ¸i ˆıntreb ˘arile
frecvente postate ˆın cadrul aplicat ¸iei.
.Taxe – Pe aceast ˘a pagina administratorii pot adauga,modifica sau s ¸terge taxele existente
in sistem.
.Amenzi – Aceast ˘a pagin ˘a poate fi folosit ˘a de c ˘atre administratori pentru a gestiona
datele despre amenzi.
.Cl˘adiri – Pe aceast ˘a pagin ˘a administratorii pot modifica sau ad ˘auga informat ¸ii despre
str˘azile,valorile pentru fiecare zona de ˆıncadrare,tipurile de cl ˘adire s ¸i categoriile de
cl˘adire.
.Mijloace de transport – Pe aceast ˘a pagina sunt disponibile toate informat ¸iile despre
tipurile mijloacelor de transport , marcile si modele auto.
.Terenuri – Aceast ˘a pagina ofer ˘a informat ¸ii despre tipurile de terenuri s ¸i valorile ˆın
funct ¸ie de tipul de teren.
42

Prezentare aplicat ¸iei Vizualizare profil utilizator
4.8 Vizualizare profil utilizator
Pe aceast ˘a pagina operatorul poate vizualiza s ,i edita informat ,iile despre un utilizator
selectat.
Figura 4.10 : Vizualizare profil utilizator- Operator
4.9 Pagina impozite
Aceast ˘a pagin ˘a ofer ˘a operatorilor posibilitatea de a adauga noi impozite pentru anul
ˆın curs.Sistemul ofer ˘a o list ˘a cu impozitele calculate de c ˘atre sistem,iar operatorul poate
schimba sumele dac ˘a apar sume calculate gres ,it.Aceast ˘a solut ¸ie vine ca un suport,fiind ne-
voie de persoane care s ˘a urm ˘areasc ˘aˆıntreaga activitate pentru evitarea anumitor situat ¸ii.
Figura 4.11 : Panou operator
43

Capitolul 5
Concluzii
ˆIn cadrul acestui capitol sunt prezentate concluziile finale ˆın urma dezvolt ˘arii platformei
TaxEPay s ,i posibile dezvolt ˘ari ulterioare.
5.1 Realiz ˘ari
Pentru realizarea platfomei TaxEPay au fost folosite cele mai noi tehnologii web,structura
acestuia fiind dezvoltat ˘aˆın urma unui studiu bazat pe actualele solut ,ii de pe piat ,˘a.Solut ,ia
dezvoltat ˘a ofer ˘a o interfat ,˘a prietenoas ˘a s,i us ,or de folosit de orice tip de utilizator.
Platforma dezvoltat ˘a reprezint ˘a o solut ,ie eficient ˘a s,i sigur ˘a cu ajutorul c ˘arei orice tip de
contribuabil poate efectua pl ˘at,i pentru datoriilor locale.Folosind aceast ˘a solut ,ie utilizatorii nu
vor fi nevoit ,i s˘a se deplaseze la institut ,iile locale la care aces ,tia sunt ˆınscris ,i,totul realiz ˆandu-
seˆın cateva minute,aces ,tia economisind timp pret ,ios.
5.2 Dezvoltari ulterioare
Solut ,ia actual ˘a poate fi ˆınbun ˘at˘at,it˘a s,i dezvoltat ˘a prin ad ˘augarea de noi servicii disponibile
pentru utilizatori,c ˆat s ,i pentru administratori.
44

Concluzii Dezvoltari ulterioare
Posibile dezvolt ˘ari ulterioare:
.Ad˘augarea mai multor metode de plat ˘a
.Integrarea unui sistem de suport prin tickete pentru comunicarea mai us ¸oar ˘a s ¸i rapid ˘a
cu operatorii.
.Ad˘augarea unei posibilit ˘at ¸i de ˆınc˘arcare a dovezilor de plat ˘a pentru depuneri ˆın conturi
bancare. – ˆın cazul ˆın care utilizatorul pl ˘ates ,te la banc ˘a acest ˘a s˘a poata ˆıncarca o poza
cu dovada pl ˘at,ii online,f ˘ar˘a a fi necesar sa se prezinte la administrat ,ia local ˘a la care
acesta apart ,ine.
.Calcularea penalizarilor pentru impozitele care nu au fost pl ˘atite. – pentru cazurile ˆın
care perioada de plat ˘a a dateloriilor locale a fost dep ˘as,it˘a,aceast ˘a solut ,ie va ajuta la
ad˘augarea penalit ˘at,ilor datorate.
.Ad˘augarea unui sistem pentru cereri documente, fise ,dovezi,informat ¸ii,etc.
.Ad˘augarea de noi rapoarte pentru administrator.(informat ¸ii despre pl ˘at ¸ile efectuate in
anumite perioada selectate,num ˘arul conturilor noi ˆıntr-o anumit ˘a perioad ˘a,rapoarte pri-
vind accesarea site-ului,etc).
.Ad˘augarea mai multor metode de securitate pentru protect ¸ia datelor.
Verificarea dispozitivelor de care au fost accesate conturile pentru fiecare uti-
lizator. Acest lucru verifica daca un cont este accesat de un nou dispozitiv s ,i
cere confirmarea noului dispozitiv de pe care este accesat contul,confirmarea re-
alizˆandu-se cu ajutorul telefonului mobil,cu ajutorul unui cod unic sau pe email.
Afis ¸area informat ¸iilor despre accesarile care au avut loc. – Este necesar ca utili-
zatorul s ˘a dispun ˘a de o list ˘a detaliat ˘a a acces ˘arilor grupate pe ip-uri,zone s ,i dat˘a.
Schimbarea parolelor regulat. Aceast lucru permite unui utilizator s ˘a foloseasc ˘a
o parol ˘a doar 30 de zile , dup ˘a aceast ˘a perioad ˘a utilizatorul va trebui sa adauge o
noua parol ˘a diferit ˘a de cea care a fost ˆın trecut.
.Dezvoltarea metodelor de calcul a impozitelor. – Sunt numeroase cazuri ˆın care dezvol-
tarea actual ˘a poate calcula gres ,it valoarea impozitului pentru o cl ˘adire sau pentru un
teren.
.Ad˘augarea unui sistem de mentenant ¸ ˘a. – Pentru cazurile ˆın care sunt realizate modi-
fic˘ari la platform ˘a sau ad ˘augate noi funct ,ionalit ˘at,i utilizatorii nu ar trebui sa intre ˆın
contact cu diferite mesaje de eroare,ci ar fi mai bine doar o informare despre lucr ˘ariile
care au loc asupra platformei.
45

Bibliografie
[1] Mustapha, Bojuwon, and Siti Normala Bt Sheikh Obid. ”Tax service qu-
ality: The mediating effect of perceived ease of use of the online tax
system.” Procedia-Social and Behavioral Sciences 172 (2015): 2-9. ht-
tps://www.sciencedirect.com/science/article/pii/S1877042815003651
[2] Mustapha, Bojuwon, and Siti Normala Bt Sheikh Obid. ”Tax service qu-
ality: The mediating effect of perceived ease of use of the online tax
system.” Procedia-Social and Behavioral Sciences 172 (2015): 2-9. ht-
tps://www.sciencedirect.com/science/article/pii/S1877042815003651
[3] http://rochi.utcluj.ro/rrioc/articole/RoCHI-2010/RoCHI-2010-Iordache.pdf
[4] https://en.wikipedia.org/wiki/Laravel
[5] https://www.richestsoft.com/blog/why-laravel-is-the-best-php-framework/
[6] https://laravel.com/docs/5.8/artisan
[7] DB-Engines Ranking – https://db-engines.com/en/ranking
[8] https://db-engines.com/en/system/MySQL
[9] https://getcomposer.org/doc/00-intro.md
[10]https://en.wikipedia.org/wiki/Bootstrap_(front-end_
framework)
[11] David Flanagan JavaScript: The Definitive Guide, 4th Edition .
[12] https://ro.wikipedia.org/wiki/Model-view-controller
[13] https://laravel.com/docs/5.8/database
46

Similar Posts