* test_cod_fiscal.prg - test unitar pentru GetCodFiscalValid (validare CNP / CUI la import parteneri). * Verifica regula ceruta: cod fiscal / CNP invalid => se salveaza GOL in ROA, ca sa nu dea * erori la declaratii (D394 / D406). * * Rulare directa: * vfp9.exe -A -T "D:\PROIECTE\FLORA\FLORA2ROA\Teste\test_cod_fiscal.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_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 lnTip, lcRez *--- CNP valid: se pastreaza, tip persoana fizica --- lnTip = 0 lcRez = GetCodFiscalValid('1800101410013', @lnTip) TestAssertEqual('1800101410013', m.lcRez, 'CNP valid pastrat') TestAssertEqual(2, m.lnTip, 'CNP valid => persoana fizica') *--- CNP valid murdar (spatii, punct): se curata si ramane --- TestAssertEqual('1800101410013', GetCodFiscalValid(' 1800101410013. '), 'CNP valid curatat de spatii/punct') *--- CNP cu cifra de control gresita => sir gol --- TestAssertEqual('', GetCodFiscalValid('1800101410018'), 'CNP cu cifra de control alterata se sterge') TestAssertEqual('', GetCodFiscalValid('2650407170374'), 'CNP invalid real din Fidelio (1)') TestAssertEqual('', GetCodFiscalValid('1550622400577'), 'CNP invalid real din Fidelio (2)') *--- lungimi gresite (12 / 14 cifre) => sir gol --- TestAssertEqual('', GetCodFiscalValid('171030126201'), '12 cifre => invalid') TestAssertEqual('', GetCodFiscalValid('29050709211182'), '14 cifre => invalid') TestAssertEqual('', GetCodFiscalValid('60109121600600'), '14 cifre => invalid (2)') * '2920121295914.' are 13 cifre dupa curatarea punctului si CNP-ul e valid => se pastreaza TestAssertEqual('2920121295914', GetCodFiscalValid('2920121295914.'), 'CNP valid cu punct la final se curata') *--- CUI persoana juridica --- lnTip = 0 lcRez = GetCodFiscalValid('RO21675175', @lnTip) TestAssertEqual('RO21675175', m.lcRez, 'CUI cu prefix RO pastrat') TestAssertEqual(1, m.lnTip, 'CUI => persoana juridica') TestAssertEqual('RO23565004', GetCodFiscalValid('RO 23565004'), 'CUI cu spatiu normalizat') lnTip = 0 lcRez = GetCodFiscalValid('24536740', @lnTip) TestAssertEqual('24536740', m.lcRez, 'CUI fara RO pastrat') TestAssertEqual(1, m.lnTip, 'CUI fara RO => persoana juridica') *--- CUI cu cifra de control gresita => sir gol --- TestAssertEqual('', GetCodFiscalValid('24536741'), 'CUI cu cifra de control gresita se sterge') *--- valori goale / fara cifre utile --- TestAssertEqual('', GetCodFiscalValid(''), 'sir gol') TestAssertEqual('', GetCodFiscalValid(' '), 'spatii') *--- parteneri STRAINI: codul nu respecta algoritmul romanesc, deci NU se sterge --- lnTip = 0 lcRez = GetCodFiscalValid('BE0325777171', @lnTip) TestAssertEqual('BE0325777171', m.lcRez, 'TVA belgian pastrat ca atare') TestAssertEqual(1, m.lnTip, 'cod strain => persoana juridica') TestAssertEqual('DICA9712015/99KS', GetCodFiscalValid('DICA9712015/99KS'), 'cod strain cu slash pastrat') TestAssertEqual('NN9J17714', GetCodFiscalValid('NN9J17714'), 'cod strain alfanumeric pastrat') TestAssertEqual('XD 061964', GetCodFiscalValid('XD 061964'), 'cod strain cu spatiu pastrat') TestAssertEqual('ABC', GetCodFiscalValid('ABC'), 'cod strain fara cifre pastrat') *--- prefixele romanesti se trateaza tot cu regulile RO --- TestAssertEqual('RO14770212', GetCodFiscalValid('CUI 14770212'), 'prefix CUI => CUI romanesc valid') TestAssertEqual('RO12870', GetCodFiscalValid('RO 12870'), 'CUI scurt valid, spatiu eliminat') TestAssertEqual('', GetCodFiscalValid('RO 12871'), 'CUI romanesc invalid se sterge') *--- codul de tara declarat opreste validarea romaneasca --- lnTip = 0 lcRez = GetCodFiscalValid('123456789012345', @lnTip, 'BE') TestAssertEqual('123456789012345', m.lcRez, 'cod numeric cu tara straina nu se valideaza romaneste') TestAssertEqual(1, m.lnTip, 'tara straina => persoana juridica') TestAssertEqual('', GetCodFiscalValid('1800101410018', 0, 'RO'), 'tara RO => se valideaza romaneste') DO HarnessStep WITH 0, 'validari cod fiscal' HarnessLog('REZULTAT: ' + TestRezultat()) DO HarnessDone WITH TestRezultat() QUIT