Sisteme Informatice Utilizate In Contabilitate

INTRODUCERE

Contabilitatea studiază echilibrul economic al patrimoniului și realizează oglindirea în expresie băneasca a structurii averii agenților economici și a utilizării eficiente a acesteia. Contabilitatea reprezintă un complex de proprietate independent, ce generalizează informația și participă la toate domeniile de activitate ale unei organizații.

Am ales această temă, deoarece am dorit să–mi apofundez cunoștințele legate de sisteme informatice utilizate în contabilitate, cunoștințele legate de caracteristicile lor, precum și conținutul sistemului informațional financiar-contabil.

Principalul motiv pentru care am ales această temă a fost încercarea de a ușura activitatea desfășurată de compartimentul financiar-contabil cu ajutorul unui soft de calculare a decontărilor drepturilor de transport a funcționarilor publici cu statut special din cadrul Administrației Naționale a Penitenciarelor.

Lucrarea este structurată pe două capitole și anume:

Capitolul I : „Aspecte teoretice privind sistemul informațional utilizat în domeniul financiar-contabil”

Capitolul II : „Studiu privind utilizarea soluțiilor informatice în domeniul financiar-contabil din A.N.P.”

În primul capitol am prezentat sistemele informaționale, arhitectura acestora, elemetele caracteristice ale informației contabile și soluțiile informatice din domeniul financiar-contabil. De asemenea am prezentat conceptul de „sistem informatic”, rolul acestuia și produsele „program” utilizate în domeniul financiar-contabil.

În al doilea capitol am prezentat entitatea patrimonială unde am efectuat practica universitară, organizarea sistemului informațional al acesteia, precum și soluțiile informatice utilizate. De asemenea am prezetat criteriile de alegere al unui produs „program” și evaluarea performațelor acestuia. În finalul capitolului am prezentat drepturile personalului privind decontarea cheltuielilor de transport efectuate de funcționarii publici cu statut special din cadrul Administrației Naționale a Penitenciarelor si produsul „program” creat în sprijinul biroului financiar-contabil pentru a ușura munca efectuată, încercarea prevenirii îmfăptuirii de fraudă și evitatea producerii de erori.

Lucrarea se încheie cu partea de concluzii și propuneri, care prezintă elemetele concludente și propunerile personale rezultate din această cercetare.

Sper ca această lucrare să fie studiată de persoanele interesate și ca softul realizat să vină în ajutorul persoanelor care îl utilizează simplificându-le munca.

CAPITOLUL I. ASPECTE TEORETICE PRIVIND SISTEMUL INFORMAȚIONAL UTILIZAT ÎN DOMENIUL

FINANCIAR-CONTABIL

În cadrul acestui capitol am explicat denotația conceptului de „sistem informatic”, arhitectura sistemului informațional, caracteristicile informației contabile, cât și soluții informatice utilizate în domeniul financiar contabil.

În finalul acestui capitol am definit conceptul de „sistem informatic”, relația dintre sistemul de organizare a contabilității și abordarea informatică, precum și rolul sistemului informațional într-o entotate patrimonială.

La finalul capitolului am prezentat caracteristici generale ale produselor „program” utilizate în domeniul financial-contabil.

Semnificația sistemului informațional

Sistemul informațional, „este un ansamblu de componete, care acționează în baza unor relații de cauzalitate, în vederea culegerii și prelucării datelor si informațiilor, necesare la nivelul decizional și informațional”.

Sistemele informaționale, în principal prin componetele lor informatice, alături de ansamblul proceselor manageriale ce se desfășoară în cadrul organizației se află, prin definiție, la intersecția a numeroase domenii fundamentale, iar efectele acestei abordări nu pot fi decât constructive pe plan strategic, financiar, administrativ sau tehnologic.

Pentru a realiza obiectivelor fundamentale ale entității patrimoniale nu sunt suficiente doar resursele umane, materiale și tehnice stabilite de profesioniști, ci pentru îmbinarea optimă a acestora este necesară cunoașterea în permanență a cerințelor mediului extern al firmei, starea resurselor proprii precum și a cerințelor și nevoilor consumatorilor. În concluzie sistemul informațional al societății comerciale este nevoit să îndeplinească cumulativ următoarele funcții (figura nr. 2.1): „funcția decizională, funcția operațională, funcția de documentare și funcția educațională” .

Funcția decizională – exprimă menirea sistemului informațional de a asigura elementele informaționale necesare fundamentării și adoptării deciziilor.

Funcția operațională – se referă la scopul sistemului informațional de a declanșa multitudinea de acțiuni necesare realizării obiectivelor organizației, asigurând astfel operaționalizarea deciziilor, metodelor și tehnicilor manageriale.

Funcția de documentare – exprimă menirea sistemului informațional, de a înregistra informațiile, cu scopul de a îmbogăți cunoștințele utilizate în procesele manageriale sau de execuție.

Funcția educațională – are ca rol asigurarea informațiilor cu caracter formativ și tratarea acestora astfel încât să se obțină creșterea efectelor educaționale, atât în plan individual cât și în plan organizațional.

Funcțiile sistemului informațional sunt reprezentate grafic în fig. nr.1.1.

Figura nr. 1.1: Funcțiile sistemului informațional

Sursa: Date prelucrate conform Gorski H.„ Sistemul Informațional Managerial”, Ed. Universității „Lucian Blaga”, Sibiu, 2003, p. 97.

Sistemul informațional reunește un ansamblu de elemente interdependente, asupra cărora acționează dinamic o serie de evenimente, atât din mediul organizațional, cât și din cel extern, elemente care într-o viziune general acceptată, sunt prezentate în figura 1.2.

Figura nr. 1.2: Elementele interdependente alea sistemului informațional

Sursa: Date prelucrate conform Ioan Radu și colaboratorii, „Informatică și Management” , Ed. Universitară, 2005, p. 47

„Performanțele în cadrul sistemului informațional depind în măsură apreciabilă de mijloacele de culegere, înregistrare, transmitere și prelucrare ale informațiilor, reprezentând suportul tehnic al sistemului”.

Entitățile patrimoniale utilizează o gamă variată de mijloace ce tratează informațiile, în funcție de caracteristicile tehnice și de gradul de intervenție al omului, care se împart în trei categorii și anume:

„Mijloace manuale – cuprinde mașina de dactilografiat; mașina de calcul manual; mașina de contabilizat și facturat; instrumente clasice (stilou, creion etc.);

Mijloace mecanizate – echipamente mecanografice: mașina de perforat;

Mijloace automatizate – calculatoare; echipamente periferice: imprimante, scannere”.

Ultima categorie de mijloace prezintă atât avantaje, cât și dezavantaje. Ca și avatanje putem menționa faptul că va crește competivitatea între entitățile patrimoniale, iar ca și dezavantaj faptul că va fi predispus „spargerii” și sustragerea de către hackeri a documetelor confindețiale.

1.2 Arhitectura sistemului informațional în domeniul finanaciar-contabil

Sistemul informațional în domeniul financiar-contabil, ajută la măsurarea, selectarea și sintetizarea activităților efectuate, sub forma unor informații financiar-contabile.

Cu ajutorul sistemului informațional contabil, se pot identifica, clasa, măsura și înregistra toate evenimentele economice. Toate aceste informații fiind stocate pe un singur sistem de calcul, luarea deciziei într-o entitate patrimoniala este simplificată radical.

Una din pricipalele caracteristici ale unui sistem informațional economic este faptul că simplică modul de comunicare cu mediul extern, dar de asemenea și în interiorul entității patrimoniale.

Cu ajutorul informațiilor stocate, departamentul finanaciar-contabil are informații exacte cu privire la patrimoniu și la operațiunile contabile efectuate.

Din punct de vedere al contabilității financiare, sistemul informațional prezintă trăsături ca:

„informațiile sunt destinate în special utilizatorilor aflați în exteriorul
întreprinderii (investitori, bănci, furnizori, instituții ale statului etc.),
rezultând astfel caracterul public al acestora;

este orientată spre trecut;

analizează performanțele trecute și poziția financiară;

se bazează pe o serie de reglementări legale, pe principii general
acceptate, oferind astfel o imagine mai mult „juridică” a patrimoniului
și limitând activitatea celor implicați la un număr finit de practici
contabile;

utilizează unități de măsura monetare;

are un grad ridicat de obiectivitate deoarece informațiile vizează doar
trecutul;

este agregată, centralizată, la nivel de întreprindere;

informațiile oferite vizează întreprinderea în ansamblul ei;

raportările se realizează la intervale precis stabilite;

poate fi utilizat doar sistemul contabil în partidă dublă;

dispune de un domeniu autonom, independent față de alte discipline;

cheltuielile sunt evidențiate după natura lor economică.”

Sistemul informațional-contabil, susține logica informațiilor. Privit ca și mod de cominicare financiară, sistemul informațional permite altor utilizatori (externi) o imagine a situației financiare a firmei (active, datorii, capitaluri propii etc.).

Informațiile contabile sunt de bază în momentul luării unei decizii, decizii care pot atinge nivelul maxim de rentabilitate.

Se încearcă o uniformizare a sistemelor informaționale, pentru a înlătura deficiențele în utilizare lor.

1.3 Elemente caracteristice ale informației contabile

Informațiile contabile trebuie sa fie exacte, omogene și verificabile, utile și oportune. De asemenea, ele trebuie să fie prezentate în concordanță cu baza lor juridică și economică, aplicarea normelor contabile să fie realizată cu sinceritate, iar informațiile să fie furnizate regulat, astfel încât să poată fi utilizate în procesul decizional.

Pentru a fi considerată informație contabilă, acea informație trebuie sa îndeplinească mai multe criterii simultan: trebuie să fie exactă, omogenă, și verificabilă. De asemenea, ea trebuie să coincidă cu baza ei juridică și economică.

Comitetul pentru Standarde Internaționale de Contabilitate (I.A.S.C.)

enumeră principalele caracteristici care determină dacă o informație este sau nu utilă: „inteligibilitatea, relevanța, credibilitatea și comparabilitatea”.

Inteligibilitatea reprezintă calitatea informației de a fi ușor de înteles pentru toți utilizatorii. Pentru aceasta este nevoie din partea utilizatorilor de cunoștințe de bază privind desfășurarea activităților economice, de asemenea și de contabilitate. Din informațiile financiare nu trebuie sa lipsească informațiile mai dificile (complexe), în procesul de luare a deciziei, chiar dacă nu sunt înțelese de toți utilizatorii.

Relevanța. O informație este relevantă (pertinentă) dacă este utilă. Cu alte cuvinte, dacă este folosită în procesul decizional. De asemenea o informație este relevantă, atunci când influențează luarea unei decizii.

Credibilitatea. Informația credibilă este utilă, ceea ce înseamnă că nu trebuie sa aibe erori și că utilizatorii trebuie sa aibe încredere în ea. Pentru ca o informație să fie credibilă, informația trebuie sa fie neutrală, adică să nu fie influențabilă. De asemena trebuie sa fie completă, adică nu trebuie să fie omis nimic în legătură cu ea, lucru care, dacă s-ar întâpla, ar produce erori și astfel nu ar mai prezenta credibilitate.

Comparabilitatea. Pentru ca o informație să fie comparabilă, trebuie ca, pe baza acelei informații să se poată identifica performațele entității patrimoniale. Utilizatorii trebuie să diferențieze poziția financiară a unei entități patrimoniale, evoluția și performanțele acesteia.

Pentru ca o informație să fie utilă trebuie să aibe următoarele caracteristici(figura nr. 1.3):

Figura nr. 1.3: Caracteristicile calitate ale informației contabile

Sursa: Nicolae Balteș, Alina Teodora Ciuhureanu, „Bazele contabilității – curs” , Editura Academiei Forțelor Terestre Sibiu, 2008, p. 64.

1.4 Soluții informatice în domeniul financiar-contalizatorilor de cunoștințe de bază privind desfășurarea activităților economice, de asemenea și de contabilitate. Din informațiile financiare nu trebuie sa lipsească informațiile mai dificile (complexe), în procesul de luare a deciziei, chiar dacă nu sunt înțelese de toți utilizatorii.

Relevanța. O informație este relevantă (pertinentă) dacă este utilă. Cu alte cuvinte, dacă este folosită în procesul decizional. De asemenea o informație este relevantă, atunci când influențează luarea unei decizii.

Credibilitatea. Informația credibilă este utilă, ceea ce înseamnă că nu trebuie sa aibe erori și că utilizatorii trebuie sa aibe încredere în ea. Pentru ca o informație să fie credibilă, informația trebuie sa fie neutrală, adică să nu fie influențabilă. De asemena trebuie sa fie completă, adică nu trebuie să fie omis nimic în legătură cu ea, lucru care, dacă s-ar întâpla, ar produce erori și astfel nu ar mai prezenta credibilitate.

Comparabilitatea. Pentru ca o informație să fie comparabilă, trebuie ca, pe baza acelei informații să se poată identifica performațele entității patrimoniale. Utilizatorii trebuie să diferențieze poziția financiară a unei entități patrimoniale, evoluția și performanțele acesteia.

Pentru ca o informație să fie utilă trebuie să aibe următoarele caracteristici(figura nr. 1.3):

Figura nr. 1.3: Caracteristicile calitate ale informației contabile

Sursa: Nicolae Balteș, Alina Teodora Ciuhureanu, „Bazele contabilității – curs” , Editura Academiei Forțelor Terestre Sibiu, 2008, p. 64.

1.4 Soluții informatice în domeniul financiar-contabil

În cadrul figura nr. 1.4 am prezentat sistemul informatic financiar-contabil din punct de vedere structural.

Figura nr. 1.4: Structura sistemului informatic financiar-contabil

Sursa: Date prelucrate conform I. Roșca (coord) „Proiectarea sistemelor informatice financiar-contabile"; Ed. Didactica și Pedagogică, București, 1993, p.12.

Componenta centrală a sistemului în cadrul sistemului informatic financiar-contabil integrat este contabilitatea financiară și de gestiune, pentru că asigură controlul tuturor proceselor economice ce generează informații pentru toate celelalte componente ale sistemului informatic.

„Sistemul informatic contabil integrat ocupă o poziție importantă în cadrul sistemului informatic al entității patrimoniale prin faptul că oferă informații tuturor structurilor funcționale și urmărește sistematic realizarea programelor de dezvoltare economico-socială a unității economice”.

„Sistemul informatic financiar-contabil permite administratorilor și utilizatorilor externi de informații contabile să obțină o imagine asupra întregii activități economice, deoarece leagă celelalte subsisteme informaționale specifice funcțiilor de cercetare-dezvoltare, producție, comercială și resurse umane”.

Obținerea documentelor de sinteză este principalul obiectiv al sistemului informatic financiar-contabil, care să ofere o imagine fidelă a patrimoniului, pentru a furniza utilizatorilor informații utile. În Standardele de Contabilitate Internaționale (I.A.S.C.), „Obiectivul documentelor contabile de sinteză ale unei întreprinderi este de a furniza informații privind situația financiară, performanțele și evoluția situației financiare, care să fie utilă unei game largi de utilizatori atunci când aceștia iau decizii economice".

Pentru a defini obiectivul sistemului informatic financiar-contabil se determină caracteristicile pe care trebuie să le îndeplinească informațiile contabile, ce sunt legate ce imaginea fidelă a patrimoniului.

„ La analiza caracteristicilor informațiilor și implicit a calității lor se are în vedere: dimensiunea temporală, conținutul și forma. ”

Dimensiunea temporală presupune ca o informație să fie oportună, frecventă și actuală. Conținutul, considerat cea mai importantă dimensiune a informației, presupune exactitate, să răspundă unei nevoi specifice a utilizatorului și să fie completă.

Forma definește modalitatea de prezentare a informației, care trebuie să fie atrăgătoare, ușor de utilizat și de înțeles.

Sistemul informatic financiar-contabil conferă contabilității capabilitatea de a beneficia de avantajele folosirii tehnologiilor informaționale, pentru a ameliora caracteristicile informațiilor contabile pentru cele trei aspecte prezentate mai sus.

1.4.1 Conceptul de sistem informatic

„Sistemul informatic reprezintă un ansamblu structurat, format din echipamente electronice de calcul și comunicație, procese și proceduri automatizate, care interacționează în vederea asigurării prelucrării automate a datelor și informațiilor din cadrul sistemului informațional”.

Pentru a-și îndeplini funcțiile în cadrul sistemului informațional, sistemul informatic cuprinde ansamblul tuturor resurselor, regulilor, procedurilor, mijloacelor, metodelor și tehnicilor (figura nr. 1.5), prin care se asigură prelucrarea automată a datelor.

Figura nr. 1.5: Resursele sistemului informațional

Sursa: Date prelucrate conform Ovidiu Nicolescu (coordonator), „Sistemul informațional-managerial al organizației”, Ed. Economocă, București, 2001, p.32.

Metodele reprezintă căile de determinare, punere în funcțiune, de perfecționare și optimizare a funcțiunilor organismului, pentru a atinge obiectivele predeterminate.

Regulile se referă la modalitatea de aplicare a metodelor. Ele sunt formulate și definite concis sub forma unor ansambluri de operații logice și/sau matematice.

Procedurile se referă la operațiunile de care este nevoie pentru tratarea regulilor și informațiilor prin mijloacele sistemului.

Metoda gestiunii stocurilor, este un exemplu, în care se folosește regula de calcul a nivelului de stoc, în care se plasează o comandă și care utilizează procedurile de calcul.

„Mijloacele unui sistem informatic se referă la totalitatea instrumentelor manuale, automate, inclusiv software foloste pentru efectuarea de operațiuni asupra informației: captare, culegere, pregătire, control, introducere și extragere, transmitere, concentrare, stocare, transformare, prelucrare prin calcul aritmetic și logic, analiză și interpretare etc.”

În mijloace se regăsesc: mașini, suporți și oameni.

Tot ceea ce servește la transportul informațiilor sau stocarea ei poartă numele de „suport”. Se regăsesc următoarele tipuri de suporți:

„Materiali, sub formă de suporturi tehnice (magnetice sau optice) sau grafice (opace sau transparente);

Câmp electric, magnetic sau optic, transmis prin semnale și pachete;

Experiența umană, sub formă de date și informații acumulate de oameni în procesul muncii”.

Mașinile reprezintă echipamentele și dispozitivele folosite pentru efectuarea operațiunilor specificate mai sus. Putem enumera:

„sisteme de calcul, de diferite generații și configurații;

echipamentele de captare, culegere, pregătire, transmitere, stocare, de prelucrare, de redare, de analiză și interpretare etc.”

Oamenii intervin asupra suporților, ca specialiști în utilizarea sistemului, sau ca utilizatori în regim off-line sau online.

„Sistemul informatic se poate prezenta sub forma unei „cutii negre” bazată pe intrări, ieșiri, reguli, proceduri, mijloace și metode ca și sistemul economic”.

