Files
comun/utile/Teste/test_repro_podate_unknown_member.prg
Marius Mutu 6aebd474fc Teste headless: verificare ANAF la alegerea clientului cu contract activ
Harness ROAACNPRO-specific (gcAppPath propriu, spre deosebire de test_init_env_auto.prg
care e fixat pe ROACONT), shadow pentru cauta_alfa() si testul care reproduce/confirma
label-ul ANAF pe caut_client_contract_activ(), plus repro pentru scoping-ul gresit al
lui poDate in do_cauta_partener (Thisform.poDate vs poDate PRIVATE).
2026-08-03 08:13:16 +03:00

85 lines
3.0 KiB
Plaintext

* test_repro_podate_unknown_member.prg
* Reproduce eroarea raportata de utilizator (03.08.2026): "Unknown member PODATE" in
* FRM_FACTURA.DO_CAUTA_PARTENER, la clic pe but_cautare_client, in fluxul FACTURA_ACN.
*
* Cauza: fix-ul anterior a scris "Thisform.poDate.dataact", dar poDate NU e proprietate a
* formularului - e variabila PRIVATE declarata in factura_acn() (proceduri_acnpro.prg:3072),
* vizibila fara calificator in toate metodele frm_factura (folosita bar asa in ~30 de locuri:
* oacnpro.vc2 liniile 7542,7719,7747,8059 etc). Thisform.poDate nu exista => "Unknown member".
*
* Testeaza DOAR mecanismul de scoping (fara sa instantieze tot frm_factura/crsCapFactura):
* replica exact contextul - o procedura apelanta declara PRIVATE poDate, apoi o subprocedura
* (analoaga cu metoda do_cauta_partener) foloseste expresia. Verifica intai ca varianta veche
* (Thisform.poDate) DA eroarea raportata, apoi ca varianta noua (poDate bare) NU da eroare.
*
* Rulare: vfp9.exe -A -T "test_repro_podate_unknown_member.prg"
SET SAFETY OFF
SET TALK OFF
PUBLIC gcUILog
gcUILog = "D:\ROA\ROAACNPRO\COMUN\utile\Teste\test_repro_podate_unknown_member_log.txt"
STRTOFILE("START" + CHR(13)+CHR(10), gcUILog)
DO test_apelant_factura_acn
QUIT
PROCEDURE test_apelant_factura_acn
*-- replica factura_acn(): PRIVATE poDate, ramane in scop pentru tot ce se apeleaza mai jos
PRIVATE poDate
poDate = CREATEOBJECT('Empty')
ADDPROPERTY(poDate, 'dataact', DATE())
*-- instantiez un obiect minimal, cu o metoda care replica STRICT do_cauta_partener
PUBLIC goFormTest
goFormTest = CREATEOBJECT('formtest_do_cauta_partener')
*-- varianta VECHE (bug reportat): Thisform.poDate - poDate nu e proprietate a obiectului
LOCAL lcRezVechi
lcRezVechi = goFormTest.do_cauta_partener_vechi()
DO PrLogLocal WITH 'VARIANTA VECHE (Thisform.poDate): ' + lcRezVechi
*-- varianta NOUA (fix aplicat): poDate bare, gasit ca PRIVATE in call stack
LOCAL lcRezNou
lcRezNou = goFormTest.do_cauta_partener_nou()
DO PrLogLocal WITH 'VARIANTA NOUA (poDate bare): ' + lcRezNou
DO PrLogLocal WITH 'GATA'
ENDPROC
DEFINE CLASS formtest_do_cauta_partener AS Form
PROCEDURE do_cauta_partener_vechi
LOCAL lcRes
lcRes = 'NEASTEPTAT: nu a aruncat eroare'
TRY
LOCAL ldDataTest
ldDataTest = Thisform.poDate.dataact
lcRes = 'NEASTEPTAT: Thisform.poDate.dataact a functionat, data=' + TRANSFORM(m.ldDataTest)
CATCH TO loExc
lcRes = 'EROARE REPRODUSA: ErrorNo=' + TRANSFORM(loExc.ErrorNo) + ' Message=' + loExc.Message
ENDTRY
RETURN m.lcRes
ENDPROC
PROCEDURE do_cauta_partener_nou
LOCAL lcRes
lcRes = 'NEASTEPTAT: nu s-a putut evalua'
TRY
LOCAL ldDataTest
ldDataTest = poDate.dataact
lcRes = 'OK: poDate.dataact rezolvat, data=' + TRANSFORM(m.ldDataTest)
CATCH TO loExc
lcRes = 'FAIL: ErrorNo=' + TRANSFORM(loExc.ErrorNo) + ' Message=' + loExc.Message
ENDTRY
RETURN m.lcRes
ENDPROC
ENDDEFINE
PROCEDURE PrLogLocal
LPARAMETERS tcMsg
LOCAL lcL
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcUILog)
ENDPROC