* test_s4_3_neregresie_masa.prg * Headless: do_incarca_articole pe frm_facturare_articole2 PASTREAZA apelul incarca_cursor_articole pe * tipurile care nu sunt lista de preturi (comanda 3, avize 4, contract 2) - comportament identic cu S3-4b. * Verifica ramificarea introdusa de S4-3: pe aceste tipuri se executa incarcarea in masa (probat prin * gcMockSql care contine {call pack_facturare.cursor_comanda/cursor_avize/cursor_contract}), crsfactura se * populeaza din cursorul mockuit, lArticoleIncarcate devine .T. si butonul se ascunde. * * Cazuri (toate cu listaid = "1", ca sa treaca valideaza_antet - aceste tipuri cer comanda/avizul/contractul): * C1. tip 3 (comanda) -> Return .T., 'cursor_comanda' $ gcMockSql, crsfactura populat, lArticoleIncarcate=.T., buton .F. * C2. tip 4 (avize) -> Return .T., 'cursor_avize' $ gcMockSql, la fel. * C3. tip 2 (contract) -> Return .T., 'cursor_contract' $ gcMockSql, la fel (mock PLIN2: crsarticole1 pentru * Insert Into crscontracte din incarca_cursor_articole). * * Oracle NU se atinge pe calea articolelor/generatorului: goExecutor -> oExecutorMock (mock_cursor_articole.prg), * poGeneratorNumere -> oGeneratorMock (mock_generator_numere.prg). amessagebox/facturi_duplicate -> * mock_validare_antet.prg. oAntetFacturare.valideaza_antet ruleaza REAL. * * Rulare: vfp9.exe -A -T "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\test_s4_3_neregresie_masa.prg" * Log: D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_s4_3_neregresie_masa.log * Mediu: ROA_CENTRAL / MARIUSM_AUTO; gnIdUtil = 8; gnScadereStoc = 1. SET SAFETY OFF SET TALK OFF SET NOTIFY OFF PUBLIC gcLog, gnFail, gnPass, gnErr, gcCaz, gcErr PUBLIC gcMockApeluri, gnMockNumar, gcMockSql, gnMockSucces, gnMockEroare, gcMockMod, gcMockCurs PUBLIC gnMockRaspuns, gcMockDuplicat, goExecutorReal gcLog = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_s4_3_neregresie_masa.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 = "" gnMockNumar = 0 gcMockSql = "" gnMockSucces = 1 gnMockEroare = 0 gcMockMod = "PLIN" gcMockCurs = "" 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") SET PROCEDURE TO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\mock_validare_antet.prg", ; "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\mock_cursor_articole.prg", ; &lcProc, "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\mock_generator_numere.prg" IF !actualizeaza_optiuni_program() DO AfLog WITH "FAIL: actualizeaza_optiuni_program()" DO Final ENDIF gnIdUtil = 8 goExecutor.oExecuta([begin pack_sesiune.set_Id_Util(?gnIdUtil); end;]) gnScadereStoc = 1 DO AfLog WITH "ENV OK, gnAn=" + TRANSFORM(gnAn) + " gnLuna=" + TRANSFORM(gnLuna) 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 update_jtva_coloane([JV], [jtva_coloane_temp]) PRIVATE poDate, poGeneratorNumere, plVizibil, pnTotalDiscountAvize plVizibil = .F. pnTotalDiscountAvize = 0 poGeneratorNumere = CREATEOBJECT("oGeneratorMock") poDate = NULL goExecutorReal = goExecutor goExecutor = CREATEOBJECT("oExecutorMock") goExecutor.oReal = goExecutorReal DO Caz WITH "C1_TIP3", 3, "PLIN", "cursor_comanda" DO Caz WITH "C2_TIP4", 4, "PLIN", "cursor_avize" DO Caz WITH "C3_TIP2", 2, "PLIN2", "cursor_contract" DO Final *---------------------------------------------------------------------------------------- PROCEDURE Caz LPARAMETERS tcCaz, tnTip, tcMockMod, tcCursorSql LOCAL loForm, llRezultat gcCaz = "[" + tcCaz + "] " DO AfLog WITH "PAS: " + gcCaz DO Reseteaza WITH tnTip, tcMockMod loForm = CREATEOBJECT('frm_facturare_articole2') DO Assert WITH VARTYPE(loForm) = 'O', "Createobject frm_facturare_articole2" IF VARTYPE(loForm) <> 'O' RETURN ENDIF DO Assert WITH PEMSTATUS(loForm, 'lArticoleIncarcate', 5), "lArticoleIncarcate materializata" DO Assert WITH !loForm.lArticoleIncarcate, "lArticoleIncarcate = .F. la Createobject" DO Assert WITH ObjExists(loForm, 'but_incarca_articole'), "but_incarca_articole prezent" DO Assert WITH loForm.but_incarca_articole.Visible, "but_incarca_articole vizibil la Createobject" DO Assert WITH USED('crsfactura') AND RECCOUNT('crsfactura') = 0, "crsfactura deschis dar gol inainte de do_incarca_articole" llRezultat = loForm.do_incarca_articole() DO Assert WITH llRezultat, "Return .T. pe antet valid" DO Assert WITH !EMPTY(gcMockSql), "incarca_cursor_articole a fost apelat - gcMockSql nevid" DO Assert WITH tcCursorSql $ gcMockSql, "apel pe " + tcCursorSql + " in gcMockSql: " + STRTRAN(ALLTRIM(gcMockSql), CHR(13) + CHR(10), " | ") DO Assert WITH USED('crsarticole') AND RECCOUNT('crsarticole') > 0, "crsarticole populat dupa succes (sursa incarcarii in masa)" DO Assert WITH loForm.lArticoleIncarcate, "lArticoleIncarcate = .T. dupa succes" DO Assert WITH !loForm.but_incarca_articole.Visible, "but_incarca_articole invizibil dupa succes" DO Assert WITH UPPER(loForm.grd_factura.RecordSource) == 'CRSFACTURA', "grd_factura.RecordSource = crsfactura" loForm.Release() RELEASE loForm ENDPROC *---------------------------------------------------------------------------------------- PROCEDURE Reseteaza LPARAMETERS tnTip, tcMockMod 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' SELECT 0 * cboTipFactura (frm_facturare_articole2) cere RowSource pe saft_tip_facturi la constructie 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 = "" gcMockSql = "" gcMockCurs = "" gcErr = "" gnMockNumar = 100 gnMockRaspuns = 6 gcMockDuplicat = "" gcMockMod = tcMockMod gnMockSucces = 1 gnMockEroare = 0 lnIdSet = 25000 + tnTip - 1 + gnScadereStoc * 10 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 = 77 poDate.serie_act = "TST" poDate.id_client = 1 poDate.id_furnizor = 1 poDate.nrfactachi = 1 poDate.id_valuta = 1 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 FUNCTION ObjExists LPARAMETERS toForm, tcName LOCAL i FOR i = 1 TO toForm.Objects.Count IF UPPER(toForm.Objects(i).Name) == UPPER(tcName) RETURN .T. ENDIF ENDFOR RETURN .F. ENDFUNC 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 IF TYPE('goExecutorReal') = 'O' goExecutor = goExecutorReal ENDIF DO AfLog WITH "TOTAL pass=" + TRANSFORM(gnPass) + " fail=" + TRANSFORM(gnFail) + " err=" + TRANSFORM(gnErr) DO AfLog WITH "END " + TTOC(DATETIME()) QUIT ENDPROC