1.4.2 Relația dintre sistemul de organizare a contabilității și abordarea informatică

Pentru perfecționarea proceselor informaționale este necesară folosirea în practica economică a sistemelor informatice financiar-contabile complexe, echivalente cu necesitățile introducerii mecanismului economiei de piață.

„Corespunzător conceptului de organizare a contabilității de gestiune internă, sistemul informatic asociat acesteia se poate realiza în două variante:

varianta integrată asigură realizarea contabilității la nivelul analitic prin detalierea conturilor financiare (sintetice) pe niveluri de detaliere, potrivit opțiunilor de organizare concretă a contabilității, ca urmare a faptului că unitatea economică este titulara patrimoniului.

varianta paralelă presupune organizarea contabilității analitice prin intermediul unor conturi proprii de gestiune, care să-i permită urmărirea stării și a mișcării elementelor patrimoniale pe niveluri suplimentare de detaliere”.

Ultima variantă este utilizată de entitățile patrimoniale care doresc sa detalieze aspectele permise de varianta integrată, de aceea își organizează contabilitatea într-un sistem propriu care să genereze informații necesare controlului financiar cât și necesare utilizării în gestiunea internă a entității patrimoniale.

1.4.3 Rolul sistemelor informaționale contabile în conducerea organismelor economice

După cum bine știm calculatoarele ușureză munca, poate cel mai important aspect este apariția microcalculatoarelor, indiferent de dimensiunile lor, de aceea economistul poate recurge la resursele sistemelor informatice, în orice ipostază s-ar afla.

Contabilitatea oferă informații utilizatorilor externi, care se numește contabilitate financiară, iar cea care oferă informații internă este contabilitate de gestiune internă.

Informațiile interne au un regim diferit. În cazul lor trebuie cunoscut cui i se adresează, ce vor să ofere ș.a. Informațiile privind costurile și beneficiile vor avea prioritate.

„Contabilitatea reprezintă sursa principală de informații pentru conducere, de aceea sistemul informațional al contabilității rămâne partea cea mai importantă a unui sistem informațional pentru conducere”.

1.4.4 Produse „program” utilizate în domeniul financar-contabil

Creșterea productivității persoanale este una dintre marile facilități ale microcomputelor.

„Produsele program sunt componentele software-ului . Orice produs program este constituit din :

programul propriu-zis (codul sau instrucțiunile);

datele asociate prelucrărilor prevăzute în program;

documentația asociată produsului”.  

Produsele software (produsele program) trec prin etapele de analiză, proiectare, realizare, testare, experimentare și utilizare. Diferența constă în faptul că produsul software este rezultatul unei activități intelectuale, iar ele sunt concepute pentru a pune în valoare produsele de tip calculator, care funcționează pe bază de instrucțiuni. Produsele program se pot stratifica în următoarele categorii (figura nr. 1.6).

Figura nr. 1.6: Stratificarea produselor program

Sursa: cercetare proprie

1. Sisteme de operare – programe de bază; sistemul de operare este o colecție de elemente software;

2. Extensii ale sistemelor de operare – sunt sisteme de operare care asigură, facilități speciale cerute numai de anumite aplicații;

3. Sistemele de gestiune a bazelor de date (SGBD) – asigură independența programelor față de modul de structurare a datelor;

4. Produse program orientate pe metodă sau model matematic – sunt pachete și programe pentru rezolvarea unor aplicații care au la bază același model sau metodă matematică;

5. Produse program orientate pe domenii sau pe specificul domeniului de aplicație – rezolvă ecuații din domenii diferite ale activității umane;

6. Instrumente pentru realizarea produselor program – sunt programe software care acționează asupra altor entități software.

 „Caracteristicile generale întrunite de produsele program orientate sunt:

1. generalitate – produsul program rezolvă toate problemele din clasa respectivă;

2. eficiența algoritmului – durata execuției să fie mică, iar memoria internă utilizată să fie redusă;

3. parametrizare completă – parametrii algoritmului să fie sub controlul utilizatorului;

4. independență între intrări și ieșiri;

5. portabilitate – produsul să poată fi implementat pe diferite tipuri de calculatoare fără modificări prea mari;

6. robustețe, siguranță în execuție – dispun de o bază matematică solidă, convergența algoritmului să fie demonstrată etc.;

7. fiabilitate ridicată – numărul de erori în faza de execuție să fie foarte mic”.

Figura nr. 1.7: Avantajele și dezavantajele utilizării produselor program orientate

Sursa: cercetare proprie

Un program (figura nr. 1.8.) este format din trei părți principale: date, algoritm și structură. Interdependeța dintre acestea este prezentată în următoarea figură (figura nr. 1.9.). Algoritmul indică un set de operații ce se aplică asupra datelor, apoi prin intersecția acestor două parți, operații (de intrare / ieșire, operații logice, atribuiri, etc.).

Sunt identificate in structura programului diferite tipuri de date ce sunt

necesare fiecarui algoritm.

Figura nr. 1.8: Părți componente ale unui produs program

Sursa: cercetare proprie

Totodată tipurile fundamentale de control sunt numeroase când vine vorba de structura programului asupra unui algoritm.

Figura nr. 1.9: Interacțiuni între părțile unui program

Sursa: cercetare proprie

CAPITOLUL II. STUDIU PRIVIND UTILIZAREA SOLUȚIILOR INFORMATICE ÎN DOMENIUL FINANCIAR-CONTABIL DIN A.N.P

În acest capitol, voi prezenta date generale ale entității patrimoniale unde am efectuat practica universitară, precum și compartimentul financiar-contabil al acesteia.

De asemenea voi prezenta soluțiile informaționale utilizate de aceasta, criteriile de alegere al unui produs „program” și voi prezenta amănunțit softul creat în sprijinul compartimentul financiar-contabil, pentru calcularea dreptului personalului privind decontarea cheltuielilor de transport efectuate de funcționarii publici cu statut special din cadrul Administrației Naționale a Penitenciarelor.

În finalul acestui capitol voi prezenta tendințe în informatizarea sistemelor informaționale utilizate în domeniul financiar-contabil.

2.1 Prezentarea entității patrimoniale

Penitenciarul Colibași este o instituție publică de interes național, cu personalitate juridică, în subordinea directă a Administrației Naționale a Penitenciarelor, ce face parte din instituțiile publice de apărare, ordine publică și siguranță națională ale statului.

Penitenciarul Colibași s-a înființat la data de 01.04.1967 ca secție a Penitenciarului Pitești.

Prin Decretul Lege nr. 225/16.07.1977 privind reorganizarea unităților de penitenciare, Penitenciarul Pitești și Secția Colibași se desființează, o parte din cadre și arhiva unității fiind mutate la Penitenciarul Râmnicu Vâlcea.

La 01.04.1980 se reînființează Penitenciarul Colibași ca penitenciar județean având ca obiect principal de activitate aplicarea, în domeniile ce o privesc, strategiei Guvernului României în executarea pedepselor și măsurilor privative de libertate pronunțate de instanțele judecătorești.

Penitenciarul Colibași este situat la 15 km N-E de municipiul Pitești și în partea de sud a orașului Mioveni, județul Argeș, lângă Uzina de Autoturisme Dacia-Renault, pe Bd. Dacia, nr. 1.

Organigrama Penitenciarului Colibași este prezentată în figura nr. 2.1.

Figura nr. 2.1: Organigrama Penitenciarului Colibași

Sursa: http://anp.gov.ro/documents/12448/0/organigrama.jpg/97533c5b-4554-43bc-9f54-633d20c761f9?t=1358164082000

În cadrul compartimentului economic-administrativ, la serviciul financiar contabilitate, s-au prevăzut, pentru anul 2015, câteva obiective de atins, și anume:

păstrarea informațiilor privind toate mișcările patrimoniale astfel încât să se asigure măsurarea, evaluarea, cunoașterea, gestiunea și controlul activelor, datoriilor, capitalurilor proprii și rezultatelor obținute din activitatea proprie;

organizarea și asigurarea evidenței privind ALOP-ul (angajarea, lichidarea, ordonanțarea, plata și înregistrarea) cheltuielilor conform reglementărilor legale și bugetare;

analizarea execuției bugetare;

depunerea dărilor trimestriale și anuale ordonatorului secundar de credite astfel încât să se ofere o imagine fidelă a activităților desfășurate și o performanță financiară;

structurarea activităților astfel încât să se respecte organigrama, prin întocmirea Fișelor posturilor;

redimensionarea și restructurarea statului de funcții pentru a răspunde nevoilor reale;

întocmirea graficului de circulație a documentelor și completarea cadrului general al operațiunilor supuse vizei de control financiar preventiv propriu (CFP);

acordarea vizei de CFP după ce s-a efectuat analiza privind eficiența operațiunilor economice;

acordarea drepturilor salariale personalului unității prin întocmirea, la timp, a statelor de plată;

realizarea în permanență a evidenței bunurilor de valoare și a sumelor de bani aparținând personanelor private de libertate (aflate în custodia unității) și acordarea drepturilor ce le revin;

participarea și verificarea personalului (la cursuri de specialitate și la sesiuni de pregătire) cu privire la cunoștințele acumulate.

2.2 Organizarea sistemului informațional economic al entității patrimoniale

Principalele obiective ale sistemului informațional al entității patrimoniale sunt prezentate în figura nr. 2.2.

Figura nr. 2.2: Obiectivele sistemului informațional

Sursa: cercetare proprie

Pentru elaborarea și luarea unor decizii, este utilizată informația economică. De asemenea pentru elaborarea de planuri organizaționale și elaborarea de procese sunt utilizate tot infomațiile economice.

Dacă sunt prelucrate datele contabile, rezultă informațiile contabile. Aceste informații au legătură cu patrimoniul, cu mărimea și structura acestuia, iar rezultatele financiare, cheltuielile cât și veniturile, reprezintă informații contabile.

Aceste informații se folosesc în procesul decizional și presupun predarea lor de către emitent și recepționarea de către beneficiar. Ele trebuie sa parcurgă mai multe etape cum ar fi: culegerea informațiilor, clasarea informațiilor sau arhivarea lor.

Circuitul informațional se referă la traseul pe care trebuie să-l parcurgă o informație de la emitent la beneficiar.

Fluxul informațional se referă la etapele pe care trebuie să le parcurgă informațiile de la culegere până la valorificare.

Din punct de vedere organizatoric sistemul informațional economic se compune din unități organizate într-un flux care corespunde succesiunii operațiilor la care sunt supuse datele și informațiile ce se vehiculează în sistem, și anume:

Sistemul infomațional, din punct de vedere organizatoric este compus din „unități organizate”, după cum se observă în figura nr. 2.3.

Figura nr. 2.3: Prezentare unităților organizate

Sursa: Date preluate conform Conf. Dr. Felicia C. Macarie, „Contabilitate”, Ed. Aletheia, Bistrița, 2004, p. 92.

Cu ajutorul tehnicii de calcul, informațiile sunt automat colectate, transmise, arhivate și prelucrate eficient ceea ce ajută în cadrul procesului decizional, într-o entitate patrimonială..

2.3 Soluțiile informaționale utilizate

La Penitenciarul Colibași-Mioveni, forma de înregistrare în contabilitate a operațiunilor economico-financiare este Maestru-șah simplificat. În cadrul de înregistrare Maestru-șah (simplificat), principalele registre și formulare sunt:

Registrul Jurnal;

Registrul Cartea-Mare;
Registrul Inventar;

Balanța de verificare.

Contabilitatea sintetică se ține pe ,,Fișe de cont pentru operații diverse” deschise pentru fiecare cont sintetic în Cartea-Mare (șah), iar contabilitatea analitică se ține pe fișele menționate la forma de înregistrare Maestru-șah. Evidența analitică a creditelor bugetare, plăților de casă și a cheltuielilor efective se ține cu ajutorul ,,Fișei pentru operații bugetare”.

Registrele de contabilitate se pot prezenta sub formă de registru, foi volante sau listări informatice, penitenciarul Colibași utilizând listările informatice cu ajutorul programului AvanCont. De asemenea, pentru salarizarea unitară a personalului plătit din fonduri publice se folosește programul Fox Pro.

2.3.1 Modelarea fizică și Modelarea conceptuală a datelor pentru contabilitatea financiară

„Modelul conceptual al datelor (MCD) urmărește să deservească drept suport de comunicare între utilizatori și informaticieni, el exprimă modul în care datele din sistemul informatic reflectă realitatea”.

Privind contabilitatea financiară, modelul conceptual al datelor pentru un sistem informatic, este o soluție teoretică de reprezentare a tipurilor de date, cu ajutorul unor noțiuni cum ar fi:

tip de entitate;

tip de asociere (tip de relație);

tip de atribut (proprietate);

cardinalitate;

roluri.

Metodelel deductive sau inductive ajută la realizarea modelului conceptual.

„Metoda deductivă permite ca, pe baza elementelor conceptuale ale sistemului informatic „intrări” sau „ieșiri” sau prin intermediul modelului conceptual al prelucrărilor (MCP), să se poată deduce structura modelului conceptual al datelor.

Metoda inductivă permite ca, pe baza unei analize detaliate și complete a intrărilor a unui formalism prezentat și acceptat, se va construi modelul conceptual al datelor”.

Procesele si fenomenele economice sunt înscrise la locul și în timpul producerii lor, în documentele primare. „Din acest punct de vedere, conținutul informațional al documentelor primare scoate în evidență anumite elemente comune, cum ar fi:

felul documentului evidențiază tipul documentului justificativ pe baza căruia se va face înregistrarea în contabilitate (ex. factură fiscală, bon de consum, notă contabilă etc.);

numărul documentului redă elementul de identificare și verificare;

data documentului reflectă data calendaristică înscrisă în documentul justificativ;

suma se referă la valoarea în lei a fenomenului sau procesului economic consemnat în document;

explicația operației este o descriere de tip text a operației contabile;

simbolul contului reprezintă codul asociat fiecărui element patrimonial pe care Ministerul Finanțelor 1-a realizat prin Planul de Conturi General;

denumirea contului face referire concretă la denumirea efectivă a fiecărui element patrimonial în parte;

tipul contului (funcția contului) are în vedere caracterul elementului patrimonial respectiv: dacă este o sursă de finanțare (conturi de pasiv) sau o utilizare a acestor surse (conturi de activ) sau conturi care nu pot fi încadrate în cele două categorii (conturi bifuncționale);

sold inițial Debitor este specific conturilor de activ și se referă la valoarea de plecare de la un moment dat;

sold inițial Creditor este specific conturilor de pasiv și se referă la valoarea de plecare de la un moment dat;

rulaj precedent Debitor redă totalul sumelor debitoare ale conturilor din perioada precedentă (lună, trimestru);

rulaj precedent Creditor redă totalul sumelor creditoare ale conturilor din perioada precedentă (lună, trimestru);

cod valută este un simbol atribuit valutelor utilizate (ex. pentru lei = ROL, pentru dolar = $, pentru marca germană = DM etc.)”.

Un nume este atribuit fiecărei entitate construită, prin care este recunoscut în baza de date. Deseori se recurge la coduri, pentru simplitate, care sunt „modelate” special, pentru a răspunde cerințelor de identificare

Exemplu: pentru CONT, se va consemna atributul Simbol cont, iar pentru DOCUMENT se vor consemna atributele FelDocument și NumărDocument, ceea ce înseamnă că entitatea DOCUMENT va fi ordonat după „Felul documentului",iar apoi după „Numărul documentului".

Asocierea face legătura între două sau mai multe entități.

Modelarea fizică a datelor presupune urmărirea următorilor pași:

„Alegerea sistemului electronic de calcul (SEC) prin care se va realiza contabilitatea financiară, cu ajutorul sistemului informatic.

Alegerea Soluției de Gestiune a Bazei de Date (SGBD)” .

Baza de date pentru sistemul informatic cu privire la contabilitatea financiară are la bază crearea tabelelor pentru fiecare entitate.

Tabelele se vor lega cu ajutorul cheilor primare și al celor externe.

Pentru stabilirea interfeței între tabelele bazelor de date si utilizatorii se crează formularele, cu ajutorul cărora se realizează actualizarea bazei de date prin adăugare, ștergere și modificare.

Rapoartele folosesc interogări pentru a înregistra, deoarece ele se folosesc de date din mai multe tabele sau de interogri pentru rezultate de sinteză.

Rapoartele se folosesc pentru operațiile de ieșire. Prin rapoarte nu se pot modifica datele.

2.3.2 Criterii de alegere a produselor program și evaluarea performanțelor acestora

 Atunci când alegem un produs program luăm în considerare cerințe ca:

Configurația sistemului de calcul necesare introducerii produsului program direct proporțional cu configurația sistemului la care are acces utilizatorul;

Costurile implicate pentru a nu afecta negativ eficiența economică a unității beneficiare;

Produsul program trebuie să poată încorpora componente noi pentru prelucrare datelor și/sau să se poată adapta tehnicilor de prelucrare a datelor care să corespundă dezvoltării ulterioare a configurației sistemului de calcul;

Ceea ce implică algoritmul folosit în concretizarea produsului program asupra preciziei, vitezei, consumului de resurse.

Alegerea unui produs program se poate realiza în funcție de criteriile enumerate mai sus, care sunt strict legate de calitate produsului final.

Gestionarea produselor program are rolul de a selecta după performanță și de a generaliza implementarea lor. De asemenea cererile formulate de beneficiari au ca efect perfecționarea produselor program și realizarea unor noi produse pentru inovarea pieței actuale.

Un beneficiar, pentru a evalua performațele și limitele unui produs program presupune, în principal examinarea configurației, memoria internă, precizia pe care o au rezultatele în raport cu durata rezolvării problemelor.

Prezentarea soluțiilor în domeniul financiar-contabil

În cadrul acestui subcapitol voi prezenta drepturile de transport ale funcționarilor publici cu statut special din cadrul Administrației Naționale a Penitenciarelor și softul realizat pentru sprijinul biroului economico-financiar al entitații patrimoniale.

Părțile principale ale softului și modul de „comunicare” sunt prezentate în figura nr. 2.4.

Figura nr. 2.4: Modul de „comunicare” al soft-ului

Sursa: Cercetare proprie

Aplicația Desktop – permite utilizatorului să vizualizeze dacă perosoana aflată pe traseu a ajuns sau nu la destinație;

Baza de date – memorează toate persoanele aflate pe un traseu, de asemenea și istoricul acestora legate de deplasările efectuate;

Web serverul –face legătura între aplicatia Android și baza de date (API);

Aplicația Android – aplicația persoanei aflate pe traseu, care permite utilizatorului aplicației desktop să urmăreasca dacă persoana a ajuns sau nu la destinație.

2.4.1 Drepturile funcționarilor publici cu statut special din cadrul A.N.P. privind decontatrea transportului

