* test_anulare_lot_ef.prg * Teste AnulareLotEF (COMUN\programe\anulare_lot_ef.prg) si ResetEFacturaIdFact * (COMUN\programe\import_efactura.prg), banda C din docs\plan_efactura_23_24.md. * Fixtura proprie (partener RO9999888801, cod fiscal furnizor de test, ACT coduri 96000xx, * ANAF_EFACTURA cu xnumar_act LIKE 'TEST-%'), creata si stearsa in aceasta rulare, pe schema * MARIUSM_AUTO@ROA_CENTRAL. * * Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\test_anulare_lot_ef.prg" * Iesire in D:\ROA\ROACONT\COMUN\utile\Teste\test_anulare_lot_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 gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\test_anulare_lot_ef_log.txt" 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 oscrie_in_fisiere ADDITIVE SET PROCEDURE TO import_efactura ADDITIVE SET PROCEDURE TO anulare_lot_ef ADDITIVE DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle) + ' gnAn=' + TRANSFORM(gnAn) + ' gnLuna=' + TRANSFORM(gnLuna) + ' gnIdUtil=' + TRANSFORM(gnIdUtil) DO StergeFixturaAnulare LOCAL lnIdP lnIdP = InsPartenerA('RO9999888801') *-- coduri ACT alocate prin SEQ_COD.NEXTVAL (ca la orice document real) - un cod hardcodat *-- poate coincide cu un document existent pe schema si ar atinge date reale neasteptat LOCAL lnCodA, lnCodC, lnCodCRef, lnCodH, lnCodG, lnCodI, lnCodJ, lnCodK lnCodA = NextCod() lnCodC = NextCod() lnCodCRef = NextCod() lnCodH = NextCod() lnCodG = NextCod() lnCodI = NextCod() lnCodJ = NextCod() lnCodK = NextCod() *-- FA: document curat, intr-o perioada DIFERITA de gnAn/gnLuna al sesiunii - dovada ca *-- sterge_document(cod,an,luna,idUtil) foloseste an/luna documentului, nu ale sesiunii LOCAL lnIdFA, lnEfFA lnIdFA = 88800001 DO InsActDoc WITH lnCodA, 2019, 6, {^2019-06-15}, lnIdP, lnIdFA, '628' lnEfFA = InsFactura('TEST-A-CROSS', lnIdFA, 'RO9999888801') *-- FD: fara id_fact (niciodata importata) LOCAL lnEfFD lnEfFD = InsFactura('TEST-D-NOIDFACT', 0, 'RO9999888801') *-- FC: document cu plata atasata (ACT separat cu id_factd = id_fact-ul lui FC) LOCAL lnIdFC, lnEfFC lnIdFC = 88800010 DO InsActDoc WITH lnCodC, gnAn, gnLuna, DATE(), lnIdP, lnIdFC, '628' DO InsActReferinta WITH lnCodCRef, gnAn, gnLuna, DATE(), lnIdP, lnIdFC lnEfFC = InsFactura('TEST-C-REFINTE', lnIdFC, 'RO9999888801') *-- FH: document curat, aceeasi perioada ca sesiunea - pereche cu FC in lotul mixt LOCAL lnIdFH, lnEfFH lnIdFH = 88800030 DO InsActDoc WITH lnCodH, gnAn, gnLuna, DATE(), lnIdP, lnIdFH, '628' lnEfFH = InsFactura('TEST-H-CLEAN', lnIdFH, 'RO9999888801') *-- FG: document curat, folosit doar la testul de esec la mijlocul lotului (ramane intact daca ROLLBACK) LOCAL lnIdFG, lnEfFG lnIdFG = 88800020 DO InsActDoc WITH lnCodG, gnAn, gnLuna, DATE(), lnIdP, lnIdFG, '628' lnEfFG = InsFactura('TEST-G-CLEAN', lnIdFG, 'RO9999888801') *-- FR: doar pentru testul punctual ResetEFacturaIdFact, fara ACT LOCAL lnIdFR, lnEfFR lnIdFR = 88800099 lnEfFR = InsFactura('TEST-R-RESET', lnIdFR, 'RO9999888801') *-- FI: document curat, folosit doar la testul de eroare VFP (cursor cu camp lipsa) - ramane *-- intact daca tranzactia face ROLLBACK LOCAL lnIdFI, lnEfFI lnIdFI = 88800040 DO InsActDoc WITH lnCodI, gnAn, gnLuna, DATE(), lnIdP, lnIdFI, '628' lnEfFI = InsFactura('TEST-I-BADCURSOR', lnIdFI, 'RO9999888801') *-- FJ/FK: doua documente curate, in doua perioade DIFERITE intre ele (si de sesiune), in *-- acelasi lot - dovada ca init_scriere_act_rul_local (o singura data pentru tot lotul) nu *-- influenteaza stergerea per document LOCAL lnIdFJ, lnEfFJ, lnIdFK, lnEfFK lnIdFJ = 88800050 DO InsActDoc WITH lnCodJ, 2019, 6, {^2019-06-20}, lnIdP, lnIdFJ, '628' lnEfFJ = InsFactura('TEST-J-PERIOD1', lnIdFJ, 'RO9999888801') lnIdFK = 88800060 DO InsActDoc WITH lnCodK, 2021, 11, {^2021-11-05}, lnIdP, lnIdFK, '628' lnEfFK = InsFactura('TEST-K-PERIOD2', lnIdFK, 'RO9999888801') goExecutor.oExecute('COMMIT', 'crsCommitFixtura') DO PrLogLocal WITH 'fixtura creata: efFA=' + TRANSFORM(lnEfFA) + ' efFD=' + TRANSFORM(lnEfFD) + ' efFC=' + TRANSFORM(lnEfFC) + ' efFH=' + TRANSFORM(lnEfFH) + ' efFG=' + TRANSFORM(lnEfFG) + ' efFR=' + TRANSFORM(lnEfFR) + ' efFI=' + TRANSFORM(lnEfFI) + ' efFJ=' + TRANSFORM(lnEfFJ) + ' efFK=' + TRANSFORM(lnEfFK) LOCAL loAnul loAnul = CREATEOBJECT('AnulareLotEF') DO PrLogLocal WITH 'cAvertismentRisc=[' + loAnul.cAvertismentRisc + ']' *========================================================================= DO PrLogLocal WITH '=== TEST 6: ResetEFacturaIdFact cu valoare gresita -> nu reseteaza ===' LOCAL llRet, lnIdFactCitit llRet = ResetEFacturaIdFact(lnEfFR, 999999) lnIdFactCitit = -1 goExecutor.oSelect2Value("SELECT NVL(id_fact,-1) FROM ANAF_EFACTURA WHERE id = " + TRANSFORM(lnEfFR), @lnIdFactCitit) DO PrLogLocal WITH ' ResetEFacturaIdFact(valoare gresita) retur=' + TRANSFORM(llRet) + ' id_fact dupa=' + TRANSFORM(lnIdFactCitit) + ' (asteptat ' + TRANSFORM(lnIdFR) + ', neschimbat) ' + IIF(lnIdFactCitit = lnIdFR, 'OK', 'FAIL') llRet = ResetEFacturaIdFact(lnEfFR, lnIdFR) lnIdFactCitit = -1 goExecutor.oSelect2Value("SELECT NVL(id_fact,-1) FROM ANAF_EFACTURA WHERE id = " + TRANSFORM(lnEfFR), @lnIdFactCitit) DO PrLogLocal WITH ' ResetEFacturaIdFact(valoare corecta) retur=' + TRANSFORM(llRet) + ' id_fact dupa=' + TRANSFORM(lnIdFactCitit) + ' (asteptat -1/NULL) ' + IIF(lnIdFactCitit = -1, 'OK', 'FAIL') *========================================================================= DO PrLogLocal WITH '=== TEST 4: factura fara id_fact -> refuzata (in lot cu FA) ===' LOCAL llOk4 llOk4 = loAnul.Verifica(TRANSFORM(lnEfFA) + ',' + TRANSFORM(lnEfFD)) DO PrLogLocal WITH ' Verifica retur=' + TRANSFORM(llOk4) + ' cEroare=[' + loAnul.cEroare + ']' + ; ' acceptate=' + TRANSFORM(RECCOUNT('crsAcceptate')) + ' refuzate=' + TRANSFORM(RECCOUNT('crsRefuzate')) DO PrCursor WITH 'crsAcceptate' DO PrCursor WITH 'crsRefuzate' SELECT crsRefuzate LOCATE FOR id_efactura = lnEfFD DO PrLogLocal WITH ' FD in refuzate=' + TRANSFORM(FOUND()) + ' motiv=[' + IIF(FOUND(), ALLTRIM(motiv), '?') + '] ' + IIF(FOUND() AND 'id_fact' $ LOWER(motiv), 'OK', 'FAIL') SELECT crsAcceptate LOCATE FOR id_efactura = lnEfFA DO PrLogLocal WITH ' FA in acceptate=' + TRANSFORM(FOUND()) + ' ' + IIF(FOUND(), 'OK', 'FAIL') *========================================================================= DO PrLogLocal WITH '=== TEST 1: document curat (alta perioada decat sesiunea) -> se sterge si id_fact se reseteaza ===' LOCAL llOk1, lnSterse1 llOk1 = loAnul.Verifica(TRANSFORM(lnEfFA)) DO PrLogLocal WITH ' Verifica retur=' + TRANSFORM(llOk1) + ' acceptate=' + TRANSFORM(RECCOUNT('crsAcceptate')) + ' refuzate=' + TRANSFORM(RECCOUNT('crsRefuzate')) lnSterse1 = loAnul.Executa('crsAcceptate', 'crsRefuzate') DO PrLogLocal WITH ' Executa retur(sterse)=' + TRANSFORM(lnSterse1) + ' cEroare=[' + loAnul.cEroare + '] (asteptat 1) ' + IIF(lnSterse1 = 1, 'OK', 'FAIL') LOCAL lnStersAct, lnIdFactDupa1 lnStersAct = -1 goExecutor.oSelect2Value("SELECT MIN(sters) FROM ACT WHERE id_fact = " + TRANSFORM(lnIdFA), @lnStersAct) DO PrLogLocal WITH ' ACT id_fact=' + TRANSFORM(lnIdFA) + '(FA, alta perioada) sters=' + TRANSFORM(lnStersAct) + ' (asteptat 1) ' + IIF(lnStersAct = 1, 'OK', 'FAIL') lnIdFactDupa1 = -1 goExecutor.oSelect2Value("SELECT NVL(id_fact,-1) FROM ANAF_EFACTURA WHERE id = " + TRANSFORM(lnEfFA), @lnIdFactDupa1) DO PrLogLocal WITH ' anaf_efactura(FA).id_fact dupa stergere=' + TRANSFORM(lnIdFactDupa1) + ' (asteptat -1/NULL) ' + IIF(lnIdFactDupa1 = -1, 'OK', 'FAIL') *========================================================================= DO PrLogLocal WITH '=== TEST 3: luna inchisa -> refuzat tot lotul ===' glLunaInchisa = .T. LOCAL llOk3 llOk3 = loAnul.Verifica(TRANSFORM(lnEfFC) + ',' + TRANSFORM(lnEfFH) + ',' + TRANSFORM(lnEfFD)) DO PrLogLocal WITH ' Verifica retur=' + TRANSFORM(llOk3) + ' acceptate=' + TRANSFORM(RECCOUNT('crsAcceptate')) + ' (asteptat 0) ' + IIF(RECCOUNT('crsAcceptate') = 0, 'OK', 'FAIL') DO PrCursor WITH 'crsRefuzate' SELECT crsRefuzate LOCATE FOR id_efactura = lnEfFC DO PrLogLocal WITH ' FC motiv=[' + IIF(FOUND(), ALLTRIM(motiv), '?') + '] (asteptat luna inchisa) ' + IIF(FOUND() AND 'luna' $ LOWER(motiv), 'OK', 'FAIL') SELECT crsRefuzate LOCATE FOR id_efactura = lnEfFD DO PrLogLocal WITH ' FD motiv=[' + IIF(FOUND(), ALLTRIM(motiv), '?') + '] (asteptat id_fact - are precedenta pe luna inchisa) ' + IIF(FOUND() AND 'id_fact' $ LOWER(motiv), 'OK', 'FAIL') glLunaInchisa = .F. *========================================================================= DO PrLogLocal WITH '=== TEST 5: esec la mijlocul lotului (FG curat + FC cu referinte) -> ROLLBACK, nimic sters ===' IF USED('crsAcceptateManual') USE IN (SELECT('crsAcceptateManual')) ENDIF CREATE CURSOR crsAcceptateManual (id_efactura N(20), id_fact N(20), cod N(15), an N(4), luna N(2), numar_act C(30), furnizor C(250), suma N(20,4)) INSERT INTO crsAcceptateManual VALUES (lnEfFG, lnIdFG, lnCodG, gnAn, gnLuna, 'TEST-G-CLEAN', 'FIXTURA ANULARE', 100) INSERT INTO crsAcceptateManual VALUES (lnEfFC, lnIdFC, lnCodC, gnAn, gnLuna, 'TEST-C-REFINTE', 'FIXTURA ANULARE', 100) LOCAL lnSterse5 lnSterse5 = loAnul.Executa('crsAcceptateManual') DO PrLogLocal WITH ' Executa retur(sterse)=' + TRANSFORM(lnSterse5) + ' cEroare=[' + loAnul.cEroare + '] (asteptat 0) ' + IIF(lnSterse5 = 0, 'OK', 'FAIL') LOCAL lnStersActG lnStersActG = -1 goExecutor.oSelect2Value("SELECT MIN(sters) FROM ACT WHERE id_fact = " + TRANSFORM(lnIdFG), @lnStersActG) DO PrLogLocal WITH ' ACT id_fact=' + TRANSFORM(lnIdFG) + '(FG) sters dupa ROLLBACK=' + TRANSFORM(lnStersActG) + ' (asteptat 0, ramane intact) ' + IIF(lnStersActG = 0, 'OK', 'FAIL') LOCAL lnIdFactDupa5 lnIdFactDupa5 = -1 goExecutor.oSelect2Value("SELECT NVL(id_fact,-1) FROM ANAF_EFACTURA WHERE id = " + TRANSFORM(lnEfFG), @lnIdFactDupa5) DO PrLogLocal WITH ' anaf_efactura(FG).id_fact dupa ROLLBACK=' + TRANSFORM(lnIdFactDupa5) + ' (asteptat ' + TRANSFORM(lnIdFG) + ', neschimbat) ' + IIF(lnIdFactDupa5 = lnIdFG, 'OK', 'FAIL') *========================================================================= DO PrLogLocal WITH '=== TEST 2: document cu plata atasata -> refuzat, restul lotului (FH) se sterge oricum ===' LOCAL llOk2, lnSterse2 llOk2 = loAnul.Verifica(TRANSFORM(lnEfFC) + ',' + TRANSFORM(lnEfFH)) DO PrLogLocal WITH ' Verifica retur=' + TRANSFORM(llOk2) + ' acceptate=' + TRANSFORM(RECCOUNT('crsAcceptate')) + ' refuzate=' + TRANSFORM(RECCOUNT('crsRefuzate')) DO PrCursor WITH 'crsAcceptate' DO PrCursor WITH 'crsRefuzate' SELECT crsRefuzate LOCATE FOR id_efactura = lnEfFC DO PrLogLocal WITH ' FC in refuzate=' + TRANSFORM(FOUND()) + ' motiv=[' + IIF(FOUND(), ALLTRIM(motiv), '?') + '] ' + IIF(FOUND() AND 'incasari' $ LOWER(motiv), 'OK', 'FAIL') SELECT crsAcceptate LOCATE FOR id_efactura = lnEfFH DO PrLogLocal WITH ' FH in acceptate=' + TRANSFORM(FOUND()) + ' ' + IIF(FOUND(), 'OK', 'FAIL') lnSterse2 = loAnul.Executa('crsAcceptate', 'crsRefuzate') DO PrLogLocal WITH ' Executa retur(sterse)=' + TRANSFORM(lnSterse2) + ' cEroare=[' + loAnul.cEroare + '] (asteptat 1) ' + IIF(lnSterse2 = 1, 'OK', 'FAIL') LOCAL lnStersActH, lnStersActC lnStersActH = -1 goExecutor.oSelect2Value("SELECT MIN(sters) FROM ACT WHERE id_fact = " + TRANSFORM(lnIdFH), @lnStersActH) DO PrLogLocal WITH ' ACT id_fact=' + TRANSFORM(lnIdFH) + '(FH) sters=' + TRANSFORM(lnStersActH) + ' (asteptat 1) ' + IIF(lnStersActH = 1, 'OK', 'FAIL') lnStersActC = -1 goExecutor.oSelect2Value("SELECT MIN(sters) FROM ACT WHERE id_fact = " + TRANSFORM(lnIdFC), @lnStersActC) DO PrLogLocal WITH ' ACT id_fact=' + TRANSFORM(lnIdFC) + '(FC, refuzat) sters=' + TRANSFORM(lnStersActC) + ' (asteptat 0, netins) ' + IIF(lnStersActC = 0, 'OK', 'FAIL') *========================================================================= DO PrLogLocal WITH '=== TEST 7: eroare VFP (camp lipsa in cursor) la mijlocul buclei -> ROLLBACK, tranzactia revine la automat ===' IF USED('crsAcceptateFaraLuna') USE IN (SELECT('crsAcceptateFaraLuna')) ENDIF *-- cursor fara coloana LUNA - forteaza o eroare VFP genuina (variabila nu exista), nu una de SQL CREATE CURSOR crsAcceptateFaraLuna (id_efactura N(20), id_fact N(20), cod N(15), an N(4), numar_act C(30), furnizor C(250), suma N(20,4)) INSERT INTO crsAcceptateFaraLuna VALUES (lnEfFI, lnIdFI, lnCodI, gnAn, 'TEST-I-BADCURSOR', 'FIXTURA ANULARE', 100) LOCAL lnTranzInainte, lnTranzDupa, lnSterse7 lnTranzInainte = SQLGETPROP(gnHandle, 'Transactions') lnSterse7 = loAnul.Executa('crsAcceptateFaraLuna') lnTranzDupa = SQLGETPROP(gnHandle, 'Transactions') DO PrLogLocal WITH ' Executa retur(sterse)=' + TRANSFORM(lnSterse7) + ' cEroare=[' + loAnul.cEroare + '] (asteptat 0, eroare ne-goala) ' + IIF(lnSterse7 = 0 AND !EMPTY(loAnul.cEroare), 'OK', 'FAIL') DO PrLogLocal WITH ' SQLGetprop(Transactions) inainte=' + TRANSFORM(lnTranzInainte) + ' dupa=' + TRANSFORM(lnTranzDupa) + ' (asteptat 1/automat) ' + IIF(lnTranzDupa = 1, 'OK', 'FAIL') LOCAL lnStersActI lnStersActI = -1 goExecutor.oSelect2Value("SELECT MIN(sters) FROM ACT WHERE id_fact = " + TRANSFORM(lnIdFI), @lnStersActI) DO PrLogLocal WITH ' ACT id_fact=' + TRANSFORM(lnIdFI) + '(FI) sters dupa eroare VFP=' + TRANSFORM(lnStersActI) + ' (asteptat 0, netins) ' + IIF(lnStersActI = 0, 'OK', 'FAIL') *-- dovada ca a doua tranzactie manuala se poate porni normal - conexiunea nu a ramas blocata LOCAL lnSetPropTest lnSetPropTest = SQLSETPROP(gnHandle, 'Transactions', 2) DO PrLogLocal WITH ' SQLSetprop(Transactions,2) dupa incident retur=' + TRANSFORM(lnSetPropTest) + ' (asteptat 1, conexiunea raspunde normal) ' + IIF(lnSetPropTest = 1, 'OK', 'FAIL') SQLSETPROP(gnHandle, 'Transactions', 1) IF USED('crsAcceptateFaraLuna') USE IN (SELECT('crsAcceptateFaraLuna')) ENDIF *========================================================================= DO PrLogLocal WITH '=== TEST 8: lot cu doua documente din perioade diferite -> ambele se sterg si id_fact se reseteaza pentru amandoua ===' LOCAL llOk8, lnSterse8 llOk8 = loAnul.Verifica(TRANSFORM(lnEfFJ) + ',' + TRANSFORM(lnEfFK)) DO PrLogLocal WITH ' Verifica retur=' + TRANSFORM(llOk8) + ' acceptate=' + TRANSFORM(RECCOUNT('crsAcceptate')) + ' refuzate=' + TRANSFORM(RECCOUNT('crsRefuzate')) + ' (asteptat 2 acceptate, 0 refuzate) ' + IIF(RECCOUNT('crsAcceptate') = 2 AND RECCOUNT('crsRefuzate') = 0, 'OK', 'FAIL') DO PrCursor WITH 'crsAcceptate' lnSterse8 = loAnul.Executa('crsAcceptate', 'crsRefuzate') DO PrLogLocal WITH ' Executa retur(sterse)=' + TRANSFORM(lnSterse8) + ' cEroare=[' + loAnul.cEroare + '] (asteptat 2) ' + IIF(lnSterse8 = 2, 'OK', 'FAIL') LOCAL lnStersActJ, lnStersActK, lnIdFactDupaJ, lnIdFactDupaK lnStersActJ = -1 goExecutor.oSelect2Value("SELECT MIN(sters) FROM ACT WHERE id_fact = " + TRANSFORM(lnIdFJ), @lnStersActJ) DO PrLogLocal WITH ' ACT id_fact=' + TRANSFORM(lnIdFJ) + '(FJ, 2019/6) sters=' + TRANSFORM(lnStersActJ) + ' (asteptat 1) ' + IIF(lnStersActJ = 1, 'OK', 'FAIL') lnStersActK = -1 goExecutor.oSelect2Value("SELECT MIN(sters) FROM ACT WHERE id_fact = " + TRANSFORM(lnIdFK), @lnStersActK) DO PrLogLocal WITH ' ACT id_fact=' + TRANSFORM(lnIdFK) + '(FK, 2021/11) sters=' + TRANSFORM(lnStersActK) + ' (asteptat 1) ' + IIF(lnStersActK = 1, 'OK', 'FAIL') lnIdFactDupaJ = -1 goExecutor.oSelect2Value("SELECT NVL(id_fact,-1) FROM ANAF_EFACTURA WHERE id = " + TRANSFORM(lnEfFJ), @lnIdFactDupaJ) DO PrLogLocal WITH ' anaf_efactura(FJ).id_fact dupa stergere=' + TRANSFORM(lnIdFactDupaJ) + ' (asteptat -1/NULL) ' + IIF(lnIdFactDupaJ = -1, 'OK', 'FAIL') lnIdFactDupaK = -1 goExecutor.oSelect2Value("SELECT NVL(id_fact,-1) FROM ANAF_EFACTURA WHERE id = " + TRANSFORM(lnEfFK), @lnIdFactDupaK) DO PrLogLocal WITH ' anaf_efactura(FK).id_fact dupa stergere=' + TRANSFORM(lnIdFactDupaK) + ' (asteptat -1/NULL) ' + IIF(lnIdFactDupaK = -1, 'OK', 'FAIL') IF USED('crsAcceptateManual') USE IN (SELECT('crsAcceptateManual')) ENDIF IF USED('crsAcceptate') USE IN (SELECT('crsAcceptate')) ENDIF IF USED('crsRefuzate') USE IN (SELECT('crsRefuzate')) ENDIF DO StergeFixturaAnulare DO VerificaStareInitiala 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('crsAcceptateManual') USE IN (SELECT('crsAcceptateManual')) ENDIF IF USED('crsAcceptate') USE IN (SELECT('crsAcceptate')) ENDIF IF USED('crsRefuzate') USE IN (SELECT('crsRefuzate')) ENDIF SQLSETPROP(gnHandle, 'Transactions', 1) DO StergeFixturaAnulare CATCH ENDTRY ENDTRY QUIT ********************************************************** PROCEDURE PrCursor LPARAMETERS tcCursor IF !USED(tcCursor) DO PrLogLocal WITH ' [' + tcCursor + '] neincarcat' RETURN ENDIF SELECT (tcCursor) SCAN IF TYPE(tcCursor + '.motiv') = 'C' DO PrLogLocal WITH ' [' + tcCursor + '] id_efactura=' + TRANSFORM(id_efactura) + ' cod=' + TRANSFORM(NVL(cod,0)) + ' motiv=[' + ALLTRIM(NVL(motiv,'')) + ']' ELSE DO PrLogLocal WITH ' [' + tcCursor + '] id_efactura=' + TRANSFORM(id_efactura) + ' id_fact=' + TRANSFORM(id_fact) + ' cod=' + TRANSFORM(NVL(cod,0)) ENDIF ENDSCAN ENDPROC ********************************************************** * aloca un cod ACT prin aceeasi secventa folosita de pack_contafin.SET_COD, ca sa nu coincida * cu vreun document real de pe schema PROCEDURE NextCod LOCAL lnCod lnCod = 0 goExecutor.oSelect2Value("SELECT SEQ_COD.NEXTVAL FROM DUAL", @lnCod) RETURN lnCod ENDPROC ********************************************************** PROCEDURE InsPartenerA LPARAMETERS tcCodFiscal LOCAL lnId goExecutor.oExecute("INSERT INTO NOM_PARTENERI (cod_fiscal, denumire) VALUES ('" + tcCodFiscal + "', 'FIXTURA ANULARE EF')", 'crsInsPartA') lnId = 0 goExecutor.oSelect2Value("SELECT SEQ_NOM_PARTENERI.CURRVAL FROM DUAL", @lnId) RETURN lnId ENDPROC ********************************************************** * document contabil de 2 randuri (credit 401 + debit tcContDebit), cu an/luna/id_fact explicite PROCEDURE InsActDoc LPARAMETERS tnCod, tnAn, tnLuna, tdData, tnIdPartener, tnIdFact, tcContDebit LOCAL lcData lcData = "TO_DATE('" + DTOS(tdData) + "','YYYYMMDD')" goExecutor.oExecute("INSERT INTO ACT (cod, an, luna, dataact, scc, id_partc, suma, id_fact, sters) VALUES (" + ; TRANSFORM(tnCod) + ", " + TRANSFORM(tnAn) + ", " + TRANSFORM(tnLuna) + ", " + lcData + ", '401', " + ; TRANSFORM(tnIdPartener) + ", 100, " + TRANSFORM(tnIdFact) + ", 0)", 'crsInsActC') goExecutor.oExecute("INSERT INTO ACT (cod, an, luna, dataact, scd, suma, id_fact, sters) VALUES (" + ; TRANSFORM(tnCod) + ", " + TRANSFORM(tnAn) + ", " + TRANSFORM(tnLuna) + ", " + lcData + ", '" + tcContDebit + "', 100, " + ; TRANSFORM(tnIdFact) + ", 0)", 'crsInsActD') ENDPROC ********************************************************** * document de "plata" - o singura linie ACT cu id_factd = id_fact-ul facturii referite PROCEDURE InsActReferinta LPARAMETERS tnCod, tnAn, tnLuna, tdData, tnIdPartener, tnIdFactd LOCAL lcData lcData = "TO_DATE('" + DTOS(tdData) + "','YYYYMMDD')" goExecutor.oExecute("INSERT INTO ACT (cod, an, luna, dataact, scd, scc, id_partc, suma, id_factd, sters) VALUES (" + ; TRANSFORM(tnCod) + ", " + TRANSFORM(tnAn) + ", " + TRANSFORM(tnLuna) + ", " + lcData + ", '512', '401', " + ; TRANSFORM(tnIdPartener) + ", 100, " + TRANSFORM(tnIdFactd) + ", 0)", 'crsInsActRef') ENDPROC ********************************************************** PROCEDURE InsFactura LPARAMETERS tcNumarAct, tnIdFact, tcCodFiscal LOCAL lnId, lcIdFact lcIdFact = IIF(EMPTY(tnIdFact), 'NULL', TRANSFORM(tnIdFact)) goExecutor.oExecute("INSERT INTO ANAF_EFACTURA (id_fact, xnumar_act, xfurnizor, xtotal_cu_tva, cod_fiscal_emitent, factura_emisa) VALUES (" + ; lcIdFact + ", '" + tcNumarAct + "', 'FIXTURA ANULARE', 100, '" + tcCodFiscal + "', 0)", 'crsInsFact') lnId = 0 goExecutor.oSelect2Value("SELECT SEQ_ANAF_EFACTURA.CURRVAL FROM DUAL", @lnId) RETURN lnId ENDPROC ********************************************************** PROCEDURE StergeFixturaAnulare goExecutor.oExecute("DELETE FROM ANAF_EFACTURA WHERE xnumar_act LIKE 'TEST-%'", 'crsDelFact') goExecutor.oExecute("DELETE FROM ACT WHERE id_fact IN (88800001,88800010,88800020,88800030,88800040,88800050,88800060) OR id_factd = 88800010", 'crsDelAct') goExecutor.oExecute("DELETE FROM CORESP_TIP_PART WHERE id_part IN (SELECT id_part FROM NOM_PARTENERI WHERE cod_fiscal = 'RO9999888801')", 'crsDelCorespTip') goExecutor.oExecute("DELETE FROM NOM_PARTENERI WHERE cod_fiscal = 'RO9999888801'", 'crsDelPart') goExecutor.oExecute('COMMIT', 'crsCommitDel') ENDPROC ********************************************************** PROCEDURE VerificaStareInitiala LOCAL lnRest lnRest = -1 goExecutor.oSelect2Value("SELECT COUNT(*) FROM ACT WHERE id_fact IN (88800001,88800010,88800020,88800030,88800040,88800050,88800060) OR id_factd = 88800010", @lnRest) DO PrLogLocal WITH 'stare finala: ACT randuri fixtura ramase=' + TRANSFORM(lnRest) + ' (asteptat 0) ' + IIF(lnRest = 0, 'OK', 'FAIL') lnRest = -1 goExecutor.oSelect2Value("SELECT COUNT(*) FROM ANAF_EFACTURA WHERE xnumar_act LIKE 'TEST-%'", @lnRest) DO PrLogLocal WITH 'stare finala: ANAF_EFACTURA randuri fixtura ramase=' + TRANSFORM(lnRest) + ' (asteptat 0) ' + IIF(lnRest = 0, 'OK', 'FAIL') lnRest = -1 goExecutor.oSelect2Value("SELECT COUNT(*) FROM NOM_PARTENERI WHERE cod_fiscal = 'RO9999888801'", @lnRest) DO PrLogLocal WITH 'stare finala: NOM_PARTENERI fixtura ramas=' + TRANSFORM(lnRest) + ' (asteptat 0) ' + IIF(lnRest = 0, '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