Borderoul tine per factura ce mai are de completat si daca are articole de gestiune (camp gest, coloana si filtru), coada contabilizeaza in serie facturile bifate si incheie cu un rezumat, iar contul de furnizor/client se alege din planul de conturi. Cheia normalizata de articol, rezolvarea automata a partenerului si anularea in bloc intra tot aici. Pozitia in lista se pastreaza peste reaplicarea filtrului. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Aroafxp4z8bmM5oVECZRXY
422 lines
22 KiB
Plaintext
422 lines
22 KiB
Plaintext
* 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
|