Conform Hotărârii nr. 1398/2007 privind drepturile de transport ale funcționarilor publici cu statut special din sistemul administrației penitenciare, funcționarii publici cu statut special din sistemul administrației penitenciare, denumiți în continuare funcționari publici, au dreptul la decontarea cheltuielilor de transport în următoarele cazuri:

a) „deplasare în interes de serviciu;

b) delegare și detașare;

c)  transferul cu acordul lor scris în unități situate în alte localități decât cele în care își au domiciliul sau reședința;

d) deplasarea pentru efectuarea concediului de odihnă, o singură dată pe an;

e) în alte situații expres prevăzute în prezenta hotărâre sau în alte dispoziții legale.”

„În cazul deplasărilor efectuate în situațiile prevăzute la aliniatul anterior, funcționarii publici pot călători cu mijloace de transport aeriene, feroviare, auto sau navale. De asemenea, funcționarii publici pot folosi și mijloacele de transport ale unităților din sistemul administrației penitenciare.

În cazul deplasării cu autoturismul, funcționarilor publici li se decontează contravaloarea a 7,5 litri carburant la 100 km parcurși pe distanța cea mai scurtă. Pentru decontare este necesară prezentarea bonului de carburant și a certificatului de înmatriculare al autoturismului cu care s-a efectuat deplasarea.”

„ În cazul în care se deplasează cu mijloace de transport feroviare, funcționarii publici au dreptul să călătorească în următoarele condiții:

a) ofițerii, la clasa I, pe orice distanță;

b) agenții, la clasa I, pe distanțe mai mari de 300 km și la clasa a II-a, pe distanțe de până la 300 km inclusiv;

c) elevii instituțiilor de învățământ pentru formarea funcționarilor publici, la clasa a II-a pe orice distanță.”

„Costul suplimentelor de viteză și al tichetelor de rezervare a locurilor se decontează după cum urmează:

a) funcționarilor publici, la orice fel de tren, indiferent de distanță;

b) elevilor instituțiilor de învățământ pentru formarea funcționarilor publici, la trenuri accelerate și rapide, pe orice distanță, când se deplasează în interes de serviciu.”

Nu se decontează drept cheltuieli de transport următoarele:

a) „taxele percepute suplimentar pentru bagajele personale;

b) cheltuielile de transport al persoanei care are asigurat, de către unitate, transportul gratuit în interesul serviciului;

c) cheltuielile de transport pentru înapoiere, în cazul în care persoana, după terminarea delegării sau detașării, a rămas să își efectueze concediul de odihnă sau datorită altor cauze de ordin personal;

d) cheltuielile de transport, în cazul în care funcționarul public întrerupe timpul aferent delegării sau detașării din cauza unor interese personale.”

Funcționarii publici au dreptul la decontarea cheltuielilor de transport dus-întors și în situațiile în care se deplasează:

a) „la și de la locul de muncă, dacă distanța dintre localitatea unde își au domiciliul sau reședința și locul de muncă este cuprinsă între 0 și 70 km, în cazul în care locul de muncă se află într-o unitate izolată, astfel cum este stabilită prin ordin al ministrului justiției; distanța se calculează în funcție de traseul parcurs pe căile de transport rutier și reprezintă spațiul parcurs între limita de demarcație a localității de care aparține administrativ-teritorial unitatea în cauză și limita de demarcație a localității de domiciliu sau de reședință;

b) la și de la locul de muncă, atunci când se deplasează în zilele nelucrătoare, pentru a intra sau a ieși din serviciul de zi pe unitate ori pentru a executa, în afara orelor de program, controale inopinate sau alte acțiuni dispuse; acest drept se acordă în cazul în care unitatea este situată în afara perimetrului localității de domiciliu ori de reședință sau în afara distanțelor prevăzute la lit. a);

c) în alte localități, pentru a participa la instructaje, cursuri de perfecționare, specializare, convocări, stagii de practică și alte forme de pregătire;

d) pentru internare în spitale, sanatorii, centre de refacere a capacității de efort;

e) în timpul concediului de odihnă, pentru distanța dintre localitatea de domiciliu sau de reședință și localitatea din țară unde își petrec concediul de odihnă. Funcționarii publici care efectuează concediul de odihnă în străinătate beneficiază de decontarea cheltuielilor de transport între localitatea de domiciliu sau de reședință și punctul de trecere a frontierei;

f) în cazul transferului cu acordul lor scris în unități situate în alte localități decât cele în care își au domiciliul sau reședința.”

„Directorii de unități și adjuncții acestora, directorii de direcții și șefii de servicii, indiferent de gradul profesional, sunt scutiți de a obține viza pe ordinul de serviciu, în vederea acordării drepturilor cuvenite potrivit dispozițiilor legale pe timpul delegării sau detașării în interes de serviciu.

Pentru funcționarii publici delegați, cheltuielile de delegare se asigură de unitatea în care este delegat. În asemenea cazuri, unitatea din care face parte persoana poate avansa acesteia, la cererea sa, suma necesară pentru acoperirea cheltuielilor de delegare, iar aceasta are obligația ca, la înapoiere, să restituie avansul primit unității al cărei salariat este.”

„Mijloacele de transport aparținând unităților din sistemul administrației penitenciare pot fi utilizate de către funcționarii publici, cu asigurarea de către unitate a cheltuielilor de transport, în următoarele situații:

a) „pentru îndeplinirea sarcinilor sau altor atribuții de serviciu;

b) la unitățile sanitare, în cazuri de urgențe medico-chirurgicale ori în scopul internării în unități sanitare, pentru afecțiuni care impun să fie transportați cu automobile, în cazul în care asemenea transporturi nu pot fi efectuate în timp util de către unitățile sanitare;

c) pentru transportul mobilierului în situațiile prevăzute în prezenta hotărâre;

d) la și de la locul de muncă, potrivit programului de activitate, pentru funcționarii publici care funcționează în unități situate la distanțe cuprinse între 5 și 70 km față de localitatea unde domiciliază sau își au reședința;

e) pentru transportul de la locul decesului până la locul unde urmează să fie înhumați sau incinerați, precum și pentru transportul membrilor familiei (soț sau soție și copii aflați în întreținere) decedați ai funcționarului public, până la locul unde urmează să fie înhumați sau incinerați.”

Calculul contravalorii cheltuielilor de transport, se va efectua:

pe baza bonurilor anexate, care dovedescrealitatea călătoriei solicitate;

în limita consumului de 7,51/100 Km;

la prețul /litru trecut pe bonul de carburant;

pe distanța calculată;

În cazul deplasărilor efectuate cu mijloace de transport aeriene, feroviare, sau navale suma decontată, se face pe baza biletului primit la casa de bilete.

„Decontarea cheltuielilor pentru transportul efectuat cu mijloace de transport în comun la și de la aeroport, gară, autogară sau port până la locul de cazare ori, după caz, până la locul unde este delegat sau detașat; cheltuielile de transport cu mijloace de transport în comun pe distanța dintre locul de cazare și locul delegării sau detașării; taxele pentru trecerea podurilor; taxele de traversare cu bacul; taxele de aeroport, gară, autogară sau port; ” se face pe baza bonului fiscal, cu ștampila oficială.

Decontarea cheltuielilor de transport se face pe baza documentelor justificative, cum ar fi: bonul de carburant, abonamentele, legitimațiile de călătorie, biletele de tren, biletele de avion, tichetele, documente care fac dovada achitării taxelor prevăzute la art. 3 alin. (5) lit. c)-f) din Hotărârea Guvernului nr. 1.398/2007, cu modificările și completările ulterioare, atașate ordinului de serviciu, vizat de sosire și de plecare în localitatea în care s-a efectuat deplasarea.

Documentele justificative trebuie să aibă înscrise prețul și data eliberării.

Conducătorul autoturismului are obligația de a prezenta copia certificatului de înmatriculare, certificată ca fiind conformă cu originalul, și bonul de carburant.

Bonul fiscal de carburant poate fi emis anterior plecării, în timpul efectuării misiunii sau ulterior sosirii din misiune.

Decontarea cheltuielilor de transport se face numai pentru conducătorul autoturismului, chiar dacă se deplasează mai multe persoane cu aceeași mașină.

Dacă în timpul deplasării apar modificări de rută, la înapoierea în unitate acestea se justifică în scris și se aprobă de directorul unității.

Pentru situațiile reglementate de art. 6 alin. (1) lit. a)-c) din Hotărârea Guvernului nr. 1.398/2007, cu modificările și completările ulterioare, cererea de decontare se întocmește lunar până pe data de 5 a lunii următoare și va fi însoțită obligatoriu de următoarele documente:

a) „copia cărții sau a buletinului de identitate;

b) abonamente, legitimații de călătorie, bilete de tren, tichete de transport, dovada achitării taxelor prevăzute la art. 3 alin. (5) lit. c)-f) din Hotărârea Guvernului nr. 1.398/2007, cu modificările și completările ulterioare, valabile pentru perioada pentru care se solicită decontarea;

c) copia certificatului de înmatriculare al autoturismului utilizat, certificată ca fiind conformă cu originalul;

d) bonul fiscal de carburant.”

„Pentru deplasarea în concediul de odihnă în alte localități din țară decât cea de domiciliu sau reședință, funcționarul public cu statut special beneficiază de decontarea cheltuielilor de transport dus-întors, în baza ordinului de serviciu și a documentelor justificative:

a) copia certificatului de înmatriculare al autoturismului utilizat, certificată ca fiind conformă cu originalul;

b) bonul fiscal de carburant.”

În situația în care efectuează concediul de odihnă fracționat, funcționarul public cu statut special beneficiază de decontarea cheltuielilor de transport o singură dată pe an.

2.4.2 Descrierea aplicația desktop

Aplicația Desktop a soft-ului poartă numele de „Admin Tracker” .

Principalele avantaje aplicației „Admin Tracker” sunt prezentate în figura nr. 2.5.

Figura nr. 2.5: Avantajele folosirii aplicației

Sursa: Cercetare proprie

De asemea, un alt avantaj al programului este faptul că doar persoana cu statutul de administrator îl pot utiliza. Cu ajutorul programului, persoanele selectate cu dreptul de a fi administrator pot:

Figura nr. 2.6: Operații Admin Tracker

Sursa: Cercetare proprie

Pentru realizarea acestei aplicații am folosit programul Visual Studio. Acest program are incluse un set de instrumente pentru generarea de aplicații desktop, servicii web și aplicații mobile. Dintre limbajele de programare acceptate de program se numără: Visual C++, Visual Basic, Visual J# și

Visual C#. Toate acestea permit partajarea instrumentelor și facilitează crearea de soluții cu ajutorul mai multor limbaje de programare.

Limbajul folosit pentru crearea aplicației desktop este C#. Acest limbaj este unul derivat din C++, conceput pentru crearea aplicațiilor care ruleaz pe Framework-ul .NET.

2.4.3 Modul de utilizare al aplicației „Admin Tracker”

În momentul deschiderii aplicației, pe desktop-ul utilizatorului va apărea o fereastră în care acesta trebuie să completeze cu e-mail-ul și parola personală cele două câmpuri (figura nr. 2.7).

Figura nr. 2.7: Login

Sursa: Cercetare proprie

În câmpul „E-mail ANP”, utilizatorul trebuie să completeze cu e-mail-ul dat de compartimentul IT al penitenciarului, acest e-mail fiind unicat. În câmpul „Parola” , utilizatorul trebuie sa completeze cu parola personală, salvată în baza de date.

În cazul în care datele nu au fost completate corect, pe ecran se va afișa o eroare(figura nr 2.8), în care utilizatorul este înștiințat că a completat greșit unul dintre cele două câmpuri.

Figura nr. 2.8: Eroare completare greșit

Sursa: Cercetare proprie

Dacă utilizatorul observă aceast eroare, trebuie sa dea click pe butonul „OK”, după care să completeze din nou cele două câmpuri.

De asemenea aceeași eroare apare și în momentul în care încearcă a se loga, o persoană fără statutul de administrator. Decât persoanele cu acest statut au dreptul de a se loga, implicit doar aceștia au dreptul de a utiliza programul.

Important la acest pas este faptul că utilizatorul trebuie să fie sigur că e-mail-ul și parola sa, sunt regăsite în baza date, în cazul în care nu se regăsesc pe ecran va apărea aceeași eroare.

Codul C# folosit pentru realizarea paginii de autentificare este prezentat în Anexa 1.

Dacă utilizatorul s-a logat cu succes, se va deschide automat următoarea fereastră, și anume „Admin Tracker”(figura nr. 2.9).

Figura nr. 2.9: Fereastra principală „Admin Tracker”

Sursa: Cercetare proprie

În cadrul acestei ferestre, utilizatorul trebuie să aleagă între cele două părți principale ale acestei aplicații: utilizatori sau trasee.

Dacă se dă click pe „UTILIZATORI” , persoana autentificată va fi trimisa spre clasa utilizatorilor, unde poate adăuga, edita sau șterge utilizatori.

Dacă se dă click pe „TRASEE” , persoana autentificată va fi trimisă spre clasa trasee, unde poate adăuga, edita sau șterge traseele efectuate de utilizatori.

Clasa „UTILIZATORI” este prezentată în figura nr. 2.10.

Figura nr. 2.10: Tabelul Utilizatori

Sursa: Cercetare proprie

În acest tabel sunt afișate toate persoanele înregistrate în baza de date a programului, ordonate alfabetic după nume. Tabelul este format din cinci coloane și anume:

Coloana numărul 1: este intitulată „E-Mail”. În această coloană sunt afișate toate e-mail-urile persoanelor înregistrate.

Coloana numărul 2: este intitulată „Nume”. În această coloană sunt afișate numele persoanelor înregistrate.

Coloana numărul 3: este intitulată „CNP”. În această coloană sunt afișate CNP-urile persoanelor înregistrate.

Coloana numărul 4: este intitulată „Stare”. În această coloană sunt afișate stările persoanelor înregistrate. Aceștia vor două stări: prima stare în care este afișat mesajul „NU E PLECAT”, ceea ce semnifică faptul că persoana respectivă nu este plecată din penitenciar, în concediu de odihnă sau misiune, iar cea de-a doua stare va afișa mesajul „E PLECAT”, ceea ce înseamnă faptul că persoana respectivă este plecată din penitenciar, în concediu de odihnă sau misiune.

Coloana numărul 5: este intitulată „Admin”. În această coloană sunt afișate mesajele „DA” sau „NU”, ceea se semnifică faptul că au sau nu statutul de administrator al programului. Numai persoanele cu acest statut se poate conecta prin e-mail și parolă la aplicația desktop.

În partea de jos a acestei ferestre sunt afișate trei butoane și anume: butonul „Adaugare”, butonul „Editare” și butonul „Stergere”.

În momentul în care utilizatorul a dat click pe butonul „Adaugare”, pe desktop se va deschide o nouă fereastră, în care acesta va introduce datele noului utilizator pe care dorește să îl adauge.

Codul C# folosit pentru realizarea clasei „utilizatori” este prezentat în Anexa 2.

Butonul „Adaugare” este prezentat în figura nr 2.11.

Figura nr. 2.11: Butonul „Adaugare”

Sursa: Cercetare proprie

Această clasă este formată din 4 câmpuri în care utilizatorul trebuie sa completeze datele și un câmp de tipul „check-box” , pe care persoana care introduce noul utilizator trebuie să il bifeze, în cazul în care persoana o să aibe statutul de administrator, sau o să-l lase nebifat, în cazul în care nu va avea acest statut.

Câmpul numărul 1: este intitulat „E-Mail ANP”. În aceast câmp, persoana autentificată, trebuie să completeze cu e-mail-ul unic al persoanei care vrea să o adauge în baza de date.

Câmpul numărul 2: este intitulat „Parola”. În aceast câmp, persoana autentificată, trebuie să completeze cu parola implicită, pe care utilizatorul, ulterior poate să o modifice.

Câmpul numărul 3: este intitulat „Nume”. În aceast câmp, persoana autentificată, trebuie să completeze cu numele persoanei care vrea să o adauge în baza de date.

Câmpul numărul 4: este intitulat „CNP”. În aceast câmp, persoana autentificată, trebuie să completeze cu CNP-ul persoanei care vrea să o adauge în baza de date.

Câmpul numărul 5: este unul de tip „check-box”, intitulat „Esti administraor?”. În aceast câmp, persoana autentificată, trebuie să bifeze dacă perosana pe care dorește să o introducă este administrator sau nu. Trebuie de asemena puse în balanță dacă persoana nou introdusă o sa influnțeze sau nu funcționalitatea programului, prin introducerea unor date fictive, sau modificarea acestora, favorizând astfel producerea de fraude.

După completarea acestor date utilizatorul trebuie să dea click pe butonul „Adauga”, iar persoana nou adăugată este introdusă automat în baza de date a programului.

Codul C# folosit pentru realizarea ferestrei pentru adaugarea de noi utilizatori este prezentat în Anexa 3.

Butonul „Editare” este prezentat în figura nr. 2.12.

Figura nr. 2.12: Butonul „Editare”

Sursa: Cercetare proprie

Dacă utilizatorul apasă click pe acest buton, pe ecran se va deschide o fereastră nouă în care sunt prezente aceleași câmpuri ca și la butonul „Adaugare”, diferența dintre cele două fiind faptul că aceste câmpuri sunt deja completate cu datele salvate în baza de date ale utilizatorului.

Persoana autentificată trebuie sa dea click pe utilizatorul ale cărei date dorește să le modifice, dacă nu face acest lucru și doar apasă butonul „Editare”, se vor deschide automat datele primei persoane înregistrare.

Dacă persoana autetificată dorește sa modifice anumite date, trebuie doar să dea click pe câmpul pe care dorește să il modifice, după care trebuie să apese butonul „Salvare modificari”, iar modificările se vor salva automat în baza de date.

Codul C# folosit pentru realizarea ferestrei pentru editarea utilizatorilor este prezentat în Anexa 4.

Butonul „Stergere” este folosit pentru a șterge utilizatori din lista din baza de date. Utilizatorul autentificat, trebuie să selecteze o persoană din lista utilizatorilor, după care să apese butonul „Stergere”, iar utilizatorul respectiv se va sterge din listă, implicit din baza de date.

Clasa „TRASEE” este prezentată în figura nr 2.13.

Figura nr. 2.13: Tabelul Trasee

Sursa: Cercetare proprie

În acest tabel sunt afișate toate traseele efectuate de utilizatori și înregistrate în baza de date a programului, ordonate în ordine cronologică după data la care utilizatorul a efectuat ultimul traseu.

Tabelul este format din cincisprezece coloane și anume:

Coloana numărul 1: este intitulată „Nume util”. În această coloană sunt afișate numele utilizatorilor care au efectuat sau efectuează trasee.

Coloana numărul 2: este intitulată „CNP”. În această coloană sunt afișate CNP-ul persoanelor înregistrate.

Coloana numărul 3: este intitulată „Nr. inmat”. În această coloană sunt afișate numerele de înmatriculare ale autovehiculelor ce aparțineau, sau nu, persoanelor care au executat traseele.

