Lucrare de licență [303091]

UNIVERSITATEA „DUNĂREA DE JOS” DIN GALAȚI

FACULTATEA DE ECONOMIE ȘI ADMINISTRAREA AFACERILOR SPECIALIZAREA INFORMATICǍ ECONOMICǍ

[anonimizat]: [anonimizat]

2018

UNIVERSITATEA „DUNĂREA DE JOS” DIN GALAȚI

FACULTATEA DE ECONOMIE ȘI ADMINISTRAREA AFACERILOR SPECIALIZAREA INFORMATICǍ ECONOMICǍ

SmartNutrition – [anonimizat]: [anonimizat]

2018

Cuprins

Introducere

“Mens sana in corpore sano”

În România anilor 1980 [anonimizat]. [anonimizat], dar în sensul de raționalizare a alimentelor, și nu de calitate a alimentației. O [anonimizat] 1990, alegerile au devenit din ce în ce mai dificile și a apărut o nouă preocupare: cât de sănătos mâncăm? [anonimizat], după 1990, a modificat și ea obiceiurile alimentare ale românilor. Aproape o treime din populație ține posturile de miercuri și vineri săptămânal. O [anonimizat]. [anonimizat] o cincime din români consideră că este un mod de a-ți purifica organismul.

Creerul uman este alcătuit din 60% lipide și are nevoie de grăsimi bune din mâncare pentru a supraviețui. [anonimizat], peste gras și fructe de mare. Problema omului contemporan este lipsa timpului. [anonimizat]? Atunci apelezi la suplimentele alimentare.

Lucrarea de față își propune realizarea unui site web ce comercializează suplimente alimentare. [anonimizat], realizarea de grafice și analiza fiecarui produs în parte efectuată pe bază opiniilor clienților ce l-au achiziționat.

Capitolul 1. Aspecte genarale

În acest prim capitol se va detalia procesul de alimentație. Vor fi aduse în prim plan beneficiile unui stil de viață sănătos dar și factorii care împiedică adoptarea acestuia. Vor fi prezentate avantajele comerțului electronic.

Comerțul electronic

Prin comerț electronic se înțelege ”orice formă de tranzacții în afaceri în cadrul căreia părțile interacționează electronic în loc de realizarea de schimburi fizice sau contact fizic direct”. [anonimizat] E-commerce se înțelege prezentarea și comercializarea bunurilor și serviciilor prin intermediul tehnologiilor oferite de Internet.

Avantajele comerțului electronic pot fi clasificate astfel:

din punctul de vedere al cumpărătorului:

disponibilitatea 24 ore/zi, 7 zile pe săptămână;

[anonimizat];

libertatea de a [anonimizat] a alege în funcție de diverse optiuni cum ar fi prețul sau metoda de livrare;

[anonimizat], [anonimizat]teva ore sau chiar instant;

permite participarea la licitații virtuale unde pot avea loc schimburi de experiențe;

determină reduceri substanțiale deoarece competiția este ridicată;

din punctul de vedere al companiei:

îmbunătățirea relațiilor cu clienții – calculatorul poate fi mai ușor “educat”;

costuri mici de operare și de procesare a tranzacțiilor;

reducerea erorilor, procesul fiind automatizat;

posibilitatea de a prezenta/vinde orice produs sau serviciu;

prezență globală, număr mare de potențiali clienți;

stocarea datelor despre clienți și folosirea lor pentru decizii viitoare;

promovarea produsului se realizează mai amplu și mai rapid;

adaptarea la schimbări poate fi mai rapidă prin utilizarea tehnologiilor comerțului electronic;

dezvoltarea/oferta de noi produse/servicii se poate realiza în concordanță cu cerințele consumatorilor monitorizând atitudinea acestora față de anumite produse/servicii;

Comerțul electronic prezintă și dezavantaje cum ar fi:

asistența în unele cazuri poate fi deficitară, iar informațiile furnizate despre un produs sau serviciu pot fi incomplete;

credibilitatea scăzută;

concurența mult mai mare decât în sistemul tradițional;

fiabilitatea pe termen lung este scăzută din cauza dinamicității cu care se dezvoltă;

integrarea greoaie a bazelor de date și a software-ului de procesare a tranzacțiilor tradiționale cu software pentru comerț electronic (aceste servicii de integrare pot fi costisitoare);

confidențialitatea datelor (ce tranzacții efectuează, ce site-uri vizitează, ce preocupări are fiecare persoană etc.);

imposibilitatea de a realiza cu succes transferuri online a unor produse și servicii (exemplu: produse alimentare perisabile, bijuterii unicat, alte produse imposibil de inspectat la distanță, indiferent de tehnologiile curente).

Expansiunea comerțului electronic în România

Conform unui studiu publicat recent de organizația Ecommerce Europ, comerțul online din România a înregistrat în anul 2016 cea mai mare creștere din Europa, mai mult decât dublu față de media europeană de 15%. Valorea cumpărăturilor online a ajuns la 2,8 miliarde de euro, cu peste 40% mai mult față de 2016. Există potențialul ca acesta să-și dubleze valoarea până în 2020, doar dacă investițiile cresc și autoritățile sprijină dezvoltarea aptitudinilor digitale în rândul populației. Tot în acest studiu se evidențiază faptul că România are cea mai mică pondere a persoanelor care fac cumpărături online. .“În țara noastră rata de penetrare a internetului fix la 100 de gospodării este de aproximativ 55%, iar rata de penetrare a inrnetului mobil la 100 de locuitori este de 85%, conform datelor Autorității Naționale pentru Administrarea și Reglementarea în Comunicatii”.

Un raport al Asociatiei Romane a Magazinelor Online (ARMO) evidentiaza ca, la nivel european, proportia companiilor cu mai mult de 10 angajati care au un site web este in continua crestere: „ de la 67% din totalul companiilor de retail in 2010, la 77% in 2016., dar doar 18% din acestea vand prin intermediul Internetului.”.

Informațiile făcute publice în cadrul evenimentului „Particularitățile comunicării comerciale privind suplimentele alimentare” organizat de Consiliul Român pentru Publicitate (RAC) în colaborare cu Patronatul Român al Industriei Suplimentelor Alimentare (PRISA) și Consiliul Național al Audiovizualului (CNA), arată faptul că în Europa „consumul de suplimente alimentare pe cap de locuitor se ridica la 100 de euro”. În România, piața suplimentelor alimentare este estimată la 250 de milioane de euro (circa 12,5 euro pe cap de locuitor).

Importanța suplimentelor alimentare

Conform Ordinului MSP 1069/2007: „…suplimentel alimentare reprezintă produse alimentare ale căror scop este să completeze dieta normală și care sunt surse concentrate de nutrienți sau alte substanțe cu efect nutrițional ori fiziologic , separat sau în combinație, comercializate sub formă de doză cum ar fi: capsule, pastile, tablete, pilule și alte forme similare, pachete de pulbere, fiole cu lichid, sticle cu picurător și alte forme asemănătoare de preparate lichide sau pulberi destinate consumului în cantități mici, măsurabile”.

