Sunteți pe pagina 1din 10

Partea 1 Proiectarea formularelor pentru clasa de tranzacii Intrare materiale prin cumprare 1.

Definirea scenariilor i a sarcinilor de lucru ale utilizatorilor


Scenariul 1. Introducerea unei cumprri noi. Sarcinile de lucru sunt urmtoarele: Completarea datelor de individualizare a documentului nsoitor (tipul, numrul i data); Selectarea furnizorului. Utilizatorul introduce codul furnizorului dup care va verifica dac numele acestuia corespunde. n cazul n care utilizatorul nu tie codul furnizorului, atunci el va selecta numele acestuia din lista furnizorilor; Adugarea unui nou furnizor (dac furnizorul dorit nu exist n baza de date); Completarea datelor privind mijlocul de transport; Selectarea tipului de tranzacie dorit (dac este achiziionare cu sau fr factur); Adugarea recepiilor corepunztoare documentului de nsoire. Aceast sarcin va fi reluat pentru fiecare recepie. Completarea datelor generale ale recepiei (numrul i data recepiei, alegerea gestiunii pentru care este ntocmit recepia); Adugarea articolelor de pe recepie. Aceast sarcin va fi reluat pentru fiecare articol de pe recepie; Selectarea materialului. Utilizatorul introduce codul materialului dup care va verifica dac este corect. n cazul n care utilizatorul nu tie codul materialului sau acesta este incorect, atunci el va selecta materialul respectiv dintr-o list cu toate materialele; Adugarea unui material nou (dac materialul respectiv nu se gsete n list); Completarea datelor privind cantitatea i preul materialului respectiv de pe recepie; Verificarea totalului de pe recepie; Verificarea corectitudinii datelor introduse de pe documentul nsoitor. Se verific n special valoarea TVA i totalul documentului. Dac se constat unele diferene, atunci se verific detaliile de pe document. Corectarea valorii TVA. Dac valoarea TVA calculat difer de cea de pe factur, atunci se modific valoarea TVA sugerat (calculat) conform sumei nscrise pe document. Salvarea cumprrii. Scenariul 2. Adugarea unei recepii la un document nsoitor existent. Sarcinile de lucru sunt urmtoarele: Selectare document nsoitor. Cutarea documentului nsoitor poate fi fcut n funcie de tipul, numrul sau data documentului, numele furnizorului. Adugarea recepiei (n continuare se execut sarcinile de lucru descrise la scenariul 1). Salvarea recepiei. Scenariul 3. Modificarea datelor de pe o recepie. Sarcinile de lucru sunt urmtoarele: Cutare recepie. Cutarea unei recepii poate fi fcut n funcie de documentul nsoitor pe baza cruia a fost ntocmit recepia (vezi prima sarcin de lucru de la scenariul 2), numrul recepiei, data recepiei, gestiunea pentru care a fost emis. Modificarea datelor de pe recepie. Se pot ivi urmtoarele situaii: nlocuirea (schimbarea) gestiunii, adugarea unui articol nou, tergerea unui articol de pe recepie, nlocuirea unui material, modificarea preului sau a cantitii. Validare modificri sau abandonare modificri. Modificarea gestiunii sau a cantitii unui material de pe recepie nu poate fi efectuat atunci cnd stocul ar deveni negativ prin acceptarea modificrilor. Scenariul 4. Utilizatorul dorete s storneze o recepie. Sarcinile de lucru sunt urmtoarele:

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

Figure 1. Formularul de nregistrare a receptiilor: pagina pentru preluarea documentelor nsoitoare.

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

GrdLiniifact LblStare BtnAddDoc BtnModDoc BtnStgDoc BtnSave BtnCancel

7 8 9

LblTotalFact OptGroupCeCaut TxtCauta GrdReceptii

10 11 12 13 14

GrdArtReceptii ChkToateRec BtnAddRec BtnStgRec BtnStornRec BtnAddArt BtnStgArt LblNrFact LblNrAviz

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.)

Partea a 2-a Proiectarea raportului Fie de magazie


Raportul este destinat evidenei cantitativ-valorice a materiilor prime i materialelor, fiind necesar ntr-o form ct mai apropiat de formatul prestabilit, anexat acestui document. Raportul se obine pentru fiecare material din fiecare gestiune, dintr-o fereastr iniial alegndu-se parametrii: ChkAllGest, ChkAllMat, CboGestiune, CboMaterial.

Obiectele ferestrei sunt: Obiect Tip ChkAllGest CheckBox

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.

Partea a 3-a Proiectarea unui modul de rapoarte dinamice


Pentru informaiile specifice nomenclatoarelor i datelor ce se pot calcula pentru fiecare rnd din acestea, rapoartele nu au ntotdeauna o form prestabilit i de aceea utilizatorul trebuie s aib posibilitatea s i personalizeze ct mai mult raportul: - s aleag cmpurile care s apar; - s aleag cmpurile dup care s se fac ordonarea; - s introduc filtre prestabilite; - s introduc filtre generalizate; - s introduc titlul raportului; - s aleag imprimanta la care se trimite raportul; - s salveze dac dorete raportul sub un format electronic. Modulul de rapoarte dinamice trebuie gndit n aa fel n ct s nu fie fcut pentru un anumit nomenclator sau pentru o anumit tem. Obiectele ferestrei sunt: Obiect Rapoarte AllFields OrderFields UseFields Imprimanta Tip OptionGrup ListBox ListBox ListBox CheckBox Observaii Conine toate rapoartele ce se pot realiza cu modulul de rapoarte universale. La modificarea valorii selectate se reumplu obiectele: AllFields, OrderFields, UseFields. Conine toate cmpurile ce ar putea fi folosite n raport i se umple cu date din dicionarul de date. Conine cmpurile dup care trebuie s se ordoneze datele n raport i se umple iniial cu date din dicionarul de date. Conine cmpurile ce trebuie folosite n raport i se umple iniial cu date din dicionarul de date. Default value = 0 In cazurile: caz:value = 0, atunci: raportul se previzualizeaz; caz:value = 1, atunci: se d posibilitatea alegerii imprimantei. Default value = 0 In cazurile: caz:value = 0, atunci: raportul nu se salveaz caz:value = 1, atunci: raportul se salveaz i trebuie s apar o fereastr Save As pentru ca utilizatorul s aleag numele fiierului i calea de directoare. La apsarea lui rndurile selectate din AllFields vor apare i n OrderFields La apsarea lui rndurile selectate din OrderFields vor fi terse La apsarea lui rndurile selectate din AllFields vor apare i n UseFields La apsarea lui rndurile selectate din UseFields vor fi terse n acest obiect ar putea fi introduse de ctre utilizatori avansai orice condiii cu sintaxa condiiilor de la clauza Where a comenzii Select din SQL.

Excel

CheckBox

AddField DeleField AddField2 DeleField2 Filtru

Button Button Button Button EditBox

Titlu

EditBox

Conine titlul raportului. Iniial poate fi propus un nume luat din dicionarul de date.

Fereastra de dialog pentru configurarea rapoartelor dinamice ar putea fi:

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

Raportul va conine: Page header:

Group GestCod Header

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

S-ar putea să vă placă și