* test_s4e_avize.prg * Headless: S4e-5 - extinderea si proba pe avize (tip 4 si 21,25,28,42,47), nota_executie_s4e.md * sectiunea "S4e-5 - extinderea si proba pe avize (tip 4 si 21,25,28,42,47)" (~:479). FARA COD NOU - * repeta probele S4e-4 (test_s4e_registru.prg) pe tip 4 ("factura din avize") si tip 21 (aviz din * comanda), plus o proba suplimentara ceruta explicit de nota: dovada ca o linie LIBERA in crsfactura * NU polueaza pnParametruAditional trimis catre Oracle prin scrie_factura_avize. * * CONSTATARE DE PROIECTARE (verificata pe cod, nu pe descrierea nota): pentru frm_facturare_articole2 * (clasa vizata de S4e - do_scrie_factura la COMUN\clase\ofacturare.vc2:19983-20322), ramura * Case poDate.Tip = 4 (:20059-20074) NU foloseste un Calculate Sum(cantitate) local peste crsarticole * / crsfactura, cum descrie nota - foloseste o functie Oracle server-side, pack_facturare. * exista_ramas_avize_lista(poDate.listaid), care citeste dupa listaid, nu dupa continutul cursoarelor * locale. La fel, ramura Case Inlist(poDate.Tip,3,21,25,28,42,47) (:20096-20107) foloseste * pack_facturare.cantitate_ramasa_comanda(Val(poDate.listaid)). ("Calculate Sum(cantitate)" local * exista doar in copia VECHE, frm_facturare_articole.do_scrie_factura, :14454/:14485 - alta clasa, * nu cea vizata de S4e.) Asertiunile B/C de mai jos dovedesc pe rulare, nu doar pe citirea codului, * ca rezultatul (SQL/suma/pnParametruAditional/dialog) e identic cu si fara linie libera. * * Patru grupe de asertiuni: * A_Tip4 / A_Tip21 (echivalent A2 din test_s4e_registru.prg): do_sterge pe o linie LIBERA lasa * Sum(crsarticole.cantitate) neschimbat; pe o linie de AVIZ/COMANDA creste cantitatea la id_c * respectiv cu exact cantitatea stearsa. Ramura Do Case atinsa (ofacturare.vc2:20436): * "Case (gnScadereStoc=1 And poDate.tip=23) Or Inlist(poDate.tip,3,4,21,25,28,42,47)" - aceeasi * ca la tip 3 (S4e-4), doar poDate.tip difera. * BC_Tip4 / BC_Tip21: asertiune DIRECTA - SQL-ul construit, lnCantitateRamasa, pnFacturaRetur (doar * tip4) si pnParametruAditional sunt IDENTICE intre o rulare cu crsfactura continand doar linii de * aviz/comanda si o rulare cu ACEEASI stare + o linie LIBERA suplimentara (cantitate mare, 999, ca * sa iasa in evidenta orice contaminare). Executa SimulaRamuraTip4/SimulaRamuraComanda - o oglinda * LITERALA a codului de productie citat mai sus (nu apeleaza Thisform.do_scrie_factura, care ar * scrie in Oracle prin do_scrie_articole - risc si scop in afara perimetrului "fara cod nou"). * Captureaza si TEXTUL dialogului + tipul lui (raspunsul implicit e codificat in tnDialogBoxType, * 4+32) prin mock_amessebox.prg (gcMockUltimMesaj/gnMockUltimTip) - PROBA PRIN MOCK, NU DIALOGUL * REAL. Proba manuala pe dialogul real ("Gata cand" oficial al nota) ramane DATORIE DESCHISA - * vezi raport. * * Sablon: test_s4e_registru.prg (S4e-4) + mock_amessagebox din test_s3b_emitere_reala.prg (PUBLIC * gcMockUltimMesaj/gnMockUltimTip). CAPCANA descoperita aici: mock_validare_antet.prg defineste SI * EL amessagebox, iar la nume duplicat de PROCEDURE intre fisiere SET PROCEDURE castiga PRIMUL * fisier din lista (verificat empiric - vezi comentariul de la incarcarea SET PROCEDURE mai jos), * nu ultimul cum spune antetul mock_amessagebox.prg - deci mock_amessagebox.prg trebuie incarcat * PRIMUL. Dupa fiecare Calculate/Sum se face GO TOP IN crsarticole (Calculate muta Recno() la EOF * pe cursorul afectat). * * Rulare: vfp9.exe -A -T "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\test_s4e_avize.prg" * Log: D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_s4e_avize.log * Mediu: ROA_CENTRAL / MARIUSM_AUTO; gnIdUtil = 8 inainte de creeaza_cursor_serii; gnScadereStoc = 1. SET SAFETY OFF SET TALK OFF SET NOTIFY OFF PUBLIC gcLog, gnFail, gnPass, gnErr, gcCaz, gcErr PUBLIC gcMockApeluri, gnMockRaspuns, gcMockDuplicat, gnMockNumar PUBLIC gnPc, gnPVal, gnPPretV, gnScadereStoc, gnMemProcDisc PUBLIC gcMockUltimMesaj, gnMockUltimTip PUBLIC gcUltimSql, gnUltimRamas, gnUltimFacturaRetur, gnUltimParamAditional gnMockNumar = 0 gnPc = 2 gnPVal = 2 gnPPretV = 4 gnScadereStoc = 1 gnMemProcDisc = 0 gcMockUltimMesaj = '' gnMockUltimTip = 0 gcUltimSql = '' gnUltimRamas = 0 gnUltimFacturaRetur = 0 gnUltimParamAditional = 0 gcLog = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_s4e_avize.log" IF !DIRECTORY("D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out") MD "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out" ENDIF STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog) gnFail = 0 gnPass = 0 gnErr = 0 gcCaz = "" gcErr = "" gcMockApeluri = "" gnMockRaspuns = 6 gcMockDuplicat = "" ON ERROR DO AfErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() DO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto_roafacturare.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT' IF TYPE('gnHandle') <> 'N' OR gnHandle <= 0 DO AfLog WITH "FAIL: conexiune Oracle esuata" DO Final ENDIF LOCAL lcProc lcProc = SET("PROCEDURE") * CAPCANA descoperita la scrierea acestui test: mock_validare_antet.prg si mock_amessagebox.prg * definesc AMANDOUA FUNCTION amessagebox, si comentariile lor de antet se CONTRAZIC despre cine * castiga la nume duplicat ("primul in lista" vs. "ultima incarcata"). Verificat EMPIRIC aici: * la nume duplicat de PROCEDURE/FUNCTION intre fisiere SET PROCEDURE, castiga PRIMUL fisier din * lista curenta a lui SET("PROCEDURE") - exact ce spune antetul mock_validare_antet.prg, NU ce * spune antetul mock_amessagebox.prg. De-aici, mock_amessagebox.prg trebuie pus PRIMUL ca sa * castige (necesar pt. captura gcMockUltimMesaj/gnMockUltimTip din TestBC_*); mock_validare_antet.prg * ramane incarcat dupa el, doar pt. facturi_duplicate (nefolosit de acest test, dar pastrat pt. * orice alt apel indirect din do_sterge). SET PROCEDURE TO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\mock_amessagebox.prg", ; "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\mock_validare_antet.prg", ; "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\mock_generator_numere.prg", &lcProc IF !actualizeaza_optiuni_program() DO AfLog WITH "FAIL: actualizeaza_optiuni_program()" DO Final ENDIF gnIdUtil = 8 gnIdSucursala = 167 goExecutor.oExecuta([begin pack_sesiune.set_Id_Util(?gnIdUtil); end;]) gnScadereStoc = 1 DO AfLog WITH "ENV OK, gnAn=" + TRANSFORM(gnAn) + " gnLuna=" + TRANSFORM(gnLuna) + " gnIdSucursala=" + TRANSFORM(gnIdSucursala) SET PATH TO "D:\ROA\ROAFACTURARE\COMUN\utile\gridextras" ADDITIVE SET CLASSLIB TO "D:\ROA\ROAFACTURARE\COMUN\utile\gridextras\gridextras.vcx" ADDITIVE SET CLASSLIB TO "D:\ROA\ROAFACTURARE\COMUN\clase\_cb_base.vcx" ADDITIVE IF USED('jtva_coloane') USE IN jtva_coloane ENDIF CREATE CURSOR jtva_coloane (id_jtva_coloana N(14), denumire C(50), cota_tva N(6,2)) INSERT INTO jtva_coloane VALUES (190, 'TVA 19%', 19) INSERT INTO jtva_coloane VALUES (210, 'TVA 21%', 21) INSERT INTO jtva_coloane VALUES (110, 'TVA 11%', 11) GO TOP IN jtva_coloane PRIVATE poDate, poGeneratorNumere, plVizibil, pnTotalDiscountAvize plVizibil = .F. pnTotalDiscountAvize = 0 poDate = NULL poGeneratorNumere = CREATEOBJECT("oGeneratorMock") DO TestA_Tip4 DO TestA_Tip21 DO TestBC_Tip4 DO TestBC_Tip21 DO Final *---------------------------------------------------------------------------------------- * A_Tip4: echivalentul A2 din test_s4e_registru.prg, pe poDate.tip=4. crsarticole cu 3 randuri * (id_c 1..3); crsfactura cu o linie de aviz (id_c=2) si una libera (id_c=0). Ramura Do Case atinsa * in do_sterge (ofacturare.vc2:20436): Inlist(poDate.tip,3,4,21,25,28,42,47) - include 4 explicit. PROCEDURE TestA_Tip4 DO TestARegistru WITH 4 ENDPROC *---------------------------------------------------------------------------------------- * A_Tip21: identic cu A_Tip4, pe poDate.tip=21 (aviz din comanda). Aceeasi ramura Do Case * (Inlist include si 21). PROCEDURE TestA_Tip21 DO TestARegistru WITH 21 ENDPROC *---------------------------------------------------------------------------------------- * Corpul comun A2-echivalent, parametrizat pe tip (3 la S4e-4, 4/21 aici). PROCEDURE TestARegistru LPARAMETERS tnTip LOCAL loForm, lnSumInainte, lnSumDupa, lnCantId2Inainte, lnCantId2Dupa gcCaz = "[A tip=" + TRANSFORM(tnTip) + ": do_sterge - linie libera vs linie de aviz/comanda] " DO AfLog WITH "PAS: " + gcCaz DO Reseteaza WITH tnTip SELECT 0 CREATE CURSOR crsarticole (id_c N(20), id_articol N(20), denumire C(100), cantitate N(20,4), ; gestionabil N(1), opt_facturare N(3), Pret N(20,4), pret_val N(20,4), proc_tvav N(20,4), ; preturi_cu_tva N(1), um C(10), id_gestiune N(20), cont C(10), id_valuta N(10), tip_valuta N(1), ; Curs N(20,4), multiplicator N(10), discount_unitar N(20,4), discount_unitar_val N(20,4), ; codmat C(50), codbare C(50), nume_val C(20)) INSERT INTO crsarticole VALUES (1, 401, "ARTICOL 1", 5, 1, 0, 100, 0, 1.19, 0, "BUC", ; 21, "371", 1, 0, 1, 1, 0, 0, "CM401", "", "RON") INSERT INTO crsarticole VALUES (2, 402, "ARTICOL 2", 7, 1, 0, 100, 0, 1.19, 0, "BUC", ; 21, "371", 1, 0, 1, 1, 0, 0, "CM402", "", "RON") INSERT INTO crsarticole VALUES (3, 403, "ARTICOL 3", 3, 1, 0, 100, 0, 1.19, 0, "BUC", ; 21, "371", 1, 0, 1, 1, 0, 0, "CM403", "", "RON") GO TOP IN crsarticole loForm = CREATEOBJECT('frm_facturare_articole2') DO Assert WITH VARTYPE(loForm) = 'O', "Createobject frm_facturare_articole2" IF VARTYPE(loForm) <> 'O' RETURN ENDIF SELECT crsfactura APPEND BLANK REPLACE id_temp WITH 1, id_c WITH 2, id_articol WITH 402, denumire WITH "ARTICOL 2", ; cantitate WITH 4, opt_facturare WITH 0 APPEND BLANK REPLACE id_temp WITH 2, id_c WITH 0, id_articol WITH 999, denumire WITH "LINIE LIBERA", ; cantitate WITH 2, opt_facturare WITH 0 DO Assert WITH RECCOUNT('crsfactura') = 2, "crsfactura are 2 randuri (aviz/comanda + libera)" *-- pas 1: sterge linia LIBERA (id_c=0) - Sum(crsarticole.cantitate) ramane neschimbat SELECT crsarticole CALCULATE SUM(cantitate) TO lnSumInainte GO TOP IN crsarticole SELECT crsfactura LOCATE FOR id_c = 0 DO Assert WITH FOUND(), "linia libera (id_c=0) gasita in crsfactura" gnErr = 0 gcErr = "" gnMockRaspuns = 6 loForm.do_sterge() DO Assert WITH gnErr = 0, "do_sterge (linie libera) fara eroare" DO Assert WITH RECCOUNT('crsfactura') = 1, "linia libera a fost stearsa din crsfactura" SELECT crsarticole CALCULATE SUM(cantitate) TO lnSumDupa GO TOP IN crsarticole DO Assert WITH lnSumDupa = lnSumInainte, "Sum(crsarticole.cantitate) neschimbat dupa stergerea liniei LIBERE (inainte=" + ; TRANSFORM(lnSumInainte) + " dupa=" + TRANSFORM(lnSumDupa) + ")" *-- pas 2: sterge linia de aviz/comanda (id_c=2) - crsarticole.cantitate la id_c=2 creste cu exact 4 SELECT crsarticole LOCATE FOR id_c = 2 lnCantId2Inainte = cantitate GO TOP IN crsarticole SELECT crsfactura LOCATE FOR id_c = 2 DO Assert WITH FOUND(), "linia de aviz/comanda (id_c=2) gasita in crsfactura" gnErr = 0 gcErr = "" gnMockRaspuns = 6 loForm.do_sterge() DO Assert WITH gnErr = 0, "do_sterge (linie aviz/comanda) fara eroare" DO Assert WITH RECCOUNT('crsfactura') = 0, "linia de aviz/comanda a fost stearsa din crsfactura" SELECT crsarticole LOCATE FOR id_c = 2 lnCantId2Dupa = cantitate GO TOP IN crsarticole DO Assert WITH lnCantId2Dupa = lnCantId2Inainte + 4, "crsarticole.cantitate la id_c=2 a crescut cu exact 4 (inainte=" + ; TRANSFORM(lnCantId2Inainte) + " dupa=" + TRANSFORM(lnCantId2Dupa) + ")" DO Inchide WITH 'crsarticole' loForm.Release() RELEASE loForm ENDPROC *---------------------------------------------------------------------------------------- * BC_Tip4: asertiune directa - SQL/suma/pnFacturaRetur/pnParametruAditional/dialog (text+tip) * identice intre "fara linie libera" si "cu linie libera" pe ramura tip 4. PROCEDURE TestBC_Tip4 LOCAL lcSql1, lnRamas1, lnFacturaRetur1, lnParam1, lcMesaj1, lnTip1 LOCAL lcSql2, lnRamas2, lnFacturaRetur2, lnParam2, lcMesaj2, lnTip2 gcCaz = "[BC tip=4: SQL/suma/pnParametruAditional/dialog identice cu si fara linie libera] " DO AfLog WITH "PAS: " + gcCaz DO Reseteaza WITH 4 poDate.listaid = "1" *-- baseline: crsfactura cu doar o linie de aviz (fara linie libera) SELECT crsfactura APPEND BLANK REPLACE id_temp WITH 1, id_c WITH 5, id_articol WITH 501, denumire WITH "AVIZ LINIE", ; cantitate WITH 3, opt_facturare WITH 0 gcMockUltimMesaj = '' gnMockUltimTip = 0 IF !DO_SimulaRamuraTip4() DO AfLog WITH "FAIL: SimulaRamuraTip4 (baseline) nu a putut fi executata - vezi asertiunea SELECT de mai sus" RETURN ENDIF lcSql1 = gcUltimSql lnRamas1 = gnUltimRamas lnFacturaRetur1 = gnUltimFacturaRetur lnParam1 = gnUltimParamAditional lcMesaj1 = gcMockUltimMesaj lnTip1 = gnMockUltimTip *-- poluat: aceeasi stare + o linie LIBERA (id_c=0), cantitate mare (999) ca sa iasa in evidenta SELECT crsfactura APPEND BLANK REPLACE id_temp WITH 2, id_c WITH 0, id_articol WITH 999, denumire WITH "LINIE LIBERA", ; cantitate WITH 999, opt_facturare WITH 0 DO Assert WITH RECCOUNT('crsfactura') = 2, "crsfactura are acum si linia libera (tip 4)" gcMockUltimMesaj = '' gnMockUltimTip = 0 IF !DO_SimulaRamuraTip4() DO AfLog WITH "FAIL: SimulaRamuraTip4 (poluat) nu a putut fi executata - vezi asertiunea SELECT de mai sus" RETURN ENDIF lcSql2 = gcUltimSql lnRamas2 = gnUltimRamas lnFacturaRetur2 = gnUltimFacturaRetur lnParam2 = gnUltimParamAditional lcMesaj2 = gcMockUltimMesaj lnTip2 = gnMockUltimTip DO Assert WITH lcSql1 = lcSql2, "SQL-ul (exista_ramas_avize_lista) identic cu/fara linie libera" DO Assert WITH lnRamas1 = lnRamas2, "lnCantitateRamasa identic (obtinut: " + TRANSFORM(lnRamas1) + " / " + TRANSFORM(lnRamas2) + ")" DO Assert WITH lnFacturaRetur1 = lnFacturaRetur2, "pnFacturaRetur identic (obtinut: " + TRANSFORM(lnFacturaRetur1) + " / " + TRANSFORM(lnFacturaRetur2) + ")" DO Assert WITH lnParam1 = lnParam2, "pnParametruAditional identic (obtinut: " + TRANSFORM(lnParam1) + " / " + TRANSFORM(lnParam2) + ")" DO Assert WITH lcMesaj1 = lcMesaj2, "textul dialogului (mock) identic cu/fara linie libera (obtinut: [" + lcMesaj1 + "] / [" + lcMesaj2 + "])" DO Assert WITH lnTip1 = lnTip2, "tipul dialogului / raspunsul implicit (mock) identic cu/fara linie libera (obtinut: " + TRANSFORM(lnTip1) + " / " + TRANSFORM(lnTip2) + ")" ENDPROC *---------------------------------------------------------------------------------------- * BC_Tip21: identic cu BC_Tip4, dar pe ramura Inlist(poDate.Tip,3,21,25,28,42,47) - foloseste * cantitate_ramasa_comanda in loc de exista_ramas_avize_lista, si nu are pnFacturaRetur. PROCEDURE TestBC_Tip21 LOCAL lcSql1, lnRamas1, lnParam1, lcMesaj1, lnTip1 LOCAL lcSql2, lnRamas2, lnParam2, lcMesaj2, lnTip2 gcCaz = "[BC tip=21: SQL/suma/pnParametruAditional/dialog identice cu si fara linie libera] " DO AfLog WITH "PAS: " + gcCaz DO Reseteaza WITH 21 poDate.listaid = "1" SELECT crsfactura APPEND BLANK REPLACE id_temp WITH 1, id_c WITH 5, id_articol WITH 501, denumire WITH "COMANDA LINIE", ; cantitate WITH 3, opt_facturare WITH 0 gcMockUltimMesaj = '' gnMockUltimTip = 0 IF !DO_SimulaRamuraComanda() DO AfLog WITH "FAIL: SimulaRamuraComanda (baseline) nu a putut fi executata - vezi asertiunea SELECT de mai sus" RETURN ENDIF lcSql1 = gcUltimSql lnRamas1 = gnUltimRamas lnParam1 = gnUltimParamAditional lcMesaj1 = gcMockUltimMesaj lnTip1 = gnMockUltimTip SELECT crsfactura APPEND BLANK REPLACE id_temp WITH 2, id_c WITH 0, id_articol WITH 999, denumire WITH "LINIE LIBERA", ; cantitate WITH 999, opt_facturare WITH 0 DO Assert WITH RECCOUNT('crsfactura') = 2, "crsfactura are acum si linia libera (tip 21)" gcMockUltimMesaj = '' gnMockUltimTip = 0 IF !DO_SimulaRamuraComanda() DO AfLog WITH "FAIL: SimulaRamuraComanda (poluat) nu a putut fi executata - vezi asertiunea SELECT de mai sus" RETURN ENDIF lcSql2 = gcUltimSql lnRamas2 = gnUltimRamas lnParam2 = gnUltimParamAditional lcMesaj2 = gcMockUltimMesaj lnTip2 = gnMockUltimTip DO Assert WITH lcSql1 = lcSql2, "SQL-ul (cantitate_ramasa_comanda) identic cu/fara linie libera" DO Assert WITH lnRamas1 = lnRamas2, "lnCantitateRamasa identic (obtinut: " + TRANSFORM(lnRamas1) + " / " + TRANSFORM(lnRamas2) + ")" DO Assert WITH lnParam1 = lnParam2, "pnParametruAditional identic (obtinut: " + TRANSFORM(lnParam1) + " / " + TRANSFORM(lnParam2) + ")" DO Assert WITH lcMesaj1 = lcMesaj2, "textul dialogului (mock) identic cu/fara linie libera (obtinut: [" + lcMesaj1 + "] / [" + lcMesaj2 + "])" DO Assert WITH lnTip1 = lnTip2, "tipul dialogului / raspunsul implicit (mock) identic cu/fara linie libera (obtinut: " + TRANSFORM(lnTip1) + " / " + TRANSFORM(lnTip2) + ")" ENDPROC *---------------------------------------------------------------------------------------- * Oglinda LITERALA a COMUN\clase\ofacturare.vc2:20059-20074 (frm_facturare_articole2.do_scrie_factura, * Case poDate.Tip = 4). NU apeleaza metoda reala - aceea scrie in Oracle prin do_scrie_articole, * in afara perimetrului "fara cod nou" al S4e-5. Rezultatul se pune in gcUltimSql/gnUltimRamas/ * gnUltimFacturaRetur/gnUltimParamAditional. Returneaza .F. daca SELECT-ul Oracle a esuat (nu e * asertiune de esec al S4e-5, ci semnal ca proba nu a putut rula pe acest mediu). PROCEDURE DO_SimulaRamuraTip4 LOCAL lcSql, lnCantitateRamasa, lnFacturaRetur, lnParamAditional, lnRet lcSql = [SELECT pack_facturare.exista_ramas_avize_lista('] + Alltrim(poDate.listaid) + [') AS ramas FROM dual] lnRet = goExecutor.oExecute(lcSql,'crsramasavize') DO Assert WITH lnRet >= 0, "SELECT exista_ramas_avize_lista a rulat fara eroare (ret=" + TRANSFORM(lnRet) + ")" IF lnRet < 0 RETURN .F. ENDIF lnCantitateRamasa = crsramasavize.ramas USE IN (SELECT('crsramasavize')) IF lnCantitateRamasa > 0 lnFacturaRetur = 7 - amessagebox("Doriti sa se inregistreze si avizul de retur?",4+32,"Confirmare") lnParamAditional = 1 ELSE lnFacturaRetur = 0 lnParamAditional = 0 ENDIF gcUltimSql = lcSql gnUltimRamas = lnCantitateRamasa gnUltimFacturaRetur = lnFacturaRetur gnUltimParamAditional = lnParamAditional RETURN .T. ENDPROC *---------------------------------------------------------------------------------------- * Oglinda LITERALA a ofacturare.vc2:20096-20107 (Case Inlist(poDate.Tip,3,21,25,28,42,47)). PROCEDURE DO_SimulaRamuraComanda LOCAL lcSql, lnCantitateRamasa, lnParamAditional, lnRet lcSql = [SELECT pack_facturare.cantitate_ramasa_comanda(] + Alltrim(Str(Val(poDate.listaid))) + [) AS ramas FROM dual] lnRet = goExecutor.oExecute(lcSql,'crsramascomanda') DO Assert WITH lnRet >= 0, "SELECT cantitate_ramasa_comanda a rulat fara eroare (ret=" + TRANSFORM(lnRet) + ")" IF lnRet < 0 RETURN .F. ENDIF lnCantitateRamasa = crsramascomanda.ramas USE IN (SELECT('crsramascomanda')) lnParamAditional = 0 IF lnCantitateRamasa <> 0 lnParamAditional = 7 - amessagebox("Doriti sa se inchida comanda?",4+32,"Confirmare") ENDIF gcUltimSql = lcSql gnUltimRamas = lnCantitateRamasa gnUltimParamAditional = lnParamAditional RETURN .T. ENDPROC *---------------------------------------------------------------------------------------- PROCEDURE Reseteaza LPARAMETERS tnTip LOCAL lnIdSet DO Inchide WITH 'crsarticole' DO Inchide WITH 'crsarticole1' DO Inchide WITH 'crsfactura' DO Inchide WITH 'crscursuri' DO Inchide WITH 'crspolitici' DO Inchide WITH 'crscontracte' DO Inchide WITH 'crsgestiunidest' DO Inchide WITH 'crsCtrTemp' DO Inchide WITH 'CrsCotaTva' DO Inchide WITH 'saft_tip_facturi' SELECT 0 IF !USED('saft_tip_facturi') CREATE CURSOR saft_tip_facturi (cod N(3) NULL, tip_saftname C(200) NULL) INSERT INTO saft_tip_facturi (cod, tip_saftname) VALUES (NULL, '') INDEX ON cod TAG cod ENDIF DO creeaza_facturacrs WITH 'crsfactura' SELECT *, CAST(NULL AS C(100)) AS gestiune FROM crsfactura INTO CURSOR crsfact_tmp READWRITE USE IN crsfactura SELECT * FROM crsfact_tmp INTO CURSOR crsfactura READWRITE USE IN crsfact_tmp gcMockApeluri = "" gcErr = "" gnErr = 0 gnMockRaspuns = 6 gcMockDuplicat = "" gcMockUltimMesaj = '' gnMockUltimTip = 0 lnIdSet = 28000 + tnTip poDate = NULL poDate = CREATEOBJECT("oDateFactura", lnIdSet, tnTip) poDate.dataireg = DATE(gnAn, gnLuna, 1) poDate.dataact = poDate.dataireg poDate.zi_curs = poDate.dataireg poDate.id_fdoc = 1 poDate.fdoc = "FEL TEST" poDate.nract = 79 poDate.serie_act = "TST" poDate.id_client = 1 poDate.id_furnizor = 1 poDate.nrfactachi = 1 poDate.id_valuta = 1 poDate.in_valuta = 0 poDate.listaid = "1" poGeneratorNumere.ResetNumere() poDate.rezultat_serii = poGeneratorNumere.creeaza_cursor_serii(poDate.nIdTipDoc) gcMockApeluri = "" ENDPROC PROCEDURE Inchide LPARAMETERS tcAlias IF USED(tcAlias) USE IN (tcAlias) ENDIF ENDPROC PROCEDURE Assert LPARAMETERS tlCond, tcMsg IF tlCond gnPass = gnPass + 1 DO AfLog WITH "PASS: " + gcCaz + tcMsg ELSE gnFail = gnFail + 1 DO AfLog WITH "FAIL: " + gcCaz + tcMsg ENDIF ENDPROC PROCEDURE AfLog LPARAMETERS tcMsg STRTOFILE(tcMsg + CHR(13) + CHR(10), gcLog, 1) ENDPROC PROCEDURE AfErr LPARAMETERS tnErr, tcMsg, tcProg, tnLine gcErr = gcErr + TRANSFORM(tnErr) + " " + tcMsg + " (" + TRANSFORM(tcProg) + ":" + TRANSFORM(tnLine) + ")" + CHR(13) + CHR(10) gnErr = gnErr + 1 DO AfLog WITH "ERROR " + TRANSFORM(tnErr) + " [" + tcProg + ":" + TRANSFORM(tnLine) + "] " + tcMsg ENDPROC PROCEDURE Final DO AfLog WITH "TOTAL pass=" + TRANSFORM(gnPass) + " fail=" + TRANSFORM(gnFail) + " err=" + TRANSFORM(gnErr) DO AfLog WITH "END " + TTOC(DATETIME()) QUIT ENDPROC