134 lines
4.7 KiB
Plaintext
134 lines
4.7 KiB
Plaintext
* test_cod_fiscal_real.prg - ruleaza GetCodFiscalValid pe TOATE codurile din XML-urile Fidelio
|
|
* si scrie un raport, ca sa vedem efectul real inainte de import.
|
|
*
|
|
* Verifica invariantii care conteaza pentru declaratii:
|
|
* - nicio persoana JURIDICA nu ramane fara cod din cauza noastra (codul nu se sterge)
|
|
* - se sterge cod DOAR la persoane fizice si DOAR cand CNP-ul chiar este invalid
|
|
* - niciun CNP valid nu se pierde
|
|
*
|
|
* Rulare: vfp9.exe -A -T "D:\PROIECTE\FLORA\FLORA2ROA\Teste\test_cod_fiscal_real.prg"
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
|
|
PUBLIC gcUILog, gcSyncDir, gnTestFail, gnMockRaspuns, gcMockUltimMesaj, gnMockUltimTip
|
|
gnTestFail = 0
|
|
gnMockRaspuns = 6
|
|
gcMockUltimMesaj = ''
|
|
gnMockUltimTip = 0
|
|
|
|
LOCAL lcTestDir
|
|
lcTestDir = ADDBS(JUSTPATH(SYS(16, 0)))
|
|
gcUILog = lcTestDir + 'test_cod_fiscal_real_log.txt'
|
|
gcSyncDir = lcTestDir + 'uisync\'
|
|
IF !DIRECTORY(gcSyncDir)
|
|
MD (gcSyncDir)
|
|
ENDIF
|
|
STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
|
|
|
DO (lcTestDir + 'test_init_env_auto.prg') WITH .F.
|
|
SET PROCEDURE TO (lcTestDir + 'ui_harness.prg') ADDITIVE
|
|
SET PROCEDURE TO (lcTestDir + 'mock_amessagebox.prg') ADDITIVE
|
|
|
|
DO HarnessInit
|
|
|
|
LOCAL lcCale, lcFisier, lnFisiere, lcRaport
|
|
lcCale = ADDBS(ALLTRIM(goApp.oSettings.cale_import_fidelio))
|
|
HarnessLog('Citesc XML-urile din: ' + m.lcCale)
|
|
|
|
CREATE CURSOR cTot (denumire C(200), cod C(50), reg_com C(50))
|
|
|
|
lnFisiere = 0
|
|
lnSarite = 0
|
|
lcFisier = SYS(2000, m.lcCale + 'bts_detalii_facturi_rep_*.xml')
|
|
DO WHILE !EMPTY(m.lcFisier)
|
|
lnRanduri = 0
|
|
* fisierele goale sau fara coloanele asteptate se sar controlat
|
|
TRY
|
|
lnRanduri = XMLTOCURSOR(m.lcCale + m.lcFisier, 'cUnul', 512)
|
|
CATCH
|
|
lnRanduri = 0
|
|
ENDTRY
|
|
|
|
IF m.lnRanduri > 0 AND USED('cUnul') AND ;
|
|
TYPE('cUnul.codfiscal_cnp') = 'C' AND TYPE('cUnul.cumparator') = 'C'
|
|
SELECT DISTINCT CAST(ALLTRIM(cumparator) AS C(200)) AS denumire, ;
|
|
CAST(ALLTRIM(codfiscal_cnp) AS C(50)) AS cod, ;
|
|
CAST(ALLTRIM(regcomert_ci_pass) AS C(50)) AS reg_com ;
|
|
FROM cUnul WHERE !EMPTY(NVL(codfiscal_cnp, '')) INTO CURSOR cTemp
|
|
SELECT cTot
|
|
APPEND FROM DBF('cTemp')
|
|
USE IN (SELECT('cTemp'))
|
|
lnFisiere = m.lnFisiere + 1
|
|
ELSE
|
|
lnSarite = m.lnSarite + 1
|
|
ENDIF
|
|
|
|
USE IN (SELECT('cUnul'))
|
|
lcFisier = SYS(2000, m.lcCale + 'bts_detalii_facturi_rep_*.xml', 1)
|
|
ENDDO
|
|
|
|
HarnessLog('Fisiere citite: ' + TRANSFORM(m.lnFisiere) + ', sarite (goale/fara coloane): ' + TRANSFORM(m.lnSarite))
|
|
TestAssert(m.lnFisiere > 0, 'exista fisiere XML de analizat')
|
|
|
|
SELECT DISTINCT denumire, cod, reg_com FROM cTot INTO CURSOR cUnic
|
|
HarnessLog('Combinatii distincte nume+cod+regcom: ' + TRANSFORM(RECCOUNT('cUnic')))
|
|
|
|
LOCAL lnPF, lnPJ, lnSters, lnPJNevalidat, lnCnpPierdut, lnPJFaraCod
|
|
LOCAL lnTip, lcRez, lcCifre, lcCod
|
|
STORE 0 TO lnPF, lnPJ, lnSters, lnPJNevalidat, lnCnpPierdut, lnPJFaraCod
|
|
lcRaport = 'denumire;cod_import;reg_com;tip;cod_salvat' + CHR(13) + CHR(10)
|
|
|
|
SELECT cUnic
|
|
SCAN
|
|
lcCod = ALLTRIM(cUnic.cod)
|
|
lnTip = 0
|
|
lcRez = GetCodFiscalValid(m.lcCod, @lnTip, cUnic.denumire, cUnic.reg_com)
|
|
|
|
IF m.lnTip = 1
|
|
lnPJ = m.lnPJ + 1
|
|
* invariant 1: la persoana juridica NU stergem niciodata codul
|
|
IF EMPTY(m.lcRez) AND !EMPTY(m.lcCod)
|
|
lnPJFaraCod = m.lnPJFaraCod + 1
|
|
HarnessLog('EROARE invariant: PJ ramasa fara cod: ' + ALLTRIM(cUnic.denumire) + ' [' + m.lcCod + ']')
|
|
ENDIF
|
|
IF !VerifCF(m.lcRez)
|
|
lnPJNevalidat = m.lnPJNevalidat + 1
|
|
ENDIF
|
|
ELSE
|
|
lnPF = m.lnPF + 1
|
|
IF EMPTY(m.lcRez)
|
|
lnSters = m.lnSters + 1
|
|
* invariant 2: nu stergem CNP-uri VALIDE
|
|
lcCifre = CHRTRAN(m.lcCod, CHRTRAN(m.lcCod, '0123456789', ''), '')
|
|
IF LEN(m.lcCifre) = 13 AND cValidCNP(m.lcCifre)
|
|
lnCnpPierdut = m.lnCnpPierdut + 1
|
|
HarnessLog('EROARE invariant: CNP valid pierdut: ' + ALLTRIM(cUnic.denumire) + ' [' + m.lcCod + ']')
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
lcRaport = m.lcRaport + ALLTRIM(cUnic.denumire) + ';' + m.lcCod + ';' + ALLTRIM(cUnic.reg_com) + ';' + ;
|
|
IIF(m.lnTip = 1, 'PJ', 'PF') + ';' + m.lcRez + CHR(13) + CHR(10)
|
|
ENDSCAN
|
|
|
|
STRTOFILE(m.lcRaport, m.lcTestDir + 'raport_cod_fiscal_real.csv', .F.)
|
|
|
|
HarnessLog('persoane fizice : ' + TRANSFORM(m.lnPF))
|
|
HarnessLog('persoane juridice : ' + TRANSFORM(m.lnPJ))
|
|
HarnessLog('PF cu CNP sters : ' + TRANSFORM(m.lnSters))
|
|
HarnessLog('PJ cu cod nevalidat RO : ' + TRANSFORM(m.lnPJNevalidat) + ' (raman cu cod, atentioneaza declaratia)')
|
|
|
|
TestAssertEqual(0, m.lnPJFaraCod, 'nicio persoana juridica nu ramane fara cod')
|
|
TestAssertEqual(0, m.lnCnpPierdut, 'niciun CNP valid nu se pierde')
|
|
TestAssert(m.lnPF + m.lnPJ > 1000, 's-au analizat toti partenerii din exemple')
|
|
TestAssert(m.lnSters > 0, 'exista CNP-uri invalide care se curata')
|
|
TestAssert(m.lnPJ > 0, 'exista si persoane juridice detectate')
|
|
|
|
DO HarnessStep WITH 0, 'analiza pe date reale'
|
|
|
|
HarnessLog('REZULTAT: ' + TestRezultat())
|
|
DO HarnessDone WITH TestRezultat()
|
|
|
|
QUIT
|