#13: formular de facturare unificat - etapa curenta
Squash al branch-ului de lucru plan13-s2. Clase: ofacturare (nucleul formularului unificat), ofacturare_comun, ferestre_cere_date, ocomenzi, caut_ora (lista de preturi in combo-urile de cautare), omodificari. Programe: ofacturare impartit - ofacturare_antet, ofacturare_rutare_scriere si ogrid_latimi sunt fisiere noi; oproceduri_facturare primeste discountul pe linie si cota standard de TVA cand articolul nu are cota pe politica. Documentatie: capcana SQLExec no_data_found, conventia de encoding, depanarea testelor VFP si regulile de lucru - conflictele cu modificarile venite din alte proiecte sunt rezolvate pastrand ambele parti. Loguri de rulare a testelor scoase din versionare; testele raman. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PkyjGyrV2S7932om4kfSiK
This commit is contained in:
362
utile/Teste/facturare_unificat/test_s3_tipdoc.prg
Normal file
362
utile/Teste/facturare_unificat/test_s3_tipdoc.prg
Normal file
@@ -0,0 +1,362 @@
|
||||
* test_s3_tipdoc.prg
|
||||
* Headless: paritatea lui do_schimba_tipdoc intre calea veche (frm_date_factura, metoda in .vcx) si formularul
|
||||
* unificat (frm_facturare_articole2.do_schimba_tipdoc -> oAntetFacturare.alege_tipdoc / schimba_tipdoc din
|
||||
* ofacturare_antet.prg + efectele pe controale ramase in .vcx). Generatorul de numere e o SUBCLASA de test a lui
|
||||
* oGeneratorNumere (oGeneratorMock, mock_generator_numere.prg) care NU atinge Oracle la alocare/dezalocare: aloca_numar
|
||||
* intoarce un contor local si jurnalizeaza apelul; dezaloca_numar jurnalizeaza si pune numarul pe 0;
|
||||
* creeaza_cursor_serii construieste un cursor local de serii (FACTURA/PROFORMA cu serie+plaje, BON FISCAL fara
|
||||
* serie cu plaje) - fara Oracle (pe MARIUSM_AUTO proforma n-are plaje si goExecutor deschide un dialog real).
|
||||
* NU se consuma numere reale din serii.
|
||||
*
|
||||
* REZULTAT ASTEPTAT (declarat inainte de rulare):
|
||||
* A. Pentru fiecare caz (fel initial -> fel ales) se construieste ACELASI poDate (tip 1, nIdTipDoc = FACTURA),
|
||||
* se creeaza formularul vechi / unificatul, se pune valoarea in combo (ct_clb_fdoc._combobox1 / clb_fdoc.cboFdoc)
|
||||
* si se apeleaza do_schimba_tipdoc(). Se compara amprenta: poDate.nIdTipDoc, eProforma, eBonFiscal, id_fdoc,
|
||||
* fdoc, serie_act, nract, rezultat_serii, starea controlului serie (nid_tipdoc, nTip, vizibilitati), jurnalul
|
||||
* generatorului (aloca/dezaloca, in ordine, cu tipul de document) si erorile VFP.
|
||||
* A2. Calea veche pastreaza un apel neconditionat catre _cbbase1.LostFocus() inaintea garzii de schimbare de tip
|
||||
* (bug preexistent, lasat constient); calea unificata nu mai are acest apel. Efectul e o divergenta cu tipar
|
||||
* fix: fara schimbare de tip, calea veche arde un numar suplimentar iar unificatul nu aloca nimic; cu schimbare
|
||||
* de tip, calea veche contine in plus perechea aloca_numar(tip vechi)/dezaloca_numar(tip vechi) inaintea garzii,
|
||||
* iar numarul final e mai mare cu exact 1 fata de unificat. Testul normalizeaza aceasta divergenta (o verifica
|
||||
* explicit, cu asertiuni, apoi o scoate din amprenta) si compara restul IDENTIC - vezi NormalizeazaFaraSchimbare
|
||||
* / NormalizeazaCuSchimbare mai jos. Daca divergenta iese din acest tipar, normalizarea nu se potriveste si
|
||||
* testul PICA.
|
||||
* B. Cazuri: FACTURA->FACTURA (fara schimbare: nIdTipDoc ramane 5, dar _cbbase1.LostFocus() se apeleaza
|
||||
* neconditionat pe calea veche - regenerarea numarului e divergenta asteptata A2, nu identitate),
|
||||
* FACTURA->PROFORMA (nIdTipDoc 23), FACTURA->BON FISCAL (nIdTipDoc 3), PROFORMA->FACTURA (pornind cu
|
||||
* nIdTipDoc 23), BON FISCAL->PROFORMA.
|
||||
* C. Asteptat in plus, declarat: dupa FACTURA->PROFORMA poDate.nIdTipDoc = poDate.nIdTipDocProforma = 23 pe
|
||||
* ambele; dupa ->BON FISCAL = 3; jurnalul contine dezaloca_numar(tip vechi) inainte de alocarea pe tipul nou.
|
||||
* D. Netestabil headless: secventa reala LostFocus/Valid la iesirea din combo (test_s3_tipdoc_ui.prg).
|
||||
*
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\test_s3_tipdoc.prg"
|
||||
* Log: D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_s3_tipdoc.log
|
||||
* Mediu: ROA_CENTRAL / MARIUSM_AUTO; gnIdUtil = 8; gnScadereStoc = 1.
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET NOTIFY OFF
|
||||
PUBLIC gcLog, gnFail, gnPass, gcCaz, gcErr, gcMockApeluri, gnMockNumar, gnDivergenteQ8
|
||||
gcLog = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_s3_tipdoc.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
|
||||
gcCaz = ""
|
||||
gcErr = ""
|
||||
gcMockApeluri = ""
|
||||
gnMockNumar = 0
|
||||
gnDivergenteQ8 = 0
|
||||
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\mock_amessagebox.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
|
||||
DO Assert WITH TYPE('CREATEOBJECT("oAntetFacturare")') = 'O', "oAntetFacturare instantiabil"
|
||||
|
||||
PRIVATE poDate, poGeneratorNumere, plVizibil, poDateGestiuneDest
|
||||
plVizibil = .F.
|
||||
poGeneratorNumere = CREATEOBJECT("oGeneratorMock")
|
||||
DO Assert WITH VARTYPE(poGeneratorNumere) = 'O' AND poGeneratorNumere.Class == "Ogeneratormock", "generator mock instantiat (subclasa oGeneratorNumere)"
|
||||
poDateGestiuneDest = CREATEOBJECT("oDateGestiune")
|
||||
|
||||
IF USED('crscursuri')
|
||||
USE IN crscursuri
|
||||
ENDIF
|
||||
CREATE CURSOR crscursuri (curs N(12,4), nume_val C(10), multiplicator N(6))
|
||||
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
|
||||
|
||||
DO Caz WITH "FACTURA", "FACTURA"
|
||||
DO Caz WITH "FACTURA", "PROFORMA"
|
||||
DO Caz WITH "FACTURA", "BON FISCAL"
|
||||
DO Caz WITH "PROFORMA", "FACTURA"
|
||||
DO Caz WITH "BON FISCAL", "PROFORMA"
|
||||
|
||||
DO Final
|
||||
|
||||
*----------------------------------------------------------------------------------------
|
||||
PROCEDURE Caz
|
||||
LPARAMETERS tcDin, tcIn
|
||||
LOCAL lcVechi, lcNou, lnAsteptat, lcVechiNorm, lnTipVechi, lnTipNou
|
||||
gcCaz = "[" + tcDin + " -> " + tcIn + "] "
|
||||
lcVechi = Amprenta('frm_date_factura', tcDin, tcIn)
|
||||
lcNou = Amprenta('frm_facturare_articole2', tcDin, tcIn)
|
||||
lnTipVechi = IdTipDoc(tcDin)
|
||||
lnTipNou = IdTipDoc(tcIn)
|
||||
|
||||
IF tcDin == tcIn
|
||||
lcVechiNorm = NormalizeazaFaraSchimbare(lcVechi, lcNou, lnTipVechi)
|
||||
ELSE
|
||||
lcVechiNorm = NormalizeazaCuSchimbare(lcVechi, lcNou, lnTipVechi, lnTipNou)
|
||||
ENDIF
|
||||
|
||||
IF lcVechiNorm == lcNou
|
||||
gnPass = gnPass + 1
|
||||
DO AfLog WITH "OK " + gcCaz + "amprente identice dupa normalizarea divergentei Q8 (" + TRANSFORM(OCCURS(CHR(10), lcNou)) + " linii)"
|
||||
ELSE
|
||||
gnFail = gnFail + 1
|
||||
DO AfLog WITH "FAIL " + gcCaz + "amprente diferite dupa normalizare (divergenta neasteptata):"
|
||||
DO DifLinii WITH lcVechiNorm, lcNou
|
||||
ENDIF
|
||||
lnAsteptat = IdTipDoc(tcIn)
|
||||
DO Assert WITH ("poDate.nidtipdoc=" + TRANSFORM(lnAsteptat) + CHR(13)) $ lcVechi, "asteptat nIdTipDoc=" + TRANSFORM(lnAsteptat) + " dupa schimbare"
|
||||
IF !(tcDin == tcIn)
|
||||
DO Assert WITH ("dezaloca_numar(" + TRANSFORM(IdTipDoc(tcDin)) + ")") $ lcVechi, "asteptat dezaloca_numar pe tipul vechi " + TRANSFORM(IdTipDoc(tcDin))
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
FUNCTION NormalizeazaFaraSchimbare
|
||||
* Q8, fara schimbare de tip: calea veche arde un numar la intrare-iesire din combo, unificatul nu aloca nimic
|
||||
LPARAMETERS tcVechi, tcNou, tnTip
|
||||
LOCAL lcJurnalVechi, lcJurnalNou, lnNractVechi, lnNractNou, lcVechiNorm
|
||||
|
||||
lcJurnalVechi = Jurnal(tcVechi)
|
||||
lcJurnalNou = Jurnal(tcNou)
|
||||
lnNractVechi = VAL(ValoareCheie(tcVechi, "poDate.nract"))
|
||||
lnNractNou = VAL(ValoareCheie(tcNou, "poDate.nract"))
|
||||
|
||||
DO Assert WITH lnNractNou = 0, "Q8: pe calea unificata nract ramane neatins la intrare-iesire fara schimbare de tip"
|
||||
DO Assert WITH EMPTY(lcJurnalNou), "Q8: pe calea unificata jurnalul generatorului ramane gol fara schimbare de tip"
|
||||
DO Assert WITH lnNractVechi > 0, "Q8: pe calea veche nract se arde la intrare-iesire din combo, chiar fara schimbare de tip"
|
||||
DO Assert WITH OCCURS("aloca_numar(" + TRANSFORM(tnTip) + ") -> ", lcJurnalVechi) = 1, "Q8: pe calea veche se aloca exact un numar, pe tipul curent " + TRANSFORM(tnTip) + ", la intrare-iesire fara schimbare de tip"
|
||||
|
||||
gnDivergenteQ8 = gnDivergenteQ8 + 1
|
||||
DO AfLog WITH "DIVERGENTA-ASTEPTATA (Q8): " + gcCaz + "fara schimbare de tip, calea veche arde numarul (nract=" + TRANSFORM(lnNractVechi) + "), unificatul nu aloca nimic (nract=0)"
|
||||
|
||||
lcVechiNorm = InlocuiesteJurnal(tcVechi, "")
|
||||
lcVechiNorm = STRTRAN(lcVechiNorm, "poDate.nract=" + TRANSFORM(lnNractVechi) + CHR(13) + CHR(10), "poDate.nract=0" + CHR(13) + CHR(10), 1, 1)
|
||||
RETURN lcVechiNorm
|
||||
ENDFUNC
|
||||
|
||||
FUNCTION NormalizeazaCuSchimbare
|
||||
* Q8, cu schimbare de tip: calea veche are in plus perechea aloca_numar(tip vechi)/dezaloca_numar(tip vechi)
|
||||
* inaintea garzii, iar numarul final e mai mare cu exact 1 fata de unificat
|
||||
LPARAMETERS tcVechi, tcNou, tnTipVechi, tnTipNou
|
||||
LOCAL lcJurnalVechi, lnNractVechi, lnNractNou, lcMarcaj, lnPozAloc, lnN
|
||||
LOCAL lcLiniaAloc, lcLiniaDezaloc, lcBloc, lcJurnalRedus, lcLiniaAlocFinalaVechi, lcLiniaAlocFinalaNou, lcVechiNorm
|
||||
|
||||
lcJurnalVechi = Jurnal(tcVechi)
|
||||
lnNractVechi = VAL(ValoareCheie(tcVechi, "poDate.nract"))
|
||||
lnNractNou = VAL(ValoareCheie(tcNou, "poDate.nract"))
|
||||
|
||||
lcMarcaj = "aloca_numar(" + TRANSFORM(tnTipVechi) + ") -> "
|
||||
lnPozAloc = AT(lcMarcaj, lcJurnalVechi)
|
||||
DO Assert WITH lnPozAloc > 0, "Q8: perechea redundanta aloca_numar(tip vechi) prezenta pe calea veche"
|
||||
IF lnPozAloc = 0
|
||||
RETURN tcVechi && divergenta neasteptata, comparatia finala ramane nenormalizata si pica
|
||||
ENDIF
|
||||
|
||||
lnN = VAL(SUBSTR(lcJurnalVechi, lnPozAloc + LEN(lcMarcaj)))
|
||||
lcLiniaAloc = lcMarcaj + TRANSFORM(lnN) + CHR(13) + CHR(10)
|
||||
lcLiniaDezaloc = "dezaloca_numar(" + TRANSFORM(tnTipVechi) + ") numar=" + TRANSFORM(lnN) + CHR(13) + CHR(10)
|
||||
lcBloc = lcLiniaAloc + lcLiniaDezaloc
|
||||
DO Assert WITH (lcBloc $ lcJurnalVechi), "Q8: perechea aloca_numar/dezaloca_numar pe tipul vechi " + TRANSFORM(tnTipVechi) + " apare adiacent, in aceasta ordine"
|
||||
|
||||
lcJurnalRedus = STRTRAN(lcJurnalVechi, lcBloc, "", 1, 1)
|
||||
|
||||
lcLiniaAlocFinalaVechi = "aloca_numar(" + TRANSFORM(tnTipNou) + ") -> " + TRANSFORM(lnNractVechi) + CHR(13) + CHR(10)
|
||||
lcLiniaAlocFinalaNou = "aloca_numar(" + TRANSFORM(tnTipNou) + ") -> " + TRANSFORM(lnNractNou) + CHR(13) + CHR(10)
|
||||
DO Assert WITH lnNractVechi = lnNractNou + 1, "Q8: numarul final pe calea veche (" + TRANSFORM(lnNractVechi) + ") e cu exact 1 mai mare decat pe calea unificata (" + TRANSFORM(lnNractNou) + ")"
|
||||
DO Assert WITH (lcLiniaAlocFinalaVechi $ lcJurnalRedus), "Q8: dupa scoaterea perechii redundante, ultima alocare e pe tipul nou " + TRANSFORM(tnTipNou) + " cu numarul " + TRANSFORM(lnNractVechi)
|
||||
|
||||
lcJurnalRedus = STRTRAN(lcJurnalRedus, lcLiniaAlocFinalaVechi, lcLiniaAlocFinalaNou, 1, 1)
|
||||
|
||||
gnDivergenteQ8 = gnDivergenteQ8 + 1
|
||||
DO AfLog WITH "DIVERGENTA-ASTEPTATA (Q8): " + gcCaz + "calea veche contine in plus perechea aloca_numar(" + TRANSFORM(tnTipVechi) + ")/dezaloca_numar(" + TRANSFORM(tnTipVechi) + ") inaintea garzii; numar final " + TRANSFORM(lnNractVechi) + " (veche) vs " + TRANSFORM(lnNractNou) + " (unificat)"
|
||||
|
||||
lcVechiNorm = InlocuiesteJurnal(tcVechi, lcJurnalRedus)
|
||||
lcVechiNorm = STRTRAN(lcVechiNorm, "poDate.nract=" + TRANSFORM(lnNractVechi) + CHR(13) + CHR(10), "poDate.nract=" + TRANSFORM(lnNractNou) + CHR(13) + CHR(10), 1, 1)
|
||||
RETURN lcVechiNorm
|
||||
ENDFUNC
|
||||
|
||||
FUNCTION ValoareCheie
|
||||
* valoarea unei chei "cheie=valoare" dintr-o amprenta, cautata linie cu linie
|
||||
LPARAMETERS tcAmprenta, tcCheie
|
||||
LOCAL laL[1], lnL, i
|
||||
lnL = ALINES(laL, tcAmprenta)
|
||||
FOR i = 1 TO lnL
|
||||
IF LEFT(laL[i], LEN(tcCheie) + 1) == tcCheie + "="
|
||||
RETURN SUBSTR(laL[i], LEN(tcCheie) + 2)
|
||||
ENDIF
|
||||
ENDFOR
|
||||
RETURN "<lipsa>"
|
||||
ENDFUNC
|
||||
|
||||
FUNCTION Jurnal
|
||||
* liniile jurnalului generatorului (intre GENERATOR: si ERORI:) dintr-o amprenta
|
||||
LPARAMETERS tcAmprenta
|
||||
LOCAL laL[1], lnL, i, lnStart, lnStop, lcR
|
||||
lnL = ALINES(laL, tcAmprenta)
|
||||
lnStart = 0
|
||||
lnStop = 0
|
||||
FOR i = 1 TO lnL
|
||||
IF laL[i] == "GENERATOR:"
|
||||
lnStart = i + 1
|
||||
ENDIF
|
||||
IF laL[i] == "ERORI:" AND lnStart > 0
|
||||
lnStop = i - 1
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDFOR
|
||||
lcR = ""
|
||||
FOR i = lnStart TO lnStop
|
||||
lcR = lcR + laL[i] + CHR(13) + CHR(10)
|
||||
ENDFOR
|
||||
RETURN lcR
|
||||
ENDFUNC
|
||||
|
||||
FUNCTION InlocuiesteJurnal
|
||||
* inlocuieste in amprenta continutul dintre GENERATOR: si ERORI: cu jurnalul dat
|
||||
LPARAMETERS tcAmprenta, tcJurnalNou
|
||||
LOCAL laL[1], lnL, i, lnStart, lnStop, lcR
|
||||
lnL = ALINES(laL, tcAmprenta)
|
||||
lnStart = 0
|
||||
lnStop = 0
|
||||
FOR i = 1 TO lnL
|
||||
IF laL[i] == "GENERATOR:"
|
||||
lnStart = i + 1
|
||||
ENDIF
|
||||
IF laL[i] == "ERORI:" AND lnStart > 0
|
||||
lnStop = i - 1
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDFOR
|
||||
lcR = ""
|
||||
FOR i = 1 TO lnStart - 1
|
||||
lcR = lcR + laL[i] + CHR(13) + CHR(10)
|
||||
ENDFOR
|
||||
lcR = lcR + tcJurnalNou
|
||||
FOR i = lnStop + 1 TO lnL
|
||||
lcR = lcR + laL[i] + CHR(13) + CHR(10)
|
||||
ENDFOR
|
||||
RETURN lcR
|
||||
ENDFUNC
|
||||
|
||||
FUNCTION IdTipDoc
|
||||
LPARAMETERS tcFel
|
||||
RETURN IIF(tcFel == "PROFORMA", 23, IIF(tcFel == "BON FISCAL", 3, 5))
|
||||
ENDFUNC
|
||||
|
||||
FUNCTION Amprenta
|
||||
LPARAMETERS tcClasa, tcDin, tcIn
|
||||
LOCAL loF, lcA, loCombo, loSerie
|
||||
poDate = NULL
|
||||
poDate = CREATEOBJECT("oDateFactura", 25001, 1)
|
||||
poDate.nIdTipDoc = IdTipDoc(tcDin)
|
||||
poGeneratorNumere.ResetNumere()
|
||||
gnMockNumar = 100
|
||||
gcMockApeluri = ""
|
||||
poDate.rezultat_serii = poGeneratorNumere.creeaza_cursor_serii(poDate.nIdTipDoc)
|
||||
poDate.dataact = DATE(gnAn, gnLuna, 1)
|
||||
poDate.dataireg = poDate.dataact
|
||||
poDate.id_client = 0
|
||||
gcErr = ""
|
||||
|
||||
DO AfLog WITH " > " + gcCaz + "creez " + tcClasa + " (rezultat_serii=" + TRANSFORM(poDate.rezultat_serii) + ")"
|
||||
loF = CREATEOBJECT(tcClasa)
|
||||
IF VARTYPE(loF) <> 'O'
|
||||
RETURN "CREATEOBJECT " + tcClasa + " ESUAT" + CHR(13) + CHR(10) + gcErr
|
||||
ENDIF
|
||||
gcErr = ""
|
||||
gcMockApeluri = ""
|
||||
IF tcClasa == 'frm_date_factura'
|
||||
loCombo = loF.ct_clb_fdoc._combobox1
|
||||
ELSE
|
||||
loCombo = loF.clb_fdoc.cboFdoc
|
||||
ENDIF
|
||||
lcA = "combo.initial=" + TRANSFORM(loCombo.Value) + CHR(13) + CHR(10)
|
||||
loCombo.Value = tcIn
|
||||
lcA = lcA + "combo.ales=" + TRANSFORM(loCombo.Value) + CHR(13) + CHR(10)
|
||||
lcA = lcA + "INIT: nidtipdoc=" + TRANSFORM(poDate.nIdTipDoc) + " nract=" + TRANSFORM(poDate.nract) + " serie=" + TRANSFORM(poDate.serie_act) + CHR(13) + CHR(10)
|
||||
gcMockApeluri = ""
|
||||
gcErr = ""
|
||||
DO AfLog WITH " > " + gcCaz + "apelez " + tcClasa + ".do_schimba_tipdoc()"
|
||||
loF.do_schimba_tipdoc()
|
||||
lcA = lcA + "poDate.nidtipdoc=" + TRANSFORM(poDate.nIdTipDoc) + CHR(13) + CHR(10)
|
||||
lcA = lcA + "poDate.eproforma=" + TRANSFORM(poDate.eProforma) + CHR(13) + CHR(10)
|
||||
lcA = lcA + "poDate.ebonfiscal=" + TRANSFORM(poDate.eBonFiscal) + CHR(13) + CHR(10)
|
||||
lcA = lcA + "poDate.id_fdoc=" + TRANSFORM(poDate.id_fdoc) + CHR(13) + CHR(10)
|
||||
lcA = lcA + "poDate.fdoc=" + TRANSFORM(poDate.fdoc) + CHR(13) + CHR(10)
|
||||
lcA = lcA + "poDate.serie_act=" + TRANSFORM(poDate.serie_act) + CHR(13) + CHR(10)
|
||||
lcA = lcA + "poDate.nract=" + TRANSFORM(poDate.nract) + CHR(13) + CHR(10)
|
||||
lcA = lcA + "poDate.rezultat_serii=" + TRANSFORM(poDate.rezultat_serii) + CHR(13) + CHR(10)
|
||||
IF tcClasa == 'frm_date_factura'
|
||||
loSerie = IIF(PEMSTATUS(loF, 'clb_serie_act', 5), loF.clb_serie_act, NULL)
|
||||
ELSE
|
||||
loSerie = IIF(PEMSTATUS(loF, 'clb_serie_act1', 5), loF.clb_serie_act1, NULL)
|
||||
ENDIF
|
||||
IF VARTYPE(loSerie) = 'O'
|
||||
lcA = lcA + "serie.nid_tipdoc=" + TRANSFORM(loSerie.nid_tipdoc) + " nTip=" + TRANSFORM(loSerie.nTip) ;
|
||||
+ " cb.vis=" + TRANSFORM(loSerie._cbbase1.Visible) + " tx.vis=" + TRANSFORM(loSerie.text_simplu1.Visible) ;
|
||||
+ " cb.val=" + TRANSFORM(loSerie._cbbase1.Value) + CHR(13) + CHR(10)
|
||||
ELSE
|
||||
lcA = lcA + "serie=<lipsa>" + CHR(13) + CHR(10)
|
||||
ENDIF
|
||||
lcA = lcA + "GENERATOR:" + CHR(13) + CHR(10) + gcMockApeluri
|
||||
lcA = lcA + "ERORI:" + CHR(13) + CHR(10) + gcErr
|
||||
loF.Release()
|
||||
RELEASE loF
|
||||
RETURN lcA
|
||||
ENDFUNC
|
||||
|
||||
PROCEDURE DifLinii
|
||||
LPARAMETERS tcV, tcN
|
||||
LOCAL laV[1], laN[1], lnV, lnN, i, lnMax
|
||||
lnV = ALINES(laV, tcV)
|
||||
lnN = ALINES(laN, tcN)
|
||||
lnMax = MAX(lnV, lnN)
|
||||
FOR i = 1 TO lnMax
|
||||
IF i > lnV OR i > lnN OR !(laV[i] == laN[i])
|
||||
DO AfLog WITH " vechi: " + IIF(i <= lnV, laV[i], "<lipsa>")
|
||||
DO AfLog WITH " nou : " + IIF(i <= lnN, laN[i], "<lipsa>")
|
||||
ENDIF
|
||||
ENDFOR
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Assert
|
||||
LPARAMETERS tlCond, tcMsg
|
||||
IF tlCond
|
||||
gnPass = gnPass + 1
|
||||
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 + CHR(13) + CHR(10)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Final
|
||||
DO AfLog WITH "TOTAL pass=" + TRANSFORM(gnPass) + " fail=" + TRANSFORM(gnFail) + " divergente-asteptate(Q8)=" + TRANSFORM(gnDivergenteQ8)
|
||||
DO AfLog WITH "END " + TTOC(DATETIME())
|
||||
QUIT
|
||||
ENDPROC
|
||||
|
||||
Reference in New Issue
Block a user