193 lines
9.4 KiB
Plaintext
193 lines
9.4 KiB
Plaintext
* test_rezolvare_partener_ef.prg
|
|
* RezolvarePartenerEF.Rezolva: cele patru ramuri (un activ / doar inactiv / 2+ activi ambigui,
|
|
* pe ambele variante RO / niciunul - creare automata), plus regresie pe MarcheazaEligibilitate/
|
|
* EligibilRand din coada_contabilizare_ef.prg (nu mai blocheaza pe partener negasit sau inactiv,
|
|
* blocheaza doar pe CIF ambiguu). Fixtura proprie (CIF 9996000x), creata si stearsa in aceasta
|
|
* rulare, pe schema MARIUSM_AUTO@ROA_CENTRAL.
|
|
*
|
|
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_rezolvare_partener_ef.prg"
|
|
* Iesire in D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_rezolvare_partener_ef_log.txt
|
|
|
|
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, gnPass, gnFail
|
|
gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_rezolvare_partener_ef_log.txt"
|
|
gnPass = 0
|
|
gnFail = 0
|
|
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
|
|
|
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
TRY
|
|
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
|
|
SET PROCEDURE TO rezolvare_partener_ef ADDITIVE
|
|
SET PROCEDURE TO coada_contabilizare_ef ADDITIVE
|
|
DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle)
|
|
|
|
DO StergeFixtura
|
|
|
|
*-- T1: un singur partener activ, CIF cu RO, interogat tot cu RO
|
|
goExecutor.oExecute("INSERT INTO NOM_PARTENERI (cod_fiscal, denumire, inactiv) VALUES ('RO99960001', 'FIXTURA REZOLVARE T1', 0)", 'crsInsT1')
|
|
|
|
*-- T2: un singur partener, stocat FARA RO, inactiv - interogat cu RO (variante incrucisate)
|
|
goExecutor.oExecute("INSERT INTO NOM_PARTENERI (cod_fiscal, denumire, inactiv) VALUES ('99960002', 'FIXTURA REZOLVARE T2', 1)", 'crsInsT2')
|
|
|
|
*-- T3: doi parteneri activi pe acelasi CIF, unul cu RO si unul fara - interogat fara RO
|
|
goExecutor.oExecute("INSERT INTO NOM_PARTENERI (cod_fiscal, denumire, inactiv) VALUES ('RO99960003', 'FIXTURA REZOLVARE T3 RO', 0)", 'crsInsT3a')
|
|
goExecutor.oExecute("INSERT INTO NOM_PARTENERI (cod_fiscal, denumire, inactiv) VALUES ('99960003', 'FIXTURA REZOLVARE T3 FARA RO', 0)", 'crsInsT3b')
|
|
|
|
*-- T4: niciun partener pe acest CIF - se creeaza automat
|
|
|
|
goExecutor.oExecute('COMMIT', 'crsCommitFixtura')
|
|
|
|
LOCAL loRez, loR
|
|
loRez = CREATEOBJECT('RezolvarePartenerEF')
|
|
|
|
DO PrLogLocal WITH '=== T1: un partener activ ==='
|
|
loR = loRez.Rezolva('RO99960001', 'FURNIZOR T1', .T.)
|
|
DO PrTest WITH 'T1 stare=gasit', loR.cStare == 'gasit'
|
|
DO PrTest WITH 'T1 nIdPartener > 0', loR.nIdPartener > 0
|
|
DO PrTest WITH 'T1 fara atentionare', EMPTY(loR.cAtentionare)
|
|
|
|
DO PrLogLocal WITH '=== T2: doar inactiv, cautat cu varianta incrucisata (RO peste CIF stocat fara RO) ==='
|
|
loR = loRez.Rezolva('RO99960002', 'FURNIZOR T2', .T.)
|
|
DO PrTest WITH 'T2 stare=gasit_inactiv', loR.cStare == 'gasit_inactiv'
|
|
DO PrTest WITH 'T2 nIdPartener > 0', loR.nIdPartener > 0
|
|
DO PrTest WITH 'T2 atentionare nevida', !EMPTY(loR.cAtentionare)
|
|
|
|
DO PrLogLocal WITH '=== T3: doi activi (RO + fara RO), cautat fara RO ==='
|
|
loR = loRez.Rezolva('99960003', 'FURNIZOR T3', .T.)
|
|
DO PrTest WITH 'T3 stare=mai_multi', loR.cStare == 'mai_multi'
|
|
DO PrTest WITH 'T3 nIdPartener = 0 (nu alege automat)', loR.nIdPartener = 0
|
|
DO PrTest WITH 'T3 2 candidati', loR.nCandidati = 2
|
|
DO PrTest WITH 'T3 atentionare nevida', !EMPTY(loR.cAtentionare)
|
|
|
|
DO PrLogLocal WITH '=== T4: niciun partener - creare automata ==='
|
|
loR = loRez.Rezolva('99960004', 'FIXTURA REZOLVARE T4 NOU', .T.)
|
|
DO PrTest WITH 'T4 stare=creat', loR.cStare == 'creat'
|
|
DO PrTest WITH 'T4 nIdPartener > 0', loR.nIdPartener > 0
|
|
DO PrTest WITH 'T4 atentionare nevida', !EMPTY(loR.cAtentionare)
|
|
LOCAL lnIdT4
|
|
lnIdT4 = NVL(loR.nIdPartener, 0)
|
|
IF m.lnIdT4 > 0
|
|
LOCAL llGasitOra, llGasitTip
|
|
llGasitOra = goExecutor.oExecuta("select id_part, denumire, cod_fiscal from nom_parteneri where id_part = " + TRANSFORM(m.lnIdT4), 'cVerifT4')
|
|
IF m.llGasitOra
|
|
SELECT cVerifT4
|
|
DO PrTest WITH 'T4 scris in Oracle cu CIF exact 99960004 (fara RO)', RECCOUNT() = 1 AND ALLTRIM(cod_fiscal) == '99960004'
|
|
USE IN (SELECT('cVerifT4'))
|
|
ENDIF
|
|
llGasitTip = goExecutor.oExecuta("select id_part from coresp_tip_part where id_part = " + TRANSFORM(m.lnIdT4) + " and id_tip_part = 17", 'cVerifTip')
|
|
IF m.llGasitTip
|
|
DO PrTest WITH 'T4 legat in CORESP_TIP_PART ca furnizor (17)', RECCOUNT('cVerifTip') = 1
|
|
USE IN (SELECT('cVerifTip'))
|
|
ENDIF
|
|
ENDIF
|
|
|
|
DO PrLogLocal WITH '=== CIF gol: nu blocheaza cu eroare, stare inexistent ==='
|
|
loR = loRez.Rezolva('', 'FARA CIF', .T.)
|
|
DO PrTest WITH 'CIF gol: stare=inexistent, nIdPartener=0', loR.cStare == 'inexistent' AND loR.nIdPartener = 0
|
|
|
|
*=== Regresie: MarcheazaEligibilitate / EligibilRand (coada_contabilizare_ef.prg) ===
|
|
DO PrLogLocal WITH '=== MarcheazaEligibilitate: negasit/inactiv nu mai blocheaza, ambiguu blocheaza ==='
|
|
IF USED('crsFactTest')
|
|
USE IN crsFactTest
|
|
ENDIF
|
|
CREATE CURSOR crsFactTest (id I, id_fact I, cod_fiscal C(20), numar_act C(30), eligibil_lot I, motiv_lot C(200), ales I)
|
|
INSERT INTO crsFactTest (id, id_fact, cod_fiscal, numar_act, eligibil_lot, motiv_lot, ales) VALUES (1, 0, 'RO99960001', 'F001', 0, '', 1)
|
|
INSERT INTO crsFactTest (id, id_fact, cod_fiscal, numar_act, eligibil_lot, motiv_lot, ales) VALUES (2, 0, 'RO99960002', 'F002', 0, '', 1)
|
|
INSERT INTO crsFactTest (id, id_fact, cod_fiscal, numar_act, eligibil_lot, motiv_lot, ales) VALUES (3, 0, '99960003', 'F003', 0, '', 1)
|
|
INSERT INTO crsFactTest (id, id_fact, cod_fiscal, numar_act, eligibil_lot, motiv_lot, ales) VALUES (4, 0, '99960099', 'F004', 0, '', 1)
|
|
INSERT INTO crsFactTest (id, id_fact, cod_fiscal, numar_act, eligibil_lot, motiv_lot, ales) VALUES (5, 0, 'RO99960001', 'FACTURA', 0, '', 1)
|
|
|
|
LOCAL loCoada
|
|
loCoada = CREATEOBJECT('CoadaContabilizareEF')
|
|
loCoada.MarcheazaEligibilitate('crsFactTest', .F.)
|
|
|
|
SELECT crsFactTest
|
|
LOCATE FOR id = 1
|
|
DO PrTest WITH 'randul 1 (gasit activ) eligibil, fara motiv blocant', eligibil_lot = 1 AND ales = 1
|
|
LOCATE FOR id = 2
|
|
DO PrTest WITH 'randul 2 (gasit doar inactiv) eligibil, cu atentionare in motiv_lot', eligibil_lot = 1 AND ales = 1 AND !EMPTY(motiv_lot)
|
|
LOCATE FOR id = 3
|
|
DO PrTest WITH 'randul 3 (CIF ambiguu) BLOCAT', eligibil_lot = 0 AND ales = 0 AND !EMPTY(motiv_lot)
|
|
LOCATE FOR id = 4
|
|
DO PrTest WITH 'randul 4 (negasit deloc) eligibil, cu atentionare de creare', eligibil_lot = 1 AND ales = 1 AND !EMPTY(motiv_lot)
|
|
LOCATE FOR id = 5
|
|
DO PrTest WITH 'randul 5 (numar fara cifre) BLOCAT', eligibil_lot = 0 AND ales = 0 AND 'numarul documentului' $ motiv_lot
|
|
|
|
DO PrLogLocal WITH '=== NrActDinNumarAct: primul grup de cifre de la dreapta, ultimele 12 ==='
|
|
DO PrTest WITH 'ZZT-A1-C -> 1', loCoada.NrActDinNumarAct('ZZT-A1-C') = 1
|
|
DO PrTest WITH 'ZZT-A10-C -> 10', loCoada.NrActDinNumarAct('ZZT-A10-C') = 10
|
|
DO PrTest WITH 'F1234 -> 1234 (neschimbat fata de regula veche)', loCoada.NrActDinNumarAct('F1234') = 1234
|
|
DO PrTest WITH '2026-000123 -> 123 (neschimbat)', loCoada.NrActDinNumarAct('2026-000123') = 123
|
|
DO PrTest WITH 'FACTURA (fara cifre) -> 0', loCoada.NrActDinNumarAct('FACTURA') = 0
|
|
DO PrTest WITH 'gol -> 0', loCoada.NrActDinNumarAct('') = 0
|
|
DO PrTest WITH 'RO20709900053983 -> 709900053983 (14 cifre, ultimele 12)', loCoada.NrActDinNumarAct('RO20709900053983') = 709900053983
|
|
DO PrTest WITH '017524993734246 -> 524993734246 (15 cifre, ultimele 12)', loCoada.NrActDinNumarAct('017524993734246') = 524993734246
|
|
DO PrTest WITH '1021024019453 -> 21024019453 (13 cifre, ultimele 12, zeroul din fata cade)', loCoada.NrActDinNumarAct('1021024019453') = 21024019453
|
|
DO PrTest WITH '259105268697 -> 259105268697 (12 cifre, neschimbat)', loCoada.NrActDinNumarAct('259105268697') = 259105268697
|
|
|
|
USE IN crsFactTest
|
|
|
|
DO StergeFixtura
|
|
DO PrLogLocal WITH 'REZULTAT FINAL: PASS=' + TRANSFORM(gnPass) + ' FAIL=' + TRANSFORM(gnFail)
|
|
DO PrLogLocal WITH 'TOTAL: test terminat fara exceptie'
|
|
CATCH TO loEx
|
|
DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
|
|
TRY
|
|
IF USED('crsFactTest')
|
|
USE IN crsFactTest
|
|
ENDIF
|
|
DO StergeFixtura
|
|
CATCH
|
|
ENDTRY
|
|
ENDTRY
|
|
|
|
QUIT
|
|
|
|
**********************************************************
|
|
PROCEDURE StergeFixtura
|
|
goExecutor.oExecute("DELETE FROM CORESP_TIP_PART WHERE id_part IN (SELECT id_part FROM NOM_PARTENERI WHERE cod_fiscal IN ('RO99960001','99960002','RO99960003','99960003','99960004'))", 'crsDelCorespTip')
|
|
goExecutor.oExecute("DELETE FROM NOM_PARTENERI WHERE cod_fiscal IN ('RO99960001','99960002','RO99960003','99960003','99960004')", 'crsDelPart')
|
|
goExecutor.oExecute('COMMIT', 'crsCommitDel')
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrTest
|
|
LPARAMETERS tcEticheta, tlOk
|
|
IF tlOk
|
|
gnPass = gnPass + 1
|
|
ELSE
|
|
gnFail = gnFail + 1
|
|
ENDIF
|
|
DO PrLogLocal WITH ' ' + tcEticheta + ': ' + IIF(tlOk, 'OK', 'FAIL')
|
|
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
|