Proiectarea Bazei de Date Pentru O Casa de Marcat

Cap. 1. Introducere

Una dintre primele invenții de urmărire a tranzacțiilor comerciale a fost abacul, un instrument care ajută la efectuarea de calcule aritmetice, inventat cu peste 4500 de ani în urmă.

Casa de marcat a fost inventata in 1879 de catre James Ritty, un patron de bar din Dayton, Ohio. Avand nevoie de o metoda prin care sa controleze casierii si vanzarile, a patentat un dispozitiv inspirandu-se ca si principiu de functionare de la un mecanism care aduna numarul de revoluții ale unei elicii de vapor. Aceasta inventie a denumit-o ulterior “Casierul Incoruptibil”.

In 1906 a aparut prima casa de marcat electrica, proiectata de catre Edward A. Deeds, numit apoi Vice-Presedinte al NCR (National Cash Register). Proprietarii de magazine, au salutat aparitia acestor mașini, nu doar pentru faptul ca tineau mai bine evidența vânzărilor de zi cu zi, ci si pentru că beneficiau de o mai bun control al inventarului [1].

Astăzi, funcțiile de marcat mecanice sunt efectuate de către versiuni electronice, sau de calculator bazate pe POS (Point of Sale) sisteme care monitorizează activitatea într-un magazin întreg, vânzările de înregistrare, analiza de afaceri, de inventar si de control.

Programele POS sunt o soluție complexă de ultimă generație, dedicată mediului retail. Această suită sintetizează experiența acumulată timp în domeniul comerțului cu amănuntul, într-o formă standardizată și coerentă. Acestea se modeleaza la necesitatea comercianților de a reduce costurile și de a îmbunătăți performanțele afacerii, oferind vizibilitate asupra întregului proces de vânzare și asigurând capabilități îmbunătățite pentru un management centralizat a rețelei de magazine.

Pentru a satisface solicitările comerțului modern și cumpărătorii bine informați, comercianții (în special cei care operează rețele de magazine cu mai multe departamente) caută metode de a atrage noi clienți și de a transforma clienții existenți în promotori ai afacerii.

Aplicatiile de vânzare care rulează pe terminalele POS și care gestionează o mare varietate de periferice avand o arhitectura deschisă permit personalizarea interfeței de vânzare și se pot adapta fluxurilor de business al diferitelor magazine sau departamentelor din cadrul unui magazin. Acestea includ de asemenea instrumente ce permit utilizatorilor să creeze diverse documente (bonuri de vânzare și retur, facturi etc.), avand cerințe hardware minimale pentru terminalul POS, avand multiple funcționalități, în afara celei de vânzare, care pot fi utilizate fără a fi necesara înlocuirea echipamentelor și perifericelor existente.

De asemenea, aceste aplicatii ajuta la vizualizarea in timp real a activitatii magazinului indiferent de locul in care se afla utilizatorul si totodata poate dispune de asistenta chiar si atunci cand nu are conexiune la Internet, prin sincronizarea automata a datelor cu serverul central la stabilirea unei conexiuni. Astfel, se pot emite bonuri si facturi indiferent de locatia utilizatorului.

Mai mult, cu ajutorul acestor sisteme se pot realiza cumparaturi mult mai usor, prin scanarea codului de bare al oricarui articol sau prin selectarea intuitiva a produselor si cautarea acestora dupa criterii multiple. Eficiente si simplu de utilizat, aceste aplicatii POS dau libertate si mobilitate comerciantilor, ajutandu-i astfel sa interactioneze mai usor cu clientii pentru a-si imbunatati si extinde afacerile.

Aplicațiile mobile reprezintă un interes tot mai sporit în ultimii ani și acest lucru datorită ușurinței cu care utilizatorii acestora pot fi informați într-un timp foarte scurt.

Accesul la informație într-un timp cât mai scurt reprezintă în ziua de azi o necesitate. Ideea de a dezvolta aplicații pentru dispozitive mobile care să se bazeze pe tehnologii fără fir a făcut ca mulți dezvoltatori să creeze o mare varietate de aplicații folositoare oamenilor. Un serviciu important în utilizarea acestor aplicații este cel de Wi-Fi ce permite conectarea la rețeaua de Internet.

Cap. 2. Tema de proiectare

Scopul acestui proiect consta in realizarea unui sistem informatic responsabil de efectuarea vanzarilor folosind imprimante fiscale sau case de marcat fiscale utilizate in acest regim. Aceasta trebuie sa asigure toate functionalitatile necesare intr-un backoffice de magazin, fiind responsabil de organizarea magazinului, de controlul fluxului de marfa din momentul intrarii in magazin pana la iesirea prin punctele de vanzare si de interactiunea cu celelalte magazine in cazul unei retele de magazine.

Sistemul trebuie sa fie functional atat in regim online, cu tranzactionare in timp real a stocului cat si in regim offline, independent, cu operarea stocului chiar si atunci cand reteaua este intrerupta.

Prin functiile proprii, programul software "ARM Soft" va pune la dispozitia managerului de magazin in timp real toate informatiile legate de functionarea magazinului cum ar fi: informatii in timp real asupra listei de produse comercializate in reteaua de magazine, stocul aferent fiecarui produs in parte incluzand si preturile acestuia, gestionarea si supervizarea avizelor transferate intre magazine, vizualizaarea produselor vandute precum si accesul la o gama larga de setari specifice gestionarii magazinelor intr-un mod cat mai eficient. In plus sunt prevazute diverse filtre pentru a gasi cu o precizie cat mai mare informatiile cautate fara a mai fi nevoie de o inventariere a acestora.

Programul va asigura desfasurarea procesului de vanzare cu amanuntul in orice tip de magazin avand o interfata de vanzare automatizata, acesta fiind proiectat sa opereze pe sisteme cu interfata touchscreen sau pe terminale dotate cu tastatura si display clasic.

La realizarea acestui proiect se va realiza si o aplicatie care sa ruleze pe terminale mobile prin intermediul careia sa se poata verifica la orice moment de timp lista de produse si stocul din cadrul oricarui punct de lucru.

Cap. 3. Consideratii teoretice

Case de marcat

Istoria caselor de marcat

Una dintre primele invenții de urmărire a tranzacțiilor comerciale a fost abacul, un instrument care ajută la efectuarea de calcule aritmetice. Inventat cu peste 4500 de ani în urmă, în orientul mijlociu, a fost dezvoltat ulterior de egipteni și chinezi pana a ajuns la forma sa actuală. Cuvântul “abac” vine din greacă abax, care înseamnă “tabla de numarat”. Casele de marcat astăzi transpun de fapt, intr-un mod mecanic, multe dintre funcțiile abacului.

Casa de marcat a fost inventata in 1879 de catre James Ritty, un patron de bar din Dayton, Ohio. Avand nevoie de o metoda prin care sa controleze casierii si vanzarile, a patentat un dispozitiv inspirandu-se ca si princpiu de functionare de la un mecanism care aduna numarul de revoluții ale unei elicii de vapor [1].

Dispozitivul cu carcasa din lemn utiliza clapete de metal marcate cu numere care indicau o valoare de vanzare, avand atasat si un cloptel ce avertiza fiecare operatiune. Avea, de asemenea, un sumator care totaliza valorile de numerar marcate pe parcursul unei zile. In 1884 Ritty a vandut inventia lui Iacov H. Eckert pentru 6.500 de dolari, dupa care a fost achizitionata de John H. Patterson care a lansat-o în producție pe scara larga sub egida companiei sale nou formate National Cash Register, binecunoscuta NCR [2].

Mecanismele timpurii

„Sumatorul detaliat”, acum deja depășit, este cel mai vechi tip de mecanism cu excepția versiunii originale de hârtie-rola-mașină. Este un modul non-imprimare cu contoare(roti dintate) legate în mod individual de fiecare tasta, astfel încât sumele înregistrate de fiecare tasta sunt totalizate pe contoare separate. De exemplu: trei apasari pe tasta de 5 centi ar fi contorizat un total de 15 centi. Fiecare contor reprezenta o singura rotita împărțita în aproximativ treizeci de divizii, iar atunci când se realiza o revoluție completă a unui contor, totalul era transferat în mod automat la un contor secundar. Deoarece in acest mod se realiza transferul de la o rotita la cealalta, contorul celei dintai se reseta automat la zero. Pentru a afla totalul zilei, era necesar să se adune rotatiile fiecarui contor. Casele de marcat aveau afisata o eticheta “NS”, care este abreviat pentru “No Sale”(fara vanzare). De cate ori se deschidea sertarul de bani, se imprima o confirmare pe pe bon menționând “fara vanzare”, care se înregistra si în registrul jurnal, atentionand ca sertarul a fost deschis. Alte case de marcat necesitau o parolă numerică pentru a deschide sertarul de bani in afara vanzarii [1].

In 1906 a aparut prima casa electrica iar proprietarii de magazine, au salutat aparitia acestor mașini, nu doar pentru faptul ca tineau mai bine evidența vânzărilor de zi cu zi, ci pentru că beneficiau de o mai bun control al inventarului. Între 1884, când a devenit populara și 1916 (primul război mondial), s-au vândut mai mult de 1,5 milioane de bucati.

Primul Război Mondial a marcat sfârșitul erei vechi a caselor de marcat cand acestea deja nu mai reprezentau o atractie, producatorii fiind interesati de reducerea costului de fabricatie, iar comerciantii urmarind in special utilitatea si functionalitatea acesteia [3].

Astăzi, funcțiile de marcat mecanice sunt efectuate de către versiuni electronice, sau de calculator bazate pe POS (Point of Sale) sisteme care monitorizează activitatea într-un magazin întreg, vânzările de înregistrare, analiza de afaceri, de inventar si de control.

3.2. Coduri de bare

Codul de bare este o reprezentare de date codificată (cifrată), destinată a fi citită pe cale optică.

Numele oficial al codului de bare (linii negre și spații albe) este Universal Product Code (UPC). Codul de bare apare ca o bandă orizontală imprimată care este formată din bare verticale de lațimi diferite, grupuri care reprezintă cifre zecimale și sunt utilizate pentru a identifica produse comercial. Codurile de bare sunt citite și decodate cu ajutorul unor scanere speciale care măsoară reflexia luminii, interpretează codurile drept cifre și litere și trimit acestea unui calculator sau altui dispozitiv de gestionare a datelor [4].

Codul de bare a fost inventat în anul 1952 de Woodland și Silver, și a început să fie folosit în comerț după anul 1966. Toate produse vândute în comerțul liber sunt numerotate și au atribuite coduri de bare la standarde mondiale, care au fost introduse în SUA în anul 1973 iar în restul lumii în anul 1977. În SUA Uniform Code Council împreună cu EAN Internațional (autoritatea internațională de numerotare articol), alocă blocuri de numere unice de 12 sau 13 cifre pentru companiile membre prin intermediul unei autorități naționale de numerotare. În Marea Britanie acest rol îi este atribuit Asociației “Article Number Association” [4]. Cele mai multe companii au alocate 100.000 de numere pe care le pot utiliza pentru a identifica oricare dintre produsele, serviciile sau locațiile lor. Fiecare cod conține de obicei o zonă “quiet”, un caracter de start, un caracter dată, o cifră opțională de verificare, un caracter de stop și o altă zonă “quiet” la sfârșit. Toate codurile de bare dispun de un caracter special de start/stop ce permite citirea atât de la stânga la dreapta, cât și de la dreapta la stânga. Prin convenție caracterul din stânga este considerat caracterul de start și caracterul din dreapta caracterul de stop. Cifra de control este folosită pentru a verifica dacă numărul a fost scanat corect, iar zona “quite” poate fi albă, roșie sau galbenă dacă este vizualizată de un scanner rosu [5].

Unele coduri de bare pot sa contina caractere de control pozitionate chiar inainte de caracterul de stop. Caracterul de control este calculat cand codul de bare este imprimat aplicandu-se o formula asupra caracterelor continute de codul de bare. Cititorul in momentul citirii aplica aceeasi formula si compara rezultatul cu caracterul de control. Daca cele doua valori nu sunt identice, cititorul presupune ca este ceva gresit si reia scanarea.

Cititoarele de coduri de bare folosesc de obicei lumină roșie vizibilă cu o lungime de undă între 632,8 și 690 nanometri [6].

Codurile de bare au fost introduse deoarece mașinile (calculatoarele) în general nu citesc cu ușurință reprezentarea grafică normală a cifrelor și literelor; pentru aceasta s-a dezvoltat domeniul specializat numit „Recunoașterea optică a caracterelor” (în engleză: Optical Character Recognition, OCR), care încă mai are puncte slabe.

Codul de bare linear (1D)

Codul de bare linear, denumit și uni-dimensional (1D) este un cod de bare reprezentat prin linii (spații și bare negre paralele). Codul de bare EAN este liniar, așa cum sunt Code 39, Code 93 și Code 128. Odată cu dezvoltarea tehnologiei, codurile de bare au evoluat și ele în diverse alte forme cum ar fi, dreptunghiuri, puncte, hexagoane și alte modele geometrice în ouă dimensiuni, acestea fiind cunoscute sub denumirea de coduri de bare bidimensionale sau 2D.

Interpretarea codului de bare

Indicativul țării este format din 3 cifre și se aplică produselor fabricate și comercializate în țara respectivă – codul 594 este atribuit României (există și țări în care prefixul este format din 2 cifre, Franța-33, Germania-49, Grecia-30, Australia-27, Brazilia-55, Canada-61, Belgia-32). Identificarea producătorului și a produsului se face prin 9 cifre (4 cifre pentru producător și 5 cifre pentru produsul respectiv). Cifra de control este necesară pentru ușurința citirii optice.

Fiecare caracter este reprezentat de o secvență de linii mai înguste sau mai groase precum în imagine [6], [7]:

Reprezentarea unui caracter printr-o secvență de linii mai înguste sau mai groase

Un cod de bare obișnuit este format din următoarele zone:

Zona “QUIET”- spațiul minim necesar pentru scanarea codului de bare, precede caracterul de Start a unui simbol de cod de bare. Zona “quiet” trebuie să fie de zece ori lățimea celui mai îngust element din codul de bare, sau minim 0.25 inci. Această zonă mai este denumită și “Clear Area”;

Codul de start- indică începutul codului de bare. Acestea sunt caractere speciale de coduri de bare, ele semnificând începutul datelor pentru scanner/cititor;

Data- datele actuale pe care codurile de bare le stochează;

Cifra de control- cifra de control (nu întotdeauna prezentă), este o sumă matematică care este folosită pentru a verifica acuratețea celorlalte elemente ale codului de bare. Aceasta este cifra suplimentară adaugată la sfarșitul unui cod de bare pentru a permite scannerului confirmarea corectitudinii codului de bare;

Codul de Stop- indică punctul de oprire al codului de bare. Aceste caracatere semnifică sfârșitul datelor pentru scanner/reader;

Quiet Zone- un alt spațiu liber ce urmează după Codul de Stop [5].

Structura unui cod de bare

Fiecare tip de cod de bare începe cu un caracter special de start și se termină cu un caracter special de stop. Aceste caractere ajută cititorul să detecteze codul de bare și să-și dea seama dacă este scanat de la început la sfârșit sau invers.

Unele coduri de bare pot să conțină caractere de control poziționate chiar înainte de caracterul de stop. Caracterul de control este calculat când codul de bare este imprimat aplicându-se o formulă asupra caracterelor conținute de codul de bare. Cititorul în momentul citirii aplică aceeași formulă și compară rezultatul cu caracterul de control. Dacă cele două valori nu sunt identice, cititorul presupune că este ceva greșit și reia scanarea [5].

Simbologia de coduri de bare si standarde pentru etichete autocolante

O simbologie de coduri de bare defineste detaliile tehnice ale unui anume tip de coduri de bare: latimea liniilor, setul de caractere, metoda de codificare, specificatii cu privire la calculul digitului de control, etc. Cei mai multi utilizatori sunt interesati de proprietatile generale ale unei anumite simbologii de coduri de bare (ce fel de date si in ce cantitate poate codifica, care sunt aplicatiile sale generale) decat de caracteristicile strict tehnice.

Există diverse tipuri de coduri de bare, fiecare cu un format propriu de linii și spații:

codul UPC 90 ( ISO/IEC 15420 Cod de bare – EAN/UPC) folosit pentru produsele ambalate individual;

codul Interleaved 2 of 5 (SO/IEC 16390 Cod de bare – Interleaved 2-of-5 (ITF25)) este folosit în primul rând în industria depozitelor;

codul Code 39 ( ISO/IEC 16388 Cod de bare – Code 39) este un cod de bare discret. Aceasta implică faptul ca un singur caracter este reprezentat de un model fix de bare;

codul Code 128 (ISO/IEC 15417 Codul de bare – Code 128) CODE 128 permite întregului set de 128 de caractere ASCII să fie codificate [9].

EAN-13

