letomuadib Posted April 7, 2015 Report Posted April 7, 2015 Pentru evidenta stocurilor la un magazin m-am gandit la urmatoarea regula:Stoc Final = Stoc Initial + Intrari -Iesiri, iar pentru fiecare produs exista cheia principala formata din CodProdus,DataIntr,PretIntrare.Campul Intrari va fi suma intrarilor din facturile de achizitii, iar campul Iesiri va fi suma iesirilor din facturile emise, bonurile de consum etc pentru respectivul produs identificat pe baza cheii principale.Exista o varianta mai buna?Multumesc. Quote
Guest limbric_mic Posted April 7, 2015 Report Posted April 7, 2015 Din punctul meu de vedere, mi se pare bine organizat, la iesiri, cand gen se preia (a)Cod_Produs, Data_Intr, Pret_Intrare .. poti sa incerci sa faci sa returneze si un (a) + Data_Vanzare, si pe aceasta baza, faci gen update per zi si te-ar ajuta sa mentii un minim de produse.De asemenea ar merge si o statistica pe produse; numar de vazari .. pentru a te ajuta mai usor la cumpararea lor mai rapid pentru vanzare. Quote
kNigHt Posted April 7, 2015 Report Posted April 7, 2015 Ma raportez strict la asta, nu am inteles foarte bine ce ai spus in rest: "Stoc Final = Stoc Initial + Intrari -Iesiri"Eu as vedea-o asa:Tabel produse: id_produs, stoc_initial, alte_campuri_pentru_produsul_tauTabel intrari: id_intrare, id_produs, cantitate_intrata, data_intrareTabel iesiri: id_iesire, id_produs, cantitate_iesita, data_iesireFaci sumele intr-un query si aia e, iar cand faci update la stoc_initial din tabelul "produse", golesti tabelele de "intrari" si "iesiri". Quote
FreddieTux Posted April 8, 2015 Report Posted April 8, 2015 Presupun ca vrei o baza de date relationala, asta inseamna ca nu poti avea campuri calculate, decat daca vrei sa o denormalizezi (ma refer la sumele intrarilor si iesirilor).Iti recomand varianta lui kNigHt cu doua mici adaugiri. Mai intai ai nevoie de un camp denumit "cost" in "produse" si in "intrari", pentru ca ai nevoie de el atunci cand descarci din gestiune. Eventual poti pune si in tabela "iesiri", pentru ca e destul de greu sa il calculezi de fiecare data cand vrei sa afli o anumita iesire din luna respectiva, asa ca poti folosi argumentul asta ca sa pui ceea ce e, de fapt, un camp calculat. Apoi vei mai avea nevoie de un trigger pe tabela "iesiri" astfel incat sa nu poti vinde ceea ce nu ai pe stoc.In ceea ce priveste golirea tabelelor de intrari si iesiri, poti face asta, de asemenea, poti sa stochezi datele in doua tabele de istoric sau poti sa le lasi asa, dar cand descarci din gestiune sa fii atent la luna in care se face descarcarea. Quote
letomuadib Posted April 8, 2015 Author Report Posted April 8, 2015 Aceasta formula pentru a tine evidenta stocurilor am folosit-o atat in Foxpro, cat si in VB.net, folosind tabele distincte si tranzactii pentru facturile de intrari, iesiri, bonuri de consum, pv de majorare-diminuare pret si o tabela separata pentru stoc.Tabela pentru stoc este "sinteza" celor de intrari/iesiri.Tabela pentru iesiri contine si "descarcarea de gestiune", adica daca dintr-un produs P ies 10 bucati si in tabela stoc respectivul produs are 3 poziti diferite ( 4 buc la pret intrare =1.10, 2 buc la pret intrare=1.15 si 8 buc la pret intrare=1.19 ), atunci in tabela de iesiri vom avea tot 3 pozitii, 4x1.10 , 2x1.15 si 4x1.19.Intrebarea mea este daca exista o varianta mai buna de proiectare a tabelelor.Multumesc. Quote