* test_unicredit_depozite.prg * Headless (CENTRAL/MARIUSM_AUTO): importul CSV UniCredit cu TERM DEPOSIT/TERM DEPOSIT INTEREST * trebuie sa genereze perechea 5081=581 / 581=5081 (581 = 5121 / 5121 = 581), iar cu lDepozit=.F. * PRINCIPAL sa ramana pe 581 simplu (581=5121 / 5121=581) fara linie 5081. Dobanda ramane 5121=766. * Rulare: vfp9.exe -A -T "COMUN\utile\Teste\test_unicredit_depozite.prg" LPARAMETERS tcCsv SET SAFETY OFF SET TALK OFF SET DELETED ON SET EXACT ON SET CENTURY ON SET DATE DMY SET NULLDISPLAY TO '' SET CONFIRM OFF PUBLIC gcLogUni, gnPass, gnFail, gcCsv gcLogUni = "D:\ROA\ROACONT\docs\test_unicredit_depozite.log" IF !EMPTY(m.tcCsv) gcCsv = ALLTRIM(m.tcCsv) ELSE gcCsv = "D:\ROA\ROACONT\COMUN\utile\Teste\unicredit_depozite.csv" ENDIF gnPass = 0 gnFail = 0 STRTOFILE("RUN " + TTOC(DATETIME()) + " csv=" + gcCsv + CHR(13)+CHR(10), gcLogUni) DO log_txt WITH "SAFETY=" + TRANSFORM(SET("SAFETY")) + " RESOURCE=" + TRANSFORM(SET("RESOURCE")) ON ERROR DO log_eroare_uni WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO' IF m.gnHandle <= 0 DO log_txt WITH "FAIL conectare Oracle (gnHandle<=0)" DO log_txt WITH "=== SUMAR: PASS=" + TRANSFORM(m.gnPass) + " FAIL=" + TRANSFORM(m.gnFail) + " ===" QUIT ENDIF DO log_txt WITH "Oracle OK schema=" + TRANSFORM(m.gcS) * amessagebox/aInputBox in fata listei de proceduri (rezolutie de nume: castiga primul fisier) LOCAL lcProcExist lcProcExist = SET("PROCEDURE") SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_amessagebox.prg", &lcProcExist SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_ainputbox.prg" ADDITIVE DO caz_depozit_on DO caz_depozit_off DO log_txt WITH "=== SUMAR: PASS=" + TRANSFORM(m.gnPass) + " FAIL=" + TRANSFORM(m.gnFail) + " ===" QUIT * ImportNote ca in frm_import_extrase_banca.sc2; tcExtra adauga chei in hash (ex. ??lDepozit=>.F.) FUNCTION creeaza_import LPARAMETERS tcExtra LOCAL lcParam lcParam = "cContBanca=>5121??lCreeazaParteneri=>.F.??lFactura=>.F.??lComanda=>.F.??nIdPartenerBanca=>1??cBanca=>BANCA UCT" + IIF(EMPTY(m.tcExtra), "", m.tcExtra) RETURN CREATEOBJECT("ImportNote", gcCsv, DATE(2026,5,1), DATE(2026,6,30), "ExtrasBanca", "UNICREDIT", "", "CSV", m.lcParam, {}) ENDFUNC FUNCTION numara LPARAMETERS tcCond LOCAL lnN, lcSel lcSel = SELECT() SELECT cActTemp COUNT FOR &tcCond TO m.lnN SELECT (m.lcSel) RETURN m.lnN ENDFUNC FUNCTION suma_act LPARAMETERS tcCond LOCAL lnS, lcSel lcSel = SELECT() SELECT cActTemp SUM suma TO m.lnS FOR &tcCond SELECT (m.lcSel) RETURN m.lnS ENDFUNC PROCEDURE inchide_imp LPARAMETERS toImp IF USED('cActTemp') USE IN (SELECT('cActTemp')) ENDIF IF USED('C_IMPORT_TEMP') USE IN (SELECT('C_IMPORT_TEMP')) ENDIF IF VARTYPE(m.toImp) = 'O' m.toImp = .NULL. ENDIF ENDPROC PROCEDURE caz_depozit_on LOCAL loImp, llOk, lnA, lnB DO log_txt WITH "-- CAZ 1: lDepozit omis (implicit activ)" loImp = creeaza_import("") llOk = loImp.Import(.T.) DO verifica WITH "1_import_ok", m.llOk, "Import(.T.)=" + TRANSFORM(m.llOk) DO verifica WITH "1_constituire_581_5121", (numara("ALLTRIM(scd)='581' AND ALLTRIM(scc)='5121'") = 1), "n=" + TRANSFORM(numara("ALLTRIM(scd)='581' AND ALLTRIM(scc)='5121'")) DO verifica WITH "1_pereche_5081_581", (numara("ALLTRIM(scd)='5081' AND ALLTRIM(scc)='581'") = 1), "n=" + TRANSFORM(numara("ALLTRIM(scd)='5081' AND ALLTRIM(scc)='581'")) DO verifica WITH "1_lichidare_5121_581", (numara("ALLTRIM(scd)='5121' AND ALLTRIM(scc)='581'") = 1), "n=" + TRANSFORM(numara("ALLTRIM(scd)='5121' AND ALLTRIM(scc)='581'")) DO verifica WITH "1_pereche_581_5081", (numara("ALLTRIM(scd)='581' AND ALLTRIM(scc)='5081'") = 1), "n=" + TRANSFORM(numara("ALLTRIM(scd)='581' AND ALLTRIM(scc)='5081'")) DO verifica WITH "1_dobanda_5121_766", (numara("ALLTRIM(scd)='5121' AND ALLTRIM(scc)='766'") = 1), "n=" + TRANSFORM(numara("ALLTRIM(scd)='5121' AND ALLTRIM(scc)='766'")) DO verifica WITH "1_fara_401_4111", (numara("INLIST(ALLTRIM(scd),'401','4111') OR INLIST(ALLTRIM(scc),'401','4111')") = 0), "n=" + TRANSFORM(numara("INLIST(ALLTRIM(scd),'401','4111') OR INLIST(ALLTRIM(scc),'401','4111')")) lnA = suma_act("ALLTRIM(scd)='581' AND ALLTRIM(scc)='5121'") lnB = suma_act("ALLTRIM(scd)='5081' AND ALLTRIM(scc)='581'") DO verifica WITH "1_suma_pereche_constituire", (ABS(m.lnA - m.lnB) < 0.005 AND ABS(m.lnA - 50035.68) < 0.005), "A=" + TRANSFORM(m.lnA) + " B=" + TRANSFORM(m.lnB) lnA = suma_act("ALLTRIM(scd)='5121' AND ALLTRIM(scc)='581'") lnB = suma_act("ALLTRIM(scd)='581' AND ALLTRIM(scc)='5081'") DO verifica WITH "1_suma_pereche_lichidare", (ABS(m.lnA - m.lnB) < 0.005 AND ABS(m.lnA - 50000) < 0.005), "A=" + TRANSFORM(m.lnA) + " B=" + TRANSFORM(m.lnB) DO inchide_imp WITH m.loImp ENDPROC PROCEDURE caz_depozit_off LOCAL loImp, llOk DO log_txt WITH "-- CAZ 2: lDepozit=.F. (optiune dezactivata)" loImp = creeaza_import("??lDepozit=>.F.") llOk = loImp.Import(.T.) DO verifica WITH "2_import_ok", m.llOk, "Import(.T.)=" + TRANSFORM(m.llOk) DO verifica WITH "2_fara_5081", (numara("ALLTRIM(scd)='5081' OR ALLTRIM(scc)='5081'") = 0), "n=" + TRANSFORM(numara("ALLTRIM(scd)='5081' OR ALLTRIM(scc)='5081'")) DO verifica WITH "2_principal_581", (numara("ALLTRIM(scd)='581' OR ALLTRIM(scc)='581'") = 2), "n=" + TRANSFORM(numara("ALLTRIM(scd)='581' OR ALLTRIM(scc)='581'")) DO verifica WITH "2_fara_401_4111", (numara("INLIST(ALLTRIM(scd),'401','4111') OR INLIST(ALLTRIM(scc),'401','4111')") = 0), "n=" + TRANSFORM(numara("INLIST(ALLTRIM(scd),'401','4111') OR INLIST(ALLTRIM(scc),'401','4111')")) DO verifica WITH "2_dobanda_5121_766", (numara("ALLTRIM(scd)='5121' AND ALLTRIM(scc)='766'") = 1), "n=" + TRANSFORM(numara("ALLTRIM(scd)='5121' AND ALLTRIM(scc)='766'")) DO inchide_imp WITH m.loImp ENDPROC PROCEDURE verifica LPARAMETERS tcLabel, tlOk, tcDetaliu IF m.tlOk gnPass = m.gnPass + 1 DO log_txt WITH "PASS " + m.tcLabel + " :: " + m.tcDetaliu ELSE gnFail = m.gnFail + 1 DO log_txt WITH "FAIL " + m.tcLabel + " :: " + m.tcDetaliu ENDIF ENDPROC PROCEDURE log_txt LPARAMETERS tcTxt STRTOFILE(TRANSFORM(m.tcTxt) + CHR(13) + CHR(10), gcLogUni, 1) ENDPROC PROCEDURE log_eroare_uni LPARAMETERS tnErr, tcMsg, tcProg, tnLine DO log_txt WITH " [ON ERROR] " + TRANSFORM(m.tnErr) + " " + TRANSFORM(m.tcMsg) + " in " + TRANSFORM(m.tcProg) + " linia " + TRANSFORM(m.tnLine) ENDPROC