* test_todo21_perioade_anaf.prg * TODO #21: perioadele ANAF (scop TVA, TVA la incasare, inactivare) duse pana la utilizator. * Verifica lantul de date din banda B, care ruleaza integral din .prg (nu are nevoie de * write-back-ul binarelor): cursorul crsANAF -> Procedure ANAF -> oEntitate (VERIFICARE_CIF) * -> verifica_partener_show_info. Mesajul modal e capturat cu mock_amessagebox (gcMockUltimMesaj), * nu afisat, ca sa nu blocheze rularea headless. * * Codurile fiscale de test se aleg din istoric_coduri_fiscale (unul cu perioada de TVA la * incasare, unul cu inactivare), ca verificarea sa treaca prin fluxul real ANAF/cache. * * Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\test_todo21_perioade_anaf.prg" * Verdict in log: cate un rand OK/FAIL per pas si un TOTAL la final. 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, gcMockUltimMesaj, gnMockUltimTip, gnMockRaspuns, gnButon gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\test_todo21_perioade_anaf_log.txt" gcMockUltimMesaj = '' gnMockUltimTip = 0 gnMockRaspuns = 1 gnButon = 0 STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog) PUBLIC gnEsecuri gnEsecuri = 0 ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() ON SHUTDOWN QUIT TRY *-- VFP rezolva procedurile in ordinea in care au fost deschise fisierele (castiga PRIMUL), *-- deci mock-ul si umbra trebuie incarcate INAINTE ca test_init_env_auto sa incarce *-- oproceduri_comune.prg real. verifica_partener_show_info sta in ACELASI fisier cu *-- FUNCTION amessagebox, asa ca umbra e o copie a fisierului cu amessagebox redenumit: *-- apelul cade atunci pe mock si mesajul poate fi verificat fara dialog modal. LOCAL lcSrc, lcUmbra lcUmbra = ADDBS(SYS(2023)) + 'oproceduri_comune_umbra.prg' lcSrc = FILETOSTR("D:\ROA\ROACONT\COMUN\programe\oproceduri_comune.prg") lcSrc = STRTRAN(lcSrc, CHR(13) + CHR(10) + 'Function amessagebox' + CHR(13) + CHR(10), ; CHR(13) + CHR(10) + 'Function amessagebox_umbrit' + CHR(13) + CHR(10)) STRTOFILE(lcSrc, lcUmbra) ERASE (FORCEEXT(lcUmbra, 'fxp')) SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\ui_harness.prg" ADDITIVE SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE SET PROCEDURE TO (lcUmbra) ADDITIVE DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.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) DO PrLogLocal WITH 'umbra + mock amessagebox incarcate (' + lcUmbra + ')' *-- proba: mock-ul chiar castiga la un apel direct? LOCAL lnProba lnProba = amessagebox('PING', 0 + 64, 'T') DO PrLogLocal WITH 'proba amessagebox a intors ' + TRANSFORM(lnProba) *-- coduri fiscale reale: unul cu perioada de TVA la incasare, unul cu inactivare LOCAL lcSql, lcCodTvaInc, lcCodInactiv TEXT TO lcSql NOSHOW select cod_fiscal_n from ( select cod_fiscal_n from istoric_coduri_fiscale where data_inceput_tvainc is not null and cod_fiscal_n is not null order by dataorav_anaf desc) where rownum <= 1 ENDTEXT lcCodTvaInc = '' IF goExecutor.oExecuta(lcSql, 'crsT21a') AND USED('crsT21a') AND RECCOUNT('crsT21a') > 0 lcCodTvaInc = ALLTRIM(TRANSFORM(NVL(crsT21a.cod_fiscal_n, 0))) ENDIF USE IN (SELECT('crsT21a')) TEXT TO lcSql NOSHOW select cod_fiscal_n from ( select cod_fiscal_n from istoric_coduri_fiscale where data_inactivare is not null and cod_fiscal_n is not null order by dataorav_anaf desc) where rownum <= 1 ENDTEXT lcCodInactiv = '' IF goExecutor.oExecuta(lcSql, 'crsT21b') AND USED('crsT21b') AND RECCOUNT('crsT21b') > 0 lcCodInactiv = ALLTRIM(TRANSFORM(NVL(crsT21b.cod_fiscal_n, 0))) ENDIF USE IN (SELECT('crsT21b')) DO PrLogLocal WITH 'coduri de test: TVA incasare=[' + lcCodTvaInc + '] inactiv=[' + lcCodInactiv + ']' IF EMPTY(lcCodTvaInc) AND EMPTY(lcCodInactiv) DO PrLogLocal WITH 'FAIL: nu s-a gasit niciun cod fiscal de test in istoric_coduri_fiscale' gnEsecuri = gnEsecuri + 1 ENDIF DO PrVerificaCod WITH lcCodTvaInc, 'TVA la incasare' DO PrVerificaCod WITH lcCodInactiv, 'inactivare' DO PrLogLocal WITH IIF(gnEsecuri = 0, 'TOTAL OK', 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)') CATCH TO loEx DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ')' ENDTRY QUIT ********************************************************** PROCEDURE PrVerificaCod LPARAMETERS tcCodFiscal, tcEticheta LOCAL loVerificare, loEnt, ldData, lcXml, lnRaspuns, llArePerioada IF EMPTY(tcCodFiscal) DO PrLogLocal WITH 'SKIP ' + tcEticheta + ': cod fiscal negasit' RETURN ENDIF ldData = DATE(gnAn, gnLuna, 1) loVerificare = CREATEOBJECT('verificarecod') && validare.prg lcXml = loVerificare.Verificare('CIF', tcCodFiscal, 'ANAF', ldData) IF TYPE('loVerificare.oEntitate') <> 'O' DO PrLogLocal WITH 'FAIL ' + tcEticheta + ': oEntitate lipseste pentru ' + tcCodFiscal gnEsecuri = gnEsecuri + 1 RETURN ENDIF loEnt = loVerificare.oEntitate *-- 1. cele 7 campuri noi exista pe obiectul intors de VERIFICARE_CIF LOCAL lnLipsa, lcCamp, laCampuri[7], lnI laCampuri[1] = 'data_inceput_scptva' laCampuri[2] = 'data_sfarsit_scptva' laCampuri[3] = 'data_anul_imp_scptva' laCampuri[4] = 'data_inceput_tvainc' laCampuri[5] = 'data_sfarsit_tvainc' laCampuri[6] = 'data_inactivare' laCampuri[7] = 'data_reactivare' lnLipsa = 0 FOR lnI = 1 TO 7 lcCamp = laCampuri[lnI] IF !PEMSTATUS(loEnt, lcCamp, 5) lnLipsa = lnLipsa + 1 DO PrLogLocal WITH 'FAIL ' + tcEticheta + ': lipseste ' + lcCamp + ' din oEntitate' ENDIF ENDFOR IF lnLipsa = 0 DO PrLogLocal WITH 'OK ' + tcEticheta + ': cele 7 campuri de perioada exista in oEntitate' ELSE gnEsecuri = gnEsecuri + 1 ENDIF DO PrLogLocal WITH ' ' + tcCodFiscal + ' firma=[' + ALLTRIM(TRANSFORM(loEnt.firma)) + '] sursa=[' + ALLTRIM(TRANSFORM(loEnt.sursa)) + ']' DO PrLogLocal WITH ' scpTVA ' + DTOC(loEnt.data_inceput_scptva) + ' - ' + DTOC(loEnt.data_sfarsit_scptva) + ' anul.imp ' + DTOC(loEnt.data_anul_imp_scptva) DO PrLogLocal WITH ' tvaInc ' + DTOC(loEnt.data_inceput_tvainc) + ' - ' + DTOC(loEnt.data_sfarsit_tvainc) DO PrLogLocal WITH ' inactiv ' + DTOC(loEnt.data_inactivare) + ' reactivat ' + DTOC(loEnt.data_reactivare) *-- 2. cel putin o perioada e completata (altfel testul nu dovedeste nimic despre transport) llArePerioada = !EMPTY(loEnt.data_inceput_scptva) OR !EMPTY(loEnt.data_inceput_tvainc) OR !EMPTY(loEnt.data_inactivare) IF llArePerioada DO PrLogLocal WITH 'OK ' + tcEticheta + ': cel putin o perioada e completata' ELSE DO PrLogLocal WITH 'FAIL ' + tcEticheta + ': toate perioadele sunt goale (transportul nu e dovedit)' gnEsecuri = gnEsecuri + 1 ENDIF *-- 3. mesajul de verificare individuala contine perioadele gcMockUltimMesaj = '' lnRaspuns = verifica_partener_show_info(loEnt, tcCodFiscal, 'TEST ' + tcEticheta, '') IF 'Perioada TVA' $ gcMockUltimMesaj OR 'Inactivare:' $ gcMockUltimMesaj DO PrLogLocal WITH 'OK ' + tcEticheta + ': mesajul contine perioadele' ELSE DO PrLogLocal WITH 'FAIL ' + tcEticheta + ': mesajul NU contine perioadele' gnEsecuri = gnEsecuri + 1 ENDIF DO PrLogLocal WITH '--- mesaj ---' + CHR(13) + CHR(10) + gcMockUltimMesaj + '--- sfarsit mesaj ---' ENDPROC ********************************************************** PROCEDURE PrLogLocal LPARAMETERS tcMsg LOCAL lcL SET SAFETY OFF lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '') STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcUILog) ENDPROC ********************************************************** PROCEDURE PrErrLocal LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo DO PrLogLocal WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo) ENDPROC