EAN-13 este folosit in intreaga lume pentru a marca bunuri comercializate retail. Acest cod de are codifica 13 caractere: primele doua sau trei sunt codul tarii in care producatorul este inregistrat (poate sa nu coincida cu tara in care produsul a fost de fapt realizat). Codul de tara este urmat de 9 sau 10 digiti de date (acest lucru depinde de lungimea codului tarii) si un singur digit de control. Se mai pot adauga coduri de bare suplimentare formate din 2 sau 5 digiti rezultand astfel un total de 14 sau 17 digiti de date.

Uniform Code Council (organizatia care reglementeaza codurile de bare pentru retail in SUA) a anuntat ca incepand cu data de 1 ianuarie 2005, toate sistemele de scanare de retail din SUA vor trebui sa accepte simboluri EAN-13 precum si standardul UPC-A. Aceasta schimbare va elimina necesitatea ca producatorii ce exporta bunuri in SUA si Canada sa-si eticheteze produsele in doua standarde [10].

Suma de control este reprezentata de un calcul modulo 10:

1.Adunati valorile digitilor aflati in pozitii reprezentate de numere pare: 2, 4, 6, etc.

2.Inmultiti rezultatul cu 3.

3.Adunati valorile digitilor aflati in pozitii reprezentate de numere impare: 1, 3, 5, etc.

4.Insumati rezultatele pasilor 2 si 3.

5.Caracterul de control este cel mai mic numar care, adunat cu rezultatul de la pasul 4, produce un multiplu de 10.

Exemplu: Fie urmatorul cod de bare = 001234567890

1. 0 + 2 + 4 + 6 + 8 + 0 = 20

2. 20 * 3 = 60

3. 0 + 1 + 3 + 5 + 7 + 9 = 25

4. 60 + 25 = 85

5. 85 + X = 90 (cel mai apropiat numar mai mare sau egal multiplu de 10), rezulta X = 5 (digit de control) [11].

Exemplu de cod EAN-13

Funcționalitatea unui scanner laser

Scannerele citesc și captează informația conținută în codurile de bare și extrag informațiile optice de la codurile de bare. Când simbolurile de coduri de bare sunt iluminate, lumina reflectată este detectată de un senzor optoelectronic. Intensitatea luminii reflecatate de barele negre este mai mică decât cea a spațiilor. Lumina reflecatată este convertită în semnale electrice de tensiune, semnalele analogice sunt transformate în semnale digitale (date brute), acesta fiind alimentat la decoderul care convertește aceste date în caractere ce reprezintă codul simbolurilor.

Un cititor de coduri de bare foloseste un senzor optic pentru a converti codul de bare intr-un impuls electric pe masura ce fascicolul trece pe deasupra codului. Apoi cititorul masoara grosimile relative alte liniilor si spatiilor intalnite, decodifica aceste secvente, le transforma inapoi in caractere si le transmite la computer sau la un terminal portabil.

Fiecare tip de cod de bare incepe cu un caracter special de start si se termina cu un caracter special de stop. Aceste caractere ajuta cititorul sa detecteze codul de bare si sa-si dea seama daca este scanat de la cap la coada sau invers. Unele coduri de bare pot sa contina caractere de control pozitionate chiar inainte de caracterul de stop. Caracterul de control este calculat cand codul de bare este imprimat aplicandu-se o formula asupra caracterelor continute de codul de bare. Cititorul in momentul citirii aplica aceeasi formula si compara rezultatul cu caracterul de control. Daca cele doua valori nu sunt identice, cititorul presupune ca este ceva gresit si reia scanarea [12]

Funcționalitatea unui scanner laser

Forme de prezentare, fixare si utilizare a scanerelor

Hand-held (De mana)

Conceput sa fie utilizat direct de operator.

Scaner Hand-held (De mana)

Countertop (Pe tejghea)

Acest tip de cititoare stau pe tejghea si sunt in general proiectate sa detecteze prezenta obiectelor care sunt apropiate de operator, in momentul detectiei declanseaza raza laser si scaneaza codul de bare. De obicei cititorul nu are doar o singura raza de scanare ci o "zona" de scanare formata din mai multe grupuri de raze paralele care se intersecteaza sub un anumit unghi, totul pentru a se realiza scanarea cat mai usor cu putinta.

Scanner In-Counter (incorporat in tijghea)

In-counter (incorporat in tejghea)

Acest tip de cititoare sunt recomandate pentru volume mari de scanare si sunt optiunea ideala pentru magazine. Cititorul este montat sub suprafata tejghelei iar razele laser sunt proiectate in sus printr-un geam fixat de obicei la acelas nivel cu suprafata tejghelei. Acest tip de cititoare pot fi incorporate intr-un mecanism de cantarire astefel incat produsele sa fie si cantarite.

Scaner In-counter (incorporat in tijghea)

Above-Belt (Suspendat pe linie)

Aceste cititoar sunt suspendate deasupra liniilor automate de productie si scaneaza codurile de bare de pe obiectele care se deplaseaza pe linie. Sunt folosite cu preponderenta pentru operatiuni de sortare de mare viteza.

Scaner Above-Belt (Suspendat pe linie)

Fixed mount (Incorporat)

Aceste cititoare sunt destinate aplicatiilor industriale, pentru a citi coduri de bare de pe aparate, componente sau cantainere. In general sunt incorporate in utilaje.[12]

Scaner Fixed mount (Incorporat)

Tipuri de interfete

Keyboard Wedge (inseriat cu tastatura)

Cititorul se conecteaza intre tastatura si calculator folosind un cablu in Y. Datele de la cititor apar in calculator in locul in care se afla prompterul de tastatura ca si cand ar fi fost introduse manual. Aceasta este un tip de interfata folosita de aplicatii independente, atata timp cat nu trebuie instalat nici un alt modul software.

Cititoarele sunt de asemenea disponibile cu posibilitatea de conectare pe portul USB. El se conecteaza direct la portul USB dar este perceput de sistem si se comporta ca si cum ar fi conectat la tastatura. Avantajul conectarii pe USB este data de utilizarea unui cablu simplu si de faptul ca poate si utilizat pe mai multe tipuri de sisteme.

Interfata Keyboard Wedge (inseriat cu tastatura)

Seriala/USB

Datele de la cititor sunt transmise printr-un port serial la calculator. Software-ul trebuie sa aiba prevazut un modul de captare a portului serial. Deoarece datele sunt transmise pe alta cale decat cele introduse de la tastatura, aplicatia poate controla direct care date sa fie acceptate si din ce sursa; acest lucru poate fi benefic pentru sitemele de urmarire a productiei unde verificarea erorilor este vitala.

