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).
85 lines
3.0 KiB
Plaintext
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
|