Proiectarea Si Realizarea Unui Magazin Virtual Pentru Compania Avangate

Proiectarea și realizarea unui magazin virtual pentru compania Avangate

Cuprins

Introducere

Cap. 1 STUDIUL SI ANALIZA SISTEMULUI EXISTENT

1.1 Prezentarea succintă a companiei Avangate

1.2 Principalele activități ale companiei Avangat

1.3 Studiul de conducere

1.4 Studiul sistemului condus

1.5 Studiul sistemului informațional

1.5.1. Studiul fluxului informaționl

1.5.2. Descrierea documentelor utilizate. Modelul conceptual al datelor

1.5.3. Proceduri de prelucrare a datelor utilizate.

Modelul conceptual al prelucrarilor

1.5.4. Analiza sistemului actual și identificarea neajunsurilor existente în funcționarea sistemului existent

1.5.5. Direcții de perfecționare a sistemului actual

Cap. 2. PROIECTAREA DE ANSAMBLU A SISTEMULUI INFORMATIC

2.1 Obiectivele și oportunitatea aplicației informatice

2.2. Locul aplicației informatice în sistem

2.3. Definirea intrărilor sistemului

2.4 Definirea sistemului de codificare

2.5 Modelarea datelor și modelarea prelucrărilor

2.6 Stabilirea colecțiilor de date

2.7 Diagrama Entitate-Asociere

2.8 Alegerea tehnologiei de prelucrare

2.9 Estimarea necesarului de resurse și a calendarului de realizare

Cap. 3. PROIECTAREA DE DETALIU A APLICATIEI INFORMATICE

3.1 Definirea obiectivelor aplicației informatice

3.2 Proiectarea logică și fizică a intrărilor

3.2.1. Înregistrarea userilor

3.2.2. Introducerea produselor în baza de date

3.2.3. Introducerea categoriilor în baza de date

3.2.4. Introducerea licențentelor în baza de date

3.3 Proiectarea bazei de date

3.3.1. Descrierea tabelelor

3.4 Schema de sistem a aplicației

3.5 Proiectarea logică și fizică a ieșirilor

3.5.1 Rapoarte privind tabelul produselor

3.5.2 Rapoarte privind tabelul categoriilor

3.5.3 Rapoarte privind tabelul licențelor

3.5.4 Rapoarte privind tabelul comenzilor

3.5.5. Rapoarte privind tabelul userilor

3.6 Proiectarea interfeței aplicației

3.7 Schema de flux informațional a noului sistem

Cap. 4. PREZENTAREA PRODUSULUI SOFTWARE

4.1 Cerințele platformei hardware și software ale produsului program

4.2. Descrierea funcțiunilor aplicației

Cap. 5. EFICIENȚA ȘI UTILITATEA SISTEMULUI INFORMATIC

5.1. Considerații privind eficiența aplicației informatice

Bibliografie

Anexe

Anexa nr. 1 – Catalog

Anexa nr. 2 – Heading Admin

Anexa nr. 3 – Functions

Introducere

În lumea modernă succesul în afaceri reprezintă implicarea pe toate planurile și mediile acesteia. Pentru a reduce sau chiar elimina erorile umane, managemenul este suținut de către sistemele informatice care pot conduce, analiza, prelucra și organiza datele referitoare la desfășurarea activității unei firme. Sisteme informatice pot fi aplicate în orice departament și nivel al firmei. Implementarea unui sistem informatic activității de vânzare duce la următoarele avantaje: crește eficiența, crește viteza de lucru, crește gradul de regăsire a datelor, crește viteza de proiectare, crește eficiența vânzărilor, crește eficiența desfacerii, și ajută la vizualizarea rapidă a unor rapoarte privind vânzările, stocul, precum și produsele care aduc cel mai mare venit.

Motivația alegerii companiei Avangate constă în dorința de a înlocui actualul sistem informatic deficitar cu unul nou și îmbunătățit. Compania Avangate este o companie multinaționlă cu sediul principal în Amsterdam, Olanda și sediul operațional în București, Romania, având ca obiectiv principal vănzarea produselor software.

După dezbaterea și analiza sistemului informatic actual în care s-au urmărit obiectivele companiei, organizarea activității de vânzare și identificarea direcțiilor de perfecționare ale sistemului existent s-a ajuns la concluzia că sistemul informatic actual este invechit și trebuie schimbat cu unul nou care să se plieze pe cerințele clienților.

Capitolul 1. STUDIUL ȘI ANALIZA SISTEMULUI EXISTENT

1.1 Prezentarea succintă a companiei Avangate

Avangate reprezintǎ soluția de comerț digital preferatǎ de companii software și de ser-vicii cloud care își propun sǎ își dezvolte afacerea la nivel global. Cu Avangate companiile soft-ware pot deservi cumpǎrǎtori individuali și le pot îndeplini așteptǎrile de creștere prin vânzǎri oriunde și prin orice canal la nivel internațional.

Fondatǎ în 2006, Avangate își are sediul central în Amsterdam, Olanda. Este un fur-nizor de încredere pentru soluții agile a eCommerce creat pentru companii Software și SaaS care se bazeazǎ pe Avangate pentru a-și crește business-ul la nivel internațional prin orice canal și orice model.

Soluția eCommerce Avangate permite companiilor software sǎ integreze rapid schim-bǎrile din industrie, sǎ ajungǎ eficient în fața clienților și să adopte noi modele de business cu focus pe optimizarea profitabilitǎții în canalele online și offline.

Avangate reprezintǎ furnizorul numărul 1 de soluții pentru comerț (eCommerce + facturare + distribuție) la nivel global, pentru piețele de software și servicii online.

Motourile companiei sunt următoarele:

Oamenii fac ceea ce este astazi Avangate și astfel se incurajează în mod natural munca în echipă, inplicarea, responsabilitatea și respectul;

Excelența este o valoare care inspirǎ doar rezultate de înaltǎ calitate atât extern, cât și intern și sǎ îmbunǎtǎțim continuu cunoștințele;

Creativitatea este răsplătită, inițiativa și inovația, aceastea fiind un motor puternic ce propulseazǎ compania înainte;

Plǎcerea clienților este cu adevarat testul suprem al eforturilor și mǎsura succesului. Clienții și partenerii apreciazǎ eficiența, flexibilitatea, integritatea și transparența.

Avangate a fost fondatǎ în 2006 ca membrǎ a familiei de companii GECAD. De la înființarea sa, Avangate a devenit o prezențǎ solidǎ pe piața internaționalǎ a comerțului digital, a-jutând companiile sǎ-și accelereze vânzǎrile online prin orice canal, orice model și orice piațǎ.

În octombrie 2013 Francisco Partners a achiziționat Avangate. Francisco Partners este o companie de capital privat, lider global, concentratǎ exclusiv pe investiții în tehnologie și afa-ceri în domeniul serviciilor tehnologice.

Echipa companiei Avangate este alcatuitǎ din:

Președinte & CEO;

Chief Operating Officer;

SVP, Vânzǎri Internaționale;

CMO/SVP Marketing și Produse;

Chief Information Officer;

Chief Product Evanghelist;

Directorii Birourilor Regionale: – VP, Vânzǎri America de Nord;

– VP, Vânzǎri Europa de Vest;

– VP, Vânzǎri EMEA;

– VP, Vânzǎri APAC.

Valorile fundamentale ale companiei se ghideazǎ astfel încât sǎ livreze constant rezultate excepționale pentru clienți și comunitatea companiei Avangate. Avangate reprezintǎ o companie deschisǎ cu o viziune directǎ, ce depune toate eforturile pentru a ajuta companiile software și SaaS sǎ obținǎ rezulte maxime din afacerea lor.

Avangate a avut un parcurs extraordinar pentru a ajunge unde este astǎzi fiind destul de încrezǎtoare ca poate oferi soluții profesionale eficiente pentru a acoperi toate nevoile clienților de business, astfel încât aceștia sǎ se ocupe doar de creșterea afacerii lor.

1.2 Principalele activități ale companiei Avangate

Avangate ajută producătorii de software și SaaS sau servicii în cloud, prin platforma de comerț electronic și serviciile pe care le oferǎ, să își vândă produsele online în orice țară, indiferent de modelul de business (produs descărcabil sau serviciu), indiferent de canalul prin care vând – direct, prin parteneri sau distribuitori.

Producătorii își setează produsele în platformă, prețurile (globale sau pentru fiecare piață în parte), recurentă (dacă este cazul), alte informații despre produs – și își prezintă produsele pe site-ul propriu, prin site-urile partenerilor, afiliaților, chiar și în produs, oriunde doresc. În momentul în care clientul apasă butonul „Cumpără acum” sau chiar și „Încearca gratuit acum”, compania preluează clientul în paginile ei securizate care sunt traduse în mai mult de 30 de limbi pentru a crește confortul clientului cu pagina de plată, mai departe sunt oferite peste 30 de metode de plată.

Avangate practic se ocupă de tot ce înseamnă partea de vânzare, inclusiv transfer valutar, gestionarea taxelor în fiecare țară în parte, trimiterea codurilor de licențe, linkurilor pentru descărcare sau a detaliilor de acces la produs, plus optimizarea proceselor, astfel încât clientul să beneficieze, de exemplu, o rată cât mai mare de conversie în coșul de cumpărături, să poți să faci teste de optimizare între două prețuri pe o anumită piață, să poata să tranzacționeze pe orice device .

Oferă și ajutor pe partea de canale de vânzări – avand o rețea de 40.000 de afiliați specializați în promovarea software-ului pe care o pune la dispoziția clienților – aceștia se conectează la rețea și își pot alege partenerii cu care vor să lucreze și au un modul dedicat pentru gestionarea afiliaților.

Dat fiind caracterul inevitabil al SaaS, abilitatea Avangate de a susține orice model în mod egal – și a administra licențele, subscripțiile, facturarea recurentǎ și reînnoirile simultan, transformǎ platforma Avangate în cea mai bunǎ opțiune pentru orice companie software.

Avangate oferǎ serviciilor online și SaaS tot ce le este necesar pentru a stimula veni-turile recurente globale și a profita de cea mai largǎ distribuție disponibilǎ în toate piețele în dezvoltare. Avangate permite eficientizarea și reducerea termenelor de platǎ – pentru a scurta ciclul de vânzare, a beneficia de facturarea recurentǎ și pentru a accelera creșterea veniturilor.

1.3. Studiu sistemului de conducere

Sistemul de conducere prin scopul său este menit să ia deciziile de nivel organizatoric și să formeze strategii pe termen lung urmând bunul mers al firmei pe piața în care își desfășoară activitatea.

Compania Avangate are ca principal Manager de nivel înalt Directorul General urmat de managerii departamentelor instituției. Aceștia în urma informațiilor primite de la managerii de nivel mediu analizează situația proiectelor în desfășurare și cele deja realizate pentru a găsi punți de dezvoltare și pentru a stabili strategia de urmat pentru viitor. De asemenea Managerii departamentelor se asigură de calitatea serviciilor oferite de firma prin fiecare departament menținând o legătură constanța cu clienții societății și urmărind realizarea comenzilor la cel mai înalt grad de satisfacție al clientului.

1.4. Studiul sistemului condus