Interfata seriala / USB { http://www.coduridebare.com/cititor_coduri_de_bare_rs232.html}

Cititoare mobile cu raza mica

Cunoscute si sub numele de cititoare RF (radio-frecventa) cu raza scurta, acestea includ o baza de comunicatie RF care se conecteaza in general la calculator printr-un cablue inseriata cu tastatura. Distanta la care se poate departa cititorul de baza fara a pierde semnalul variaza de la model la model si in general se incadreaza intre 300 si 1500m.

Interfata cititoare mobile cu raza mica { http://www.coduridebare.com/cititoare_portabile_rf.html}

Terminale portabile

Acest tip de cititor are, in majoritatea cazurilor, tastatura si ecran si poate fi programat sa indrume operatorul prin numeroase meniuri si sa il ajute la introducerea informatiilor. Unele modele nu sunt dotate cu tastatura, ecran si nu sunt programabile, deoarece s-a dorit obtinerea unor cititoare de foarte mici dimensiuni. Datele sunt stocate in memoria cititorului; cititorul poate fi conectat la un server printr-o baza de comunicatie sau prin cablu de date, astfel realizandu-se transferul datelor catre server. In general, datele sunt transferate intr-un fisier text, despartite prin virgula, pentru a putea fi usor importate in bazele de date.

Interfata terminale portabile { http://www.coduridebare.com/terminale_portabile.html}

Terminale portabile RF

Acest tip de cititor solicita o existenta unei retele de tip telefonie mobila. Un server central are atasat unul sau mai multe noduri de RF. Unul sau mai multe terminale portabile RF comunica cu serverul in mod continuu. In general acest tip de terminale au tastatura si display pentru a permite operatorului sa obtina si sa transmita de la si catre computer date sub o forma cat mai facila. Pe aceste echipamente se pot instala aplicatii dedicate sau poate fi optata pentru varianta ca fiecare terminal in parte sa se comporte ca un workstation emuland astfel parti din aplicatia existenta pe calculator.

Interfata terminale portabile RF { http://www.coduridebare.com/terminale_portabile_rf.html}

3.3. Baze de date

Societatea contemporană, caracterizată prin afluxul fără precedent de informație de diferite tipuri și pe diverse canale, necesită strategii și instrumente din ce in ce mai complexe pentru stocare, procesare și, mai ales, interpretare. In acest context, se pune problema transformării informației în date și organizarea acestora într-o asemenea manieră încât în orice moment să poată fi extrase, cu promptitudine și exactitate, datele favorabile realizării unui scop specific.

3.3.1. Datele

Datele sunt fapte culese din lumea reală. Ele sunt preluate din măsurători și observații și constituie orice mesaj primit de un receptor sub o anumită formă. O percepție a lumii reale poate fi privită ca o serie de obiecte sau fenomene distincte sau interdependente.

Datele în sine nu au nici un fel de semnificație. Mai mult decât atât, nefiind altceva decât o înșiruire de litere și cifre, ele pot primi diverse interpretări, cele mai multe dintre ele fiind, de obicei, greșite. Datele se refera la numere, fapte, diferite documente etc. Informațiile se referă la date organizate, date care au fost filtrate și ordonate după anumite criterii. Dorința oricărui utilizator este obținerea de informație și nu manipularea unor date seci. Un model de date corect alcătuit oferă posibilitatea transformării informațiilor în date și a acestora înapoi în informații fără a denatura sensul lor inițial. A obține informație înseamnă, de fapt, a introduce datele disponibile într-un anumit context conferindu-le în acest fel o anume semnificație. Ceea ce se înmagazinează într-o bază de date, așa cum am arătat, sunt datele care au o natură statică în sensul că ele rămân în aceeași stare până în momentul modificării lor de către administratorul bazei de date prin intermediul unui proces manual sau automat. Pentru ca datele să poată fi transformate în informație ele trebuie organizate astfel încât să poată fi prelucrate efectiv. Pentru a determina în cazul unei aplicații modul de organizare a datelor, trebuie determinate acele caracteristici ale datelor care permit extragerea esenței înțelesului lor [14].

O mulțime formală și consistentă de reguli definește un model de date. Pentru o aplicație particulară a unui model de date, numele obiectelor bazei de date împreună cu proprietățile lor și asocierile dintre ele se numește schemă. Un ansamblu de date organizat după anumite criterii reprezintă o colecție de date. O colecție de obiecte care au identitate proprie și sunt caracterizate de o condiție de apartenență se numește mulțime.

Procesul de definire și structurare a datelor în colecții, gruparea lor precum și stabilirea elementelor de legătură dintre componentele colecției și între colecții reprezintă organizarea datelor [15].

3.3.2. Sistem de gestiune a bazelor de date (SGBD)

Baza de date reprezintă una sau mai multe colecții de date aflate în interdependență împreună cu descrierea datelor și a relațiilor dintre ele. Bazele de date sunt gestionate cu ajutorul unui program numit sistem de gestiune al bazelor de date. Sistemul de gestiune a bazelor de date (SGBD) este un sistem de programe ce permite definirea, crearea și întreținerea bazei de date precum și accesul controlat la acesta [16].

Din punct de vedere conceptual, gestiunea bazelor de date se bazează pe ideea separării structurii bazei de date de conținutul acesteia. În sistemele de baze de date definirea datelor se separă de programele aplicație, astfel încât utilizatorii văd doar definiția externă a unui obiect fără a cunoaște modul în care e definit acesta și cum funcționează. În acest mod, definiția internă a obiectului poate fi modificată fără a afecta utilizatorii acestuia dacă nu se modifică definiția externă. De exemplu, dacă sunt adăugate noi structuri de date sau sunt modificate cele existente, atunci programele aplicație nu sunt afectate dacă nu depind direct de ceea ce se modifică.

Structura bazei de date reprezintă o colecție de descrieri statice ale tipurilor de entități împreună cu relațiile logice stabilite între ele.

Relațiile logice reprezintă asociațiile dintre mai multe entități. O entitate este un obiect distinct ce trebuie reprezentat în baza de date. Un atribut este o proprietate ce descrie un anumit aspect al obiectului ce se înregistrează în baza de date. Scopul unui sistem de gestiune al unei baze de date este acela de a oferi un mediu care să fie și convenabil, dar și eficient pentru a putea fi folosit la extragerea informațiilor din baza de date precum si la înmagazinarea datelor în baza de date [17].

3.3.3. Bază de date relațională

În sens larg, o bază de date este o colecție de date organizată (structurată). O bază de date are, în principal, următoarele roluri: stocare (memorare) și organizarea datelor (structurare).

Ca și utilitate, bazele de date ne permit memorarea unor cantități mari de date, regăsirea datelor pe baza unor criterii ce căutare (ce sunt legate în mod direct de structurarea datelor), dar și prelucrarea unor volume mari de date (filtrare, ordonare, agregare).

Bazele de date relaționale sunt un tip de baze de date în care datele, văzute ca și atribute ale entităților reale, sunt socate în tabele și sunt legate între ele prin relații.

Acest mod de structurare a datelor, bazat pe legături între date, permite eliminarea redundanței, astfel încât stocarea și, mai ales, modificarea unei informații se face într-un singur loc, iar, din punct de vedere funcțional, această structură permite regăsirea, filtrarea, ordonarea și agregarea datelor, în mod natural [18].

3.3.4. Proiectarea Bazei de date

Dezvoltarea sistemelor de baze de date comportă mai multe etape, care pot fi prezentate astfel:

Analiza și definirea sistemului: definirea scopului sistemului de baze de date, a utilizatorilor și a aplicațiilor acestuia.

Proiectarea sistemului: în această etapă se realizează proiectul logic și proiectul fizic al sistemului, pentru un anumit SGBD ales.

Implementarea: este etapa în care se scriu definițiile obiectelor bazei de date (tabele, vederi, etc.) și se implementează aplicațiile software.

Incarcarea(sau conversia) datelor : popularea bazei de date,fie prin incarcarea directa a datelor,fie prin conversia unor date existente sub diferite alte forme.

Conversia aplicatiilor:toate aplicatiile software existente in sistemele informatice recedente ale organizatiei se convertesc in noul sistem.

Testarea și validarea: noul sistem de baze de date este testat și validat cât mai riguros posibil.

Operarea:sistemul de baze de date este pus la dispozitia utilizatorilor sai cu toate aplicatiile realizate in cadrul sistemului informatic al organizatiei.

Monitorizarea si intretinerea: pe tot parcursul etapei de operare sistemul de baze de date trebuie sa fie in mod permanent monitorizat si intretinut pentru a sigura consistenta si securitatea datelor si pentru a permite atat cresterea continutului de date cat si dezvoltarea de noi aplicatii software.Pot fi necesare la anumite intervale de timp,revizii si reorganizari ale sistemului de baze de date [19].

În general, se consideră că etapa de proiectare a unei baze de date se pot diviza, la rândul ei, în mai multe faze :

Proiectarea conceptuală a bazei de date;

Alegerea unui SGBD;

Proiectarea logică a bazei de date;

Proiectarea fizică a bazei de date.

În mod tipic, dezvoltarea unei baze de date constă din desfășurarea a două categorii de activități paralele, așa cum se poate vedea în figura de mai jos [20]:

Prima categorie de activități se referă la proiectarea structurii și a conținutului bazei de date, iar cea de-a doua categorie se referă la proiectarea modului de prelucrare a datelor. Aceste două categorii de activități sunt strâns corelate: toate prelucrările care se efectuează în tranzacții depind de structura datelor memorate, iar proiectarea fizică a bazei de date depinde de prelucrările necesare în tranzacții.

Cele șase faze de proiectare și implementare enumerate mai sus nu se desfășoară strict într-o singură secvență.În multe cazuri este necesară modificarea proiectului dintr-o fază inițială într-una din fazele ulterioare, pentru a se obține rezultatele dorite. Aceste bucle de reacție între faze (sau în interiorul unei faze) sunt, în general frecvente în cursul proiectării unei baze de date, dar nu au mai fost reprezentate în figura de mai sus, pentru a nu complica diagrama respectivă [21].

3.3.5 MySQL

MySQL a fost produs de compania suedeza MySQL AB si este un sistem de gestiune a bazelor de date relaționale. La mometul actual se poate spune ca este cel mai popular SGBD open-source.

Un sistem de baze de date reprezinta o modalitate de a gestiona o multitudine de informații, Informații ce pot proveni dintr-o varietate de surse. Spre exemplu acestea pot reprezenta notele unor elevi, înregistrări de angajati, date de cercetare din diverse domenii, înregistrări de afaceri, cereri ale clienților, statistici sportive, rapoarte etc. [22].

Desi limbajul de programare cel mai des folosit impreuna cu MySQL este PHP, se pot construi aplicații în orice limbaj major pentru accesarea bazelor de date, cum ar fi: C#, Java, C/C++, Python, FreeBasic, etc. Pentru administrarea acestui tip de bazele de date se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfață grafică: MySQL Administrator și MySQL Query Browser.

MySQL este cel mai popular software de baze de date open source, cu peste 100 de milioane de copii ale software-ului descarcat sau distribuit de-a lungul istoriei sale. Cu viteza sa superioara, fiabilitate, si usurinta de utilizare, MySQL a devenit alegerea preferata pentru Web, Web 2.0, SaaS, ISV, companii de telecomunicatii si managerii IT de corporatii, deoarece elimina problemele majore asociate cu timpul pierdut, intretinere si administrare pentru aplicatii moderne, on-line [23].

Multe dintre cele mai mari si dezvoltate rapid organizatii din lume folosesc MySQL pentru a economisi timp si bani, alimentand site-urile lor Web de mare volum, sisteme critice de business, si pachete software – inclusiv lideri din industrie, cum ar fi Yahoo!, Alcatel-Lucent, Google, Nokia, YouTube , Wikipedia, si Booking.com

MySQL este o parte esentiala a LAMP (Linux, Apache, MySQL, PHP / Perl / Python), un open source ce creste rapid. Tot mai multe companii folosesc LAMP ca o alternativa la stiva costisitoare software, din cauza costurilor mai mici si libertatii fata de alegerea platforma de lucru [24].

3.3.6 Avantaje MySQL

In alegerea sistemului de gesiune al bazelor de date potrivit pentru orice tip de aplicatie trebuie luati in considerare urmatorii factori: performanță, suport, condiții și restricții de licențiere, MySQL are de oferit numeroase caracteristici atractive:

Viteză. MySQL este rapid. Programatorii pretind că MySQL este cel mai rapid sistem de baze de date pe care îl puteți găsi.

Ușurință în utilizare. MySQL este un sistem de baze de date cu performanțe ridicate, dar relativ simplu, a cărui configurare și administrare sunt mult mai simple decât în cazul sistemelor mai mari.

Cost. MySQL este gratuit pentru majoritatea utilizărilor interne.

Suport pentru limbaje de interogare. MySQL înțelege SQL (Structured Query Language – limbaj de interogare structurat).

Caracteristici. La server se pot conecta mai mulți clienți simultan. Clienții pot folosi mai multe baze de date simultan.

Conectivitate și securitate. MySQL poate fi folosit integral în rețele, iar bazele de date sunt accesibile de oriunde din Internet, deci vă puteți partaja datele cu oricine, oriunde.

Portabilitate. MySQL rulează pe numeroase varietăți de UNIX.

Distribuție liberă. MySQL nu este un proiect Open Source, deoarece este necesară o licență în anumite condiții [21], [22].

3.4. Tehnologii folosite

3.4.1. Platforma .NET

.NET este un cadru (Framework) de dezvoltare software unitară care permite realizarea, distribuirea și rularea atât a aplicațiilor-desktop Windows cat și aplicațiilor WEB. Tehnologia .NET pune laolaltă mai multe tehnologii (ASP, XML, OOP, SOAP, WDSL, UDDI, WPF, LINQ) și limbaje de programare (VB, C++, C#, F#) asigurând totodată atât portabilitatea codului compilat între diferite calculatoare cu sistem Windows, cât și reutilizarea codului în programe, indiferent de limbajul de programare utilizat [25].

.NET Framework este o componentă livrată împreună cu sistemul de operare Windows.

Pentru a dezvolta aplicații pe platforma .NET este bine sa avem 3 componente

esențiale:

un set de limbaje (C#, Visual Basic .NET, J#, Managed C++, Smalltalk, Perl, Fortran, Cobol, Lisp, Pascal etc);

un set de medii de dezvoltare (Visual Studio .NET, Visio);

o bibliotecă de clase pentru crearea serviciilor Web, aplicațiilor Web și aplicațiilor desktop.

La dezvoltarea aplicațiilor pe .NET se poate utiliza:

servere specializate – un set de servere Enterprise .NET (din familia SQL Server 2008, Exchange 2000 etc.), care pun la dispoziție funcții de stocare a bazelor de date, email, aplicații B2B (Bussiness to Bussiness – comerț electronic între partenerii unei afaceri);

servicii Web (în special comerciale), utile în aplicații care necesită identificarea utilizatorilor (de exemplu, .NET Passport – un mod de autentificare folosind un singur nume și o parolă pentru toate site-urile vizitate);

servicii incluse pentru dispozitive non-PC (Pocket PC Phone Edition, Smartphone, Tablet PC, Smart Display, XBox, set-top boxes, etc.) [26].

3.4.2. NET Framework

.NET Framework este un mediu care permite dezvoltarea și rularea aplicațiilor și a serviciilor Web, independente de platformă.

Componenta .NET Framework stă la baza tehnologiei .NET, este ultima interfață între aplicațiile .NET și sistemul de operare și actualmente conține: limbajele C#, VB.NET, C++.

Pentru a fi integrate în platforma .NET toate aceste limbaje respectă niște specificații OOP numite Common Type System (CTS). Ele au ca elemente de bază: clase, interfețe, delegări, tipuri valoare și referință, iar ca mecanisme: moștenire, polimorfism și tratarea excepțiilor [32].

.NET este constituit din două entități importante:

Common Language Runtime (CLR) : Acesta este mediul de execuție al programelor. Este modulul care se ocupă cu managementul și execuția codului scris în limbaje specifice .NET. CLR furnizează de asemenea servicii importante, cum sunt securitatea aplicațiilor, portabilitatea acestora, managementul memoriei și tratarea excepțiilor.

Base Class Library : Este vorba despre Biblioteca de Clase .NET. Această bibliotecă acoperă o arie largă a necesităților de programare, incluzând interfața cu utilizatorul, conectarea cu bazele de date și accesarea datelor, dezvoltarea aplicațiilor web, comunicarea în rețele și altele.

Componenta .NET Framework este formată din compilatoare, biblioteci și alte executabile utile în rularea aplicațiilor .NET [27], [28].

Fig. 3.1 Arhitectura .NET Framework

3.4.3. Compilarea programelor pe platforma .NET

In urma compilării unui program C#, nu se crează un cod executabil ci se creează un fișier numit assembly care de regulă se identifică cu extensia .exe sau .dll. Un asemenea fișier nu poate fi executat pe un sistem pe care nu există infrastructura .NET. Fișierul conține un tip special de cod, numit Limbaj Intermediar, pe scurt CIL (Common Intermediate Language). Limbajul CIL definește un set de instrucțiuni portabile, independente de orice tip de procesor și platformă. Figura ilustrează procesul de creare a codului executabil pe platforma .NET.

Fig. 1 Procesul de compilare pe platforma .NET

În momentul în care un program este executat, CLR activează un compilator special, numit JIT (just in time). Acesta preia codul CIL și îl transformă în cod executabil. Transformarea se face “la cerere”, în sensul că o secvență de cod se compilează doar în momentul în care este utilizată pentru prima oară. Un program compilat în format CIL poate rula pe orice sistem pe care s-a instalat Common Language Runtime. Aceasta asigură portabilitatea aplicațiilor .NET. Fișierul .exe sau .dll produs la compilare conține pe lângă codul CIL, așa numitele metadate. Metadatele descriu datele utilizate de către aplicație [28], [29].

3.4.4. Limbajul C#

Numele limbajului C# a fost inspirat din notația ♯ (diez) din muzică, care indică faptul că nota muzicală urmată de ♯ este mai înaltă cu un semiton. Este o similitudine cu numele limbajului C++, unde ++ reprezintă atât incrementarea unei variabile cu valoarea 1, dar și faptul că C++ este mai mult decât limbajul C.

Limbajul C# a fost dezvoltat în cadrul Microsoft, echipã din care s-a evidenþiat Anders Hejlsberg (autorul limbajului Turbo Pascal si membru al echipei care a proiectat Borland Delphi) [27].

Prima implementare C# larg distribuită a fost lansată de către Microsoft ca parte a inițiativei .NET în iulie 2000. Din acel moment, se poate vorbi despre o evoluție spectaculoasă. Mii de programatori de C, C++ și Java, au migrat cu ușurință spre C#, grație asemănării acestor limbaje, dar mai ales calităților noului limbaj. La acest moment, C# și-a câștigat și atrage în continuare numeroși adepți, devenind unul dintre cele mai utilizate limbaje din lume.

Creatorii C# au intenționat să înzestreze limbajul cu mai multe facilități. Succesul de care se bucură în prezent, confirmă calitățile sale:

Este un limbaj de programare simplu, modern, de utilitate generală, cu productivitate mare în programare.

Este un limbaj orientat pe obiecte.

Permite dezvoltarea de aplicații industriale robuste, durabile.

Oferă suport complet pentru dezvoltarea de componente software, foarte necesare de pildă în medii distribuite. De altfel, se poate caracteriza C# ca fiind nu numai orientat obiect, ci și orientat spre componente. La aceste caracteristici generale se adaugă și alte trăsături, cum este de pildă suportul pentru internaționalizare, adică posibilitatea de a scrie aplicații care pot fi adaptate cu ușurință pentru a fi utilizate în diferite regiuni ale lumii unde se vorbesc limbi diferite, fără să fie necesare pentru aceast lucru schimbări în arhitectura software [30], [31].

3.5 Internet Information Services (IIS)

Internet Information Services (IIS) reprezintă un set de servicii Windows responsabile cu procesarea cererilor venite din rețea pe un anumit port. În acest sens există un serviciu Windows numit World Wide Web Publishing Service ce ascultă, de obicei pe portul 80 (HTTP) sau 443 (HTTPS), cereri pentru o anumită resursă la un site Web instalat. Acest serviciu Windows este administrat de un instrument numit IIS Manager.

Obs: – Pentru a deschide consola de management IIS trebuie lansat în execuție un program numit netmgr.exe. Acesta poate fi găsit în directorul de instalare a IIS. Cea mai simplă cale de a deschide onsola este prin utilitarul Run din Windows.

În cadrul IIS, site-urile Web sunt grupate în directoare virtuale cu legături către directoare existente pe disc sau configurate logic de Windows dar cu locația pe altă mașină, în care se află fizic aplicațiile Web.

Resursele unei aplicații Web sunt accesate de client prin intermediul unui browser căruia îi precizăm un URL. Această adresă conține mai multe informații ce vor indica: tipul protocolului, portul asociat aplicației în cadrul serverului (de regulă 80), locația virtuală a resursei și cel mai important numele resursei sau al fișierului [33].

3.6. SOA

SOA (Service Oriented Architecture – Arhitectură software bazată pe servicii) este un tip de arhitectură software care presupune distribuirea funcționalității aplicației în unități mai mici, distincte – numite servicii – care pot fi distribuite într-o rețea și pot fi utilizate împreună pentru a crea aplicații destinate afacerilor. Capacitatea mare cu care pot fi reutilizate aceste servicii în aplicații diferite este o caracteristică a arhitecturilor software bazate pe servicii. Aceste servicii comunică între ele trimițând informații de la un serviciu la altul. SOA este deseori văzută ca o evoluție a programării distribuite si a programării modulare [34].

SOA este o arhitectură flexibilă și standardizată ce contribuie la o mai bună conectare a diverselor aplicațiilor și facilitează schimbul de informații între acestea. SOA unifică procesele de business structurând marile aplicații într-o colecție de module mai mici numite servicii. Aceste aplicații pot fi folosite de diverse grupuri de oameni atât din cadrul companiei cât și din afara ei.

SOA este o abordare in dezvoltarea aplicatiilor software pentru organizatii, in asa fel incat procesele software sunt separate in servicii care sunt facute apoi disponibile si pot fi gasite in cadrul unei retele. Fiecare serviciu ofera functionalitati care pot fi adaptate la nevoile unei organizatii, ascunzand detaliile referitoare la dedesubturile implementarii. SOA se adreseaza complexitatii, inflexibilitatii si slabiciunilor abordarilor existente din proiectarea proceselor, a fluxurilor de lucru si a integrarii aplicatiilor [32], [36].

3.6.1. Serviciu web

Un serviciu Web (Web Service) este o aplicatie Web de tip client-server, în care un server furnizor de servicii (numit si "Service Endpoint") este accesibil unor aplicatii client (care nu sunt de tip browser) pe baza adresei URL a serviciului. Serviciul Web si clientii sãi pot rula pe platforme diferite si pot fi scrise în limbaje diferite,deoarece se comunicã prin protocoale standard HTTP, XML, SOAP, JSON, s.a. De aceea principalul merit al serviciilor Web este acela cã asigurã interoperabilitatea unor aplicatii software implementate pe platforme diferite si cu instrumente (“framework”-uri) diferite. In acelasi timp aplicatiile sunt slab cuplate (“loosely coupled”), în sensul cã mesajele schimbate sunt standard (“self-contained”) si oricare dintre aplicatii nu presupune existenta la celãlalt capãt a altor facilitãti decât cele continute în standarde.

Furnizorul de servicii expune un API pe Internet, adicã o serie de metode ce pot fi apelate de clienti. Aplicatia client trebuie sã cunoascã adresa URL a furnizorului de servicii si metodele prin care are acces la serviciul oferit (nume, parametri, rezultat). Interfata API este limitatã la câteva operatii în cazul serviciilor de tip REST si nelimitatã ca numãr si ca diversitate a operatiilor în cazul serviciilor de tip SOAP [35].

Diferenta dintre o aplicatie Web clasicã si un serviciu Web constã în principal în formatul documentelor primite de client si a modului cum sunt ele folosite : într-o aplicatie Web clientul primeste documente HTML transformate de un browser în pagini afisate, iar clientul unui serviciu Web primeste un document XML (sau JSON) folosit de aplicatia client, dar care nu se afiseazã direct pe ecran (decât în anumite programe de verificare a serviciilor Web).

Din punct de vedere al tehnologiilor folosite existã douã tipuri de servicii Web:

Servicii de tip REST ( RESTful Web Services), în care cererile de la client se exprimã prin comenzi HTTP (GET, PUT, POST,DELETE), iar rãspunsurile sunt primite ca documente XML sau JSON.

Servicii de tip SOAP (Simple Object Access Protocol), în care cererile si rãspunsurile au forma unor mesaje SOAP (documente XML cu un anumit format) transmise tot peste HTTP. In astfel de servicii furnizorul expune si o descriere a interfetei API sub forma unui document WSDL (Web Service Description Language), care este tot XML si poate fi prelucrat de client. Un client trebuie sã cunoascã metodele oferite de cãtre “Service Endpoint”, pe care le poate afla din descrierea WSDL [36], [37].

Structura Protocolului Serviciilor Web

3.6.2. Arhitectura serviciilor Web

Din perspectiva rolurilor participanților:

Furnizorul serviciului – implementează serviciul și-l face disponibil în Internet;

Solicitantul serviciului – utilizează un serviciu Web, pe care-l solicită deschizând o conexiune și trimițând o cerere XML;

Registru de servicii.

Arhitectura serviciilor Web din perspectiva rolurilor participanților

Din perspectiva stivei de protocoale implicate în servicii Web:

Descoperire servicii: responsabil cu centralizarea serviciilor într-un registru comun, și furnizarea unei funcționalități de publicare / regăsire facile; via Universal Description, Discovery, and Integration (UDDI);

Descrierea serviciilor: responsabil cu descrierea interfețe publice a unui anumit serviciu; via Web Service Description Language (WSDL);

Transmiterea mesajelor în format XML: responsabil cu codarea mesajelor într-un format XML comun, astfel încât acestea să fie înțelese de furnizor și solicitant; via XML-RPC și SOAP;

Transport: responsabil cu transportul mesajelor între aplicații; HTML, SMTP, FTP etc.[38].

Arhitectura serviciilor Web din perspectiva stivei de protocoale implicate în servicii Web

3.6.3. Functionarea Serviciilor Web

Clientul ia legatura cu un nod în Internet unde sunt stocate informatii despre furnizorii de servicii sau chiar direct cu serviciul web pentru a obtine informatii legate de interfata Web Service. Acest lucru se poate face fie prin localizarea unui Web Service atunci cand adresa URL este deja cunoscuta, fie singura informatie despre un Web Services este punctul din Internet unde se afla furnizorul de Web Services, URL-ul site-ului. Se genereaza automat o lista cu informatii despre Web Services expuse de catre acel furnizor, servicii accesate prin URL-uri diferite.

Dupa ce a fost localizat Web Service, clientul cere o descriere a acestuia, care trebuie sa cuprinda metodele expuse, parametrii lor, precum si ce tip au valorile care se returneaza în urma executiei. Toate aceste informatii sunt încapsulate într-un WSDL [33], [37]. WSDL este o gramatica XML folosita pentru a descrie un Web Service din punct de vedere al mesajelor pe care le primeste si le emite.

Etapele și protocoalele folosite pentru un apel către un serviciu Web

6.3.4. WSDL

WSDL este un vocabular XML pentru descrierea unui serviciu web.Un document WSDL descrie ce functionalitate ofera un serviciu web, cum comunica, si unde este el accesibil.WSDL furnizeaza un mecanism structurat de descriere a operatiilor ce un serviciu web le poate oferii, formatul mesajelor ce le poate procesa, protocoalele ce le suporta si punctul de acces a instantei serviciului web.Uneltele de dezvoltare SOAP pot fi utlizate sa genereze automat o interfata SOAP.

WSDL a fost dezvoltat de IBM si Microsoft.Specificatiile WSDL au fost remise la W3C in martie 2001.W3C a acceptat aceste specificatii dar nu a fost initiata nici o activitate de standardizare a specificatiilor.

6.3.5. UDDI

UDDI furnizeaza un mecanism de inregistrare si clasificare serviciilor web ce le oferiti si localizeaza serviciile web ce doriti sa le consumati. UDDI este el insusi un serviciu web. Utilizatorii comunica cu UDDI utilizant measaje SOAP.

6.3.6. SOAP

SOAP este un protocol de mesaje extensibil bazat pe XML ce constituie fundamentul pentru serviciile web. SOAP ofera un mecanism simplu si consistent ce permite unei aplicatii sa trimita un mesaj XML unei alte aplicatii.

SOAP ofera suport pentru comunicatiile tip peer-to-peer. Un mesaj SOAP este o transmisie one-way de la un trasmitator SOAP la un receptor SOAP, orice aplicatie poate participa in acest schimb de mesaje fie ca transmitator fie ca receptor. Mesajele SOAP pot fi combinate sa suporte deverse tipuri de comunicatii de ex: cerere/raspuns (request/response) cerere de raspuns (solicit response) sau notificare (notification).[39]

3.6.4. Avantajele Serviciilor Web

Serviciile Web aduc următoarele avantaje în cadrul unei aplicații distribuite:

Simplitate: serviciile Web pot fi suportate de toate platformele întrucât folosesc protocoale cunoscute („open standards”) global;

Clientul nu este afectat dacă definițiile funcțiilor din interfața expusă de serviciul Web sunt modificate, totuși metodele trebuie să păstreze aceeași parametri și tip returnat;

Un serviciu Web nu păstrează starea și nici conexiunea creată pentru apelarea lui. Acest lucru oferă o scalabilitate ridicată întrucât poate răspunde la un număr mare clienți;

Întrucât folosesc HTTP și deci implicit portul de comunicație este 80 sau 443 (HTTP Secure) acestea pot trece de firewall-uri [33], [39].

3.7. Aplicatii mobile

În ultima vreme, utilizarea terminalelor mobile inteligente s-a răspândit foarte mult datorită utilității crescute, avansurilor tehnologice, precum și a prețurilor tot mai scăzute.

Datorită îmbunătățirlor din punct de vedere tehnologic, aceste dispozitive devin foarte asemănătoare – din majoritatea punctelor de vedere – calculatoarelor portabile de tip netbook sau notebook, fapt pentru care s-a dorit identificarea posibilităților de utilizare a acestora în componența sistemelor de monitorizare și control.

3.8.1 Sisteme de operare pentru dispozitive mobile inteligente

Terminalele mobile de acest tip sunt tabletele și telefoanele inteligente bazate pe diferite tipuri de sisteme de operare, dintre care amintim Google Android, Apple iOS, Microsoft Windows Phone, BlackBerry OS și Symbian.

Având în vedere faptul că pentru fiecare sistem de operare pentru terminale mobile există

tehnologii și platforme diferite pentru dezvoltarea aplicațiilor, și anume Java pentru Google Android, Objective-C pentru Apple iOS, .Net Compact Framework pentru Microsoft Windows Phone ș.a., s-au căutat soluții alternative pentru dezvoltarea de aplicații astfel încât acestea să poată fi rulate pe diferite sisteme de operare fără mari modificări asupra codului sursă [40], [41].

Soluția identificată pentru această problemă este aceea de utilizare a platformelor ce oferă posibilitatea dezvoltării de aplicații pentru multiple platforme de dispozitive mobile utilizând tehnologiile HTML și JavaScript. Librăria alesasă pentru implementarea acestei soluții este Adobe Phonegap (fost Nitobi Phonegap) [42].

3.8.2. Platforma Adobe Phonegap

PhoneGap propune o soluție simplă din punctul de vedere al dezvoltatorului; prin adaptarea la mediul de dezvoltare Eclipse. Acest middleware permite crearea de aplicații web care rulează într-un WebView nativ platformei. Astfel, pentru dezvoltarea aplicației s-au folosit limbajele HTML5, CSS3, Javascript, Jquery și tehnica AJAX pentru accesarea serviciilor web. Dupa ce aplicatia este finalizata, codul este comilat de un build service si este generat pentru platforma dorita [43].

Platforma Adobe Phonegap oferă posibilitatea dezvoltatorilor de aplicații pentru terminale mobile să realizeze aplicații pentru diferite sisteme de operare utilizând cod sursă HTML și JavaScript, rezultatul fiind aplicații native pentru diferite sisteme de operare, suportul pentru acestea fiind prezentat în tabel:

Suport sisteme de operare terminale mobile

Ultimele studii statistice referitoare la ocuparea pieței dispozitivelor mobile inteligente în

funcție de sistemul de operare arată că, în anul 2015, cele mai multe astfel de dispozitive au sistemul de operare Google Android (48.8%), urmat de Windows Phone (19.5%), Apple iOS (17.2%), BlackBerry OS (11.1%), Symbian (0.1%) și alte sisteme de operare (3.3%) [45].

3.8.3 HTML

HyperText Markup Language (HTML) este un limbaj de marcare utilizat pentru crearea paginilor web ce pot fi afișate într-un browser (sau navigator). Scopul acestuia este mai degrabă prezentarea informațiilor de tipul paragrafelor, fonturilor, tabelelelor decât descrierea semanticii documentului.

HTML este o formă de marcare orientată către prezentarea documentelor text pe o singura pagină, utilizând un software de redare specializat, numit agent utilizator HTML, cel mai bun exemplu de astfel de software fiind browserul web. HTML furnizează mijloacele prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadate și indicații de redare [45].

HTML5 își propune să însumeze nu numai HTML4, dar și XHTML1 și DOM2HTML (îndeosebi JavaScript). Urmărind predecesorii săi imediați HTML 4.01 și XHTML 1.1, HTML5 este un răspuns la observația că HTML și XHTML utilizate în comun pe World Wide Web sunt un amestec de caracteristici introduse de specificații diferite, împreuna cu acestea mai sunt și caracteristicile diferite aduse de software, de browsere, și multe erori de sintaxă în documnentele web existente.

HTML5 devine o încercare de a defini un singur limbaj de marcare care poate fi scris în oricare dintre sintaxele HTML sau/și XHTML. Acesta include modele detaliate de prelucrare pentru a încuraja mai multe implementări interoperabile; extinde, îmbunătățește și raționalizează disponibilitățile pentru documentele web și introduce marcarea și aplicații API (application programming interfaces) pentru aplicații web complexe. Din aceste motive, HTML5 este un posibil candidat pentru aplicațiile de platforme mobile. Multe caracteristici ale HTML5 au fost create din considerarea că va trebui să devină capabil să ruleze pe dispozitive cum ar fi smart-phonurile sau tabletele [46].

3.8.4. CSS

CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui document HTML. Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul <style> și/sau atributul style. CSS se poate utiliza și pentru formatarea elementelor XHTML, XML și SVGL.

CSS3 reprezintă un upgrade ce aduce câteva atribute noi și ajută la dezvoltarea noilor concepte in webdesign. Unele dintre cele mai importante segmente (module) noi adăugate acestui standard pentru formatarea elementelor HTML aduc un plus considerabil in dezvoltarea activități webdesign. Deși au apărut unele deficiente de compatibilitate intre browsere, majoritatea proprietăților CSS3 au fost implementate cu succes in variantele browserelor noi [47].

O dată cu apariția sa, mulți dezvoltatori web au considerat că CSS este un mod de formatare mult mai puternic și mai ușor de utilizat, și au considerat că <FONT> este un tag învechit. În 2006 (s-a facut Update), capabilitățile CSS-ului au fost îmbunătățite considerabil în ceea ce privește design-ul layout-ului unei pagini web. Cu toate acestea, multe site-uri web încă utilizează CSS numai pentru formatarea textului, în timp ce, pentru layout folosesc tabele [48].

3.8.5. JavaScript

JavaScript (JS) este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor.[5] Este folosit mai ales pentru introducerea unor funcționalități în paginile web, codul Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea sa în construirea siturilor web, dar este folosit și pentru acesul la obiecte încastrate în alte aplicații. A fost dezvoltat inițial de către Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript, și denumit în final JavaScript.

În ciuda numelui și a unor similarități în sintaxă, între JavaScript și limbajul Java nu există nicio legătură. Ca și Java, JavaScript are o sintaxă apropiată de cea a limbajului C, dar are mai multe în comun cu limbajul Self decât cu Java [49].

JavaScript va permite sa creati o interfata activa cu utilizatorul, sa dea o impresie vizuala placuta in timp ce navigati prin paginile site-ului. Puteti verifica validitatea informatiilor introduse intr-un formular inainte ca datele sa fie trimise catre server. Puteti face calcule matematice, crea pagini HTML dinamice, personalizate in functie de optiunile utilizatorului sau ale browser-ului.

JavaScript controleaza browser-ul, si prin intermediul scripturilor puteti deschide ferestre noi, puteti afisa mesaje de avertizare si puteti pune mesaje in bara de stare a ferestrei browser-ului. Puteti genera ceasuri, calendare si documente cu timpul inscris. Puteti chiar verifica prezenta plug-in-urilor in browser si puteti redirectiona utilizatorul spre o pagina diferita in cazul in care browserul nu are un anumit plug-in [50].

3.8.6. AJAX

Ajax (sau AJAX) este un acronim (denumirea prescurtata) de la Asynchronous JavaScript And XML. Ajax este o tehnică de programare pentru crearea de aplicații web interactive. Intenția este să facă paginile web să devină mai rapide și deci mai acceptate, prin schimbul în fundal al unor cantități mici de date cu serverul, astfel încât să nu fie nevoie ca pagina să fie reîncărcată la fiecare acțiune a utilizatorului. Aceasta are ca scop creșterea interactivității, vitezei și ușurinței în utilizare a aplicațiilor web [51].

Google Suggest si Google Maps sunt doua exemple de abordare noua in dezvoltarea de aplicatii web. Ele folosesc ceea ce este numit AJAX, prescurtarea de la Asyncronous JavaScript and XML. Aceasta tehnologie reprezinta o cotitura in privinta posibilitatilor oferite de Web.

AJAX are rolul de a spori gradul de interactivitate, viteza si uzabilitatea unei pagini web fiind o tehnica de dezvoltare web pentru crearea de aplicatii web interactive. Ideea este de a face pagina web mai receptiva la actiunea userului prin schimbul de date cu serverul, discret si in portii mici, fara a mai astepta incarcarea intregii pagini la fiecare modificare facuta de user.

Aceasta face ca o aplicatie web-based sa functioneze asemanator uneia instalata pe desktop, intelegand prin asta ca o aplicatie desktop isi realizeaza procesele fara a face noi click pe

ceva [52], [53].

AJAX nu este o tehnologie, ci reprezintă o suită de tehnologii deschise, incorporând:

Limbaje standardizate de prezentare a datelor (XHTML, CSS);

Redare & interactiune via standardul DOM(Document Object Model);

Interschimb & manipulare de date prin XML si/sau XSLT;

Transfer asincron de date via XMLHttpRequest;

Procesare prin ECMAScript (JavaScript).

Componenta de bază este obiectul XMLHttpRequest

Permite realizarea de cereri HTTP (e.g., GET și POST) dintr-un program rulând la nivel de client (browser) spre o aplicație de pe server, într-un mod asincron;

Nu necesită reîncărcarea paginilor Web;

Uzual, datele vehiculate între programele client și server sunt marcate în XML (Extensible Markup Language).

AJAX este una dintre componentele-cheie a aplicațiilor Web 2.0 ( A9.com, EpiphanyRadio, Flickr, Google Maps, Google Suggest, Orkut, etc.). Se poate considera că – via AJAX – se pot implementa servicii Web asincrone, în stilul REST(REpresentational State Transfer) [55], [56].

Structura unei functii de tip AJAX

Obiectul XMLHttpRequest Folosind obiectul XMLHttpRequest un web developer poate face update la o pagina cu date de pe un server dupa ce pagina s-a incarcat. Unul dintre cele mai cunsocute exemple unde se poate verifica dinamizarea aplicatiei web este pe pagina Google cand tastezi in casuta de cauta si iti sunt sugerati diversi parametri [57].

Aplicatiile Web care folosesc Ajax devin astfel mai mici, mai rapide si mai prietenoase. Tehnologia Ajax este un standard actual, majoritatea navigatoarelor suportand XMLHttpRequest (Internet Explorer, Firefox, Chrome, Opera, Safari).

In concluzie actualele si viitoarele aplicații vor trebui să integreze servicii oferite de dispozitive mobile, calculatoare personale, servere etc. Când dispozitivele si programele sunt conectate la Internet, aplicațiile nu mai constituie artefacte software, ci devin servicii.

Cap. 4. ARM Soft

Aplicatia este destinata tranferului si gestiunii de marfa intre mai multe puncte de lucru ce pot fi magazine sau depozite, conectate la acest program. Transferul de marfa se poate face de catre orice persoana autorizata din cadrul firmei si cu orice mijloc de transport autorizat impreuna cu avizul de insotire a marfii. Prin urmare fiecare dintre acestea trebuie sa aiba o baza de date proprie datorita volumului mare de date aferent fiecarui punct de lucru precum si necesitatea ca anumite functii ale aplicatiei sa poata fi disponibile chiar si in conditiile in care nu exista conexiune la internet cum ar fi spre exemplu accesul in orice moment la o lista locala de produse sau stocul de produse. Pe de alta parte este necesara si o baza de date centrala care sa organizeze intr-un mod cat mai transparent fluxul de marfa dintre aceste puncte de lucru.

Programul "ARM Soft" asigura toate functionalitatile necesare intr-un backoffice de magazin, fiind responsabil de organizarea magazinului, de controlul fluxului de marfa din momentul intrarii in magazin pana la iesirea prin punctele de vanzare si de interactiunea cu celelalte magazine in cazul unei retele de magazine. De asemeea in retea se poat gestiona cu succes pe langa magazine si depozite de marfa prin intermediul avizelor de insotire a marfii. In cazul depozitelor de dimensiuni medii si mari se poate utiliza si o grupare a marfii in functie de locatia de pe raftul depozitelor.

Habar nu am….

ARM Soft este aplicatia responsabila cu efectuarea vanzarilor folosind imprimante fiscale sau case de marcat fiscale utilizate in acest regim. Programul asigura desfasurarea procesului de vanzare cu amanuntul in orice tip de magazin avand o interfata de vanzare automatizata. Acesta este proiectat sa opereze pe sisteme cu interfata touchscreen sau pe terminale dotate cu tastatura si display clasic.

Programul poate opera in mai multe regimuri de lucru, functionarea cea mai avansata si mai raspandita fiind in modul online, conectat direct la baza de date a magazinului. In acest mod sistemele dotate cu ARM Soft tranzactioneaza in timp real stocul magazinului.

O conditie impusa in momentul generarii unui aviz este ca id si numarul avizului sa fie unice astfel incat numarul avizului reprezinta un numar incrementat din momentul in care magazinul si-a inceput activitatea pe cand id-ul avizului este resetat si incrementat la inceputul fiecarui an calendaristic. Tinand cont de aceste conditii legate de id-ul si numarul avizului a fost necesara o baza de date care sa controleze aceste valori astfel incat avizele de insotire a marfii sa fie generate in mod corect.

Pe langa informatiile referitoare la avize, baza de date centrala are si o serie de tabele care se regasesc si in baza de date locala fiecarui client. Acestea au scopul de a memora anumite informatii care mai apoi sa fie transmise fiecarui client astfel incat acestia sa detina acelasi tip de informatii cu privire la denumirile de produse, coduri de bare asocitate produselor, tipuri si furnizori de tichete de masa, unitati de masura si locatii in depozitul pentru marfa.

Interfata principala de vanzare a programului "ARM Soft" este caracterizata prin simplitate continand numai functiile necesare desfasurarii procesului de vanzare. Orice alta functie este disponibila prin apasarea unui buton. Casierul poate alege intre a scana codul produsele pe care clientul doreste sa le cumpere sau sa introduca in mod manual codul PLU inscriptionat pe produs atunci cand din diverse motive acesta nu poate fi citit de catre cititorul de coduri de bare. Introducerea manuala a codului EAN se poate face fie utilizand interfata grafica fie o tastatura conectata la calculator. In cazul in care codul nu poate fi citit sau produsul gasit pe baza codului EAN nu corespunde cu produsul real, se poate opta pentru a cauta produsul dupa nume, la fel, utilizand tastele de pe interfata grafica sau tastatura.

In momentul in care au fost inregistrate toate produsele pe care clientul doreste sa le cumpere din interfata casierului se poate opta pentru plata acestora in trei moduri diferite:

– plata cu tichete de masa;

– plata cu cardul;

– plata cu numerar;

Plata cu tichete de masa se face foarte simplu selectand din interfata tichetul incasat in functie de marcaa si valoarea acestuia. Daca clientul doreste sa achite contravaloarea produselor sau o parte din valoarea acestora utilizand cardul, casierul foloseste dispozitivele POS pe care magazinul le detine iar dupa confirmarea platii aceasta valoare este introdus si in programul "ARM Soft". Totusi in cazul in care se doreste ca plata sa se faca si cu numerar aceasta valoare se inregistreaza in program.

O alta caracteristica importanta a aplicatiei consta in posibilitatea de a genera in mod automat avizele de transport marfa catre oricare dintre locatiile aflate in retea astfel ne mai fiind necesar ca o persoana din cadrul magazinului sa scrie de mana toata lista cu numele produselor, cantitatea, pretul si alte detalii caracteristice.

In ceea ce priveste confirmarea avizului de insotire a marfii acesta este transmis prin internet astfel incat la destinatie se face printr-o simpla confirmare a faptului ca ceea ce s-a primit corespunde cu ceea ce este mentionat in aviz.

In ceea ce priveste necesarul de stoc acesta este afisat instant pentru oricare punct de lucru din cadrul retelei de magazine astfel incat nu mai este necesar ca angajatii magazinului sa numere, sa verifice cantitatea produsele de pe rapft sau din depozit si sa decida in ce maniera trebuie actualizat stocul. Indiscutabil aceasta operatie este una de durata astfel incat minimizarea timpului este de prisos. Pentru o mai buna gestiune a magazinului, necesarul de stoc poate fi controlat de o singura persoana cu atributii superioare. Aceasta poate stabili pentru fiecare produs in parte care este cantitatea minima necesara ce trebuie sa se gaseasca in fiecare punct de lucru astfel incat lista de produse necesare pentru a completa stocul magazinului este calculata instant.

Un alt beneficiu adus de acest sistem de gestionare al unui lant de magazine consta in utilizarea unei aplicatii care ruleaza pe terminale mobile prin intermediul careia se poate verifica la orice moment de timp lista de produse si stocul din cadrul oricarui punct de lucru.

Aplicatia este utila in momentul in care persoana desemnata de firma respectiva sa se ocupe de aprovizionarea magazinelor cu marfa ajunge in zona de lucru si doreste sa verifice ce produse sunt comercializate in cadrul magazinului respecitv. De asemenea este utila si in situatiile in care spre exemplu se intalneste o promotie care poate fi favorabila sau nu in cadrul magazinului. De si produsul poate fi la promotie exista posibilitatea ca in stocul magazinului sa se afle acel produs intr-o cantitate suficient de mare astfel incat promotia respectiva sa nu fie una de interes sau pretul din stoc sa fie comparabil sau chiar mai bun decat cel din promotia curenta.

4.1. Arhitectura ARM Soft [ aplicatiei – citat pe MINE]

Arhitectura acestui sistem a fost proiectata astfel incat sa poata rezolva mai multe situatii astfel incat se considera un server central si N clienti. Se doreste ca fiecare client sa poata accesa serverul central si de asemenea se impune ca fiecare client sa poata comunica cu oricare dintre clientii din reteaua de magazine.

Serverul central este un calculator unde se introduc facturile de catre contabilul firmei iar clientul reprezinta un punct de lucru ce poate fi un magazin sau un depozit, conectat la aceasta retea si pe care ruleaza aplicatia ARM Soft.

Aplicația are la bază principiile SOA (Arhitectura Orientata pe Servicii), care se bucură de o largă susținere, mai ales în rândul marilor companii. SOA descrie un mod de organizare a resurselor în care datele, logica și infrastructura sunt accesate prin mesaje între dispozitive conectate la o rețea.

Una din cele mai cunoscute implementari ale SOA sunt Serviciile Web – WS (Web Service). Serviciul web este o aplicație web de tip client-server în care un server furnizor de servicii este accesibil unor aplicații client pe baza adresei URL. Serviciul Web și clientii săi pot rula pe platforme diferite și pot fi scrise în limbaje diferite, deoarece comunicarea se realizează prin protocoale standard: HTTP, XML, SOAP, JSON ș.a.

Proiectul de față utilizează un serviciu web dezvoltat utilizând limbajul de programare C#, cu ajutorul mediului de dezvoltare Visual Studio. Serviciul rulează în interiorul unui serverului de aplicații – IIS. Comunicarea între servicul web și clienții săi se realizează prin mesaje SOAP (Simple Object Access Protocol)(documente XML cu formă bine stabilită) transferate prin protocolul HTTP.

Arhitectura ARM Soft

4.2 Internet Information Services (IIS)

Pentru a exemplifica modul de functionarea al acestui sistem atat serverul central cat si clientii ruleaza pe serverul de aplicatii IIS ( Internet Information Services ) pe porturi diferite astfel incat serviciile web sa poata fi apelate atat de aplicatiile client cat si de aplicatia de pe terminalul mobil.

Internet Information Services reprezintă un set de servicii Windows responsabile cu procesarea cererilor venite din rețea pe un anumit port. În acest sens există un serviciu Windows numit World Wide Web Publishing Service ce ascultă, de obicei pe portul 80 (HTTP) sau 443 (HTTPS), cereri pentru o anumită resursă la un site Web instalat. Acest serviciu Windows este administrat de un instrument numit IIS Manager.

Rularea aplicatiei server si a aplicatiei client pe IIS

Resursele unei aplicații Web sunt accesate de client prin intermediul unui browser căruia îi precizăm un URL. Această adresă conține mai multe informații ce vor indica: tipul protocolului, portul asociat aplicației în cadrul serverului (de regulă 80), locația virtuală a resursei și cel mai important numele resursei sau al fișierului.

Exemplu de URL: http://192.168.1.12:8099/webService/AvizeWS.asmx/getAvizeWS

{http://users.cs.tuiasi.ro/~igavrila/sdm2011/l08sd.pdf}

4.3. Aviz de insotire a marfii

Avizul de însoțire a mărfii este un document financiar-contabil cu o utilizare complexă, care include în principal însoțirea bunurilor expediate în diverse scopuri, pe timpul transportului acestora.

Conform O.M.E.F. nr. 3.512/2008 și O.M.F.P. nr. 2.226/ 2006, care reglementează acest – document de însoțire a mărfii pe timpul transportului, după caz (ex. în cazul expedierii produselor pentru comercializare prin magazinele proprii; în cazul valorilor materiale trimise pentru prelucrare la terți și returnarea acestora după procesare, caz în care este necesară pe aviz mențiunea "Pentru prelucrare la terti");

document ce stă la baza întocmirii facturii, după caz (în cazul bunurilor livrate în cadrul unei operațiuni de vânzare – cumpărare, atunci când furnizorul nu are posibilitatea de a emite factura, aceasta urmând să fie întocmită ulterior);

dispoziție de transfer al valorilor materiale de la o gestiune la alta, dispersate teritorial, ale aceleiași unități (în cazul în care bunurile sunt transferate între două gestiuni aflate în incinta unității, se întocmește Bon de transfer);

document de primire în gestiune, după caz;

document de descărcare din gestiune a bunurilor cedate cu titlu gratuit (premii acordate în cadrul concursurilor organizate, distribuirea de materiale promoționale sau de mostre în cazul acțiunilor de marketing și promovare, caz în care avizul de însoțire a mărfii va purta mențiunea “Fără factură”). În toate situațiile, este necesară pe aviz mențiunea cauzei pentru care s-a întocmit avizul de însoțire a mărfii și nu factura (cu excepția bunurilor cedate cu titlu gratuit, caz în care mențiunea va fi "Fără factură" [58].

Procedura interna se stabileste in baza unei decizii, in forma scrisa, prin care conducatorul firmei desemneaza una sau mai multe persoane responsabile cu alocarea si gestionarea numerelor aferente avizelor. Fiecare aviz de insotire emis trebuie sa aiba un numar de ordine, secvential, in baza uneia sau mai multor serii. Numarul de la care se emite primul aviz de insotire se stabileste anual, prin decizie emisa pentru fiecare exercitiu financiar.

Avizul de insotire a marfii se intocmeste in doua sau mai multe exemplare, pentru diverse situatii impuse de desfasurarea activitatii economice cu mentionarea motivului pentru care nu se emite factura [59].

4.3.1. Elementele obligatorii ale unui aviz de însoțire a mărfii

Un aviz de însoțire a mărfii întocmit corect trebuie să cuprindă câteva informații obligatorii:

Seria si numarul avizului de insotire a marfii;

Data emiterii avizului;

Denumire furnizor;

CIF furnizor;

Numarul de la Registrul Comertului al furnizorului;

Adresa sediu firma furnizor;

Denumire Client;

CIF/CNP client;

Nr.Reg Comertului Client;

Adresa Sediu Firma Client;

date privind expeditia:nume delegat, Carte identitate delegat,numar inmatriculare autoturism, ora expedierii.

Avizul de insotire se va arhiva in functie de caz, adica poate fi arhivat la furnizor, la unul din compartimentele "desfacere" sau "financiar-contabil" sau la cumparator la departamentul "financiar-contabil" [60].

4.3.2. Numerotarea avizelor de însoțire

La fel ca și în cazul facturilor, societățile comerciale, societățile/companiile naționale, regiile autonome, institutele naționale de cercetare – dezvoltare, societățile cooperatiste și celelalte persoane juridice au obligația să asigure un regim intern de numerotare a avizelor de însoțire. Astfel, persoanele care răspund de organizarea și conducerea contabilității vor desemna, prin decizie internă scrisă, o persoană sau mai multe, după caz, care să aibă atribuții privind alocarea și gestionarea numerelor aferente avizelor de însoțire emise de societate.

Avizul de însoțire va avea un număr de ordine, în baza uneia sau mai multor serii, număr ce trebuie să fie secvențial, stabilit de societate, astfel încât să se asigure necesarul în funcție de numărul de avize emis.

Anual, se stabilește numărul de la care se va emite primul aviz de însoțire. În alocarea numerelor se va ține cont de structura organizatorică, respectiv gestiuni, puncte de lucru, sucursale etc [61].

4.3.3. Aviz generat de ARM Soft

În partea stângă a avizului sunt trecute diverse informații cum ar fi: furnizorul reprezentând numele efectiv al firmei, nr.ord.reg.com. ,C.I.F., capitalul social, sediul, județl, codul IBAN și banca cu care lucrează firma. De asemenea este menționată denumirea punctului de lucru de la care s-a generat avizul, numărul de telefon și faxul. Informațiile referitoare la destinatar sunt trecute în partea dreaptă unde sepecifică numele acestuia, nr.org.reg, C.I.F., sediul, județul și banca cu care lucrează.

În cazul în care punctele de lucru între care se transferă marfa aparțin aceleiași firme există specificații comune. De asemenea pe aviz este tipărit id-ul și numărul avizului precum și data la care a fost creat. Partea esențială din aviz o constituie lista produselor transferate. Acestea sunt tipărite pe aviz în ordinea în care au fost scrise în program fiind numerotate începând cu 1. Pentru fiecare produs în parte este specificată unitatea de mesură a acestuia, cantitatea livrată și prețul de ieșire. Ultima coloană este completată cu valoarea totală a produsului în funcție de cantitatea transferată.

Model aviz de insotire a marfii. Specificatii firma si produse.

În partea de jos a avizului este menționat autorul acestuia, datele de identificare ale delegatului, mijlocul de transport cu care se va transfera marfa între cele două puncte de lucru, data și ora la care a fost generat avizul precum și valoarea totală a acestuia.

Model aviz de insotire a marfii. Specificatii autor.

4.4 Interfete ARM Soft

4.4.1.Interfața de autentificare

Fereastra de autentificare contine un mesaj de informare, o tastatura numerica, un camp in care se introduce codul de autentificare in format securizat precum si o tasta de autentificare.

Interfața de autentificare

Pentru a spori securitatea in folosirea acestei aplicatii la pornire este afisata o fereastra de autentificare. Fiecare utilizator al aplicatiei are un cod unic de autentificare care poate fi introdus folosind tastatura afisata pe interfata sau orice tastatura conectata la calculatorul respectiv. Dupa introducerea codului se apasa tasta de autentificare si se verifica in baza de date locala daca utilizatorul respectiv este autorizat sau nu. Pentru fiecare utilizator sunt asociate si o serie de drepturi ce reprezinta nivelul de acces la diferite functii puse la dispozitie de aplicatie. Valoarea 0 asociata drepturilor reprezinta faptul ca utilizatorul nu este autorizat in timp ce valorile 1, 2, 3 sunt nivele de acces la functiile aplicatiei. Nivelul 1 este asociat casierilor care nu au acces decat la functiile interfetei POS, nivelul 2 ofera acces la functiile legate de stocuri si avize iar nivelul 3 ofera acces la toate functiile aplicatiei inclusiv la interfata de setari.

4.4.2. Interfața de vânzare automatizată POS

Interfata principala de vanzare a programului este caracterizata prin simplitate si culoari care sa nu oboseasca ochii utilizatorilor. Aceasta contine doar functiile necesare desfasurarii procesului de vanzare.

In zona superioara a interfetei sunt patru campuri avand ca scop afisarea la dimensiuni marite a informatiilor aferente produsului inregistrat: codul PLU (Price look-up code) reprezentand un numar unic de identificare asociat unui produs altfel spus codul scanat cu cititorul de coduri de bare, numele, cantitatea produsului fiind reprezentata sub forma unui numar cu trei zecimale precum si pretul cu doua zecimale (ex: 1,25 = 1RON si 25 de bani).

In partea stanga se gaseste un panou de selectie a produselor, valoarea totala a acestora reprezentand totalul de plata, numarul curent al bonului precum si doua butoane, unul pentru anularea produsului selectat si altul pentru anularea platilor inregistrate.

In dreapta gasim un camp principal, acesta fiind de altfel singurul camp in care casierul poate modifica datele spre deosebire de restu campurilor unde continutul acestora este modificat fie din baza de date fie de diversi algoritmi si diverse calcule efectuate in partea din spate. Cantitatea curenta asociata produsului imediat inregistrat, o zona cu butoane utilizate pentru interfata touchscreen, butonul notat cu 'X' de setare a cantitatii produsului, butonul de 'PLU' prin care se face identificarea produsului, butonul '?' folosit pentru cautarea produselor dupa nume, butonul 'CLR' pentru stergere codului si numele utilizatorui inregistrat pe aplicatie. In ceea ce priveste modalitatile de plata sunt prevazute trei butoane "BON VALORIC", "CARD", "NUMERAR" si trei campuri unde sunt afisate sumele incasate corespunzătoare fiecăreia, suma totala platita, restul de plata precum si butonul de "INCHIDE BON".

Interfața de vânzare automatizată POS

Modul de funcționare al interfeței principale este unul extrem de simplu și intuitiv.

În primă fază se face o cerere către baza de date locală pentru a aduce numărul bonului care urmează a fi generat după care se poate trece la folosirea aplicației începând prin a scana codurile de bare asociate produselor. Cantitatea produsului înregistrat inițial este setată pe 1,000. Pentru a o schimba este suficient să folosim cifrele 0 – 9 și semnul "." de pe interfața touchscreen. În momentul în care cantiatea a fost stabilită se apasă tasta "X" urmând ca această cantitate să fie memorată. Dacă dorim să o schimbăm este suficient să tastăm noua cantitate și să reapăsăm tasta "X".

În continuare pentru a înregistra produsele pe care clientul dorește să le cumpere, casierul scanează cu cititorul de coduri de bare codul EAN inscripționat pe produs. Pe baza codului detectat se face o căutare în stoc și se aduce produsul respectiv. Dacă în stoc se gasește același produs cu prețuri diferite, se face o sortare a acestora în funcție de data la care au fost adăugate și se aduc detaliile produsului cu perioada cea mai îndepărtată. Acest lucru este necesar pentru a scoate din stoc mai întâi produsele cu termenul de valabilitate mai mic. După identificarea produsului acesta este afișat pe panoul de selecție a produselor împreună cu prețul, cantitatea și costul aferent.

Pentru a vedea ce produse au fost înregistrate, în ce cantitate, cu ce preț și pentru a elimina orice suspiciune de eroare sau neconcordanță produs-preț-cantitate, acestea sunt afișate în panoul de selecție a produselor. Din acest panou se poate selecta orice produs astfel încât detaliile acestuia (codul EAN, numele, cantitatea și prețul) să fie încarcate în cele patru câmpuri din partea superioară a interfeței cu scopul de a fi mult mai ușor vizibile persoanelor care au deficiențe din acest punct de vedere.

Se poate întampla ca din diverse motive codul EAN asociat produsului să nu poată fi citit de cititorul de coduri de bare prin urmare el poate fi introdus în mod manual de către casier utilizând fie interfața touchscreen fie o tastatură conectată la calculator. Dacă codul EAN lipsește, este deteriorat, nu corespunde produsului înregistrat în baza de date, etc. se poate opta pentru a cauta produsul în baza de date după numele acestuia apasând tasta "?".

La fiecare produs nou înregistrat se actualizează și costul total astfel la orice moment de timp atât clientul cât și vânzătorul să cunoască valoarea care trebuie achiată. După ce produsele au fost înregistrate se poate alege modul în care dorește clientul să le achite. Acesta poate opta pentru a plăti cu tichete de masă, card sau numerar. Plata cu tichete se face tastând pe "BON VALORIC" după care se deschide o nouă interfață de unde se selectează tichetele dorite. În ceea ce privește plata cu cardul aceasta se face folosind dispozitivele externe POS care se află în dotarea magazinul iar după confirmarea plății se tastează suma în interfață și se apasă tasta "CARD". Plata cu numerar se face tastând suma și apăsând tasta "NUMERAR".

În funcție de sumele încasate se actualizează și câmpurile "PLĂTIT" și "REST" astfel încât la orice moment să se știe cât a fost și cât mai este de plătit.

Pentru situațiile in care clientul se razgandeste in ceea ce priveste cumpararea unuia sau a mai multor produse cand spre exemplu clientul nu are suficienti bani sau pur si simplu nu mai doreste sa cumpere produsul respectiv, se selecteaza produsul pe care nu il mai dorim si se apasa tasta "ANULARE SELECTAT", moment in care produsul este sters din panoul de produse si se actualizeaza totalul cu noua valoare.

4.4.3. Interfața POS de căutare produs

Interfata este impartita in doua zone functionale. Una destinata cautarii produsului in care se introduce numele acestuia, o tastatura afisata in partea inferioara si un panou in care se incarca rezultatele cautarii. Cea de-a doua zona este destinata modificarii cantitatii produsului selectat utilizand tastatura numerica din partea superioara. De asemenea exista si doua butoane prin care se iese din aceasta interfata optand prin alegerea sau nu a produsului selectat.

Interfața POS de căutare produs

Pentru situatiile in care produsul nu a putut fi identificat cu ajutorul cititorului de coduri de bare sau nu a putut fi introdus manual din interfata POS mai exista o a trei-a varianta si anume aceasta interfata de cautare a produsului dupa nume.

Modul de utilizare este cat se poate de simplu pentru utilizator. Acesta trebuie doar sa introduca numele produsului folosind interfata touchscreen sau folosind o tastatura normala conectat la calculator. In functie de ce a tastat, in panoul din partea stanga se incarca in timp real o lista cu produsele din baza de date, pretul acestora precum si stocul disponibil, dupa care se alege produsul dorit.

In ceea ce priveste cantitatea dorita pentru acest produs initial este setata pe 1,000 dar poate fi modificata folosind tastatura numerica din partea superioara sau la fel o tastatura normala conectata la calculator. Pentru a finaliza actiunea se poate folosi unul din cele doua butoane astfel incat daca se doreste pastrarea produsului selectat se apasa tasta "ALEGE PRODUS" prin care acesta este incarcat si afisat in panoul de produse din interfata POS in caz contrar se apasa tasta "RENUNTA" si se afiseaza interfata POS continand lista precedenta de produse.

4.4.4.Interfața POS pentru tichete de (bon valoric)

Interfata prezinta o lista de selectie a furnizorului de tichete de masa, o imagine reprezentativa pentru acesta si un panou cu toate tichetele acceptate de furnizorul respectiv. In partea dreapta se afla un calculator pentru tichete, o tastatura numerica pentru setarea numarului de tichete dorite, taste pentru acceptarea de bonuri, anularea de bonuri si de finalizare a platii cu tichete de masa.

De asemenea pe interfata sunt afisate diferite campuri pentru a cunoaste la orice moment de timp costul total al produselor, restul de plata si valoarea totala platita cu tichete de masa.

Interfața POS pentru tichete de (bon valoric)

Pentru situatiile in care clientii doresc sa plateasca cumparaturile si cu tichete de masa se utilizeaza aceasta interfata. In prima faza se alege furnizorul tichetului cu care se doreste sa se faca plata dupa care se selecteaza tipul in functie de valoarea acestuia. Aplicatia in mod automat calculeaza numarul necesar de tichete in functie de tichetul de masa selectat si restul de plata.

Daca se doreste introducerea unui numar mai mic de tichete acesta se poate modifica folosind tastatura numerica de pe interfata. Pentru a confirma plata cu tichetele respective se tasteaza "ACCEPTA BON" acestea fiid afisate in panoul aferent platii cu tichete. Daca se doreste eliminarea unei plati cu tichete, se selecteaza tichetele pentru stergere si se tasteaza "ANULARE BON". Prin acceptarea sau anularea platii cu tichete se actualizeaza si campurile aferente platii totale cu tichete respectiv restul de plata.

4.4.5. Interfața de generare avize

Aceasta interfata prezint o serie de liste din care se pote alege punctul de lucru caruia ii este destinat avizul de insotire a marfii, autorul si delegatul, precum si mijlocul de transport cu care se face transferul marfii. De asemenea se poate seta data corespunzatoare acestuia. Interfata prezinta trei butoane afisate in functie de etapa completarii si un tabel care se completeaza cu produse.

Interfața de generare avize

Avizele de insotire a marfii reprezinta un punct cheie al programului intrucat acestea sunt folosite pentru a putea gestiona intrarile si iesirile produselor si totodata sunt acte doveditoare ale faptului ca transferul de marfa intre punctele de lucru, fie ele magazine sau depozite se face in mod legal.

În conceptul de implementare se impune ca un aviz să nu poată fi generat dacă nu există conexiune către serverul central deoarece atât numărul cât și id-ul avizului trebuie să fie unice în cadrul punctelor de lucru care fac parte din această rețea. Deosebirea dintre acestea constă în faptul că id-ul se resetează la începutul fiecărui an în timp ce numărul avizului nu se resetează niciodată. Tot de la serverul central se aduc și informații necesare completării avizului.

In sectiunea referitoare la specificatiile avizului se trec datele generale care constituie parte componenta a acestuia. Punctul de lucru de la care se face transferul marfii nu este variaibl pentru a nu se genera avize care sa apartina altor locatii. Celelalte detalii cum ar fi punctul de lucru la care se transfera marfa, numele persoanei care a generat avizul, numele responsabilului cu transportul marfii intre cele doua puncte de lucru precum si numarul de inmatriculare al masinii cu care se face acest transport.

Dupa ce toate aceste date au fost stabilite se alege data aferenta avizului si se tasteaza "CONTINUA" moment in care se poate incepe completarea listei cu produse numai dupa ce in prealabil toate campurile au fost verificate si validate. Tot acuma de pe serverul central se aduc o serie de informatiile necesare completarii avizului iar din baza de date locala se incarca lista de produselor disponibile.

Înainte de a începe completarea listei propriuzise se verifică permisiunile acordate la completarea tabelului. Acestea se stabilesc în funcție de expeditorul și destinatarul avizului astfel dacă expeditorul este magazinul central unde se face și înregistrarea mărfii de pe facturile provenite de la diverși furnizori se poate introduce orice produs indiferent dacă acesta este un produs nou sau nu, în caz contrar există câteva limitări în alegerea prețului și a produsului.

În conceperea acestui tabel s-a pus accent pe eficientizarea modului și timpului de completare astfel încat s-au implementat urmatoarele facilități: un sistem prin care se sugerează și se completează în mod automat numele produsului în funcție de ceea ce tastăm conform cu ce se află în baza de date a programului. De asemenea se afisează și id-ul acestuia iar prin dubla apăsare în interiorul celulei produsului se deschide o listă cu toate produsele din baza date utilă atunci când nu se știe cu exactitate forma sub care a fost memorat.

În funcție de drepturile de transfer ale mărfii dacă există două variante în stabilirea valorii produsului și anume: dacă există drepturi de adăugare a unor produse noi câmpul pentru preț se poate completa cu orice valoare în caz contrar se acesta caută în baza de date și se aduc toate prețurile asociate acestuia. În ceea ce privește cantitatea disponibilă aceasta se actualizează în funcție de prețul selectat.

În continuare se completează cantitatea transferată, se alege unitatea de măsură a produsului respectiv și se completează o scurtă descriere dacă este nevoie. La fiecare produs nou înserat se adaugă la sfârșitul tabelului o nouă linie iar dacă se dorește ștergerea unui produs se selectează de pe prima coloană a tabelului linia dorită și se apasă tasta DELETE.

Există cazuri în care este nevoie de adăugarea unui produs nou iar pentru a nu părăsi interfața curentă s-a introdus tasta "ADAUGĂ PRODUS" din care se deschide o nouă interfață unde se adaugă produsul dorit, respectiv tasta "ASOCIAZĂ COD EAN" pentru asocierea de noi coduri EAN pentru produse.

În momentul în care s-a terminat de completat lista se apasă tasta "GENEREAZĂ AVIZ" și se verifică dacă toate câmpurile din tabel au fost completate. Dacă nu au fost completate corect toate câmpurile apare un mesaj de atenționare în caz contrar se trece mai departe la adăugarea efectivă a avizului pe serverul central. Acesta este adăugat cu statusul "0" reprezentând faptul că un aviz nou a fost înserat în baza de date. În continuare se salvează conținutul avizului în baza de date locală expeditorului și se actualizează statusul avizului în "1" reprezentând faptul că în acest moment avizul a fost generat cu succes și urmează a fi recepționat fără probleme la destinatar.

Schema bloc. Interfața de generare avize

Dupa mesajul de confirmare că operațiile s-au efectuat cu succes se afișează o fereastră de printare a avizului.

4.4.6. Interfața de primire avize

Interfața nu este deloc una complicată conținând o descriere scurtă, o tastă "PRIMIRE AVIZ" utilizată pentru acceptarea avizelor și o tabelă în care în primă fază sunt încărcate avizele care nu au fost încă recepționate iar în faza a doua-a conținutul avizului respectiv.

Interfața de primire avize

Această interfață vine în completarea celei de generare a avizelor astfel încât toata această gestiune a avizelor să se facă într-un mod cât mai eficient. După ce avizul este generat de expeditor acesta urmează a fi recepționat la destinatar prin intermediul acestei interfețe.

Fiecare punct de lucru este identificat unic printr-un id înregistrat în baza de date de pe serverul central astfel încât fiecare aplicație va putea vizualiza ce avize îi sunt adresate punctului de lucru respectiv. Acest lucru se face printr-o cerere la serverul central de unde se aduc toate avizele care au id-ul destinatarului egal cu id-ul de identificare al punctului de lucru pe care ruleaza aplicația și totodată au statusul egal cu 1 reprezentând statusul unui aviz aflat în așteptare fiind gata de a fi preluat.

Dacă locației îi este adresat unul sau mai multe avize acestea sunt afișate în tabel având urmatoarele caracteristici: numarul avizului, id-ul avizului, data cu care a fost generat avizul, adresa expeditorului pentru a se ști de unde provine acesta, autorul, delegatul și mijlocul de transport cu care a fost transportată marfa.

Pentru a vedea conținutul oricărui aviz afișat în tabel este suficient să se selecteze acesta din prima coloană. Pe baza id-ului acestuia se face o cerere la serverul central pentru a se identifica id-ul și adresa url a expeditorului. Identificarea adresei url se face comparând în buclă id-ul expeditorului obținut de la cererea anterioară cu o listă ce conține toate detaliile referitoare la punctele de lucru, adusă tot de la serverul central. Această facilitate face posibilă accesarea datelor aflate pe orice stație de lucru înregistrată în rețea prin intermediul serviciilor web care rulează independent de apliație.

Odată obținută adresa url a expeditorului se face o cerere către acesta trimițând numarul avizului pentru a se obține lista de produse conținute de avizul respectiv. Se parcurg toate aceste date și se încarcă în tabelă sub o nouă formă conținând numarul avizului, numele produselor care urmează a fi recepționate, prețul fiecărui produs în parte, cantiatea, unitatea de măsură, locația și o scurtă descriere dacă există. În ceea ce privește locația, se face o cerere către baza de date locală cu id-ul și prețul fiecărui produs în parte cu scopul de a identifica dacă acest produs mai există în stoc. Dacă mai există în stoc se completează în mod automat coloana aferenta locației cu cea din stoc în caz contrar se completează cu "Nespecificat". În cazul în care se dorește o altă locație aceasta se poate înlocui cu oricare alta dintr-o listă creată de managerul de magazin.

În continuare dacă toate datele sunt corecte se tastează "ACCEPTĂ AVIZ". Pentru început parcurg într-o buclă toate intrările, se determină pentru fiecare id-ul locației, se introduc în baza de date locala într-o tabelă ce ține evidența tuturor transferurilor de marfă. Dacă totul a decurs fără probleme până în acest punct se parcurg din nou toate intrările și pentru fiecare se face o cerere către serviciile web care rulează la expeditor de unde se aduce stocul produsului în funcție de id-ul si prețul acestuia. Din acest stoc se scade noua cantitate transfertă prin intermediul avizului iar dacă cantitatea este egală cu 0 atunci se consideră că acel produs nu mai trebuie să facă parte din stoc altfel se actualizează stocul expeditorului cu noua valoare.

Actualizarea stocului la destinatar se face prin intermediul unei funcții care primește id-ul si prețul produsului și care returnează stocul fiecărui produs în parte. La acest stoc se adaugă cantiatea conținută pe aviz și se actualizează cu noua valoare. Dacă această funcția nu returneză stocul se consideră că acea combinație produs-preț nu se regăsește în baza de date locală și prin urmare se introduce o nouă intrare în tabela de stoc.

În final se actualizeaza statusul avizului în 2 printr-o cerere către serverul central. Prin acest status se consideră că avizul a fost primit cu succes la destinatar si atât stocul expeditorului cât și cel al destinatarului a fost actualizat cu succes.

Schema bloc. Interfața de primire avize

4.4.7. Interfața de căutare produse si avize

Această interfață cuprinde o zonă cu specificații ale produselor cum ar fi un câmp pentru numele produsului, o listă cu locațiile disponibile, și două filtre pentru cantitate și preț. Cea de-a doua zonă cuprinde diferite câmpuri pentru numărul și id-ul avizului, liste cu toți autorii, delegații, mijloacele de transport, expeditorii și destinatarii avizelor precum și două câmpuri pentru selecția datei. Sub aceste filtre se află patru taste pentru apelarea unor funcții de căutare, de listare a produselor, a stocului și a avizelor. Toate aceste liste sunt afișate într-un tabel în partea inferioară a interfeței.

Interfața de căutare produse si avize

Interfața este împărțită în două mari categorii de cautare:

-căutarea de produseș

-căutarea de avize.

Pentru căutarea de produse interfața înglobează o serie de filtre cum ar fi căutarea oricărui produs pe baza numelui, locației în cadrul unui depozit precum și în funcție de o cantitate și un preț mim și maxim. În ceea ce privește căutarea avizelor acestea se pot filtra după numărul și id-ul avizului, după autor, delegat și numărul de înmatriculare cu care s-a efectuat transport mărfii între cele două puncte de lucru. Pentru a superviza toate transferurile efectuate de un anumit punct de lucru este implementat un filtru din care se alege expeditorul. De asemenea se pot filtra avizele și în funcție de destinatar astfel încât managerul de magazin să poată vedea toate avizele și toată marfa care a intrat într-un anumit punct de lucru. Prin intermediul acestei interfețe se pot vizualiza avize și stocuri aflate pe orice calculator conectat la această rețea.

La inițializarea acesteia toate datele necesare filtrării avizelor sunt aduse de pe serverul central și încărcate în diverse liste afișate mai apoi în interfață în timp ce pentru filtrarea produselor se aduc de pe serverul local listele de produse și de locații. Implicit se apelează o fucție prin care se încarcă tabelul cu stocul de pe serverul local fiind afișate id-ul, numele, prețul și cantitatea produsului precum și data adăugării sau actualizării stocului respectiv.

Prin apăsarea tastei "LISTEAZĂ PRODUSE" se încarcă în tabel lista cu toate produsele aduse din baza de date locală.

Listarea avizelor începe prin verificarea filtrelor specifice din partea superioară a interfeței. Prima dată se verifică dacă câmpurile pentru id-ul și numărul avizului sunt completate cu numere. În continuare se face o cerere către serverul central cu filtrele aferente. Pe server se verifică dacă este completat filtru pentru număr și id. De asemenea se verifică și id-urile elementelor din fiecare listă astfel în funcție de aceste valori se filtrează avizele aduse de pe server după care aceste rezultate sunt încărcate în tabelă.

Există și posibilitatea de a vizualiza conținutul fiecărui aviz prin simpla selectare a acetuia de pe prima coloană. Prin această acțiune se face o cerere la serverul central cu numărul avizului selectat cu scopul de a primi toate detaliile corespunzătoare acestuia. Dacă id-ul destinatarului corespunde cu id-ul de identificare al punctului de lucru atunci se face cererea către serverul local în caz contrar se parcurge în buclă o listă cu toate detaliile legate de avize și se determină astfel adresa url a expeditorului pentru a ști de pe ce calculator trebuie să citească datele. Odată aduse aceste date se încarcă în tabelă numărul avizului, numele produselor, prețul și cantitatea pentru fiecare în parte, unitatea de măsură, locația în care a fost depozitat fiecare produs la recepționarea avizului precum și descrierile acolo unde este cazul.

O altă facilitate a acestei interfețe o reprezintă posibilitatea de a căuta produse după nume, locație, cantitate și preț. Pentru a eficientiza căutarea după nume este implementat un sistem prin care se sugerează și se completează în mod automat numele produsului în funcție de ceea ce tastăm conform cu ce se află în baza de date a programului. De asemenea în funcție de numele produsului se face o căutare la stănga și la dreapta astfel încât să se aducă și acele rezultate unde numele tasta nu este obligatoriu primul cuvânt sau identic cu acesta.

În ceea ce priveșste filtrele de cantitate și preț acestea se folosesc ca două delimitatoare, unul inferior și unul superior cu scopul de a limita rezultatele căutării acestea fiid cât mai aproape de ceea ce utilizatorul dorește să caute.

Schema bloc. Interfața de căutare produse si avize

4.4.8. Interfața pentru bonuri

Interfața aceasta cuprinde o scurtă descriere și o tabelă în care se încarcă inițial o listă cu toate bonurile generate la casa de marcat iar prin simpla selectare a oricăruia dintre ele se afișează toate produsele incluse pe bonul respectiv.

Interfața pentru bonuri

Interfața este utilă managerului de magazin pentru a avea un control cât mai bun asupra tuturor produselor vândute, în ce cantități și cu ce preț. Tabela cuprinde numărul bonului, numele casierului care a generat acel bon, valoarea totală a bonului și numărul de produse înregistrate pe acesta.

În momentul în care este selectat un bon se preia numărul acestuia și se apelează o funcție de pe serverul local căreia i se trimite număr bonului. Această funcție returnează toate specificațiile bonului astfel se încarcă în tabel numărul bonului, numele fiecărui produs în parte, prețul acestuia și în ce cantitate a fost vândut. De asemenea este afișat și codul EAN asoctiat produsului respectiv.

4.4.9. Interfața pentru necesarul de stoc

Interfata prezinta o lista din care se alege punctul de lucru de unde sa se afiseze necesarul de stoc, un camp pentru a cauta un produs dupa nume, o optiune prin care se afiseaza sau nu doar a necesarul de stoc, un buton pentru actualizarea stocului necesar si un buton pentru a exporta datele din tabel intr-un fisier .xsl. Datele obtinute in urma cautarii sunt incarcate in tabel cu mentiunea ca se pot modifica doar valorile de pe coloana "STOC NECESAR".

Interfața pentru necesarul de stoc

Un beneficiu major adus de aceasta facilitate consta in posibilitatea de a vedea in timp real o lista cu necesarul de marfa. Acesta reprezinta cantitatea minima pentru fiecare produs in parte care se vrea in fiecare magazin fiind de mare ajutor in momentul in care se face aprovizionarea.

Utilizatorul are posibilitatea de a vedea o lista cu toate produsele aflate in stoc sau doar cu necesarul de stoc stabilit de managerul de magazin. Comutarea modului de cautare se face prin bifarea sau debifarea "DOAR NECESAR STOC" ce consta in utilizarea unui filtru suplimentar prin care se aduc doar acele produse unde stocul curent este mai mic decât stocu necesar. Valoarea stocului necesar se poate modifica foarte simplu prin schimbarea valorii coloanei "STOC NECESAR" urmata de apasarea tastei "ACTUALIZARE NECESAR STOC". Aceasta modificare consta in parcurgerea tuturor elementelor din tabel, se verifica in prima faza daca valoarea de pe coloana "STOC NECESAR" este număr, dacă da atunci se verifica id-ul statiei de lucru cu id-ul punctului de lucru unde se face modificarea si daca id-urile sunte identice se face actualizarea datelor pe baza de date locala, in caz contrar se actualizeaza datele corespunzatoare punctului de lucru respectiv iar la sfarsit daca operatiile au fost realizate cu succes se primeste un mesaj de confirmare altfel un mesaj de infirmare.

Schema bloc. Interfața pentru necesarul de stoc

In momentul in care spre exemplu persoana responsabila cu intocmirea listei de aprovizionare doreste sa printeze necesarul de marfa poate utiliza butonul de Export XLS. In continuare se deschide o fereastra in care toate datele afisate din tabela sunt incarcate intr-un fisier .xls fiind gata de a fi printate. In continuare acest document printat poate fi inmanat persoanei responsabile cu aprovizionarea magazinului cu marfa. Acest procedeu se poate aplica pentru oricare punct de lucru din cadrul aplicatiei.

Fereastra de Export XLS a listei cu necesarul de stoc

4.4.10. Interfața de setări

Interfața prezintă o listă din care se alege tipul acțiunii și una sau două liste din care se alege elementul pentru care dorim să executăm o anumită comandă. Sub aceste liste este o zonă în care se încarcă detaliile care pot fi adăugate sau modificate pentru elementul respectiv. În partea dreaptă sunt tastele prin intermediul cărora se pot modifica sau adăuga aceste elemente. De asemenea este și o tasta pentru golirea câmpurilor atunci când se dorește introducerea unui element nou.

Interfața de setări

Această interfață reprezintă panoul de setări cu ajutorul căruia se pot adăuga sau modifica diverse elemente cum ar fi: detalii referitoare la produs, specificații importante în generarea unui tipar de aviz, autori, delegati, mijloace de transport, puncte de lucru, unități de măsură, bonuri, furnizori de bonuri și locații de depozitare.

Accesul la această interfață este limitat întrucât nu oricine ar trebuie să poată modifica aceste detalii, unele dintre ele necesitâd o atenție sporită atunci când se doresc a fi modificate.

Inițializarea interfeței presupune încărcarea unor liste cu date aduse de la serverul central. Dacă nu există conexiune la serverul central atunci nu se poate executa nicio operație.

Dintr-o listă se selectează ce tip de acțiuni dorește utilizatorul să efectueze. Prin alegerea executării unei ecțiuni asupra unor produse se încarcă în a doua-a listă toate produsele existente în baza de date. Selectarea produsului oferă posibilitatea de a modifica numele acestuia sau valoarea tva asociată.

Tot din această interfață se pot modifica diverse specificații care apar pe aviz. Acestea cuprind numele firmei care utilizează această aplicație, seria, nr.org.reg, cif, capitalul social, sediul unde este trecută firma, județul, cod IBAN și banca cu care se lucrează. Un lucru foarte important de menționat este că la această acțiune nu se pot modifica detaliile curente ci doar adăuga unele noi astfel.

Dacă după un interval de timp se dorește modificarea acestor detalii se modifică și detaliile vechilor avize și astfel se pierd informațiile vechi legate de structura avizului. Acest lucru presupune că modul de vizualizare în program al tuturor informațiilor legat de aviz să fie după formatul nou și nu după formatul vechi așa cum ar fi normal. Pentru a elimina acest inconvenient modificarea informațiilor legat de aviz presupune defapt adăugarea unuia nou în baza de date.

Pentru autorul avizului sunt memorate numele, seria, numărul și CNP-ul din buletin. Se pot modifica și adăuga noi persoane care au acest drept de a genera avize. Selectarea unui autor se face pe baza numelui acestuia.

La delegați principiul este asemănător cu cel de la autori prin urmare în baza de date sunt memorate câteva detalii astfel încât se pot modifica și adăuga numele, seria, numărul și de către cine a fost eliberată cartea de identitate a acestuia.

Mijlocul de transport presupune păstrarea unor informații referitoare la categeoria acestuia și numărul de înmatriculare. Prin alegerea acțiunii "AVIZ TRANSPORT" în cea de-a doua listă se încarcă toate mijloacele de transport disponibile iar în funcție de numărul de înmatriculare al acestuia se poate selecta unul și modifica ulterior.

Punctele de lucru care în cazul avizelor reprezintă expeditorul sau destinatarul acestuia și conțin următoarele informații care pot fi modificate: adresa, număr de telefon, fax, o denumire a acestuia, sediu și județ. Modificarea datelor referitoare la un anumit punct de lucru se face alegând din lista de actțiuni "AVIZ PUNCT LUCRU" iar dintr-o altă listă cu toate punctele de lucru conectate la această rețea se alege unul în funcție de numele acestuia.

Adăugarea punctelor de lucru nu este permis din interfață întrucât acest lucru presupune mult mai multe detalii care trebuiesc luate în considerare cum ar fi. În primult rând astfel se elimină orice posibilitate de conectare a unui user nedorit la aplicație deoarece toate aceste date critice sunt ținute în siguranță în baza de date.

În specificarea datelor de pe aviz trebuie menționat pentru fiecare produs în parte unitatea de măsură a acestuia. Interfața pune la dispoziție posibilitatea modificării sau adăugării lor, cele mai utilizate fiind numărul de bucăți per produs respectiv produs per kilogram.

Legat de interfața POS una dintre modalitățile de plată este cea cu tichete de masă. Interfața de setări oferă posibilitatea adăugării de furninori de tichete noi în funcție de firmele cu care colaborează magazinul respective. La adăugarea unui furnizor nou se specifică numele acestuia în câmpul de nume precum si numele efectiv al unei imagini reprezentative pentu el, imagine afișată în interfața de plată cu tichete de masă. Pe lângă numele imaginii trebuie menționată de asemenea și extensia care poate fi de exemplu ".JPG", ".PNG" etc. Pentru ca imaginea să fie vizibilă în aplicație trebuie copiată în directorul cu fișierul executabil.

Deoarece un furnizor poate avea tichete de valori diferite este posibilă modificarea unora deja existente sau adăugarea de tipuri noi specificându-se numele acestuia, valoarea pe care o are precum și data la care acestea îți pierd termenul de valabilitate. Pentru modificarea sau adăugarea unui tip de bon se alege mai întâi "TICHETE" din lista de acțiuni, după care se selectează furnizorul de tichete și în funcție de acesta sunt afișate toate tipurie disponibile din care se alege cel pentru care dorim să efectuăm o modificare.

Pentru o organizare mult mai eficientă când vine vorba de căutarea produselor într-un punct de lucru s-a introdus o clasificare a acestora în funcție de locația de pe raft. Aceasta este utilă atunci când punctul de lucru este fie un depozit fie un spațiu de depozitare dintr-un magazin.

În funcție de ce acțiunea dorim se efectuăm asupra elementului selectat se poate alege fie tasta "MODIFICĂ" fie tasta "AGAUGĂ". Înainte de a adăuga un element se poate tasta "GOLIRE" astfel încât toate câmpurile să fie curățate.

Schema bloc. Interfața de setări

4.4.11. Interfata de adăugare produs

Acesta interfata contine un camp pentru numele produsului, o lista din care se alege ce valoare TVA are produsul respectiv, un camp in care se introdudce codul de identificare EAN si o tasta de adaugare produs.

Interfata de adăugare produs

La initializarea acestei ferestre se face o cerere catre serverul central de unde se aduce o lista cu toate produsele respectiv cu toate valoarile TVA care pot fi asociate. Campul cu numele produsului cuprinde si o functie de completarea automata astfel incat sa se indice in mod vizual ca produsul efectiv exista deja. In final se asociazaa codul EAN pentru identificarea produsului si se apasa tasta de adaugare produs.

Procesul efectiv prin care se adauga un produs nou incepe prin a se verifica daca este sau nu gol campul cu numele produsului dupa care se verifica daca produsul introdus exista sau nu in baza de date. Daca produsul este in baza de date se returneaza id-ul acestuia in caz contrar se returneaza o valoare negativa, se citeste valoarea TVA selectata si se verifica corectitudinea codului EAN in doua etape: se verifica daca este sau nu gol campul respectiv iar daca nu este gol se verifica daca valoarea introdusa este numar. Daca toate aceste verificari au fost efectuate cu succes se adauga produsul in baza de date de pe serverul central dupa care se actualizeaza lista de produse din baza de date locala si se inchide fereastra de adaugare produs.

4.4.12. Interfața de asociere cod EAN

Fereastra contine un camp cu numele produsului pentru care se adauga un nou cod EAN, un camp in care se introduce codul precum si o tasta prin care se asociaza codul produsului selectat.

Interfața de asociere cod EAN

La initializarea ferestrei de pe serverul central se aduce o lista cu toate produsele precum si o lista cu toate codurile EAN existente. Campul cu numele produsului are o functie de completarea automata prin care se alege produsul caruia sa i se asocieze noul cod. Dupa apasarea tastei de asociere cod EAN se verifica daca este gol sau campul cu numele produsului nu iar daca nu e gol se obtine id-ul acestuia. De asemenea se verifica si campul aferent codului EAN astfel incat acesta sa nu fie gol si sa fie neaparat un numar.

In continuare se verifica intr-o lista cu toate codurile ca acesta sa fie unul nou dupa care pe serverul central se asociaza produsului selectat noul cod EAN. In final se actualizeaza lista de coduri EAN din baza de date locala si se inchide fereastra.

4.5. Smat update

Implementarea unui sistem care să permită tuturor clientilor conectati la aceasta retea sa aiba acces in timp reala la cele mai noi actualizari produse pe serverul central era iminenta.

Necesitatea acestui sistem porneste de la faptul fiecare punct de lucru contine o baza de date locala pentru ca aplicatia sa poata functiona atat in regim online cat si offline, cu sau fara internet. Acest lucru presupune ca in baza de date locala sa fie cele mai recente date legate de produse, coduri EAN asociate, tichete de masa si furnizori, unitati de masura si locatii.

Pentru ca interfata POS sa poata fi utilizabila in situatiile in care nu exista conexiune la internet se utilizeaza o baza de date locala din care se iau datele necesare pentru identificarea produsului pe baza codului scanat.

Sistemul de actualizare foloseste o tabela prin intermediul careia se determina pe ce calculatorare trebuie facuta actualizare si la ce tabela. Acest lucru se face utilizand o coloana ce contine id-ul punctului de lucru si cate o coloana pentru fiecare tabela care trebuie actualizata in baza de date locala prin setarea unei valori de 0 sau 1. Valoarea "0" sugereaza faptul ca in tabela respectiva nu sunt modificari iar valoarea "1" indica aparia unor modificari in cadrul acelei tabelei.

In momentul in care se adauga sau se modifica un produs, respectiv se asociaza un nou cod de bare se apeleaza o metoda web de pe serverul central iar in functie de metod web accesata se apeleaza suplimentar o functie cu trei parametrii care seteaza id-ului punctului de lucru, valoarea statusului cu 0 sau 1 respectiv tabela in care se opereaza aceste modificari. Pentru astfel de modificari valoarea id-ului punctului de lucru este 0 ceea ce inseamna ca sunt necesare actualizari ale tabelei respective la toate punctele de lucru.

Dupa finalizarea acestei etape se trece la etapa a doua-a prin care din aplicatie se cere de la serverul central o lista cu toate actualizarile care trebuiesc efectuate pentru punctul de lucru curent. Pentru fiecare tabela pentru care se pastreaza statusul pe serverul central se efectueaza urmatoarele operatii daca statusul este "1": se cere de pe serverul central o lista cu toate datele aferente tabelei respective, se aplica comanda "TRUNCATE" pe aceeasi tabela dar din baza de date locala, dupa care in bucla se parcurge aceasta lista si se introduc rand pe rand datele in tabela locala. La final se apeleaza o metoda de pe serverul central careia ii se trimite id-ul punctului de lucru, statusul "0" si id-ul tabelei pentru care s-a efectuat actualizarea curenta. Procesul se repeta pentru fiecare tip de tabela pentru care se utilizeaza acest sistem de actualizare.

Datele acceasteia nu poat fi accesate direct de pe alt calculator ci doar prin intermediul unor servicii web locale care ruleaza la fiecare client in parte. In momentul in care se fac modificari in baza de date de pe serverul central dorim ca acestea sa fie vizibile

Schema bloc. Smat update

4.6. Aplicația pentru terminalele mobile

Un alt beneficiu adus de acest sistem de gestionare al unui lant de magazine consta in utilizarea unei aplicatii care ruleaza pe terminale mobile prin intermediul careia se poate verifica la orice moment de timp lista de produse si stocul din cadrul oricarui punct de lucru.

Aplicatia este utila in momentul in care persoana desemnata de firma respectiva sa se ocupe de aprovizionarea magazinelor cu marfa ajunge in zona de lucru si doreste sa verifice ce produse sunt comercializate in cadrul magazinului respecitv. De asemenea este utila si in situatiile in care spre exemplu se intalneste o promotie care poate fi favorabila sau nu in cadrul magazinului. De si produsul poate fi la promotie exista posibilitatea ca in stocul magazinului sa se afle acel produs intr-o cantitate suficient de mare astfel incat promotia respectiva sa nu fie una de interes sau pretul din stoc sa fie comparabil sau chiar mai bun decat cel din promotia curenta.

Cum problema serviciilor cât și a aplicațiilor a migrat, în ultimul timp, de la complexitate la accesibilitate, lucrarea și-a atins și această țintă, prin implementarea unei aplicații pentru dispozitivele mobile ce rulează Android. Astfel, utilizând conexiunea de date a dispozitivului mobil, se pot accesa de oriunde infermațiile referitoare la stocul de produse.

Aplicația a fost dezvoltată cu ajutorul unui software de tip middleware – Phonegap – care oferă o interfață de programare într-un limbaj comun (HTML, CSS și Javascript), în locul interfeței native de programare (Android).

PhoneGap propune o soluție simplă din punctul de vedere al dezvoltatorului; prin adaptarea la mediul de dezvoltare Eclipse, acest middleware permite crearea de aplicații web care rulează într-un WebView nativ platformei. Astfel, pentru dezvoltarea aplicației s-au folosit limbajele HTML5, CSS3, Javascript, Jquery și tehnica AJAX pentru accesarea serviciilor web.

Interfața prezintă diverse câmpuri în care sunt încărcate valori prin apeluri AJAX către serviciile C#. După ce sosesc datele, sub forma unui mesaj SOAP, prin jQuery se parcurg nodurile documentului XML și se afișează aceste valorile identificate în câmpurile aferente. Un mare avantaj al tehnicii AJAX este că timer-ele din Javascript încarcă, la un interval de timp prestabilit, doar datele utile, nu și întreaga pagină, astfel volumul de date tranferat este mult mai mic (aspect important în cazul conexiunii cu pachete de date 3G/4G).

Una dintre cerințele complexe a fost ca aplicația să aiba aceleași proporții indiferent de tipul ecranului dispozitivului. Întreaga interfață este bazată pe dimensiuni proporționale și poziționări relative, pentru a face față oricărui ecran. Pe de altă parte, ecranele nu diferă doar prin dimensiune, ci și prin rezoluție, respectiv desitate de pixeli (dots per inch).

{Aici l-am citat pe MINE}.

Aplicatia mobila ARM Soft

Aplicatia mobila are o interfata ce pastreaza tema aplicatiei desktop. Aceasta prezinta o zona in care se introduce numele produsului sau codul de bare aferent acestuia. Codul de bare poate fi introdus fie manual utilizand tastatura virtuala a telefonului fie automat scanand codul produsului cu ajutorul camerei foto.

Pentru a scana codul de bare aferent unui produs cu ajutorul telefonului mobil, acesta se incadreaza la fel ca in imaginea de mai jos:

Incadrarea codului de bare in zona de scanare de pe aplicatia mobila

In momentul in care codul de bare inscriptionat pe produs a fost identificat de camera foto a telefonului mobil, se face o poza a acestuia dupa care se decodifica si se afiseaza codul in interfata.

Codul de bare a fost identificat

Exemplu de functie pentru apelarea camerei foto:

function scanFunction() {

cordova.plugins.barcodeScanner.scan(

function (result) {

$("#canvasInput").val(result.text);

getSearch();

}

);

}

De asemenea printr-un call ajax catre serverul central se aduce o lista cu toate punctele de lucru din care se poate alege fie unul singur in cadrul caruia sa se efectueze cautarea produsului dorit fie se poate opta pentru a cauta in toate punctele de lucru.

Lista punctelor de lucru disponibile

Exemplu de jsonp ce contine o lista a punctelor de lucru primita de la serviciu web de pe serverul central:

jQuery({

params: [

{

idPunctLucru: "1",

numePunctLucru: "MAGAZIN 1",

urlPunctLucru: "192.168.1.11:8091"

},

{

idPunctLucru: "2",

numePunctLucru: "MAGAZIN 2",

urlPunctLucru: "192.168.1.11:8092"

}

]

})

Aceasta cautare se face prin cereri sincrone, in bucla, catre fiecare punct de lucru de unde se aduc produsele impreuna cu cantitatea si pretul acestuia. Cautarea se face pe baza unor adrese url aduse de la serverul central astfel incat daca nu exista conexiune catre serverul central aplicatia pe mobil nu poate fi utilizata.

Exemplu de jsonp ce contine o lista a produselor primita de la serviciu web de pe un client:

jQuery({

params: [

{

numeProdus: "COCA COLA DZ.",

pret: "2.3",

cantitate: "75"

},

{

numeProdus: "ROSII ",

pret: "7.5",

cantitate: "11.3"

},

{

numeProdus: "SPRITE 2.5",

pret: "6.5",

cantitate: "20"

}

]

})

Aplicatia a fost realizata astfel incat sa se redimensioneze in functie de dimensiunea ecranului dispozitivului pe care ruleaza precum si in functie de orientarea acestuia.

Un exemplu de functie apelata in momentul in care se detecteaza un eveniment de schimbare a orientarii dispozitivului mobil:

$( document ).ready(function()

{

window.addEventListener('orientationchange', reloadMainPage, false);

});

5. Concluzii –[citat pe MINE]

Lucrarea de față prezintă un sistem informatic dedicat efectuarii vanzarilor folosind imprimante fiscale sau case de marcat fiscale utilizate in acest regim. Programul asigura desfasurarea procesului de vanzare cu amanuntul in orice tip de magazin avand o interfata de vanzare automatizata.

Acesta este proiectat sa opereze pe sisteme cu interfata touchscreen sau pe terminale dotate cu tastatura si display clasic.

Programul asigura efectuarea vanzarilor prin metode alternative cum ar fi scanarea sau selectarea produselor din baza de date, operarea in regim online, cu tranzactionare in timp real a stocului precum si operarea in regim offline, independent, cu operarea stocului cand reteaua este intrerupta.

Utilizarea serviciilor web s-a dovedit a fi o tehnică foarte flexibilă în dezvoltarea de aplicații de sine stătătoare capabile să comunice cu alte sisteme, oferindu-le informații printr-o interfață standardizată, independentă de limbajele de programare (XML).

Arhitectura sistemului prezentat permite dezvoltarea unor noi interfețe și colaborarea cu o gamă largă de platforme.

Dezvoltarea de aplicații pentru dispozitive mobile este mai facilă prin folosirea unui middleware ca Phonegap, acesta permițând crearea de aplicații cu ajutorul tehnologiilor HTML, Javascript și CSS. Tehnica AJAX a facilitat dezvoltarea unor aplicații eficiente din punct de vedere al cantității de date transferate și se constituie într-o alternativă convenabilă pentru comunicarea cu serviciile web.

Proiectul asigura generarea si primirea automata a avizelor de insotire a marfii precum si accesul in timp real la stocul de produse.

Programul "ARM Soft" asigura toate functionalitatile necesare intr-un backoffice de magazin, fiind responsabil de organizarea magazinului, de controlul fluxului de marfa din momentul intrarii in magazin pana la iesirea prin punctele de vanzare si de interactiunea cu celelalte magazine in cazul unei retele de magazine. De asemeea in retea se poat gestiona cu succes pe langa magazine si depozite de marfa prin intermediul avizelor de insotire a marfii. In cazul depozitelor de dimensiuni medii si mari se poate utiliza si o grupare a marfii in functie de locatia de pe raftul depozitelor.

Aplicatia de pe terminalele mobile permite oricarui reprezentant al firmei care are acces la ea poate verifica in timp real stocul magazinelor legate la aceasta retea oferindui diverse informatii in procesul de achizitionare de produse.

5.1. Posibilitati de valorificare

ARM Soft se doreste a fi cea mai simpla metoda de urmarire si gestiune a stocurilor astfel incat puteti avea o oglinda clara a tuturor operatiilor din gestiunile dvs cu un minim de efort. Programul este recomandat pentru orice firma care doreste sa scape de povara avizelor de insotire a marfii obligatorii conforme cu legislatia in vigoare.

Indiferent ca aveti un magazin mic En-Detail, un depozit mare cu mii de articole sau oricate astfel de puncte de lucru, puteti folosi cu succes si usurinta modulul de gestiune din ARM Soft. /* Acesta va ofera posibilitatea introducerii rapide a documentelor de intrare si iesire, urmarirea stocurilor cu siguranta si acuratete asupra informatiilor salvate. */

Cu acest program economisiti timp intrucat nu mai este nevoie sa completati de mana diferite tipizate. Un aviz de insotire a marfii se poate introduce si printa in cateva secunde.

Programul tipareste bonuri fiscale direct la casele de marcat si are si un meniu special POS (point of sales), optimizat pentru a fi folosit in legatura cu cantare electronice, cititoare de coduri de bara si monitoare touch-screen.

Un alt punct forte al acestui sistem il reprezinta aplicatia de pe terminalele mobile prin intermediul careia orice reprezentant al firmei care are acces la aceasta aplicatie poate verifica in timp real stocul magazinelor legate la aceasta retea si poate lua decizia de a achizitona sau nu un anumit produs.

Acest sistem va oferi firmei respective un avantaj substantial in lupta directa cu ceilalti competitori prin eficientizarea procesului de gestine a avizelor, prin automatizarea procesului de vanzare cu amanuntul si prin eliminarea achizitiilor non-profit utilizand aplicatia mobila.

5.2. Directii viitoare de cercetare

Directii viitoare ce cercetare:

– la accest sistem sa se adauge si un modul de facturare / gestiune a facturilor;

– mai multe tipuri de interfete atat pt aplicatia desktop cat si pentru aplicatia mobila;

– sa se realizeze un sistem de obtinere a adresei IP a clientului in mod dinamic

6. Bibliografie

[1]. Aconi Tech, "Istoria caselor de marcat", http://aconitech.ro/scurt-istoric/.

[2]. Gigicu, "Aparitia caselor de marcat, scurt istoric", http://www.zeusservice.ro/blog/111-aparitia-caselor-de-marcat-scurt-istoric.html.

[3]. "Istoria caselor de marcat", http://www.netarhia.ro/istoria-caselor-de-marcat.html.

[4]. "Cod de bare", http://ro.wikipedia.org/wiki/Cod_de_bare.

[5]. Preeti Jain, "Barcode Technology – What is Barcode", http://www.engineersgarage.com/articles/what-is-barcode-reader-scanner-printer-working.

[6]. "Cum functioneaza un cod de bare", http://www.coduridebare.com/intro.html.

[7]. Russ Adams, "All About UPC Barcode & EAN Barcode", http://www.adams1.com/upccode.html.

[8]. "Barcode Technology", http://www.panatrack.com/barcode-technology/.

[9]. "UPC SYMBOLS", http://www.gtin.info/upc/.

[10]. "UPC-A SYMBOLOGY", http://www.barcodeisland.com/ean13.phtml.

[11]. "EAN-13", http://www.coduridebare.com/ean_13.html

http://www.coduridebare.com/tipuri_coduri_de_bare.html.

[12]. "Forme de prezentare, fixare, utilizare ale scanerelor" , http://www.coduridebare.com/tipuri_cititoare_de_coduri_de_bare_fixe.html.

[13]. Paul Shread, "keyboard wedge", http://www.webopedia.com/TERM/K/keyboard_wedge.html.

[14]. !!!!CURS BAZE DE DATE IESE, !!!!

[15].!!!!!!!!!!!!!

[16]. Nagy M., Vizental M. – Sisteme de gestiune a Bazelor de date, Ed. Mirton, Timișoara, 2007.

[17]. Prof. univ. dr. Manole Velicanu, Asist. univ. dr. Vlad Diaconița, "SGBD Oracle", http://bd.ase.ro/uploads/sgbd_curs/materialStudiuSGBDoracle.pdf.

[18]. Codd,E.F ,,A Relational Model for Large Shared Data Banks”,Communications of the ACM,vol.13,Nr.6,pp.377/387,June 1970.

[19]. Codd,E.F ,,The Relational Model for Database Management”,Addison-Wesley,Reading MA,1990.

[20]. Date,C.J ,,An Introduction to Database System”,Addison-Wesley,Reading,MA,1995.

[21]. Elmasri,R.,Navathe,S.B. ,,Fundamental of Database System”, Addison-Wesley, Reading, Ma, 2000.

[22]. "Introducere în MySQL și SQL", http://www.robotics.ucv.ro/flexform/craiova_cursuri/C2_1/MySQL/L1.pdf.

[23]. "Notiuni generale despre comenzi in MySQL", http://www.titanuandy.ro/Site_v1/TemaDeCasa-20032010/DespreMySql.html.

[24]. "Despre MySQL – Cea mai populara baza de date open source din lume", http://www.buysoftware.ro/mysql.asp.

[25]. Faraz Rasheed, "C# School. 14 lessons to get you started with C# and .NET", 2006.

[26]. Constantin Galatan, Susana Galtan, "C# pentru liceu. Programare in Visual C# 2008 Express Edition".

[27]. Herbert Schildt, "C#", Ed. Teora, 2009.

[28]. Tony Northrup, "Microsoft .NET Framework – Application Development Foundation", Ed. Microsoft Press, 2009.

[29]. Mike Snell, Lars Powers, "Microsoft Visual Studio 2010 Unleashed", Ed. Sams, 2010.

[30]. Alex Mackey, "Introducing .NET 4.0: With Visual Studio 2010", Ed. Apress, 2009.

[31]. Andrew Stellman, Jennifer Greene, "Head First C#, 2E: A Learner's Guide to RealWorld Programming with Visual C# and .NET", Ed. O’Reilly, mai 2010.

[32]. "Programarea Orientatã pe Obiecte si Programarea Vizualã", http://www.colegiulbratianu.ro/Diverse/DotNet.pdf

[33]. "Aplicații ASP.NET", http://users.cs.tuiasi.ro/~igavrila/sdm2011/l08sd.pdf

[34]. "SOA (Service Oriented Architecture)", http://ro.wikipedia.org/wiki/SOA

[35]. "Service-oriented Architecture", http://www.epicor.com/romania/solutions/soa.aspx

[36]. "Web Services Essentials", O’Reilly, Ethan Cerami, 2002

[37]. Newcomer, E., „Understanding Web Services: XML, WSDL, SOAP and UDDI”, Addison Wesley, 2002.

[38]. "Servicii Web", www.cs.ubbcluj.ro/~alina/EC/Curs6.doc

[39]. "Web Services" http://www.angelfire.com/nt/adirac/web_services.html

[40]. Curry, E., „Message-Oriented Middleware”, Editura John Wiley & Sons, Ltd, 2004.

[41]. Grigorescu, C. M., Moraru, S. A., Grama, C., „Industrial software monitoring system extension for mobile devices based on GlassFish and PhoneGap”, 2012 International Conference and Exposition on Electrical and Power Engineering, 2012.

[42]. Jhonson, D., „Hybrid Mobile Applications using PhoneGap”, International Software

Development Conference QCon 2011, 2011.

[43]. Lunny, A., „PhoneGap A Beginner's Guide”, Editura Packt Publishing, 2011

[44]. Gartner, „Gartner Says Android to Command Nearly Half of Worldwide Smartphone Operating System Market by Year-End 2012”, 2015, http://www.gartner.com/newsroom/id/1622614.

[45]. Andrei Ciobanu, "Site didactic", http://ciobanu.cich.md/lectii_view.php?id=1.

[46]. Kevin Werbach, "Ghidul programatorului HTML", http://werbach.com/barebones/ro_barebone.html.

[47]. "Introducere in CSS", http://it.webdesign-galaxy.ro/ce-este-css/.

[48]. "Ce este CSS-ul", http://articole.web-start.ro/2009/03/ce-este-css-ul/.

[49]. "Ghid practic pentru crearea paginilor web", http://www.ghid-html.info/113-limbajul-javascript.html.

[50]. "Tutorial complet javascript", http://etutoriale.ro/articles/1771/1/Tutorial-complet-JavaScript-(prima-parte)/.

[51]. "AJAX", http://ro.wikipedia.org/wiki/Ajax_(programare).

[52]. "Ce este tehnologia AJAX?", http://www.shortcutmedia.ro/faq-internet-marketing/ce-este-tehnologia-ajax/.

[53]. William Fote, "What is Ajax and Where is it Used in Technology?", http://www.seguetech.com/blog/2013/03/12/what-is-ajax-and-where-is-it-used-in-technology.

[55]. Sabin-Corneliu Buraga, "Reîntoarcere în viitor: AJAX" http://profs.info.uaic.ro/~busaco/talks/AJAX.pdf.

[56]. Naedera, "Despre AJAX", https://naedera.wordpress.com/2009/02/10/cateva-lucruri-despre-ajax/.

[57]. Narcis, "Limbajul Ajax", http://jocuri-torente.xhost.ro/data/programe/Limbajul_AJAX.html.

[58]. Conteq, "Când întocmim un aviz de însoțire a mărfii", http://conteq.ro/cand_intocmim_aviz_insotire.

[59]. Infotva.ro, "Procedura de emitere si intocmirea avizului de insotire a marfii", http://infotva.manager.ro/articole/infotva/procedura-de-emitere-si-intocmirea-avizului-de-insotire-a-marfii-2541.html.

[60]. "Aviz de insotire a marfii", http://program-facturi.ro/aviz.

[61]. Daniela Griza, "Situații când suntem obligați să întocmim aviz de însoțire a mărfii", http://contaconect.ro/fisc/situatii-cand-suntem-obligati-sa-intocmim-aviz-de-insotire-marfii/.

Anexa 1

Tabel de comparare tipuri de coduri de bare{ http://www.coduridebare.com/comparatie_tipuri_de_coduri_de_bare.html }

Similar Posts