Suplimentele nutritive au un rol important în dietele sportivilor deoarece activitatea fizică intensă presupune un aport mai mare de substanțe nutritive față de cel ale unui om cu activitate fizică normală. De cele mai multe ori, alimentația obișnuită nu reușește să asigure acel raport necesar pentru a face față antrenamentului obișnuit. Pentru obținerea unor rezultate mai bune în dezvoltarea masei musculare sau pentru slăbit , suplimentele nutritive pot fi de mare ajutor deoarece ele conțin nutrienți importanți( proteine, minerale etc.) fără grăsimi și apă.

Suplimentele alimentare reperezintă o cale de a consuma proteine de cea mai bună calitate fără un aport suplimentar de grăsimi și cu un aport controlat de carbohidrați. Doza recomandată omului fără activitate sportivă este de 0,8-1 g proteine/kgcorp/zi, însă pentru sportivi este insuficientă.

3.1. Obiectivele și funcțiile aplicației

Aplicația care face obiectul acestei lucrări de licență are ca principal scop realizarea unui magazin on-line pentru comercializarea suplimentelor alimentare. Pentru conceperea si realizarea aplicației s-au avut în vedere urmatoarele obiective:

gestiunea exactă și mai amănunțită a stocurilor pe loturi de produse;

emiterea și transmiterea automată a documentului de vânzare (factura) în momentul vânzării;

îmbunătățirea relației cu clientul prin intermediul reducerilor;

creșterea credibilității în rândul clienților cu ajutorul raiting-ului produselor;

sprijinirea clienților în procesul de cumpărare prin oferirea informațiilor suplimentare despre produse (beneficii, mod de administrare, compoziție, efecte secundare etc).

Pentru realizarea acestor obiective au fost implementate urmatoarele funcții:

gestiunea nomenclatoarelor de clienți, utilizatori, beneficii, reduceri etc.;

înregistrarea în timp real a vânzărilor prin înregistrarea și emiterea automată a documentului de vânzare (factura);

transmiterea și exportul documentului în format PDF direct din aplicație;

înregistrarea opiniilor clienților pentru fiecare produs în parte;

gestiunea stocurilor la nivel de loturi;

sprijinirea procesului de decizie prin realizarea unui top al celor mai bine vândute produse;

sprijinirea procesului de cumpărare prin oferirea informatiilor necesare clientului: compozitie, beneficii, mode de administrare. reacții adverse, opiniile altor clienți etc.

Capitolul 2. Tehnologii informatice utilizate pentru realizarea aplicației

În dezvoltarea aplicației am folosit următoarele tehnologii și instrumente software:

arhitectura MVC (Model-View-Controller);

limbajul HTML5 folosit pentru crearea scheletului aplicației web;

CSS3 folosit pentru personalizarea aspectului aplicației web;

PHP pentru realizarea și managerierea părții de back end a aplicației;

JavaScript pentru realizarea funcțiilor dinamice din cadrul aplicației;

MySQL folosit pentru gestiunea bazei de date;

phpMyAdmin pentru managementul bazei de date;

framework-ul Laravel pentru PHP;

framework-ul Bootstrap;

Sublime Text pentru editarea textului;

JQuery pentru modificarea componentelor din paginile web;

Ajax pentru interogări cu baza de date în aceeași pagină.

Model-View-Controller (MVC)

Model-View-Controller (MVC) separă partea de stocare a datelor de cea de prezentare și de prelucrare. Așadar, această arhitectură are trei componente distincte:

model-ul:

răspunde la cererile despre starea sistemului, la cereri de schimbare de stare și notifică utilizatorul atunci când aceste schimbări au avut loc pentru ca aceasta să poată reacționa;;

view-ul:

transpune model-ul într-o formă care permite o interacțiune usoara;

pot exista multiple view-uri pentru un singur model pentru scopuri diferite;

controller-ul:

primește input de la utiizatori și initiază un raspuns în urma cererilor către obiectele model;

controlează celelalte două clase și obiecte, view și model, instructându-le să execute operații pe baza input-urilor primite de la utilizator.

Fig. 1 Diagrama arhitecturii MVC

Sursă: Model-View-Controller disponibil la http://stst.elia.pub.ro/news/IS/IS_Teme1101/mvc.pdf

My SQL

MySQL este un sistem de gestiune a bazelor de date, foarte rapid și robust, produs de compania suedeza MySQL AB și distribuit sub Licența Publică Generala GNU. La ora actuală este cel mai folosit SGBD open-source. Numele acestuia este o combinație între “My”, numele fiicei fondatorului Michael Widenius și “SQL”, abreviere pentru Structured Query Language (Limbaj de interogare structurat). Poate fi folosit împreună cu orice limbaj major de programare precum PHP, C, C++, Java, C#, etc., fiecare dintre acestea folosind câte un tip specific de API. MySQL este componentă integrantă a platformelor LAMP șiWAMP (Linux/Windows Apache MySQL PHP/Pearl/Python). O mare parte a popularității acestuia este datorată și limbajului de programare PHP, cu care este folosit foarte des pentru realizarea aplicațiilor web. Accesul la date este controlat de serverul MySQL, care garantează că mai mulți utilizatori pot lucra simultan cu acestea.

phpMyAdmin

Este un instrument de gestiune a bazelor de date MySQL liber, open source, scris în PHP și destinat administrării bazelor de date prin intermediul unui browser web. Prin phpMyAdmin se pot întreprinde diverse operații cum ar fi crearea, modificarea, sau ștergerea bazelor de date, a tabelelor, a câmpurilor sau a rândurilor prin executarea de comenzi SQL.

Laravel

Laravel este un framework pentru dezvoltarea aplicațiilor web folosind limbajul PHP. Acesta a fost proiectat pentru a îmbunătăți calitatea aplicațiilor software prin reducerea costurilor de dezvoltare inițială și de mentenanță și pentru a reduce timpul necesar dezvoltării unor aplicații. Acest framework a fost proiectat după filozofia “Convenție în loc de configurare”. Acest lucru înseamnă că se fac presupuneri inteligente despre ce ar trebui să facă o aplicație astfel încât în majoritatea situațiilor să se poată ajunge la un rezultat cu un minim de efort depus. Nu orice aplicație este proiectată bazându-se pe această convenție dar, din fericire, Laravel este suficient de flexibil astfel încât să poată lucra cu aplicația indiferent de gradul de unicitate a acesteia. Laravel a fost proiectat pentru a atinge acea verigă lipsă dintre minimalitate și funcționalitate. De asemenea, acesta este printre puținele framework-uri de PHP care oferă posibilitatea de dezvoltare modulară a codului (folosirea modulelor în dezvoltare). Acest lucru a fost obținut printr-o combinație între drivere și pachete de sistem corespunzătoare. Laravel oferă și un pachet de instrumente de ultimă generație pentru interacțiunea cu bazele de date. Prin migrarea bazei de date în Laravel, acesta facilitează proiectarea și modificarea ușoară a acesteia independent de platformă. Aceasta poate fi mai apoi rulată pe orice sistem de gestiunea a bazelor de date care este suportat de Laravel (MySQL, PostgreSQL, MSSQL, SQLite). De asemenea, Laravel integrează un instrument în linie de comandă numit Artisan. Cu ajutorul acestuia dezvoltatorul poate interacționa cu aplicația pentru a declanșa acțiuni precum rularea migrărilor, a testelor și a task-urilor planificate.

