Sunteți pe pagina 1din 57

Academia de Studii Economice din București

Facultatea de Contabilitate și Informatică de Gestiune


Programul de licență 2018 – 2021

LUCRARE DE LICENȚĂ

Conducător științific: Autor:


Conf. Univ. Dr. Gorgan Vasile Mureșan Cristina-Laura

București, 2021
Cuprins
Introducere ............................................................................................................................... 3

PARTEA I – STADIUL CUNOAȘTERII .............................................................................. 6

Abordari generale asupra gestiunii stocurilor ......................................................................... 6

Delimitari si clasificari ale stocurilor .................................................................................. 6

Recunoasterea si evaluarea stocurilor ................................................................................. 8

Evaluari ale stocurilor la intrarea in patrimoniu ................................................................. 9

Evaluari ale stocurilor la iesirea din gestiune ................................................................... 10

Evaluarea stocurilor la inchiderea exercitiului financiar .................................................. 11

Aspecte reglementare privind stocurile ................................................................................ 11

Reglementari contabile nationale si internationale ........................................................... 11

Tratamentul contabil al stocurilor potrivit IFRS/IAS ....................................................... 12

Tratamentul contabil al stocurilor potrivit OMFP 1802/2014 .......................................... 13

Proiectarea si dezvoltarea sistemelor informatice de gestiune ............................................. 14

Ciclul de viata al sistemelor informatice .......................................................................... 15

Modele de parcurgere a etapelor aferente ciclului de viata al sistemelor ........................ 16

Necesitatea unui sistem informatic .................................................................................. 17

Definirea cerintelor sistemului ......................................................................................... 17

Testarea si implementarea sistemelor informatice ........................................................... 18

Mediul de dezvoltare Visual Studio .NET ....................................................................... 18

PARTEA II – CONTRIBUȚIA PERSONALĂ ................................................................... 20

Prototip de aplicație pentru gestiunea stocurilor .................................................................. 20

Definirea cerințelor pentru proiectarea aplicației ............................................................. 20

Modelarea conceptuală a datelor ...................................................................................... 23

Modelarea logică a datelor ................................................................................................ 24

Modelarea fizică a datelor ................................................................................................. 25

Modelarea conceptuala a prelucrărilor.............................................................................. 27

2
Modelarea logica a prelucrărilor ....................................................................................... 28

Funcționalitățile oferite de interfața grafică ......................................................................... 30

Realizarea interfeței cu utilizatorul ................................................................................... 41

Concluzii și recomandări ....................................................................................................... 49

Referințele bibliografice......................................................................................................... 51

Lista figurilor .......................................................................................................................... 52

Anexe ....................................................................................................................................... 53

3
Introducere

Piatra de temelie a acestei lucrari da curs unui subiect foarte important zilelor noastre,
si anume digitalizarea metodelor traditionale de gestiune a stocurilor si nu numai. In acest sens,
in cadrul acestei lucrari voi aprofunda cerintele necesare pe baza cunostintelor pentru realizarea
unui program informatic de gestiune a stocurilor.

Premisa de la care s-a inceput a fost aceea de a sporii ritmul realizarii unei gestiuni
realizate prin metoda traditionala, adica pe hartie cu ajutorul instrumentelor clasice, si de a
realiza un sistem informatic usor de folosit si pe intelesul oricarui utilizator. Mai exact, procesul
de gestiune a stocurilor nu are o dificultate tocmai ridicata, insa in urma acestuia pot exista erori
omenesti care in final pot dauna foarte mult exercitiului financiar al unei entitati. Astfel,
introducerea unei aplicatii de acest gen faciliteaza atat circuitul de gestiune a stocurilor, cat si
utilizatorii, datorita faptului ca datele introduse in sistem vor fi verificate pe baza unor filtre ce
ajuta la detectarea erorilor si la stoparea procesului de gestiune pana la remedierea acestora de
catre sistem sau de catre utilizator, dupa caz.

In urma analizelor asupra domeniului economic, respectiv financiar – contabil am


observat faptul ca din ce in ce mai multe entitati doresc introducerea unui sistem informatic de
acest gen. Acest lucru i se datoreaza faptului ca o aplicatie este mult mai precisa si poate detecta
automat erorile pe baza informatiilor introduse, spre deosbire de o persoana umana care folosind
metodele traditionale ar putea gresi fara sa remedieze problema, dat fiind faptul ca exista multi
factori ce ar putea influenta starea unui om la locul de munca (oboseala, stresul, plictiseala etc).
De asemenea, dorinta companiilor de a evolua si de a se digitaliza reprezinta cu siguranta un alt
impuls spre introducerea unor sisteme de acest gen.

In prim plan doresc sa evidentiez cunostintele dobandite pana in momentul de fata


asupra metodelor de gestiune a stocurilor in sistemul financiar – contabil romanesc, dar si din
punct de vedere european. Astfel, voi realiza o viziune de ansamblu asupra tuturor metodelor
de gestiune, evaluare si clasificare a stocurilor, insa voi vorbi si despre tratamentele si
reglementarile contabile potrivit OMFP 1802/2014 si IFRS/IAS asupra stocurilor.

In continuare, in cea de a doua parte voi prezenta in detaliu necesitatea implementarii


unui sistem informatic pentru gestiunea stocurilor, denumit „SmartONE”. Prima etapa este
aceea de a strange informatiile relevante pe baza carora voi crea un scenariu ce ma va ghida in
timpul realizarii bazei de date. Aceasta va fi implementata prin intermediul programului
Microsoft SQL Server, iar mai apoi se va realiza conexiunea dintre proiectul aplicatiei si aceasta

4
cu ajutorul unui string de conexiune in cadrul tehnologiei ADO.NET Entity Data Model
specifica programului Visual Studio. De asemenea, cea de a doua etapa este cea de modelare a
aplicatiei, si anume realizarea metodelor, sistemelor si creionarea unei interfete simple, insa
care sa ofere toate functionalitatile necesare procesului de gestiune a stocurilor in cadrul unei
companii.

5
PARTEA I – STADIUL CUNOASTERII

Abordari generale asupra gestiunii stocurilor

Gestiunea si contabilitatea stocurilor reprezinta o activitate foarte importanta


datorita influentei pe care aceasta o poate avea asupra productivitatii unei companii.
Astfel, productivitatea unei entitati este accentuata de legatura ce apare intre
deciziile luate, controlul performantei si gestiunea sistemelor. Mai mult, gestiunea si
contabilitatea stocurilor are ca prim rol asigurarea unei activitatii continue specifice
companiei.

Scopul acestei lucrari este de a evidentia importanta necesitatii unui sistem


informatic in cadrul actiunii normale, traditionale de gestiune a stocurilor.

Delimitari si clasificari ale stocurilor

"Stocurile reprezinta ansamblul bunurilor si serviciilor are intervin in


cadrul ciclului de exploatare, fie pentru a fi vandute in aceeasi stare sau la
terminarea procesului de productie, fie pentru a fi consumate cu ocazia primei
utilizari."

Potrivit articolului 272, alineatul 1 din OMFP 1802/2014 stocurile sunt active
circulante detinute pentru a fi vandute pe parcursul desfasurarii normale a activitatii, in
curs de productie in vederea vanzarii in procesul desfasurarii normale a activitatii sau
sub forma de materii prime, materiale si alte consumabile care urmeaza sa fie folosite
in procesul de productie sau pentru prestarea de servicii.

Stocurile reprezinta acele active circulante constand in ansamblul de bunuri


materiale si servicii din cadrul entitatilor economice care sunt destinate pentru a se
consuma la prima utilizare si care pot fi vandute la sfarsitul procesului de prelucrare
sau in starea initiala in care au fost cumparate.

Potrivit reglementarilor, un element de activ este considerat activ circulant


daca:

• Este detinut in scopul tranzactionarii;

6
• Se asteapta sa fie realizat sau este detinut cu intentia de a fi vandut sau consumat
in cursul normal al ciclului de exploatare al companiei.
• Este reprezentat de numerar sau echivalente de numerar;
• Trebuie sa fie realizat in termen de 12 luni de la data bilantului.

Astfel, putem observa ca activele circulante cuprind in general: stocurile,


creantele, investitiile pe termen scurt, casa si conturile la banci (potrivit OMFP
1802/2014, art. 269).

In acest sens, caracteristica esentiala a stocurilor este evidentiata de consumul


acestora intr-un ciclu de exploatare putand fi clasificate pe baza urmatoarelor
categorii:

• Materii prime, acestea participa direct la fabricarea produselor si se regasesc in


produsul finit inregral sau partial, fie in starea lor initiala, fie transformata.
• Materii consumabile (materii auxiliarea, combustibili, materiale pentru ambalat,
seminte si materiale de plantat, furaje si alte materiale consumabile), participa
sau ajuta procesul de fabricatie sau de exploatare de regula, fara a se regasi in
produsele ce urmeaza a fi fabricate.
• Materialele de natura obiectelor de invetar, cuprind bunuri de valoare mare cu
durata de viata utila sub un an, sau durata de viata utila epste un an indiferent de
valoare sub forma de: mecanizme, dispozitive, echipamente de protectie etc.
• Produsele sunt evidentiate de semifabricate si produse finite. In ceea ce privesc
semifabricatele acestea sunt bunuri al caror proces tehnologic a fost terminat
intr-o sectie si pot fi livrate altor sectii sau tertilor. De asemenea, produsele finite
reprezinta bunuri ce au parcurs in intregime toate fazele procesului de fabricatie
si nu mai sunt necesare prelucrari ulterioare.
• Animalele si pasarile crescute si folosite pentru reproductie sau pentru a fi
valorificate.
• Marfurile sunt de asemenea un alt element al stocurilor si reprezinta bunurile pe
care intreprinderea le cumpara in vederea vanzarii catre alti clienti sau pentru
vanzarea proprie.
• Ambalajele, includ ambalaje ce pot fi reutilizate destinate protejarii si prezentarii
produselor.

7
• Productia in curs de executie, reprezentand productia care nu a trecut prin toate
fazele procesului de prelucrare si care sunt evidentiate in procesul tehnologic si
ca produse nesupuse probelor si receptiei sau necompletate in intregime.

Recunoasterea si evaluarea stocurilor

Stocurile sunt reprezentate ca fiind active ale unei entitati economice. Prin urmare,
recunoasterea acestora se aplica in aceeasi masura si stocurilor. Astfel, stocurile sunt
recunoscute in contabilitate in momentul in care:

• Este probabila realizarea unor beneficii economice viitoare ca urmare a detinerii,


utilizarii sau vanzarii acestora sau;
• Reprezinta un cost ori o valoare ce poate fi evaluata in mod credibil.

In ceea ce privesc stocurile, acestea participa in mod direct sau indirect la fluxul de
numerar sau echivalente de numerar catre entitate reprezentand o eventualitate productiva in
cadrul activitatii de exploatare a companiei. Drept urmare, aceasta eventualitate inglobeaza
vanzarea produselor finite, a marfurilor sau reducerile de numerar prin reducerea costurilor de
productie.

Asa cum este specificat in OMFP 1802/2014, articolul 47 evaluarea reprezinta procesul
prin care se determina valoarea la care elementele situatiilor financiare sunt recunocute in
contabilitate si prezentate in bilant, respectiv in bilantul prescurtat si in contul de profit si
pierdere. Evaluarea stocurilor se realizeaza distinct in functie de momentul la care aceasta are
loc si anume:

• Evaluarea initiala a stocurilor;


