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:
130
utile/Teste/test_repro_anaf_label_client_contract.prg
Normal file
130
utile/Teste/test_repro_anaf_label_client_contract.prg
Normal file
@@ -0,0 +1,130 @@
|
||||
* test_repro_anaf_label_client_contract.prg
|
||||
* Reproduce raportul utilizatorului (Marius, 03.08.2026): la alegerea clientului pe factura
|
||||
* (ROAACNPRO, frm_factura.do_cauta_partener), nu apare label-ul de verificare ANAF a codului
|
||||
* fiscal, desi acesta a fost adaugat in COMUN (ocautare.prg: clasa anaf_verif_cautare, activata
|
||||
* de caut_partener() prin parametrul tlVerificaANAF). Cauza: frm_factura foloseste in schimb
|
||||
* caut_client_contract_activ() (ocautare.prg), care nu are deloc acest parametru.
|
||||
*
|
||||
* Testeaza DOAR mecanismul comun (caut_client_contract_activ + anaf_verif_cautare.Activeaza),
|
||||
* nu UI-ul ROAACNPRO: inlocuieste cauta_alfa() cu un shadow (mock_cauta_alfa_anaf_label.prg) care
|
||||
* replica liniile 211-220 din cauta_alfa.prg (poVerifAlegere.Activeaza/Dezactiveaza) pe un formular
|
||||
* REAL cauta_alfa_form, PRE-CONSTRUIT in acest script (capcana l), fara sa mai deschida fereastra
|
||||
* (Show() modal ar bloca headless). Foloseste un partener REAL din nom_parteneri, ca verificarea
|
||||
* ANAF (goExecutor + serviciul ANAF/cache) sa ruleze pe fluxul real.
|
||||
*
|
||||
* Rulare: vfp9.exe -A -T "test_repro_anaf_label_client_contract.prg"
|
||||
* Verdict in gcUILog. Ruleaza INAINTE de fix (astept gcTestAnafActivat=.F.) si DUPA fix (astept .T.
|
||||
* + label populat), cu semnatura caut_client_contract_activ() ajustata mai jos (tlVerificaANAF).
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog
|
||||
gcUILog = "D:\ROA\ROAACNPRO\COMUN\utile\Teste\test_repro_anaf_label_client_contract_log.txt"
|
||||
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13)+CHR(10), gcUILog)
|
||||
|
||||
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||
ON SHUTDOWN QUIT
|
||||
|
||||
TRY
|
||||
*-- shadow-ul TREBUIE incarcat PRIMUL, inainte ca test_init_env_auto sa incarce cauta_alfa real
|
||||
SET PROCEDURE TO "D:\ROA\ROAACNPRO\COMUN\utile\Teste\mock_cauta_alfa_anaf_label.prg" ADDITIVE
|
||||
DO PrLogLocal WITH 'shadow cauta_alfa incarcat'
|
||||
|
||||
PUBLIC gnButon
|
||||
gnButon = 0
|
||||
|
||||
DO "D:\ROA\ROAACNPRO\COMUN\utile\Teste\test_init_env_auto_acnpro.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
||||
IF gnHandle <= 0
|
||||
DO PrLogLocal WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle)
|
||||
|
||||
*-- un partener real, cu cod fiscal completat, pentru fluxul ANAF real
|
||||
LOCAL lcSelPart, lnSuccesPart
|
||||
IF USED('crsPartTest')
|
||||
USE IN ('crsPartTest')
|
||||
ENDIF
|
||||
lcSelPart = "SELECT * FROM (SELECT id_part, denumire, cod_fiscal, tip_persoana FROM nom_parteneri " + ;
|
||||
"WHERE sters = 0 AND inactiv = 0 AND cod_fiscal IS NOT NULL AND LENGTH(TRIM(cod_fiscal)) > 0 " + ;
|
||||
"ORDER BY id_part) WHERE ROWNUM = 1"
|
||||
lnSuccesPart = goExecutor.oExecute(lcSelPart, "crsPartTest")
|
||||
IF lnSuccesPart < 0 OR RECCOUNT('crsPartTest') = 0
|
||||
DO PrLogLocal WITH 'FAIL: nu am gasit niciun partener cu cod fiscal pentru test'
|
||||
QUIT
|
||||
ENDIF
|
||||
SELECT crsPartTest
|
||||
LOCAL lnIdPartTest, lcCodFiscalTest, lcDenumireTest
|
||||
lnIdPartTest = id_part
|
||||
lcCodFiscalTest = ALLTRIM(cod_fiscal)
|
||||
lcDenumireTest = ALLTRIM(denumire)
|
||||
USE IN ('crsPartTest')
|
||||
DO PrLogLocal WITH 'partener test: id_part=' + TRANSFORM(lnIdPartTest) + ' cod_fiscal=' + lcCodFiscalTest + ' denumire=' + lcDenumireTest
|
||||
|
||||
*-- cursorul cu FORMA EXACTA produsa de caut_client_contract_activ (ocautare.prg ~4054-4060):
|
||||
*-- id_ctr, id_part, denumire, cod_fiscal, data, numar, data_inceput, data_sfarsit, nr_zile_scadenta, tip_curs
|
||||
LOCAL lcCurTest
|
||||
lcCurTest = SYS(2015)
|
||||
IF USED(lcCurTest)
|
||||
USE IN (lcCurTest)
|
||||
ENDIF
|
||||
CREATE CURSOR (lcCurTest) (id_ctr N(10), id_part N(10), denumire C(100), cod_fiscal C(50), ;
|
||||
data D, numar C(100), data_inceput D, data_sfarsit D, nr_zile_scadenta N(10), tip_curs N(10))
|
||||
INSERT INTO (lcCurTest) (id_part, denumire, cod_fiscal) VALUES (lnIdPartTest, lcDenumireTest, lcCodFiscalTest)
|
||||
GO TOP IN (lcCurTest)
|
||||
|
||||
*-- goDlgTest: formularul REAL cauta_alfa_form, PRE-CONSTRUIT aici (capcana l: CREATEOBJECT
|
||||
*-- dintr-o procedura intoarce obiect stricat in acest runtime headless)
|
||||
PUBLIC goDlgTest
|
||||
goDlgTest = CREATEOBJECT('cauta_alfa_form', lcCurTest, '', ;
|
||||
'Denumire,Cod fiscal,Contract,Data', 'denumire,cod_fiscal,numar,data', .F., 'denumire', 1)
|
||||
goDlgTest.crs_cursor = lcCurTest
|
||||
goDlgTest.WindowType = 0
|
||||
DO PrLogLocal WITH 'goDlgTest construit (cauta_alfa_form real, cursor=' + lcCurTest + ')'
|
||||
|
||||
PUBLIC gcTestAnafActivat, gcTestAnafLabelType, gcTestAnafLabelVisible, gcTestAnafLabelCaption, gcTestDiag
|
||||
|
||||
*-- ================= apelul real testat =================
|
||||
LOCAL loCauta
|
||||
loCauta = caut_client_contract_activ('', 0, 0, .T., DATE())
|
||||
|
||||
DO PrLogLocal WITH 'caut_client_contract_activ() finalizat'
|
||||
DO PrLogLocal WITH 'DIAG: ' + gcTestDiag
|
||||
DO PrLogLocal WITH 'gcTestAnafActivat=' + TRANSFORM(gcTestAnafActivat) + ;
|
||||
' gcTestAnafLabelType=' + gcTestAnafLabelType + ;
|
||||
' gcTestAnafLabelVisible=' + TRANSFORM(gcTestAnafLabelVisible) + ;
|
||||
' gcTestAnafLabelCaption=[' + gcTestAnafLabelCaption + ']'
|
||||
|
||||
IF gcTestAnafActivat AND gcTestAnafLabelType == 'O'
|
||||
DO PrLogLocal WITH 'PASS: label-ul ANAF (lb_anaf) e creat si activat de caut_client_contract_activ'
|
||||
ELSE
|
||||
DO PrLogLocal WITH 'FAIL (asteptat inainte de fix): label-ul ANAF NU e creat - caut_client_contract_activ nu instantiaza poVerifAlegere'
|
||||
ENDIF
|
||||
|
||||
DO PrLogLocal WITH 'GATA'
|
||||
CATCH TO loExcMain
|
||||
DO PrLogLocal WITH 'CATCH ErrorNo=' + TRANSFORM(loExcMain.ErrorNo) + ' Message=' + loExcMain.Message + ;
|
||||
' Proc=' + loExcMain.Procedure + ' Line=' + TRANSFORM(loExcMain.LineNo) + ' [' + loExcMain.LineContents + ']'
|
||||
ENDTRY
|
||||
|
||||
QUIT
|
||||
|
||||
PROCEDURE PrErrLocal
|
||||
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
||||
DO PrLogLocal WITH 'ON ERROR ' + TRANSFORM(tnErr) + ' [' + tcProg + ':' + TRANSFORM(tnLine) + '] ' + tcMsg
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE PrLogLocal
|
||||
LPARAMETERS tcMsg
|
||||
SET SAFETY OFF
|
||||
LOCAL lcL
|
||||
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
|
||||
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcUILog)
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user