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
352 lines
16 KiB
Plaintext
352 lines
16 KiB
Plaintext
* test_s3_init_antet.prg
|
|
* Headless: paritatea antetului dupa Init intre calea veche (frm_date_factura / frm_date_aviz) si
|
|
* formularul unificat (frm_facturare_articole2), pe acelasi poDate, pentru toate tipurile de document.
|
|
*
|
|
* REZULTAT ASTEPTAT (declarat inainte de rulare, derivat din Do Case-urile din Init-urile sursa,
|
|
* ofacturare.vc2 frm_date_factura.Init si frm_date_aviz.Init; "prezent" = apartenenta la colectia
|
|
* Objects a formularului - dupa RemoveObject, PEMSTATUS(...,5) si TYPE() raman .T./'O'):
|
|
*
|
|
* A. Paritate completa vechi vs unificat, pentru fiecare control de antet al formularului-sursa
|
|
* (mapare de nume: Ct_clb_fdoc -> clb_fdoc, Clb_serie_act -> Clb_serie_act1), pe
|
|
* gnScadereStoc in {0,1} x tip factura {1,2,3,4,5,7,8,9,10,45,48,49,52} x tip aviz
|
|
* {21,22,23,24,25,26,28,29,41,42,47} x rezultat_serii {valoarea reala din Oracle, 0 fortat}.
|
|
* Asteptat: prezenta identica pe toate; etichetele ct_clb_altele / ct_clb_nume_client identice cand
|
|
* Init le seteaza (23/25/41); eticheta implicita a clientului difera prin proiectare: "Nume client" pe
|
|
* vechi, "Client" pe prototip (ADD OBJECT, inventarul S1) - se asserteaza "Client" pe unificat.
|
|
* B. Esantion declarat explicit (din cod):
|
|
* - factura tip 1, gnScadereStoc=0: eliminate ct_clb_gestiune_init, ct_clb_responsabil, ct_clb_altele,
|
|
* ct_clb_valuta (in_valuta=0); prezente clb_dataireg, clb_dataact, clb_data_scadenta, clb_zi_curs,
|
|
* clb_nract, ct_clb_nume_client, ct_clb_venchelt, ct_clb_sectie, ct_clb_lucrare, ed_tx_simplu1.
|
|
* - factura tip 2, gnScadereStoc=0: ct_clb_altele prezent cu eticheta "Nr. contract".
|
|
* - factura tip 8: clb_zi_curs eliminat.
|
|
* - factura tip 5 (in_valuta=1): ct_clb_valuta prezent.
|
|
* - aviz tip 22, gnScadereStoc=0: eliminate ct_clb_responsabil, ct_clb_gestiune_init,
|
|
* ct_clb_politici_preturi, ct_clb_altele.
|
|
* - aviz tip 23: ct_clb_venchelt eliminat; etichete "Gestiune sursa" (client) / "Gestiune destinatie" (altele);
|
|
* ct_clb_politici_preturi prezent.
|
|
* - aviz tip 41: Lb_titlu_alb_b121.Caption = "RETUR TRANSFER" pe ambele; etichete "Retur de la" / "Retur la".
|
|
* - aviz tip 21, gnScadereStoc=1: ct_clb_gestiune_init prezent (ramane pe 21,25,26,28,42,47).
|
|
* C. Pe unificat, in plus fata de sursa:
|
|
* - factura: Ct_clb_politici_preturi ABSENT; aviz: txtCodFiscal, lblCodFiscal, txtSoldLei, lblSoldLei,
|
|
* But_verifica1 ABSENTE; aviz: clb_fdoc.cboFdoc.Enabled = .F. si Value = "AVIZ".
|
|
* - Clb_serie_act1.nid_tipdoc = poDate.nIdTipDoc (6 pe aviz, nu 5 din ADD OBJECT) cand e prezent.
|
|
* - Createobject pe aviz NU cade (cboFdoc.Init cu nIdTipDocAvizExpeditie).
|
|
* - tip 1 cu id_client real: nSoldLei/nSoldValuta identice cu frm_date_factura.
|
|
* D. Neregresie calea veche: test_s3_neregresie_vechi.prg (acelasi inventar rulat numai pe vechi,
|
|
* comparat cu backup-ul .pre_s3_1.bak.vcx).
|
|
*
|
|
* Netestabil headless: focusul final (SetFocus fara Show) - ramane pentru testul UI.
|
|
*
|
|
* Rulare: vfp9.exe -A -T "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\test_s3_init_antet.prg"
|
|
* Log: D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_s3_init_antet.log
|
|
* Mediu: ROA_CENTRAL / MARIUSM_AUTO; seriile de facturi (tipdoc 5) sunt pe utilizator -> gnIdUtil = 8.
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
SET NOTIFY OFF
|
|
PUBLIC gcLog, gnFail, gnPass, gcCaz
|
|
gcLog = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_s3_init_antet.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 = ""
|
|
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
|
|
SET PROCEDURE TO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
|
|
PUBLIC gcMockUltimMesaj, gnMockUltimTip
|
|
gcMockUltimMesaj = ""
|
|
gnMockUltimTip = 0
|
|
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;])
|
|
DO AfLog WITH "ENV OK, gnAn=" + TRANSFORM(gnAn) + " gnLuna=" + TRANSFORM(gnLuna) + " gnScadentaAutomata=" + TRANSFORM(gnScadentaAutomata)
|
|
* gridextras.vcx e referit din ofacturare.vcx cu cale relativa (..\utile\gridextras), rezolvabila doar din exe/IDE
|
|
SET PATH TO "D:\ROA\ROAFACTURARE\COMUN\utile\gridextras" ADDITIVE
|
|
|
|
PRIVATE poDate, poGeneratorNumere, plVizibil
|
|
plVizibil = .F.
|
|
poGeneratorNumere = CREATEOBJECT("oGeneratorNumere")
|
|
|
|
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'
|
|
* grd_factura.cGestiune e legat la crsFactura.gestiune, camp inexistent in creeaza_facturacrs (nume_gestiune)
|
|
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
|
|
|
|
* un client real pentru cazul id_client <> 0 (GetSoldClient)
|
|
LOCAL lnIdClient
|
|
lnIdClient = 0
|
|
IF SQLEXEC(gnHandle, "select min(id_part) as id_part from nom_parteneri", "crsclient") > 0
|
|
lnIdClient = NVL(crsclient.id_part, 0)
|
|
USE IN crsclient
|
|
ENDIF
|
|
DO AfLog WITH "id_client de test=" + TRANSFORM(lnIdClient)
|
|
|
|
LOCAL laFact[13], laAviz[11], lnStoc, i, lnTip, lnSerii, lcSerii
|
|
laFact[1] = 1
|
|
laFact[2] = 2
|
|
laFact[3] = 3
|
|
laFact[4] = 4
|
|
laFact[5] = 5
|
|
laFact[6] = 7
|
|
laFact[7] = 8
|
|
laFact[8] = 9
|
|
laFact[9] = 10
|
|
laFact[10] = 45
|
|
laFact[11] = 48
|
|
laFact[12] = 49
|
|
laFact[13] = 52
|
|
laAviz[1] = 21
|
|
laAviz[2] = 22
|
|
laAviz[3] = 23
|
|
laAviz[4] = 24
|
|
laAviz[5] = 25
|
|
laAviz[6] = 26
|
|
laAviz[7] = 28
|
|
laAviz[8] = 29
|
|
laAviz[9] = 41
|
|
laAviz[10] = 42
|
|
laAviz[11] = 47
|
|
|
|
FOR lnStoc = 0 TO 1
|
|
gnScadereStoc = lnStoc
|
|
FOR lnSerii = 1 TO 2
|
|
lcSerii = IIF(lnSerii = 1, "real", "0")
|
|
FOR i = 1 TO 13
|
|
DO Caz WITH laFact[i], .F., lcSerii, 0
|
|
ENDFOR
|
|
FOR i = 1 TO 11
|
|
DO Caz WITH laAviz[i], .T., lcSerii, 0
|
|
ENDFOR
|
|
ENDFOR
|
|
ENDFOR
|
|
* cazul cu client real (sold)
|
|
gnScadereStoc = 0
|
|
IF lnIdClient <> 0
|
|
DO Caz WITH 1, .F., "real", lnIdClient
|
|
ENDIF
|
|
|
|
DO Final
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
PROCEDURE Caz
|
|
LPARAMETERS tnTip, tlAviz, tcSerii, tnIdClient
|
|
LOCAL loVechi, loNou, lcVechi, lnCtrl, lcCtrl, lcCtrlNou, llV, llN, lcEtV, lcEtN
|
|
gcCaz = "[tip=" + TRANSFORM(tnTip) + " stoc=" + TRANSFORM(gnScadereStoc) + " serii=" + tcSerii + IIF(tnIdClient <> 0, " client=" + TRANSFORM(tnIdClient), "") + "] "
|
|
poDate = NULL
|
|
poDate = CREATEOBJECT("oDateFactura", 25000 + tnTip - 1 + gnScadereStoc * 10, tnTip)
|
|
poDate.nIdTipDoc = IIF(tlAviz, 6, 5)
|
|
IF tnIdClient <> 0
|
|
poDate.id_client = tnIdClient
|
|
ENDIF
|
|
poGeneratorNumere.ResetNumere()
|
|
IF tcSerii = "real"
|
|
poDate.rezultat_serii = poGeneratorNumere.creeaza_cursor_serii(poDate.nIdTipDoc)
|
|
ELSE
|
|
poDate.rezultat_serii = 0
|
|
ENDIF
|
|
DO AfLog WITH gcCaz + "in_valuta=" + TRANSFORM(poDate.in_valuta) + " rezultat_serii=" + TRANSFORM(poDate.rezultat_serii) + " amessagebox=[" + gcMockUltimMesaj + "]"
|
|
gcMockUltimMesaj = ""
|
|
|
|
lcVechi = IIF(tlAviz, 'frm_date_aviz', 'frm_date_factura')
|
|
loVechi = CREATEOBJECT(lcVechi)
|
|
IF VARTYPE(loVechi) <> 'O'
|
|
DO Assert WITH .F., "Createobject " + lcVechi
|
|
RETURN
|
|
ENDIF
|
|
loNou = CREATEOBJECT('frm_facturare_articole2')
|
|
IF VARTYPE(loNou) <> 'O'
|
|
DO Assert WITH .F., "Createobject frm_facturare_articole2"
|
|
loVechi.Release()
|
|
RETURN
|
|
ENDIF
|
|
|
|
* A. paritate prezenta pe controalele formularului-sursa
|
|
LOCAL laCtrl[21]
|
|
IF tlAviz
|
|
lnCtrl = 14
|
|
laCtrl[1] = "Clb_dataireg"
|
|
laCtrl[2] = "Clb_dataact"
|
|
laCtrl[3] = "Clb_zi_curs"
|
|
laCtrl[4] = "Ct_clb_fdoc"
|
|
laCtrl[5] = "Clb_serie_act"
|
|
laCtrl[6] = "Clb_nract"
|
|
laCtrl[7] = "Ct_clb_nume_client"
|
|
laCtrl[8] = "Ct_clb_altele"
|
|
laCtrl[9] = "Ct_clb_gestiune_init"
|
|
laCtrl[10] = "Ct_clb_politici_preturi"
|
|
laCtrl[11] = "Ct_clb_venchelt"
|
|
laCtrl[12] = "Ct_clb_sectie"
|
|
laCtrl[13] = "Ct_clb_responsabil"
|
|
laCtrl[14] = "Ct_clb_lucrare"
|
|
ELSE
|
|
lnCtrl = 21
|
|
laCtrl[1] = "Clb_dataireg"
|
|
laCtrl[2] = "Clb_dataact"
|
|
laCtrl[3] = "Clb_data_scadenta"
|
|
laCtrl[4] = "Clb_zi_curs"
|
|
laCtrl[5] = "Ct_clb_fdoc"
|
|
laCtrl[6] = "Clb_serie_act"
|
|
laCtrl[7] = "Clb_nract"
|
|
laCtrl[8] = "Ct_clb_nume_client"
|
|
laCtrl[9] = "txtCodFiscal"
|
|
laCtrl[10] = "lblCodFiscal"
|
|
laCtrl[11] = "txtSoldLei"
|
|
laCtrl[12] = "lblSoldLei"
|
|
laCtrl[13] = "But_verifica1"
|
|
laCtrl[14] = "Ct_clb_altele"
|
|
laCtrl[15] = "Ct_clb_gestiune_init"
|
|
laCtrl[16] = "Ct_clb_valuta"
|
|
laCtrl[17] = "Ct_clb_venchelt"
|
|
laCtrl[18] = "Ct_clb_sectie"
|
|
laCtrl[19] = "Ct_clb_responsabil"
|
|
laCtrl[20] = "Ct_clb_lucrare"
|
|
laCtrl[21] = "Ed_tx_simplu1"
|
|
ENDIF
|
|
FOR i = 1 TO lnCtrl
|
|
lcCtrl = laCtrl[i]
|
|
lcCtrlNou = ICASE(lcCtrl == "Ct_clb_fdoc", "clb_fdoc", lcCtrl == "Clb_serie_act", "Clb_serie_act1", lcCtrl)
|
|
llV = ObjExists(loVechi, lcCtrl)
|
|
llN = ObjExists(loNou, lcCtrlNou)
|
|
DO Assert WITH llV = llN, "prezenta " + lcCtrl + " vechi=" + TRANSFORM(llV) + " nou=" + TRANSFORM(llN)
|
|
ENDFOR
|
|
* etichete
|
|
IF ObjExists(loVechi, "Ct_clb_altele") AND ObjExists(loNou, "Ct_clb_altele")
|
|
lcEtV = loVechi.Ct_clb_altele.clb_tx_cautare.Lb_simplu1.Caption
|
|
lcEtN = loNou.Ct_clb_altele.clb_tx_cautare.Lb_simplu1.Caption
|
|
DO Assert WITH lcEtV == lcEtN, "eticheta altele vechi=[" + lcEtV + "] nou=[" + lcEtN + "]"
|
|
ENDIF
|
|
IF ObjExists(loVechi, "Ct_clb_nume_client") AND ObjExists(loNou, "Ct_clb_nume_client")
|
|
lcEtV = loVechi.Ct_clb_nume_client.clb_tx_cautare.Lb_simplu1.Caption
|
|
lcEtN = loNou.Ct_clb_nume_client.clb_tx_cautare.Lb_simplu1.Caption
|
|
IF lcEtV == "Nume client"
|
|
* eticheta implicita difera prin proiectare (prototip: "Client"); Init n-a schimbat-o
|
|
DO Assert WITH lcEtN == "Client", "eticheta client implicita nou=[" + lcEtN + "] asteptat [Client]"
|
|
ELSE
|
|
DO Assert WITH lcEtV == lcEtN, "eticheta client vechi=[" + lcEtV + "] nou=[" + lcEtN + "]"
|
|
ENDIF
|
|
ENDIF
|
|
* nid_tip
|
|
DO Assert WITH loNou.nid_tip = poDate.tip AND loVechi.nid_tip = poDate.tip, "nid_tip = poDate.tip"
|
|
|
|
* C. specific unificat
|
|
IF tlAviz
|
|
DO Assert WITH !ObjExists(loNou, "txtCodFiscal") AND !ObjExists(loNou, "lblCodFiscal") AND !ObjExists(loNou, "txtSoldLei") ;
|
|
AND !ObjExists(loNou, "lblSoldLei") AND !ObjExists(loNou, "But_verifica1"), "aviz: controalele de client/sold eliminate"
|
|
DO Assert WITH !loNou.clb_fdoc.cboFdoc.Enabled, "aviz: cboFdoc dezactivat"
|
|
DO Assert WITH ALLTRIM(loNou.clb_fdoc.cboFdoc.Value) == "AVIZ", "aviz: cboFdoc.Value=[" + TRANSFORM(loNou.clb_fdoc.cboFdoc.Value) + "]"
|
|
IF tnTip = 41
|
|
DO Assert WITH loNou.Lb_titlu_alb_b121.Caption == "RETUR TRANSFER" AND loVechi.Lb_titlu_alb_b121.Caption == "RETUR TRANSFER", ;
|
|
"aviz 41: titlu nou=[" + loNou.Lb_titlu_alb_b121.Caption + "] vechi=[" + loVechi.Lb_titlu_alb_b121.Caption + "]"
|
|
ENDIF
|
|
ELSE
|
|
DO Assert WITH !ObjExists(loNou, "Ct_clb_politici_preturi"), "factura: Ct_clb_politici_preturi eliminat"
|
|
DO Assert WITH loNou.clb_fdoc.cboFdoc.Enabled, "factura: cboFdoc activ"
|
|
IF tnIdClient <> 0
|
|
DO Assert WITH loNou.nSoldLei = loVechi.nSoldLei AND loNou.nSoldValuta = loVechi.nSoldValuta, ;
|
|
"sold client nou=" + TRANSFORM(loNou.nSoldLei) + "/" + TRANSFORM(loNou.nSoldValuta) + " vechi=" + TRANSFORM(loVechi.nSoldLei) + "/" + TRANSFORM(loVechi.nSoldValuta)
|
|
ENDIF
|
|
ENDIF
|
|
IF ObjExists(loNou, "Clb_serie_act1")
|
|
DO Assert WITH loNou.Clb_serie_act1.nid_tipdoc = poDate.nIdTipDoc, "Clb_serie_act1.nid_tipdoc=" + TRANSFORM(loNou.Clb_serie_act1.nid_tipdoc) + " asteptat " + TRANSFORM(poDate.nIdTipDoc)
|
|
ENDIF
|
|
|
|
* B. esantionul declarat explicit
|
|
DO CASE
|
|
CASE !tlAviz AND tnTip = 1 AND gnScadereStoc = 0
|
|
DO Assert WITH !ObjExists(loNou, "Ct_clb_gestiune_init") AND !ObjExists(loNou, "Ct_clb_responsabil") AND !ObjExists(loNou, "Ct_clb_altele") AND !ObjExists(loNou, "Ct_clb_valuta"), "B: tip 1 eliminate gestiune_init/responsabil/altele/valuta"
|
|
DO Assert WITH ObjExists(loNou, "Clb_dataireg") AND ObjExists(loNou, "Clb_dataact") AND ObjExists(loNou, "Clb_data_scadenta") AND ObjExists(loNou, "Clb_zi_curs") ;
|
|
AND ObjExists(loNou, "Clb_nract") AND ObjExists(loNou, "Ct_clb_nume_client") AND ObjExists(loNou, "Ct_clb_venchelt") AND ObjExists(loNou, "Ct_clb_sectie") ;
|
|
AND ObjExists(loNou, "Ct_clb_lucrare") AND ObjExists(loNou, "Ed_tx_simplu1"), "B: tip 1 prezente restul"
|
|
CASE !tlAviz AND tnTip = 2 AND gnScadereStoc = 0
|
|
DO Assert WITH ObjExists(loNou, "Ct_clb_altele") AND loNou.Ct_clb_altele.clb_tx_cautare.Lb_simplu1.Caption == "Nr. contract", "B: tip 2 altele = Nr. contract"
|
|
CASE !tlAviz AND tnTip = 8
|
|
DO Assert WITH !ObjExists(loNou, "Clb_zi_curs"), "B: tip 8 clb_zi_curs eliminat"
|
|
CASE !tlAviz AND tnTip = 5
|
|
DO Assert WITH ObjExists(loNou, "Ct_clb_valuta"), "B: tip 5 ct_clb_valuta prezent"
|
|
CASE tlAviz AND tnTip = 22 AND gnScadereStoc = 0
|
|
DO Assert WITH !ObjExists(loNou, "Ct_clb_responsabil") AND !ObjExists(loNou, "Ct_clb_gestiune_init") AND !ObjExists(loNou, "Ct_clb_politici_preturi") AND !ObjExists(loNou, "Ct_clb_altele"), "B: tip 22 eliminate responsabil/gestiune_init/politici/altele"
|
|
CASE tlAviz AND tnTip = 23
|
|
DO Assert WITH !ObjExists(loNou, "Ct_clb_venchelt") AND ObjExists(loNou, "Ct_clb_politici_preturi"), "B: tip 23 venchelt eliminat, politici prezent"
|
|
DO Assert WITH loNou.Ct_clb_nume_client.clb_tx_cautare.Lb_simplu1.Caption == "Gestiune sursa" AND loNou.Ct_clb_altele.clb_tx_cautare.Lb_simplu1.Caption == "Gestiune destinatie", "B: tip 23 etichete gestiune sursa/destinatie"
|
|
CASE tlAviz AND tnTip = 41
|
|
DO Assert WITH loNou.Ct_clb_nume_client.clb_tx_cautare.Lb_simplu1.Caption == "Retur de la" AND loNou.Ct_clb_altele.clb_tx_cautare.Lb_simplu1.Caption == "Retur la", "B: tip 41 etichete retur"
|
|
CASE tlAviz AND tnTip = 21 AND gnScadereStoc = 1
|
|
DO Assert WITH ObjExists(loNou, "Ct_clb_gestiune_init"), "B: tip 21 stoc=1 gestiune_init prezent"
|
|
ENDCASE
|
|
|
|
loNou.Release()
|
|
loVechi.Release()
|
|
RELEASE loNou, loVechi
|
|
IF poDate.rezultat_serii <> 0
|
|
poGeneratorNumere.dezaloca_numar(poDate.nIdTipDoc)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNCTION ObjExists
|
|
* prezenta reala in colectia Objects, cautare recursiva - controalele pot fi in containere
|
|
LPARAMETERS toContainer, tcName
|
|
LOCAL i, loO
|
|
FOR i = 1 TO toContainer.Objects.Count
|
|
loO = toContainer.Objects(i)
|
|
IF UPPER(loO.Name) == UPPER(tcName)
|
|
RETURN .T.
|
|
ENDIF
|
|
IF TYPE('loO.Objects.Count') = 'N'
|
|
IF ObjExists(loO, tcName)
|
|
RETURN .T.
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
RETURN .F.
|
|
ENDFUNC
|
|
|
|
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
|
|
* preexistent pe calea veche, vizibil doar fiindca testul tine formularul vechi viu cand Init-ul unificat muta
|
|
* focusul: _combobox1.LostFocus -> do_schimba_tipdoc -> clb_serie_act eliminat la rezultat_serii=0 (1925)
|
|
IF tnErr = 1925 AND UPPER(tcProg) == "FRM_DATE_FACTURA.DO_SCHIMBA_TIPDOC" AND "CLB_SERIE_ACT" $ UPPER(tcMsg)
|
|
DO AfLog WITH "PREEXISTENT (vechi, neconsiderat) " + gcCaz + TRANSFORM(tnErr) + " [" + tcProg + ":" + TRANSFORM(tnLine) + "] " + tcMsg
|
|
RETURN
|
|
ENDIF
|
|
gnFail = gnFail + 1
|
|
DO AfLog WITH "ERROR " + gcCaz + TRANSFORM(tnErr) + " [" + tcProg + ":" + TRANSFORM(tnLine) + "] " + tcMsg
|
|
ENDPROC
|
|
|
|
PROCEDURE Final
|
|
DO AfLog WITH "TOTAL pass=" + TRANSFORM(gnPass) + " fail=" + TRANSFORM(gnFail)
|
|
DO AfLog WITH "END " + TTOC(DATETIME())
|
|
QUIT
|
|
ENDPROC
|