Coloana numărul 4: este intitulată „Tip”. În această coloană sunt afișate tipurile de traseu pe care utilizatorul le-a efectuat. Se pot alege dintre două opțiuni și anume: concediu de odihnă sau misiune.

Coloana numărul 6: este intitulată „Destinatie”. În această coloană sunt afișate localitățile de destinație ale utilizatrilor.

Coloana numărul 7: este intitulată „Destin. sosire”. În această coloană sunt afișate localitățile de plecare, implicit de întoarcere ale utilizatrilor.

Coloana numărul 8: este intitulată „Nr. km. dus”. În această coloană sunt afișați număul de kilometrii pe care utilizatorul autentificat le completează în momentul introducerii unui nou traseu, kilometrii pe care îi calculează cu ajutorul site-ului http://www.viamichelin.com/.

Coloana numărul 9: este intitulată „Nr. km. intors”. În această coloană sunt afișați număul de kilometrii pe care utilizatorul autentificat le completează în momentul finalizării unui traseu, kilometrii pe care îi calculează cu ajutorul site-ului http://www.viamichelin.com/.

Coloana numărul 10: este intitulată „Data plecare”. În această coloană sunt afișate datele calendaristice în care utilizatorul a plecat din penitenciar. Această coloană se completează automat, în momentul în care utilizatorul autentificat introduce un nou traseu.

Coloana numărul 11: este intitulată „Data sosire”. În această coloană sunt afișate datele calendaristice în care utilizatorul a revenit în penitenciar. Această coloană se completează automat, în momentul în care utilizatorul autentificat finalizează un traseu.

Coloana numărul 12: este intitulată „Carburant”. În această coloană sunt afișate tipurile de carburant pe care utilizatorul plecat pe traseu le-a folosit. Se pot alege între trei tipuri și anume: benzină, motorină și gpl. Această coloană ajuta utilizatorul autentificat pentru a nota prețul pe litru al carburantului folosit de persoana aflată pe traseu, lucru care conduce la calcului sumei pentru decontare.

Coloana numărul 13: este intitulată „Pret. Carb.”. În această coloană sunt afișate prețurile pe litru al carburantului folosit de perosoanele aflate pe traseu.

Coloana numărul 14: este intitulată „Sosit dest.”. În această coloană este afișat dacă persoana plecată pe traseu a ajuns sau nu la destinație.

Coloana numărul 15: este intitulată „Sosit domic.”. În această coloană este afișat dacă persoana plecată pe traseu a ajuns sau nu la domiciliu.

Coloana numărul 16: este intitulată „Total.”. În această coloană este sunt afișate sumele decontate ale persoanelor înregistrate.

În partea de jos a acestei ferestre sunt afișate patru butoane și anume: butonul „Adaugare”, butonul „Editare”, butonul „Stergere” și butonul „Finalizare”.

Codul C# folosit pentru realizarea ferestrei pentru afișarea listei cu trasee este prezentat în Anexa 5.

În momentul în care utilizatorul a dat click pe butonul „Adaugare”, pe desktop se va deschide o nouă fereastră, în care acesta va introduce datele noului utilizator pe care dorește să îl adauge.

Fereastra „Adaugare” este prezentat în figura nr 2.14.

Figura nr. 2.14:Adăugarea unui nou traseu

Sursa: Cercetare proprie

Aceasă fereastră este formată din șase câmpuri de completare (trei de tip „drop-down”) și doua plugin-uri cu harta României pentru a alege locul de destinație și locul de sosire al persoanei care urmeaza sa plece pe traseu.

Câmpul numărul 1: este intitulat „Tip traseu” și este de tip „drop-down”, ceea ce înseamnă că utilizatorul autentificat trebuie sa aleagă unu tip de traseu dintre cele implicite și anume: „Concediu de odhina” și „Misiune”.

Câmpul numărul 2: este intitulat „Utilizator” și este de tip „drop-down”, ceea ce înseamnă că utilizatorul autentificat trebuie sa aleagă unul dintre persoanele existente în baza de date.

Câmpul numărul 3: este intitulată „Nr.inmatriculare”. În aceast câmp, persoana autentificată, trebuie să completeze cu numărul de înmatriculare al autovehiculului cu care persoana efectuează traseul.

Câmpul numărul 4: este intitulată „Carburant” și este de tip „drop-down”, ceea ce înseamnă că utilizatorul autentificat trebuie sa aleagă unu tip de traseu dintre cele implicite și anume: „Benzina”, „Motorina” și „GPL”.

Câmpul numărul 5: este intitulată „Nume dest.”. În aceast câmp, persoana autentificată, trebuie să completeze cu numele localității unde persoana o să efectueaze traseul.

Câmpul numărul 6: este intitulată „Nume sosire”. În aceast câmp, persoana autentificată, trebuie să completeze cu numele localității unde trebuie să se întoarcă persoana plecată.

Codul C# folosit pentru realizarea ferestrei pentru adaugarea de noi trasee este prezentat în Anexa 6.

După completare, tabelul „Lista Trasee” trebuie să afișeze precum în figura nr. 2.15.

Figura nr. 2.15: Lista cu traseele după introducerea unui nou traseu

Sursa: Cercetare proprie

Se observă faptul că următoarele coloane: „Nr. Km. dus”, „Nr. Km. intors”, „Pret carb.” și „Total plata” nu au fost completate deoarece ele trebuiesc completate în momentul în care persoana plecată se întoarce, pentru a verifica dacă a ajuns sau nu la destinație. De asemenea prețul carburantului se completează în momentul întoarcerii deoarece trebuie sa dovedească prin bonul de carburant, prețul litrului de carburant. Se mai observ faptul că cele două coloane „Sosit dest.” și „Sosit domic.” sunt completate cu răspuns negativ, deoarece persoana plecată nu a ajuns nici la detinație, nici nu s-a întors la domiciliu.

Pentru a introduce aceste date și a finaliza traseul, utilizatorul autentificat trebuie să dea click pe butonul „Finalizare”. După această acțiune, pe ecran va apărea urmatoarea fereastră (figura nr. 2.16).

Figura nr. 2.16: Finalizare traseu

Sursa: Cercetare proprie

În această fereastră, se află un link rapid ce face legătura cu site-ul http://www.viamichelin.com/ (site-ul omologat de Ministerul Justiției pentru a afla cea mai scurtă distanță dintre două localități), de unde utilizatorul caută și completeaza numărul de kilometrii dus-întors dintre cele două localități și un câmp denumit „Pret benzina”, unde trebuie completat prețul/litru al benzinei. În urma completării, tabelul cu trasee trebuie să aibe toate câmpurile completate, iar totalul trebuie sa fie calculat. Utilizatorul trebuind doar să-l scrie în „Statul de plată”.

Codul C# folosit pentru realizarea ferestrei pentru finalizarea unui traseu este prezentat în Anexa 7.

Butonul „Editare” este prezentat în figura nr. 2.17. Cu ajutorul acestei clase, utilizatorul declarat administrator, care folosește aplicația desktop, poate edita un traseu deja introdus în baza de date.

Am realizat acest buton pentru a permite editarea traseelor de tip misiune, în care persoana aflată pe o rută, primește, în cadrul aceleași misiuni, o altă rută de efectuat, pentru a îndeplini misiunea principală.

De asemea acest buton mai poate fi folosit în cazul în care o persoana are mai multe misiuni de efectuat într-un cadru limitat de timp și este nevoie să se deplaseze dintr-o locație în alta după terminarea unei misiuni.

Figura nr. 2.17: Editarea unui traseu

Sursa: Cercetare proprie

Dacă utilizatorul apasă click pe acest buton, pe ecran se va deschide o fereastră nouă în care sunt prezente aceleași câmpuri ca și la butonul „Adaugare”, diferența dintre cele două fiind faptul că aceste câmpuri sunt deja completate cu datele salvate în baza de date ale utilizatorului.

Persoana autentificată trebuie sa dea click pe utilizatorul ale cărei date dorește să le modifice, dacă nu face acest lucru și doar apasă butonul „Editare”, se vor deschide automat datele primei persoane înregistrare.

Dacă persoana autetificată dorește sa modifice anumite date, trebuie doar să dea click pe câmpul pe care dorește să il modifice, după care trebuie să apese butonul „Editare”, iar modificările se vor salva automat în baza de date.

Codul C# folosit pentru realizarea ferestrei pentru editarea unui traseu este prezentat în Anexa 8.

Butonul „Stergere” este folosit pentru a șterge utilizatori din lista din baza de date. Utilizatorul autentificat, trebuie să selecteze o persoană din lista utilizatorilor, după care să apese butonul „Stergere”, iar utilizatorul respectiv se va sterge din listă, implicit din baza de date.

Dacă utilizatorul dorește să observe ruta pe care persoana a făcut traseul trebuie doar sa dea dublu-click pe traseul dorit și o noua fereastră se va deschi cu ruta pe care acesta a mers(figura nr. 2.18).

Figura nr. 2.18: Ruta aleasă de persoana ce a efectuat traseul

Sursa: Cercetare proprie

Se observă faptul ca ruta pe care persoana s-a deplasat este colorată cu albastru.

De asemenea, în momentul în care persoana aflată pe traseu, s-a apropiat la o distanță de 10 km față de localitatea menționată pe ordinul de serviciu, în tabelul cu trasee se va completa automat cu mențiunea „DA” în coloana „Sosit dest.”, ceea ce demstrează faptul că persoana aflată pe traseu a ajuns la destinția propusă, iar utilizatorul autentificat numai este nevoit să se uite pe ruta pe care acesta s-a deplasat.

Codul C# folosit pentru realizarea ferestrei afișarea locației curente este prezentat în Anexa 9.

2.4.4 Descrierea bazei de date

Baza de date a fost efectuată în programul „HeidiSQL”. Acest program este un client gratuit, sau interfață pentru MySQL. HeidiSQL este dezvoltat de programator german Ansgar Becker. Pentru a gestiona baze de date cu HeidiSQL, utilizatorii trebuie să se conecteze la un server local sau de la distanță la MySQL, creând o sesiune. În cadrul acestei sesiuni utilizatorii pot administra baze de date MySQL prin concetarea la serverul MySQL, apoi să se deconecteze de la server când au terminat. În acest program se pot face operațiunile de bază de date, cele mai comune și avansate, de masă și de înregistrare a datelor.

Baza de date este formată din 3 tabele (figura nr. 2.19) și anume: tabelul „locatie”, tabelul „traseu” și tabelul „utilizator”.

Figura nr. 2.19: Tabelel bazei de date

Sursa: Cercetare proprie

În cadrul tabelului „locatie” sunt memorate toate locațiile pe unde trece o persoană pe timpul desfășurării unui traseu. Acest tabel este alcătuit din 5 coloane, ce ne ajută la determinarea traseului urmat de oricare persoană din cadrul entității patrimoniale. Cele 5 coloane (figura nr. 2.20) sunt: coloana „id”, coloana „traseu_id”, coloana „lat”, coloana „lng” și coloana „timp”.

Figura nr. 2.20: Coloanele tabelului „locație”

Sursa: Cercetare proprie

Coloana „id”, este de tipul „INT”(integer) și memorează id-ul fiecărei locații al unei persoane. Acest id este unic, este cheia primară a acestui tabel si se auto-implementează, odată cu adăugarea unui noi traseu de către administrator. El poate să aibe o lungine de maxim 11 cifre.

Coloana „traseu_id”, este de tipul „INT”(integer) și memorează tipul traseului pe care persoana respectivă l-a efectuat sau îl efectuează. Este cheie secundară a acestui tabel. De asemeana poate conține maxim 11 cifre.

Coloana „lat”(latitudine), memorează latitudinea locației unei persoane aflate pe traseu. Este de tipul „double” ceea ce înseamnă faptul că memorează un număr mare cu zeciamale (exemplu: 34.879430988).

Coloana „lng”(longitudine) este identică cu coloana anterioară diferența este că memorează longitudinea nu latitudinea.

Coloana „timp” este de tipul „TIMESTAMP” ceea ce înseamnă că returnează automat timpul curent al unui eveniment introdus. Dar este predefinit ca fiind „CURRENT_TIMESTAMP” ceea ce semnifică faptul că va memora timpul curent când o persoană pleacă pe un traseu.

Codul CREATE pentru realizarea tabelului „locatie” este prezentat în Anexa 10.

În cadrul tabelului „traseu” sunt memorate toate traseele efectuate de persoanele ce își desfășoară activitatea în entitatea patrimonială. Acest tabel este alcătuir din 18 coloane, ce ne ajută la determinarea sumei ce urmează a fi decontată persoanei ce a terminat un traseu . Cele 18 coloane (figura nr. 3.17) sunt: coloana „id”, coloana „utilizator_id”, coloana „tip_traseu”, coloana „destinatie_nume”, coloana „destinatie_lat”, coloana „destinatie_lng”, coloana „sosire_nume”, coloana „sosire_lat”, coloana „sosire_lng”, coloana „nr_inmat_masina”, coloana „tip carburant”, coloana „km_dus”, coloana „km_intors”, coloana „data plecare”, coloana „data_sosire”, coloana „a_ajuns1”, coloana „a_ajuns2” și coloana „pret_carburant”

Figura nr. 2.21: Coloanele tabelului „traseu”

Sursa: Cercetare proprie

Coloana „id”, este de tipul „INT”(integer) și memorează id-ul fiecărui traseu al persoanei. Acest id este unic, este cheia primară a acestui tabel și se auto-implementează, odată cu adăugarea unei noi locații de către administrator. El poate să aibe o lungine de maxim 11 cifre.

Coloana „utilizator_id”, este de tipul „INT”(integer) și memorează id-ul utilizatorului care urmează sa efectueze sau a efectuat un traseu. Este cheie secundară a acestui tabel. De asemeana poate conține maxim 11 cifre.

Coloana „tip_traseu” memorează tipul traseului pe care o persoană urmează să-l efectueze. Este de tipul „VARCHAR” ceea ce înseamnă faptul că este un câmp cu lungime variabilă de la 0 la 65,535 caractere. Poate să aibe o lungime de maxim 50 de caractere. În cazul în care utilizatorul uită să completeze acest câmp, el este predefinit ca fiind „CONCEDIU DE ODIHNA”.

Coloana „destinatie_nume” memorează numele destinației unei persoane care urmează s efectueze un traseu. Este de tipul „VARCHAR” ceea ce înseamnă faptul că este un câmp cu lungime variabilă de la 0 la 65,535 caractere. Poate să aibe o lungime de maxim 300 de caractere.

Coloana „destinatie_lat” memorează latitudinea destinației unei localități unde persoana aflată pe traseu trebuie să ajungă. Este de tipul „DOUBLE” ceea ce înseamnă faptul că memorează un număr mare cu zeciamale (exemplu: 34.879430988).

Coloana „destinatie_lng” este identică cu coloana anterioară, diferența constă în faptul că memorează longitudinea.

Coloana „sosire_nume” memorează numele localității de sosire sau domiciuliu al unei persone ce se întoarce după un traseu. Este de tipul „VARCHAR” ceea ce înseamnă faptul că este un câmp cu lungime variabilă de la 0 la 65,535 caractere. Poate să aibe o lungime de maxim 300 de caractere.

Coloana „sosire_lat” memorează latitudinea localității de sosire sau domiciliu al persoanei aflate pe traseu. Este de tipul „DOUBLE” ceea ce înseamnă faptul că memorează un număr mare cu zeciamale (exemplu: 34.879430988).

Coloana „sosire_lng” este identică cu coloana anterioară, diferența este că memorează longitudinea.

Coloana „nr_inmat_masina” memorează numărul de înmatriculare al mașinii cu care persoana urmează să efetueze un traseu. Este de tipul „VARCHAR” ceea ce înseamnă faptul că este un câmp cu lungime variabilă de la 0 la 65,535 caractere. Poate să aibe o lungime de maxim 20 de caractere.

Coloana „tip_carburant”, este de tipul „INT”(integer) și memorează tipul de carburant pe care o persoană îl folosește pentru deplasarea pe traseu. Poate să aibe o lungime de maxim 11 caractere. Are bifat opțiunea „Permite NULL”, ceea ce semnifică faptul că poate să aibe și valoarea 0. Am bifat această opțiune deoarece în momentul în care o persoană pleacă pe traseu nu se cunoaște tipul de carburant pe care acesta îl va folosi, iar în dreptul el va apărea cifra „0”, până în momentul în care acesta se prezintă cu bonul de carburant, iar administratorul introduce datele și automat se va memora tipul de carburant folosit.

Coloana „km_dus”, este de tipul „INT”(integer) și memorează numărul de kilometrii pe care o persoană îl efectuează pentru a ajunge la destinașie. Poate să aibe o lungime de maxim 11 caractere. Are bifat opțiunea „Permite NULL”, ceea ce semnifică faptul că poate să aibe și valoarea 0. Am bifat această opțiune deoarece în momentul în care o persoană pleacă pe traseu nu se cunoaște numărul de kilometrii pe care persoana la efectuat, decât în moemntul în care acesta se întoarce, urmând a fi verificat. După verificare, dacă este valid urmează a fi completat de către administrator.

Coloana „km_intors” este asemănătoare cu coloana anterioară, singura diferență constă în faptul că memorează numărul de kilometrii la întoarcerea de la destinație.

Coloana „data_plecare” este de tipul „TIMESTAMP ceea ce înseamn că returnează automat timpul curent al unui eveniment introdus. Dar este predefinit ca fiind „CURRENT_TIMESTAMP” ceea ce semnifică faptul că va memora timpul curent când o persoană pleacă pe un traseu.

Coloana „data_sosire” este asemănătoare cu coloana anterioară, diferența constă în faptul că memorează timpul când persoana plecată s-a întors.

Coloana „a_ajuns1” este de tipul „TINYINT” ceea ce înseamnă că memorează mai puțin decât integer. Aceasă coloană memorează dacă persoana aflată pe traseu a ajuns la destinație.

Coloana „a_ajuns2” este asemănătoare cu coloana anterioară, diferența constă în faptul că memorează dacă persoana aflată pe traseu a ajuns la domiciliu.

Coloana „pret_carburant” este de tipul „DOUBLE” ceea ce înseamnă faptul că memorează un număr mare cu zeciamale (exemplu: 34.879430988). Are bifat opțiunea „Permite NULL”, ceea ce semnifică faptul că poate să aibe și valoarea 0. Am bifat această opțiune deoarece în momentul în care o persoană pleacă pe traseu nu se cunoaște prețul carburantului pe care acesta îl va folosi, iar în dreptul el va apărea cifra „0”, până în momentul în care acesta se prezintă cu bonul de carburant, iar administratorul introduce prețul litrului de carburant.

Codul CREATE pentru realizarea tabelului „traseu” este prezentat în Anexa 11.