• Evaluarea la intrarea in patrimoniu;
• Evaluarea la iesirea din gestiune a stocurilor;
• Evaluarea la inchiderea exercitiului financiar;

In contabilitate stocurile sunt reflectate din punct de vedere valoric (contabilitatea


sintetica), cantitativ – valoric in ceea ce priveste contabilitatea analitica, iar cantitativ in
evidenta operativa din cadrul depozitelor.

8
Evaluari ale stocurilor la intrarea in patrimoniu

In momentul in care stocurile intra in patrimoniu acestea sunt evaluate la costul istoric
sau la valoarea de intrare. Mai exact, in functie de modul de dobandire a acestora, valoarea de
intrare este data de costul de achizitie, costul de productie, valoarea de aport si valoarea justa.

Costul stocurilor trebuie sa cuprinda toate costurile aferente achizitiei si prelucrarii,


precum si costurile suportate pentru a aduce stocurile in forma si in locul in care se gasesc.

Costul de achizitie reprezinta valoare de intrare a stocurilor si cuprinde urmatoarele:

• Cheltuilelile de transport, de manipulare si alte cheltuieli care pot fi atribuite


direct achizitiei de stocuri;
• Taxe nerecuperabile (taxe vamale, accize, comisioane, taxe de asigurare, TVA
pe factura furnizorului etc);
• Pretul de facturate fara valoarea TVA-ului al furnizorului;

De asemenea, exista si anumite reduceri comerciale, precum: rabatul sau remiza ce


reprezinta reduceri acordate din partea furnizorului.

Costul de productie reprezinta valoarea la care sunt evaluate la intrarea in patrimoniu


stocurile obtinute din productie proprie, asa cum sunt: semifabricatele sau produsele finite, si
poate cuprinde:

• Cheltuilile directe aferente productiei (Ex. Materii prime, materiale directe,


energie consumata pentru procesul tehnologic);
• Cheltuielile indirecte ale productiei ce sunt legate de fabricarea stocurilor
respective (Ex. Cheltuieli cu amortizarea);

Reglementat pe baza OMFP 1802/2014 in articolul 79, alineatul 1, costurile ce nu


trebuie incluse in costul stocurilor, mai de graba trebuie recunoscute drept cheltuieli ale
perioadei sunt cheltuielile de depozitare, cu excecptia cazurilor in care aceste costuri sunt
neccesare in cadrul ciclului de productie sau pierderile de materiale, manopera sau alte costuri
de productie.

9
Evaluari ale stocurilor la iesirea din gestiune

Stocurile se evalueaza si se scad din gestiune la valoarea lor de intrare. Astfel, pot fi
aplicate urmatoarele metode aferente iesirii din gestiune a stocurilor, si anume:

• FIFO: Metoda primului intrat – primului iesit (First in – First out);


• LIFO: Metoda ultimului intrat – primului iesit (Last in – First out);
• CMP: Metoda costului mediu ponderat;

FIFO sau metoda primului intrat – primului iesit, denumita in limba engleza ca first in
– first out, are la baza iesirea din gestiune a stocurilor la costul de achizitie sau de productie in
ordinea cronologica a vechimii stocului intrat. Mai exact, prima iesire din gestiune este evaluata
la costul unitar al primei intrari in gestiune, iar in momentul in care primul stoc a fost epuizat
se trece la urmatorul lot in ordine cronologica. Aceasta metoda are un avantaj, si anume valoarea
stocurilor ramase in gestiune este prezentata la costul celei mai recente intrati in gestiune, adica
se apropie de valoarea cea mai reala si concreta de pe piata bunurilor.

LIFO sau metoda ultimului intrat – primului iesit, denumita in limba engleza ca last in
– first out este asemanatoare cu metoda FIFO, insa aceasta evalueaza stocurile la costul de
achizitie sau de productie al ultimului stoc intrat. Bunurile iesite se evalueaza la costul de
achizitie sau de productie al lotului anterior, in ordine cronologica. In momentul in care alegem
sa folosim aceasta metoda, stocul final nu mai este evaluat la pretul pietei, asa cum este in cazul
metodei FIFO, ci este evaluat la preturile cele mai vechi.

Potrivit IAS 2 „Stocuri” se evidentiaza faptul ca cea mai buna practica de evaluare a
stocurilor la iesirea din gestiune trebuie sa se realizeze folosind metoda FIFO sau cea a costului
mediu ponderat (CMP).

In continuare, potrivit OMFP 1802/2014, articolul 94, alineatul 2, metoda costului


mediu ponderat se refera la calcularea costului fiecarui element de baza pe media ponderata a
costurilor elementelor similare aflate in stoc la inceputul perioadei si a costului elementelor
similare produse de catre entitate sau achizitionate de-a lungul perioadei de exploatare. In acest
sens, media poate fi calculata atat periodic cat si dupa fiecare receptie a stocurilor.

Relatie de calcul este evidentiata prin intermediul urmatoarei formule matematice:

Valoarea stocului initial + Valoarea stocului intrat


𝐶𝑀𝑃 =
𝐶𝑎𝑛𝑡𝑖𝑡𝑎𝑡𝑒𝑎 𝑖𝑛𝑖𝑡𝑖𝑎𝑙𝑎 + 𝐶𝑎𝑛𝑡𝑖𝑡𝑎𝑡𝑒𝑎 𝑖𝑛𝑡𝑟𝑎𝑡𝑎

10
Evaluari ale stocurilor la inchiderea exercitiului financiar

OMFP 1802/2014, articolul 82 specifica faptul ca la incheierea exercitiului financiar


entitatile trebuie sa procedeze la inventarierea si evaluarea elementelor de natura activelor,
datoriilor si capitalurilor proprii. In situatiile financiare anuale, elementele de natura activelor,
datoriilor si capitalurilor proprii sunt reflectate la valoarea contabila. Astfel, valoarea de
inventar al unui activ reprezinta valoarea contabila a acestuia, insa activele de natura stocurilor
se evalueaza la valoarea contabila.

Valoarea realizabila neta (VRN) a stocurilor reflecta pretul de vanzare estimat ce ar fi


putut fi obtinut pe parcursul desfasurarii normale a ciclului de exploatare, minus costurile
estimate pentru finalizarea respectivului bun si costurile estimate in cadrul vanzarii.

Cel mai important principiu care poate fi folosit in cadrul evaluarii stocurilor la
inchiderea exercitiului financiar este evidentiat de principiul prudentei. Acesta tine seama de
toate ajustarile de valoare datorate deprecierilor sau cele ale pierderilor de valoare.

Totodata, in urma inventarierii pot aparea diferente cantitative, fapt ce este reflectat prin
neconcordanta dintre situatia faptica si cea scriptica, adica exista stocuri in plus sau in minus,
insa mai pot aparea si diferente valorice dintre valoarea de inventar si valoarea de intrare ce
poate fi valoarea contabila sau costul istoric.

Reglementari contabile nationale si internationale

Principiul de normalizare contabila dateaza in Romania inca din perioada interbelica.


Mediile contabile romanesti erau la curent cu preocuparile de normalizare contabila din
Germania si Statele Unite ale Americii, din anii „30 - 40”. In literatura contabila normalizarea
era tratata ca o uniformizare a contabilitatii diferitelor organizarii, fiind conturate mai multe
soltuii, si anume:

• Uniformizarea denumirii conturilor;


• Stabilitatea unor scheme (bilant si CPP);
• Fixarea unui plan de conturi;

Conform legii, in anul 1929, regiile autonome si alte tipuri de intreprinderi de stat au
fost obligate sa intocmeasca o schema de tip bilant, astfel se puteau evita fraudele, iar controlul
situatiilor financiare putea fi efectuat intr-o maniera mult mai riguroasa.

11
Pornind de la Legea Contabilitatii 82/1991, MFP (Ministerul Finantelor Publice) a
elaborat o serie de reglementari inglobate in sfera contabilitatii incepand cu Ordinul 403 din
data de 22 aprilie 1999, inlocuit ulterior cu Ordinul 94 din 29 ianuarie 2001 unde au fost
aprobate reglementarile contabile armonizate cu Directiva a IV – a a Comunitatilor Economice
Europene si cu Standardele Internationale de Contabilitate.

Armonizarea la nivel international se refera la armonizarea sistemului contabil


romanesc cu Standardele Internationale de Contabilitate (IAS) si Standardele Internationale de
Rpoartate Financiara (IFRS), normele contabile realizate de organismul profesional
international al expertilor contabil, prescurtat si IFAC.

In Romania, societatile comerciale cotate la BVB (Bursa de Valori Bucuresti) au


obligatia de a aplica Standardele Internationale de Raportate Financiara (IFRS).

Tratamentul contabil al stocurilor potrivit IFRS/IAS

La nivel international, bunurile de natura stocurilor sunt evidentiate in cadrul


Standardului International de Contabilitate IAS 2 „Stocuri”, care a fost emis in luna octombrie
a anului 1927 sub denumirea de „Evaluarea si prezentarea stocurilor”. Acest standard
furnizeaza indrumari referitoare la determinarea costului si a recunoasterii ulterioare a acestuia
drept cheltuiala. Totodata, acest standard este foarte important pentru determinarea formulelor
costului ce sunt folosite la calcularea costurilor stocurilor.

IAS 2 „Stocuri” cuprinde urmatoarele aspecte referitoare, si anume:

• Definitiile;
• Valoarea realizabila neta (VRN) si valoarea justa (VJ);
• Evaluarea;
• Recunoasterea drept cheltuiala;
• Prezentarea informatiilor;

Acest standard este aplica tuturor categoriile de stocuri, insa exista o exceptie si anume
produsele in curs de executie si a activelor biologice aferente activitatilor agrile si productiei
agricole la momentul recoltarii.

12
De asemnea, acest standard nu se aplica la evaluarea stocurilor ce sunt detinute de catre
producatorii de produse agricole si forestiere si a brokerilor de la bursa de marfuri ce evalueaza
stocurile la valoarea justa minus costurile de vanzare.

Potrivit IAS 2, articolul 6, stocurile ssunt active detinute in vedea vanzarii pe parcursul
desfasurarii normale a activitatii, in curs de productie in vederea unei astfel de vanzari sau sub
forma de materiale si alte consumabile ce urmeaza a fi folosite in procesul de productie sau
pentru prestarea de servicii. Curentul standard definte VRN (valoarea realizabila neta) ca fiind
pretul de vanzare estimat pe parcursul desfarsurarii procesului de exploatare minus costurile
estimate pentru finalizare si consturile estimate necesare vanzarii.

Clasificarea stocurilor in prezentul standard nu are o sectiune specifica acestui element,


nu oferta in mod clar o clasificare a acestora, iar principalele categorii pot fi extrase cu usurinta
pe baza definitiei de mai sus.

Evaluarea stocurilor, pe baza IAS 2, la intrarea in patrimoniu se realizeaza la cost.


Acesta cuprinde toate costurile legate de cumpararea si prelucrarea stocurilor, dar si alte costuri
suportate de catre entitate. In acest sens, costurile de cumparare cuprind pretul de cumparare,
taxele de import, taxele nerecuperabile, costurile de transport si manipulare etc. Totodata,
furnizorul poate oferi reduceri, rabat sau remiza, astfel determinandu-se costul de cumparare
asa cum este exemplificat in IAS 2, articolul 11. Pe de alta parte, evaluarea stocurilor la
inchiderea exercitiului financiar, se realizeaza prin evaluarea celei mai mici valori dintre cost
si valoarea realizabila neta (VRN). Estimarile acestei valori se bazeaza pe cele mai reelvante
dovezi disponibile in clipa in care se realizeaza estimarile valorii stocurilor ce urmeaza a fi
realizate.