Bootstrap

Bootstrap este o bibliotecă open-end gratuită și open source pentru proiectarea de site-uri și aplicații web. Conține șabloane HTML și CSS pentru proiectarea de formulare, butoane și alte componente de interfață, precum și extensii JavaScript opționale. Spre deosebire de multe alte framework-uri, acesta se adresează doar dezvoltării componentelor front-end ale aplicațiilor web. Inițial a fost numit Twitter Blueprint, a fost dezvoltat de Mark Otto și Jacob Thornton în cadrul companiei Twitter ca un cadru pentru a încuraja coerența între componentele interne ale Twitter. Înainte de Bootstrap s-au folosit diferite biblioteci pentru dezvoltarea interfeței, ceea ce a dus la inconsecvențe și la o povară foarte mare în ceea ce privește întreținerea acesteia. Ma târziu a fost redenumit din Twitter Blueprint în Bootstrap și a fost lansat ca un proiect open souce pe 19 august 2011. Dezvoltarea sa a fost menținută în continuare de către Mark Otto, Jacob Thornton și un grup mic de dezvoltatori, iar la data de 31 ianuarie 2012 a fost lansat Bootstrap 2. Această versiune adaugă un sistem de configurare a grilelor cu răspunsuri în douăsprezece coloane, suport încorporat pentru Glyphicons etc. Pe data de 19 august 2013 a fost lansat Boostrap 3 care a reproiectat anumite componente pentru utilizarea design-ului plat și pentru utilizare în realizarea aplicațiilor mobile. Acesta acceptă cele mai recente versiuni ale browser-elor Google Chrom, Safari, Opera, Firefox și Internet Explorer.

Bootstrap este modular și constă dintr-o serie de foi de stil care implementează diferite componente ale setului său de instrumente. Aceste foi de stil sunt în general compilate într-un pachet și sunt incluse în paginile web, dar componentele pot fi incluse sau eliminate și individual. Bootstrap oferă o serie de variabile de configurare care controlează proprietăți precum culoarea diverselor componente. Fiecare componentă constă dintr-o structură HTML, din declarații CSS și, în unele cazuri, din script-uri JavaScript.

Sublime Text

Sublime text este un editor de cod sursă ce poate fi folosit pe mai multe platforme, care suportă și recunoaște numeroase limbaje de programare precum PHP, C, C++. A fost ales acest editor deoarece există o gamă foarte largă de extensii pentru acesta care fac scrierea de cod într-un anumit limbaj de programare mai ușoară. Atributele principale ale acestui editor de text sunt:

“Goto Anything” – permite navigarea rapidă la fișiere, simboluri sau linii;

“Command palette” – permite crearea de către utilizator a anumitor scurtături din tastatură, scurtături care îl pot ajuta pentru scrierea sau navigarea mai rapidă în cod;

editarea simultană – permite editarea sau scrierea aceluiași text în mai multe locuri în același timp;

permite portarea pe mai multe platforme (Windows, macOS, Linux).

HTML5

HTML (Hyper Text Markup Language) este un limbaj de marcare folosit pentru realizarea paginilor web ce pot fi afișate într-un browserși care are ca principal scop prezentarea informațiilor dintr-o pagină web (paragrafe, fonturi, tabele etc.) și mai puțin descrierea semanticii acesteia.

HTML furnizează căi prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadată și indicații de redare. Indicațiile de redare pot varia de la modificări minore ale modului în care textul este afișat, cum ar fi specificarea faptului că un anumit cuvânt trebuie subliniat sau că o imagine trebuie introdusă, până la utilizarea scripturilor mai complicate. Metadatele pot include informații despre titlul și autorul documentului, informații despre cum este împărțit documentul în diferite segmente, paragrafe, liste, titluri etc. și informații importante care permit ca documentul să poată fi legat de alte documente pentru a forma astfel hyperlink-uri.

Hyper Text Markup Language este un format text proiectat pentru a putea fi citit și editat de utilizatori folosind un simplu editor de text. Scrierea și modificarea codului HTML însă necesită o bună cunoaștere a acestui limbaj și mult timp investit în acest sens. Editoarele grafice permit ca paginile web să fie tratate asemănător cu documentele word. Codul HTML se poate genera în mod direct folosind tehnologii de codare din partea serverului cum ar fi PHP (Hypertext Preprocessor), JSP (JavaServer Pages), ASP (Active Server Pages).

Paginile HTML sunt formate din etichete sau tag-uri și au extensia .html sau .htm. În majoritatea cazurilor etichetele sunt în pereche, una de deschidere <eticheta> și alta de închidere </eticheta>. Există și cazuri în care eticheta de deschidere nu necesită o altă etichetă de închidere, atunci se folosește eticheta <eticheta />. Navigatorul web interpretează aceste etichete afișând rezultatul pe ecran. HTML-ul este un limbaj care nu este case-sensitive. Conținutul minim al unui document HTML este:

versiunea HTML a documentului;

zona de header cu etichetele <head> </head>;

zona body cu etichetele <body> </body>.

În prezent, ultima versiune a limbajului HTML este HTML5. Acesta aduce multe caracteristici sintactice noi precum elemente ca <video> , <audio> , <header> , precum și integrarea conținutului SVG care a înlocuit utilizarea tag-ului generic <object>. Aceste noutăți au fost proiectate pentru a facilita includerea și manipularea în paginile web a conținutului multimedia și a celui grafic fără a fi nevoie să se recurgă la proprietăți precum plugin și API. De asemenea. au fost introduse alte elemente și atribute noi care reflectă utilizarea tipică a unui site modern. Astfel, unele dintre ele sunt înlocuite cu utilizări comune de blocuri generice ( <div> ) și de elemente inline (<span>), block de navigație în site (<nav>) și partea de jos a paginii ( <footer> ).

CSS3

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 intermediul elementului <style> sau atributului style. Împreună cu HTML și JavaScript, CSS este un element de bază în realizarea site-urilor web pentru a crea pagini web interactive și plăcute vizual, interfețe utilizator pentru aplicații web și interfețe utilizator pentru majoritatea aplicațiilor mobile.

CSS a fost dezvoltat pentru a trasa o linie delimitatoare între prezentare și conținut, incluzând aspecte precum layout-uri, culori și font-uri. Această separare poate îmbunătăți accesul la conținut, poate asigura mai multă flexibilitate și control asupra caracteristicilor de prezentare, permite ca mai multe pagini HTML să folosească aceeași formatare a elementelor prin specificarea CSS-ului într-un fișier cu extensia.css separat și reduce complexitatea și repetitivitatea într-un conținut structural.

Sintaxa CSS este una simplă ce foloseste numele mai multor proprietăți de stilizare. Un style sheet constă într-o listă de reguli. Fiecare regulă constă în unul sau mai mulți selectori și într-un bloc de declarații.

h1

{

color : blue;

)