În cadrul tabelului „utilizator” sunt memorate toate persoanele ce își desfășoară activitatea într-o entitate patrimonială. Acest tabel este alcătuit din 6 coloane. Cele 6 coloane (figura nr. 2.22) sunt: coloana „id”, coloana „email_anp”, coloana „parola”, coloana „nume”, coloana „cnp” și coloana „admin”.

Figura nr. 2.22: Coloanele tabelului „utiliazatori”

Sursa: Cercetare proprie

Coloana „id”, este de tipul „INT”(integer) și memorează id-ul fiecărei fiecărui utilizator. Acest id este unic, este cheia primară a acestui tabel si se auto-implementează, odată cu adăugarea unei noi persoane de către administrator. El poate să aibe o lungine de maxim 11 cifre.

Coloana „email_anp”, este de tipul „VARCHAR” ceea ce înseamnă faptul că este un câmp cu lungime variabilă de la 0 la 65,535 caractere și memorează email-lul personal al unei persoane. Este cheie secundară a acestui tabel. Poate conține maxim 300 caractere.

Coloana „parola” este asemănătoare cu coloana anterioară, diferența constă în faptul că memorează parola persoanală a persoanei.

Coloana „nume” este asemănătoare cu coloana anterioară, diferența constă în faptul că memorează numele personei.

Coloana „cnp” este asemănătoare cu coloana anterioară, diferența constă în faptul că memorează codul numeric personal al persoanei.

Coloana „admin” este de tipul „TINYINT” ceea ce înseamnă că memorează mai puțin decât integer. Aceasă coloană memorează dacă persoana este administrator sau nu.

Codul CREATE pentru realizarea tabelului „utilizator” este prezentat în Anexa 12.

În continuare voi afișa câteva exemple pentru fiecare tabel în parte.

Primul tabel și anume „locatie” este prezentat în figura nr. 2.23.

Figura nr. 2.23: Exemplu tabel „locatie”

Sursa: Cercetare proprie

Se poate observa coloana „id” este completată cu numere consecutive, ce semnifică diferite locații ale persoanei aflate pe traseu. Coloana „traseu_id” este completată cu cifra „2” ceea se indică faptul că persoana este plecată în concediu de odihnă.

În umătoarele două coloane sunt afișate coordonatele (latitudinea și longitudinea) în diferite momente ale traseului. În ultima coloană se observă dată și ora la care o persoană a plecat pe traseu și orele la care softul trimite informații la aplicația desktop despre locația persoanei.

Cel de-al doilea tabel „traseu” este prezentat în figura nr. 2.24.

Figura nr. 2.24: Exemplu tabel „traseu”

Sursa: Cercetare proprie

Se poate observa coloana „id” completata cu numere consecutive, în funcție de ultimul traseul efectuat. Coloana „traseu_id” este completată cu id-ul utilizatorului ce a efectuat traseul. Coloana „tip_traseu” este completat cu tipul de traseu pe care persoana l-a efectuat.

Coloana „destinatie_nume” este completată cu numele destinațiilor unde a plecat persoana respectivă. Următoarele două coloane sunt completate cu coordonatele (latitudinea și longitudinea) localității de destinație. Umătoarele două coloane sunt completate cu coordonatele localității de sosire sau domiciliul persoanei ce a efectuat traseul.

Coloana „nr_inmat_masina” este completat cu numărul de înmatriculare a mașinii cu care persoana a efectuat traseul. Coloana „tip_carburant” este completat cu cifra „0” ceea ce înseamnă că tipul carburantului folosit a fost benzină. Dacă această coloană era completată cu cifra 1, însemnă că persoana a folosit motorină, iar daca era completată cu cifra 2, însemnă că persoana a folosit GPL.

Coloana „km_dus” ne afișează numărul de kilometrii efectuați la plecarea spre destinație. Coloana „km_intors” ne indică numărul de kilometrii efectuți în drumul spre localitatea unde trebuie sa se întoarcă. Coloana „data_plecare” ne indică data și ora la care persoana începe să efectueze un traseu. Coloana „data_sosire” ne indică data și ora la care persoana termină de efectuat traseul.

Coloana „a_ajuns1” ne indică faptul ca persoana a ajuns la destinație cu succes. Coloana „a_ajuns2” ne indică faptul ca persoana a ajuns la localitatea de sosire, sau domiciliu cu succes. Ultima coloană, „pret_carburant” ne arată prețul pe litru al carburantului folosit, pentru efectuarea acelui traseu.

Cu ajutorul acestui tabel persoana însărcinată cu decontarea drepturilor de trasnport ale persoanlului poate obține rapid datele persoanle pentru a completa documete precum:

Registru de evidență a mijloacelor de transport proprietate personală; (Anexa 13)

Borderou centralizator distanțe între localități pentru decontarea trasportului la și de la locul de muncă; (Anexa 14)

Situația persoanelor care beneficiază de transportul la și de la locul de muncă; (Anexa 15)

Statul de plată decontare transport la și de la locul de muncă. (Anexa 16)

Cel de-al treilea tabel, „utilizator” este prezentat în figura nr. 2.25.

Figura nr. 2.25: Exemplu tabel „utilizator”

Sursa: Cercetare proprie

Se poate observa în prima coloana a acestui tabel, coloana „id”, id-ul atribuie fiecărei persoane ce își desfășoară activitatea în cadrul entității patrimoniale. Coloana „email_anp” ne arată e-mail-lul persoanl al fiecărui angajat. Coloana „parola” ne arată parola personală a fiecărei persoane din cadrul entității patrimoniale.

Coloana „nume” ne arată numele persoanei din cadrul entității patrimoniale. Coloana „cnp” ne arată codul numeric personal al fiecarei persoane din cadrul entității patrimoniale. Ultima coloana, „admin” ne indică dacă persoana respectivă are statutul de administrator.

2.4.5 Descrierea aplicației Android

Aplicația Android poartă numele de „ANP Tracker”. Această aplicație a fost efectuată în programul Android Studio.

Android Studio este un mediu de dezvoltare integrat (IDE) pentru dezvoltarea pe platforma Android. Limbajul de programare pe care l-am folosit pentru efectuarea acestei aplicații este java.

Această aplicație am realizat-o cu scopul de a fi implementată pe telefonul persoanei ce urmează să plece pe un traseu. Avantajele folosirii acestei aplicații sunt:

Aplicația este realizata sub forma de proces al sistemului de operare;

Nu poate fi închisă precum o aplicație, ceea ce face utilizatorul să nu încerce să „înșele” aplicația;

Lucrează în background-ul ecranului, acesta nestânjenind utilizatorul telefonului;

Trimite informații în mod regulat despre locația persoanei aflate pe traseu;

Dacă persoanei aflate pe traseu i se stinge telefonul, aplicația trimite un mesaj de informare utilizatorului aplicatiei desktop, înștiințându-l că s-a pierdut conexiunea. Dacă acest lucru se întâmplă, aplicația trimite automat ultima locația a persoanei aflate pe traseu, iar în momentul în care își deschide telefonul, aplicația reîncepe să trimită date despre locație;

În cazul în care persoana aflată pe traseu rămâne fără semnal, aplicația trimite de asemenea un mesaj pentru informarea persoanei ce utilizează aplicația desktop. Dacă acest lucru se întâmplă, aplicația trimite automat ultima locația a persoanei aflate pe traseu, iar în momentul în care perosana respectivă se află într-o zonă cu semnal mobil, aplicația reîncepe să trimită date despre locație;

Afișarea de mesaje în cazul în care utilizatorul aplicației nu are conectat internetul și pornite datele despre locație.

Părțile principalele ale aplicației android sunt prezentate în figura nr. 2.26.

Figura nr. 2.26: Părțile componente ale aplicației mobile

Sursa: Cercetare proprie

Aplicația este formată din 3 clase principale și 7 clase secundare, după cum se observă și în figura anterioară.

Clasa „ANPtracker” cu clasa secndară „LoginActivity”, crează pagina principală a aplicației (figura nr. 2.27), care este alcătuită din 3 câmpuri în care utilizatorul trebuie să-și introduca e-mail-ul, parola și serverul, pentru a se conecta cu aplicația desktop. Codu JAVA folosit pentru realizarea clasei „LoginActivity” este prezentat în Anexa 17.

Figura nr. 2.27: Interfața aplicației ANP Tracker

Sursa: Cercetare proprie

De asemena în această clasă sunt realizate și erorile în cazul în care utilizatorul nu introduce corect unul dintre câmpurile prezentate mai sus.

Clasa „GPS” cu clasa secundară „Detector Schimbare Locatie”. Această clasă trimite serverului coordonatele(longitudinea și latitudinea) locației utilizatorului.

De asemenea tot în cadrul acestei clase am introdus anumite propietăți ale aplicației cum ar fii:

Să nu se oprească serviciul în momentul în care se blochează ecranul telefonului;

În cazul în care serviciul se oprește să trimită serverului ultima locație a persoanei aflate pe traseu;

Cere acces la gps-ul telefonului;

Înregistrează un eveniment când locația s-a schimbat.

Codu JAVA folosit pentru realizarea clasei „Detector Schimbare Locatie” este prezentat în Anexa 18.

Clasa „WEB” cu clasa secundară „ProcesatorLocatie”. Această clasă secundară trimite un mesaj serverului, după care acesta îl trimite mai departe aplicației desktop în momentul în care serverul a primit locația.

Codu JAVA folosit pentru realizarea clasei „ProcesatorLocatie” este prezentat în Anexa 19.

Clasa secundară „ProcesatorLogin”. Aceast clasa secundară pornește pagina principală, pornește serviciul de gps, după care închide fereastra de login și oprește login-ul.

Codu JAVA folosit pentru realizarea clasei „ProcesatorLogin” este prezentat în Anexa 20.

Clasa secundară „ProcesatorRaspuns”. Această clasă trimite cererea de informații propiu-zisă, după care se procesează și putem implementa consecințetele cererii, când răspunsul a sosit.

Codu JAVA folosit pentru realizarea clasei „ProcesatorRaspuns” este prezentat în Anexa 21.

Clasa secundară „WEBApi”. Această clasă se comportă ca un web browser, comunicând cu serverul PHP, de asemenea restricționează această clasă la o singură instanță, ceea ce semnifică faptul că de pe un terminal(telefon, tabletă etc.) se poate conecta doar o singură persoană la un moment dat.

Codu JAVA folosit pentru realizarea clasei „WEBApi” este prezentat în Anexa 22.

2.4.6 Descriere API PHP

Pentru a stabili modul în care mai multe programe pot apela serviciile sistemului de operare este nevoie de un API(Application Programming Interface ). API este o interfață pentru programarea aplicațiilor. De cele mai multe ori se folosește pentru interfața dintre sistemul de operare și programele de aplicații. Pentru realizarea acestui API am folosit limbajul de programare PHP(Php Hypertext Preprocessor).

PHP este un limbaj de programare pentru dezvoltarea web, dar este folosit și pentru uzul general. Codul PHP poate fi amestecat cu codul HTML, sau poate fi folosit în combinație cu diferite cadre web. După ce codul PHP este interpretat și executat, serverul web trimite o ieșire la client, de obicei generată sub forma unei pagini web; de exemplu, codul PHP poate genera o pagina web de cod HTML, o imagine sau alte date.

Pentru realizarea proeictului am apelat la două controllere și anume: LoginController și LocatieController.

LocatieController. În cadrul acestui controller am introdus formula Haversine cu coordonate zecimale. Formula Haversine este o ecuație foarte des folosită în navigare, oferind informații pe distanțe mari, sub forma unui cerc între două puncte de pe o sferă de longitudini și latitudini lor Această fomulă este prezentată în figura nr. 2.28.

unde

Figura nr. 2.28: Formula Haversine

Sursa: http://en.wikipedia.org/wiki/Haversine_formula

Acestei formule am aplicat condiția ca raza centrului cercului sa fie de 10 kilometrii, ceea ce semnifică faptul că dacă persoana aflată pe traseu ajunge într-o rază de 10 km în jurul localității unde are scris pe ordinului de serviciu, aplicația Android trimite automat o notificare spre aplicația desktop, anunțând faptul că persoana aflată pe traseu a ajuns la locul de destinație.

De asemenea cu ajutorul acestui controller, verificăm dacă aplicația Android a trimis latitudinea și longitudinea locației curente ale persoanei aflate pe traseu. După ce acest lucru a fost efectuat, coordonatele(latitudinea și longitudinea) se atribuie datele bazei de date.

Cu ajutorul acestui controller selectăm ultimul traseu adăugat de persoana cu statutul de administrator, nefinalizat, ordonat descrescător după data plecării pentru a afla cărui traseu actualizăm locația.

O altă comandă atribuită acestui controller este accea sa avertizeze persoana declarată administrator ăe aplicația desktop, dac persoana aflată pe traseu s-a întors la domiciliu, cu ajutorul aceelași formule Haversine.

Codul PHP utilizat pentru realizarea clasei „LocatieController” este prezentat în Anexa 23.

LoginController. Cu ajutorul acestui controller verificăm datele introduse de utilizatorul terminalului(telefon, tabletă etc.). Acesta verifică cele două câmpuri e-mail și parola. Datele introduse în cele două câmpuri trebuie să se regăsească în baza de date.

În cazul în care utilizatorul terminalului uită să completeze unul dintre cele două câmpuri aplicația îl alertează cu mesajul: „Nu ati introdus datele corect.”. În cazul în care datele nu sunt regăsite, aplicația afișează un mesaj pentru alertarea utilizatorului teminalului, anunțându-l faptul că nu a introdus datele corect.

Dacă datele au fost introduse corect, acestea sunt atribuite câmpurilor e-mail și parolă din post în două variabile. Dupa ce acest lucru s-a desfășurat cu succes se efectuează autentificarea, iar aplicația lucrează în fundal, trimițând regulat coordonatele persoanei aflate pe traseu.

Codul PHP utilizat pentru realizarea clasei „LoginController” este prezentat în Anexa 24.

2.5 Tendințe în informatizarea sistemelor informaționale ale întreprinderilor

Informația trebuie tratată cu grijă datorită efectelor secundare și primare pe care le generează, deoarece impactul tehnologiei diferă față de oricare alt tip de tehnologie.

Un exemplu ar fi introducerea unui nou proces de comercializare, aici aplicarea tehnologiei informației, duce la o serie de beneficii cum ar fi reducerea costurilor de comercializare.

Până în prezent s-au descoperit trei niveluri (figura nr. 2.29) de integrare a tehnologiei informaționale.

Figura nr. 2.29: Niveluri de integrare a tehnologiei informației

Sursa: Date prelucrate conform G. Șoava, L. Ricu, A. Mehedintu „Proiectarea sistemelor informatice”, Ed. Reprograph, Craiova, 1999, p. 29.

Contabilitatea informatică reprezintă folosirea tehnicii de calcul în contabilitatea efectivă. Pe acest lucru se pun bazele sistemului de stocare a datelor și prelucare a datelor.

„Pe baza datelor introduse în calculator se editează obligatoriu registrul-jurnal, care constituie evidența cronologică. Editarea registrelor cartea-mare este, după caz, obligatorie sau facultativă, în raport cu decizia utilizatorului de sistem informatic. În mod obligatoriu sunt editate, lunar, balanțele conturilor, care în cele mai multe cazuri preiau și funcția registrelor cartea-mare”.

CONCLUZII ȘI PROPUNERI

Când vorbim despre societatea informaționala implicit vorbim despre internet. Începând de la transmiterea informației prin gesturi, apoi comunicarea prin scris, apariția tiparului și a telefonului, mai târziu televiziunii și industriei filmelor, apariția sistemelor de calcul, iar apoi, una dintre cele mai mari realizări ale lumii moderne după părerea mea: internetul.

În momentul actual sunt mai multe forme prin care tehnologia informaționala s-a combinat cu funcția contabilă. În principal internetul este folosit ca fundație pentru comunicare, ceea ce permite punerea în valoare a unor produse „program” utilizate în contabilitate ce au la bază tehnologia client-server. De asemenea internetul permite obținea unui spatiu virtual de stocare, uneori și gratuit, ce face posibilă vizualizarea datelor cheie asupra anumitor entități patrimoniale.

După părerea mea, un dezavantaj principal îl consituie vulnerabilitatea la hackeri, ceea ce compromite confidențialitatea infomațiilor.

Dacă aplicăm o simplă căutare în mototrul Google cu expresia „contabilitate online”, ceea ce o să rezulte o să fie un răspuns cu aproximativ 645.000 de rezultate, numai la nivelul site-urilor din țară.

La nivelul actual de tehnologizare, o persoană numai este nevoită să dețină un sistem de calcul pentru a-i permite să „țină” contabilitate de acasă, acest lucru se poate realiza și dintr-un InternetCafe. Acest lucru este posibil datorit formelor de prelucrare și stocare a datelor.

Propunearea mea este ca, în viitor, să se realizeze produse „program” uniformizate, adică cel puțin la nivel continental toate entitățile patrimoniale să „țină” cotabilitatea folosind aceleași soft-uri, astfel rezultate obținute vor fi asemănătoare.

De asemenea nu va mai fi dificil în cazul în care, vorbind din perspectiva funcționarului public dintr-un minister, să dorești să te muți pe alt minister, să lucrezi în biroul finanaciar-contabil, deoarece deja ești familiarizat cu soft-ul. Un alt avantaj al uniformizării, este verificarea, care s-ar efectua mult mai rapid și mai eficient.

Compatibilitatea este un factor foarte important, deoarece informațiile stocate într-un produs „program” o să fie compatibile cu altul.

Portabilitatea este de asemea un alt atuu care l-ar deține uniformizarea, deoarece datele stocate pot fi transferate pe un suport material (un stick, un CD etc.) și reintroduse într-un sistem de calcul al altei entități patrimoniale, acestea fiind ulterior inlcuse în memoria internă a sistemului de calcul.

La un nivel superior un avantaj ar fi faptul că datele s-ar centraliza cu ușurință și vor fi mai ușor de analizat și de luat o decizie. Acest lucru mai este avatajos datorită faptului că reduce numărul de birouri și locurilor de depunere ale documetelor (depozite, arhive etc.).

Dacă analizăm costurile cu licențele, pe care o entitate patrimonială le are, vom obseva faptul că are o pondere foarte mare, deci putem trage concluzia că entitățile patrimoniale apelează la aceste produse „program” pentru a reduce timpul de efectuare al diferitelor operații economice prin completarea unor șabloane, minimizarea erorilor, accesul la informații se face doar prin conectarea utilizatorilor la soft și de asemenea are un rol foarte puternic în reducerea cheltuielilor. Având în vedere cele spuse, nu trebuie să uităm însă punctul slab al acestor produse „program” și anume fenomenul de piraterie.