La iesirea din patrimoniu, evaluarea stocurilor se bazeaza pe identificarea specifica a


costuilor lor individuale. Costul stocurilor se determina folosind una dintre urmatoarele metode,
metoda primului intrat – primului iesit sau metoda costului mediu ponderat.

Tratamentul contabil al stocurilor potrivit OMFP 1802/2014

Potrivit OMFP 1802/2014, articolul 272, stocurile sunt active circulante detinute pentru
a fi vandute pe parcursul desfasurarii normale a activitatii, in curs de productie in vederea
vanzarii in procesul desfarsurarii normale a activitatii sau sub forma de materii prime, materiale

13
si alte consumabile care urmeaza sa fie folosite in procesul de productie sau pentru prestarea de
servicii.

Stocurile se clasifica in marfuri, materii prime, materiale consumabile, materiale de


natura obiectelor de inventar, produse (semifabricate, produse finite, rebututi, materiale
recuperabile, deseuri si produse agricole), active biologice de natura stocurilor, ambalaje si
productia in curs de executie.

Proiectarea si dezvoltarea sistemelor informatice de gestiune

Conform definitiei, un sistem informatic reprezinta acea parte a sistemului informational


care recurge la componente de tehnologie a informatiei in functionarea sa. In acest sens, acesta
este definit ca un set de componente interconectate care colecteaza, stocheaza, proceseaza,
transmit si manipuleaza datele.

„Sistemul informatic de gestiune este o solutie informatica pentru obiectivele,


activitatile, lucrarile, problemele sau dificultatile (unui segment al) sistemului informational
din organizarie, apta de a functiona pe o anumita platforma (o configuratie de echipamente si
software de exploatare si gestionare a acestora), folosind un anume software de aplicatie, intr-
o anumita viziune de organizare si articulare a proceselor de afaceri (Zaharie D. si colectiv,
2014)”.

Relatia dintre sistemul informatic si sistemul informational:

• Sistemele informatice trebuie sa se adapteze la evolutia platformei sau


platformelor.
• Sistemele informatice de gestiune functioneaza pe paltforme omogene sau
eterogene.
• Sistemul informatic de gestiune are rolul de infrastructura a sistemului
informational.
• Sistemele informatice comunica intrele ele etc. (Zaharie D. si colectiv, 2014)

Orice sistem informatic de gestiune (SIG) presupun definirea unei arhitecturi ce


cuprinde in general domeniile de gestiune, datele, modelele si regulile de gestiune.

14
Domeniile de gestiune corespund fiecareia dintre activitatile omogene desfasurate in
cadrul organizatiei (ex.financiar – contabila, resurse umane etc) si se abordeaza intr-o viziune
ierarhica pe niveluri precum cel tranzactional, operational, tactic si strategic.

Datele, modelele si regulile de gestiune se aplica principiului preluarii unice a datelor si


prelucrarii multiple a acestora in concordanta cu nevoile informationale specifice ficarui
utilizator.

Totodata, arhitectura unui sistem informatic de gestiune poate fi nedistribuita, adica


baza de date si aplicatia sunt plasate pe un singur calculator sau distribuita (de tip client – server)
unde datele sunt separate de aplicatii, fiind necesara utilizarea unui server de date care sa fie
accesibil prin retea pentru toate posturile de lucru pe care sunt palsate aplicatiile.

Ciclul de viata al sistemelor informatice

Ciclul de viata al sistemelor informatice consta in parcurgerea intr-o succesiune logica


a proceselor care conduc la obtinerea sistemelor informatice, intr-o maniera structurata si
metodica, astfel incat acestea sa indeplineasca cerintele utilizatorilor.

Etapele ciclului de viata al sistemelor informatice:

• Analiza preliminara, cu ajutorul careia se realizeaza identificarea scopului si


analiza cost – beneficiu.
• Planificarea, ce presupune planificarea activitatilor si identificarea resurselor
necesare.
• Definirea cerintelor sistemului unde sunt colectate cerintele si sunt definite
specificatiile sistemului.
• Analiza si Proiectarea sistemului elaboreaza modelele de analiza si proiectare
ale sistemului.
• Implementarea sau Constructia presupune implementarea componentelor
sistemului.
• Integrarea si Testarea cu ajutorul carora componentele sistemului sunt integrate
si testate.
• Acceptarea si Instalarea, are ca scop instalarea sistemului in locatia in care acesta
urmeaza a fi utilizat.
• Exploatarea propriu – zisa si suportul oferit utilizatorilor.

15
• Mentenanta, concept ce presupune remedierea erorilor ce pot aparea pe parcursul
ciclului de viata al sistemului informatic, adaptari sau imbunatatiri ce pot fi
realizate la cererea clientului.

Modele de parcurgere a etapelor aferente ciclului de viata al sistemelor

Etapele ciclului de viata al sistemelor informatice pot fi parcurse in doua moduri, si


anume:

• Sevential, etapele sunt parcurse linear intr-un singur sens. Astfel, momentul in
care o etapa a fost finalizata se trece la urmatoarea, fara sa existe posibilitatea
intoarcerii la o etapa precedenta.
• Iterativ, implica parcurgerea ciclica a etapelor, fiecare iteratie adaugand noi
functionalitati sistemului dezvoltat si permitand evaluarea rezultatelor obtinute
pana in momentul respectiv. Cu ajutorul acestei etape riscurile sunt reduse chiar
din primele faze ale ciclului de viata.

Fig. 01 – Ciclul de viata al sistemelor


(Sursa: IBM Corporation, 2006)

16
Metodele de parcurgere a etapelor ciclului de viata al sistemelor informatice se
bazeaza fie pe una dintre cele doua abordari prezentate anterior (secventiala sau interativa),
fie reprezinta o combinatie intre acestea.

Principalele modele utilizate in dezvoltarea sistemelor informatice sunt:

• Modelul cascada (waterfall) – trecerea de la o faza la alta se realizeaza


secvential, o faza putand fi executata doar dupa ce toate activitatile si sub –
activitatile fazei precedente au fost parcurse in totalitate.
• Modelul incremental – se realizeaza independent componentele sale, fapt ce
permite livrarea catre beneficiar a componentelor pe masura ce sunt finalizate.
• Modelul spirala – etapele aferente dezvoltarii sistemului informatic sunt
parcurse in spirala, fiecare bucla avand drept rezultat un prototip utilizat pentru
identificarea si validarea cerintelor utilizatorilor.
• Modelul evolutiv – este un tip de model incremental ce presupune planificarea
cerintelor luand in considerare modelarea afacerii, modelarea datelor si
modelarea proceselor etc.

Necesitatea unui sistem informatic

In ceea ce priveste necesitatea implementarii unui sistem informatic sunt de parere ca


aceasta nevoie a aparut in momentul in care s-a dorit eficientizarea procesului de gestiune a
unei afaceri. Astfel, erorile umane ce pot aparea in timpul etapelor de gestiune vor fi remediate
prin digitalizarea acestui proces.

Mai mult, ratiunile cele mai concrete aduc in lumina diferite activitati care sunt
efectuate manual si care ar putea fi automatizate sau posibilitatea ca organizatia sa inceapa
desfasurarea unor noi tipuri de activitati pentru care este necesar implementarea unui sistem
informatic.

Definirea cerintelor sistemului

Cerintele unui sistem pot fi de doua feluri, cerinte functionale sau cerinte nefunctionale.

Cerintele functionale descriu intocmai functionalitatea sistemului din punct de vedere


al prelucrarilor pe care acesta trebuie sa le efectueze si definesc scopul acesuia, aria de

17
cuprindere, interactiunea cu sistemele adiacente, lucrarile ce vor fi executate de catre sistem,
dar si regulile de gestiune.

In ceea ce privesc cerintele nefunctionale, acestea sunt globale si au caracter tehnic


incluzand cerinte de performanta, fiabilitate, mediul de operare (configuratii hardware, retele,
sisteme de operare etc), securitate, cerinte de conformitate cu legislatia in vigoare privind
produsele software, termene de respectat si multe altele.

Cerintele unui sistem sunt obtinute de cele mai multe ori de la utilizatori, cei care
urmeaza sa foloseasca viitorul sistem informatic, experti in domeniu, cei care detin cunostinte
necesare realizarii acestui tip de sistem etc.

Colectarea acestor cerinte se poate realiza foarte usor prin intermediul interviurilor unul
la unul, interviuri de grup, chestionare, studii, prototipuri etc.

Testarea si implementarea sistemelor informatice

Procesul de testare al unui sistem informatic reprezinta procesul de verificare a unui


sistem cu scopul de a identifica posibile bug-uri (erori), precum si de a valida implementarea
cerintelor sistemului. Testarea unui sistem se realizeaza treptat pe toata durata dezvoltarii unui
sistem informatic.

In acest sens, testarea se realizeaza pe mai multe niveluri:

• Unit testing (testarea pe unitati).


• Integration testing (testare de inregrare).
• System testing (testare de sistem).
• Acceptance testing (testare de acceptare).

Metodele (tehnicile) de testare sunt testarea statica ce presupune testarea sistemului fara
a executa codul, testarea dinamica ce implica executarea codului, testarea manuala realizata de
catre oameni sau testarea automata care se realizeaza utilizand scripturi si instrumente.

Mediul de dezvoltare Visual Studio .NET

Mediul de dezvoltare (software sau integrated development environment) reprezinta o


acumulare de programe prin intermediul carora programatorul este ajutat in scrierea

18
programelor. Acest mediu combina toti pasii realizarii unui sistem informatic (ex. editarea
codului sursa, compilarea, depanarea, testarea) intr-un singur program ce ofera o interfata
grafica utilizatorului.

Principalele componente ale unui mediu de dezvoltare sunt editorul de cod si


