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).
This commit is contained in:
84
utile/Teste/test_repro_podate_unknown_member.prg
Normal file
84
utile/Teste/test_repro_podate_unknown_member.prg
Normal file
@@ -0,0 +1,84 @@
|
||||
* 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
|
||||
Reference in New Issue
Block a user