Sintetizând cele spuse mai sus, sunt de părere că toate entitățile patrimoniale (mici, mijlocii și mari) trebuie să țină pasul cu tehnologia și să apeleze la produsele „program” pentru utilizarea în contabilitate, deoarece reduc costurile, micșorează șansele de producere a erorilor, reduce semnificativ timpul, poate fi utilizat de către mai mulți utilizatori simultan , se actualizează automată la modificările legislative și multe alte avataje.

BIBLIOGRAFIE

Alice-Emilia și colaboratorii, Bazele contabilității în conformitate cu reglemetările contabile europene și standardele international de contabilitate, Ed. PRO UNIVERSITARIA, București, 2009.

Camelia Mihalciuc, Contabilitate financiară aprofundată, Ed. Economică, Suceava, 2009.

Constantinescu, C., Particularități ale tehnologiei informaționale pentru managementul strategic, Ed. Economică, București, 2000.

Crețoiu G., Bucur I., Contabilitate. Fundamente și noul cadru juridic, Ed. All Beck, București, 2004.

D. Dănăiață, Informatica în sprijinul managementului, Ed. Mirton, Timișoara, 2003.

D. Oprea , Premisele și consecințele informatizării contabilității, Ed. Graphix, 1995.

D. Oprea, D. M. Racovițan, V. Oprean, Informatica de gestiune managerială, Ed. EUROUNION, Oradea, 1994.

Evian, I. , Contabilitatea industrială, Ed. Economică, București, 2002.

G. Șoava, L. Ricu, A. Mehedintu, Proiectarea sistemelor informatice, Ed Reprograph, Craiova, 1999.

Gorski H., Sistemul Informațional Managerial, Ed. Universității „Lucian Blaga”, Sibiu, 2003.

Horomnea E., Tabară N., Budugan D., Georgescu I., Bețianu L., Dicu R., Introducere în contabilitate, Ed. TipoMoldova, Iași, 2010.

Ioan Radu, Minodora Ursăcescu, Dorian Vlădeanu, Mihai Cioc, Sorin Burlacu, Informatică și Management , Ed. Universitară, 2005.

Lungu, I., Sabău, G., Velicanu, M., Sisteme informatice. Analiză, proiectare și implementare, Editura Economică, București, 2003

M. Baduț, Informatica pentru management, Ed. Teora, București, 1999.

Mihaela Romelia, Documentarea operațiunilor economice, Ed. Economică. București, 2005.

Mihai RISTEA, Mirela Dima, Contabilitatea Societăților Comerciale, Ed Universitară, București, 2002.

Mihalca, Rodica, Fabian, C., Realizarea produselor program aplicative, Editura ASE, București 2003

Nicolae Balteș, Alina Teodora Ciuhureanu , Bazele contabilității – curs, Ed. Academiei Forțelor Terestre , Sibiu, 2008

Ovidiu Nicolescu (coordonator), Sistemul informațional-managerial al organizației, Ed. Economocă, București, 2001

Roșca, D. Zaharie Proiectarea sistemelor informatice de gestiune, ASE București, 2001.

Connolly, T., Begg, Carolyn, Strachan, Anne , Baze de date. Proiectare. Implementare. Gestionare, Editura Teora, București 2001

Hawker, A., Security and Control in Information Systems: A Guide for Business and accounting, Routledge 2000

O’Brien, J., Les systèmes d’information de gestion, Ed.De Boeck, 1995

http://www.ro.scribd.com

http://www.documentareonline.ro

http://www.biblioteca.regielive.ro

http:// www.economistul.ro

http://www.biblioteca-digitala.ase.ro

http://www.wikipedia.ro;

ANEXE

ANEXA 1

Pagina de autentificare

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class Login : Form

{

public static utilizator user_logat = null;

public Login()

{

InitializeComponent();

}

private void login()

{

if (txtEmail.Text.Length == 0 || txtParola.Text.Length == 0)

{

MessageBox.Show("Trebuie sa completati e-mail-ul si parola!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

//verificam loginul in baza

utilizator user = Entities.iaBaza().utilizator.Where(u => u.email_anp == txtEmail.Text)

.Where(u => u.parola == txtParola.Text)

.Where(u => u.admin == true)

.FirstOrDefault();

if (user == null)

{

MessageBox.Show("Utilizator sau parola gresite!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

user_logat = user;

//trecem la urmatoarea fereastra

FereastraPrincipala fp = new FereastraPrincipala();

fp.Visible = true;

fp.Show();

this.Hide();

}

private void btnLogin_Click(object sender, EventArgs e)

{

login();

}

}

}

Anexa 2

Clasa „utilizatori”

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class ListaUtilizatori : Form

{

public ListaUtilizatori()

{

InitializeComponent();

foreach (ColumnHeader coloana in tabelUtilizatori.Columns)

{

coloana.Width = -1;

}

puneUtilizatoriiPeLista();

}

public void puneUtilizatoriiPeLista()

{

tabelUtilizatori.Items.Clear();

Entities baza = Entities.iaBaza();

List<utilizator> lista = baza.utilizator.OrderBy(u => u.nume).ToList();

foreach (utilizator user in lista)

{

string[] date = new string[5];

date[0] = user.email_anp;

date[1] = user.nume;

date[2] = user.cnp;

traseu traseu_nefinalizat = user.traseu.Where(t => t.a_ajuns2 == 0).FirstOrDefault();

if (traseu_nefinalizat == null)

{

date[3] = "NU E PLECAT";

}

else

{

date[3] = "E PLECAT";

}

if (user.admin)

{

date[4] = "DA";

}

else

{

date[4] = "NU";

}

ListViewItem rand = new ListViewItem(date);

rand.Tag = user;

tabelUtilizatori.Items.Add(rand);

}

}

private void ListaUtilizatori_FormClosed(object sender, FormClosedEventArgs e)

{

FereastraPrincipala.lu_deschisa = false;

}

private void btnAdaugare_Click(object sender, EventArgs e)

{

DialogAdaugareUtilizator dau = new DialogAdaugareUtilizator(this);

dau.ShowDialog(this);

}

private void btnEditare_Click(object sender, EventArgs e)

{

if (tabelUtilizatori.SelectedItems == null || tabelUtilizatori.SelectedItems.Count == 0)

{

return;

}

ListViewItem rand = tabelUtilizatori.SelectedItems[0];

utilizator selectat = (utilizator)rand.Tag;

new DialogEditareUtilizator(this, selectat).ShowDialog();

}

private void button3_Click(object sender, EventArgs e)

{

if (tabelUtilizatori.SelectedItems == null || tabelUtilizatori.SelectedItems.Count == 0)

{

return;

}

ListViewItem rand = tabelUtilizatori.SelectedItems[0];

utilizator selectat = (utilizator)rand.Tag;

Entities.iaBaza().utilizator.Remove(selectat);

Entities.iaBaza().SaveChanges();

puneUtilizatoriiPeLista();

}

}

}

ANEXA 3

Adăugare noi utilizatori

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class DialogAdaugareUtilizator : Form

{

private ListaUtilizatori lu;

public DialogAdaugareUtilizator(ListaUtilizatori lu)

{

this.lu = lu;

InitializeComponent();

}

private void label4_Click(object sender, EventArgs e)

{

}

private void btnAdauga_Click(object sender, EventArgs e)

{

if (

txtEmail.Text.Length == 0 ||

txtParola.Text.Length == 0 ||

txtCNP.Text.Length != 13 ||

txtNume.Text.Length == 0

)

{

MessageBox.Show("Completati corect!","Eroare",MessageBoxButtons.OK,MessageBoxIcon.Error);

return;

}

utilizator nou = new utilizator();

nou.email_anp = txtEmail.Text;

nou.parola = txtParola.Text;

nou.nume = txtNume.Text;

nou.cnp = txtCNP.Text;

if (cbAdmin.Checked)

{

nou.admin = true;

}

else

{

nou.admin = false;

}

Entities.iaBaza().utilizator.Add(nou);

Entities.iaBaza().SaveChanges();

lu.puneUtilizatoriiPeLista();

this.Dispose();

}

}

}

ANEXA 4

Editare utilizatori

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class DialogEditareUtilizator : Form

{

private ListaUtilizatori lu;

private utilizator editat;

public DialogEditareUtilizator(ListaUtilizatori lu,utilizator editat)

{

this.lu = lu;

this.editat = editat;

InitializeComponent();

populeazaDate();

}

private void populeazaDate()

{

txtEmail.Text = editat.email_anp;

txtParola.Text = editat.parola;

txtCNP.Text = editat.cnp;

txtNume.Text = editat.nume;

if (editat.admin)

{

cbAdmin.Checked = true;

}

else

{

cbAdmin.Checked = false;

}

}

private void label4_Click(object sender, EventArgs e)

{

}

private void btnAdauga_Click(object sender, EventArgs e)

{

if (

txtEmail.Text.Length == 0 ||

txtParola.Text.Length == 0 ||

txtCNP.Text.Length != 13 ||

txtNume.Text.Length == 0

)

{

MessageBox.Show("Completati corect!","Eroare",MessageBoxButtons.OK,MessageBoxIcon.Error);

return;

}

editat.email_anp = txtEmail.Text;

editat.parola = txtParola.Text;

editat.nume = txtNume.Text;

editat.cnp = txtCNP.Text;

if (cbAdmin.Checked)

{

editat.admin = true;

}

else

{

editat.admin = false;

}

Entities.iaBaza().SaveChanges();

lu.puneUtilizatoriiPeLista();

this.Dispose();

}

}

}

ANEXA 5

Lista cu trasee

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class ListaTrasee : Form