depanatorul. Aceste medii apeleaza compilatoarele sau interpretoarele care pot veni in acelasi
pachet cu mediul sau pot fi instalate separat de catre programator. De regula, un mediu de
dezvoltare este specific unui anumit limbaj de programare, insa la ora actuala exista medii, asa
cum este Microsoft Visaul Studio, unde se poate lucra cu mai multe tipuri de limbaje (ex. Visual
C#, Visual Basic .NET, Python etc).

Microsoft Visual Studio include un set complet de elemente de dezvoltare pentru


generarea de aplicatii ASP.NET, servicii web, aplicatii desktop si aplicatii mobile. De exemplu,
limbajele de programare Visual C# sau Visual Basic .NET folosesc acelasi mediu de dezvoltare
integrat (IDE), mediu ce le permite partajarea instrumentelor si faciliteaza crarea de solutii
folosind mai multe limbaje de programare.

19
PARTEA II - CONTRIBUȚIA PERSONALĂ

Prototip de aplicație pentru gestiunea stocurilor „SmartONE”

Prin intermediul acestei lucrări se propune realizarea unei aplicații ce are la bază
gestionarea stocurilor pentru diferite companii. Acest sistem informatic a fost creat
datorită necesității de simplificare a procesului de gestiune a stocurilor. În acest sens,
compania reușește să țină o evidență clară a tuturor comenzilor furnizor, stocurile care
intră, și a comenzilor client, stocuile care pleacă.

În general personalul companiilor tind să creadă că această evidență poate fi realizată


foarte ușor folosind doar un pix și o hârtie, însă practica se dovedește a fi mult mai
complicată, iar metoda clasică nu este suficient de sigură fiindcă pot apărea erori de
calcul sau de numărare, informațiile se pot pierde mult mai ușor, nu există o copie de
rezervă, iar informația nu este disponibilă într-un timp foarte scurt în mai multe locații
deodata.

Destinația utilizării aplicației „SmartONE” este pentru Departamentul de


Contabilitate ce are în vedere înregistrarea tuturor stocurilor și facturilor (înregistrarea
facturii, NIR-ului, furnizorului, clientului, delegatului pentru transportul stocurilor și
alegerea stocurilor).

Definirea cerințelor pentru proiectarea aplicației

In momentul in care se doreste proiectarea unui sistem de tip software este foarte
important ca cerintele care influenteaza arhitectura sa fie alese intr-un mod clar si
riguros. Aceste cerinte sunt non-functionale si se refera la calitatea sistemului software.

Procesul prin intermediul caruia se identifica cerintele sistemului poate fi de


doua feluri, si anume: cerinte functionale si cerintele venite din partea celor ce urmeaza
sa aiba o interactiune directa cu aplicatia.

In acest sens, pentru proiectarea modelului conceptual al datelor s-au alcatuit


directii de orientare pentru simplificarea procesului si pentru o mai buna intelegere a
cerintelor ce urmeaza a fi implementate in cadrul aplicatiei de gestiune:

20
• Aplicatia va dispune de o platforma ce faciliteaza inregistrarea unui nou
utilizator sau logarea acestuia in contul sau. Astfel, pentru utilizator se vor retine
detaliile importante, printre care se regasesc: CNP-ul, numele, prenumele si
email-ul.
• Logarea utilizatorului se realizeaza prin intermediul unui username si a unei
parole. Username-ul este un cod realizat automat de catre aplicatie.
• Dupa logare, persoana in uz va putea inregistra noi companii sau va putea
gestiona o companie deja existenta in baza de date. Pentru companii se vor retine
CUI-ul, denumirea, numarul de la registrul comertului, banca, contul si alte
detalii coerente.
• In ceea ce priveste logarea unui utilizator in cadrul unei entitati, aceasta actiune
se va realiza prin introducerea codului de acces in campul aferent, cod
reprezentat de CUI-ul companiei.
• In cadrul aplicatiei se vor putea inregistra noi facturi, NIR-uri, clienti, furnizori,
delegati pentru transportul stocurilor, produse sau gestiuni aferente produselor.
• Fiecarui element enumerat in paragraful de mai sus i se va atribui un ID unic.
• Pentru facturi se vor retine date precum: data facturii, data scadenta, cota de
TVA aferenta fiecarui produs, seria, numarul etc.
• Mai mult, sistemul va atribui in mod automat in campurile aferente seriei,
numarului si avizului facturii date relevante din baza de date.
• Clientii si furnizorii vor fi partenerii entitatii in curs de gestionare.
• Pentru parteneri se vor retine date importante, printre care: denumire, CUI sau
telefon.
• Delegatii sunt reprezentati de persoanele angajate in scopul transportarii
stocurilor. Pentru acestia se vor retine: CNP-ul, camp ce va fi folosit ca si
identificator unic, numele, prenumele si alte date relevante.
• Un alt element important este evidentiat in momentul in care produsele sunt
receptionate. Mai exact, prin intermediului notei de intrare receptie se vor
gestiona produsele ce urmeaza a fi inregistrate in baza de date. NIR-ul va contine
date necesare, si anume: data notei, gestiunea produselor si factura aferenta
achizitiei stocurilor de la furnizor.
• Fiecare gestiune de produse va avea un identificator unic si se va retine
denumirea acesteia.

21
• Utilizatorii vor putea sa isi modifice informatiile de cont proprii, insa si pe cele
ale entitatii gestionate in procesul curent.
• Totodata, arhivarea tuturor informatiilor ce urmeaza a fi sterse este necesara.
• Persoana in uz va putea intotdeauna sa gestioneze o alta companie, fara a se
deconecta de la contul sau.
• Campurile ce urmeaza a fi implementate in cadrul entitatilor evidentiate in
randurile de mai sus trebuie sa respecte restrictii precum:
➢ Dimensiunea campurilor trebuie sa fie in general mai mare de 3
caractere.
➢ CNP-ul trebuie sa fie format din 13 caractere numerice si sa fie valid
(Anexa 1).
➢ Fiecare camp trebuie sa treaca printr-un filtru unde se verifica daca datele
introduse sunt numerice sau sunt de tip text.
➢ E-mail/G-mail-ul trebuie sa contina obligatoriu caracterul special „@” si
„.” (Anexa 2).
➢ Parola conturilor trebuie sa fie de cel putin 6 caractere (Anexa 3).
➢ Cota de TVA trebuie sa se regaseasca in multimea: 5%, 9% sau 19%
(Anexa 4). Daca entitatea nu este platitoare de TVA se alege cota de TVA
0% sau se bifeaza campul pentru aplicarea TVA-ului cu optiunea nu.
➢ Sectorul trebuie sa fie intre 1 si 6.
➢ Numarul de la registrul comertului trebuie sa inceapa obligatoriu cu litera
F, pentru persoanele fizice autorizate, respectiv litera J, pentru
persoanele juridice etc (Anexa 5).

22
Modelarea conceptuala a datelor

Pentru modelarea conceptuala a datelor vom folosii modelul entitate – asociere (EA). In
acest sens, acesta are ca scop expunerea exacta a realitatii cu ajutorul unor cerinte si a unor
concepte de baza a acestui tip de model.

Fig. 02 – Modelarea conceptuala a datelor

In urma realizarii modelului conceptual s-au identificat urmatoarele restrictii de


integritate de domeniu:

• In ceea ce priveste cantitatea receptionata, aceasta trebuie sa fie mai mica sau
egala cu cantitatea achizitionata.
23
• Data notei intrarii receptiei trebuie sa fie mai mare sau egala decat data facturii.
• Cota de TVA trebuie sa se regaseasca in multimea: 5%, 9% sau 19% (Anexa 4).
• Unitatea de masura trebuie sa fie: buc, kg sau litru.
• Campul „AplicTVA” poate sa accepte doar doua valori, si anume: „da” sau „nu”.
• CNP-ul delegatului trebuie sa contina maxim 13 caractere si sa fie unul valid
(Anexa 1).
• Numarul de la registrul comertului trebuie sa inceapa obligatoriu cu litera F,
pentru persoanele fizice autorizate, respectiv litera J, pentru persoanele juridice
(Anexa 5).
• Judetele trebuie sa se afle in mod obligatoriu in lista judetelor din Romania.
• E-mail/G-mail-ul trebuie sa contina obligatoriu caracterul special „@” si „.”
(Anexa 2).

Incluziune de roluri:

• O materie prima poate fi receptionata doar daca a fost achizitionata.

Modelarea logica a datelor

Pe baza modelului conceptual al datelor este definit modelul logic al datelor ce


reprezinta piatra de temelie in crearea structurii bazei de date. Prin intermediul acestuia se
definesc tabelele, campurile, restrictiile necesare prin crearea de chei primare si chei externe.

• PARTENERI (ID_Partener, Denumire, Telefon, Localitate, Judet, Strada,


Sector, Nr, Bl, Sc, Ap, Mail, Cont, Banca, NrRegCom, CUI_CIF, TipPartener)
• DELEGATI TRANSPORT (CNP, Denumire, SerieBuletin, NrBuletin,
EliberatDe)
• PRODUSE (ID_Produs, Denumire, PretStandard, Specificatii, Categorie,
UnitateMasura, CantitateStoc, CotaTVA)
• FACTURI (ID_Factura, Serie, NrFac, AvizNr, AplicTVA, DataFactura,
DataScadenta, OraExpediere, DataExpediere, MijlocTransport,
NrMijlocTransport, IntocmitaDe, AdaugataAcum, TipFactura, Client, Delegat,
Furnizor)
• PRODUSE FACTURATE (ID_Factura, ID_Produs, Pret, Cantitate)
• GESTIUNI (ID_Gestiune, DenumireGestiune)

24
• NIR (ID_NIR, DataNIR, ID_Gestiune, ID_Factura)
• PRODUSE RECEPTIONATE (ID_NIR, ID_Produs, CantitateReceptionata)

Modelarea fizica a datelor

In urma crearii modelului logic al datelor a fost creata baza de date prin intermediului
unui sistem de gestiune a bazelor de date. In ceea ce priveste cazul acesta, modelul a fost
implementat utilizand Microsoft SQL Server.

Microsoft SQL Server este un sistem de gestionare de baze de date relaționale (RDBMS)
produs de compania americană Microsoft Corp. Limbajul de interogare este SQL iar extensia
procedurală este T-SQL. Este considerat un sistem de gestionare a bazelor de date pentru
întreprinderi - adică se poate aplica bazelor de date de dimensiuni foarte mari - însă la ultimele
versiuni au venit cu mai multe tipuri de licențiere, de la cele free la unele avansate, astfel că în
prezent putem spune că SQL Server se poate folosi pentru baze de date de orice dimensiune.

Cu ajutorul limbajului de definire al datelor s-a realizat in mod grafic modelul relational
al datelor, prin intermediul unei diagrame conceputa in SQL Server pe baza relatiilor dintre
tabele, a cheilor primare si externe.

Fig. 03 – Modelarea fizica a datelor (diagrama)

25
In ceea ce priveste autentificarea la baza de date, aceasta se poate realiza prin
doua modalitati, si anume:

• Prima metoda se refera la semnatura windows-ului calculatorului


personal, care in cazul de fata are denumirea: DESKTOP-25KAC0S.
• Cea de a doua metoda se refera la autentificarea standard a Microsoft
SQL Server prin intermediul unui username si o parola (Anexa 6).

26
Modelarea conceptuala a prelucrarilor

Acest tip de model este in stransa legatura cu modelul conceptual al datelor, fapt
evidentiat de succesiunea in timp a operatiilor de prelucrare la care este supus. Modelul
conceptual al prelucrarilor aduce in lumina dinamica si continutul unei prelucrari intr-o maniera
autonoma. Mai mult, acest model se mai numeste si modelul „eveniment – rezultat” ce aduce
in discutie procedurile ce au fost abordare in cadrul modelului conceptual al datelor.

In acest sens, la baza modelului conceptual al prelucrarilor se regasesc patru concepte


foarte importante, si anume:

• Evenimentul declansator;
• Operatia;
• Rezultatul;
• Sincronizarea;

Evenimentul declansator este evidentiat printr-o elipsa din cadrul caruia pleaca sageata
de legatura spre operatie. Totusi, in cazul in care se ia decizia de a simplifica acest model se
poate renunta la respectiva sageata mentionandu-se numai elementul declansator. Mai exact,
acest eveniment se refera la derularea de activitati si operatii, precum este intocmirea unui nou
document de tip factura, NIR etc.

Pe de alta parte, operatia este reprezentata grafic printr-un dreptunghi ce inglobeaza in


partea de sus denumirea operatiei, iar sub aceasta se regasesc regulile de emisiune. Astfel,
operatia se defineste ca fiind o actiune sau o secventa continua de actiuni ce atrag de la sine
evenimente declansatoare care se executa neintrerupt.

Evenimentul emis sau rezultatul este, la fel ca si evenimentul declansator, reprezentat


printr-o elipsa. Acest concept este produsul executarii unor operatii ce au la baza urmatoarea
regula: „O operatie produce unul sau mai multe rezultate.”

Sincronizarea este evidentiata grafic printr-un triunghi orientat catre operatie. Principiul
sincronizarii este exprimat sub forma unei propozitii logice ceea ce arata ca operatia poate sa
fie declansata sau nu, adica aceasta este evidentiata printr-o expresie de tip boolean. Mai exact,
conceptul de sincronizare exprima logica si dinamica prelucrarilor creand concordanta intre cel
putin doua sau mai multe evenimente.

27
Modelarea logica a prelucrarilor

Modelarea logica a prelucrarilor se realizeaza pe baza modelului conceptual al acestora.


In acest sens, aceasta priveste elementele de natura organizationala realizandu-se astfel o
structurare logica a componentelor sistemului.

Corespunzator cu informatiile enuntate mai sus am ales sa prezint o prelucrare foarte


importanta aplicatiei de gestiune a stocurilor „SmartONE”, si anume, actiunea de intocmire a
unei noi facturi. Aceasta actiune are trimiteri spre diferite tabele si informatii ce pot fi regasite
cu usurinta in baza de date prin intermediul anumitor filtre.

Fig. 04 – Modelarea logica a prelucrarilor (intocmire factura)

Functionalitatea logica:

• In prima parte, utilizatorul trebuie sa deschida formularul de adaugare a facturii.


Dupa deschiderea acestui formular trebuie introduse datele facturii (ex. seria,
numarul, avizul, cota de TVA). Se va verifica valabilitatea campurilor
completate de catre utilizator prin intermediul filtrelor realizate de catre
programator. In cazul in care, in timpul procesului de filtrare al datelor introduse

28
in campuri se gaseste o oarecare eroare, sistemul va transmite inapoi in interfata
grafica catre persoana in uz acest fapt prin aparitia unei iconite galbene in partea
dreapta sau stanga al controlului unde s-au gasit date introduse gresit.
• Pe parcursul procesului de adaugare a facturii, utilizatorul trebuie sa aleaga
furnizorul de la care se vor cumpara stocuri. Daca in momentul alegerii din lista
derulanta nu se afiseaza nici macar un furnizor, sistemul va intreba daca se
doreste adaugarea unui prim furnizor. In continuare, utilizatorul trebuie sa ia o
decizie in ceea ce priveste furnizorul, si anume trebuie sa accepte intrebarea
sistemului, astfel se va deschide formularul de adaugare furnizor, iar datele
facturii vor ramane in asteptare pana la adaugarea unui furnizor, sau sa refuze
intrebarea. Prin refuzarea intrebarii, persoana in uz este nevoita sa completeze
manual campurile aferente furnizorului, sistemul va compara datele introduse cu
ceea ce exista (sau nu) in baza de date si va adauga in cazul in care nu exista acel
furnizor sau va pastra datele daca acel furnizor exista deja. In continuare,
informatiile vor fi filtrate, iar daca totul este in parametrii optimi procesul
continua fara eroare.
• Similar procesului de alegere a furnizorului se intampla si in cazul clientului.
• In continuare, utilizatorul trebuie sa aleaga din meniul de sus al ferestrei, tab-ul
„Transport” unde procesul continua similar cu cel al clientului sau furnizorului.
• In cea de a doua parte, utilizatorul trebuie sa aleaga produsele ce urmeaza a fi
facturate. In acest sens, aceasta trebuie sa continue actiunea de adaugare a
facturii alegand tab-ul „Produse” si urmand pasii intocmai. Totusi, in cazul in
care nu exista produse receptionate (cumparate) in baza de date, utilizatorul
trebuie sa achizitioneze, de la un alt furnizor, prin intermediul unei note de
intrare receptie sau trebuie sa adauge un nou produs in baza de date.

In partea finala, sistemul va verifica toate informatiile introduse in campurile intregului


formular de adaugare a facturii. Daca nu se gasesc erori, procesul continua fara nici o
problema, iar factura va fi intocmita cu succes.

29
Functionalitatile oferite de interfata grafica

Scopul aplicatiei de gestiune a stocurilor „SmartONE” este acela de a simplifica procesul


de administrare a produselor de orice tip. Asadar, orizonturile utilizatorului se deschid in
momentul interactiunii acestuia cu sistemul informatic.

- In prim plan, interfata grafica inglobeaza intr-o maniera prietenoasa formularul de


logare sau inregistrare a utilizatorului. Mai mult, in spatele acestei interfete grafice
exista restrictii care se vor declansa in momentul in care utilizatorul introduce date
eronate, ce vor fi afisate prin intermediul unor pictograme de atentionare, in campurile
dialogului.

Fig. 05 – Fereastra pentru logarea utilizatorului

- In functie de alegerea utilizatorului, acesta se va loga, folosind datele deja existente in


baza de date, sau se va inregistra pentru prima data in cadrul aplicatiei. In cazul in care
persoana in uz are intentia de a isi crea un nou cont, va deschide dialogul de inregistrare
al unui cont de utilizator unde este obligat sa urmeze pasii intocmai. De asemenea, in
spatele interfetei grafice exista restrictii ce pot fi declansate in cazul in care utilizatorul
introduce date eronate, de exemplu: CNP-ul introdus nu este valid sau nu este format
din 13 caractere numerice.

30
Fig. 06 – Inregistrarea unui nou utilizator

- In continuare, dupa logarea utilizatorului aplicatia va afisa fereastra de selectare a


companiei ce urmeaza a fi gestionata in cadrul aplicatiei. Totodata, in cadrul acestei
interfete exista posibilitatea de a se inregistra o noua companie ce nu este creata deja in
sistem. Mai mult, datele fiecarei companii deja existenta in lista dialogului curent pot fi
verificate prin apasarea butonului „INFO”. Fiecare companie are un cod de acces ce
urmeaza a fi folosit in momentul in care se doreste gestionarea respectivei entitati.

Fig. 07 – Lista companii gestionate

31
Fig. 08 – Inregistrarea unei noi companii

- Procesul continua cu introducerea codului de acces al entitatii dorite in dialogul activ.


In cazul in care intreprinderea este proaspat inregistrata in baza de date sau aceasta nu
a fost gestionata niciodata, aplicatia va transmite acest fapt catre baza de date, iar mai
apoi baza de date transmite inapoi catre aplicatie prin intermediul unei ferestre de tip
pop up unde utilizatorul este obligat sa aleaga template-ul, mai exact, tipul de document
ce urmeaza a fi folosit pentru procesul de printare al facturilor de catre intreprindere.

Fig. 09 – Modelul facturii

32
- In urma indeplinirii tuturor cerintelor sistemului, utilizatorul poate sa gestioneze
compania in mod liber realizand tranzactii (vanzari prin factura sau cumparari prin
NIR).
- O data ajuns in interfata principala, persoana ce utilieaza aplicatia nu poate doar sa
gestioneze stocurile, ba mai mult, acesta are posibilitatea de a administra furnizorii,
clientii, delegatii pentru transportul stocurilor, NIR-urile, facturile, gestiunile
produselor si chiar contul sau de utilizator sau contul companiei.
- Interfata principala este foarte prietenoasa si ofera utilizatorului o viziune clara asupra
tuturor facilitatilor disponibile utilizatorului.

Fig. 10 – Interfata principala

- Datele acestuia si a companiei in uz, respectiv sistemul panoului de control al


utilizatorului si entitatii, pot fi oricand modificate prin accesarea acestora, facilitati ce
se regasesc in panoul din partea stanga a interfetei principale. In linii mari, atat datele
utilizatorului, cat si datele companiei pot fi schimbate integral, in afara anumitor date
de referinta a acestora, precum: CNP-ul sau CUI/CIF-ul. Totodata, panourile de control
ofera printre nenumaratele facilitati si posibilitatea configurarii unei imagini de profil
sau a unui logo specific.

33
Fig. 11 – Panoul de control al utilizatorului

Fig. 12 – Panoul de control al companiei gestionate

34
- Nu numai panourile de control ale utilizatorului si companiei se regasesc in partea
stanga a interfetei aplicatiei, ci si listele tuturor furnizorilor, clientilor, delegatilor pentru
transport, gestiunilor, produselor, facturilor si NIR-urilor. Fiecare dintre cele enumerate
dispun de facilitati multiple in cadrul ferestrelor proprii. Una dintre facilitatile, unui
formular de afisare a unor liste ce contin datele stocate in baza de date, este reprezentata
de actiunea de modificare a informatiilor deja existente. Orice modificare realizata de
catre utilizator in interfata grafica este cernuta prin intermediul unor filtre, astfel datele
introduse manual nu vor afecta in nici un fel integritatea bazei de date.
- Similar cu facilitatea de modificare a datelor, unei anumite facturi, sunt prezente si
optiunile de stergere, reactualizare a ferestrei active sau de adaugare a unei noi
tranzactii. In aceeasi lumina exista facilitati si pentru celelalte liste, si anume listele
clientilor, furnizorilor, produselor etc., ce dispun in aceeasi idee de toate facilitatile
enumerate mai sus.

Fig. 13 – Exemplu fereastra lista (lista furnizorilor)

35
Fig. 14 – Exemplu meniu (lista furnizorilor)

- O alta parte interesanta a interfetei grafice principale este pusa in lumina de panoul de
sus al aplicatiei unde se regaseste posibilitatea oferita de sistemul informatic
utilizatorului in momentul in care acesta doreste sa adauge in mod direct facturi, nir-uri,
produse, gestiuni ale produselor, furnizori, clienti sau delegati pentru transportul
stocurilor. Alaturi de acestea se regaseste si arhiva bazei de date, unde sunt stocate toate
informatiile inlaturate si despre care se cunoaste faptul ca nu mai sunt relevante, insa si
butonul pentru mai mult ajutor.

Fig. 15 – Panoul din partea de sus

- Bineînteles, in mod special as dori sa aduc in lumina actiunea de adaugare a unei facturi.
Astfel, in momentul in care utilizatorul doreste sa adauge o noua factura in baza de date,
acesta trebuie sa urmeze pasii corecti din cadrul formularului de adaugare factura. In
acest sens, o data activa fereastra, sistemul va introduce automat in mod real date
relevante unei facturi ce nu pot fi modificate de catre utilizator, si anume: seria facturii,

36
numarul facturii si numarul avizului ce urmeaza a fi intocmit. In continuare, interfata
grafica de adaugare a unei noi facturi faciliteaza cu usurinta continuarea procesului
respectiv prin meniul de bord amplasat in partea de sus a ferestrei.

Fig. 16 – Fereastra pentru adaugarea unei noi facturi

- Cu ajutorul acestui meniu utilizatorul navigheaza prin toate celelalte tab-uri intr-o
maniera corecta. In tab-ul principal, si anume „Factura”, persoana in uz trebuie sa
introduca datele clientului si ale utilizatorului in campurile existente. Acesta are doua
posibilitati, introducerea datelor corecte in mod manual sau introducerea datelor in mod
automat de catre sistem prin alegerea denumirii furnizorului, respectiv clientului din
listele derulante aflate in cadrul group box-urilor fiecaruia. In cazul in care, datele
introduse in mod manual de catre utilizator sunt total corecte, sistemul va verifica daca
acestea exista sau nu in baza de date.

Fig. 17 – Meniul din partea de sus (fereastra adaugare factura)

37
- In eventualitatea in care datele sunt deja existente in baza de date, sistemul informatic
nu va introduce inca o data acele informatii, ci le va folosi pe cele existente. Pe de alta
parte, daca respectivele informatii introduse de catre persoana in uz, nu exista, sistemul
va introduce automat tocmai din cadrul formularului de adaugare a facturii respectivele
date in baza sa, date ce vor fi actualizate si in cadrul listelor clientilor sau furnizorilor.
Sistemul actioneaza intr-o maniera similara pentru client, furnizor, insa si pentru
delegatul ce urmeaza sa transporte stocurile facturate.

Fig. 18 – Alegere furnizor existent in baza de date

- Formularul de adaugare a facturii este unul complex, insa foarte usor de folosit de catre
utilizator. Aplicatia „SmartONE” doreste sa ajute omul din fata ecranului in timpul
utilizarii acesteia.
- Revenind la actiunea de adaugare a facturii, in cadrul tab-ului „Factura” exista si alte
actiuni de adaugare, pe langa cea de auto verificare si inserare a datelor introduse
manual de catre utilizator. Fiecare persoana ce foloseste procesul de adaugare a facturii
poate sa adauge date relevante acesteia, precum sunt: clientul, furnizorul, delegatul sau
produsele, tocmai din cadrul aceluiasi formular fara sa inchida fereastra de adaugare a
facturii. Printre modalitatile de adaugare, ce nu au fost evidentiate in randurile de mai
sus se enumera si existenta unui buton special, amplasat in partea dreapta a listei
derulante de cele mai multe ori ce permite adaugarea in baza de date a unui nou client,
furnizor sau delegat transport fara a inchide fereastra principala de adaugare a facturii.
- Mai mult, programul atentioneaza utilizatorul in timpul procesului, daca in baza de date
nu exista nici o informatie legata de clienti, furnizori, delegati transport sau produse,
chiar in momentul in care acesta doreste sa selecteze din listele derulante anumite
informatii. Se va afisa un mesaj de tip pop up, ce poate contine urmatoarele informatii:
„Nu exista furnizori in baza de date ! Doriti sa adaugati un nou furnizor ?”. Prin
acceptarea acestui mesaj utilizatorului i se va afisa fereastra de adaugare a unui nou
furnizor, similar se intampla in cazul clientului sau delegatului pentru transport.

38
- Procesul continua prin selectarea celui de al doilea tab, si anume: „Transport”, unde
similar clientului sau furnizorului se vor alege datele delegatului ce urmeaza sa
transporte produsele din lista derulanta aferenta tab-ului sau.

Fig. 19 – Alegere sau adaugare delegat transport

- In continuare urmeaza ultima etapa, si anume: alegerea produselor ce urmeaza a fi


facturate. Exista posibilitatea ca in baza de date sa nu existe produse receptionate sau
efectiv produse ale companiei gestionate. Astfel, in momentul in care utilizatorul
doreste sa aleaga din lista derulanta un anumit produs, sistemul ii va afisa un mesaj de
tip pop up similar celor pentru client, furnizor sau delegat, unde acesta este informat ca:
„Nu exista produse in baza de date ! Doriti sa efectuati o achizitie noua ?”. Prin
acceptarea acestui mesaj utilizatorului i se va afisa formularul de adaugare NIR, si
anume urmeaza sa se realizeze o noua achizitie de produse.

Fig. 20 – Alegere produse

39
- Ultimul pas consta in alegerea produselor din lista derulanta pentru care sistemul va
afisa automat un mesaj de tip input unde utilizatorul trebuie sa introduca pretul si
cantitatea produsului ales ce urmeaza a fi facturat. De asemenea, sistemul informatic va
calcula automat valoarea totala, valoarea TVA-ului aferent produslui si valoarea totala
cu TVA.

Fig. 21 – Lista produse facturate

- La finalul procesului utilizatorul trebuie doar sa foloseasca butonul de „Adaugare


Factura” in baza de date, buton evidentiat printr-o pictograma verde in forma de plus.
- Fara indoiala, daca toate campurile aferente procesului de adaugare a unei noi facturi
sunt completate corect, factura respectiva va fi adaugata in baza de date automat, iar la
final se va afisa mesajul: „Factura a fost adaugata cu succes ! Doriti sa adaugati o alta
factura in continuare ?”. Acceptarea acestui mesaj duce la resetarea procesului si
reinceperea acestuia. In caz contrar, dialogul facturii va fi inchis si resetat, iar
utilizatorul va fi redirectionat in panoul central al aplicatiei.
- Tototdata, aplicatia dispune si de sistemul de printare a unei facturi deja inregistrate in
baza de date. Orice factura are trei tipuri de template-uri (modele), ce pot fi setate atat
in momentul primei interactiuni a companiei cu aplicatia sau din cadrul panoului de
control al intreprinderii. Pentru vizualizarea tuturor facturilor utilizatorul trebuie sa
actioneze lista facturilor din cadrul panoului lateral stanga, sa selecteze factura ce
urmeaza a fi printata si sa apese butonul, amplasat in meniul din partea de sus, in forma
de imprimanta.

40
Fig. 22 – Printeaza factura

In lumina celor discutate in randurile de mai sus, pot sa afirm faptul ca facilitatile au
fost evidentiate in linii mari, cu anumite exceptii, si cu siguranta as putea sa demonstrez fizic
complexitatea sistemului si usurinta de folosire a acestuia de care un anumit utilizator.

Realizarea interfetei cu utilizatorul

SmartONE este o aplicatie de gestiune a stocurilor care a fost realizata utilizandu-se


limbajul de programare Visual Basic .NET in cadrul platformei Microsoft Visual Studio.
Conexiunea dintre serverul SQL si aplicatie s-a efectuat prin intermediul componentei din
cadrul tehnologiei ADO .NET, si anume: Entity Framework (Anexa 7). Aceasta tehnologie
permite dezvoltatorilor sa lucreze cu date sub forma de obiecte si proprietati specifice
domeniului, cum ar fi clientii si adresele clientilor, fara a fi nevoie sa se preocupe de tabelele si
coloanele bazei de date subiacente in care sunt stocate aceste date.

Mai mult, cu ajutorul componentei Entity Framework dezvoltatorii pot lucra la un nivel
mai ridicat de abstractizare atunci cand se ocupa de date si pot crea si intretine aplicatii orientate
pe date cu mai putin cod decat in aplicatiile traditionale.

<connectionStrings>
<add name="dbEntity"
connectionString="metadata=res://*/dbEntity.csdl|res://*/dbEntity.ssdl|res://*/
dbEntity.msl;provider=System.Data.SqlClient;provider connection
string=&quot;data source=DESKTOP-25KAC0S\SERVERSQL;initial
catalog=SmartONE;integrated security=True;MultipleActiveResultSets=True;
App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

Fisierul App.Config – Conexiunea la baza de date „SmartONE”

Aplicatia dispune de formularele pentru autentificarea sau inregistrarea utilizatorilor,


asa cum s-a evidentiat si in randurile discutate mai sus. In momentul in care un anumit utilizator
doreste sa se autentifice, programul filtreaza datele introduse in casetele aferente autentificarii,
iar daca acestea exista persoana in uz va fi logata si va putea trece la urmatorul formular, si
anume cel pentru alegerea companiei pe care acesta doreste sa o gestioneze. In cazul in care,
respectivele date nu exista in baza de date, sistemul va anunta utilizatorul in legatura cu acest

41
fapt. Totusi, daca datele sunt introduse eronat iar utilizatorul exista in baza de date aplicatia va
transmite spre acesta un mesaj de eroare.

Campurile in care vor fi introduse datele, si anume: numele utilizatorului si parola


aferenta acestui cont vor fi filtrate pentru a se verifica corectitudinea informatiilor introduse.
Mai exact, la apasarea butonului „Login” datele introduse in casetele aferente ferestrei active
trebuie sa indeplineasca doua criterii, si anume:
• Caseta aferenta numelui de utilizator nu trebuie sa ramana goala, respectiv username-
ul nu poate sa fie numeric sau ca lungimea totala a acestuia sa aiba mai putin de 3
caractere.
• Caseta aferenta parolei nu trebuie sa ramana goala, iar lungimea parolei contului de
utilizator trebuie sa aiba cel putin 6 caractere lungime.

Public Sub UserExists(user As String, pass As String)


Try
con.Open()
Dim cmd As New SqlCommand("SELECT * FROM Utilizatori WHERE Username =
@Username AND Parola = @Password", con)
cmd.Parameters.AddWithValue("@Username", user.ToLower)
cmd.Parameters.AddWithValue("@Password", pass.ToLower)

Dim readLine As SqlDataReader = cmd.ExecuteReader


readLine.Read()

If readLine.HasRows Then
MsgBox("Ai fost logat cu succes !", MsgBoxStyle.Information)
usersLogged += 1 : lastLogged = readLine.Item("Username").ToString

42
'Imagine profil
Dim photo() As Byte
photo = readLine("Image")

Dim stream As New System.IO.MemoryStream(photo)


frmUserPanel.picContulMeu.Image = Image.FromStream(stream)

'Detalii user panel


'Detalii user panel dates
'Data Inregistrare, Ultima Logare, Timp Online

con.Close() : UpdateAppPanel(1) : nextForm(1)


Else
MsgBox("Username-ul sau parola ta sunt incorecte !",
MsgBoxStyle.Exclamation)
con.Close()
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
con.Close()
End Try
End Sub

Subprocedura – UserExists( ... )


Prin intermediul acestei sub - proceduri sunt verificate informatiile introduse in
campurile aferente autentificarii utilizatorului. In cazul in care toate datele sunt introduse corect
si utilizatorul exista in baza de date, acesta va primi mesajul „Ai fost logat cu succes !”. In cazul
in care datele introduse sunt eronate, utilizatorul va fi atentionat prin mesajul „Username-ul sau
parola ta sunt incorecte !”.

De asemenea, formularul aferent inregistrarii unui nou utilizator inglobeaza in spate


diferite filtre ce ajuta sistemul informatic la o mai buna functionare. In acest sens, toate
informatiile trebuie sa indeplineasca anumite criterii inainte de a fi introduse in baza de date,
ex: E-mail/G-mail-ul trebuie sa contina simbolul „@” si „.” sau CNP-ul persoanei trebuie sa fie
de maxim 13 caractere si sa fie unul valid.

43
Dupa completarea formularului de inregistrare utilizatorul trebuie sa apese butonul
„Inreg.” pentru a continua procesul de inregistrare. Astfel, pentru verificarea non – existentei
datelor introduse de catre utilizator sau existentei acestora se folosesc urmatoarele filtre, sub –
proceduri sau functii:

' ...
If errors = 0 Then
Dim username As String = txtNume.Text.ToLower & txtCNP.Text.Substring(9, 3)
If UserExists2(username, txtCNP.Text) = True Then
MsgBox("Exista deja un cont cu aceste date !", MsgBoxStyle.Exclamation)
Else
InsertUser()
End If
End If

Daca sistemul gaseste informatii in baza de date care coincid cu datele introduse in
formularul de inregistrare, mai exact conturi care dispun de acelasi username si acelasi CNP,
aplicatia va transmite un mesaj de eroare, si anume: „Exista deja un cont cu aceste date !”.
Totodata, daca aceste date nu exista in baza de date, persoana care doreste sa se inregistreze va
putea continua procesul cu succes, astfel se va apela sub – procedura „InsertUser()”.

Public Sub InsertUser()


Try
con.Open()
Dim query As String = "INSERT INTO Utilizatori (Nume, Prenume ..) VALUES
(@Nume, @Prenume ...)

Dim x As New SqlCommand(query, con)


' ...
x.ExecuteNonQuery()
con.Close()
' ...
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
con.Close()
End Try
End Sub

Dupa logarea sau inregistrarea utilizatorului, procesul continua prin alegerea companiei
ce urmeaza a fi gestionata. Similar procesului de autentificare sau inregistrare a unui nou
utilizator se realizeaza si procesul de inregistrare sau autentificare a companiei aleasa din
tabelul aferent ferestrei entitatilor ce au fost sau vor fi gestionate in cadrul aplicatiei
„SmartONE”. Autentificarea unei entitati se realizeaza prin selectarea acesteia din tabel si
apasarea butonului „Logare firma”, iar mai apoi prin completarea codului de acces in fereastra

44
de autentificare a entitatii, codul de acces este reprezentat de CUI/CIF-ul entitatii si poate fi ales
din tabelul de unde a fost selectata firma.

Mai mult, filtrele, sub – procedurile sau functiile folosite sunt aproximativ identice cu
cele ale verificarii utilizatorului, insa se modeleaza dupa cerintele si datele introduse in casetele
aferente autentificarii sau inregistratii unei noi entitati. Verificarea in baza de date a unei entitati
se face prin intermediul denumirii acesteia si a CUI/CIF-ului aferent. In cazul in care aceste
informatii se regasesc, sistemul va trimite un mesaj de atentionare, iar in cazul in care entitatea
ce se doreste a fi adaugata nu exista, procesul va continua cu inregistrarea acesteia.

In momentul in care utilizatorul inregistreaza o noua companie in baza de date, in cadrul


serverului SQL se va crea automat baza de date aferenta entitatii.

Public Sub InsertFirma()


Try
con.Open()
Dim cmd As New SqlCommand("INSERT INTO Firme (Denumire, CUI_CIF, Telefon
...) VALUES (@Denumire, @CUI_CIF, @Telefon ...)", con)
cmd.Parameters.AddWithValue("@Denumire", frmRegisterFirma.txtDenumire.Text)
cmd.Parameters.AddWithValue("@Telefon", frmRegisterFirma.txtTelefon.Text)
cmd.Parameters.AddWithValue("@CUI_CIF", frmRegisterFirma.txtCUI_CIF.Text)

Dim DB_Name As String = Replace(Replace(frmRegisterFirma.txtDenumire.Text,


".", ""), " ", "_")
cmd.Parameters.AddWithValue("@DB_Name", DB_Name) : DB_Firma = DB_Name
cmd.ExecuteNonQuery() : con.Close()

firmaAdaugata = frmRegisterFirma.txtDenumire.Text
MsgBox("Firma " & frmRegisterFirma.txtDenumire.Text & " a fost adaugata cu
succes !", MsgBoxStyle.Information)
'...
For Each c As ContBancar In colBankAccounts
InsertBankAccounts(c.Cont, c.Banca, c.TipCont, c.Firma)
Next
colBankAccounts.Clear()
If autoDatabase = True Then
CreateNewDatabase(DB_Name)
End If
'...
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
con.Close()
End Try
End Sub

Subprocedura – InsertFirma()

45
Prin intermediul acestei sub – proceduri se adauga firma in baza de date si se face
trimitere spre sub – procedura „CreateNewDatabase(DB_Name)” ce va crea automat tabelele
aferente entitatii.

Private Sub CreateNewDatabase(DB_Firma As String)


Try
Dim query(2) As String
query(0) = $"IF DB_ID('{DB_Firma}') IS NULL CREATE DATABASE {DB_Firma}"
query(1) = $"USE {DB_Firma} CREATE TABLE Parteneri
(
ID_Partener BIGINT PRIMARY KEY IDENTITY(1, 1) NOT NULL,
Denumire NVARCHAR(50) NULL,
Telefon NVARCHAR(50) NULL,
Localitate NVARCHAR(50) NULL,
...
)
CREATE TABLE DelegatiTransport ...
CREATE TABLE Produse ...
CREATE TABLE Facturi ...
CREATE TABLE ProdFacturate ...

ALTER TABLE ProdFacturate ...


ADD CONSTRAINT FK_ProdFacturate_Fac_Prod ...

CREATE TABLE Gestiuni ...


CREATE TABLE NIR ...

CREATE TABLE ProdReceptionate ...


ALTER TABLE ProdReceptionate ...

CREATE TABLE ArhivaParteneri ...


CREATE TABLE ArhivaDelegati ...
CREATE TABLE ArhivaProduse ...
CREATE TABLE ArhivaFacturi
CREATE TABLE ArhivaProdFacturate ...
CREATE TABLE ArhivaGestiuni ...
CREATE TABLE ArhivaNIR ...
CREATE TABLE ArhivaProdReceptionate ..."

For i = 0 To 1
ExecuteQuery(query(i))
Next

For i = 0 To 7
CreateTrigger(i)
Next
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
con.Close()
End Try
End Sub

Subprocedura – CreateNewDatabase(DB_Firma)

46
Aceasta sub – procedura creaza automat tabelele aferente companiei, tabelele arhivei si
triggerele acestora. In ceea ce privesc triggerele acestea se creaza prin intermediul urmatoarei
sub – proceduri:

Private Sub CreateTrigger(t As Integer)


con.Open()
If autoDatabase = True Then
con.ChangeDatabase(DB_Firma)
End If

Dim cmd As New SqlCommand


Select Case t
Case 0
cmd.CommandText = "CREATE TRIGGER AdaugArhivaDT ON DelegatiTransport
FOR DELETE AS INSERT INTO ArhivaDelegati SELECT * FROM DELETED"
Case 1
cmd.CommandText = "CREATE TRIGGER AdaugArhivaFC ON Facturi FOR DELETE
AS INSERT INTO ArhivaFacturi SELECT * FROM DELETED"
Case 2
cmd.CommandText = "CREATE TRIGGER AdaugArhivaPRO On Produse For DELETE
AS INSERT INTO ArhivaProduse SELECT * FROM DELETED"
Case 3
cmd.CommandText = "CREATE TRIGGER AdaugArhivaPA ON Parteneri FOR
DELETE AS INSERT INTO ArhivaParteneri SELECT * FROM DELETED"
Case 4
cmd.CommandText = "CREATE TRIGGER AdaugArhivaPF ON ProdFacturate FOR
DELETE AS INSERT INTO ArhivaProdFacturate SELECT * FROM DELETED"
Case 5
cmd.CommandText = "CREATE TRIGGER AdaugArhivaGE ON Gestiuni FOR DELETE
AS INSERT INTO ArhivaGestiuni SELECT * FROM DELETED"
Case 6
cmd.CommandText = "CREATE TRIGGER AdaugArhivaNIR ON NIR FOR DELETE AS
INSERT INTO ArhivaNIR SELECT * FROM DELETED"
Case 7
cmd.CommandText = "CREATE TRIGGER AdaugArhivaPR ON ProdReceptionate
FOR DELETE AS INSERT INTO ArhivaProdReceptionate SELECT * FROM
DELETED"
End Select
cmd.CommandType = CommandType.Text
cmd.Connection = con
cmd.ExecuteNonQuery()

If autoDatabase = True Then


con.ChangeDatabase(DB_App)
End If
con.Close()
End Sub

Subprocedura – CreateTrigger( ... )

In continuare, dupa inregistrarea sau logarea companiei utilizatorul va fi transpus in


interfata principala a aplicatiei care se deschide prin intermediul sub – procedurii
„ShowIndexStart()” unde se vor activa panourile laterale de navigatie ale aplicatiei.
47
Schimbarea automata a bazei de date se realizeaza folosind urmatoarele secvente de cod
prin intermediul carora este instantiat constructorul clasei „dbEntity”, iar string-ul de conexiune
este modificat cu datele necesare.

Public Function eConnectionString(db As String) As String


Dim server As String
server = "DESKTOP-25KAC0S\SERVERSQL"

ReturnString.Format("metadata=res://*/dbEntity.csdl|res://*/dbEntity.ssdl|res:/
/*/dbE ntity.msl;provider=System.Data.SqlClient; provider connection
string=""data source={0};initial catalog={1};integrated
security=True;MultipleActiveResultSets=True;App=EntityFramework""", server, db)
End Function

Public eString As String = eConnectionString(DB_App)


Public Sub dConnectionString(type As Integer)
If type = 1 Then
con.ConnectionString = "Server = DESKTOP-25KAC0S\SERVERSQL; Initial
Catalog = " & DB_App & "; Database = " & DB_App & "; Integrated Security =
true"
eString = eConnectionString(DB_App)
ElseIf type = 2 Then
con.ConnectionString = "Server = DESKTOP-25KAC0S\SERVERSQL; Initial
Catalog = " & DB_Firma & "; Database = " & DB_Firma & "; Integrated
Security = true"
eString = eConnectionString(DB_Firma)
End If
End Sub

Clasa „dbEntity.vb”:

Imports System.Data.Entity
Partial Public Class dbEntity
Inherits DbContext
Public Sub New(ByVal connectionString As String)
MyBase.New(connectionString)
End Sub
End Class

48
Concluzii si recomandari
„SmartONE” este o aplicatie de gestiune a stocurilor ce a fost conceputa la sfarsitul
anului 2018, inceputul anului 2019. Scopul acesteia este de a aduce in lumina utilizatorilor
faptul ca metoda traditionala de gestiune a stocurilor poate cauza foarte multe probleme
organizatiei acestora, astfel, implementarea unui soft de genul aplicatiei realizate reprezinta cea
mai buna decizie in zilele de azi.

In opinia mea, solutia „SmartONE” usureaza munca personalului, dar mai mult ajuta
utilizatorii inspre omiterea greselilor ce pot aparea in timpul folosirii unei metode traditionale
(gestiunea realizata pe hartie).

Un prim element favorabil este evidentiat de faptul ca, acest sistem informatic este creat
in asa fel incat, orice greseala pe care un om ar putea sa o faca, sa stopeze procesul de gestionare
si sa atentioneze utilizatorul pentru remedierea datelor introduse eronat. Astfel, se realizeaza o
imbinare a tehnologiei cu experienta umana ajutand utilizatorii sa evolueze si sa opteze
intotdeauna spre o solutie digitalizata.

De asemenea, chiar daca aceasta aplicatie a fost creata prin intermediul tehnologiei
Windows Forms, care se cunoaste a fi destul de invechita, stim ca de-a lungul anilor de testare
si documentare aceasta tehnologie a fost imbunatatita pentru a putea da curs unor proiecte
complexe si foarte usor de utilizat. Acest fapt reprezinta un avantaj datorita faptului ca aplicatia
realizata prezinta compatibilitate extrem de mare cu orice computer.

Din punct de vedere al administrarii exista foarte multe functionalitati care au fost deja
implementate. In acest sens, utilizatorul are posibilitatea de a gestiona intr-o modalitate
eficienta stocurile, furnizorii, clientii, produsele, NIR-urile etc.

Totodata, datorita design-ului prietenos se sporeste utilitatea si atractivitatea aplicatiei


fata de utilizatori. Am dorit realizarea unei interfete foarte placuta, deloc greoaie, culorile au
fost alese cu scopul de a transmite o oarecare stare de liniste si calm. Pentru proiectarea
interfetei am folosit tool-urile deja existente in cadrul programului Visual Studio, prin
intermediul Windows Forms, insa unele aspecte mai complicate, cum ar fi culoarea panourilor
formularelor in stil gradient s-au realizat prin intermediul pachetului „Bunifu_UI_v1.5.3”. Acest
pachet imbunatateste anumite controale (butoane, date picker, panel), insa ofera si alte controale
in plus (scroll bar, user control, toggle switch, image button etc). In cazul controlului „Panel”,
acum am posibilitatea de a seta gradient-ul din orice directie (sus, jos, stanga, dreapta).

49
In viitor functionalitatile existente ar putea fi actualizate pentru ca procesul de gestionare
a stocurilor sa fie mult mai eficient. De asemenea, o functionalitate interesanta si pe care as dori
sa o implementez este filtrul de verificare a numarului de inregistrare de la Registrul Comertului
automat de pe site-ul ANAF. Mai exact, as dori verificarea entitatii dupa denumirea acesteia si
dupa numarul de inregistrare printr-o functie ce face legatura intre aplicatie si portalul Agentiei
de Administrare Fiscala, astfel incat in momentul introducerii denumirii companiei sa se auto
completeze datele corecte in controalele aferente formularului de inregistrare a unei noi entitati.
Desigur, pot fi realizate modificari de acest gen si pentru alte tipuri de functionalitati. Totodata,
design-ul aplicatiei poate fi imbunatatit folosindu-se astlel, alte medii de proiectare, alte tool-
uri in sensul modelarii interfetei intr-o maniera mult mai avansata si prietenoasa fata de
utilizator.

Mai mult, adaugarea unei functionalitati de tip tutorial ar reprezenta un benefiu enorm
asupra aplicatiei, astfel utilizatorului ii va fi mult mai usor de inteles pasii pe care trebuie sa ii
urmeze in cadrul diferitelor formulare.

In concluzie, aplicatia inglobeaza intr-o maniera ampla diferite functionalitati, ce stau


la baza procesului de gestionare a stocurilor. Astfel, viitori utilizatori vor fi multumiti de ceea
ce aceasta aplicatie poate sa ofere si vor putea continua munca de zi cu zi folosindu-se de un
mediu digital usor de folosit.

50
Referintele bibliografice

Carti:
• Dorin Zaharie, Victoria Stanciu, Niculae Davidescu, Liana Elena Anica-Popa,
Dezvoltarea Sistemelor Informatice de Gestiune, 2014, Bucuresti, Editura ASE.
• Liliana Feleaga, Niculae Feleaga, Luminita Mihaeala Dumitrascu, Contabilitate
financiara conform IFRS, 2017, Bucuresti, Editura ASE.
• IBM Corporation, Essentials of Rational Unified Process v7.0 – Student Guide, 2006.
• JTC1, ISO/IEC 12207 Systems and software engineering – Software life cycle
processes, 2008.

Cursuri:
• Coman Nicoleta (2020), Cursuri Politici si Optiuni Contabile, Bucuresti.
• Gorgan Catalina, Sacarin Marian (2019), Cursuri Contabilitate Consolidata, Bucuresti.
• Sacarin Marian (2019), Cursuri Contabilitate Financiara conform IFRS, Bucuresti.
• Gorgan Vasile (2019), Cursuri Limbaje de programare, Bucuresti.
• Stanciu Andrei (2019), Cursuri Baze de date financiar contabile, Gestiunea bazelor de
date relationale, Bucuresti.
• Tartavulea Cristina-Venera, Rindasu Sinziana-Maria (2020), Cursuri Sisteme
Informatice de Gestiune, Bucuresti.

Legislatie:

• Ordinul nr. 1802 din 29 decembrie 2014 pentru aprobarea Reglementarilor contabile
privind situatiile financiare anuale individuale si situatiile financiare anuale consolidate.
• Legea Contabilitatii nr. 82 din 24 Decembrie 1991.

Surse online:

• contzilla.ro, 2020, Definitia si componenta stocurilor,


https://www.contzilla.ro/stocurile/.
• contabilul.manager.ro, 2020, IAS 2 – Stocuri, https://contabilul.manager.ro/a/1956/ias-
2-stocuri.html.
• ro.wikipedia.org, 2020, IAS 2 – Stocuri, https://ro.wikipedia.org/wiki/IAS_2:_Stocuri.

51
Lista figurilor

• Fig. 01 – Ciclul de viata al sistemelor de gestiune;


• Fig. 02 - Modelarea conceptuala a datelor;
• Fig. 03 - Modelarea fizica a datelor;
• Fig. 04 - Fereastra pentru logarea utilizatorului;
• Fig. 05 - Inregistrarea unui nou utilizator;
• Fig. 06 - Lista companii gestionate;
• Fig. 07 - Inregistrarea unei noi companii;
• Fig. 08 - Modelul facturii;
• Fig. 09 - Interfata principala;
• Fig. 10 - Panoul de control al utilizatorului;
• Fig. 11 - Panoul de control al companiei gestionate;
• Fig. 12 - Exemplu fereasta lista (lista furnizorilor);
• Fig. 13 - Exemplu meniu (lista furnizorilor);
• Fig. 14 - Panoul din partea de sus;
• Fig. 15 - Fereastra pentru adaugarea unei noi facturi;
• Fig. 16 - Meniul din partea de sus (fereastra adaugare factura);
• Fig. 17 - Alegere furnizor existent in baza de date;
• Fig. 18 - Alegere sau adaugare delegat transport;
• Fig. 19 - Alegere produse;
• Fig. 20 - Lista produse facturate;
• Fig. 21 - Printeaza factura;
• Fig. 22 - Modelarea logica a prelucrarilor (intocmire factura);

52
Anexe

Anexa 1 – Restrictia de validare a campului „CNP”:

Private Sub txtCNP_TextChanged(sender As Object, e As EventArgs) Handles


txtCNP.TextChanged
'Daca textul introdus nu are 13 caractere si nu este numeric procesul
continua.
If txtCNP.Text.Length = 13 And IsNumeric(txtCNP.Text) Then 'Textul introdus
are 13 caractere si este numeric
If errCNP.Visible = True Then 'Verificare daca iconita erorii este
vizibila
errCNP.Hide() 'Ascundere iconita eroare
If errSent(14) = True Then 'Verificare eroare activa
errors -= 1 'Dezincrementare total erori in formular
errSent(14) = False 'Dezactivare eroare activa daca conditiile
sunt indeplinite
End If
CheckErrors() 'Reverificare erori totale
End If
Else
If errCNP.Visible = False Then 'Verificare daca iconita erorii este
ascunsa
errCNP.Show() 'Afisare iconita eroare
If errSent(14) = False Then 'Verificare eroare inactiva
errors += 1 'Incrementare total erori in formular
errSent(14) = True 'Activare eroare activa daca conditiile NU sunt
indeplinite
End If
CheckErrors() 'Reverificare erori totale
End If
End If
End Sub

Anexa 2 – Restrictia de validare a campului destinat pentru „E-mail/G-mail”:

Private Sub txtMail_TextChanged(sender As Object, e As EventArgs) Handles


txtMail.TextChanged
'Verificare daca datele introduse nu sunt numeric si daca mail-ul contine
"@yahoo" sau "@gmail"
If Not IsNumeric(txtMail.Text) And
(txtMail.Text.ToLower.Contains("@yahoo.com") Or
txtMail.Text.ToLower.Contains("@gmail.com")) Then
If errMail.Visible = True Then
errMail.Hide()
If errSent(2) = True Then
errors -= 1
errSent(2) = False
End If
CheckErrors()
End If
Else
If errMail.Visible = False Then
errMail.Show()
If errSent(2) = False Then
errors += 1
errSent(2) = True
End If
CheckErrors()
End If
End If
End Sub

53
Anexa 3 – Restrictia de validare asupra campului „Parola”:

Private Sub txtParola_TextChanged(sender As Object, e As EventArgs) Handles


txtParola.TextChanged
If txtParola.Text.Length >= 6 And Not IsNumeric(txtParola.Text) Then
If errParola.Visible = True Then
errParola.Hide()
If errSent(10) = True Then
errors -= 1
errSent(10) = False
End If
CheckErrors()
End If
Else
If errParola.Visible = False Then
errParola.Show()
If errSent(10) = False Then
errors += 1
errSent(10) = True
End If
CheckErrors()
End If
End If
End Sub

Anexa 4 – Restrictia de validare asupra campului „TVA”:


If frmAdaugaFactura_menu1.IsBillTVAEnabled = True Then
If frmAdaugaFactura_menu2.cbCotaTVA.Text = "" Or
frmAdaugaFactura_menu2.cbCotaTVA.Text Like "[!951]*" Then
frmAdaugaFactura_menu2.errCotaTVA.Show()
If frmAdaugaFactura_menu2.errSent(8) = False Then
frmAdaugaFactura_menu2.errors += 1
frmAdaugaFactura_menu2.errSent(8) = True
End If
frmAdaugaFactura_menu2.CheckErrors()
End If
End If

Public Sub EnableTVA()


If cbAplicTVA.Text = "Da" Then
IsBillTVAEnabled = True
frmAdaugaFactura_menu2.cbCotaTVA.Enabled = True

If colProdFacturate.Count > 0 Then


If frmAdaugaFactura_menu2.cbCotaTVA.Text = "5" Or
frmAdaugaFactura_menu2.cbCotaTVA.Text = "9" Or
frmAdaugaFactura_menu2.cbCotaTVA.Text = "19" Then
frmAdaugaFactura.ReloadTVA()

54
Else
frmAdaugaFactura_menu2.cbCotaTVA.Text = ""
If frmAdaugaFactura_menu2.cbCotaTVA.Text <> "5" Or
frmAdaugaFactura_menu2.cbCotaTVA.Text <> "9" Or
frmAdaugaFactura_menu2.cbCotaTVA.Text <> "19" Then
frmAdaugaFactura_menu2.cbCotaTVA.Text = InputBox("Introduceti cota
de TVA (%): 5, 9 sau 19:")
EnableTVA()
Else
EnableTVA()
End If
End If
End If
Else
frmAdaugaFactura_menu2.cbCotaTVA.Text = ""
frmAdaugaFactura_menu2.cbCotaTVA.Enabled = False
IsBillTVAEnabled = False

If colProdFacturate.Count > 0 Then


frmAdaugaFactura.ReloadTVA()
End If
End If
frmAdaugaFactura_menu2.ResetVars2()
End Sub

Anexa 5 – Restrictia de validare asupra campului „Numar inregistrare


Registrul Comertului”:

Private Sub txtNrReg_TextChanged(sender As Object, e As EventArgs) Handles


txtNrReg.TextChanged
'Verificare daca datele introduse nu sunt numerice si daca datele incep cu
litera J, respectiv litera F
If Not IsNumeric(txtNrReg.Text) And (txtNrReg.Text.ToLower.StartsWith("j") Or
txtNrReg.Text.ToLower.StartsWith("f")) Then
If errNrReg.Visible = True Then 'Verificare vizibilitate activata iconita
eroare
errNrReg.Hide() 'Ascundere iconita eroare
If errSent(20) = True Then 'Verificare eroare activa
errors -= 1 'Dezincrementare eroare
errSent(20) = False 'Anulare eroare daca conditiile sunt
indeplinite
End If
CheckErrors() 'Verificare erori globale
End If
Else
If errNrReg.Visible = False Then 'Verificare vizibilitate dezactivata
iconita eroare
errNrReg.Show() 'Afisare iconita eroare
If errSent(20) = False Then 'Verificare eroare inactiva
errors += 1 'Incrementare eroare
errSent(20) = True 'Activare eroare daca conditiile NU sunt
indeplinite
End If
CheckErrors() 'Verificare erori globale
End If
End If
End Sub

55
Anexa 6 – Realizarea conexiunii cu baza de date
prin intermediul „Windows Authentication”:

56
Anexa 7 – Alegerea tehnologiei „ADO.NET Entity Data Model”:

57

S-ar putea să vă placă și