Sistemul condus reprezintă un ansamblu de activități omogene sau complementare, respectiv identice, asemănătoare sau înrudite, care au o logică în manifestarea lor propriu-zisă și contribuie la o mai bună gestionare a resurselor și creșterea eficienței de ansamblu a întreprinderii.

Acesta este format din managerii de nivel mediu care asigură conducerea operativă a întreprinderii.

– Departamentul Financiar – Contabil – înglobează activitățile de obținere și folosire rațională a disponibilităților bănești, controlul operațiilor în care s-au investit fonduri bănești, stabilirea necesarului de mijloace financiare și găsirea de noi surse de finanțare a activității;

– Departamentul de Resurse Umane – reprezintă un ansamblu de activități care urmăresc procesele la care se supun resursele umane, adică asigurarea întreprinderii cu forță de muncă calificată, recrutarea personalului, selecționarea, încadrarea, promovarea, retribuirea salaria-ților, pregătirea și specializarea anagjaților. De asemenea, în cadrul acestui departament sunt analizate problemele sociale, de asistentă medicală și raporturile manager-salariați și sunt inclu-se activități administrative, de secretariat și protocol;

– Departamentul IT – prin rolul său se are în vedere atât funcționarea în parametrii nor-mali a tuturor resurselor IT (de la calculatoare, imprimante, telefourentǎ și pentru a accelera creșterea veniturilor.

1.3. Studiu sistemului de conducere

Sistemul de conducere prin scopul său este menit să ia deciziile de nivel organizatoric și să formeze strategii pe termen lung urmând bunul mers al firmei pe piața în care își desfășoară activitatea.

Compania Avangate are ca principal Manager de nivel înalt Directorul General urmat de managerii departamentelor instituției. Aceștia în urma informațiilor primite de la managerii de nivel mediu analizează situația proiectelor în desfășurare și cele deja realizate pentru a găsi punți de dezvoltare și pentru a stabili strategia de urmat pentru viitor. De asemenea Managerii departamentelor se asigură de calitatea serviciilor oferite de firma prin fiecare departament menținând o legătură constanța cu clienții societății și urmărind realizarea comenzilor la cel mai înalt grad de satisfacție al clientului.

1.4. Studiul sistemului condus

Sistemul condus reprezintă un ansamblu de activități omogene sau complementare, respectiv identice, asemănătoare sau înrudite, care au o logică în manifestarea lor propriu-zisă și contribuie la o mai bună gestionare a resurselor și creșterea eficienței de ansamblu a întreprinderii.

Acesta este format din managerii de nivel mediu care asigură conducerea operativă a întreprinderii.

– Departamentul Financiar – Contabil – înglobează activitățile de obținere și folosire rațională a disponibilităților bănești, controlul operațiilor în care s-au investit fonduri bănești, stabilirea necesarului de mijloace financiare și găsirea de noi surse de finanțare a activității;

– Departamentul de Resurse Umane – reprezintă un ansamblu de activități care urmăresc procesele la care se supun resursele umane, adică asigurarea întreprinderii cu forță de muncă calificată, recrutarea personalului, selecționarea, încadrarea, promovarea, retribuirea salaria-ților, pregătirea și specializarea anagjaților. De asemenea, în cadrul acestui departament sunt analizate problemele sociale, de asistentă medicală și raporturile manager-salariați și sunt inclu-se activități administrative, de secretariat și protocol;

– Departamentul IT – prin rolul său se are în vedere atât funcționarea în parametrii nor-mali a tuturor resurselor IT (de la calculatoare, imprimante, telefoane, centrale telefonice digitale, până la prize, cabluri utp, management servere) ci și organizarea și achiziționarea de noi resurse, astfel încât volumul de muncă per angajat să aibă un grafic de crește exponențial aducând beneficii materiale firmei;

1.5. Studiul sistemului informațional

Modelul conceptual de comunicație este un model determinat în urma analizei fluxurilor informaționale din cadrul activitǎții (-lor) informatizate. Conceptele fundamentale cu care opereazǎ acest model sunt: actorii; fluxurile informaționale; diagrame de flux; matrice de flux; diagramele de dependențǎ între documente.

Actorii – entitǎțile implicate în funcționarea normalǎ a activitǎților unei firme. Actorii nu reprezintǎ neapǎrat persoane, în cadrul sistemului informațional financiar contabil, ci pot fi: societǎți comerciale, servicii din cadrul firmei, etc. Actorii sunt reprezentați în MCC prin intermediul unor cercuri;

Fluxurile informaționale – ansamblul informațiilor schimbate între actori. Fluxurile de informații sunt reprezentate prin intermediul sǎgeților, care indicǎ direcționarea informațiilor între actori;

Diagramele de flux – prezintǎ legǎturile dintre actori, prin intermediul schimburilor de informații reflectate cu ajutorul fluxurilor informaționale;

Matricele de flux – forma de reprezentare tabelarǎ a fluxurilor schimbate între actori. La intersecția liniilor cu coloanele, fluxurile apar sub douǎ forme: fluxuri interne și fluxuri externe;

Diagramele de dependențǎ între documente – reflectǎ relația de dependențǎ care existǎ între documente, de tipul “un document depinde de alt document”. Practic, reflectǎ fluxul informațional, generat de mișcarea documentelor. Aceastǎ diagramǎ are și rolul de a asigura luarea în considerare a tuturor documentelor, fǎrǎ riscul de a uita unele dintre ele.

1.5.1. Studiul fluxului informațional

Intrări Ieșiri

Figura nr. 1 Studiul fluxului informațional

1.5.2. Descrierea documentelor utilizate. Modelul conceptual al datelor

Modelarea conceptualǎ presupune, înainte de elaborarea celor trei modele specifice (model conceptual de comunicație, model conceptual al datelor și model conceptual al intrǎrilor), identificarea tuturor documentelor vehiculate în cadrul activitǎții ce urmeazǎ a fi informatizate: documente de intrare și documente de ieșire. Sunt culese toate pozițiile (atributele) din aceste documente, iar acolo unde este cazul, și modalitǎțile de calcul aferente, sau modalitatea de derivare a unor atribute din altele. Aceastǎ modelare este independentǎ de limbajul de programare sau de sistemul de gestiune a bazelor de date în care se va implementa sistemul.

Realizeazǎ o modelare abstractǎ a datelor, plecând de la intrǎrile și ieșirile viitorului sistem, prin utilizarea a trei concepte de bazǎ: entitate, relație, proprietate.

Documentele utilizate în cadrul companiei Avangate cuprind:

1. Un formular de comandǎ în care clientul își poate descrie afacerea cu produse software, prin acesta clientul va putea obține toate instrumentele necesare, precum și evaluarea necesarǎ pentru ca acesta (clientul) sǎ poatǎ avea un cont de acces pe siteul companiei Avangate;

2. Dupǎ completarea formularului prezentat anterior, clientul trebuie sǎ furnizeze și datele de contact, acestea vor fi trecute în formularul numǎrul 2, prin furnizarea acestor date clientul va putea fi informat în legaturǎ cu rezultatul obținut în urma evaluǎrii datelor, mai exact clientul va fi anunțat dacǎ activarea contului a fost aprobatǎ sau nu, la adresa menționatǎ de acesta, email sau adresa unde își are sediul firma, va fi încheiat și un contract între client și compania Avangate;

3. Un ultim document ar fi un al 3 lea formular care conține informații cu privire la problemele întâmpinate de cǎtre client, cu ajutorul acestor informații, Avangate va gǎsi soluții optime pentru a ajuta clientul în atingerea obiectivelor propuse.

Dupǎ completarea acestor formulare, clientului i se va oferi soluția cea mai optimǎ pentru afacerea lui, acesta fiind contactat pentru a i se comunica dacǎ cererea i-a fost aprobatǎ în urma evaluǎrii efectuate de cǎtre Avangate;

1.5.3. Proceduri de prelucrare a datelor utilizate. Modelul conceptual al prelucrǎrilor

Din punct de vedere conceptual, modelul conceptual al prelucrărilor surprinde prelucrările informatice efectuate într-un anumit context. Conceptele de bază cu care operează modelul conceptual al prelucrărilor, sunt: evenimentul; operația; sincronizarea; procesul.

Evenimentul – stimul din afara sistemului sau din interiorul acestuia. Un eveniment poate avea și proprietăți.

Operația – set de acțiuni, întreprinse de sistem, ca răspuns la unul sau mai multe evenimente interne sau externe. În urma execuției unei operații, există posibilitatea ca acestea să genereze alte evenimente, condiționate de îndeplinirea unor reguli de declanșare a acestora;

Sincronizarea – se referă la lista evenimentelor care trebuie să șe producă, concretizate în reguli de activare a unei operații. Evenimentele se pot grupa în propoziții logice, prin utilizarea operatorilor logici și/sau/nu;

Procesul – se referă la un ansamblu de operații executate, din același domeniu;

Descrierea fiecărui eveniment se realizează prin precizarea tipului acestuia (din interiorul sau din afara sistemului) și a proprietăților sale;

Descrierea fiecărei operații se realizează prin precizarea procesului care a generat-o, a evenimentelor care au generat-o, a evenimentelor declanșate în urma ei, a regulilor de declanșare și a acțiunilor întreprinse asupra sistemului, pentru rezolvarea acestei operații.

În prealabil după ce este primită de la client cererea de creare a contului de acces, informațiile sunt colectate de către Managerul de Cont și sunt derulate mai departe către responsabilii în firmă cu evaluările iinformatiilor furnizate de către client.

Completarea datelor cerute de către Avangate, vor ajuta la crearea contului de utili-zator și la gestionarea siteului în funcție de alegerea făcută de către client (pachetul de servicii ales de acesta).

Datele de contact furnizate de către client, trebuie să fie date reale deoarece acestea vor fi trecute printr-un filtru de aprobare, iar în cazul în care se constată că datele nu sunt reale, atunci clientul nu este eligibilsi în concluzie contul nu poate fi aprobat. În cazul în care datele sunt valide, acestea vor primi un nume de utilizator, o parolă și instrucțiuni de accesare a Panoului de control Avangate eCommerce.

Pentru a finaliza înregistrarea datelor completate în cele 3 formulare, este necesară validarea acestora prin introducerea unui cod de verificare, acesta fiind un cod unic pentru fiecare solicitare. După introducerea datelor și a codului cererea este trimisă spre evaluare, aceasta urmând să fie procesată și verificată pentru a putea obține aprobarea.

În urma aprobării, consultanții Avangate i-au legătură cu clientul, confirmandu-i-se astfel activarea contului și faptul că va primi prin poștă contractul încheiat între el și compania Avangate.

1.5.4. Analiza sistemului actual și identificarea neajunsurilor existente în funcționarea sistemului existent

Sistemul informațional al departamentului așa cum se prezintă în momentul de față a rămas neschimbat încă de la întemeierea firmei în cauza. Acesta prezintă :

– management deficitar al istoricului evaluărilor și al evaluărilor în curs datorită fap-tului că nu există o soluție unitară în sistem, ci managementul reprezintă alegerea fiecărui angajat în fluxul informațional de date să își organizeze datele așa cum consideră de cuviință;

– neexistență unei funcții de a crea rapoarte în funcție de client (bancă), Manager de Cont, Consultant sau doar pentru a avea o situație asupra numărului de evaluări total pe o zi/ luna/an;

1.5.5. Direcții de perfecționare a sistemului actual

Soluția singulară pentru evoluția afacerii departamentului de evaluări o reprezintă o soluție integrată, automatizată care să ofere :

– management eficace al comenzilor de intrare și a organizării datelor atât pentru Managerii de Cont cât și pentru Consultanți prin distribuirea automată de responsabilitate către un Consultant, de la introducerea în sistem a unei comenzi și până la terminarea raportului de evaluare. Comanda introdusă în sistem fiind unică și pentru Managerii de Cont cât și pentru Consultanți, aceștia din urmă putând să completeze spațiile care le revin pentru finalizarea comenzii în sistem;

– notificare prin email la repartizarea unei comenzi de la un Manager de Cont către un Consultant, pentru o eficientizare și o optimizare a timpului de realizare a evaluării datelor;

– organizarea maximală a datelor prin implementarea de funcții avansate de sor-tare/ afișare/ căutare/ filtrare a datelor în timpi optimi;

– funcție avansată de generare rapoarte de activitate;

– funcție de mesagerie internă pentru o comunicare fluentă între utilizatorii sis-temului;

– controlul eficace al drepturilor fiecăruia în sistem prin implementarea de conturi cu răspunderi controlabile;

Capitolul 2. Proiectarea de ansamblu a sistemului informatic

2.1. Obiectivele și oportunitatea aplicației informatice

Pentru activitǎțile întreprinse de clienți au fost stabilite următoarele obiective ale noului sistem informatic:

crearea unei posibilități de management și organizare centralizate a datelor de intrare;

asigurarea redundanței și securității datelor;

automatizarea procesului de schimb de informații între membrii departamentelor și în cadrul acțiunii de atribuire de responsabilitate;

Aplicația ce urmează a fi dezvoltată se interpune între managerii de cont, consultanții și departamentul de contabilitate, creând astfel o relație automatizată între departamentele respective.

2.2. Locul aplicației informatice în sistem

Avangate Commerce Cloud este creat pe o platforma Cloud și Infrastructura tehno-logică, aceasta oferind practic un set bogat de funcționalitǎți integrate pentru a oferi clienților puterea și flexibilitatea necesare pentru a opera și dezvolta propria afacere.

Configurarea Avangate se bazeazǎ pe șabloane și include setǎri standard, predefinite de ecommerce. Este construitǎ într-un mod ce pune într-un timp foarte scurt o afacere pe picioare fǎrǎ a întâmpina probleme uzuale care apar în procesele de integrare. In ceea ce privesc integrǎrile avansate, clienții se pot baza pe expertiza oferitǎ de Avangate ce ajutǎ la includerea ecommerce în aplicațiile proprii, precum și în CRM, web analytics, DRM, ERP și multe altele.

2.3 Definirea intrărilor sistemului

Intrările în sistem asigură generarea datelor de intrare, care vor face obiectul prelu-crărilor automate prin intermediul algoritmilor de calcul și de prelucrare.

Rolul documentelor de intrare (DI) ale unui sistem constă în faptul că vor consemna starea și dinamica fenomenelor și proceselor petrecute în sistemul operant/productiv și au următoarele particularități:

sunt generate (întocmite) la locul și în momentul (desfășurării) producerii unui proces sau fenomen;

reflectă operații specifice prin intermediul cărora vor fi generate tranzacțiile externe;

circuitul, termenele, intervalele obligatorii și modul concret de prelucrare, sunt stipulate în reglementări legale sau de norme interne;

gradul de prelucrare al informațiilor de pe DI este minim;

modelele documentelor de intrare conțin zone evidențiate și/sau colorate în diverse moduri, în scopul asigurării clarității, calității și exactității generării și introducerii datelor în sistem;

Clasificate după maniera în care intră în sistem, informațiile sunt:

intrări off-line – sunt cele care intră în sistem prin intermediul documentelor și care presupune operația de introducere în sistem sau colectare a lor;

intrări on-line – sunt acele informații care sunt introduse direct în sistem – în mo-mentul producerii fenomenului real – prin intermediul terminalelor, a stațiilor de lucru sau transmisiei de date.

2.4. Definirea sistemului de codificare

Prin codificare se înțelege procesul se substituire a valorii reale a unui atribut cu o altă valoare, iar valoarea reală va fi stabilită prin operația de decodificare.

Sistemul de codificare este format din totalitatea elementelor privind necesitatea, o-biectul, cerințele codificării, funcțiile codurilor, tipuri de coduri, activitățile impuse de codificare și coduri folosite. Este o operație foarte importantă cu efecte deosebite asupra performanțelor tehnice ale noului sistem.

Necesitatea codificării care este generată de: operații de grupare, ierarhizare și localizare a elementelor; utilizarea mai bună a suportului și a memoriei; minimizarea timpului de răspuns și a erorilor; securitatea, confidențialitatea și abstractizarea informațiilor; simplitatea utilizării codurilor; uniformizarea denumirilor; posibilitatea manipulării electronice a informațiilor.

Obiectul codificării care constă în: obiecte, fenomene, operații, proprietăți, etc.; intrări sau ieșiri din sistem; elemente auxiliare.

Cerințele codificării sau reguli ce trebuiesc respectate: unicitatea codului; stabilitatea și suplețea în timp; controlabilitatea codului; comoditatea utilizării; concizia; extensibilitatea.

Funcțiile codurilor: descriptivitate totală sau parțială a obiectului codificat; identifi-carea parțială sau concretă; control corectitudinii codului; operativitatea prelucrării.

Tipologia codurilor – sau tipurile de coduri posibile după: natura caracterelor: numeric, alfabetic, alfanumeric; modul de control al erorilor: autodetectoare de erori, autocorectoare; structură: secvențiale, structurate (ierarhizate, juxtapunere); modul atribuirii: manual, automat.

Realizarea codificării este procedeul prin care se asigură: determinarea obiectelor codificabile; pregătirea codificării; realizarea nomenclatorului de coduri; întreținerea nomenclatorului.

Coduri standard utilizate: cod document; cod bancar; cod operație; cod beneficiar/ client; codificare statistică.

2.5. Modelarea datelor și modelarea prelucrǎrilor

O activitate foarte importantă în proiectarea unei aplicații o reprezintă modelarea datelor și a felului în care ele relaționeazǎ între ele. Tehnologia de specialitate a stabilit mai multe modalități prin care se pot determina structura tipurilor de date cu care se va lucra.

Proiectarea și realizarea unui sistem informatic care presupune prelucrarea automată a datelor necesită, pe lângă activitățile legate de formularea problemei, de analiză acesteia în vederea găsirii algoritmului de rezolvare și o altă activitate, deosebit de importantă, legată de organizarea datelor, în concordanță atât cu caracteristicile tehnice ale echipamentelor de calcul, cât și cu cerințele de prelucrare. Acestea trebuie să fie structurate astfel încât prin codificarea și apoi memorarea lor pe suporți tehnici să permită prelucrările necesare, stocarea și regăsirea ulterioară a datelor după criteriile stabilite.

Modelarea conceptuală a datelor reprezintă o metodă abstractă de reprezentare a tipurilor de date, a legăturilor dintre acestea, a dinamicii acestor legături prin intermediul unor concepte specifice cum ar fi: tip entitate, tip relație, tip proprietate, cardinalitate, chei primare, chei secundare, etc.

Modelul logic al datelor se obține în urma conversiei MCD pe MOD prin următoarele etape:

transformarea MCD/MOD, exprimat prin formalismul entitate – relație, în MLD exprimat prin formalismul specific SGBD folosind un model relațional propus de E.F.CODD sau navigațional propus de CODASYL;

cuantificarea modelului logic;

Modelarea logică a prelucrărilor (MLP) cuprinde ansamblul de acțiuni, concepte și documente aferente descrieri structuri logice a prelucrărilor și descriere a modelului sau modelelor posibile de prelucrare a datelor în conformitate cu parametri fixați anterior: SO, arhi-tectura comunicațiilor, tipul de structuri utilizate și SGD ales. Modelul logic trebuie să asigure funcțiile:

Modelarea logică a prelucrărilor se bazează pe rezultatele furnizate de modelul con-ceptual și organizatoric al prelucrărilor și el trebuie să asigure următoarele funcții: structurarea sistemului în componente logice: subsisteme, aplicații, proceduri sau unități logice de prelucra-re; modelarea prelucrărilor la nivel logic prin folosirea conceptelor: centru de lucru logic, mași-nă logică, unitate logică de prelucrare, subschemă logică de date;

Figura nr. 2 Structura unui Sistem Informatic

Subsistemul informatic – este o parte a SI prin intermediul căreia se automatizează o funcție asociată unui organism sau o operație a unei funcții;

Aplicația Informatică (AI) – este o componentă a unui subsistem informatic ce asigură informatizarea unei activități, proces sau a unei operații complexe;

Unitatea Logică de Prelucrare (ULP) este o parte componentă a AI caracterizată prin prelucrări omogene și specifice ce acționează asupra unei SD specifice sau unui DP se mai numește și procedura logică.

Modelarea fizică a datelor are ca element central conceptul de bază de date, apărut ca o necesitate a eliminării neajunsurilor generate de realizare a aplicațiilor bazate pe fișiere în care structura fișierelor era descrisă în programe, iar activitatea de întreținere devenise greoaie.

O ramură foarte importantă în proiectarea unei aplicații o reprezintă modelarea datelor și a felului în care ele relationeaza între ele. Tehnologia de specialitate a stabilit mai multe modalități prin care se pot determina structura tipurilor de date cu care se va lucra.

Proiectarea și realizarea unui sistem informatic care presupune prelucrarea automată a datelor necesită, pe lângă activitățile legate de formularea problemei, de analiză acesteia în vederea găsirii algoritmului de rezolvare și o altă activitate, deosebit de importantă, legată de organizarea datelor, în concordanță atât cu caracteristicile tehnice ale echipamentelor de calcul, cât și cu cerințele de prelucrare. Acestea trebuie să fie structurate astfel încât prin codificarea și apoi memorarea lor pe suporți tehnici să permită prelucrarile necesare, stocarea și regăsirea ulterioară a datelor după criteriile stabilite.

Legăturile și relațiile dintre date poate fi stabilit prin Modelarea Conceptuală a Datelor, această modalitate fiind reprezentată prin modelul Entitate-Asociere (Diagrama Entitate – Asociere sau DEA).

Luând în considerare activitatea firmei, comercializarea produselor software găsim că:

– firma primește prin diferite metode abordate de clienți comenzile pentru achizitio-narea produsului/lor;

– după ce comenzile sunt primite un utilizator introduce datele primite în sistem. Apoi alt utilizator se ocupă de verificarea datelor urmând să completeze cu detalii comanda primită inițial;

– firma are câte un responsabil pentru fiecare client (bancă) cu care aceasta colabo-rează;

– fiecare comandă reprezintă un tip de produs ce trebuie distribuit în funcție de nece-sitǎțile clientului;

2.6. Stabilirea colecțiilor de date

Organizarea datelor ocupă un loc important în proiectarea sistemelor informatice, de aceasta depinzând eficiența sistemului informatic. Organizarea datelor presupune:

definirea, structurarea, ordonarea și gruparea datelor în colecții omogene de date ;

stabilirea legăturilor (relațiilor) între date, între elementele unei colecții de date, respectiv între colecții de date;

reprezentarea datelor pe un suport informațional prelucrabil intr-un sistem de calcul;

Pe lângă cerințele legate de timpul de acces la date, de spațiul de memorie, organizarea datelor urmărește realizarea unicității datelor.

După ce au fost definite și corelate relațiile dintre entitătile ce urmeazǎ a fi implementate în baza de date fizicǎ, urmeazǎ a fi definite și atributele fiecǎrei entităti prin care se vor crea respectivele legături.

În cele ce urmeaza se vor defini atributele pentru fiecare entitate:

CONTINUT (Comanda)

– id, Account_Manager, Banca, Data_Comanda, Nume_Client, Adresa_Client, Telefon_Client, CNP_RegCOM, Nr_Inreg_Fiscala, Banca_Client, Sucursala_Banca, Cont _Banca,Tip_Produs, Persoana_Contact, Telefon_Contact, Consultant_Delegat, Data_ livrare , Data_Confirmare_primire.

UTILIZATOR

-id, accType, userName, userEmail, US, PS, defaultuserResPerPage, userResPerPage, userBanks, userFields, defaultuserFields,userModify, defaultuserModify, userModifyC, defaultuserModifyC,userView,defaultuserView,userAdd,defaultuserAdduserDelete,defaultuserDelete,userPostNav,defaultuserPostNav,userSort,defaultuserSort,userSortDir,defaultuserSortDir, userMessages, defaultuserMessages, userReports, default user Reports.

MESSAGES

– id, userFrom, userTo, userMessage, userMessageTitle, data

BANKS

– id, Banci

PRODUCTTYPE

– id, Produs

Analizând datele culese din modul în care firma funcționează în prezent identificăm următoarele entități:

– COMENZI

– BĂNCI

– TIPURI PRODUSE

– UTILIZATORI

– MESAJE

2.7. Diagrama Entitate – Asociere

Modelul Entitate-Asociere (Entity-Relationship Model) este un model conceptual de nivel înalt al unei baze de date, care definește mulțimile de entitǎți și asocierile dintre ele, dar nu impune nici un mod specific de structurare și prelucrare a datelor.

Elementele esențiale ale modelului Entitate – Asociere sunt entitǎțile (entities) și asocierile dintre acestea (relationships).

O entitate (entity) este "orice poate fi identificat în mod distinctiv"; o entitate se referǎ la un aspect al realitǎții obiective care poate fi deosebite de restul universului și poate reprezenta un obiect fizic, o activitate, un concept, etc. Orice entitate este descrisǎ prin atributele sale. Un atribut (attribute) este o proprietate care descrie un anumit aspect al unei entitǎți.

Toate entitǎțile similare, care pot fi descrise prin aceleași atribute, aparțin unui ace-luiași tip de entitate (entity type), iar colecția tuturor entitǎților de același tip dintr-o bazǎ de da-te constitue o mulțime de entitǎți (entities set). În general, în modelul E-A se folosește aceeiași denumire atât pentru un tip de entitate cât și pentru mulțimea entitǎților de acel tip.

În proiectarea bazelor de date se considerǎ douǎ categorii de entitǎți: entitǎți normale (puternice, obisnuite-regular entities) și entitǎți slabe (dependente -weak entities).

Entitǎțile normale au o existențǎ proprie în cadrul modelului, în timp ce entitǎțile slabe nu pot exista decât dacǎ existǎ o entitate normalǎ (puternicǎ) cu care sunt asociate. De exemplu, o entitate “dependent” poate sǎ reprezinte o persoanǎ care depinde de un angajat al unei instituții (adicǎ se aflǎ în întreținerea acestuia). O entitate “angajat” este o entitate puternicǎ, deoarece ea existǎ în mod mod normal în modelul activitǎții instituției, în timp ce o entitate “dependent” este o entitate slabă: nu se va înregistra o astfel de persoanǎ decât dacǎ pǎrintele (susținǎtorul) acesteia este angajat în acea instituție.

O asociere (relationship) este o corespondențǎ între entitǎți din douǎ sau mai multe mulțimi de entitǎți. Gradul unei asocieri este dat de numǎrul de mulțimi de entitǎți asociate. Asocierile pot fi binare (de gradul 2, între 2 mulțimi de entitǎți) sau multiple (între k mulțimi de entitǎți, k> 2).

* Asocierile binare sunt, la rândul lor, de trei categorii, dupǎ numǎrul elementelor din fiecare dintre cele doua mulțimi puse în corespondențǎ de asocierea respectivă. Fiind date douǎ mulțimi de entitǎți, E1 și E2, se definesc urmǎtoarele categorii de asocieri binare:

* Asocierea “unul-la-unul” (one-to-one) este asocierea prin care unui element (entitate) din mulțimea E1 îi corespunde un singur element din mulțimea E2, și reciproc; se noteazǎ cu 1:1;

* Asocierea “unul-la-multe” (one-to-many) este asocierea prin care unui element din mulțimea E1 îi corespund unul sau mai multe elemente din mulțimea E2, dar unui element din E2 îi corespunde un singur element în mulțimea E1; se noteaza cu 1:N;

* Asocierea “multe-la-multe”(many-to-many) este asocierea prin care unui element din mulțimea E1 îi corespund unul sau mai multe elemente din mulțimea E2, și reciproc; se noteaza cu M:N;

O asociere între douǎ sau mai multe mulțimi de entitǎți este, în același timp, o asociere între tipurile de entitǎți corespunzǎtoare.

Diagrama Entitate – Asociere (Entity-Relationship Diagram) reprezintǎ modelul Entitate Asociere prin mulțimile de entitǎți și asocierile dintre acestea.

Existǎ numeroase variante de notații pentru redarea diagramei E-A. Una dintre cele mai folosite notații reprezintǎ un tip de entitate (precum și mulțimea de entitǎți de acel tip) printr-un dreptunghi, iar atributele tipului de entitate prin elipse conectate printr-o linie continuǎ la acesta. Pentru entitațile puternice se utilizeazǎ un dreptunghi încadrat cu o linie simplǎ, iar pentru entitațile slabe se utilizeazǎ un dreptunghi încadrat cu linie dublǎ.

O asociere (tip de asociere) dintre douǎ sau mai multe tipuri de entitǎți se reprezintǎ printr-un romb conectat prin link-uri (linii continue, formate din unul sau mai multe segmente) la tipurile de entitǎți asociate. O asociere poate sǎ aibǎ sau nu un nume; dacǎ are un nume, acesta poate fi înscris în rombul respectiv sau în vecinatatea acestuia. Categoria asocierii se noteazǎ prin înscrierea multiplicitǎții pe fiecare link care conduce la un tip de entitate.

Este posibil ca o asociere sǎ prezinte ea însǎși atribute, și aceste atribute se reprezintǎ prin elipse conectate la asocierea respectivǎ.

Figura nr. 3 Diagrama Entitate-Asociere

Relațiile dintre tabele:

Utilizator – Mesaje = PK username FK userFrom;

Utilizator – Comenzi = PK username FK Account_Manager;

Tip Produs – Comenzi = PK Proprietati FK Tip_Produs;

Banci – Comenzi = PK Banci FK Banca;

2.8. Alegerea tehnologiei de prelucrare

Comerțul electronic reprezintă multitudinea proceselor software și comerciale necesare afacerilor să funcționeze numai, sau în primul rând, utilizând fluxuri digitale de date. Comerțul electronic presupune utilizarea Internetului, comunicații digitale și aplicații software în cadrul proceselor de vânzare/ cumpărare, el fiind o componentă a procesului de e-business.

În momentul de față există o multitudine de firme care utilizează comerțul electronic, în domenii diverse ca marketing direct, vânzări, servicii pentru clienți, servicii bancare, distribuirea sigură a informațiilor etc.

Aplicațiile de comerț electronic sunt orientată către consumatorul final (B2C) sau către alți comercianți (B2B).

Noile activități bazate pe Tehnologia informației și comunicațiilor (TIC) au un impact deosebit asupra societății. În este prezentat impactul asupra afacerilor, precum și avantajele utilizării noilor tehnologii în activitățile de comerț și afaceri. De exemplu, se constată că practicarea marketingului pe Internet este cu 25% mai ieftin decât prin metodele obișnuite. Principalele cerințe pentru aplicațiile de comerț electronic sunt: interfețe puternice; fiabilitate foarte mare; securitate ridicată și viteză ridicată de prelucrare și transmitere a datelor.

Software pentru comerț electronic include componente pentru realizarea prezentării, componente pentru efectuarea sigură a plăților cu ajutorul cărților de credit sau de debit și componente pentru securizarea tranzacțiilor.

Principalele caracteristici ale aplicațiilor electronice care oferă servicii de succes sunt: capacitatea de utilizare, scalabilitatea, siguranța, fiabilitatea, mentenabilitatea, disponibilitatea și eficiența.

Există mai multe modalități de realizarea a site-urile de comerț electronic: pornind de la zero, prin particularizarea unor aplicații generice și prin utilizarea unor platforme dedicate.

Dezvoltarea aplicațiilor de comerț electronic pornind de la zero presupune utilizarea unei tehnologii de tip server-side scripting existentă alături de serverul HTTP. Tehnologiile de tip server-side scripting necesită un interpretor de scripturi, acestuia asociindu-se unui limbaj de server-side scripting. Caracteristicile generale ale aplicațiilor realizate folosind aceste tehnologii pe partea de server, indiferent de limbajul de scripting folosit sunt:

necesită un procesor pentru paginile dinamice sau un mediu de execuție;

într-o pagină de script pot fi îmbinate limbajul HTML și secvențe de cod;

secvențele de cod care sunt executate pe partea de server, înainte de a tri-mite pagina la client;

există astfel posibilitatea de a particulariza paginile în mod dinamic;

oferă posibilitatea de interacțiune cu baze de date diferite;

au acces la toate resursele serverului Web (fișiere, rețea);

Tehnologia ASP.NET dezvoltată de Microsoft permite crearea și rularea în mod dinamic a aplicațiilor Web interactive în cadrul platformei Microsoft.NET. Folosind ASP.NET se pot combina pagini HTML, comenzi de script și diferite controale pentru crearea de pagini Web interactive sau aplicații Web complexe. Dezvoltarea aplicațiilor Web folosind tehnologia ASP. NET se realizează prin intermediul unor limbaje moderne de programare (C#, VB.NET), care utilizează aceleași biblioteci de clase.

Clienții, prin intermediul unui navigator Internet, accesează pagini JSP care conțin cod Java executat pe mașina virtuală Java (JVM) de pe sever. Rezultatele prelucrărilor efectuate sunt trimise clientului în format HTML prin serverul Web. Fișierele JSP sunt transformate de către procesorul JSP în fișiere sursă Java, care conțin pe lângă codul existent în fișierele JSP și secvențe de cod propriu motorului JSP.

Un servlet este un program Java care rulează în cadrul serverul Web sau al servelor de aplicații și funcționează ca un strat de mijloc între cererile provenite de la clienți și aplicații sau baze de date existente pe partea de server.

J2EE (Java 2 Platform, Enterprise Edition) definește un standard pentru dezvoltarea aplicațiilor de întreprindere multi-strat. Aplicațiile de întreprindere sunt simplificate prin utilizarea de componente modulare standardizate, având un set complet de servicii care preiau o parte din funcționalitatea aplicațiilor, astfel încât atenția se va concentra la partea de business.

Platforma J2EE utilizează platforma J2SE (Java 2 Platform, Standard Edition), în plus fața de aceasta oferă suport pentru:

Java Servlets API ;

tehnologia JSP;

componente EJB (Enterprise JavaBeans);

conectivitate la baze de date;

tehnologia XML;

interconectivitate cu servicii Web. Standardul J2EE include specificații complete pentru asigurarea portabilității cu majoritatea sistemelor de tip enterprise existente.

Tehnologia PHP (Hypertext Preprocessor) utilizează un limbaj de scripting pe partea de server care oferă o serie de funcții pentru:

acces la majoritatea bazelor de date;

afișarea de imagini și fișiere PDF;

acces la diferite servicii;

prelucrarea fișierelor XML;

realizarea plăților online.

Arhitectura aplicațiilor de comerț electronic bazate pe JSP conține elementele de bază necesare funcționării aplicației, fiind prezentate componentel la nivel generic.

În funcție de tehnologia și platforma utilizate, de numărul de utilizatori, numărul și varietatea de produse și servicii oferite, se alege sistemul de gestiune a bazelor de date. Printre cele mai cunoscute se enumără Microsoft SQL Server, Oracle, IBM DB2, Ingres, PostgreSQL, MySQL.

Timpul necesar dezvoltării aplicațiilor de comerț electronic pornind de la zero este destul de mare, costurile variind în funcție de dimensiunea și complexitatea aplicației.

Utilizarea de pachete software predefinite destinate comerțului electronic reduce considerabil timpul necesar realizării aplicațiilor de comerț electronic, acesta fiind avantajul principal.

În cazul în care se dorește extinderea sau modificarea aplicației, flexibilitatea acestei soluții este relativ redusă.

În sunt prezentate cele mai utilizate platforme de comerț electronic atât pentru B2C cât și pentru B2B. Astfel, producătorii cu cea mai mare cotă de piață sunt ATG, BroadVision, IBM, Microsoft, Oracle și SAP.

Produsele oferite de ATG, Broad Vision și IBM conduc în aplicațiile destinate comerțului de tip B2C iar cele ale IBM, Oracle și SAP furnizează cele mai bune opțiuni pentru comerțul de tip B2B. Cea mai mare prezentă pe piața o au produsele oferite de IBM, Microsoft, Oracle și SAP.

2.9. Estimarea necesarului de resurse și a calendarului de realizare

Resurse Hardware

Pentru a accelera procesul de proiectare va fi nevoie de 3 computere dotate cu procesoare de ultimă generație, Intel Core 2 Duo sau echivalent, 1GB Ram și 100 GB HDD, care vor rula în paralel. În acest fel procesul de proiectare va scădea la jumătate.

Resurse software

Ca și resursă software este necesar ca fiecare computer să fie dotat cu sistem de ope-rare Microsoft Windows XP (deoarece aplicatia va fi proiectată pentru platforma Windows), alături de MSSQL Server 2005 și de serverul APACHE plus PHP.

Resurse umane

Un inginer proiectant pentru Baza de Date, un inginer proiectant pentru punerea la punct al iesirilor/intrărilor, un inginer proiectant pentru clasele/modulele aplicatiei.

Resurse financiare

Se estimează o suma de proiectare / programare / implementare de 20.000 euro.

Estimare total numar zile pentru elaborarea proiectului:

Se estimează un total de aproximativ 92 de zile.

Capitolul 3. Proiectarea de detaliu a aplicației informatice

3.1. Definirea obiectivelor aplicației informatice

Pentru activitatea din cadrul Departamentului au fost stabilite următoarele obiective ale noului sistem informatic:

– crearea unei posibilități de management și organizare centralizate a datelor de intrare;

– asigurarea redundanței și securității datelor;

– implementarea unui sistem de software care va permite o evidența clară a numărului de rapoarte realizat într-o anume perioadă sau de către o anumită persoană;

3.2. Proiectarea logică și fizică a intrărilor

După ce acestea au fost definite în cadrul proiectării de ansamblu, ele urmează a fi detaliate.

Sistemul va funcționa în felul următor:

– Clientul trimite un email atunci când efectuează plata la emiterea comenzii. În funcție de metoda de plată emailul va conține detaliile speicifice. Pe lângă emailul trimis, comanda este inregistrată în baza de date într-un tabel special;

– Detaliile incluse în tabel sunt următoarele:

* Numărul comenzii(vizibil doar în baza de date), numele clientului, data comenzii, tipul de plată, suma totală precum și produsele cumpărate. Aici administratorul are posibilitatea de a accepta( “ Confirm Purchase” ) sau de a refuza( “ Cancel Purchase” ) comanda.

Figura nr. 4 Formular de administrare a comenzilor

3.2.1. Înregistrarea userilor

Înregistrarea userilor se face cu ajutorul următorului formular:

Câmpul “Name” – Se va completa cu numele userului;

Câmpul “Email” – Se va complete cu adresa de Email a userului;

Câmpul “Password” – Se va completa cu parola dorită de user;

Câmpul “Adress” – Se va completa cu adresa userului;

Câmpul “Phone number” – Se va compleca cu numărul de telefon al userului;

Butonul “Register” – După completarea corectă cu datele cerute userul va da click pe butonul “Register” fapt ce va duce la introducerea datelor în baza de date. (Userul va fi înregistrat și se va putea loga pe site).

Figura nr. 5 Formular de înregistrare a userilor

3.2.2. Introducerea produselor în baza de date

Introducerea produselor se face cu ajutorul următorului formular din pagina de administrație:

Câmpul “Name” – Se va completa cu numele produsului;

Câmpul “SEO” – Se va completa cu prescurtarea numelui produsului;

Câmpul “Price” – Se va completa cu prețul dorit (numeric);

Câmpul “Image” și butonul “Upload image” – La apăsarea butonului “Upload image” se va deschide o nouă fereastră care îi da posibilitatea administratorului să aleagă imaginea dorită;

Câmpul “Stock” – Se va completa cu stock-ul dorit (numeric);

Meniul “Status” – Se poate alege între “Active” și “Inactive” și reprezistă disponibilitatea produsului;

Meniul “Category” – Administratorul are posibilitatea de a alege categoria specifică produsului.

Figura nr. 6 Formular de introducere a produselor

3.2.3. Introducerea categoriilor în baza de date

Introducerea categoriilor se face cu ajutorul următorului formular din pagina de administrație:

Meniul “Father Category” – Administratorul poate să aleagă categoria “Tată” (Principală) pentru a adăuga o sub-categorie sau pentru adăugarea unei categorii “Tată” (Principală) se va folosit opțiunea “Main Category”;

Câmpul “Description” – Se va completa cu numele categoriei.

Figura nr. 7 Formular de introducere a Categoriilor.

3.2.4. Introducerea licențelor în baza de date

Introducerea categoriilor se face cu ajutorul următorului formular din pagina de administrație:

Câmpul “Name” – Se va completa cu durata dorită (Ex: 1 year , 2 years , ‘x’ years);

Câmpul “Price” – Se va completa cu prețul dorit (numeric).

Figura nr. 8 Formular de introducere a Licențelor

3.3. Proiectarea bazei de date

Activitățile fazei de proiectare detaliată privesc componentele principale ale oricărui sistem informatic, respectiv baza de date, interfețele (formulare, rapoarte, meniu) și programele. Desfășurarea acestor activități nu este secvențială ci, mai curând, paralelă și iterativă. Baza de date trebuie să reflecte specificațiile de proiectare privind formularele și rapoartele din sistem, iar proiectarea formularelor și rapoartelor nu poate fi finalizată fără ca schema bazei de date să fie clar definită. Totuși, baza de date reprezintă „nucleul” oricărui sistem informatic, în jurul său „gravitând” celelalte componente.

Principalele activități care formează ciclul de viață al bazei de date sunt: proiectarea schemei logice, proiectarea fizică a bazei de date și alocarea datelor în rețea, implementarea și întreținerea bazei de date.

Există două strategii de proiectare a bazei de date:

strategia bottom-up, reprezintă abordarea tradițională și presupune constituirea relației universale care urmează a fi supusă normalizării pentru a se obține tabelele bazei de date;

strategia top-down, presupune construirea DER care va fi apoi transformată într-un set de tabele prin aplicarea unor reguli. Tabelele astfel obținute vor fi analizate din perspectiva normalizării;

Figura nr. 9 Tabele din baza de date

3.3.1. Descrierea tabelelor

Tabelul userilor (tbluser) conține următoarele câmpuri:

idUsers – conține id-ul unic fiecărui user și este cheie primară;

strName – conține numele userului;

strEmail – conține emailul userului;

intActive – conține următoarele valori 1 – userul este activ (a efectuat cumpărături) și respectiv 2 – userul este inactiv (nu a efectuat cumpărături);

strPassword – conține parola userului;

strAdress – conține adresa userului;

intPhone – conține numărul de telefon a userului;

intRank – conține următoarele valori: 0 (default) – este un user normal și respectiv 1 – userul este administrator.

Tabelul produselor (tblproduct) conține următoarele câmpuri:

idProduct – conține id-ul unic fiecărui produs și este cheie primară;

strName – conține numele produsului;

strSEO – conține prescurtarea numelui produsului;

dbPrice – conține prețul produsului;

intStatus – conține următoarele valori 1 – produsul este disponibil și respectiv 2 – produsul nu este disponibil;

intCategory – conține id-ul categoriei(idCategory) din care face parte;

strImage – conține numele imaginii corespunzătoare produsului;

strDescription – conține descrierea detaliată a produsului;

intStock – conține numărul de produse disponibile (numeric).

Tabelul categoriilor (tblcategory) conține următoarele câmpuri:

idCategory – conține id-ul unic fiecărei categorii și este cheie primară;

strDescription – conține descrierea detaliată a categoriei;

idFather – conține id-ul categoriei primare (numeric).

Tabelul coșului de cumpărături (tblcart) conține următoarele câmpuri:

intCounter – conține numărul fiecărui produs adăugat în coș și este cheie primară;

idUsers – conține id-ul userului care a adăugat produsul în coș;

idProduct – conține id-ul produsului adăugat în coș;

intAmount – conține numărul produselor adăugate în coș;

intPurchaseOk – conține numarul produselor adăugate în coș pentru o comandă comună;

intLicence – conține detalii despre licența aleasă la adăugarea produsului în coș.

Tabelul licență (tbllicence) conține următoarele câmpuri:

idLicence – conține id-ul unic fiecărei licențe și este cheie primară;

strName – conține numele fiecărei licențe;

intPrice – conține prețul fiecarei licențe.

Tabelul cumpărăturilor (tblpurchase) conține următoarele câmpuri:

idPurchase – conține id-ul fiecărei comenzi și este cheie primară;

idUsers – conține id-ul userului care a efectuat comenzile;

datePurchase – conține data la care a fost efectuată comanda;

intPaymentType – conține metoda de plată folosită;

dblTotal – conține pretul total al comenzii;

intStatus – conține statusul comenzii.

Tabelul variabilelor (tblvariables) conține următoarele câmpuri:

idCounter – conține id-ul variabilei și este cheie primară;

intTVA – conține valoarea TVA-ului.

Tabelul produs – licentă conține următoarele câmpuri;

idRelation – conține id-ul relației și este cheie primară;

relProduct – conține id-ul produsul;

relLicence – conține id-ul licenței.

Tabelul administratorilor (tbladmin) conține următoarele câmpuri:

idAdmin – conține id-ul unic fiecărui administrator și este cheie primară;

strName – conține numele administratorului;

strEmail – conține emailul administratorului;

strPassword – conține parola administratorului;

intRank – conține rank-ul administratorului.

3.4. Schema de sistem a aplicației

Figura nr. 10 Schema de sistem a aplicației

3.5. Proiectarea logică și fizică a ieșirilor

3.5.1 Rapoarte privind tabelul produse

Figura nr. 11 Rapoarte privind tabelul produse

In tabelul “Product list” avem disponibile următoarele detalii:

Numele produsului (Product Name);

Statusul produsului (Status) și care este egal cu 1, dacă produsul este disponibil, respectiv 0 dacă produsul nu este disponibil;

Stoc (Stock) numărul produselor aflate pe stoc;

Acțiuni (Actions). Aici administratorul are posibilitatea de a edita un produs, de a șterge produsul sau de a adăuga licența produsului.

3.5.2. Rapoarte privind tabelul categorii

Figura nr. 12 Rapoarte privind tabelul categorii

În tabelul “Category list” avem disponibile următoarele detalii:

Numele categoriei (Category Name);

Acțiuni (Actions). Aici administratorul are posibilitatea de a edita o categorie, de a șterge o categorie sau de a adăuga o subcategorie categoriei “Tată” .

3.5.3. Rapoarte privind tabelul licențelor

Figura nr. 13 Rapoarte privind tabelul categorii

În tabelul “Licence list” avem disponibile următoarele detalii:

Numele licenței (Licence Name);

Prețul licenței (Price);

Acțiuni (Actions). Aici administratorul are posibilitatea de a edita o licență sau de a șterge o licență;.

3.5.4. Rapoarte privind tabelul comenzilor

Figura nr. 14 Rapoarte privind tabelul cumpărăturilor

În tabelul “Purchases list” avem disponibile următoarele detalii:

Numele cumpărătorului (Person Name);

Data comenzii (Date);

Metoda de plată aleasă (Payment Method) – Paypal / Bank Transfer

/ VISA/MasterCard;

Statusul comenzii (status) – Waiting (starea inițială), Paid and Sent (comanda este platită și trimisă) sau Purchase Canceled (comanda a fost refuzată);

Acțiuni (Edit) – Aici administratorul are posibilitatea de a vedea detalii despre comandă precum produsele cumpărate, prețul total și cantitatea produselor cumpărate. Tot aici administratorul poate să accepte sau să refuze comanda.

3.5.5. Rapoarte privind tabelul userilor

Figura nr. 15 Rapoarte privind tabelul userilor

În tabelul “Users list” avem disponibile următoarele detalii:

ID-ul userului (ID);

Numele userului (Name);

Statusul (Activ / Inactiv);

Rank-ul (Normal users / Admin);

Acțiuni (Actions) – Administratorul are posibilitatea de a schimba detalii privind userul sau de a șterge un user din baza de date.

3.6. Proiectarea interfeței aplicației

Pentru proiectarea interfeței am luat în calcul 3 variabile: interfața pentru vizitatori, useri inregistrați și administrator de sistem.

Interfață disponibilă pentru vizitatori:

Figura nr. 16 Interțată disponibilă pentru vizitatori

În figura numărul 6 este prezentată interfața disponibilă pentru vizitatori. Aceasta conține în partea din stânga jos două butoane. Unul pentru înregistrare pe site respectiv pentru logarea pe site. Pentru a avea acces la opțiunea de “ Buy Product “ utilizatorii trebuie să fie logați pe site.

Interfață disponibilă pentru utilizatorii înregistrați:

Figura nr. 17 Interfață disponibilă pentru utilizatorii inregistrați

În figura numărul 17 este prezentată interfața disponibilă pentru utilizatorii inregistrați. Aici utilizatorul are acces la diferite opțiuni cum ar fi butonul de “Buy Product”. Cu ajutorul acestui buton se poate adăuga produsul în “Shopping Cart”. Înainte de a efectua comanda de “Buy Product” se poate alege cantitatea dorită precum și durata licenței. După efectuarea comenzii de “Buy Product” utilizatorul este trimis automat la pagina “Shopping Cart”.

Figura nr. 18 Shopping Cart

În figura numărul 8 este prezentat Shopping Cart-ul. Aici utilizatorul are acces la mai multe date precum:

Numele produsului sau produselor adăugate în Cart;

Durata licenței;

Numărul de unitați adăugate;

Prețul unei singure unităti

Prețul total al unităților;

TVA-ul ;

Valoarea TVA-ului;

Prețul final incluzând TVA-ul;

Deasemenea mai sunt disponibile și următoarele opțiuni:

Empty cart – golește Shopping Cart-ul;

Discard – elimină produsul selectat din Shopping Cart;

Select means of payment – trimite userul spre altă pagină pentru a continua cumpărăturile.

Figura nr. 19 Selectarea modalității de plată

Utilizatorii dispun de mai multe modalități de plată. Paypal , Bank Transfer și respectiv VISA / Mastercard. După selectarea modalității de plată utilizatorul este transferat spre pagina aferentă fiecărui transfer.

Figura nr. 20 Logurile cumpărăturilor.

În figura numărul 10 utilizatorul iși poate monitoriza lista de cumpărături. Acesta are acces la data și ora comenzii, numele produselor comandate, prețul total precum și statusul comenzii. Statusul este modificat de către un administrator și poate avea următoarele valori:

Waiting – Comanda incă nu a fost preluată;

Paid and sent – Comanda a fost acceptată și trimisă;

Purchase Canceled – Comanda a fost anulată.

3.7 Schema de flux informațional a noului sistem

INTRĂRI IEȘIRI

Figura nr. 21 Schema de flux informațional

Cap. 4. PREZENTAREA PRODUSULUI SOFTWARE

4.1. Cerințele platformei hardware și software ale produsului

Figura nr. 22 Evoluția web-ului

Cerințe Hardware:

Clientul trebuie să aibe un calculator cu minim un processor Intel Celeron sau echivalent, 512 RAM, 10 GB HDD și o viteză la internet de 1 Mb/s.

Cerințe Software:

Pentru a putea accesa site-ul clientul trebuie să aibe instalat o versiune de Internet Explorer 8 minim sau orice versiune nouă de Google Chrome, Opera sau Firefox.

4.2. Descrierea funcțiunilor aplicației

Sistemul informatic poate fi accesat de către orice utilizator web dar pentru a putea beneficia în totalitate de facilitățile acestuia este necesara înregistrarea în baza de date. Aceasta se face utilizând butonul “ Register “ disponibil în primă fază în meniul din stânga al site-ului.

Pentru a efectua înregistrarea se vor completa următoarele câmpuri:

Name – numele utilizatorului;

Email – emailul utilizatorului;

Password – parola utilizatorului;

Adress – Adresa utilizatorului;

Phone Number – numărul de telefon al utilizatorului;

Pentru a finaliza înregistrarea utilizatorul va apăsa butonul “Register” .

Dupa înregistrarea în baza de dateutilizatorul se poate loga pe site accesând butonul de “Login” disponibil în meniul din partea stângă.

Pentru a efectua funcția de “Login” utilizatorul trebuie să complete următoarele câmpuri:

Email – emailul folosit la înregistrarea în baza de date;

Passoword – parola folosită la înregistrarea în baza de date;

După completarea câmpurilor respective utilizatorul accesează butonul “Submit” . La accesarea butonului “Submit” utilizatorul este redirecționat către o pagină specială care îi confirmă dacă logarea pe site a fost efectuată cu succes sau dacă au fost probleme. În cazul în care utilizatorul este redirecționat către pagina “acces_error” acesta va primi un mesaj care să îl atenționeze că s-a produs o eroare. Aceasta poate fi datorită faptului că utilizatorul a introdus greșit parola și / sau emailul sau datorită faptului că adresa de email și parola nu există în baza de date.

După ce logarea pe site s-a efectuat cu succes userul poate să iși aleagă unul sau mai multe produse din catalogul aflat în partea stângă a paginii. Acesta conține toate produsele aflate la momentul respectiv în baza de date. Pentru a efectua comanda unui produs utilizatorul trebuie să acceseze catalogul și să iși aleagă un produs. După alegerea produsului utilizatorul trebuie să aleagă cantitatea și durata licenței. Durata licenței poate fi de unul sau doi ani iar prețul este depinzând de durată.

Pentru a finaliza alegerea produsului utilizatorul trebuie să acceseze butonul “ Buy Product “ . La accesarea butonului “ Buy Product “ produsul selectat este introdus automat în coșul de cumpărături ( Shopping Cart ).

Pentru coșul de cumpărături utilizatorul dispune de mai multe opțiuni:

Empty cart – golește cosul de cumpărături;

Discard – elimină produsul corespunzător;

Select Means of Payment – trimite utilizatorul către pagina de unde poate alege metodele de plată.

Utilizatorul dispune de 3 metode de plată:

Paypal;

Bank Transfer;

VISA / MasterCard;

După efectuarea plătii comanda primește statusul de “Waiting”. Acest status va fi modificat ulterior de către administrator și poate primi următoarele valori:

Paid and sent – comanda a fost plătită și efectuată;

Purchase canceled – comanda a fost intreruptă;

Utilizatorul are acces la istoricul comenzilor în meniul din stânga prin accesarea butonului “Purchases”. Utilizatorul poate să urmărească statusul unei comenzi aici. În acest tabel este prezent numele produselor cumpărate, data cantitatea, prețul dar și statusul comenzilor.

Pentru a putea modifica adresa, emailul, numărul de telefon sau parola utilizatorul poate accesa butonul “Modify”.

Pentru accesarea paginii de administrație se va folosi butonul “Admin Panel” localizat în partea din stanga a subsolului. Accesul se va face pe baza emailului și parolei specifice fiecărui administrator.

În pagina de administrație, sunt disponibile mai multe comenzi precum:

Adăugarea, editarea și ștergerea produselor;

Adăugarea, editarea și ștergerea categoriilor;

Adăugarea, editarea și ștergerea licențelor;

Vizualizarea și editarea comenzilor;

Vizualizarea, editarea și ștergerea utilizatorilor.

Cap. 5. Eficiența și utilitatea sistemului informatic

5.1. Considerații privind eficiența aplicației informatice

Sistemul a fost conceput pentru a aduce un plus de manangement firmei pentru care s-a facut proiectarea. Deoarece sistemul actual pe care firma rulează este deficitar din anumite puncte de vedere această aplicație informatică vine în ajutorul multor aspecte ale sistemului actual. Printr-o mai bună organizare a comenzilor și a sistemului se modifică timpul de raspuns, acesta crescând productivitatea firmei și totodată imaginea acestea crescând în ochii clienților și partenerilor.

BIBLIOGRAFIE

Cornelia Botezatu Proiectarea sistemelor informatice. Metode sistemice. Editura ProUniversitaria, Buc, 2007;

Virgil Chichernea, G.Garais Baze de date. Sistemul FoxPro vol.II, Editura Prouniversitaria, 2006;

M. Moise Sisteme informatice cu baze de date, Editura Pro-Universitaria, București, 2008;

SGBD Oracle – Ghid aplicativ pentru realizarea solutiilor informatice, Editura ProUniversitaria, 2007, pag 11-195;

Ionel Iacob ORACLE 10g – Proiectarea și realizarea aplicațiilor cu baze de date utilizând limbajul SQL*PLUS, Ed. ProUniversitaria 2009;

H. Bidgoli, Encyclopedia of Information System, 2002;

William Buchanan, Software Development for Engineers, 1997;

David Powers, PHP Object-Oriented Solutions, 2008;

Jay Pipes, Pro MySQL, Michael Kruckenberg, 2005;

David Lindsay, Eduardo Alberto, Gareth Heyes, Mario Heidrich, Vela Nara, Web Application Obfuscation, 2011;

Bo Wang, Yang Yong, ZhuoFan, Procedia Computer Science, Volume 30, 2014;

Jason Andress, Ryan Linn, Coding for Penetration Testers, Chapter 5, 2012;

Joe Celko, Joe Celko’s Complete Guide to NoSQL, Chapter 5, 2014;

William McKnight, Information Management, Chapter Five, 2014;

Ghilic-Micu Bogdan, Stoica Marian eActivitățile în societatea informațională, 2002;

Ivan Ion, Potcaliu Paul, Sinioros Panagiotis, Testarea aplicațiilor e-bussines, 2000;

Samaroo Angelina, Allot Steve, Hambling Brian, E-ffective testing for Ecommerce, 1999

Anexe

Anexa nr. 1 – Catalog

<?php require_once('Connections/shopconnection.php'); ?>

<?php

if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

if (PHP_VERSION < 6) {

$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {

case "text":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "long":

case "int":

$theValue = ($theValue != "") ? intval($theValue) : "NULL";

break;

case "double":

$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";

break;

case "date":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "defined":

$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

break;

}

return $theValue;

}

}

mysql_select_db($database_shopconnection, $shopconnection);

$query_Recordset1 = "SELECT * FROM tblcategory WHERE idFather = 0 ORDER BY tblcategory.strDescription";

$Recordset1 = mysql_query($query_Recordset1, $shopconnection) or die(mysql_error());

$row_Recordset1 = mysql_fetch_assoc($Recordset1);

$totalRows_Recordset1 = mysql_num_rows($Recordset1);

?>

<?php do { ?>

<a href="categories_var.php?cat=<?php echo $row_Recordset1['idCategory']; ?>"></a>

<p><?php echo $row_Recordset1['strDescription']; ?><br>

<p> <?php show_subcategories($row_Recordset1['idCategory']);?>

<p> <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>

<p><br />

<?php

mysql_free_result($Recordset1);

?></p>

<?php

if ((isset($_SESSION['MM_Username']))&&($_SESSION['MM_Username']!= ""))

{ echo " Account info: ";

echo "Hello ";

echo ObtainUserName($_SESSION['MM_IdUsers']);

?>

<br />

<br /><p><a href="cart_list.php">Shopping Cart</a></p>

<p><a href="user_purchase.php">Purchases</a></p>

<p> <a href="user_modify.php" class="modificationuser" > Modify </a> – <a href="user_logout.php" class="modificationuser">Logout </a></p>

<?php

}

else

{?><br />

<a href="register.php">Register</a> </p>

<p><a href="acces.php">Login</a></p>

<?php }?>

Anexa nr. 2 – Heading Admin

<?php

if ((isset($_SESSION['MM_Username']))&&($_SESSION['MM_Username']!= ""))

{?>

<h2><a href="../admin/adminindex.php">Administration</a></h2>

<h3>Products</h3>

<p><a href="../admin/product_list.php">Product List</a></p>

<p><a href="../admin/category_list.php?recordID=0">Category List</a></p>

<p><a href="../admin/licence_list.php">Licences Management</a></p>

<h3>Purchases</h3>

<p><a href="../admin/purchase_list.php">Purchases List</a></p><p>&nbsp;</p>

<h3>Users</h3>

<p><a href="../admin/users_list.php">Users List</a></p>

<h3> Admin panel </h3>

<p><a href="admin_logout.php" >Logout </a></p>

<?php

}

else

{?><br />

<p><a href="admin_login.php">Login</a></p>

<?php }?>

Anexa nr. 3 – Functions

<?php

if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

if (PHP_VERSION < 6) {

$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {

case "text":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "long":

case "int":

$theValue = ($theValue != "") ? intval($theValue) : "NULL";

break;

case "double":

$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";

break;

case "date":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "defined":

$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

break;

}

return $theValue;

}

}

//************************************************

//************************************************

//************************************************

function ObtainUserName($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT tbluser.strName FROM tbluser WHERE tbluser.idUsers = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['strName'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ObtainRank($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT tbladmin.strName FROM tbladmin WHERE tbladmin.idAdmin = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['strName'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ObtainProductName($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT strName FROM tblproduct WHERE idProduct = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['strName'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ObtainProductPrice($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT dbPrice FROM tblproduct WHERE idProduct = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['dbPrice'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ObtainTVA()

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = ("SELECT intTVA FROM tblvariables WHERE idCounter = 1");

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['intTVA'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ConfirmPayment($paymenttype)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$insertSQL = sprintf("INSERT INTO tblpurchase (idUsers, datePurchase, intPaymentType, dblTotal) VALUES (%s, NOW(), %s, %s)",

GetSQLValueString($_SESSION['MM_IdUsers'], "int"),

$paymenttype,

$_SESSION["TotalPurchase"]);

$Result1 = mysql_query($insertSQL, $shopconnection) or die(mysql_error());

$lastpurchase = mysql_insert_id();

$_SESSION["activevisa"] = $lastpurchase;

UpdateCart($lastpurchase);

}

//************************************************

//************************************************

//************************************************

function UpdateCart($varpurchase)

{

global $database_shopconnection, $shopconnection;

$updateSQL = sprintf("UPDATE tblcart SET intPurchaseOk=%s WHERE idUsers=%s AND intPurchaseOk=0",

$varpurchase,$_SESSION['MM_IdUsers']);

mysql_select_db($database_shopconnection, $shopconnection);

$Result1 = mysql_query($updateSQL, $shopconnection) or die(mysql_error());

}

//************************************************

//************************************************

//************************************************

function UpdateCartStatus($varpurchase, $varstatus)

{

global $database_shopconnection, $shopconnection;

$updateSQL = sprintf("UPDATE tblpurchase SET intStatus=%s WHERE idPurchase=%s",

$varstatus,$varpurchase);

mysql_select_db($database_shopconnection, $shopconnection);

$Result1 = mysql_query($updateSQL, $shopconnection) or die(mysql_error());

}

//************************************************

//************************************************

//************************************************

function TextPaymentMeans($varmeanspayment)

{

if ($varmeanspayment == 1) return "Paypal";

if ($varmeanspayment == 2) return "Bank Transfer";

if ($varmeanspayment == 3) return "VISA/MasterCard";

}

//************************************************

//************************************************

//************************************************

function UserStatus($varstatus)

{

if ($varstatus == 0) return "Inactive";

if ($varstatus == 1) return "Active";

}

//************************************************

//************************************************

//************************************************

function UserRank($varrank)

{

if ($varrank == 0) return "Normal User";

if ($varrank == 1) return "Admin";

}

//************************************************

//************************************************

//************************************************

function TextStatusPurchase($varstatus)

{

if ($varstatus == 0) return "Waiting";

if ($varstatus == 1) return "Paid and Sent";

if ($varstatus == 2) return "Purchase Canceled";

}

//************************************************

//************************************************

//************************************************

function SendEmailHTML($sentto, $content, $topic)

{

$message = '<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

<body>

<table width="100%" cellspacing="3" cellpadding="3">

<tr>

<td><img src="../images/avangate-logo.png" width="496" height="180"></td>

</tr> <tr>

<td><p>Dear customer:</p>';

$message.= $content;

$message.='<p>&nbsp;</p></td>

</tr> <tr>

<td><p>Thank you very much, you can contact us în our email.</p>

<p> <a href="mailto:[anonimizat]">[anonimizat]</a></p></td>

</tr>

</table></body></html>';

//

$headers = 'MIME-Version: 1.0' . "\n";

$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";

// Cabeceras adicionales

$headers .= 'From: [anonimizat]' . "\n";

$headers .= 'Bcc: [anonimizat]' . "\n";

// Sent

mail($sentto, $message, $headers, $topic);

echo $message;

}

//************************************************

//************************************************

//************************************************

function ObtainEmail($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT tbluser.strEmail FROM tbluser WHERE tbluser.idUsers = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['strEmail'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function Show_User_Cart($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT * FROM tblcart WHERE intPurchaseOk = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

?>

<div class="subproducts">

<?php

do {

echo ObtainProductName($row_consultantfunction['idProduct']);

echo "<br />";

} while ($row_consultantfunction = mysql_fetch_assoc($consultantfunction));

?>

</div>

<?php

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function show_subcategories($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT * FROM tblcategory WHERE idFather = %s ORDER BY tblcategory.strDescription", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

?>

<?php

if ($totalRows_consultantfunction > 0) {

do {

echo'&nbsp;&nbsp;&nbsp;<a href="categories_var.php?cat='.$row_consultantfunction['idCategory'].'">'.$row_consultantfunction['strDescription'].' </a>';

echo "<br />";

} while ($row_consultantfunction = mysql_fetch_assoc($consultantfunction));

}

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function show_subcategories_admin($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT * FROM tblcategory WHERE idFather = %s ORDER BY tblcategory.strDescription", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

?>

<?php

if ($totalRows_consultantfunction > 0) {

do { ?>

<option value="<?php echo $row_consultantfunction['idCategory']?>">&nbsp;&nbsp;&nbsp;<?php echo $row_consultantfunction['strDescription']?></option>

<?php

} while ($row_consultantfunction = mysql_fetch_assoc($consultantfunction));

}

mysql_free_result($consultantfunction);

{

function showavaiblelicences($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT tbllicence.idLicence, tbllicence.strName, tbllicence.intPrice FROM tblproductlicence INNER JOIN tbllicence ON tblproductlicence.relLicence = tbllicence.idLicence WHERE tblproductlicence.relProduct = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

?>

<?php if ($totalRows_consultantfunction > 0) { ?>

Licence: <select name="FLicence">

<?php do { ?>

<option value="<?php echo $row_consultantfunction['strName']?>"><?php echo $row_consultantfunction['strName']?></option>

<?php

} while ($row_consultantfunction = mysql_fetch_assoc($consultantfunction));

?>

</select>

<?php

BIBLIOGRAFIE

Cornelia Botezatu Proiectarea sistemelor informatice. Metode sistemice. Editura ProUniversitaria, Buc, 2007;

Virgil Chichernea, G.Garais Baze de date. Sistemul FoxPro vol.II, Editura Prouniversitaria, 2006;

M. Moise Sisteme informatice cu baze de date, Editura Pro-Universitaria, București, 2008;

SGBD Oracle – Ghid aplicativ pentru realizarea solutiilor informatice, Editura ProUniversitaria, 2007, pag 11-195;

Ionel Iacob ORACLE 10g – Proiectarea și realizarea aplicațiilor cu baze de date utilizând limbajul SQL*PLUS, Ed. ProUniversitaria 2009;

H. Bidgoli, Encyclopedia of Information System, 2002;

William Buchanan, Software Development for Engineers, 1997;

David Powers, PHP Object-Oriented Solutions, 2008;

Jay Pipes, Pro MySQL, Michael Kruckenberg, 2005;

David Lindsay, Eduardo Alberto, Gareth Heyes, Mario Heidrich, Vela Nara, Web Application Obfuscation, 2011;

Bo Wang, Yang Yong, ZhuoFan, Procedia Computer Science, Volume 30, 2014;

Jason Andress, Ryan Linn, Coding for Penetration Testers, Chapter 5, 2012;

Joe Celko, Joe Celko’s Complete Guide to NoSQL, Chapter 5, 2014;

William McKnight, Information Management, Chapter Five, 2014;

Ghilic-Micu Bogdan, Stoica Marian eActivitățile în societatea informațională, 2002;

Ivan Ion, Potcaliu Paul, Sinioros Panagiotis, Testarea aplicațiilor e-bussines, 2000;

Samaroo Angelina, Allot Steve, Hambling Brian, E-ffective testing for Ecommerce, 1999

// Sent

mail($sentto, $message, $headers, $topic);

echo $message;

}

//************************************************

//************************************************

//************************************************

function ObtainEmail($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT tbluser.strEmail FROM tbluser WHERE tbluser.idUsers = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['strEmail'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function Show_User_Cart($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT * FROM tblcart WHERE intPurchaseOk = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

?>

<div class="subproducts">

<?php

do {

echo ObtainProductName($row_consultantfunction['idProduct']);

echo "<br />";

} while ($row_consultantfunction = mysql_fetch_assoc($consultantfunction));

?>

</div>

<?php

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function show_subcategories($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT * FROM tblcategory WHERE idFather = %s ORDER BY tblcategory.strDescription", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

?>

<?php

if ($totalRows_consultantfunction > 0) {

do {

echo'&nbsp;&nbsp;&nbsp;<a href="categories_var.php?cat='.$row_consultantfunction['idCategory'].'">'.$row_consultantfunction['strDescription'].' </a>';

echo "<br />";

} while ($row_consultantfunction = mysql_fetch_assoc($consultantfunction));

}

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function show_subcategories_admin($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT * FROM tblcategory WHERE idFather = %s ORDER BY tblcategory.strDescription", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

?>

<?php

if ($totalRows_consultantfunction > 0) {

do { ?>

<option value="<?php echo $row_consultantfunction['idCategory']?>">&nbsp;&nbsp;&nbsp;<?php echo $row_consultantfunction['strDescription']?></option>

<?php

} while ($row_consultantfunction = mysql_fetch_assoc($consultantfunction));

}

mysql_free_result($consultantfunction);

{

function showavaiblelicences($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT tbllicence.idLicence, tbllicence.strName, tbllicence.intPrice FROM tblproductlicence INNER JOIN tbllicence ON tblproductlicence.relLicence = tbllicence.idLicence WHERE tblproductlicence.relProduct = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

?>

<?php if ($totalRows_consultantfunction > 0) { ?>

Licence: <select name="FLicence">

<?php do { ?>

<option value="<?php echo $row_consultantfunction['strName']?>"><?php echo $row_consultantfunction['strName']?></option>

<?php

} while ($row_consultantfunction = mysql_fetch_assoc($consultantfunction));

?>

</select>

<?php

Anexe

Anexa nr. 1 – Catalog

<?php require_once('Connections/shopconnection.php'); ?>

<?php

if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

if (PHP_VERSION < 6) {

$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {

case "text":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "long":

case "int":

$theValue = ($theValue != "") ? intval($theValue) : "NULL";

break;

case "double":

$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";

break;

case "date":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "defined":

$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

break;

}

return $theValue;

}

}

mysql_select_db($database_shopconnection, $shopconnection);

$query_Recordset1 = "SELECT * FROM tblcategory WHERE idFather = 0 ORDER BY tblcategory.strDescription";

$Recordset1 = mysql_query($query_Recordset1, $shopconnection) or die(mysql_error());

$row_Recordset1 = mysql_fetch_assoc($Recordset1);

$totalRows_Recordset1 = mysql_num_rows($Recordset1);

?>

<?php do { ?>

<a href="categories_var.php?cat=<?php echo $row_Recordset1['idCategory']; ?>"></a>

<p><?php echo $row_Recordset1['strDescription']; ?><br>

<p> <?php show_subcategories($row_Recordset1['idCategory']);?>

<p> <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>

<p><br />

<?php

mysql_free_result($Recordset1);

?></p>

<?php

if ((isset($_SESSION['MM_Username']))&&($_SESSION['MM_Username']!= ""))

{ echo " Account info: ";

echo "Hello ";

echo ObtainUserName($_SESSION['MM_IdUsers']);

?>

<br />

<br /><p><a href="cart_list.php">Shopping Cart</a></p>

<p><a href="user_purchase.php">Purchases</a></p>

<p> <a href="user_modify.php" class="modificationuser" > Modify </a> – <a href="user_logout.php" class="modificationuser">Logout </a></p>

<?php

}

else

{?><br />

<a href="register.php">Register</a> </p>

<p><a href="acces.php">Login</a></p>

<?php }?>

Anexa nr. 2 – Heading Admin

<?php

if ((isset($_SESSION['MM_Username']))&&($_SESSION['MM_Username']!= ""))

{?>

<h2><a href="../admin/adminindex.php">Administration</a></h2>

<h3>Products</h3>

<p><a href="../admin/product_list.php">Product List</a></p>

<p><a href="../admin/category_list.php?recordID=0">Category List</a></p>

<p><a href="../admin/licence_list.php">Licences Management</a></p>

<h3>Purchases</h3>

<p><a href="../admin/purchase_list.php">Purchases List</a></p><p>&nbsp;</p>

<h3>Users</h3>

<p><a href="../admin/users_list.php">Users List</a></p>

<h3> Admin panel </h3>

<p><a href="admin_logout.php" >Logout </a></p>

<?php

}

else

{?><br />

<p><a href="admin_login.php">Login</a></p>

<?php }?>

Anexa nr. 3 – Functions

<?php

if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

if (PHP_VERSION < 6) {

$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {

case "text":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "long":

case "int":

$theValue = ($theValue != "") ? intval($theValue) : "NULL";

break;

case "double":

$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";

break;

case "date":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "defined":

$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

break;

}

return $theValue;

}

}

//************************************************

//************************************************

//************************************************

function ObtainUserName($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT tbluser.strName FROM tbluser WHERE tbluser.idUsers = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['strName'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ObtainRank($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT tbladmin.strName FROM tbladmin WHERE tbladmin.idAdmin = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['strName'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ObtainProductName($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT strName FROM tblproduct WHERE idProduct = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['strName'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ObtainProductPrice($identifier)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = sprintf("SELECT dbPrice FROM tblproduct WHERE idProduct = %s", $identifier );

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['dbPrice'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ObtainTVA()

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$query_consultantfunction = ("SELECT intTVA FROM tblvariables WHERE idCounter = 1");

$consultantfunction = mysql_query($query_consultantfunction, $shopconnection) or die(mysql_error());

$row_consultantfunction = mysql_fetch_assoc($consultantfunction);

$totalRows_consultantfunction = mysql_num_rows($consultantfunction);

return $row_consultantfunction['intTVA'];

mysql_free_result($consultantfunction);

}

//************************************************

//************************************************

//************************************************

function ConfirmPayment($paymenttype)

{

global $database_shopconnection, $shopconnection;

mysql_select_db($database_shopconnection, $shopconnection);

$insertSQL = sprintf("INSERT INTO tblpurchase (idUsers, datePurchase, intPaymentType, dblTotal) VALUES (%s, NOW(), %s, %s)",

GetSQLValueString($_SESSION['MM_IdUsers'], "int"),

$paymenttype,

$_SESSION["TotalPurchase"]);

$Result1 = mysql_query($insertSQL, $shopconnection) or die(mysql_error());

$lastpurchase = mysql_insert_id();

$_SESSION["activevisa"] = $lastpurchase;

UpdateCart($lastpurchase);

}

//************************************************

//************************************************

//************************************************

function UpdateCart($varpurchase)

{

global $database_shopconnection, $shopconnection;

$updateSQL = sprintf("UPDATE tblcart SET intPurchaseOk=%s WHERE idUsers=%s AND intPurchaseOk=0",

$varpurchase,$_SESSION['MM_IdUsers']);

mysql_select_db($database_shopconnection, $shopconnection);

$Result1 = mysql_query($updateSQL, $shopconnection) or die(mysql_error());

}

//************************************************

//************************************************

//************************************************

function UpdateCartStatus($varpurchase, $varstatus)

{

global $database_shopconnection, $shopconnection;

$updateSQL = sprintf("UPDATE tblpurchase SET intStatus=%s WHERE idPurchase=%s",

$varstatus,$varpurchase);

mysql_select_db($database_shopconnection, $shopconnection);

$Result1 = mysql_query($updateSQL, $shopconnection) or die(mysql_error());

}

//************************************************

//************************************************

//************************************************

function TextPaymentMeans($varmeanspayment)

{

if ($varmeanspayment == 1) return "Paypal";

if ($varmeanspayment == 2) return "Bank Transfer";

if ($varmeanspayment == 3) return "VISA/MasterCard";

}

//************************************************

//************************************************

//************************************************

function UserStatus($varstatus)

{

if ($varstatus == 0) return "Inactive";

if ($varstatus == 1) return "Active";

}

//************************************************

//************************************************

//************************************************

function UserRank($varrank)

{

if ($varrank == 0) return "Normal User";

if ($varrank == 1) return "Admin";

}

//************************************************

//************************************************

//************************************************

function TextStatusPurchase($varstatus)

{

if ($varstatus == 0) return "Waiting";

if ($varstatus == 1) return "Paid and Sent";

if ($varstatus == 2) return "Purchase Canceled";

}

//************************************************

//************************************************

//************************************************

function SendEmailHTML($sentto, $content, $topic)

{

$message = '<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

<body>

<table width="100%" cellspacing="3" cellpadding="3">

<tr>

<td><img src="../images/avangate-logo.png" width="496" height="180"></td>

</tr> <tr>

<td><p>Dear customer:</p>';

$message.= $content;

$message.='<p>&nbsp;</p></td>

</tr> <tr>

<td><p>Thank you very much, you can contact us în our email.</p>

<p> <a href="mailto:[anonimizat]">[anonimizat]</a></p></td>

</tr>

</table></body></html>';

//

$headers = 'MIME-Version: 1.0' . "\n";

$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";

// Cabeceras adicionales

$headers .= 'From: [anonimizat]' . "\n";

$headers .= 'Bcc: [anonimizat]' . "\n";

Similar Posts