Documente Academic
Documente Profesional
Documente Cultură
Cutare recepie (vezi prima sarcin de lucru de la scenariul 3). Stornare recepie. Validare stornare recepie sau abandonare stornare recepie n cazul apariiei unor erori. Recepia nu poate fi stornat dac este singura recepie pentru un document nsoitor sau stocul este consumat parial sau total. Scenariul 5. Introducerea unei facturi sositecu ntrziere, pentru care recepiile sunt deja introduse. Sarcinile de lucru sunt urmtoarele: Completarea datelor de individualizare a facturii (numrul i data facturii). Selectarea documentului de nsoire pe baza cruia s-a fcut iniial recepia (de regul avizul de nsoire). Cutarea documentului poate fi fcut n funcie de tipul, numrul sau data documentului, numele furnizorului. Vor fi afiate pentru selectare doar avizele de nsoire care nu au factura. Verificarea corectitudinii datelor din factur (vezi penultima sarcin de lucru de la scenariul 1). Corectarea valorii TVA (vezi ultima sarcin de lucru de la scenariul 1). Salvarea facturii. Scenariul 6. Vizualizarea recepiilor. Sarcinile de lucru sunt urmtoarele: Filtrare recepii. n funcie de criteriul de filtrare dorit, se va realiza una din sarcinile de lucru urmtoare: Specificarea perioadei de timp, n cazul n care se dorete afiarea recepiilor operate ntr-o perioad anume. Selectare document nsoitor, n cazul n care se dorete vizualizarea recepiilor corespunztoare unui document nsoitor (vezi prima sarcin de lucru de la scenariul 2). Specificarea numrului recepiei, dac se dorete vizualizarea unei singure recepii. Specificarea gestiunii pentru care se vor vizualiza recepiile. Specificarea materialului pentru care se vor vizualiza recepiile. Cutarea recepiei poate fi fcut n funcie de o anumit perioad, numrul sau data recepiei, gestiunea pentru care a fost ntocmit, documentul nsoitor pe baza creia a fost ntocmit. Scenariul 7 Utilizatorul dorete s vizualizeze un document nsoitor. Sarcinile de lucru sunt urmtoarele: Filtrare documente nsoitoare. n funcie de criteriul de filtrare dorit, se va realiza una din sarcinile de lucru urmtoare: Specificarea perioadei de timp. Selectarea furnizorului. Specificarea tipului i a numrului documentului. Cautarea documentului poate fi realizat n funcie de o anumit perioad, tipul documentului, numrul sau data documentului, furnizorul de la care a fost primit, documentul corespondent (pentru facturile ntrziate), o recepie ce a fost ntocmit pe baza lui. 2. Identificarea i definirea obiectelor i aciunilor formularului a) Stabilire dimensiune standard (800x600); b) Identificarea surselor de date necesare functionarii formularului(tabelele utilizate pentru cumparare sunt DOC_INSOTITOR, RECEPTIE, ART_RECEPTIE, FURNIZOR, MATERIAL, GESTIUNE, NOM_TRANZ); c) Stabilire modalitate de afiare date, alegerea controalelor potrivite (grid-uri pentru datele din tabele datorit uurinei de utilizare final). Ca regul general, pentru cmpurile ce constituie cheie strin n tabelele copil vom alege controale de tip ComboBox ce vor cuprinde elemente din tabela printe, pentru cmpurile de tip logic (.T. sau .F.) vom alege CheckBox-uri, etc. d) Sincronizarea controalelor cu sursele de date (tabelele de baz ce intervin la cumparare);
e) Adaugarea butoanelor ce vor asigura funcionalitatea formularului si efectuarea tranzaciilor; f) Implementarea comportamentului diverselor obiecte de pe formular g) Rafinarea formularului: 1. adugarea unor informaii suplimentare (diverse sume totale, luna curent de lucru, etc); 2. linia curent dintr-un obiect de tip grid va avea o alt culoare tocmai pentru a scoate in eviden localizarea curent a controlului la un moment dat; 3. asigurarea unei funcionaliti totale a formularului prin utilizarea exclusiv a tastaturii (combinaiile de taste se recomand s fie identice pentru operaiuni identice ca spre ex: adaugare-CTRL+Z-, modificare CTRL+M- etc; trebuie s fie bine definit ordinea n care obiectele primesc controlul la apsarea tastei TAB sau ENTER). h) Facilitati de utilizare propuse: 1. ordonarea documentelor insotitoare dup oricare din cmpuri ; 2. filtrarea documenteleor pentru orice perioad, aleator aleas ; 3. utilizatorul va avea posibilitatea efecturii de cutri dup numrul facturii al avizului sau al recepiei Mai nti de toate trebuie s precizm c utilizatorul nu poate efectua nici o modificare (coloanele tuturor grid-urilor din formular sunt ReadOnly) dac nu apas butonul de modificare. n momentul n care se intr n faza de actualizare a date (modificare, adugare, tergere) se produc urmtoarele modificri de comportament la nivelul formularului: - n pagina Facturi/Avize controlul este blocat pe linia curent din grid (care devine editabil); - dac utilizatorul deplaseaz controlul pe ultima coloan a grid-ului i apas tasta (sgeata la dreapta) controlul trece automat pe pagina urmtoare. - n pagina Receptii avem acces numai la recepiile documentului nsoitor curent (checkbox-ul notat cu 11 n figura2 devine inactiv); validarea modificrilor se face prin apsarea butonului SALVARE 1 8
3 5 6 7
14
11
12 9
10 13
Figure 2. Formularul de nregistrare a receptiilor: pagina pentru nregistrarea recepiilor aferente facturii/avizului curent.
Nr. Obiect* 1 2
Tabel 1 Semnificaia obiectelor de pe formularul de nregistrare a cumprrilor Denumire Comentarii TxtDataInit TxtDataFin GrdDocInsotitor Cele doua textbox-uri vor fi utilizate pentru afiarea doar a acelor documente care corespund (d.p.d.v. al datei operrii) perioadei specificate Grid-ul pentru afiarea documentelor nsoitoare. Sursa de date o constituie tabelele Doc_Insotitor, Furnizor, Nom_tranz. La un click de mouse pe titlul oricrei coloane, datele se ordoneaz ascendent dup valorile din coloana respectiv Linia curent are alt culoare.Coloanele sunt Read-Only dac utilizatorul nu a specificat nceputul unei tranzacii noi(adugare, modificare, stergere). Coloana DATA OPERARE este permanent Read-Only. Grid Read-Only ce are ca surs un cursor care nsumeaza cantitile din fiecare produs de pe toate recepiile corespunztoare unei facturi sau aviz de expediie Este utilizat pentru afiarea modului de lucru n care se afl utilizatorul la un moment dat (va afia adaugare date, Modificare Date sau Vizualizare Date). Butoane pentru adugare, modificare, tergere documente nsoitoare Butoane pentru validarea sau anularea unei tranzacii.
3 4 5 6
7 8 9
10 11 12 13 14
Label ce totalizeaz valoric recepiile aferente unui anumit document nsoitor Grup de cutare a unei facturi, aviz sau recepie (n funcie de opiunea bifat) dup numrul documentului. Grid ce are ca surs tabela Recepii, filtrat pentru a afia doar recepiile aferente documentului nsoitor curent (linia curent din grid-ul GrdDocInsotitor din pagina Facturi/Avize). Data operarii este Read-Only. Articolele de pe recepia curent(linia curent din GrdReceptii). Are ca surs un view parametrizat (Vartreceptii) pe tabela ArtRecepii Dac este bifat afieaz toate recepiile indiferent de documentul nsoitor curent). Nu este activ (i este debifat) n cazul modificrilor(existena unei tranzacii n curs) Butoane de adugare/stergere/stornare receptii Butoane de adugare/tergere articole recepionate
Numrul facturii i al avizului anterior(dac este cazul). n cazul existenei unui aviz anterior se precizeaz n parantez pentru numrul de factur respectiv(ntrziat) *Numrul obiectelor corespunde notaiilor din figurile 1 i 2
*View pentru articolele receptionate idrec_="1111" && variabila initializata cu o valoare aleatoare in scopul functionarii codului ce urmeaza create sql view Vartreceptie as ; select * from art_receptie where Idreceptie=idrec_ dbsetprop('Vartreceptie','view','tables','art_receptie ') dbsetprop('Vartreceptie.Idreceptie','field','keyfield',.t.) dbsetprop('Vartreceptie.matcod','field','keyfield',.t.) dbsetprop('Vartreceptie.Idreceptie','field','updatename','art_receptie.idreceptie') dbsetprop('Vartreceptie.matcod','field','updatename','art_receptie.matcod') dbsetprop('Vartreceptie.Arcantitate','field','updatename','art_receptie.Arcantitate') dbsetprop('Vartreceptie.Arpret','field','updatename','art_receptie.Arpret') dbsetprop('Vartreceptie.Idreceptie','field','updatable',.t.) dbsetprop('Vartreceptie.matcod','field','updatable',.t.) dbsetprop('Vartreceptie.Arcantitate','field','updatable',.t.) dbsetprop('Vartreceptie.Arpret','field','updatable',.t.) dbsetprop('Vartreceptie', 'view', 'SendUpdates', .t.)
ChkAllMat
CboGestiune
CboMaterial
Observaii Default value = 0 In cazurile: caz:value = 0, atunci: CboGestiune este disponibil i raportul se va face pentru gestiunea selectat n acest obiect; caz:value = 1, atunci: CboGestiune nu este disponibil i raportul se va face pentru toate gestiunile. CheckBox Default value = 0 In cazurile: caz:value = 0, atunci: CboMaterial este disponibil caz:value = 1, atunci: CboMaterial nu este disponibil DropdownList Se umple cu datele din interogarea urmtoare: Select GestDen, GestCod From Gestiune Order By GestDen Valoarea sa va fi dat de a doua coloan din selecie. La modificarea valorii selectate se reumple CboMaterial doar cu materialele din gestiunea selectat. DropdownList Se umple cu datele din interogarea urmtoare: Select MatDen, m.MatCod From Material m, Stocuri s Where m.MatCod = s.MatCod And GestCod = CboGestiune Order by MatDen Valoarea sa va fi dat de a doua coloan din selecie.
Interogarea raportului:
Select MatCod, GestCod, { / / } as Data,'S i' as TipDoc,; Space(6) as NrDoc,MatStociAn as Cant,; AflaCMP(MatCod,Year(Date()),1) as PU; From Stocuri s; Into Cursor c1; Where iif(ChkAllGest = 0, s.GestCod = CboGestiune,.t.); And iif(ChkAllMat = 0, s.MatCod = CboMaterial,.t.); Union; Select MatCod, GestCod, RecData, 'REC', RecNr, ArCantitate, ArPret; From Receptie r, Art_Receptie a; Where r.IdReceptie = a.IdReceptie; And iif(ChkAllGest = 0, r.GestCod = CboGestiune,.t.); And iif(ChkAllMat = 0, a.MatCod = CboMaterial,.t.); Union; Select MatCod, GestCod, ConsDataDoc, ConsTipDoc, ConsNrDoc,; -AcCantitate, AflaCMP(MatCod,Year(ConsDataDoc),Month(ConsDataDoc)); From Consum c, Art_Consum a;
Where c.IdConsum = a.IdConsum; And iif(ChkAllGest = 0, c.GestCod = CboGestiune,.t.); And iif(ChkAllMat = 0, a.MatCod = CboMaterial,.t.); Union; Select MatCod, GestCodD, TrDataDoc, 'TRD', TrNrDoc,; AtCantitate, AflaCMP(MatCod,Year(TrDataDoc),Month(TrDataDoc)); From Transfer t, Art_Transfer a; Where t.IdTransfer = a.IdTransfer; And iif(ChkAllGest = 0, t.GestCodD = CboGestiune,.t.); And iif(ChkAllMat = 0, a.MatCod = CboMaterial,.t.); Union; Select MatCod, GestCodS, TrDataDoc, 'TRS', TrNrDoc,; -AtCantitate, AflaCMP(MatCod,Year(TrDataDoc),Month(TrDataDoc)); From Transfer t, Art_Transfer a; Where t.IdTransfer = a.IdTransfer; And iif(ChkAllGest = 0, t.GestCodS = CboGestiune,.t.); And iif(ChkAllMat = 0, a.MatCod = CboMaterial,.t.) Select C1.MatCod, MatDen, C1.GestCod,; GestDen, Data,TipDoc,NrDoc,Cant, PU; From C1, Material m, Gestiune g; Into Cursor C1; Where C1.MatCod=m.MatCod; And C1.GestCod = g.GestCod
AflaCMP este o funcie ce are parametrii MatCod_, An_ i Luna_ i care trebuie s citeasc din tabela MaterialCMP ultimul Cmp existent pentru respectivul material cu interogarea: Select MatCmp,
Max(MatAn*12+MatLuna); From MaterialCmp; Where MatCod = MatCod_; And MatAn*12+MatLuna <= An_ * 12+Luna_
Raportul va conine: Page header: Group GestCod Header Group MatCod Header Detail Group MatCod Footer Formatul raportului:
Titlul raportului: Fise de magazie, data realizrii raportului Codul i numele gestiunii: GestCod, GestDen Codul i numele materialului: MatCod, MatDen i capul de tabel: Data doc., Nr. doc., Tip doc., Cantitate, Pre unitar corespunztor cmpurilor de la Detail. Cmpurile interogrii raportului: Data, NrDoc, TipDoc, Cant, Pu Stocul curent: suma cmpului Cant pentru respectivul MatCod.
Excel
CheckBox
Titlu
EditBox
Conine titlul raportului. Iniial poate fi propus un nume luat din dicionarul de date.
Proiectarea Raportului Balana analitic a materialelor Sursa de date a raportului este cursorul c1 realizat astfel:
Select m.MatCod,m.MatDen,m.MatUm,m.MatCont,; AflaCMP(m.MatCod,Year(Date()),Month(Date())) as CmpCrt,; s.MatStocILuna as StocILuna,s.MatStocCrt as StocCrt,; s.MatStocIAn as StocIAn,; g.GestCod,g.GestDen; From Material m, Stocuri s, Gestiune g; Into Cursor c1; Where m.MatCod = s.MatCod; And s.GestCod=g.GestCod; Group By m.MatCod, s.GestCod Select MatCod,GestCod,SUM(ArCantitate) as CantRec; From Receptie r, Art_receptie ar; Into Cursor c2; Where r.IdReceptie=ar.IdReceptie; Group By MatCod,GestCod Select MatCod,GestCod,SUM(AcCantitate) as CantCons;
From Consum c, Art_consum ac; Into Cursor c3; Where c.IdConsum=ac.IdConsum; Group By MatCod,GestCod Select MatCod,GestCodS,GestCodD,SUM(AtCantitate) as CantTransf; From Transfer t, Art_Transfer at; Into Cursor c4; Where t.IdTransfer=at.IdTransfer; Group By MatCod,GestCodS,GestCodD Select c1.*,NVL(CantRec,0) as CantRec,NVL(-CantCons,0) as CantCons,; NVL(c4.CantTransf,0) as IntrTransf,NVL(-c5.CantTransf,0) as IesitTransf; From c1 left outer join c2 on ; c1.MatCod=c2.MatCod and c1.GestCod=c2.GestCod; left outer join c3 on ; c1.MatCod=c3.MatCod and c1.GestCod=c3.GestCod; left outer join c4 on ; c1.MatCod=c4.MatCod and c1.GestCod=c4.GestCodD; left outer join c4 c5 on ; c1.MatCod=c5.MatCod and c1.GestCod=c5.GestCodS; Into Cursor C1
Detail
Page footer
Va conine: - Sigla; - Titlul raportului luat din formularul de configurare; - GestCod i GestDen luate din sursa de date a raportului. Pentru fiecare nou grup al raportului se trece la o nou pagin. Capul de tabel al raportului cu: - numrul curent; - denumirea, codul materialului ; - celelalte cmpuri alese din formularul de configurare. Va conine: - NrCrt variabil a raportului ce numr elementele din fiecare grup; - MatDen, MatCod; - celelalte cmpuri alese din formularul de configurare. Pagina i data curent
10