- validare.prg: cele 7 campuri de perioada (inregistrare TVA, TVA la incasare, inactivare/reactivare) duse din raspunsul ANAF pana in cVerificareCod - validare.prg: AnafDecodeResponseText - raspunsul HTTP se citeste din responseBody prin ADODB.Stream cu Charset utf-8, cu cadere inapoi pe comportamentul vechi; repara diacriticele pierdute la marshalling-ul COM al lui responseText - oproceduri_comune.prg: perioadele in mesajul de detalii; fix id_part N(16), data D in crsXMLParteneriVerificare (Insert Into esua tacit, lista ramanea goala) - overificari.vc2: 7 coloane noi in grid, dublu-click pe Denumire/Cod fiscal deschide fisa partenerului, captionuri corectate in "inregistrare TVA" - oparteneri / ofacturare_comun / onomenclatoare: id_part in SELECT-urile care alimenteaza verificarea - teste headless noi: utile/Teste/test_todo21_perioade_anaf.prg, utile/Teste/todo21/ Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GztNyTRxjHqBg5kyNMmcy1
281 lines
12 KiB
Plaintext
281 lines
12 KiB
Plaintext
* test_todo21_grid_dblclick.prg
|
|
* TODO #21, benzile A (coloanele de perioada in grid-ul de verificare coduri fiscale) si C
|
|
* (dublu-click pe denumire/cod fiscal ROA -> editare partener, coloanele ANAF raman pe verificare).
|
|
* Instantiaza DIRECT frm_verificare_parteneri (COMUN\clase\overificari.vc2), fara Show(1) modal -
|
|
* cursorul crsVerificareParteneri e construit ca in oproceduri_comune.prg (verificare_parteneri),
|
|
* fara sa treaca prin acea procedura (care ar deschide formularul modal).
|
|
*
|
|
* Mock-uri (fisiere DIFERITE de overificari.vc2 - rezolutia "primul incarcat" e sigura):
|
|
* mock_amessagebox.prg - dialogul "partener neidentificat"
|
|
* mock_meniu_dblclick_deps.prg - nom_parteneri_modifica si VerificaCodFiscal (numara apelurile)
|
|
*
|
|
* Coduri de test: un cod fiscal REAL cu perioada ANAF (ales dinamic din istoric_coduri_fiscale,
|
|
* ca in test_todo21_perioade_anaf.prg) si un partener REAL din NOM_PARTENERI (ales dinamic, cel
|
|
* mai nou activ), plus un rand cu id_part = 0 pentru cazul "partener neidentificat".
|
|
*
|
|
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\test_todo21_grid_dblclick.prg"
|
|
* Verdict in log: TOTAL OK / TOTAL FAIL: n pas(i).
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
SET DELETED ON
|
|
SET EXACT ON
|
|
SET CENTURY ON
|
|
SET DATE DMY
|
|
SET NULLDISPLAY TO ''
|
|
CLOSE DATABASES
|
|
|
|
PUBLIC gcLog
|
|
gcLog = "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\test_todo21_grid_dblclick_log.txt"
|
|
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog)
|
|
|
|
PUBLIC gnEsecuri
|
|
gnEsecuri = 0
|
|
|
|
ON ERROR DO PrErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
PUBLIC gcMockUltimMesaj, gnMockUltimTip, gnMockRaspuns
|
|
gcMockUltimMesaj = ''
|
|
gnMockUltimTip = 0
|
|
gnMockRaspuns = 6
|
|
|
|
PUBLIC gnMockNomModCount, gnMockNomModId, gnMockVerifCodCount
|
|
gnMockNomModCount = 0
|
|
gnMockNomModId = 0
|
|
gnMockVerifCodCount = 0
|
|
|
|
TRY
|
|
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
|
|
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\mock_meniu_dblclick_deps.prg" ADDITIVE
|
|
DO PrLog WITH 'mock-uri incarcate'
|
|
|
|
DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
|
IF gnHandle <= 0
|
|
DO PrLog WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
|
|
gnEsecuri = gnEsecuri + 1
|
|
DO PrLog WITH 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)'
|
|
QUIT
|
|
ENDIF
|
|
DO PrLog WITH 'mediu OK, schema=' + gcS
|
|
|
|
*-- cod fiscal real cu perioada ANAF, pentru banda A2 (do_verifica)
|
|
LOCAL lcSql, lcCodAnaf
|
|
TEXT TO lcSql NOSHOW
|
|
select cod_fiscal_n from (
|
|
select cod_fiscal_n from istoric_coduri_fiscale
|
|
where (data_inceput_tvainc is not null or data_inactivare is not null) and cod_fiscal_n is not null
|
|
order by dataorav_anaf desc) where rownum <= 1
|
|
ENDTEXT
|
|
lcCodAnaf = ''
|
|
IF goExecutor.oExecuta(lcSql, 'crsGD1') AND USED('crsGD1') AND RECCOUNT('crsGD1') > 0
|
|
lcCodAnaf = ALLTRIM(TRANSFORM(NVL(crsGD1.cod_fiscal_n, 0)))
|
|
ENDIF
|
|
USE IN (SELECT('crsGD1'))
|
|
DO PrLog WITH 'cod fiscal ANAF de test: [' + lcCodAnaf + ']'
|
|
|
|
*-- partener real activ, pentru banda C (dublu-click -> editare partener)
|
|
LOCAL lnIdPartTest, lcCodFiscalPart, lcDenumirePart
|
|
TEXT TO lcSql NOSHOW
|
|
select id_part, cod_fiscal, denumire from (
|
|
select id_part, cod_fiscal, denumire from nom_parteneri
|
|
where nvl(inactiv,0) = 0 and nvl(sters,0) = 0 and not cod_fiscal is null
|
|
order by id_part desc) where rownum <= 1
|
|
ENDTEXT
|
|
lnIdPartTest = 0
|
|
lcCodFiscalPart = ''
|
|
lcDenumirePart = ''
|
|
IF goExecutor.oExecuta(lcSql, 'crsGD2') AND USED('crsGD2') AND RECCOUNT('crsGD2') > 0
|
|
lnIdPartTest = NVL(crsGD2.id_part, 0)
|
|
lcCodFiscalPart = ALLTRIM(NVL(crsGD2.cod_fiscal, ''))
|
|
lcDenumirePart = ALLTRIM(NVL(crsGD2.denumire, ''))
|
|
ENDIF
|
|
USE IN (SELECT('crsGD2'))
|
|
DO PrLog WITH 'partener de test: id_part=' + TRANSFORM(lnIdPartTest) + ' cod=[' + lcCodFiscalPart + '] denumire=[' + lcDenumirePart + ']'
|
|
|
|
IF EMPTY(lcCodAnaf) OR lnIdPartTest = 0
|
|
DO PrLog WITH 'FAIL: nu s-au gasit date de test (cod fiscal ANAF sau partener activ)'
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
*-- cursorul EXACT ca in oproceduri_comune.prg:4584 (verificare_parteneri), fara sa apelam
|
|
*-- acea procedura (Show(1) modal) - Load-ul formularului adauga singur cele 7 campuri noi
|
|
CREATE CURSOR crsVerificareParteneri (ales L, denumire C(100) NULL, cod_fiscal C(30) NULL, Valid L NULL, ;
|
|
firma C(100) NULL, cod C(100) NULL, adresa_roa C(250) NULL, adresa C(250) NULL, ;
|
|
judet C(100) NULL, regcom C(30) NULL, codpostal C(20) NULL, telefon C(30) NULL, fax C(30) NULL, ;
|
|
datatvamfin C(30) NULL, platitortvamfin L NULL, VIES L NULL, PlatitorTVA L NULL, eroare C(250) NULL, ;
|
|
IsCIF L NULL, duplicat L, atribut_fiscal C(2), stare C(100), atentie C(100), cod_fiscalfro C(30) NULL, ;
|
|
id_part N(16), tvaincasare L, splittva L, inactiv L, Data D)
|
|
|
|
INSERT INTO crsVerificareParteneri (denumire, cod_fiscal, id_part) VALUES ('TEST ANAF PERIOADA', lcCodAnaf, 0)
|
|
INSERT INTO crsVerificareParteneri (denumire, cod_fiscal, id_part) VALUES (lcDenumirePart, lcCodFiscalPart, lnIdPartTest)
|
|
INSERT INTO crsVerificareParteneri (denumire, cod_fiscal, id_part) VALUES ('TEST FARA ID_PART', 'RO9999999', 0)
|
|
UPDATE crsVerificareParteneri SET IsCIF = .T.
|
|
GO TOP
|
|
|
|
PUBLIC goFormGD
|
|
goFormGD = CREATEOBJECT('frm_verificare_parteneri', .F., .T., .F., .F., .F., .T.)
|
|
goFormGD.WindowType = 0
|
|
goFormGD.Show()
|
|
DOEVENTS FORCE
|
|
DO PrLog WITH 'formular instantiat, chkANAF=' + TRANSFORM(goFormGD.chkANAF.Value)
|
|
|
|
*=====================================================================
|
|
* Banda A: grid cu 34 coloane (era 27), cele 7 noi legate pe cursorul real
|
|
*=====================================================================
|
|
IF goFormGD._grdbase1.ColumnCount = 34
|
|
DO PrLog WITH 'OK A1: _grdbase1.ColumnCount = 34'
|
|
ELSE
|
|
DO PrLog WITH 'FAIL A1: ColumnCount = ' + TRANSFORM(goFormGD._grdbase1.ColumnCount) + ' (asteptat 34)'
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
*-- coloanele redenumite sunt membri ai grid-ului dupa Name (cDataInceputScpTva...), nu dupa
|
|
*-- pozitia Column28..Column34 - VFP adreseaza obiectul din container dupa Name, nu dupa pozitie
|
|
LOCAL laCol[7,2], lnI, lcNume, lcSrc, llColOk
|
|
laCol[1,1] = 'cDataInceputScpTva'
|
|
laCol[1,2] = 'data_inceput_scptva'
|
|
laCol[2,1] = 'cDataSfarsitScpTva'
|
|
laCol[2,2] = 'data_sfarsit_scptva'
|
|
laCol[3,1] = 'cDataAnulImpScpTva'
|
|
laCol[3,2] = 'data_anul_imp_scptva'
|
|
laCol[4,1] = 'cDataInceputTvaInc'
|
|
laCol[4,2] = 'data_inceput_tvainc'
|
|
laCol[5,1] = 'cDataSfarsitTvaInc'
|
|
laCol[5,2] = 'data_sfarsit_tvainc'
|
|
laCol[6,1] = 'cDataInactivare'
|
|
laCol[6,2] = 'data_inactivare'
|
|
laCol[7,1] = 'cDataReactivare'
|
|
laCol[7,2] = 'data_reactivare'
|
|
llColOk = .T.
|
|
FOR lnI = 1 TO 7
|
|
lcNume = laCol[lnI, 1]
|
|
IF !PEMSTATUS(goFormGD._grdbase1, lcNume, 5)
|
|
llColOk = .F.
|
|
DO PrLog WITH 'FAIL A3: coloana ' + lcNume + ' nu exista ca membru al _grdbase1'
|
|
LOOP
|
|
ENDIF
|
|
lcSrc = LOWER(EVALUATE('goFormGD._grdbase1.' + lcNume + '.ControlSource'))
|
|
IF !('crsverificareparteneri.' + laCol[lnI, 2] $ lcSrc)
|
|
llColOk = .F.
|
|
DO PrLog WITH 'FAIL A3: ' + lcNume + ' ControlSource=[' + lcSrc + '] asteptat crsverificareparteneri.' + laCol[lnI, 2]
|
|
ENDIF
|
|
ENDFOR
|
|
IF llColOk
|
|
DO PrLog WITH 'OK A3: cele 7 coloane noi exista pe binarul curent, cu ControlSource corect'
|
|
ELSE
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
*-- do_verifica cu chkANAF fortat .T. in Init -> ramura serviciu web ANAF (banda A2)
|
|
goFormGD.do_verifica(.F., .T., .F.)
|
|
DO PrLog WITH 'do_verifica rulat (tlValidare=.F. tlMFIN=.T. tlVIES=.F.)'
|
|
|
|
SELECT crsVerificareParteneri
|
|
LOCATE FOR cod_fiscal = lcCodAnaf
|
|
IF FOUND()
|
|
LOCAL llArePerioada
|
|
llArePerioada = !EMPTY(crsVerificareParteneri.data_inceput_scptva) OR ;
|
|
!EMPTY(crsVerificareParteneri.data_inceput_tvainc) OR ;
|
|
!EMPTY(crsVerificareParteneri.data_inactivare)
|
|
IF llArePerioada
|
|
DO PrLog WITH 'OK A2: do_verifica a completat cel putin o perioada pentru ' + lcCodAnaf
|
|
ELSE
|
|
DO PrLog WITH 'FAIL A2: nicio perioada completata pentru ' + lcCodAnaf + ' dupa do_verifica'
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
DO PrLog WITH ' scpTVA ' + DTOC(crsVerificareParteneri.data_inceput_scptva) + '-' + DTOC(crsVerificareParteneri.data_sfarsit_scptva) + ;
|
|
' tvaInc ' + DTOC(crsVerificareParteneri.data_inceput_tvainc) + '-' + DTOC(crsVerificareParteneri.data_sfarsit_tvainc) + ;
|
|
' inactiv ' + DTOC(crsVerificareParteneri.data_inactivare) + ' reactivat ' + DTOC(crsVerificareParteneri.data_reactivare)
|
|
ELSE
|
|
DO PrLog WITH 'FAIL A2: randul de test ' + lcCodAnaf + ' nu mai exista in cursor'
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
*=====================================================================
|
|
* Banda C: dublu-click pe coloanele ROA (denumire/cod fiscal) -> editare partener;
|
|
* coloanele ANAF (firma/cod) raman pe meniul de verificare
|
|
*=====================================================================
|
|
SELECT crsVerificareParteneri
|
|
LOCATE FOR id_part = lnIdPartTest
|
|
|
|
gnMockNomModCount = 0
|
|
gnMockNomModId = 0
|
|
gnMockVerifCodCount = 0
|
|
goFormGD._grdbase1.Column2.Text1.DblClick()
|
|
IF gnMockNomModCount = 1 AND gnMockNomModId = lnIdPartTest AND gnMockVerifCodCount = 0
|
|
DO PrLog WITH 'OK C1: dublu-click Column2 (denumire) -> nom_parteneri_modifica(' + TRANSFORM(lnIdPartTest) + ')'
|
|
ELSE
|
|
DO PrLog WITH 'FAIL C1: Column2 DblClick - nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' id=' + TRANSFORM(gnMockNomModId) + ' verifcod count=' + TRANSFORM(gnMockVerifCodCount)
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
gnMockNomModCount = 0
|
|
gnMockNomModId = 0
|
|
gnMockVerifCodCount = 0
|
|
goFormGD._grdbase1.Column3.Text1.DblClick()
|
|
IF gnMockNomModCount = 1 AND gnMockNomModId = lnIdPartTest AND gnMockVerifCodCount = 0
|
|
DO PrLog WITH 'OK C2: dublu-click Column3 (cod fiscal ROA) -> nom_parteneri_modifica(' + TRANSFORM(lnIdPartTest) + ')'
|
|
ELSE
|
|
DO PrLog WITH 'FAIL C2: Column3 DblClick - nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' id=' + TRANSFORM(gnMockNomModId) + ' verifcod count=' + TRANSFORM(gnMockVerifCodCount)
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
gnMockNomModCount = 0
|
|
gnMockVerifCodCount = 0
|
|
goFormGD._grdbase1.Column5.Text1.DblClick()
|
|
IF gnMockVerifCodCount = 1 AND gnMockNomModCount = 0
|
|
DO PrLog WITH 'OK C3: dublu-click Column5 (firma ANAF) -> VerificaCodFiscal, fara editare partener'
|
|
ELSE
|
|
DO PrLog WITH 'FAIL C3: Column5 DblClick - verifcod count=' + TRANSFORM(gnMockVerifCodCount) + ' nom_mod count=' + TRANSFORM(gnMockNomModCount)
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
gnMockNomModCount = 0
|
|
gnMockVerifCodCount = 0
|
|
goFormGD._grdbase1.Column6.Text1.DblClick()
|
|
IF gnMockVerifCodCount = 1 AND gnMockNomModCount = 0
|
|
DO PrLog WITH 'OK C4: dublu-click Column6 (cod ANAF) -> VerificaCodFiscal, fara editare partener'
|
|
ELSE
|
|
DO PrLog WITH 'FAIL C4: Column6 DblClick - verifcod count=' + TRANSFORM(gnMockVerifCodCount) + ' nom_mod count=' + TRANSFORM(gnMockNomModCount)
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
*-- id_part gol -> mesaj de avertizare, fara editare partener
|
|
SELECT crsVerificareParteneri
|
|
LOCATE FOR cod_fiscal = 'RO9999999'
|
|
gnMockNomModCount = 0
|
|
gcMockUltimMesaj = ''
|
|
goFormGD._grdbase1.Column2.Text1.DblClick()
|
|
IF gnMockNomModCount = 0 AND 'nu poate fi identificat' $ LOWER(gcMockUltimMesaj)
|
|
DO PrLog WITH 'OK C5: id_part gol -> mesaj de avertizare, fara editare partener'
|
|
ELSE
|
|
DO PrLog WITH 'FAIL C5: id_part gol - nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' mesaj=[' + gcMockUltimMesaj + ']'
|
|
gnEsecuri = gnEsecuri + 1
|
|
ENDIF
|
|
|
|
goFormGD.Release()
|
|
|
|
DO PrLog WITH IIF(gnEsecuri = 0, 'TOTAL OK', 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)')
|
|
CATCH TO loEx
|
|
DO PrLog WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
|
|
DO PrLog WITH 'TOTAL FAIL: exceptie neasteptata'
|
|
ENDTRY
|
|
|
|
QUIT
|
|
|
|
**********************************************************
|
|
PROCEDURE PrLog
|
|
LPARAMETERS tcMsg
|
|
LOCAL lcL
|
|
SET SAFETY OFF
|
|
lcL = IIF(FILE(gcLog), FILETOSTR(gcLog), '')
|
|
STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcLog)
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrErr
|
|
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
|
DO PrLog WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
|
ENDPROC
|