Implementarea Sistemului In Procesul DE Fabricatie
Implementarea sistemului in procesul de fabricatie
CUPRINS
INTRODUCERE
Lucrarea este structurată similar unui studiu de caz asupra etapelor de ordin intern prin care trece o comandă client din momentul lansării acesteia către furnizor până în momentul livrării către client.
Documentul este stucturat in mai multe parti. In prima parte sunt prezentate principalele caracteristici și modul de aplicare ale conceptelor de planificare a necesarului de materiale și a planificării producției. Cele două concepte au o legătură strânsă, neputând exista unul fără altul, iar împreună reprezentând motorul de bază al unei intreprinderi. Între aspectele amintite, cele mai semnificative sunt procesul de aprovizionare, necesarul de materiale, etapele planului de producție, care fac obiectul acestei lucrări. În zilele noastre, companiile sunt obligate să găsească cele mai bune căi pentru a furniza produse și servicii de cea mai buna calitate.
Partea a doua este destinata prezentarii tehnologiilor folosite. Aici sunt de notat aspecte referitoare la limbajul C#, la limbajul SQL standard, proiectare de pagini web etc.
In cea de-a treia parte ne vom axa asupra unei aplicatii practice, ce urmeaza un flux logistic, de la posibilitatea de a administra baza de date a companiei cu articolele produse si cu componentele acestora, pana la posibilitatea de a lansa comenzi spre executie.
Soluția pentru aceste cerințe a fost un sistem de Resource Planning, care are rolul de a integra punctele cheie ale unei afaceri și de a oferi o perspectivă globală a ceea ce se întâmplă în cadrul structurii organizaționale.
CAPITOLUL 1: Planificarea necesarului de materiale și programarea producției
1.1 Scop, necesități, oportunități
Lucrarea de fata se doreste sa structureze succesiunea etapelor prin care trece o comanda, din momentul plasarii ei de către client spre furnizor, până la momentul livrării ei către client.
În partea de studiu de caz a lucrării, am realizat o analiză ce contureaza tranzacțiile aferente fiecărei etape prin care trece o comandă client. Acesre etape ce tratează evoluția comenzii client de la data lansării până la data livrării sunt:
Inregistrare user
Login pe roluri: admininistrator/user simplu
Introducerea in sistem a unei comenzi client
Verificarea disponibilității componentelor (materialelor)
Comandarea materialelor lipsă
Lansarea comenzii de producție
Livrarea spre client
Progresul unei companii, in sensul dezvoltarii unui sistem de productie functional, este dependent de mediul ambiant al desfășurării activitatii acesteia. Indeplinirea obiectivelor de ansamblu ale companiei se realizeaza si prin strategiile de aprovizionare, avand tel asigurarea unui echilibru dintre necesarul de consum al companiei si resursele materiale care pot fi procurate.
Managementul aprovizionării descrie o actiune prin care se asigură componentele tehnice și materiale necesare producției, într-un volum și structura ce permit indeplinirea obiectivelor întreprinderii, cu condiția asigurarii unor costuri minime i a realizarii unui profit cât mai considerabil. O importanta majora o are si colaborarea intre firma si terți pentru producerea unor materiale.
Într-o comparatie cu achiziționarea, termenul de "aprovizionare" este mai cuprinzator; achiziționarea fiind o etapa a procesului de aprovizionare cu echipamente și tehnice materiale.
Managementul aprovizionării tehnico-materiale trebuie realizat, in asa fel încât să asigure condițiile optime pentru depozitarea resurselor materiale, furnizarea rațională cu resurse materiale și folosirea rațională de resurse materiale, cu respectarea normelor de consum setate și a stocurilor de producție stabilite.
1.2 Planificarea necesarului de materiale
Aprovizionarea inseamna obtinerea de resurse necesare in procesul de productie, consum propriu etc.
Aprovizionarea urmareste urmatorii factori:
Perioada de aprovizionare ;
Comanda de achiziție ;
Condiții comerciale;
Specificitatea mărfurilor;
Planificarea din timp a comenzilor și a livrărilor ;
Cantitățile comandate.
Gestiunea stocurilor.
Fara realizarea eficienta a aprovizionarii, o firma nu ar putea produce sau vinde.
Companiile isi seteaza in mod independent o politica in ceea ce priveste aprovizionarea. In aceasta directie, se poate alege procurarea unor materiale pentru un stoc de siguranta, aprovizionare pentru pre-planificari, setate conform unei prognoze, se mai poate alege procurarea de materiale in functie de preturile negociate cu furnizorii, in functie de credibilitatea si siguranta oferita de furnizori.
De asemenea, se poate alege o forma de aprovizionare, respectiv marfurile se pot comanda succesiv, in functie de necesitati, sau grupat, printr-un contract cadru agreat cu funzitorul (spre exemplu, se negociaza cu furnzorul X ca in decursul unui an de zile se vor plasa periodic comenzi pana la nivelul unei cantitati negociate contractual). In acest fel, furnizorul are posibilitatea planificarii productiei interne in asa fel incat livrarile catre firma solicitanta sa nu fie amanate sau sa nu poate fi respectate in functie de termenul cerut.
Contractele cadru sunt necesar a fi negociate, in situatii in care procesul de productie al furnizorului implica un timp destul de mare. Aici se impune si problema managementului costurilor, deoarece anumite articole fiind foarte costisitoare, un furnizor nu isi angajeaza in stoc o cantitate foarte mare de material brut, fara a avea certitudinea ca poate fi vandut.
Apoi, daca materialul furnizorului trebuie la randul lui supus unor modificari, respectiv trebuie sa treaca printr-un proces de productie, care poate fi de durata, la timpul de aprovizionare al furnizorului pentru materialul brut, se adauga si perioada de pregatire productie (aici un aspect important il are si capacitatea de productie) si confectionare efectiva.
Pentru gestionarea eficienta a aprovizionarii, trebuie sa tinem cont de urmatorii factori:
calitatea materialelor;
prețul materialelor;
termenii de livrare;
condițiile de plată;
costurile aprovizionării;
siguranta respectării conditiilor contractuale;
servicii conexe ce însoțesc livrările.
Sarcinile responsabililor cu aprovizionarea sunt duble. O data, ei trebuie sa asigure in firma resursele materiale necesare la cel mai mic cost, iar apoi trebuie să asigure ca acestea sa fie disponibile, în scopul satisfacerii trebuintelor celor ce le folosesc (departamentele de producție sau de vânzare).
Dupa incheierea de contracte cu furnizorii selectati, se receptioneaza produsele, acestea urmand a fi apoi depozitate in magazia de materiale, urmand a fi distribuite pe diferite segmente in functie de necesitati.
Printre formele aprovizionarii, putem aminti: aprovizionare aparuta odata cu aparitia nevoilor de consum,
Exista mai multe forme de aprovizionare, după cum urmează: aprovizionare pe măsura apariției nevoilor de consum; aprovizionare anticipată, funcție de progonza oferita de conjunctura pieței; aprovizionare pentru o perioadă de timp determinată; aprovizionare periodica, cu cantități reduse etc.
Aprovizionarea implica:
Constatarea si evaluarea nevoilor proprii de consum și a cererii clienților, care cuprind: aprecierea stadiului vânzărilor viitoare; aprecierea amploarei și structurii producției; luarea in calcul a stocului existent; determinarea termenilor de livrare, cantităților, prețurilor și a condițiilor de achizitie.
Determinarea surselor de aprovizionare, care cuprind: studierea piețelor, a produselor; proiectarea cererilor de ofertă; studierea ofertelor;
Lansarea comenzii, ce cuprinde: alegere de furnizori; negociere și încheiere de contracte; trimiterea de comenzi.
Inregistrarea mărfurilor, ce cuprinde: supravegherea livrărilor, a respectării termenilor;r ecepția produselor, revizuirea facturilor.
Gestiunea aprovizionării tehnico-materiale va trebui astfel condusă, in asa fel încât să asigure:
aprovizionarea completă și la timp a firmei cu mijloacele de producție necesare;
realizarea condițiilor optime pentru stocare;
intretinerea rațională a posturilor de muncă;
gestiunea rezonabila a resurselor materiale.
Putem considera ca necesarul de resurse materiale reprezinta cantitatea de materii prime, materiale, etc. ce urmeaza a fi consumate pentru realizarea planului de productie și constituirea stocurilor la finele perioadei de gestiune.
Necesarul de resurse materiale (Nt) se stabileste conform relației:
(1.1)
unde Np1 = necesarul pentru indeplimirea planului;
Sf = necesarul pentru constituirea stocului de materiale.
Stocarea marfurilor este necesara din mai multe motive, cum ar fi: asigurarea continuității afacerii, avand in vedere faptul ca exista produse sezoniere si trebuie evitata o ruptura in stoc si oprirea procesului tehnologic; alt motiv ar fi cel al prudenței, pentru a evita o majorare de preturi. Aici putem defini un stoc de siguranță, ca stocul compus din cantitatea de produse necesara in a preveni o ruptura de stoc. Chiar si cel mai mic decalaj, în cazul întârzierii din partea furnizorului, poate aduce consecințe grave. Din acest motiv, se naste necesitatea prevederii unei marje de siguranță ce va pune firma la adăpost în asemenea situații.
Trebuie luate in considerare in realizarea unei aprovizionari, si durata de timp necesara transportului si de asemenea perioada de receptie a marfurilor. Cunoașterea ritmicitatii consumului și a duratei de aprovizionare ajuta la efectuare comenzilor in timp util, pentru evitarea unei rupturi de stoc.
1.3 Planificarea producției
Unitatile economice analizate ca sisteme de conversie se divizeaza în: sisteme continue și sisteme intermitente. In general, sistemele continue sunt cele de tip linie (automată) de asamblare, iar sistemele intermitente sunt de tip secție sau atelier de producție.
In cazul fabricării de produse, task-urile unitatii economice sunt realizate în cadrul atelierelor și secțiilor de producție, unde se strang un rans de comenzi ale beneficiarilor, de obicei prelucrându-se mai multe articole simultan. Astfel rezida in mod normal o anumită ordine în realizarea operațiilor, fiindca o parte din operații au nevoie ca un punct de lucru pe la care este necesar să treacă, să se elibereze și apoi să fie pregătit pentru următoarea operație.
In eficacitatea sistemelor de tip intermitent (unde de obicei se lucrează la comandă), o importanta deosebita o are rrdonarea sarcinilor de lucru, prin stabilirea unor priorități și setarea anumitor secvențe de lucru. Stabilirea de priorități este influentata de anumiti factori cum ar fi: solicitari exprese de la client, timpul necesar procesului de fabricatie, costurile operațiilor (exemplu cu timpii de pregătire-încheiere), nivelul de incarcare a atelierului, termenul de livrare, sau utilizarea incompletă a capacităților.
La lansarea comenzilor de productie trebuie avuta in vedere posibilitatea realizarii acestora in intervalul confirmat catre client. O data, trebuie asigurat necesarul de materiale corespunzator unei comenzi de productie anume, iar pe de alta parte trebuie gestionata incadrarea executiei comenzii intr-o perioada in care exista capacitate de productie. Intr-o firma in care specificul procesului de fabricatie este determinat de articole finite cu operatii complexe, unele mai facile, altele mai dificile (spre exemplu, unele articole pot necesita doar ambalare de componente in pungi, altele pot avea operatiuni cum ar fi realizarea premergatoare de subansamble, frezare, crimpare, nituire, imprimare, verificare la anumite testere etc.), este necesara o planificare care sa prevada ocuparea eficienta a posturilor de lucru, in asa fel incat sa nu existe stopaje in productie, sau anumite posturi de lucru sa fie incarcate cu peste 100% capacitate.
In scopul realizarii planului de producție la nivel de ateliere la nivel de atelier sunt urmate etapele:
încărcarea – atribuirea operațiilor pe un centru de lucru; specificația tehnica a fiecărei comenzi determina și itinerarul tehnologic, se pot seta punctele de lucru pe la care reperul trebuie să treacă și se cunoaște din norma de timp și durata operației pentru fiecare punct de lucru. O data cu aparitia unor comenzi noi, acestea trebuie distribuite acelorași puncte de lucru unde se proceseaza deja comenzile lansate.
ordonarea (secvențierea) – este necesara stabilirea unei ordini de procesare a comenzilor din coada de asteptare; in condițiile în care apar comenzi noi, punctele de lucru acumulează sarcini ce antreneaza o linie de așteptare. Această fixare a priorităților se denumește secvențiere.
jalonarea (programarea detaliată) – trebuie apreciati timpii pe operație pentru a putea stabili calendarul pentru fiecare operație, repectiv data de start și data terminării operatiei. Aici putem distige jalonarea în avans (la "cel mai devreme") si jalonarea în devans (la ‘cel mai târziu”). Jalonarea in avans se utilizeaza de obicei în sectiile care lucrează cu clienți ce plasează comenzi conform tiparului "necesar cât mai curând posibil". Astfel operația cu prioritatea imediată va fi planificata în cea mai apropiată fantă de timp disponibilă pe punctul de lucru. Deoarece operația va fi programată cât mai repede, se va finaliza in principiu înainte de termenul planificat. Ca urmare, se ajunge la generarea de stocuri de produse în curs de fabricație. Avantajul insa este că task-ruile sunt îndeplinite în timpi de ciclu mai scurți dec la jalonarea in devans. Jalonarea in devans se utilizeaza de obicei in sectiile de montaj unde sunt fixate în avans anumite termene de livrare. Aici se atribuie, ca prioritate, următoarei operatii ultimul interval disponibil ce permite sarcinii să fie terminată la scadență. Ca urmare, se minimizează stocurile fiindca task-urile sunt finalizate exact când trebuie sa treacă la următorul post de lucru. Dezavantajul este insa pericolul de a nu termina la timp task-ul, ceea ce genereaza nerespectarea termenului de livrare și nemulțumirea clientului.
accelerarea/deblocarea unor taskuri – face referire la procedeele speciale care se iau tratarea anumitor sarcini care ies din planul inițial (exemplu lipsă material, defectare mașini, urgențe/ comenzi speciale, etc.).
controlul pe termen scurt – controlul se infaptuieste prin supravegherea input-urilor și output-urilor și monitorizarea capacității planificate față de cea reală, iar la aparitia unor diferențe semnificative trenuie luare măsurile necesare (exemplu prelungirea orarelor de lucru, munca în schimburi sau executia în colaborare a anumitor sarcini).
încărcarea capacităților
Comandă planificată – comandă a clientului ce a fost supusa unei inregistrari și planificari, dar nu a fost lansată încă în producție
Comandă deschisă – comandă a clientului lansată în producție, care este în curs de executie.
Cunoașterea de catre personal a tehnologiei de fabricație și a normelor de timp repartizate de atelier pentru lansarea tehnologiei aferente fiecărei operații, este considerata un prim pas determinarea încărcărilor pe fiecare punct de lucru. Astfel, putem stabili punctele de lucru (mașini-unelte sau centrele de prelucrare) pe la care trebuie să treacă fiecare reper.
Înainte de a stabili la care reper va fi distribuita o comanda, trebuie determinate reguli stricte de prioritati. Trebuie luate in considerare, inainte de repartizare, si comenzile in curs de executie si cele planificate apriori. Nu este recomandat sa se lanseze in productie o comanda client aparuta ulterior celor deja planificate, care ar putea angaja astfel o incarcare ridicata in productie si un risc de a nu putea livra comenzi confirmate poate cu cateva luni in urma. Stabilirea de prioritati este importanta, deoarece trebuie gasita o balanta intre urgentele clientilor, angajamentele facute catre clienti etc. In momentul in care exista situatii neprevazute, comenzi aparute cu termen de livrare imediat, trebuie constatat daca exista posibilitate reala de livrare. Exista clienti prevazatori, care isi plaseaza comenzile din timp, si a caror livrare nu ar trebui sa fie afectata din cauza aparitiei unor alte urgente. Pentru firma este important sa isi pastreze o imagine serioasa fata de clientii vechi, care asigura un rulaj periodic si constant in companie.
In acest context, trebuie lămurite și noțiunile de încărcare infinită și încărcare finită. Încărcarea infinită apare atunci când nu se ia in considerare capacitatea reală de productie, alocând operațiile fiecărui post de lucru ca și cum ar avea o capacitate nesfarsita. In cazul incarcarii infinite, putem utiliza graficul de tip Gantt ce ne ofera o imagine despre modalitatea de repartizare a sarcinilor pe puncte de lucru. Graficul (diagrama) de tip Gantt expune, pe o scara temporala, prin linii orizontale, intinderea activităților, și prin linii discontinue (spre exemplu) rezervele de timp. Graficul de tip Gantt presupune divizarea proiectului în unitati componente (activități) și eșalonarea lor în timp, ținând cont de succesiunea tehnologică, resurse, termene impuse, etc.
Încărcarea finită apare atunci când sarcinile de lucru se alocă pe centrele de lucru determinând data lor de start si de și sfârșitul și luand in considerare și capacitatea punctelor de lucru respective. Se debuteaza prin stabilirea capacitatii fiecărui punct de lucru, de exemplu în ore de efective munca, din care se distribuie sarcinile simulând începutul și sfârșitul fiecărei operații. Aceste operații sunt alocate centrelor de lucru oră de oră sau zi de zi, cu proiectie în viitor.
Regulile de determinare a priorităților pentru comenzile care necesita sa fie date în lucru se pot aplica în momentul în care s-au creat cozi la punctul de lucru respectiv, si trebuie luate în seama anumite elemente aditionale pentru stabilirea comenzii care trebuie tratata cu prioritate si din ce motiv. Managementul prioritizarilor este deosebit de important, deoarece impacteaza optimizarea costurilor cu timpii necesari de pregătire – încheiere a mașinilor-unelte, dimensiunea stocurilor sau indeplinirea termenelor planificate.
Cele mai notabile reguli de prioritate sunt:
Contravaloarea costului pentru pregătire – încheiere;
Costurile cu stocurile produselor "în curs" de fabricație;
Durata de mers în gol;
Cifra sau procentajul task-urilor întârziate;
Norma de timp medie a task-urilot întârziate;
Deviația standard a timpilor task-urilor în așteptare;
Numărul mediu de sarcini aflate in asteptare;
Durata medie de finalizare a sarcinii;
Deviația standard a termenelor limita de finalizare.
Dintre acestea, primele trei criterii sunt in general corelate cu eficiența atelierului respectiv. Apoi următoarele trei criterii sunt orientate cu precadere spre satisfacerea clientului sau spre calitatea serviciilor prestate decât spre producție. In fine, ultimele trei criterii cuantifica eficacitatea internă și nivelul de satisfacție al clientului.
Reguli de prioritate principale sunt următoarele:
Primul venit primul servit – comenzile de fabricație sunt procesate în ordinea sosirii. De obicei, această regulă se aplică în servicii: bănci, supermaket-uri,etc. ;
Prima dată scadentă – se va executa cu prioritate comanda de productie pentru clientul care solicita cel mai apropiat termen de livrare;
Cea mai mică normă de timp – se executa următoarea comanda de productie / operație cu timpul pe operație cel mai scazut;
Cel mai mic timp trunchiat de procesare- se acorda intaietate operatiilor care au depășit o durata de așteptare plus o durata procesare prestabilite.
Cea mai redusă marjă liberă – se acorda intaietate operației cu cel mai mic timp calculat de la termenul de livrare, minus durata pe operație și data curentă.
Soluția pentru exigentele din ziua de astazi, pentru ca intreprinderea sa se incadreze in peisajul economic actual, a fost un sistem de Resource Planning, care are rolul de a integra punctele cheie ale unei afaceri și de a oferi o proiectie globală despre ceea ce se întâmplă în cadrul structurii organizaționale.
Asemenea, CRM (Customer Relationship Management), ca strategie utilizată pentru dezvoltarea unei legaturi strânse între producator și client, reprezinta motorul unei afaceri de succes. Devine evident faptul că un business de succes, care, prin esenta, aduce o stare economica prosperă in companie, nu poate fi relaizat fără o bună planificare și gestiune a resurselor interne ale firmei sau a relațiilor cu clienții. Devine cert interesul ridicat al intreprinderilor, indiferent de dimensiunea acestora, pentru gestiunea eficienta, riguroasa și analitică a tot ce reprezinta resursă a intreprinderii – producție, resursă umană, vânzări, contabilizarea finanțelor, dar de asemenea și tot ce include managementul relației cu clienții, cu furnizorii, marketing. Acets lucru pentru ca managerii au ințeles că succesul afacerii depinde, așa cum este normal, de utilizarea tehnicilor moderne de management al resurselor companiei, formula în care pionul principal este bineinteles calculatorul, prin facilitațile oferite de catre un software adecvat.
CAPITOLUL 2: Tehnologii informatice utilizate
Microsoft SQL Server
O bază de date reprezinta o grupare de date centralizate, consituita și menținută computerizat, cu telul prelucrării informațiilor, necesare unui set de aplicații. Prelucrarea de date face referire la operațiile de introducere, actualizare, ștergere, și interogare a datelor.
Un sistemul de gestiune a bazelor de date (SGBD) constituie un sistem de programe care faciliteaza: crearea bazelor de date, stocarea și prelucrarea informațiilor ca înregistrări în bazele de date, executia de aplicații cu bazele de date.
Ca exemplicare de sisteme de gestiune a bazelor de date relaționale avem:
SQL Server- creat de compania Microsoft; bazat pe SQL și functioneaza în arhitectura client/server.
Oracle – creat de Oracle Corporation USA.
Access – realizat de firma Microsoft.
Visual FoxPro – creat de firma Microsoft.
DB2- creat de compania IBM.
Informix.- creat de compania Informix.
Progress – creat de compania Progress Software.
Ingress II – creat de Computer Associates.
Paradox – realizat de firma Borland.
Ultima versiune aparuta a sistemului este Microsoft SQL Server 2014. Microsoft SQL Sever utilizeaza o varianta de SQL denumita Transact-SQL (T-SQL), o implementare de SQL-92 (standardul ISO pentru SQL). Microsoft oferă SQL Server Expess Edition, ca versiune gratuita a serverului. Nu impune restricții referitor la numărul bazelor de date sau a utilizatorilor concurenți, dar este limitata la utilizarea unui singur procesor, de 1 Gb de memorie si max. 4Gb a fișierelor de date.
SQL Server – este sistem pentru gestiunea bazelor de date (Data Base Management System), realizat de Microsoft. Versiunea Microsoft de SQL (Structured Query Language) – este limbaj structurat de interogări. Este un sistem din clasa Enterprise ce se poate aplica bazelor de date de dimensiuni foarte mari.
Microsoft SQL Server ofera facilitati ca:
– dezvoltarea, implementarea și administrezea de aplicații la nivel de companie mai sigure, fiabile și scalabile
– maximizarea eficientei in IT prin diminuarea complexității creării, implementării și gestiunii aplicațiilor pentru baze de date.
– partajarea de date pe mai multe platforme și aplicații, pentru a facilitarea conectarii sistemelor interne și externe.
– controlarea costurilor fără a afectarea performanței,a scalabilitatii sau securitatii.
Gestionarea serverului se realieaza foarte facil prin aplicația SQL Server Management Studio.
Elementul central al acestui Tool este panelul Object Explorer, care ofera utilizatorului posibilitatea sa selecteze sau sa angajeze orice alta acțiune asupra obiectelor de pe server.
Componentele logice ale SGBD-ului SQL Server:
Baza de date.
Diagramele bazei de date (redare grafică tabelelor și caracteristicilor acestora).
Tabelul (formă matricială de redare, prin linii și coloane).
Tipurile de date (exemplu expresie, coloană, variabilă sunt atribuite unui tip de date).
Regulile și constrângerile.
Vizualizările (tabel virtual, rezultat al unei consultari).
Indecșii (fișiere utilizate la accelerarea accesului la date).
Procedurile stocate (instrucțiuni T-SQL compilate cumulat, într-o singura execuție).
Declanșatoarele (triggere- proceduri stocate, ce se execută când o instrucțiune INSERT, UPDATE sau DELETE se aplica asupra unuie tabel).
Funcțiile.
Aplicațiile client/server constituie aplicații cu două componente: o aplicație, denumită client, ce solicita celeilalte aplicații componente, denumită server de baze de date, sa fie executate comenzi SQL asupra unei baze de date.
1.2 .NET Framework
.NET este un cadru/ o platforma (Framework) de dezvoltare software ce suporta crearea, distribuirea și rularea atât a aplicațiilor-desktop Windows cat și aplicațiilor WEB. Platforma .NET implica mai multe tehnologii (ASP, XML, OOP, SOAP, LINQ, WDSL, WPF) și limbaje de programare (C#,VB, C++), asigurând indiferent de limbajul de programare utilizat, portabilitatea codului compilat între diferite calculatoare cu sistem Windows.
Pentru dezvoltarea de aplicații .NET, putem utiliza:
servere specializate – un pachet de servere Enterprise .NET (exemplu Microsoft SQL Server), care ofera facilitati pentru de stocare a bazelor de date, email etc.
servicii Web
servicii incluse pentru dispozitive non-PC ( Smartphone, Pocket PC Phone Edition, etc.)
Argumente pentru .NET
.NET oferă acces facil la baze de date, permite crearea de elemente grafice. Spațiul de nume System.Windows.Forms detine instrumente (controale) ce permit implementarea elementelor interfeței grafice cu utilizatorul.
Microsoft Visual Studio este un mediu de dezvoltare integrat oferit de Microsoft. Acesta permite crearea de aplicații consolă, interfațe grafice, aplicații de tip Windows Forms, aplicații Web, site-uri Web, servicii Web.
1.3 .Limbajul C#
C# este un limbaj de programare orientat-obiect (Object-oriented programming) contruit de Microsoft la sfârșitul anilor '90, ca si concurent pentru limbajul Java.
Principiile de bază ale programării orientate pe obiecte (incapsulare, polimorfism, mostenire) sunt notiuni fundamentale ale programării in C#. În linii mari, limbajul moștenește principiile și sintaxa de programare din C++.
.Limbajul ASP.NET
ASP.NET este o tehnologie oferita de Microsoft pentru constructia de aplicații Web și servicii Web.
ASP.NET Web Form – este mediu de aplicații web ce permite programatorilor sa construiasca site-uri web, cu ajutorul familiarului drag-and-drop. Aria de proiectare si controale si componente sustin construirea rapida a site-urilor, cu acces la date.
Printre avantajele ASP.NET se numara:
ASP.NET detine un set de elemente, bazate pe XML, punand astfel la dispozitie un model de programare orientat-obiect (OOP).
ASP.NET ruleaza cod compilat, marind performanțele aplictiei web. Codul sursa poate fi divizat în două fișiere, unul pentru continutul paginii, iar altul pentru codul executabil.
.NET este compatibil cu mai mult 20 de limbaje diferite, dintre care cele mai utilizate fiind C# si Visual Basic.
O pagină web este definita ca o resursă situata în domeniul web (WWW) din Internet, avand de obicei formatul HTML sau XHTML (extensia .html sau .htm) și care are hiperlinkuri pentru navigare (prin click de mouse) dinspre o pagină sau secțiune de pagină spre alta.
De cele mai multe ori, furnizorul de informații își concentrează paginile în cadrul unui site Web, care poate primi un identificator Internet unic denumit URI (Uniform resource identifier).
O pagină web poate fi alcatuita din:
texte;
imagini;
audio;
conținut multimedial interactiv;
miniaplicații.
continut care nu este afișat de browser, cum ar fi: scripturi (de cele mai multe ori în formatul JavaScript), meta-etichete; foi de stil (Cascading Style Sheets sau CSS), care seteaza modalitatea de formatare a paginii; comentarii.
HyperText Markup Language (HTML) reprezinta un limbaj de marcare folosit pentru dezvoltarea paginilor web care vor fo afișate într-un browser.
CSS (Cascading Style Sheets) reperzinta un standard de formatare a componentelor unui document HTML. Aceste Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul <style> și/sau atributul style. CSS se poate utiliza și pentru formatarea elementelor XHTML, XML și SVGL.
–––––––––-
Platforma .NET asigura, prin tehnologia ASP.NET, o metoda de lucru pentru pagini web prin aplicatii de tipul Web Forms si Web Services.
Aplicatiile client-server, pe Internet, prezente prin aplicatiile Web, implica un client, si anume un browser, si un server. Clientul face o solicitare catre server pentru a obtine documente, denumite pagini Web. Pagina este redata intr-un fisier de tip text, in limbajul HTML.
Paginile Web pot fi statice sau dinamice. Acestea sunt statice daca au un continut care nu mai poate fi modificat, browserul doar afisand informatiile. Paginile dimanice au un continut stabilit din interactiunea dintre browser si client.
Mediul de dezvoltare ASP.NET (Active Server Pages), utilizeaza aplicatii Window Form si Web Services, pe fundamentul unei tehnologii Web dezvoltate pe platforma .NET Framework.
O pagina Web curpinde doua componente: pagina de continut- partea de interfata, scisa in limbajul de marcare HTML, si pagina de code-behind- partea de programare, reprezentand codul scris intr-un limbaj cum ar fi C#. Aceste doua parti pot fi memorate in fisiere distincte, unul cu extensia .aspx, iar celalalt, respectiv partea de code behind, intr-un fisier cu extensia .aspx.cs.
Cand sunt utilizate pentru pagina cele doua fisiere, acestea trebuie conectate intre ele, astfel fisierul sursa va utiliza directiva <%@Page> pentru definirea de nume a fisierului si de clasa utilizate pentru partea de script.
Exemplu: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="numefisier.aspx.cs" Inherits="numeclasa %>. Aici, atributul Language stabileste limbajul de scriptare; AutoEventWireup informeaza compilatorul ca evenimentele specifice ale paginii (Init, Load etc.) sunt legate la metodele handler conform cu conventiile standard pentru nume (cum ar fi Page_Init); CoFile indica numele fisierului de code-behind; iar atributul Inherits indica numele clasei unde este descris codul de script.
Pagina Web accepta de asemenea si modelul cu un fisier, respectiv doar cu fisierul .aspx, care contine si partea de code-behind. Astfel, partea de script se introduce prin blocuri de scriptare ( <script runat="server" />).
Aplicatiile Web Forms sunt caracterizate prin faptul ca sunt executate de pe alt calculator decat cel pe care ruleaza browserul, respectiv de pe server. Pentru ca informatiile sa fie prelucrate de server este folosita tehnica de postback, si anume tehnica retrimiterii paginii si a informatilor catre server. Prin tehnica viewstate sunt memorate pe informatiile utile pe calculatorul clientului si retimise automat la server la executia de postback al paginii.
In momentul in care se executa pagina, ASP.NET porneste de la codul sursa a respectivei pagini, scris in limbaj de marcare, HTML, si limbaj de programare, C#. La executia paginii pentru prima data, se creaza de ASP.NET un obiect pentru pagina si o succesiune de obiecte control. Ulterior se realizeaza traducerea obiectelor generate, in limbaj HTML, producandu-se codul paginii. Acesta din urma este trimis catre client. La interactiunea utilizatorului si declansarea unui postback, pagina este reexecutata. Pagina este returnata de browser catre server, cu datele colectate, pagina este retradusa si retransmisa catre client. Sunt sterse obiectele care au contribuit la construirea paginii.
Evenimentele care participa la procesul executiei paginii se produc pe partea de client, insa sunt tratate pe partea de server.
Obiectul pagina este instantiat din clasa proprie Page, o clasa de biblioteca. Acest obiect pagina detine proprietatea Controls, derivata din clasa Page, care contine o colectie cu evidenta controalelor continute de pagina.
Pagina de continut are o structura asemanatoare unui fisier HTML, iar un element definitoriu este tagul <form>, un formular ce contine informatia statica si cuprinde controalele destinate realizarii paginii. Un alt element definitoriu este atributul runat="server", atribut regasit in etichetele controalelor proprii serverului, care informeaza ca executia controalelor este realizata pe server.
Exista o serie de reguli impuse de standardul XHTML, care refera modalitatea de scriere a documentelor: este necesar ca etichetele (tags), numele de atribute sa fie scrise cu litere mici (exemplu: <input type=”textbox”>); elementele trebuie sa fie inchise printr-un tag propriu de inchidere (exemplu <br></br>) sau prin tagul vid (p />); valorile atributelor sunt setate in ghilimele (exemplu value=”submit”); pentru asocierea unui identificator la un item, se utilizeaza atributul id, in loc de name.
Obiectele Request si Response ofera posibilitatea implementarii tehnicii stocarii de date, cu un volum redus, denumita cookies, care vor fi folositoare pentru utilizari viitoare. Astfel, aplicatia obtine dupa postback, informatiile memorate pe calculatorul clientului.
O componenta importanta a sistemului de operare o reprezintă IIS (Internet Information Services), care accepta realizarea mai multor site-uri Web pe acelasi server. Aplicatiile de tipul Web forms sunt accesate cu ajutorul cererilor inaintate browserului, printr-un URL. La instalarea IIS, va fi creat pe server folderul c:\Inetpub\wwwroot, ce constituie folderul radacina pentru aplicatiile Web.
Mediul de dezvoltare cu ajutorul caruia putem realiza aplicatiile este Visual Studio. Acesta este compus din o serie de subferestre (panel-uri):
document window – este subfereastra principala, ce afiseaza si ofera posibilitatea de editare a fisierelor cum ar fi fisierele sursa. Prin butoanele situate in partea de jos, Source si Design, putem comuta intre modul de lucru sursa si modul proiectat. In modul Source, bobtinem in pagina textul HTML, iar im modul Design putem trage, cu drag-and-drop, din bara Tooolbox, controalele necesare, putem defini proprietatile acestora, si le putem vizualiza in modul grafic.
Toolbox – este un panel in care regasim controalele pe care le putem utiliza (controale web standard, HTML statice, pentru lucrul cu baze de date etc.).
Properties – afiseaza atributele controalelor selectate.
Solution Explorer – este subfereastra unde putem regasi fisierele aplicatiei, sub forma arborescenta.
ASP.NET ne ofera doua categorii de controale: controale HTML statice si controale web. In eticheta controlului, din codul sursa, regasim un identificator pentru control, avand expresia id=”NumeControl”. Acest nume al controlului este generat automat de Visual Studio, la tragerea controlului pe pagina.
ASP.NET detine controale de tipul:
controale HTML server: sunt incluse in pagina prin tag-urile obisnuite, avand un atribut specific, runat=”server”, ce are scopul de a indica faptul ca sunt controale ce incapsuleaza controalele echivalente HTML, insa sunt controale pentru partea de server.
Controale web standard: specifice ASP.NET, cu o frecventa ridicata de utilizare (cum ar fi RadioButtonList, DropDownList, Table);
Controale de validare;
Controale de date (cum ar fi GridView, SqlDataSource, care permit legarea declarativa a controalelor la sursele de date);
Controale de navigare: utilizate in aplicatiile web cu mai multe pagini, pentru comutare (exemplu TreeView, Menu);
Controale de login: folosite pentru autentificarea utilizatorilor.
Pentru setarea caracteristicilor controalelor web HTML, de obicei se includ atributele in tag-uri, de forma atribut=”valoare.Putem insa apela si la atributul de stil, prin proprietatea Style a controalelor.
Maniera de redare a informatiei de stil este reprezentata de sintaxa Cascadin Style Sheet (CSS), unde avem substring-uri de tipul proprietate:valoare, iar separarea intre proprietatile de stil se realizeaza prin punct-virgula (;).
CAPITOLUL 3: Studiu de caz pentru planificarea resurselor intreprinderii: Implementarea sistemului in procesul de fabricatie
3.1 Proiectarea bazei de date
Pentru editarea datelor de la distanta, via internet, de curând s-a început dezvoltarea a unui site bazat pe ASP.NET. Principalele funcționalități ale acestei platforme sunt:
Lansarea aplicațiilor
Afișare informații
Interfața de introducere a datelor.
S-a ales interfața web pentru acest modul deoarece nu necesita instalări anterioare rulând cu ușurința din navigator (browser).
In mod normal o baza de date contine multe entitati distincte identificate prin tabele, iar atributele acestora sunt de multe ori referite ca si campuri. Pentru a modela acesta entitate s-au folosit tabele.
Tabela Articles, contine datele referitoare la articolele finite produse de firma.
CREATE TABLE [dbo].[Articles](
[id] [int] IDENTITY(1,1) NOT NULL,
[code] [nchar](10) NOT NULL,
[name] [nchar](50) NOT NULL,
[type] [nchar](50) NOT NULL,
CONSTRAINT [PK_Articles] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela Components, contine datele referitoare la componentele care intra in alcatuirea articolului finit.
CREATE TABLE [dbo].[Components](
[id] [int] IDENTITY(1,1) NOT NULL,
[code] [nchar](50) NOT NULL,
[description] [nchar](50) NOT NULL,
CONSTRAINT [PK_Components] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela ArticleComponent, contine datele referitoare la lista de materiale, respectiv legatura intre articole si componentele lor aferente.
CREATE TABLE [dbo].[ArticleComponent](
[id] [int] IDENTITY(1,1) NOT NULL,
[article_id] [int] NOT NULL,
[component_id] [int] NOT NULL,
CONSTRAINT [PK_ArticleComponent] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela AUsers, contine datele referitoare la inregistrare si autentificare.
CREATE TABLE [dbo].[AUsers](
[id] [int] IDENTITY(1,1) NOT NULL,
[first_name] [nchar](50) NOT NULL,
[last_name] [nchar](50) NOT NULL,
[email] [nchar](50) NOT NULL,
[password] [nchar](50) NOT NULL,
[is_admin] [int] NOT NULL CONSTRAINT [DF_AUsers_is_admin] DEFAULT((0)),
CONSTRAINT [PK_AUsers] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela ClientOrders, contine datele referitoare la comenzile client lansate cu scopul obtinerii unei anumite cantitati dintr-un articol finit.
CREATE TABLE [dbo].[ClientOrders](
[id] [int] IDENTITY(1,1) NOT NULL,
[client_id] [int] NOT NULL,
[article_id] [int] NOT NULL,
[quantity] [int] NOT NULL,
[current_state_id] [int] NOT NULL,
[date_requested] [datetime] NOT NULL DEFAULT (getdate()),
CONSTRAINT [PK_ClientOrders] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela CurrentStocks, contine datele referitoare la stocurile existente aferente componentelor.
CREATE TABLE [dbo].[CurrentStocks](
[id] [int] IDENTITY(1,1) NOT NULL,
[component_id] [int] NOT NULL,
[stock] [int] NOT NULL CONSTRAINT [DF_CurrentStocks_stock]DEFAULT((0)),
CONSTRAINT [PK_CurrentStocks] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela ProductionOrder, contine datele referitoare la comenzile de productie lansate, pentru fabricarea articolelor comandate prin comenzi client.
CREATE TABLE [dbo].[ProductionOrders](
[id] [int] IDENTITY(1,1) NOT NULL,
[client_order_id] [int] NOT NULL,
[date_requested] [datetime] NOT NULL,
CONSTRAINT [PK_ProductionOrders] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela Suppliers, contine datele referitoare la furnizorii alesi, disponibili pentru comandarea de componente.
CREATE TABLE [dbo].[Suppliers](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nchar](50) NOT NULL,
CONSTRAINT [PK_Suppliers] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela SupplierComponents, face legatura intre componente si furnizori, continand si date referitoare la stocul unei dintr-o anumita componenta la un anumit furnizor.
CREATE TABLE [dbo].[SupplierComponent](
[id] [int] IDENTITY(1,1) NOT NULL,
[supplier_id] [int] NOT NULL,
[component_id] [int] NOT NULL,
[stock] [int] NOT NULL CONSTRAINT [DF_SupplierComponent_stock] DEFAULT ((0)),
CONSTRAINT [PK_SupplierComponent] PRIMARY KEY CLUSTERED
([id] ASC));
Tabela SupplyOrders, contine datele referitoare la comenzile de aprovizionare lansate catre un anumit furnizor, in scopul intregirii stocului de componente pentru executia de comenzi de productie, conform solicitarilor clientului.
CREATE TABLE [dbo].[SupplyOrder](
[id] [int] IDENTITY(1,1) NOT NULL,
[client_order_id] [int] NOT NULL,
[supplier_id] [int] NOT NULL,
CONSTRAINT [PK_SupplyOrder] PRIMARY KEY CLUSTERED
([id] ASC));
Dupa crearea tabelelor, acestea se vor popula cu inregistrari. Spre exemplu:
INSERT INTO articles VALUES (1,’A1’,’Article1’,’articol finit’)
Tabelele se pot vizualiza si prin intermediul Visual Studio, prin adaugarea in aplicatie a unei clase LINQ to SQL. LINQ to SQL este o componentă a .NET Framework 3.5 , ce oferă o infrastructură run-time pentru gestionarea datelor relaționale ca obiecte.
Aceasta se adauga prin click dreapta pe solutie, add new item:
Aplicatia e impartita in doua parti, pentru 2 roluri :
– una pentru user simplu
– una pentru administrator
La rularea aplicatiei, se deschide o pagina web pentru inregistrare si autentificare user. Daca userul este deja creat, se trece direct la autentificare.
Daca nu avem user creat, vom actiona butonul register, care ne redirectioneaza catre o alta pagina web de unde ne putem crea un cont nou de utilizator.
3.2 Componenta administrare
Ca administrator, avem acces la o pagina de management de useri, o pagina de management de articole si inca una pentru management de comenzi.
Pagina Default.aspx este cea care ne ofera acesul la paginile de navigatie.
Pagina management de useri permite editarea si stergerea datelor.
Pagina de management de articole permite atat editarea si stergerea inregistrarilor, cat si adaugarea de articole noi. La selectarea articolului curent, se incarca un alt tabel cu componentele aferente articolului respectiv. Aici putem suplimenta stocul de la un furnizor ales, putem sterge inregistrarea si putem adauga o componenta noua care se foloseste la procere articolului selectat.
Pagina de comenzi afiseaza un istoric al comenzilor client plasate, ca urmare a comandarii unui articol de catre un user.
3.2 Componenta client
Ca user simplu, avem acces la articolele finite care se pot comanda, se poate edita campul aferent cantitatii comandate si ulterior apelat butonul pentru plasare comanda. Pagina va fi redirectionata catre istoricul comenzilor efectuate.
Logarea în sistem este relativ simplă, fiecare disponent având nevoie de un user și o parolă personalizată. În sistemul se regăsește baza de date a companiei, care conține toate produsele pe care Departamentul de producție le produce. Fiecărui produs,ddenumit articolîi este alocat un cod unic format din cifre și/sau litere.
Primirea unei comenzi client. Introducerea comenzii client
În momentul primirii unei comenzi din partea unui client, aceasta trebuie introdusă în sistem pentru a putea fi procesată. Urmează a se completa manual cantitatea cerută. Toate celelalte date vor fi alocate automat.
După salvarea datelor introduse, se poate observa comanda, pagina fiind redirectionata catre istoricul comenzilor efectuate.
Verificarea disponibilității materialelor
După introducerea comenzii client in sistem, se creează comanda de producție internă. Pentru a verifica dacă producția produselor cerute în comandă este posibilă trebuie verificata disponibilitatea materialelor componente.
În acest stadiu, sistemul verifică și alocă materialele componente pentru această comandă.
Obținerea materialelor lipsă
Odată verificată lista materialelor componente ale produsului cerut de client, se întocmește lista materialelor lipsă și se trece la obținerea lor. Acest lucru este posibil prin diferite metode în funcție de tipul de aprovizionare. Dacă materialul este de tip producție externă, prin furnizor, atunci trebuie lansată o comandă de aprovizionare către acel furnizor.
Lansarea comenzii de producție
Planificarea comenzilor fiind făcută, următorul pas este de a lansa comanda de producție, in scopul livrarii catre client
Aplicatia e impartita in doua parti:
– una pentru user simplu
– una pentru administrator
Diferentierea intre administrator/user normal se face in baza de date, daca is_admin este pe 1, inseamna ca user-ul curent logat este administrator.
partea de user simplu:
Pagina de Login:
– Cand intri pe pagina de login, ai posibilitatea de a ramane logat o perioada mai mare daca apesi pe bifa de langa "Keep me logged in"
– se folosesc doua controale de tip TextBox, unul pentru adresa de email iar unul pentru parola, al treilea control este de tip CheckBox, prin care
se mentioneaza daca user-ul ar trebui tinut minte
Dupa ce se apasa butonul de Login, se face automat logarea: Se face un query prin care se identifica daca in baza de date exista un corespondent cu
datele care s-au introdus in formular, daca exista, userul va fi salvat in sesiune si se va redirectiona catre default.
Pagina de Register:
– Daca userul nu are cont, are optiunea de a isi crea unul, se folosesc 5 TextBox-uri pentru nume, prenume, email, parola si confirmarea acesteia.
– Daca se apasa butonul de "create user" se va verifica in baza de date daca nu exista deja un utilizator cu adresa de email introdusa. Daca nu exista,
se va crea automat un user nou folosind datele date in formular dupa care se va face un login automat iar datele userului vor fi salvate in sesiune
AbstractPage.aspx
– Pagina este facuta pe post de parinte, care va fi mostenita de fiecare pagina care se va introduce in aplicatie.
– Mosteneste clasa System.Web.UI.Page
– In Page_Load al acestei pagini,se apeleaza metoda InitMenu, care are rolul de a initializa meniul pentru fiecare tip de utilizator in parte
– In InitMenu, detectam daca avem sau nu un utilizator inregistrat sau nu si daca acesta este user simplu sau administrator. In functie de datele
obtinute, meniul din dreapta sus se va actualiza in mod corespunzator cu numele utilizatorului si functia acestuia (admin, daca este cazul)
– In continuare se apeleaza metoda InitNavigationMenu, aceasta are rolul de a crea un meniu in mod dinami, pentru fiecare tip de utilizator in parte
Daca nu avem un utilizator inregistrat, nu se va afisa nimic, daca avem un administrator logat, vom avea meniul "Manage Users", "manage Orders" si "Manage Articles"
Daca user-ul logat este unul simplu, vom avea doar "Articles" si "Orders"
– Metoda isUserLoggedIn are rolul de a vedea daca avem un utilizator logat in sesiunea curenta. Aceasta verifica sesiunea dupa index-ul user.
Daca acesta nu este null, inseamna ca avem un utilizator inregistrat.
– metoda DoLogin primeste ca parametri adresa de email si parola utilizatorului. In functie de datele introduse, se face o interogare in
baza de date pentru a vedea daca datele sunt valide si daca efectiv avem un utilizator corespunzator acestor date. Daca avem date valide,
Datele se vor pastra in sesiune, si utilizatorul va fi redirectionat pe pagina default a aplicatiei.
– metoda isAdmin verifica daca utilizatorul curent este sau nu administrator. Aceasta verifica intai sa vada daca este un utiliztor logat, dupa
care se uita in sesiune dupa atributul is_admin, daca este pus pe true, inseamna ca suntem logati ca si admin.
– metoda checkAuth primeste ca parametru un enum de tip Roles. Acesta verifica rolul curent, iar daca rolul curent nu este cel
primit ca si parametru, utiliztorul va fi redirectionat spre pagina default.
– metoda GetRole intorace tipul utiliztorului curent logat (un enume) in functie de ce tip sunt admin => Roles.Admin, normal => Roles.Regulat iar
pentru utilizator nelogat va fi Roles.None
–––––
Dupa ce user-ul s-a logat, el are posibilitatea sa aleaga dintre doua meniuri ("available articles" sau "my orders")
– "Available Articles"
-Daca se da click aici se va afisa intr-un gridview toate articolele existente in baza de date
– pentru afisare se foloseste un GridView
– Gridview-ul are posibilitatea de a selecta o inregistrare din el, daca se va face aceasta selectie, va aparea automat un nou gridview in care
se vor afisa componentele din care sunt facute un articol
––––
Admin_ManageArticles.aspx
– se apeleaza evenimentul Page_Load din parinte (AbstractPage, care la randului mosteneste clasa System.Web.UI.Page), pentru a asigura ca meniul este corect
instantiat pentru fiecare tip de utilizator;
– se apeleaza checkAuth din parinte (AbstractPage), rolul trebuie trebuie sa fie aici neaparat de tipul Admin, metoda accepta ca parametru variabila Admin, care este un Enum de tip Roles (un enum este o enumeratie de valori)
– La evenimentul de selecatare a unui articol din gridview-ul de articole se apeleaza metoda ArticleGridView_SelectedIndexChanged. Aici se apeleaza metoda
InitComponentsDetails care are ca scop initializarea gridview-ului de componente in functie de articolul selectat (adica toate componentele din care este alcatuiti un articol)
si in acelasi timp se pune si tabelul tblAddComponent pe visibil (prin acest table adaug o noua componenta la articolul curent selectat)
– in metoda InitComponentsDetails ca prim pas se identifica id-ul articloulul curent selectat folosind atributul SelectedDataKey.Value a gridului de componente.
-Se initializeaza un nou context linq to sql. Verific sesiunea si ma uit sa vad daca pentru dropdownlist-ul de furnizori este un index preselectat.
Daca am un index de furnizor preselectat, atunci salvez index-ul de furnizor intr-o variabila de tip int, altfel, interoghez baza de date cu tabelul de furnizori si imi
aleg un furnizor predefinit (primul). Dupa asta, interoghez baza de date in tabelul de componente si extrag toate id-uirle componeteleor din care este alcatuit articluul curent.
Urmeaza sa fac inca o interogare in tablul de componente pentru a afla efectiv datele unei componente (doar componentele care se regasesc in lista mai sus extrasa)
.
Dupa ce am extras datele, le leg de gridul de componente, folosind atributul DataSource al gridului respectiv metoda DataBind() pentru a efectua legarea si afisarea de date.
Identific dropdownlist-ul de furnizori din header-ul grid-ului de compeonte, extrag din baza de date lista de furnizori din tabelul Suppliers si o leg de
dropdowlist-ul de furnizor cu DataSource si DataBind()
-Grid-ul de componente are atasat la evenimentul onRowCommand, metoda ComponentsGridView_OnRowCommand, aceasta se declanseaza cand se apasa un buton carese afla in interiorul grid-ului
se detecteaza id-ul componentei de unde s-a data click (adinca din ce rand). Se identifica furnizorul curent selecta dupa care se apelaeza metoda IncreaseComponentStock cu
parametrii id-ul componentei si cel al furizorului curent selectat. Se instantiaza un nou linq to sql data context dupa care fac o interogare prin care scad stocul
furnizorului cu o bucata. Dupa operatia asta, reinitializez grid-ul de componente pentru a fi sigur ca datele sunt de actualitate
.
– La dropdownlist-ul de furnizori la evenimentul de schimbare a indexului se salveaza in sesiune index-ul curent. (metoda SupplierList_SelectedIndexChanged). In acelasi timp
apelez si metoda InitComponentsDetails, sa ma asigur ca datele sunt de actualitate, deoarece furnizorul s-a schimbat.
– Sub grid-ul de articole (ArticleGridView) se afla un alt tabel care are ca scop introducerea de articole noi. Introducerea se face prin apasare de buton, prin
chemarea metodei btnAddArticle_OnClick. Se instantiaza un nou linq to sql data context dupa se iau date din tabelul de inserare de articol nou, se creaza o entitate
Article noua si se introduce in baza de date.
– Sub grid-ul de componente se afla alt tabel care are ca scop inserarea a unei noi componente in tabelul de componente pentru articolul curent selectat.
Pentru aceasta se apeleaza metoda btnAddComponent_OnClick la apasarea butonului de adaugare a unei componente. Se indentifica id-ul articolului curent selectat
dupa care se instantiaza un nou linq to sql data source. se instantiaza o noua clasa Component, se adauga atributele code si description dupa care se introduce in baza de date.
Instantiez un CurrentStock nou, adaug id-ul componentei nou create si adaug un stoc, inserez in baza de date si salvez. Acum instantiez un ArticleComponent pentru a
face legatura dintre articol si componenta, la aceasta ii dau id-ul articolului si id-ul componentei dupa care inserez in baza de date.In functie de ce furnizor
este selectat in dropdowlist-ul de furnizori, adaug un stoc pentru componenta nou creata si in tabelul de furnizori (folosind id-ul componentei)). La sfarsitul acesstei
actiuni reinitializez gridul de compoente ca sa ma asigur ca datele sunt actualizate. La gridul de componente la evenimentul de OnRowDeleting este atasata metoda
ComponentsGridView_OnRowDeleting, care se ocupa de stergerea unei compoente (legata de un articol) din baza de date.
Se instantiaza un nou linq to sql datacontext, selectez id componentei de unde am dat delete dupa care fac o interogare in baza de date dupa
id-ul componentei respective (in tabelul ArticleComponent) dupa care se sterge efectiv legatura dintre componenta si articol din baza de date. Dupa ce am dat delete, reinitializez gridul de componente petru a avea datele actualizate.
ManageOrders.aspx
– Aceasta pagina are ca rol gestionarea comenzilor facute de toti utilizatorii care au acces la aplicatie si au facut o comanda.
– In evenimentul de Page Load al paginii ManageOrders se apeleaza Page_Load din parinte (AbstractPage.) pentru a ne asigura ca meniul este initializat in mod corespunzator pentru fiecare utilizator in parte.
– Se apeleaza metoda checkAuth din parinte careia i se da ca si parametru rolul de admin, pentru a ne asigura ca la aceasta pagina au aces doar utilizatori cu rolul de administrator.
– Daca pagina este la primul apel, se apeleaza metoda InitOrdersGridView care are ca scop initializarea grid-ului in care se vor afisa comenzile pentru fiecare utilizator in parte.
– metoda InitOrdersGridView are ca scop initializarea grid-ului in care se vor afisa comenzilor inregistrare de fiecare utilizator in parte.
Acesta se face instantiind un nou context linq to sql, dupa care se interogheaza efectiv baza de date, mai exact tabelul ClientOrders din care se sustrage toate datele. De asemenea se mai fac alte doua subinterogari pentru a prelua adresa de email respectiv numele fiecarui utilizator.
– Rezultatul se ataseaza grid-ului si se apeleaza metoda DataBind din grid pentru a atasa rezultatul in grid.
– Fiecare rand din tabelul de comenzi are o coloana cu starea curenta a comenzii sub forma unui dropdownlist. Dropdownlist-ul acesta face un postback automat, in urma caruia se va apela metoda CurrentState_OnSelectedIndexChanged ca rezultat al selectarii unei valori din dropdown. Se identifica randul din care s-a schimbat valoarea comenzii. Folosind index-ul randului, identificam dropdowlist-ul corespunzator, urmand sa apelam metoda UpdateStatus careia i se va da ca parametru id-ul din baza de date a comenzii si id-ul statusului nou.
Se instantiaza un nou context linq to sql dupa care se face un update in baza de date in care se va schimba efectiv starea comenzii.
– metoda CurrentState_OnPreRender se apeleaza inainte sa se "deseneze" (randeze) fiecare dropdownlist din fiecare rand al grid-ului de comenzi.
Din coloana de status din grid-ul de comenzi(aceasta este pusa pe visible="false") se preia valoarea comenzii curente, si se seteaza valoare aceasta in dropdownlist-ul de status a comenzii.
ManageUsers.aspx
-Aceasta pagina este destinata management-ului de utilizatori din aplicatie (exclusiv pentru administratori)
– La Page_Load apelam metoda Page_Load din parinte (pentru a ne asigura ca meniul este corect instantiat pentru fiecare tip de utilizator in parte)
– se apeleaza metoda checAuth din parinte careia i se da ca tip de validare tipul de utilizator administrator (Roles.Admin), pentru a restrictiona accesul doar utilizatorului de tip administrator
– Grid-ului de utilizatori face operatii de editare, stergere in mod automat, acestuia fiind atasat un linqtosql DataSource.
Partea de utilizator simplu:
Articles.aspx
– in Page_Load al acestei pagini se apeleaza Page_Load din parinte pentru a ne asigura ca meniul este corect instantiat pentru fiecare tip de utilizator in parte
– se apeleaza metoda checkAuth din parinte cu parametrul Roles.Regular, care permite accesul in aceasta pagina doar utilizatorlor simpli
– O data ce selectam un articol din gridview-ul de articole, se apeleaza metoda GridView1_SelectedIndexChanged, in care se apeleaza metoda InitComponentsDetails, care ne asigura o afisare corecta a tuturor componentelor din care este alcatuit un articol(aceasta afisare se face in alt tabel)
Se preia id-ul articolului curent selectat dupa care se instantiaza un context de tip linqtosql. Se selecteaza toate componentele din care sunt alcatuite un articol dupa care rezultatul query-ului este atasat la gridview-ul de componente (ComponentGridView), se apeleaza DataBind() pentru a atasa rezultatele de gridview.
– In fiecare rand din tabelul de articole, avem un buton prin care putem plasa o comanda. Cand apasam acest buton, se va apela metoda ArticleGridView_OnRowCommand. In aceasta metoda se detecteaza id-ul articololui care se doreste comandat si cantitatea acestuia. Ulterior se apeleaza metoda OrderArticle careia i se da id-ul articolului si cantitatea dorita. In aceasta metoda se instantiaza un nou context linqtosql.
Se selecteaza din baza de date toate componentele din care sunt alcatuite un articol, dupa care se verifica pentru fiecare componente in parte daca compoenta este sau nu pe stoc. Daca toate componentele sunt pe stoc se face o comanda pentru client dupa care se face automat si o comanda de productie pentru articolul respectiv (stocul se va decrementa cu cantitatea comandata). Daca componentele nu sunt pe stoc, se va face automat o comanda de aprovizionare pentru componentele respective (stocul furnizorului se va decrementa cu cantitatea comandata) .
Orders.aspx
– Pagina aceasta are ca rol afisarea comenzilor date de catre utilizatorul curent logat
– La Page_Load-ul acestei pagini, se apeleaza Page_Load din parinte, care ne asigura ca meniul este corect instantiat pentru fiecare utilizator in parte
– se apeleaza checkAuth careia i se da parametru Roles.Regular, astfel doar utilizatorii simpli au acces la aceasta pagina.
– se apeleaza InitOrdersGridView, aceasta metoda are rolul de a initializa gridview-ul in care se vor afisa comenzile pentru utilizatorul curent.
Se instantiaza un nou context linq to sql dupa care se interogheaza baza de date pentru preluarea tuturor comenzilor cu conditia ca comanda sa fie data de clientul curent.
CONCLUZII
Devine evident faptul că un business de succes, care, prin esenta, aduce o stare economica prosperă in companie, nu poate fi relaizat fără o bună planificare și gestiune a resurselor interne ale firmei sau a relațiilor cu clienții. Devine cert interesul ridicat al intreprinderilor, indiferent de dimensiunea acestora, pentru gestiunea eficienta, riguroasa și analitică a tot ce reprezinta resursă a intreprinderii – producție, resursă umană, vânzări, contabilizarea finanțelor, dar de asemenea și tot ce include managementul relației cu clienții, cu furnizorii, marketing. Acets lucru pentru ca managerii au ințeles că succesul afacerii depinde, așa cum este normal, de utilizarea tehnicilor moderne de management al resurselor companiei, formula în care pionul principal este bineinteles calculatorul, prin facilitațile oferite de catre un software adecvat.
Valer Roșca, Daniel Hunyadi, „Limbaje moderne de programare: Limbajul C# -ediție revizuită și adăugită”, Editura Universității „Lucian Blaga” Sibiu, 296 pg., ISBN 978-606-12-0622-3, 2013
Valer Roșca, Daniel Hunyadi, „Realizarea aplicațiilor Web în mediul ASP.NET”, Editura Universității „Lucian Blaga” Sibiu, 2014
Martin Christopher, Logistics and Supply Chain Management ePub eBook: Edition 4- 2013
http://202.74.245.22:8080/xmlui/bitstream/handle/123456789/229/Martin_Christopher_Logistics_and_Supply_Chain_Management,_4th_Edition____2011.pdf?sequence=1
John J. Coyle, C. J. Langley, Brian J. Gibson, Edward J. Bardi – Supply Chain Management A Logistics Perspective. – Australia – South-Western Pub – 2008 – 8th Ed.
https://books.google.ro/books?id=dbMKAAAAQBAJ&printsec=frontcover&dq=logistics+and+supply+chain+management&hl=en&sa=X&ei=OzV3VeraNuW17gaazoPAAw&sqi=2&redir_esc=y#v=onepage&q=logistics%20and%20supply%20chain%20management&f=false
http://www.w3schools.com/asp/default.asp
http://dexonline.ro
Dumitru Oprea, Dinu Airinei, Marin Fotache (coordonatori), ,,Sisteme informaționale pentru afaceri”, Editura Polirom, Iași, 2002;
Bășanu, Gh.; Pricop, M. Managementul aprovizionării și desfacerii,ed.a III a, Ed. Economică, București, 2004
http://www.biblioteca-digitala.ase.ro/biblioteca/carte2.asp?id=94&idb=
Doina Fotache, ,,Produse program integrate de gestiune a firmelor. Piața româneasca de software ERP și de software financiar-contabil”, Tribuna Economică nr. 36/2001;
http://www.microsoft.com/
https://msdn.microsoft.com/en-us/default.aspx
http://stackoverflow.com/
http://ro.wikipedia.org/wiki/Pagin%C4%83_web
http://ro.wikipedia.org/wiki/C_sharp
http://ro.wikipedia.org/wiki/ASP.NET
http://ro.wikipedia.org/wiki/HyperText_Markup_Language
http://ro.wikipedia.org/wiki/Cascading_Style_Sheets
Valer Roșca, Daniel Hunyadi, „Limbaje moderne de programare: Limbajul C# -ediție revizuită și adăugită”, Editura Universității „Lucian Blaga” Sibiu, 296 pg., ISBN 978-606-12-0622-3, 2013
Valer Roșca, Daniel Hunyadi, „Realizarea aplicațiilor Web în mediul ASP.NET”, Editura Universității „Lucian Blaga” Sibiu, 2014
Martin Christopher, Logistics and Supply Chain Management ePub eBook: Edition 4- 2013
http://202.74.245.22:8080/xmlui/bitstream/handle/123456789/229/Martin_Christopher_Logistics_and_Supply_Chain_Management,_4th_Edition____2011.pdf?sequence=1
John J. Coyle, C. J. Langley, Brian J. Gibson, Edward J. Bardi – Supply Chain Management A Logistics Perspective. – Australia – South-Western Pub – 2008 – 8th Ed.
https://books.google.ro/books?id=dbMKAAAAQBAJ&printsec=frontcover&dq=logistics+and+supply+chain+management&hl=en&sa=X&ei=OzV3VeraNuW17gaazoPAAw&sqi=2&redir_esc=y#v=onepage&q=logistics%20and%20supply%20chain%20management&f=false
http://www.w3schools.com/asp/default.asp
http://dexonline.ro
Dumitru Oprea, Dinu Airinei, Marin Fotache (coordonatori), ,,Sisteme informaționale pentru afaceri”, Editura Polirom, Iași, 2002;
Bășanu, Gh.; Pricop, M. Managementul aprovizionării și desfacerii,ed.a III a, Ed. Economică, București, 2004
http://www.biblioteca-digitala.ase.ro/biblioteca/carte2.asp?id=94&idb=
Doina Fotache, ,,Produse program integrate de gestiune a firmelor. Piața româneasca de software ERP și de software financiar-contabil”, Tribuna Economică nr. 36/2001;
http://www.microsoft.com/
https://msdn.microsoft.com/en-us/default.aspx
http://stackoverflow.com/
http://ro.wikipedia.org/wiki/Pagin%C4%83_web
http://ro.wikipedia.org/wiki/C_sharp
http://ro.wikipedia.org/wiki/ASP.NET
http://ro.wikipedia.org/wiki/HyperText_Markup_Language
http://ro.wikipedia.org/wiki/Cascading_Style_Sheets
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Implementarea Sistemului In Procesul DE Fabricatie (ID: 141052)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