Primul set de reguli a fost CSS level 1, publicat pe 17 decembrie 1996. Bazele dezvoltării au fost puse de Hakon Wium Lie și Bert Bos. Setul de reguli CSS de tip level 2 au fost dezvoltate de W3C (World Wide Web Consortium) și a fost publicat ca o recomandare în mai 1998. Astfel că CSS 2 introduce proprietăți precum poziționarea absolute, relative fixed și z-index și noi proprietăți de editare a textului precum umbrele. Dezvoltarea setului de reguli CSS de tip level 3 a început încă din momentul în care CSS 2 a fost publicat. Dintre îmbunătățirile aduse de CSS3 putem aminti:

efecte pentru text;

transformări 2D/3D;

animații.

JavaScript

JavaScript este un limbaj de programare orientat pe obiecte bazat pe conceptul prototipurilor. Se folosește în special pentru introducerea unor funcționalități în paginile web, codul JavaScript fiind rulat de către browser. Limbajul este în special cunoscut pentru folosirea sa în construirea site-urilor web, dar este folosit și pentru accesul 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, mai apoi LiveScript pentru ca, în final, să se numească JavaScript.

Una din cele mai frecvente utilizări ale limbajului JavaScript este în scriptarea paginilor web. JavaScript, HTML și CSS sunt principalele instrumente folosite de programatori pentru realizarea aplicațiilor web.

Browserele web rețin în memorie o reprezentare a unei pagini web sub forma unui arbore de obiecte și pun la dispoziție aceste obiecte script-urilor JavaScript care le pot citi și manipula. Arborele de obiecte poartă numele de Document Object Model (DOM). De asemenea, există și un standard W3C pentru DOM-ul ce trebuie pus la dispoziție de un browser, ceea ce oferă premiza scrierii de script-uri portabile care să funcționeze pe toate browserele. În practică însă, standardul W3C pentru DOM este incomplet implementat. Deși tendința browserelor este de a se alinia standardului W3C, unele dintre acestea încă prezintă incompatibilități majore, cum este cazul browserului oferit de Microsoft, și anume Internet Explorer.

Asemenea unui stil CSS, un script JavaScript poate fi scris atat în pagina web, în antetul sau în corpul documentului, cât și în exteriorul ei, ca fișier separat. Fișierele ce conțin scripturi JavaScript se salvează cu extensia .js. Scriptul JavaScript se introduce între două etichete <script> și </script>.

Folosirea scripturilor în antet:

<html>

<head><title>Javascript in head</title>

<script src=”cale catre fisier”></script>

</head>

<body>

</body>

</html>

Folosirea scripturilor în corpul documentului :

<html>

<head><title>Javascript in head</title>

</head>

<body>

<script>cod javascript</script>

</body>

</html>

PHP

Dezvoltarea limbajului PHP (Hypertext Processor) a fost începută în 1994 ca o extensie a limbajului server-side Pearl, și apoi ca o serie de CGI-uri compilate de către Rasmus Lerdorf, pentru a genera un curriculum vitae și pentru a urmări numărul de vizitatori de pe un site web. Mai apoi a evoluat în PHP 2.0, dar proiectul open source a început să ia amploare după ce Zeev Suraski și Andi Gutmans, de la Technion, au lansat o nouă versiune a interpretorului PHP în vara anului 1998, această versiune primind numele de PHP 3.0. Tot aceștia au schimbat acronimul din “Personal Home Page” în acronimul recursiv “Hypertext Preprocessor”care este păstrat și în prezent.

PHP este un limbaj simplu deoarece este un limbaj de programare structurat precum C, Pearl sau chiar Java, sintaxa acestuia fiind o combinație a celor trei. Una din cele mai importante facilități ale limbajului este posibilitatea folosirii celor mai populare baze de date precum MySQL sau Oracle . Din punctul de vedere al platformelor, PHP poate rula pe majoritatea sistemelor de operare existente precum Windows, Linux, MacOS și poate interacționa cu majoritatea serverelor web. Codul PHP nu poate fi văzut de utilizator. Acesta este interpretat de serverul web și generează un cod HTML ce urmează să fie la dispoziția utilizatorului.

Fig. 2 Schema funcționării unei aplicații web

Sursa: Ivașcu V., Inițierea în PHP & MySQL, 2005, pag.2

În prezent, versiunea actuală a PHP este 7.1. Aceasta se poate descărca de pe site-ul web http://www.php.net.

JQuery

JQuery este o platformă de dezvoltare JavaScript, concepută pentru a ușura și îmbunătăți procese precum traversarea arborelui DOM în HTML, managementul inter-browser al evenimentelor, animații și creații tip AJAX. A fost gândit să fie cât mai mic posibil și să fie disponibil în toate versiunile de browsere importante existente și să respecte filosofia ”Unobtrusive JavaScript”. Biblioteca a fost lansată în anul 2006 de către John Resig. JQuery se poate folosi pentru a rezolva următoarele probleme specifice programării web:

selecții de elemente în arborele DOM folosind propriul motor de selecții open source Sizzle, un proiect născut din JQuery;

parcurgerea și modificarea arborelui DOM;

înregistrarea și modificarea evenimentelor din brwowser;

manipularea elementelor CSS;

efecte și animații;

cereri de tip AJAX.

Exemplu de instrucțiune în JQuery:

var id_categorie_sel =$(“#id_categorie_prod”).val(); – se folosește pentru a extrage valoarea elementului din pagina web care are id-ul id_categorie_prod, care este de fapt un tag de tipul select.

Ajax

Ajax (Asynchronous JavaScript and XML) 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. Termenul este folosit pentru definirea aplicațiilor web ce folosesc un ansamblu de tehnologii:

HTML sau XHTML pentru structura semantică a informațiilor;

CSS pentru prezentarea informațiilor;

JavaScript pentru interactivitate, pentru procesarea informațiilor prezentate;

XML pentru trannsferarea datelor între server și client.

Capitolul 3. Analiza și proiectarea aplicației

În acest capitol sunt prezentate obiectivele și funcțiile aplicației și o parte din etapele proiectării aplicației, și anume modelele pentru proiectarea bazei de date: Modelul conceptual al datelor (MCD) și Modelul Logic al Datelor (MLD). .

3.2. Proiectarea bazei de date

Pentru proiectarea bazei de date am folosit metoda MERISE (Methode d’Etude et Realisation Informatique par le Sous – Ensemble representatif) elaborată de Centrul Tehnic de Informatica din cadrul Ministerului de Industrie Francez.

3.2.1. Noțiuni generale

“Conceptul de sistem apare în forme embrionare în filosofia antică greacă. Afirmând că <<întregul este mai mult decât suma păților>>, Aristotel dă o primă definiție noțiunii de sistem care se va dezvolta și va evolua timp de peste 2000 de ani pentru a ajunge la forma actuală abia la începutul secolului XX.”

“SGBD(Sistem de Gestiune a Bazelor de Date – DataBase Management System) este componenta software a unui sistem de bază de date care interacționează cu toate celelalte componente ale acestuia, asigurând legătura și interdependența între elementele sistemului.”. Un SGBD trebuie să furnizeze suportul software complet pentru dezvoltarea aplicațiilor informatice cu baze de date. El trebuie să asigure:

minimizarea costului de prelucrare a datelor;

reducerea timpului de răspuns;

flexibilitatea aplicațiilor;

protecția datelor.

Fig. 3 Evoluția SGDB-urilor

Sursa: Manole. V, SGBD Oracle, pag 4

3.2.2 Modelul conceptual al datelor (MCD)

Realizarea modelului conceptual al datelor necesită folosirea unei reprezentări sub formă de text a realității așa cum a fost înțeleasă de analist. Se rezumă la descrierea literală ca urmare a analizei, putându-se deduce din aceasta entitățile, asociațiile, cardinalitățile etc. care vor constitui mai departe modelul conceptual al datelor.

Modelul conceptual al datelor proiectat pentru aplicația realizată este prezentat în figura 4 și include următoarele entități:

entitatea clienți: folosită pentru moștenire, deține atributele comune pentru clienții persoane fizice și clienții persoane juridice și anume: id-ul clientului, adresa, telefonul, email-ul și parola;

entitatea client_pf deține toate atributele specifice persoanelor fizice: codul numeric personal (CNP), numele și prenumele;

entitatea client_pj deține toate atributele specifice persoanelor juridice: cod fiscal și denumire;

entitatea users deține toate atributele specifice clienților: id, name, email, password și tip_user;

entitatea cos_de_cumparaturi deține toate atributele specifice produselor adaugate de user în coș;

entitatea categorii deține toate atributele specifice categoriilor: id_categorie, denumire_categorie și descriere_categorie;

entitatea subcategorii deține toate atributele specifice subcategoriilor: id_subcategorie, denumire_subcategorie si descriere_subcategorie;

entitatea produse deține toate atributele specifice produselor aflate în stoc: id_produs, denumire_produs, unitate_de_masura, cantitate_unitara, unitate_de_masura_unitara, descriere, continur, mod_administrare și imagine_produs;

entitatea reduceri deține toate atributele specifice reducerilor aplicate produselor: id_reducere, denumire, metoda_calcul, valoare_calcul, cantitate_calcul, perioada_start, perioada_incheiere;

entitatea beneficii deține toate atributele specifice efectelor produselor: id_beneficiu, denumire_beneficiu, descriere_beneficiu și importanta;

entitatea opinii deține toate atributele specifice recenziilor acordate de clienți produselor: id_opinie, nume1_autor, nume2_autor, email, rating și opinie;

entitatea stare_produs deține toate atributele specifice statisticii pe o perioadă de timp a fiecărui produs: id_stare, data_intocmire, durata, raiting, total_vanzari_pret_fix, total_vanzari_pret_variabil și status;

entitatea gestiune stoc deține toate atributele specifice gestionării stocul: id_lot, numar_lot, data_fabricatie, data_expirare, pret_cumparare, adaos_comercial, cotaTVA, pret_vanzare, moneda și status;

entitatea comenzi deține toate atributele specifice comenzilor plasate de clienți: id_cos, status_cos, data_creare și data_modificare_status; un coș de cumpărături devine comandă atunci când statusul acestuia devine “închis”;

entitatea documente deține toate atributele specifice documentelor de ieșire: id_document, tip_document, serie_document, numar_document, modalitate_plata, total_document, total_tva_document, moneda, comentarii, id_document_superior și stare_document.

Asociația reprezintă o relație între entități. Numărul entităților care intervin în relație caracterizează dimensiunea sa astfel:

asociații binară între două entități;

asociații ternare între trei entități;

asociații n-are între n entități.

În Modelul conceptual al datelor realizat pentru proiectarea bazei de date a aplicației (figura 3), pentru realizarea legăturilor între entități au fost necesare următoarele asociații:

asociația inregistreaza: realizează legătura între entitatea CLIENT și entitatea USERS;

asociația detine realizează legătura între entitatea USERS și entitatea COS_DE_CUMPARATURI;

asociația contine realizează legătura între entitatea COS_DE_CUMPARATURI și entitatea PRODUSE, are ca atribute cantitate_pozitie, valoare, valaore_TVA, moneda, id_reducere

asociația include realizează legătura între entitatea PRODUSE și entitatea SUBCATEGORII;

asociația face_parte realizează legătura între entitatea SUBCATEGORII și entitatea CATEGORII;

asociația acorda realizează legătura între entitatea PRODUSE și entitatea REDUCERI;

asociația ofera realizează legătura între entitatea PRODUSE și entitatea BENEFICII;

asociația descrise realizează legătura între entitatea PRODUSE și entitatea OPINII;

asociația necesita realizează legătura între entitatea PRODUSE și entitatea DOCUMENTE, are ca atribute cantitate_pozitie, valoare, valoare_TVA, moneda, id_reducere;

asociația creaza realizează legătura între entitatea DOCUMENTE și entitatea COMENZI, are ca atribute data, ora;

asociația genereaza realizează legătura între entitatea COS_DE_CUMPARATURI entitatea COMENZI, are ca atribute data, ora;

asociația are realizează legătura între entitatea PRODUSE și entitatea STARE_PRODUSE;

asociația stocheaza realizează legătura între entitatea GESTIUNE_STOC si entitatea PRODUSE.

Fig. 4 Modelul conceptual al datelor

3.2.3. Modelul logic al datelor (MLD)

Modelul logic al datelor presupune tranformarea modelululi conceptual al datelor într-un model valid, din punct de vedere al modalității de stocare a datelor în fișiere de date sau iîn baza de date. Metoda MERISE utilizeazaă pentru trecerea de la modelul conceptual al datelor, la modelul logic al datelor, conform modelului relațional, formalismul ENTITATE/RELATIE. Acesta presupune respectarea câtorva reguli, care se bazează pe cardinalitîțile relațiilor dintre entități, reguli care formulează de fapt câteva șabloane de trecere de la modelul conceptual al datelor la modelul logic al datelor.

In figura 5 este prezentat modelul logic al datelor aferente aplicatiei SMART Nutrition. Conform regulilor de transformare au rezultat tebele:

tabela clienti având cheia primară id_client prin transformarea identificatorului id_client din entitatea cu același nume;

tabela users având cheia primară id prin transformarea identificatorului din entitatea cu același nume;

tabela cos_de_cumparaturi având cheia primară id_cos;

tabela comenzi având cheia primară id_comanda;

tabela rezultă din asociația contine și are cheia primară formată din coloanele id_cos și id_produs deoarece în MCD legăturile asociației conține cu entitățile cos_de cumpărături și produse au cardinalitățile 1,n astfel încât, conform regulilor de trecere la MLD, se generează o nouă tabelă care va avea o cheie primară compusă din cheile primare ale tabelelor corespunzătoare entităților din MCD, și anume: id_cos (cos_de_cumparaturi) și id_produs (produse);

tabela produse având cheie primară id_produs;

tabela rezultă din asociația necesita și are cheie primară formată din coloanele id_document și id_produs deoarece în MCD legâturile asociației necesită cu entitățile documente și produse au cardinalitățile 1,n astfel încât, conform regulilor de trecere la MLD, se generează o nouă tabelă care va avea o cheie primară compusă din cheile primare ale tabelelor corespunzătoare entităților din MCD, și anume id_document (documente) și id_produs (produse);

tabela documente având cheie primară id_document;

tabela gestiune_stoc având cheie primară id_lot;

tabela stare_produse având cheie primară id_stare;

tabela opinii având cheie primară id_opinie;

tabela beneficii având cheie primară id_beneficiu;

tabela rezultă din asociația ofera și are cheie primară formată din coloanele id_beneficiu și id_produs deoarece în MCD legâturile asociației oferă cu entitățile beneficii și produse au cardinalitățile 1,n astfel încât, conform regulilor de trecere la MLD, se generează o nouă tabelă care va avea o cheie primară compusă din cheile primare ale tabelelor corespunzătoare entităților din MCD, și anume id_beneficiu (beneficii) și id_produs (produse);

tabela reduceri având cheie primară id_reducere;

tabela rezultă din asociația acorda și are cheie primară formată din coloanele id_reducere și id_produs deoarece în MCD legâturile asociației acordă cu entitățile reducere și produse au cardinalitățile 1,n astfel încât, conform regulilor de trecere la MLD, se generează o nouă tabelă care va avea o cheie primară compusă din cheile primare ale tabelelor corespunzătoare entităților din MCD, și anume id_reducere (reduceri) și id_produs (produse);

tabela categorii având cheie primară id_categorie;

tabela subcategorii având cheie primară id_subcategorie.

Fig. 5 Modelul logic al datelor

Capitolul 4. Prezentarea aplicatiei

În acest capitol este prezentată aplicația din perspectivă principalelor sale funcționalități. Aplicația este împărțită în două componente.

Pentru dezvoltarea aplicației au fost utilizate tehnologiile prezentate în capitolul ÎI al prezentei lucrări. Astfel s-a folosit: limbajul HTML5 folosit pentru scheletul aplicației, CSS3 folosit pentru personalizarea aspectului aplicației, PHP pentru realizarea și managerierea părții de back-end a aplicației îmbinat cu frameworkul Laravel, MySQL folosit pentru gestiunea bazei de date, cât și Jquery, Ajax și JavaScript pentru dinamicitatea aplicației. Pentru proiectarea și crearea bazei de date s-a folosit Jmerise.

4.1. Pagina de pornire

Această pagină (figura 6) este disponibilă accesând link-ul http://localhost:8000 . Utilizatorul are disponibilă o bară de navigație cu următoarele linkuri prezente: cele din colțul din dreapta sus sunt folosite pentru înregistrare, autentificare cât și pentru vizualizarea coșului de cumpărături și cele pentru produse, categorii, sanatate, sport. Pentru o căutare mai rapidă a unnui produs, în partea de sus a paginii există o casetă de căutare. Se poat afla informații suplimentare desprea categoriile suplimentelor alimentare, despre sănătate și sport utilizând link-urile aferente.

Fig. 6 Pagina de pornire pe desktop

Utilizatorul poate accesa aplicația de pe orice dispozitiv (telefon, tabletă, desktop), layoutul fiind responsive. În figura 7 pagina este setată pentru un dizpozitiv mobil cu o rezoluție mică de 425 x 613 pixeli.

Fig. 7 Pagina de pornire pe mobil

4.2. Autentificarea și înregistrarea

La accesarea linkului „Inregistreaza-te” utilizatorului i se pune la dispoziție o pagină de autentificare ( figura 8 ) , în care acesta va introduce următoarele informații obligatorii: numele de utilizator, email-ul și parola.

Fig. 8 Formular de înregistrare

La nivelul campului adresă de e-mail sunt prezente verificările: formatul și unicitatea iîn baza de date a acesteia. Verificarea formatului este realizat cu ajutorul propietății type=”email” din cadrul tagului <input>. Dacă se introduce o adresă de email invalidă se va afisa mesajul „Introduceti semnul ‚@’ in adresa de email. Din adresa ‚andrei_grigorasyahoo.com’ lipseste semnul ‚@’ ” (figura 9). Verificarea unicității adresei de email se face cu ajutorul propietății 'email'=> 'required|string|email|max:255|unique:users' din funcția publică „validator” aparținând controller-ului RegisterController.php aferent funcțiilor de înregistrare (figura 10). În cazul în care există deja această adresă de email în baza de date se va afisa mesajul „The email has already been taken” (figura 11).

Fig. 9 Mesaj pentru câmpul e-mail când lipsește ‘@’

Fig. 10 Functia validator

Fig. 11 Mesaj pentru câmpul de e-mail atunci când e-mail-ul introdus există în baza de date

În figura 12 este prezentat formularul de conectare cu ajutorul căruia utilizatorul se loghează în cont. În cazul în care se introduce un email inexistent sau parola gresită se va afișa mesajul „This credentials do not match our records.” (figura 13).

Fig. 12 Formularul de conectare

Fig. 13 Mesaj e-mail si parolă necorespunzătoare

În cazul în care utilizatorul nu își mai amintește parola i se pune la dispoziție link-ul „Ti-ai uitat parola?” ce îl redirecționează către o pagină în care i se cere email-ul pentru resetarea parolei (figura 14).

Fig. 14 Formular pentru resetarea parolei

După logare în funcție de tipul userului vor fi disponibile următoarele funcționalități:

administrator:

adăugarea, modificarea și ștergerea produselor;

adăugarea, modificarea și ștergerea loturilor ( operațiunile de modificare și ștergere a unui lot se poate efectua doar dacă lotul este complet, adică nu s-au înregistrat facturi de ieșire cu produse din acesta);

actualizarea stocului în timp real;

gestionarea reducerilor (reducerile se pot oferi pe produse, pe o perioadă de timp finită);

vizualizarea comenzilor efectuate de utilizatori și întreținerea statusului acestora;

vizualizarea facturilor generate pe baza comenzilor efectuate de utilizatori și descărcarea acestora în format PDF;

vizualizarea utilizatorilor înregistrați și a clienților( un utilizator devine client atunci când efectuează prima comandă);

adăugarea , modificarea, ștergerea și atribuirea beneficiilor produselor;

adăugarea, modificarea și ștergerea categoriilor;

adăugarea, modificarea și ștergerea subcategoriilor;

vizualizarea unui grafic care prezintă situația vânzărilor pentru anumite produse

utilizator:

vizualizarea produselor;

vizualizarea promoțiilor și reducerilor;

vizualizarea rating-ului produselor;

vizualizarea disponibilitășii produselor;

vizualizarea în detaliu a fiecărui produs;

calcularea prețului dimanic în funcție de produsul și cantitatea dorită;

calcularea cantității disponibile atunci când stocul este limitat;

adaugarea produselor în coș;

vizualizarea coșului de cumpărături și actualizarea interactivă a acestuia;

salvarea coșului de cumpărături până la finalizarea comenzii;

transformarea coșului în comandă;

finalizarea comenzii și introducerea datelor de facturare pentru produsele achiziționate;

primirea confirmării comenzii și a facturii în format electronic (PDF) prin intermediul email-ului;

vizualizarea celor mai bine vândute produse;

vizualizarea comenzilor anterioare;

gestionarea datelor personale.

4.3. Componenta administrator

Utilizatorul care deține dreptul de administrator este identificat prin propietatea „user_țipe = Admin”. Acesta pote vizualizară tab-ul de Admin din bara de navigație (figura 15) unde are acces la:

produselor;

beneficiilor;

stocuri;

reduceri și discounturi;

clienti și useri;

vizualizeaza comenzi;

vizualizeaza facturi.

Fig. 15 Bara de navigație pentru administrator

4.3.1. Gestiunea produselor

Prin accesarea linkului „Gestioneaza Produse” administratorului i se pun la dispoziție următoarele funcționalități (figura 16):

listarea produselor ( odată listate produsele acestea pot fi modificate sau șterse);

adăugarea unui produs;

listarea categoriilor și subcategoriilor ( odată listate, aceste pot fi modificate sau șterse);

adăugarea unei categorii;

adăugarea unei subcategorii.

Fig. 16 Link-ul pentru gestiunea produselor

4.3.2. Adaugare, modificarea și ștergerea categoriilor

La accesarea linkului „Adauga categorii”, administartorul va fi redirecționat către pagina de adăugare a categoriilor (figura 17) . Pentru adăugarea unei noi categorii se vor completa câmpurile obligatorii (denumire categorie, descriere categorie) și se va apăsa butonul „Adauga categoria”. Validarea acestor câmpuri și salvarea în baza de date se face cu ajutorul controller-ului definit pentru acesta pagină și a funcție save() din modelul definit pentru tabela categorii .

Fig. 17 Adăugarea unei categorii

După salvarea categoriei se afișează mesajul informativ „Categoria MUȘCHI ȘI FORȚĂ a fost adauga” (figura 18).

Fig. 18 Mesaj informativ după dăugarea unei categorii

Modificarea sau ștergerea categoriilor se efectuează prin accesarea linkului „Liesteaza categorii & subcategorii” și apăsarea butoanelor de modificare și ștergere la nivel de categorie(figura 19). Pagina de modificare a categoriilor este asemănătoare cu cea de adăugare singurele diferențe fiind:

titlul formularului „Modifica categorie Cod 2”;

prezența butonului „Reseteaza” cu funcția de resetare a datelor pe formular cu cele inițiale;

mesajul informativ „Categoria MUȘCHI ȘI FORȚĂ a fost salvata” (figura 20) atunci când modificarile au fost salvate în baza de date.

Fig. 19 Modificarea/Ștergerea categoriilor

Fig. 20 Mesaj informativ pentru modificare categorie

Dacă se dorește ștergerea unei categorii se verifică dacă aceasta nu deține subcategorii și se afișează un mesaj pop-up de confirmare (figura 21).

Fig. 21 Mesaj informativ pentru ștergerea categoriei

4.3.3 Adaugarea, modificarea și ștergerea subcategoriilor

La accesarea linkului „Adauga subcategorii”, administartorul va fi redirecționat către pagina de adăugare a subcategoriilor (figura 22) . Pentru adăugarea unei noi subcategorii se vor completa câmpurile obligatorii (denumire subcategorie, descriere subcategorie), se va alege o categorie din care aceasta face parte și se va apesa butonul „Adauga subcategoria”. Validarea acestor câmpuri și salvarea în baza de date se face cu ajutorul controller-ului definit pentru această pagină și a funcției save() din modelul definit pentru tabela subcategorii .

Fig. 22 Adăugarea unei subcategorii

După salvarea subcategoriei se afișează mesajul informativ „Subcategoria Proteine a fost adaugata” (figura 23).

Fig. 23 Mesaj informativ după dăugarea unei subcategorii

Modificarea sau ștergerea subcategoriilor se efectuează prin accesarea linkului „Liesteaza categorii & subcategorii” și apăsarea butoanelor de modificare și ștergere la nivel de subcategorie(figura 24). Pagina de modificare a subcategoriilor este asemănătoare cu cea de adăugare singurele diferențe fiind:

titlul formularului „Modifica Subcategorie Cod 1”;

prezența butonului „Reseteaza” cu funcția de resetare a datelor pe formular cu cele initiale;

mesajul informativ „Subcategoria Proteine a fost salvata” (figura 25) atunci când modificarile au fost salvate în baza de date.

Fig. 24 Modificarea/Ștergerea subcategoriilor

Fig. 25 Mesaj informativ pentru modificare subcategorie

Dacă se dorește ștergerea unei subcategorii se verifică dacă aceasta nu deține produse și se afișează un mesaj popup de confirmare (figura 26).

Fig. 26 Mesaj informativ pentru ștergerea subcategoriei

4.3.4. Adaugarea, modificarea și ștergerea produselor

La accesarea linkului „Adauga produse”, administartorul va fi redirecționat către pagina de adăugare a produselor (figura 27 și figura 28). Adăugarea unui produs reprezintă un proces complex doarece necesită mai multă atenție la detalii. Pentru a adauga un produs sunt necesare urmatoarele informații:

se completează câmpurile obligatorii: denumire produs, descriere produs, conținut, mod de administrare și efecte secundare;

se alege categoria și subcategoria corespunzatoare produsului (aceste categorii și subcategorii au fost definite anterior);

se stabilește modul de ambalare (unități, recipient, pungă, pachet) , cantitatea unitară și unitatea de măsură (kilograme, grame, capsule, plicuri, articole, porții);

se poate adauga o imagine reprezentativă pentru produs. Aceste imagini se vor stoca cu numele inițial al imaginii concatenat cu timestamp-ul curent, în folderul „storage din cadrul aplicatiei.” (figura 29)

se pot adauga beneficii prin selectarea acestora din lista creată la apăsarea butonului „Adauga beneficii”. Pentru realizarea acestei liste s-a folosit un request de tip AJAX care extrage toate beneficiile disponibile din baza de date (figura 30 și figura 31) iar pentru memorarea benficiilor selectatate o variabilă de sesiune de tip vector.

Înainte de salvarea produsului se verifică unicitatea denumirii sale și formatul imaginii dacă aceasta este aleasă. În final se afisează mesajul informativ „Produsul MYGAINER™ 2KG a fost adaugat” (figura 32).

Fig. 27 Adăugarea unui produs 1

Fig. 28 Adăugarea unui produs 2

Fig. 29 Folderul storage

Fig. 30 Extragerea beneficiilor din baza de date

Fig. 31 Lista benficiilor rezultate

Fig. 32 Mesaj informativ de adăugare a unui produs

Modificarea sau ștergerea produselor se efectuează prin accesarea linkului „Listeaza produse” și apăsarea butoanelor de modificare( iconiță creion) și ștergere ( iconiță coș) din figură 31. Pagina de modificare a produselor este asemănătoare cu cea de adăugare singurele diferențe fiind:

titlul formularului „Modifica Produs Cod 1”;

verificarea noii imagini introduse și ștergerea celei vechi pentru reducerea spațiului de stocare;

prezența butonului „Reseteaza” cu funcția de resetare a datelor pe formular cu cele initiale;

mesajul informativ „Produsul MYGAINER™ 2KG a fost salvat” (figura 33) atunci când modificarile au fost salvate în baza de date.

Fig. 33 Mesaj informativ pentru salvarea unui produs

Dacă se dorește ștergerea unui produs se afișează un mesaj pop-up de confirmare (figura 34) și in caz afirmativ se verifică dacă aceasta nu apare în loturi (figura 35).

Fig. 34 Mesaj pentru ștergerea produsului

Fig. 35 Verificare stocuri pentru operațiunea de ștergere a unui produs

4.3.5. Gestiunea beneificilor

Prin accesarea linkului „Gestioneaza Beneficii” administratorului i se pun la dispoziție următoarele funcționalități (figura 36):

listarea beneficiilor ( odată listate beneficiile acestea pot fi modificate sau șterse);

adăugarea beneficiilor;

Fig. 36 Link-ul pentru gestiunea beneficiilor

4.3.6 Adăugarea, modificarea și ștergerea beneficiilor

La accesarea linkului „Adauga beneficii”, administartorul va fi redirecționat către pagina de adăugare a beneficiilor (figura 37) . Pentru adăugarea unui nou beneficiu se vor completa câmpurile obligatorii (denumire beneficiu, descriere beneficiu), se va fixa importanta acestora ( va fi folosita pentru sortarea acestora) și se va apesa butonul „Adauga beneficiu”. Validarea acestor câmpuri și salvarea în baza de date se face cu ajutorul controller-ului definit pentru această pagină și a funcției save() din modelul definit pentru tabela beneficii .

Fig. 37 Adăugarea beneficiilor

Înainte de salvarea beneficiului se verifică unicitatea denumirii acestuia iar în final se afisează mesajul informativ „Beneficiul Secreția hormonilor naturali a fost adaugat”.

Fig. 38 Mesaj informativ pentru adăugarea unui beneficiu

Modificarea sau ștergerea produselor se efectuează prin accesarea linkului „Listeaza beneficii” și apăsarea butoanelor de modificare și ștergere (figura 39) . Pagina de modificare a beneficiilor este asemănătoare cu cea de adăugare singurele diferențe fiind:

titlul formularului „Modifica Beneficiu Cod 1”;

prezența butonului „Reseteaza” cu funcția de resetare a datelor pe formular cu cele initiale;

mesajul informativ „Beneficiul Secretia hormonilor naturali a fost salvat” (figura 40) atunci când modificarile au fost salvate în baza de date.

Fig. 39 Modificarea/Ștergerea beneficiilor

Fig. 40 Mesaj informativ pentru salvarea modificărilor beneficiilor

Dacă se dorește ștergerea unui beneficiu se se afișează un mesaj pop-up de confirmare (figura 41) și in caz afirmativ se verifică dacă aceasta nu este asociat unui produs (fig 42).

Fig. 41 Mesaj informativ pentru ștergerea beneficiilor

Fig. 42 Verificarea beneficiului

4.3.7. Gestiunea stocurilor

Prin accesarea linkului „Stocuri” administratorului i se pun la dispoziție următoarele funcționalități (figura 43):

listarea stocurilor ( odată listate stocurile pot fi modificate sau șterse);

adăugarea unui lot nou;

Aceste loturi pot avea diferite statusuri (figura 44):

„nou”: aceste loturi sunt introduse recent în gestiune și pot fi modificate sau șterse;

„in gestiune”: din aceste loturi au fost vândute produse iar cantitatea disponibilă pe acestea este mai mare ca zero;

„lichidat automat”: din aceste loturi au fost vândute produse până când au fost epuizate;

„lichidat manual”: aceste loturi au fost lichidate manual ca decizie a administratorului.

Prețul de vânzare al produselor este preluat din lot, acesta fiind suma dintre prețul de cumpărare și adaosul comercial plus cota TVA.

Fig. 43 Link-ul pentru gestiunea stocurilor

4.3.6 Listarea stocurilor

La accesarea linkului „Listeaza stocurile”, administratorul poate vizualiza un tabel cu stocurile actuale grupate pe produse .

Tabelul contine urmatoarele coloane (figura 44):

numărul lotului ;

detaliile despre produsul din acest lot;

cantitatea cu care a intrat lotul (cantitatea inițială) si cantitatea actuală acestuia (cantitatea disponibilă);

data intrătrii lotului în gestiune;

prețul de cumpărare;

adaosul comercial;

cota TVA sub formă procentuală;

prețul de vânzare;

moneda în care sunt calculate valorile numerice;

data fabricației și data expirării;

statusul acestora împreună cu butoanele de modificare și stergere dacă lotul are statusul „nou”.

Fig. 44 Loturile

4.3.6 Adăugarea, modificarea și ștergerea stocurilor

La accesarea linkului „Adauga lot nou”, administartorul va fi redirecționat către pagina de adăugare a loturilor (figura 45). Pentru adăugarea unui lot nou se vor completa câmpurile obligatorii (numar lot, cantiate lot, pretul de cumparare, adaos comercial, monedă, cotă TVA), se va alege produsul lotului (acesta este ales din lista de produse), se va stabili data fabricțtiei produselor (această dată nu poate fi mai mare decât cea curentă), se va stabili data expirării produselor (aceasta dată nu poate fi în trecut) și se va apesa butonul „Introdu in gestiune”. Validarea acestor câmpuri și salvarea în baza de date se face cu ajutorul controller-ului definit pentru această pagină și a funcției save() din modelul definit pentru tabela gestiune_stocuri . Loturile noi salvate primesc statusul „nou”.

Fig. 45 Adăugarea unui nou lot

Înainte de salvarea lotului se verifică unicitatea numărului lotului pentru produsul ales, iar la final se afisează mesajul informativ „Lotul 1 pentru produsul id4 a fost adaugat in gestiune” (figura 46).

Fig. 46 Mesaj informational după adăugarea unui nou lot

Modificarea sau ștergerea stocurile se efectuează prin accesarea linkului „Listeaza stocuri” și apăsarea butoanelor de modificare și ștergere din figura 44. Pagina de modificare a stocurilor (figura 47) este asemănătoare cu cea de adăugare singurele diferențe fiind:

titlul formularului „Modifica Lot (Cod 3)”;

numarul lotului este needitabil deoarece schimbarea numerotării loturilor poate crea inconsistențe în baza de date;

prezența butonului „Reseteaza” cu funcția de resetare a datelor pe formular cu cele initiale;

mesajul informativ „Beneficiul Secretia hormonilor naturali a fost salvat” atunci când modificarile au fost salvate în baza de date.

Fig. 47 Modificarea stocurilor

Fig. 48 Mesaj informativ modificare loturi

Dacă se dorește ștergerea unui lot se afișează un mesaj pop-up de confirmare (figura 49). și in caz afirmativ se afiseaza un mesaj de informare „Lotul nr. 2 (MYGAINER™ 2 KG) a fost sters” (figura 50) .

Fig. 49 Mesaj informativ pentru ștergerea lotului

Fig. 50 Mesaj de confirmare a ștergerii lotului

Similar Posts