{

public ListaTrasee()

{

InitializeComponent();

foreach (ColumnHeader coloana in tabelTrasee.Columns)

{

coloana.Width = -2;

}

puneTraseePeLista();

}

public void puneTraseePeLista()

{

tabelTrasee.Items.Clear();

List<traseu> trasee = Entities.iaBaza().traseu

.OrderBy(t => t.utilizator.nume)

.OrderBy(t => t.data_plecare)

.ToList();

foreach (traseu traseu in trasee)

{

string[] date = new string[15];

date[0] = traseu.utilizator.nume;

date[1] = traseu.utilizator.cnp;

date[2] = traseu.nr_inmat_masina;

date[3] = traseu.tip_traseu;

date[4] = traseu.destinatie_nume;

date[5] = traseu.sosire_nume;

if (traseu.km_dus.HasValue)

{

date[6] = traseu.km_dus + "";

}

if (traseu.km_intors.HasValue)

{

date[7] = traseu.km_intors + "";

}

date[8] = traseu.data_plecare.ToShortDateString();

if (traseu.data_sosire.HasValue)

{

date[9] = traseu.data_sosire.Value.ToShortDateString();

}

if (traseu.tip_carburant.HasValue)

{

switch (traseu.tip_carburant.Value)

{

case 0:

date[10] = "Benzina";

break;

case 1:

date[10] = "Motorina";

break;

case 2:

date[10] = "GPL";

break;

}

}

if (traseu.pret_carburant_folosit.HasValue)

{

date[11] = traseu.pret_carburant_folosit.Value + "";

}

if (traseu.a_ajuns1 == 1)

{

date[12] = "DA";

}

else

{

date[12] = "NU";

}

if (traseu.a_ajuns2 == 1)

{

date[13] = "DA";

}

else

{

date[13] = "NU";

}

if (traseu.km_dus.HasValue && traseu.km_intors.HasValue && traseu.pret_carburant_folosit.HasValue)

{

int nrkm = traseu.km_dus.Value + traseu.km_intors.Value;

double total = nrkm / 100 * 7.5 * traseu.pret_carburant_folosit.Value;

date[14] = total + "";

}

ListViewItem rand = new ListViewItem(date);

rand.Tag = traseu;

tabelTrasee.Items.Add(rand);

}

}

private void ListaTrasee_FormClosed(object sender, FormClosedEventArgs e)

{

FereastraPrincipala.lt_deschisa = false;

}

private void btnAdaugare_Click(object sender, EventArgs e)

{

new DialogAdaugareTraseu(this).ShowDialog(this);

}

private void btnEditare_Click(object sender, EventArgs e)

{

if (tabelTrasee.SelectedItems == null || tabelTrasee.SelectedItems.Count == 0)

{

return;

}

traseu selectat = (traseu)tabelTrasee.SelectedItems[0].Tag;

new DialogEditareTraseu(this, selectat).ShowDialog(this);

}

private void button3_Click(object sender, EventArgs e)

{

if (tabelTrasee.SelectedItems == null || tabelTrasee.SelectedItems.Count == 0)

{

return;

}

traseu selectat = (traseu)tabelTrasee.SelectedItems[0].Tag;

Entities.iaBaza().traseu.Remove(selectat);

Entities.iaBaza().SaveChanges();

puneTraseePeLista();

}

private void tabelTrasee_DoubleClick(object sender, EventArgs e)

{

if (tabelTrasee.SelectedItems != null && tabelTrasee.SelectedItems.Count > 0)

{

traseu selectat = (traseu)tabelTrasee.SelectedItems[0].Tag;

new DialogLocatie(selectat).ShowDialog(this);

}

}

private void btnFinalizare_Click(object sender, EventArgs e)

{

if (tabelTrasee.SelectedItems != null && tabelTrasee.SelectedItems.Count > 0)

{

traseu selectat = (traseu)tabelTrasee.SelectedItems[0].Tag;

if (selectat.a_ajuns1 == 0 || selectat.a_ajuns2 == 0)

{

MessageBox.Show("Atentie! Acest traseu nu este inca finalizat! Utilizatorul nu a ajuns la destinatie sau nu s-a intors la punctul de sosire!", "Atentie", MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

else

{

if (selectat.data_sosire.HasValue)

{

MessageBox.Show("Atentie! Acest traseu deja a fost finalizat! Continuand veti modifica valorile deja existente in baza de date!", "Atentie", MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

}

new DialogFinalizare(selectat,this).ShowDialog(this);

}

}

}

}

ANEXA 6

Adăugarea de noi trasee

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using GMap.NET.MapProviders;

using GMap.NET;

namespace Admin_Tracker

{

public partial class DialogAdaugareTraseu : Form

{

private ListaTrasee lt;

private List<Carburant> carburanti;

public DialogAdaugareTraseu(ListaTrasee lt)

{

this.lt = lt;

InitializeComponent();

carburanti = new List<Carburant>();

Carburant benzina = new Carburant();

benzina.Nume = "Benzina";

benzina.Tip = 0;

Carburant motorina = new Carburant();

motorina.Nume = "Motorina";

motorina.Tip = 1;

Carburant gpl = new Carburant();

gpl.Nume = "GPL";

gpl.Tip = 2;

carburanti.Add(benzina);

carburanti.Add(motorina);

carburanti.Add(gpl);

cbCarburant.DataSource = carburanti;

List<utilizator> utilizatori = Entities.iaBaza().utilizator

.OrderBy(u => u.nume).ToList();

cbUser.DataSource = utilizatori;

}

private void DialogAdaugareTraseu_Load(object sender, EventArgs e)

{

GMapProvider.WebProxy = null;

hartaDestinatie.MapProvider = GoogleMapProvider.Instance;

hartaDestinatie.Manager.Mode = AccessMode.ServerOnly;

hartaDestinatie.Position = new PointLatLng(45.839722, 24.948144);

hartaDestinatie.MinZoom = 1;

hartaDestinatie.MaxZoom = 20;

hartaDestinatie.Zoom = 5;

hartaSosire.MapProvider = GoogleMapProvider.Instance;

hartaSosire.Manager.Mode = AccessMode.ServerOnly;

hartaSosire.Position = new PointLatLng(45.839722, 24.948144);

hartaSosire.MinZoom = 1;

hartaSosire.MaxZoom = 20;

hartaSosire.Zoom = 5;

}

private void btnSalvare_Click(object sender, EventArgs e)

{

if (cbUser.SelectedItem == null)

{

MessageBox.Show("Trebuie sa completati utilizatorul!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (cbTipTraseu.SelectedItem == null)

{

MessageBox.Show("Trebuie sa completati tipul traseului!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (txtNrInmat.Text.Length == 0 || txtNumeDest.Text.Length == 0 || txtNumeSosire.Text.Length == 0)

{

MessageBox.Show("Trebuie sa completati toate campurile!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

traseu t = new traseu();

t.destinatie_lat = hartaDestinatie.Position.Lat;

t.destinatie_lng = hartaDestinatie.Position.Lng;

t.destinatie_nume = txtNumeDest.Text;

t.nr_inmat_masina = txtNrInmat.Text;

t.sosire_lat = hartaSosire.Position.Lat;

t.sosire_lng = hartaSosire.Position.Lng;

t.sosire_nume = txtNumeSosire.Text;

t.tip_carburant = ((Carburant)cbCarburant.SelectedItem).Tip;

t.tip_traseu = cbTipTraseu.SelectedItem.ToString();

t.utilizator = (utilizator)cbUser.SelectedItem;

Entities.iaBaza().traseu.Add(t);

Entities.iaBaza().SaveChanges();

lt.puneTraseePeLista();

this.Dispose();

}

}

}

ANEXA 7

Finalizare traseu

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Drawing;

using System.Globalization;a

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class DialogFinalizare : Form

{

private ListaTrasee lt;

private traseu t;

public DialogFinalizare(traseu t,ListaTrasee lt)

{

this.lt = lt;

this.t = t;

InitializeComponent();

switch (t.tip_carburant)

{

case 0:

lblCarburant.Text = "Pret benzina:";

break;

case 1:

lblCarburant.Text = "Pret motorina:";

break;

case 2:

lblCarburant.Text = "Pret GPL:";

break;

}

}

private void btnFinalizare_Click(object sender, EventArgs e)

{

t.pret_carburant_folosit = double.Parse(txtPretCarburant.Text,CultureInfo.InvariantCulture);

t.data_sosire = DateTime.Now;

t.a_ajuns1 = 1;

t.a_ajuns2 = 1;

t.km_dus = int.Parse(txtKmDus.Text);

t.km_intors = int.Parse(txtNrKmIntors.Text);

Entities.iaBaza().SaveChanges();

MessageBox.Show("Traseul a fost finalizat!", "Succes", MessageBoxButtons.OK, MessageBoxIcon.Information);

lt.puneTraseePeLista();

this.Dispose();

}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

ProcessStartInfo sInfo = new ProcessStartInfo("http://viamichelin.com");

Process.Start(sInfo);

}

}

ANEXA 8

Editarea unui traseu

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using GMap.NET.MapProviders;

using GMap.NET;

namespace Admin_Tracker

{

public partial class DialogEditareTraseu : Form

{

private ListaTrasee lt;

private List<Carburant> carburanti;

private traseu t;

public DialogEditareTraseu(ListaTrasee lt,traseu t)

{

this.t = t;

this.lt = lt;

InitializeComponent();

carburanti = new List<Carburant>();

Carburant benzina = new Carburant();

benzina.Nume = "Benzina";

benzina.Tip = 0;

Carburant motorina = new Carburant();

motorina.Nume = "Motorina";

motorina.Tip = 1;

Carburant gpl = new Carburant();

gpl.Nume = "GPL";

gpl.Tip = 2;

carburanti.Add(benzina);

carburanti.Add(motorina);

carburanti.Add(gpl);

cbCarburant.DataSource = carburanti;

List<utilizator> utilizatori = Entities.iaBaza().utilizator

.OrderBy(u => u.nume).ToList();

cbUser.DataSource = utilizatori;

}

private void DialogAdaugareTraseu_Load(object sender, EventArgs e)

{

GMapProvider.WebProxy = null;

hartaDestinatie.MapProvider = GoogleMapProvider.Instance;

hartaDestinatie.Manager.Mode = AccessMode.ServerOnly;

hartaDestinatie.Position = new PointLatLng(t.destinatie_lat, t.destinatie_lng);

hartaDestinatie.MinZoom = 1;

hartaDestinatie.MaxZoom = 20;

hartaDestinatie.Zoom = 5;

hartaSosire.MapProvider = GoogleMapProvider.Instance;

hartaSosire.Manager.Mode = AccessMode.ServerOnly;

hartaSosire.Position = new PointLatLng(t.sosire_lat, t.sosire_lng);

hartaSosire.MinZoom = 1;

hartaSosire.MaxZoom = 20;

hartaSosire.Zoom = 5;

cbTipTraseu.SelectedItem = t.tip_traseu;

cbUser.SelectedItem = t.utilizator;

txtNumeDest.Text = t.destinatie_nume;

txtNrInmat.Text = t.nr_inmat_masina;

txtNumeSosire.Text = t.sosire_nume;

if (t.tip_carburant.HasValue)

{

cbCarburant.SelectedIndex = t.tip_carburant.Value;

}

}

private void btnEditare_Click(object sender, EventArgs e)

{

if (cbUser.SelectedItem == null)

{

MessageBox.Show("Trebuie sa completati utilizatorul!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (cbTipTraseu.SelectedItem == null)

{

MessageBox.Show("Trebuie sa completati tipul traseului!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (txtNrInmat.Text.Length == 0 || txtNumeDest.Text.Length == 0 || txtNumeSosire.Text.Length == 0)

{

MessageBox.Show("Trebuie sa completati toate campurile!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

t.destinatie_lat = hartaDestinatie.Position.Lat;

t.destinatie_lng = hartaDestinatie.Position.Lng;

t.destinatie_nume = txtNumeDest.Text;

t.nr_inmat_masina = txtNrInmat.Text;

t.sosire_lat = hartaSosire.Position.Lat;

t.sosire_lng = hartaSosire.Position.Lng;

t.sosire_nume = txtNumeSosire.Text;

t.tip_carburant = ((Carburant)cbCarburant.SelectedItem).Tip;

t.tip_traseu = cbTipTraseu.SelectedItem.ToString();

t.utilizator = (utilizator)cbUser.SelectedItem;

Entities.iaBaza().SaveChanges();

lt.puneTraseePeLista();

this.Dispose();

}

private void cbTipTraseu_SelectedIndexChanged(object sender, EventArgs e)

{

}

}

}

ANEXA 9

Afișarea locației curente

using GMap.NET;

using GMap.NET.MapProviders;

using GMap.NET.WindowsForms;

using GMap.NET.WindowsForms.Markers;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class DialogLocatie : Form

{

private traseu t;

private GMarkerGoogle marker_mylocation;

private GMapOverlay markersOverlay;

private GMapRoute route;

private List<PointLatLng> points;

private List<locatie> locatii;

public DialogLocatie(traseu t)

{

this.t = t;

InitializeComponent();

}

private void DialogLocatie_Load(object sender, EventArgs e)

{

locatie l = t.locatie.OrderBy(l1 => l1.timp).FirstOrDefault();

if (l == null)

{

MessageBox.Show("Acest utilizator nu a raportat nicio locatie pana acum");

this.Dispose();

return;

}

locatii = t.locatie.OrderBy(loc => loc.timp).ToList();

points = new List<PointLatLng>();

//points.Add(new PointLatLng(t.sosire_lat,t.sosire_lng));

foreach (locatie locatie in locatii)

{

points.Add(new PointLatLng(locatie.lat, locatie.lng));

}

GMapProvider.WebProxy = null;

harta.MapProvider = GoogleMapProvider.Instance;

harta.Manager.Mode = AccessMode.ServerOnly;

//markere

harta.MarkersEnabled = true;

markersOverlay = new GMapOverlay("markers");

marker_mylocation = new GMarkerGoogle(new PointLatLng(l.lat, l.lng), GMarkerGoogleType.green);

marker_mylocation.ToolTipText = "Locatie curenta";

marker_mylocation.ToolTipMode = MarkerTooltipMode.Always;

GMarkerGoogle mstart = new GMarkerGoogle(new PointLatLng(t.sosire_lat, t.sosire_lng), GMarkerGoogleType.orange);

mstart.ToolTipText = "Domiciliu";

mstart.ToolTipMode = MarkerTooltipMode.Always;

GMarkerGoogle mplecare = new GMarkerGoogle(new PointLatLng(t.destinatie_lat, t.destinatie_lng), GMarkerGoogleType.red);

mplecare.ToolTipText = "Destinatie";

mplecare.ToolTipMode = MarkerTooltipMode.Always;

markersOverlay.Markers.Add(marker_mylocation);

markersOverlay.Markers.Add(mstart);

markersOverlay.Markers.Add(mplecare);

harta.Overlays.Add(markersOverlay);

route = new GMapRoute(points,"ruta");

harta.RoutesEnabled = true;

markersOverlay.Routes.Add(route);

harta.Position = new PointLatLng(l.lat,l.lng);

harta.MinZoom = 1;

harta.MaxZoom = 20;

harta.Zoom = 10;

}

}

}

ANEXA 10

Tabelul „locatie”

CREATE TABLE `locatie` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`traseu_id` INT(11) NOT NULL,

`lat` DOUBLE NOT NULL,

`lng` DOUBLE NOT NULL,

`timp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`),

INDEX `traseu_id` (`traseu_id`),

CONSTRAINT `locatie_ibfk_1` FOREIGN KEY (`traseu_id`) REFERENCES `traseu` (`id`) ON UPDATE CASCADE ON DELETE CASCADE

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=14

;

ANEXA 11

Tabelul „traseu”

CREATE TABLE `traseu` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`utilizator_id` INT(11) NOT NULL,

`tip_traseu` VARCHAR(50) NOT NULL DEFAULT 'CONCEDIU DE ODIHNA',

`destinatie_nume` VARCHAR(300) NOT NULL,

`destinatie_lat` DOUBLE NOT NULL,

`destinatie_lng` DOUBLE NOT NULL,

`sosire_nume` VARCHAR(300) NOT NULL,

`sosire_lat` DOUBLE NOT NULL,

`sosire_lng` DOUBLE NOT NULL,

`nr_inmat_masina` VARCHAR(20) NOT NULL,

`tip_carburant` INT(11) NULL DEFAULT NULL,

`km_dus` INT(11) NULL DEFAULT NULL,

`km_intors` INT(11) NULL DEFAULT NULL,

`data_plecare` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

`data_sosire` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',

`a_ajuns1` TINYINT(4) NOT NULL DEFAULT '0',

`a_ajuns2` TINYINT(4) NOT NULL DEFAULT '0',

`pret_carburant_folosit` DOUBLE NULL DEFAULT NULL,

PRIMARY KEY (`id`),

INDEX `utilizator_id` (`utilizator_id`),

CONSTRAINT `traseu_ibfk_1` FOREIGN KEY (`utilizator_id`) REFERENCES `utilizator` (`id`) ON UPDATE CASCADE ON DELETE CASCADE

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=5

;

ANEXA 12

Tabelul „utilizator”

CREATE TABLE `utilizator` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`email_anp` VARCHAR(300) NOT NULL,

`parola` VARCHAR(300) NOT NULL,

`nume` VARCHAR(300) NOT NULL,

`cnp` VARCHAR(13) NOT NULL,

`admin` TINYINT(1) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`),

UNIQUE INDEX `Index 2` (`cnp`)

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=3

;

ANEXA 13

PROCEDURA – P/PMDB/F– 10 – DECONTAREA CHELTUIELILOR DE TRANSPORT PENTRU FUNCȚIONARII PUBLICI CU STATUT SPECIAL

Registru de evidență a mijloacelor de transport proprietate personală

ANEXA 14

PROCEDURA – P/PMDB/F– 10 – DECONTAREA CHELTUIELILOR DE TRANSPORT PENTRU FUNCȚIONARII PUBLICI CU STATUT SPECIAL

Borderou centralizator distanțe între localități pentru decontarea trasportului la și de la locul de muncă

Verificat, Întocmit,

Avizat,

ANEXA 15

PROCEDURA – P/PMDB/F– 10 – DECONTAREA CHELTUIELILOR DE TRANSPORT PENTRU FUNCȚIONARII PUBLICI CU STATUT SPECIAL

Situația persoanelor care beneficiază de transportul la și de la locul de muncă

Contabil șef, Întocmit,

Director economic,

ANEXA 16

PROCEDURA – P/PMDB/F– 10 – DECONTAREA CHELTUIELILOR DE TRANSPORT PENTRU FUNCȚIONARII PUBLICI CU STATUT SPECIAL

Contabil șef, Întocmit,

ANEXA 17

Pagina principală „LoginActivity”

}

});

}

}

ANEXA 18

Detector schimbare locație

}

}

ANEXA 19

Procesator locație

ANEXA 20

Procesator login

ANEXA 21

Procesator răspuns

ANEXA 22

WEBApi

ANEXA 23

LocatieController

ANEXA 24

LoginController

BIBLIOGRAFIE

Alice-Emilia și colaboratorii, Bazele contabilității în conformitate cu reglemetările contabile europene și standardele international de contabilitate, Ed. PRO UNIVERSITARIA, București, 2009.

Camelia Mihalciuc, Contabilitate financiară aprofundată, Ed. Economică, Suceava, 2009.

Constantinescu, C., Particularități ale tehnologiei informaționale pentru managementul strategic, Ed. Economică, București, 2000.

Crețoiu G., Bucur I., Contabilitate. Fundamente și noul cadru juridic, Ed. All Beck, București, 2004.

D. Dănăiață, Informatica în sprijinul managementului, Ed. Mirton, Timișoara, 2003.

D. Oprea , Premisele și consecințele informatizării contabilității, Ed. Graphix, 1995.

D. Oprea, D. M. Racovițan, V. Oprean, Informatica de gestiune managerială, Ed. EUROUNION, Oradea, 1994.

Evian, I. , Contabilitatea industrială, Ed. Economică, București, 2002.

G. Șoava, L. Ricu, A. Mehedintu, Proiectarea sistemelor informatice, Ed Reprograph, Craiova, 1999.

Gorski H., Sistemul Informațional Managerial, Ed. Universității „Lucian Blaga”, Sibiu, 2003.

Horomnea E., Tabară N., Budugan D., Georgescu I., Bețianu L., Dicu R., Introducere în contabilitate, Ed. TipoMoldova, Iași, 2010.

Ioan Radu, Minodora Ursăcescu, Dorian Vlădeanu, Mihai Cioc, Sorin Burlacu, Informatică și Management , Ed. Universitară, 2005.

Lungu, I., Sabău, G., Velicanu, M., Sisteme informatice. Analiză, proiectare și implementare, Editura Economică, București, 2003

M. Baduț, Informatica pentru management, Ed. Teora, București, 1999.

Mihaela Romelia, Documentarea operațiunilor economice, Ed. Economică. București, 2005.

Mihai RISTEA, Mirela Dima, Contabilitatea Societăților Comerciale, Ed Universitară, București, 2002.

Mihalca, Rodica, Fabian, C., Realizarea produselor program aplicative, Editura ASE, București 2003

Nicolae Balteș, Alina Teodora Ciuhureanu , Bazele contabilității – curs, Ed. Academiei Forțelor Terestre , Sibiu, 2008

Ovidiu Nicolescu (coordonator), Sistemul informațional-managerial al organizației, Ed. Economocă, București, 2001

Roșca, D. Zaharie Proiectarea sistemelor informatice de gestiune, ASE București, 2001.

Connolly, T., Begg, Carolyn, Strachan, Anne , Baze de date. Proiectare. Implementare. Gestionare, Editura Teora, București 2001

Hawker, A., Security and Control in Information Systems: A Guide for Business and accounting, Routledge 2000

O’Brien, J., Les systèmes d’information de gestion, Ed.De Boeck, 1995

http://www.ro.scribd.com

http://www.documentareonline.ro

http://www.biblioteca.regielive.ro

http:// www.economistul.ro

http://www.biblioteca-digitala.ase.ro

http://www.wikipedia.ro;

ANEXE

ANEXA 1

Pagina de autentificare

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class Login : Form

{

public static utilizator user_logat = null;

public Login()

{

InitializeComponent();

}

private void login()

{

if (txtEmail.Text.Length == 0 || txtParola.Text.Length == 0)

{

MessageBox.Show("Trebuie sa completati e-mail-ul si parola!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

//verificam loginul in baza

utilizator user = Entities.iaBaza().utilizator.Where(u => u.email_anp == txtEmail.Text)

.Where(u => u.parola == txtParola.Text)

.Where(u => u.admin == true)

.FirstOrDefault();

if (user == null)

{

MessageBox.Show("Utilizator sau parola gresite!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

user_logat = user;

//trecem la urmatoarea fereastra

FereastraPrincipala fp = new FereastraPrincipala();

fp.Visible = true;

fp.Show();

this.Hide();

}

private void btnLogin_Click(object sender, EventArgs e)

{

login();

}

}

}

Anexa 2

Clasa „utilizatori”

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class ListaUtilizatori : Form

{

public ListaUtilizatori()

{

InitializeComponent();

foreach (ColumnHeader coloana in tabelUtilizatori.Columns)

{

coloana.Width = -1;

}

puneUtilizatoriiPeLista();

}

public void puneUtilizatoriiPeLista()

{

tabelUtilizatori.Items.Clear();

Entities baza = Entities.iaBaza();

List<utilizator> lista = baza.utilizator.OrderBy(u => u.nume).ToList();

foreach (utilizator user in lista)

{

string[] date = new string[5];

date[0] = user.email_anp;

date[1] = user.nume;

date[2] = user.cnp;

traseu traseu_nefinalizat = user.traseu.Where(t => t.a_ajuns2 == 0).FirstOrDefault();

if (traseu_nefinalizat == null)

{

date[3] = "NU E PLECAT";

}

else

{

date[3] = "E PLECAT";

}

if (user.admin)

{

date[4] = "DA";

}

else

{

date[4] = "NU";

}

ListViewItem rand = new ListViewItem(date);

rand.Tag = user;

tabelUtilizatori.Items.Add(rand);

}

}

private void ListaUtilizatori_FormClosed(object sender, FormClosedEventArgs e)

{

FereastraPrincipala.lu_deschisa = false;

}

private void btnAdaugare_Click(object sender, EventArgs e)

{

DialogAdaugareUtilizator dau = new DialogAdaugareUtilizator(this);

dau.ShowDialog(this);

}

private void btnEditare_Click(object sender, EventArgs e)

{

if (tabelUtilizatori.SelectedItems == null || tabelUtilizatori.SelectedItems.Count == 0)

{

return;

}

ListViewItem rand = tabelUtilizatori.SelectedItems[0];

utilizator selectat = (utilizator)rand.Tag;

new DialogEditareUtilizator(this, selectat).ShowDialog();

}

private void button3_Click(object sender, EventArgs e)

{

if (tabelUtilizatori.SelectedItems == null || tabelUtilizatori.SelectedItems.Count == 0)

{

return;

}

ListViewItem rand = tabelUtilizatori.SelectedItems[0];

utilizator selectat = (utilizator)rand.Tag;

Entities.iaBaza().utilizator.Remove(selectat);

Entities.iaBaza().SaveChanges();

puneUtilizatoriiPeLista();

}

}

}

ANEXA 3

Adăugare noi utilizatori

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class DialogAdaugareUtilizator : Form

{

private ListaUtilizatori lu;

public DialogAdaugareUtilizator(ListaUtilizatori lu)

{

this.lu = lu;

InitializeComponent();

}

private void label4_Click(object sender, EventArgs e)

{

}

private void btnAdauga_Click(object sender, EventArgs e)

{

if (

txtEmail.Text.Length == 0 ||

txtParola.Text.Length == 0 ||

txtCNP.Text.Length != 13 ||

txtNume.Text.Length == 0

)

{

MessageBox.Show("Completati corect!","Eroare",MessageBoxButtons.OK,MessageBoxIcon.Error);

return;

}

utilizator nou = new utilizator();

nou.email_anp = txtEmail.Text;

nou.parola = txtParola.Text;

nou.nume = txtNume.Text;

nou.cnp = txtCNP.Text;

if (cbAdmin.Checked)

{

nou.admin = true;

}

else

{

nou.admin = false;

}

Entities.iaBaza().utilizator.Add(nou);

Entities.iaBaza().SaveChanges();

lu.puneUtilizatoriiPeLista();

this.Dispose();

}

}

}

ANEXA 4

Editare utilizatori

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class DialogEditareUtilizator : Form

{

private ListaUtilizatori lu;

private utilizator editat;

public DialogEditareUtilizator(ListaUtilizatori lu,utilizator editat)

{

this.lu = lu;

this.editat = editat;

InitializeComponent();

populeazaDate();

}

private void populeazaDate()

{

txtEmail.Text = editat.email_anp;

txtParola.Text = editat.parola;

txtCNP.Text = editat.cnp;

txtNume.Text = editat.nume;

if (editat.admin)

{

cbAdmin.Checked = true;

}

else

{

cbAdmin.Checked = false;

}

}

private void label4_Click(object sender, EventArgs e)

{

}

private void btnAdauga_Click(object sender, EventArgs e)

{

if (

txtEmail.Text.Length == 0 ||

txtParola.Text.Length == 0 ||

txtCNP.Text.Length != 13 ||

txtNume.Text.Length == 0

)

{

MessageBox.Show("Completati corect!","Eroare",MessageBoxButtons.OK,MessageBoxIcon.Error);

return;

}

editat.email_anp = txtEmail.Text;

editat.parola = txtParola.Text;

editat.nume = txtNume.Text;

editat.cnp = txtCNP.Text;

if (cbAdmin.Checked)

{

editat.admin = true;

}

else

{

editat.admin = false;

}

Entities.iaBaza().SaveChanges();

lu.puneUtilizatoriiPeLista();

this.Dispose();

}

}

}

ANEXA 5

Lista cu trasee

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class ListaTrasee : Form

{

public ListaTrasee()

{

InitializeComponent();

foreach (ColumnHeader coloana in tabelTrasee.Columns)

{

coloana.Width = -2;

}

puneTraseePeLista();

}

public void puneTraseePeLista()

{

tabelTrasee.Items.Clear();

List<traseu> trasee = Entities.iaBaza().traseu

.OrderBy(t => t.utilizator.nume)

.OrderBy(t => t.data_plecare)

.ToList();

foreach (traseu traseu in trasee)

{

string[] date = new string[15];

date[0] = traseu.utilizator.nume;

date[1] = traseu.utilizator.cnp;

date[2] = traseu.nr_inmat_masina;

date[3] = traseu.tip_traseu;

date[4] = traseu.destinatie_nume;

date[5] = traseu.sosire_nume;

if (traseu.km_dus.HasValue)

{

date[6] = traseu.km_dus + "";

}

if (traseu.km_intors.HasValue)

{

date[7] = traseu.km_intors + "";

}

date[8] = traseu.data_plecare.ToShortDateString();

if (traseu.data_sosire.HasValue)

{

date[9] = traseu.data_sosire.Value.ToShortDateString();

}

if (traseu.tip_carburant.HasValue)

{

switch (traseu.tip_carburant.Value)

{

case 0:

date[10] = "Benzina";

break;

case 1:

date[10] = "Motorina";

break;

case 2:

date[10] = "GPL";

break;

}

}

if (traseu.pret_carburant_folosit.HasValue)

{

date[11] = traseu.pret_carburant_folosit.Value + "";

}

if (traseu.a_ajuns1 == 1)

{

date[12] = "DA";

}

else

{

date[12] = "NU";

}

if (traseu.a_ajuns2 == 1)

{

date[13] = "DA";

}

else

{

date[13] = "NU";

}

if (traseu.km_dus.HasValue && traseu.km_intors.HasValue && traseu.pret_carburant_folosit.HasValue)

{

int nrkm = traseu.km_dus.Value + traseu.km_intors.Value;

double total = nrkm / 100 * 7.5 * traseu.pret_carburant_folosit.Value;

date[14] = total + "";

}

ListViewItem rand = new ListViewItem(date);

rand.Tag = traseu;

tabelTrasee.Items.Add(rand);

}

}

private void ListaTrasee_FormClosed(object sender, FormClosedEventArgs e)

{

FereastraPrincipala.lt_deschisa = false;

}

private void btnAdaugare_Click(object sender, EventArgs e)

{

new DialogAdaugareTraseu(this).ShowDialog(this);

}

private void btnEditare_Click(object sender, EventArgs e)

{

if (tabelTrasee.SelectedItems == null || tabelTrasee.SelectedItems.Count == 0)

{

return;

}

traseu selectat = (traseu)tabelTrasee.SelectedItems[0].Tag;

new DialogEditareTraseu(this, selectat).ShowDialog(this);

}

private void button3_Click(object sender, EventArgs e)

{

if (tabelTrasee.SelectedItems == null || tabelTrasee.SelectedItems.Count == 0)

{

return;

}

traseu selectat = (traseu)tabelTrasee.SelectedItems[0].Tag;

Entities.iaBaza().traseu.Remove(selectat);

Entities.iaBaza().SaveChanges();

puneTraseePeLista();

}

private void tabelTrasee_DoubleClick(object sender, EventArgs e)

{

if (tabelTrasee.SelectedItems != null && tabelTrasee.SelectedItems.Count > 0)

{

traseu selectat = (traseu)tabelTrasee.SelectedItems[0].Tag;

new DialogLocatie(selectat).ShowDialog(this);

}

}

private void btnFinalizare_Click(object sender, EventArgs e)

{

if (tabelTrasee.SelectedItems != null && tabelTrasee.SelectedItems.Count > 0)

{

traseu selectat = (traseu)tabelTrasee.SelectedItems[0].Tag;

if (selectat.a_ajuns1 == 0 || selectat.a_ajuns2 == 0)

{

MessageBox.Show("Atentie! Acest traseu nu este inca finalizat! Utilizatorul nu a ajuns la destinatie sau nu s-a intors la punctul de sosire!", "Atentie", MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

else

{

if (selectat.data_sosire.HasValue)

{

MessageBox.Show("Atentie! Acest traseu deja a fost finalizat! Continuand veti modifica valorile deja existente in baza de date!", "Atentie", MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

}

new DialogFinalizare(selectat,this).ShowDialog(this);

}

}

}

}

ANEXA 6

Adăugarea de noi trasee

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using GMap.NET.MapProviders;

using GMap.NET;

namespace Admin_Tracker

{

public partial class DialogAdaugareTraseu : Form

{

private ListaTrasee lt;

private List<Carburant> carburanti;

public DialogAdaugareTraseu(ListaTrasee lt)

{

this.lt = lt;

InitializeComponent();

carburanti = new List<Carburant>();

Carburant benzina = new Carburant();

benzina.Nume = "Benzina";

benzina.Tip = 0;

Carburant motorina = new Carburant();

motorina.Nume = "Motorina";

motorina.Tip = 1;

Carburant gpl = new Carburant();

gpl.Nume = "GPL";

gpl.Tip = 2;

carburanti.Add(benzina);

carburanti.Add(motorina);

carburanti.Add(gpl);

cbCarburant.DataSource = carburanti;

List<utilizator> utilizatori = Entities.iaBaza().utilizator

.OrderBy(u => u.nume).ToList();

cbUser.DataSource = utilizatori;

}

private void DialogAdaugareTraseu_Load(object sender, EventArgs e)

{

GMapProvider.WebProxy = null;

hartaDestinatie.MapProvider = GoogleMapProvider.Instance;

hartaDestinatie.Manager.Mode = AccessMode.ServerOnly;

hartaDestinatie.Position = new PointLatLng(45.839722, 24.948144);

hartaDestinatie.MinZoom = 1;

hartaDestinatie.MaxZoom = 20;

hartaDestinatie.Zoom = 5;

hartaSosire.MapProvider = GoogleMapProvider.Instance;

hartaSosire.Manager.Mode = AccessMode.ServerOnly;

hartaSosire.Position = new PointLatLng(45.839722, 24.948144);

hartaSosire.MinZoom = 1;

hartaSosire.MaxZoom = 20;

hartaSosire.Zoom = 5;

}

private void btnSalvare_Click(object sender, EventArgs e)

{

if (cbUser.SelectedItem == null)

{

MessageBox.Show("Trebuie sa completati utilizatorul!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (cbTipTraseu.SelectedItem == null)

{

MessageBox.Show("Trebuie sa completati tipul traseului!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (txtNrInmat.Text.Length == 0 || txtNumeDest.Text.Length == 0 || txtNumeSosire.Text.Length == 0)

{

MessageBox.Show("Trebuie sa completati toate campurile!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

traseu t = new traseu();

t.destinatie_lat = hartaDestinatie.Position.Lat;

t.destinatie_lng = hartaDestinatie.Position.Lng;

t.destinatie_nume = txtNumeDest.Text;

t.nr_inmat_masina = txtNrInmat.Text;

t.sosire_lat = hartaSosire.Position.Lat;

t.sosire_lng = hartaSosire.Position.Lng;

t.sosire_nume = txtNumeSosire.Text;

t.tip_carburant = ((Carburant)cbCarburant.SelectedItem).Tip;

t.tip_traseu = cbTipTraseu.SelectedItem.ToString();

t.utilizator = (utilizator)cbUser.SelectedItem;

Entities.iaBaza().traseu.Add(t);

Entities.iaBaza().SaveChanges();

lt.puneTraseePeLista();

this.Dispose();

}

}

}

ANEXA 7

Finalizare traseu

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Drawing;

using System.Globalization;a

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class DialogFinalizare : Form

{

private ListaTrasee lt;

private traseu t;

public DialogFinalizare(traseu t,ListaTrasee lt)

{

this.lt = lt;

this.t = t;

InitializeComponent();

switch (t.tip_carburant)

{

case 0:

lblCarburant.Text = "Pret benzina:";

break;

case 1:

lblCarburant.Text = "Pret motorina:";

break;

case 2:

lblCarburant.Text = "Pret GPL:";

break;

}

}

private void btnFinalizare_Click(object sender, EventArgs e)

{

t.pret_carburant_folosit = double.Parse(txtPretCarburant.Text,CultureInfo.InvariantCulture);

t.data_sosire = DateTime.Now;

t.a_ajuns1 = 1;

t.a_ajuns2 = 1;

t.km_dus = int.Parse(txtKmDus.Text);

t.km_intors = int.Parse(txtNrKmIntors.Text);

Entities.iaBaza().SaveChanges();

MessageBox.Show("Traseul a fost finalizat!", "Succes", MessageBoxButtons.OK, MessageBoxIcon.Information);

lt.puneTraseePeLista();

this.Dispose();

}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

ProcessStartInfo sInfo = new ProcessStartInfo("http://viamichelin.com");

Process.Start(sInfo);

}

}

ANEXA 8

Editarea unui traseu

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using GMap.NET.MapProviders;

using GMap.NET;

namespace Admin_Tracker

{

public partial class DialogEditareTraseu : Form

{

private ListaTrasee lt;

private List<Carburant> carburanti;

private traseu t;

public DialogEditareTraseu(ListaTrasee lt,traseu t)

{

this.t = t;

this.lt = lt;

InitializeComponent();

carburanti = new List<Carburant>();

Carburant benzina = new Carburant();

benzina.Nume = "Benzina";

benzina.Tip = 0;

Carburant motorina = new Carburant();

motorina.Nume = "Motorina";

motorina.Tip = 1;

Carburant gpl = new Carburant();

gpl.Nume = "GPL";

gpl.Tip = 2;

carburanti.Add(benzina);

carburanti.Add(motorina);

carburanti.Add(gpl);

cbCarburant.DataSource = carburanti;

List<utilizator> utilizatori = Entities.iaBaza().utilizator

.OrderBy(u => u.nume).ToList();

cbUser.DataSource = utilizatori;

}

private void DialogAdaugareTraseu_Load(object sender, EventArgs e)

{

GMapProvider.WebProxy = null;

hartaDestinatie.MapProvider = GoogleMapProvider.Instance;

hartaDestinatie.Manager.Mode = AccessMode.ServerOnly;

hartaDestinatie.Position = new PointLatLng(t.destinatie_lat, t.destinatie_lng);

hartaDestinatie.MinZoom = 1;

hartaDestinatie.MaxZoom = 20;

hartaDestinatie.Zoom = 5;

hartaSosire.MapProvider = GoogleMapProvider.Instance;

hartaSosire.Manager.Mode = AccessMode.ServerOnly;

hartaSosire.Position = new PointLatLng(t.sosire_lat, t.sosire_lng);

hartaSosire.MinZoom = 1;

hartaSosire.MaxZoom = 20;

hartaSosire.Zoom = 5;

cbTipTraseu.SelectedItem = t.tip_traseu;

cbUser.SelectedItem = t.utilizator;

txtNumeDest.Text = t.destinatie_nume;

txtNrInmat.Text = t.nr_inmat_masina;

txtNumeSosire.Text = t.sosire_nume;

if (t.tip_carburant.HasValue)

{

cbCarburant.SelectedIndex = t.tip_carburant.Value;

}

}

private void btnEditare_Click(object sender, EventArgs e)

{

if (cbUser.SelectedItem == null)

{

MessageBox.Show("Trebuie sa completati utilizatorul!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (cbTipTraseu.SelectedItem == null)

{

MessageBox.Show("Trebuie sa completati tipul traseului!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (txtNrInmat.Text.Length == 0 || txtNumeDest.Text.Length == 0 || txtNumeSosire.Text.Length == 0)

{

MessageBox.Show("Trebuie sa completati toate campurile!", "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

t.destinatie_lat = hartaDestinatie.Position.Lat;

t.destinatie_lng = hartaDestinatie.Position.Lng;

t.destinatie_nume = txtNumeDest.Text;

t.nr_inmat_masina = txtNrInmat.Text;

t.sosire_lat = hartaSosire.Position.Lat;

t.sosire_lng = hartaSosire.Position.Lng;

t.sosire_nume = txtNumeSosire.Text;

t.tip_carburant = ((Carburant)cbCarburant.SelectedItem).Tip;

t.tip_traseu = cbTipTraseu.SelectedItem.ToString();

t.utilizator = (utilizator)cbUser.SelectedItem;

Entities.iaBaza().SaveChanges();

lt.puneTraseePeLista();

this.Dispose();

}

private void cbTipTraseu_SelectedIndexChanged(object sender, EventArgs e)

{

}

}

}

ANEXA 9

Afișarea locației curente

using GMap.NET;

using GMap.NET.MapProviders;

using GMap.NET.WindowsForms;

using GMap.NET.WindowsForms.Markers;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Admin_Tracker

{

public partial class DialogLocatie : Form

{

private traseu t;

private GMarkerGoogle marker_mylocation;

private GMapOverlay markersOverlay;

private GMapRoute route;

private List<PointLatLng> points;

private List<locatie> locatii;

public DialogLocatie(traseu t)

{

this.t = t;

InitializeComponent();

}

private void DialogLocatie_Load(object sender, EventArgs e)

{

locatie l = t.locatie.OrderBy(l1 => l1.timp).FirstOrDefault();

if (l == null)

{

MessageBox.Show("Acest utilizator nu a raportat nicio locatie pana acum");

this.Dispose();

return;

}

locatii = t.locatie.OrderBy(loc => loc.timp).ToList();

points = new List<PointLatLng>();

//points.Add(new PointLatLng(t.sosire_lat,t.sosire_lng));

foreach (locatie locatie in locatii)

{

points.Add(new PointLatLng(locatie.lat, locatie.lng));

}

GMapProvider.WebProxy = null;

harta.MapProvider = GoogleMapProvider.Instance;

harta.Manager.Mode = AccessMode.ServerOnly;

//markere

harta.MarkersEnabled = true;

markersOverlay = new GMapOverlay("markers");

marker_mylocation = new GMarkerGoogle(new PointLatLng(l.lat, l.lng), GMarkerGoogleType.green);

marker_mylocation.ToolTipText = "Locatie curenta";

marker_mylocation.ToolTipMode = MarkerTooltipMode.Always;

GMarkerGoogle mstart = new GMarkerGoogle(new PointLatLng(t.sosire_lat, t.sosire_lng), GMarkerGoogleType.orange);

mstart.ToolTipText = "Domiciliu";

mstart.ToolTipMode = MarkerTooltipMode.Always;

GMarkerGoogle mplecare = new GMarkerGoogle(new PointLatLng(t.destinatie_lat, t.destinatie_lng), GMarkerGoogleType.red);

mplecare.ToolTipText = "Destinatie";

mplecare.ToolTipMode = MarkerTooltipMode.Always;

markersOverlay.Markers.Add(marker_mylocation);

markersOverlay.Markers.Add(mstart);

markersOverlay.Markers.Add(mplecare);

harta.Overlays.Add(markersOverlay);

route = new GMapRoute(points,"ruta");

harta.RoutesEnabled = true;

markersOverlay.Routes.Add(route);

harta.Position = new PointLatLng(l.lat,l.lng);

harta.MinZoom = 1;

harta.MaxZoom = 20;

harta.Zoom = 10;

}

}

}

ANEXA 10

Tabelul „locatie”

CREATE TABLE `locatie` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`traseu_id` INT(11) NOT NULL,

`lat` DOUBLE NOT NULL,

`lng` DOUBLE NOT NULL,

`timp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`),

INDEX `traseu_id` (`traseu_id`),

CONSTRAINT `locatie_ibfk_1` FOREIGN KEY (`traseu_id`) REFERENCES `traseu` (`id`) ON UPDATE CASCADE ON DELETE CASCADE

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=14

;

ANEXA 11

Tabelul „traseu”

CREATE TABLE `traseu` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`utilizator_id` INT(11) NOT NULL,

`tip_traseu` VARCHAR(50) NOT NULL DEFAULT 'CONCEDIU DE ODIHNA',

`destinatie_nume` VARCHAR(300) NOT NULL,

`destinatie_lat` DOUBLE NOT NULL,

`destinatie_lng` DOUBLE NOT NULL,

`sosire_nume` VARCHAR(300) NOT NULL,

`sosire_lat` DOUBLE NOT NULL,

`sosire_lng` DOUBLE NOT NULL,

`nr_inmat_masina` VARCHAR(20) NOT NULL,

`tip_carburant` INT(11) NULL DEFAULT NULL,

`km_dus` INT(11) NULL DEFAULT NULL,

`km_intors` INT(11) NULL DEFAULT NULL,

`data_plecare` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

`data_sosire` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',

`a_ajuns1` TINYINT(4) NOT NULL DEFAULT '0',

`a_ajuns2` TINYINT(4) NOT NULL DEFAULT '0',

`pret_carburant_folosit` DOUBLE NULL DEFAULT NULL,

PRIMARY KEY (`id`),

INDEX `utilizator_id` (`utilizator_id`),

CONSTRAINT `traseu_ibfk_1` FOREIGN KEY (`utilizator_id`) REFERENCES `utilizator` (`id`) ON UPDATE CASCADE ON DELETE CASCADE

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=5

;

ANEXA 12

Tabelul „utilizator”

CREATE TABLE `utilizator` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`email_anp` VARCHAR(300) NOT NULL,

`parola` VARCHAR(300) NOT NULL,

`nume` VARCHAR(300) NOT NULL,

`cnp` VARCHAR(13) NOT NULL,

`admin` TINYINT(1) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`),

UNIQUE INDEX `Index 2` (`cnp`)

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=3

;

ANEXA 13

PROCEDURA – P/PMDB/F– 10 – DECONTAREA CHELTUIELILOR DE TRANSPORT PENTRU FUNCȚIONARII PUBLICI CU STATUT SPECIAL

Registru de evidență a mijloacelor de transport proprietate personală

ANEXA 14

PROCEDURA – P/PMDB/F– 10 – DECONTAREA CHELTUIELILOR DE TRANSPORT PENTRU FUNCȚIONARII PUBLICI CU STATUT SPECIAL

Borderou centralizator distanțe între localități pentru decontarea trasportului la și de la locul de muncă

Verificat, Întocmit,

Avizat,

ANEXA 15

PROCEDURA – P/PMDB/F– 10 – DECONTAREA CHELTUIELILOR DE TRANSPORT PENTRU FUNCȚIONARII PUBLICI CU STATUT SPECIAL

Situația persoanelor care beneficiază de transportul la și de la locul de muncă

Contabil șef, Întocmit,

Director economic,

ANEXA 16

PROCEDURA – P/PMDB/F– 10 – DECONTAREA CHELTUIELILOR DE TRANSPORT PENTRU FUNCȚIONARII PUBLICI CU STATUT SPECIAL

Contabil șef, Întocmit,

ANEXA 17

Pagina principală „LoginActivity”

}

});

}

}

ANEXA 18

Detector schimbare locație

}

}

ANEXA 19

Procesator locație

ANEXA 20

Procesator login

ANEXA 21

Procesator răspuns

ANEXA 22

WEBApi

ANEXA 23

LocatieController

ANEXA 24

LoginController

Similar Posts