* test_cod_fiscal.prg - teste pentru clasificarea partenerilor importati si curatarea CNP-urilor. * * Regula verificata: * - PERSOANA FIZICA cu CNP invalid => cod fiscal GOL (permis la D394/D406) * - PERSOANA FIZICA cu CNP valid => CNP pastrat, curatat de spatii/puncte * - PERSOANA JURIDICA => codul NU se sterge NICIODATA, chiar daca nu trece * validarea romaneasca (poate fi partener strain), * ca sa fim atentionati la validarea declaratiei * * 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 *============================================================== * 1. PERSOANE FIZICE - singurele la care se sterge codul *============================================================== lnTip = 0 lcRez = GetCodFiscalValid('1800101410013', @lnTip, 'POPESCU ION', 'ZV 093375') TestAssertEqual('1800101410013', m.lcRez, 'PF: CNP valid pastrat') TestAssertEqual(2, m.lnTip, 'PF: CNP valid => persoana fizica') TestAssertEqual('1800101410013', GetCodFiscalValid(' 1800101410013. ', @lnTip, 'POPESCU ION', ''), ; 'PF: CNP valid curatat de spatii si punct') * CNP-uri invalide reale din Fidelio: codul se goleste lnTip = 0 lcRez = GetCodFiscalValid('2650407170374', @lnTip, 'TRUTA CLAUDIA MIHAELA', 'RK 800386') TestAssertEqual('', m.lcRez, 'PF: CNP cu cifra de control gresita se sterge') TestAssertEqual(2, m.lnTip, 'PF: ramane persoana fizica') TestAssertEqual('', GetCodFiscalValid('171030126201', @lnTip, 'TARTA GAVRIL SILVIU', ''), ; 'PF: CNP de 12 cifre se sterge') TestAssertEqual('', GetCodFiscalValid('29050709211182', @lnTip, 'HOGESCU CRISTINA', ''), ; 'PF: CNP de 14 cifre se sterge') TestAssertEqual('', GetCodFiscalValid('60109121600600', @lnTip, 'IOANCA DAMARIS', ''), ; 'PF: CNP de 14 cifre se sterge (2)') * CNP valid scris cu punct la final TestAssertEqual('2920121295914', GetCodFiscalValid('2920121295914.', @lnTip, 'ANDREI MARIA', ''), ; 'PF: CNP valid cu punct la final se curata') * persoana fizica fara niciun semnal, cod invalid => tot persoana fizica, cod gol lnTip = 0 lcRez = GetCodFiscalValid('287101935573', @lnTip, 'OPREA ANDREEA', '') TestAssertEqual('', m.lcRez, 'PF: fara semnale, cod invalid => gol') TestAssertEqual(2, m.lnTip, 'PF: fara semnale => persoana fizica') *============================================================== * 2. PERSOANE JURIDICE - codul NU se sterge niciodata *============================================================== lnTip = 0 lcRez = GetCodFiscalValid('RO21675175', @lnTip, 'JUST MULTISERV SRL', 'J03/245/2007') TestAssertEqual('RO21675175', m.lcRez, 'PJ: CUI cu prefix RO pastrat') TestAssertEqual(1, m.lnTip, 'PJ: prefix RO => persoana juridica') TestAssertEqual('RO23565004', GetCodFiscalValid('RO 23565004', @lnTip, 'FIRMA SRL', ''), ; 'PJ: spatiul din cod se elimina') lnTip = 0 lcRez = GetCodFiscalValid('24536740', @lnTip, 'KALVA SOLUTIONS SRL', 'J29/2677/2008') TestAssertEqual('24536740', m.lcRez, 'PJ: CUI fara RO pastrat') TestAssertEqual(1, m.lnTip, 'PJ: denumire cu SRL => persoana juridica') * CUI romanesc GRESIT la o persoana juridica: NU se sterge, ca sa dea eroare la declaratie lnTip = 0 lcRez = GetCodFiscalValid('24536741', @lnTip, 'KALVA SOLUTIONS SRL', 'J29/2677/2008') TestAssertEqual('24536741', m.lcRez, 'PJ: CUI invalid NU se sterge') TestAssertEqual(1, m.lnTip, 'PJ: CUI invalid ramane persoana juridica') * partener strain cu cod alfanumeric lnTip = 0 lcRez = GetCodFiscalValid('BE0325777171', @lnTip, 'UNIVERSITE DE LIEGE', '') TestAssertEqual('BE0325777171', m.lcRez, 'PJ straina: TVA belgian pastrat') TestAssertEqual(1, m.lnTip, 'PJ straina: cod TVA intracomunitar => persoana juridica') TestAssertEqual('DICA9712015/99KS', GetCodFiscalValid('DICA9712015/99KS', @lnTip, 'FIRMA STRAINA SRL', ''), ; 'PJ straina: cod cu slash pastrat cand denumirea are forma juridica') * cod cu litere care NU e cod de TVA si fara alt semnal => pasaport de persoana fizica lnTip = 0 lcRez = GetCodFiscalValid('NN9J17714', @lnTip, 'TORRES MELISSA', '') TestAssertEqual('', m.lcRez, 'PF straina: pasaportul nu se salveaza pe cod fiscal') TestAssertEqual(2, m.lnTip, 'PF straina: pasaport fara alt semnal => persoana fizica') * prefixul romanesc se normalizeaza la RO lnTip = 0 lcRez = GetCodFiscalValid('CUI 14770212', @lnTip, 'ASOCIATIA JUDETEANA DE HANDBAL', '') TestAssertEqual('14770212', m.lcRez, 'PJ: eticheta CUI se scoate, fara sa se adauge RO') TestAssertEqual(1, m.lnTip, 'PJ: eticheta CUI => persoana juridica') * 'RO' inseamna platitor de TVA: in ROA e ALT partener decat neplatitorul cu acelasi numar, * deci prefixul se pastreaza exact cum vine si NU se adauga niciodata de noi TestAssertEqual('RO24536740', GetCodFiscalValid('RO24536740', @lnTip, 'KALVA SOLUTIONS SRL', ''), ; 'PJ platitoare de TVA: prefixul RO se pastreaza') TestAssertEqual('24536740', GetCodFiscalValid('24536740', @lnTip, 'KALVA SOLUTIONS SRL', ''), ; 'PJ neplatitoare: NU se adauga RO') * partener strain cu cod NUMAI DIN CIFRE, recunoscut dupa tara lnTip = 0 lcRez = GetCodFiscalValid('123456789012345', @lnTip, 'HOTEL PARTNER', '', 'BE') TestAssertEqual('123456789012345', m.lcRez, 'PJ straina: cod numeric cu tara straina se pastreaza') TestAssertEqual(1, m.lnTip, 'PJ straina: tara straina => persoana juridica') * persoana juridica recunoscuta dupa numarul de registrul comertului lnTip = 0 lcRez = GetCodFiscalValid('99999999', @lnTip, 'DENUMIRE FARA FORMA JURIDICA', 'J40/5790/2018') TestAssertEqual('99999999', m.lcRez, 'PJ: cod invalid pastrat cand exista nr. reg. comertului') TestAssertEqual(1, m.lnTip, 'PJ: nr. registrul comertului => persoana juridica') lnTip = 0 lcRez = GetCodFiscalValid('88888888', @lnTip, 'TICMAR EMMA CONCEPT', 'J2018000211289') TestAssertEqual(1, m.lnTip, 'PJ: nr. reg. comertului fara slash => persoana juridica') lnTip = 0 lcRez = GetCodFiscalValid('9924188', @lnTip, 'CAR CFR SECTIA L2 SI CT1 BRAILA', '54/1997') TestAssertEqual(1, m.lnTip, 'PJ: numar/an => persoana juridica') * tipul venit direct din import bate toate celelalte semnale lnTip = 0 lcRez = GetCodFiscalValid('1800101410013', @lnTip, 'POPESCU ION', '', '', '1') TestAssertEqual('1800101410013', m.lcRez, 'tip impus PJ: codul se pastreaza') TestAssertEqual(1, m.lnTip, 'tip impus din import => persoana juridica') *============================================================== * 3. Recuperare din campuri inversate in Fidelio *============================================================== * operatorul a scris pasaportul pe cod fiscal si CNP-ul pe serie CI lnTip = 0 lcRez = GetCodFiscalValid('XD 061964', @lnTip, 'POPITIU IOANA', '2640626364228') TestAssertEqual('2640626364228', m.lcRez, 'recuperare: CNP valid luat din campul de serie CI') TestAssertEqual(2, m.lnTip, 'recuperare: ramane persoana fizica') * daca in campul de serie CI nu exista CNP valid, nu inventam nimic TestAssertEqual('', GetCodFiscalValid('XD 061964', @lnTip, 'POPITIU IOANA', 'ZV 093375'), ; 'recuperare: fara CNP valid in serie CI ramane gol') *============================================================== * 4. Cazuri limita *============================================================== lnTip = 0 TestAssertEqual('', GetCodFiscalValid('', @lnTip, 'POPESCU ION', ''), 'cod gol ramane gol') TestAssertEqual(2, m.lnTip, 'cod gol + nume de persoana => persoana fizica') lnTip = 0 TestAssertEqual('', GetCodFiscalValid(' ', @lnTip, 'POPESCU ION', ''), 'spatii => gol') lnTip = 0 lcRez = GetCodFiscalValid('', @lnTip, 'ALFA CONSTRUCT SRL', '') TestAssertEqual('', m.lcRez, 'PJ fara cod ramane fara cod') TestAssertEqual(1, m.lnTip, 'PJ fara cod este tot persoana juridica') *--- functiile ajutatoare --- TestAssert(EstePersoanaJuridica('KALVA SOLUTIONS SRL'), 'EstePersoanaJuridica: SRL') TestAssert(EstePersoanaJuridica('ASOCIATIA SPORTIVA X'), 'EstePersoanaJuridica: ASOCIATIA') TestAssert(EstePersoanaJuridica('UNIVERSITE DE LIEGE'), 'EstePersoanaJuridica: UNIVERSITE') TestAssert(!EstePersoanaJuridica('SAVU MARIA'), 'EstePersoanaJuridica: SAVU nu e SA') TestAssert(!EstePersoanaJuridica('MIHAII ION'), 'EstePersoanaJuridica: MIHAII nu e II') TestAssert(!EstePersoanaJuridica('POPESCU ION'), 'EstePersoanaJuridica: nume simplu') TestAssert(EsteNrRegComert('J40/5790/2018'), 'EsteNrRegComert: J40/5790/2018') TestAssert(EsteNrRegComert('J2018000211289'), 'EsteNrRegComert: J2018000211289') TestAssert(EsteNrRegComert('54/1997'), 'EsteNrRegComert: 54/1997') TestAssert(!EsteNrRegComert('ZV 093375'), 'EsteNrRegComert: serie CI nu e reg. comert') TestAssert(!EsteNrRegComert(''), 'EsteNrRegComert: gol') TestAssert(EsteSerieCI('ZV 093375'), 'EsteSerieCI: cu spatiu') TestAssert(EsteSerieCI('IF834409'), 'EsteSerieCI: fara spatiu') TestAssert(!EsteSerieCI('J40/5790/2018'), 'EsteSerieCI: nr. reg. comert nu e serie CI') TestAssert(!EsteSerieCI('2990118070015'), 'EsteSerieCI: CNP nu e serie CI') TestAssert(EsteCodTVAStrain('BE0325777171'), 'EsteCodTVAStrain: BE') TestAssert(EsteCodTVAStrain('DE811234567'), 'EsteCodTVAStrain: DE') TestAssert(!EsteCodTVAStrain('NN9J17714'), 'EsteCodTVAStrain: pasaport nu e cod TVA') TestAssert(!EsteCodTVAStrain('XD061964'), 'EsteCodTVAStrain: serie pasaport nu e cod TVA') TestAssertEqual('RO23565004', GetCodFiscalCurat('RO 23565004'), 'GetCodFiscalCurat: spatii, RO pastrat') TestAssertEqual('14770212', GetCodFiscalCurat('CUI 14770212'), 'GetCodFiscalCurat: eticheta CUI se scoate') TestAssertEqual('14770212', GetCodFiscalCurat('CF 14770212'), 'GetCodFiscalCurat: eticheta CF se scoate') TestAssertEqual('2920121295914', GetCodFiscalCurat('2920121295914.'), 'GetCodFiscalCurat: punct') DO HarnessStep WITH 0, 'validari cod fiscal' HarnessLog('REZULTAT: ' + TestRezultat()) DO HarnessDone WITH TestRezultat() QUIT