Squash al branch-ului de lucru plan13-s2. Clase: ofacturare (nucleul formularului unificat), ofacturare_comun, ferestre_cere_date, ocomenzi, caut_ora (lista de preturi in combo-urile de cautare), omodificari. Programe: ofacturare impartit - ofacturare_antet, ofacturare_rutare_scriere si ogrid_latimi sunt fisiere noi; oproceduri_facturare primeste discountul pe linie si cota standard de TVA cand articolul nu are cota pe politica. Documentatie: capcana SQLExec no_data_found, conventia de encoding, depanarea testelor VFP si regulile de lucru - conflictele cu modificarile venite din alte proiecte sunt rezolvate pastrand ambele parti. Loguri de rulare a testelor scoase din versionare; testele raman. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PkyjGyrV2S7932om4kfSiK
404 lines
18 KiB
Plaintext
404 lines
18 KiB
Plaintext
* probe_fact005_avize.prg
|
|
* Diagnostic pentru "Nu exista articole in lista de vanzare! (FACT-005)" pe documentul 1119
|
|
* (AVIZ-B, rularea 2 din test_s9_8_flux.prg, firma 167). Repeta EXACT scenariul rularii 2, dar cu
|
|
* goExecutor inlocuit de o subclasa care logheaza fiecare statement, masoara starea reala in
|
|
* Oracle in punctele-cheie (dupa stergere, inainte de scrie_factura_avize) si BLOCHEAZA apelul
|
|
* scrie_factura_avize - deci nu se scrie nimic si nu se consuma niciun numar.
|
|
*
|
|
* Masoara, in ordine, in ACEEASI tranzactie:
|
|
* - inainte: FACTURAT pe avizul sursa 684, randurile VANZARI_CORESP, VANZARI_CANTITATI
|
|
* - dupa StergeDocumentFacturare (detectat prin primul initializeaza_date_factura): aceleasi
|
|
* - inainte de scrie_factura_avize: count(*) pe VANZARI_DETALII_TEMP + listaid + ramas avize
|
|
* La final: ROLLBACK.
|
|
|
|
*!* tnIdFirma: firma pe care intra harness-ul. 167 = firma documentului 1119 (corect);
|
|
*!* 0 = fara firma, exact cum a rulat sweep-ul S12 din 04.09 01:23 (cade pe firma implicita 110)
|
|
*!* tnControlNegativ = 1: goleste CONT-ul in apelurile adauga_articol_factura (ca inainte de
|
|
*!* reparatia FACT-008), ca sa se vada daca reapare FACT-005
|
|
*!* tnFaraInfasurare = 1: apelul se trimite EXACT cum il trimite productia, fara EXCEPTION WHEN
|
|
*!* OTHERS - se vede codul real intors de SQLExec, deci daca eroarea e tacuta sau zgomotoasa
|
|
LPARAMETERS tnIdFirma, tnControlNegativ, tnFaraInfasurare
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
|
|
PUBLIC gcErrLog, poDate, poSnapshotEditare, gnNrAdaugaArt, pcErrF005, gnControlNegativ, gnFaraInfasurare
|
|
pcErrF005 = SPACE(400)
|
|
gnControlNegativ = VAL(TRANSFORM(tnControlNegativ))
|
|
gnFaraInfasurare = VAL(TRANSFORM(tnFaraInfasurare))
|
|
|
|
gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\probe_fact005_avize_log_' + ;
|
|
STRTRAN(STRTRAN(STRTRAN(TTOC(DATETIME()), '/', ''), ':', ''), ' ', '_') + '.txt'
|
|
STRTOFILE('start ' + TRANSFORM(DATETIME()) + ' MARCA=F005-AVIZ doc=1119 aviz=684 firma_ceruta=' + ;
|
|
TRANSFORM(VAL(TRANSFORM(tnIdFirma))) + CHR(13) + CHR(10), gcErrLog)
|
|
|
|
ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
DO ('D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto_roafacturare.prg') WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT', 2026, 8, VAL(TRANSFORM(tnIdFirma))
|
|
IF gnHandle <= 0
|
|
STRTOFILE('EROARE: conectare esuata' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
QUIT
|
|
ENDIF
|
|
gnIdUtil = 8
|
|
|
|
SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\programe\ofacturare_editare.prg ADDITIVE
|
|
SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\programe\ofacturare_rutare_scriere.prg ADDITIVE
|
|
|
|
LOCAL lcProcExistent
|
|
lcProcExistent = SET("PROCEDURE")
|
|
SET PROCEDURE TO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\mock_amessagebox.prg", &lcProcExistent
|
|
|
|
LOCAL lcPathVechi, lcPathNou
|
|
lcPathVechi = SET("PATH")
|
|
lcPathNou = 'D:\ROA\ROAFACTURARE\COMUN\Utile\Teste\achizitie_import\stub_verificare;' + lcPathVechi
|
|
SET PATH TO &lcPathNou
|
|
|
|
PUBLIC gnMockRaspuns, gcMockUltimMesaj, gnMockUltimTip
|
|
gnMockRaspuns = 7
|
|
gcMockUltimMesaj = ''
|
|
gnMockUltimTip = 0
|
|
gnNrAdaugaArt = 0
|
|
|
|
STRTOFILE('perioada activa gnAn/gnLuna = ' + TRANSFORM(gnAn) + '/' + TRANSFORM(gnLuna) + ;
|
|
' gnIdFirma=' + TRANSFORM(gnIdFirma) + ' gnIdSucursala=' + TRANSFORM(gnIdSucursala) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
DO Probeaza
|
|
|
|
STRTOFILE('end ' + TRANSFORM(DATETIME()) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
QUIT
|
|
|
|
|
|
*==============================================================================================
|
|
PROCEDURE Probeaza
|
|
LOCAL loForm, lnDiscRon, lnDiscVal, lnIdV, lnRuta, llRez, loSpy, loReal
|
|
lnIdV = 1119
|
|
|
|
DO StareAvize WITH 'INAINTE'
|
|
|
|
lnDiscRon = 0
|
|
lnDiscVal = 0
|
|
poDate = IncarcaAntetFacturaEditare(lnIdV, @lnDiscRon, @lnDiscVal)
|
|
IF VARTYPE(poDate) <> 'O'
|
|
STRTOFILE('EROARE: antetul nu s-a incarcat' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
RETURN
|
|
ENDIF
|
|
STRTOFILE('poDate.tip=' + TRANSFORM(poDate.tip) + ' poDate.listaid=[' + TRANSFORM(NVL(poDate.listaid,'<NULL>')) + ;
|
|
'] poDate.cListaSursaAvize=[' + TRANSFORM(NVL(poDate.cListaSursaAvize,'<NULL>')) + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
IncarcaLiniiFacturaEditare(poDate, lnIdV)
|
|
IF !USED('crsfactura') OR RECCOUNT('crsfactura') = 0
|
|
STRTOFILE('EROARE: liniile nu s-au incarcat' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
RETURN
|
|
ENDIF
|
|
STRTOFILE('crsfactura: ' + TRANSFORM(RECCOUNT('crsfactura')) + ' randuri' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
SELECT crsfactura
|
|
SCAN
|
|
STRTOFILE(' rand ' + TRANSFORM(RECNO()) + ': id_temp=' + TRANSFORM(NVL(crsfactura.id_temp,-1)) + ;
|
|
' id_articol=' + TRANSFORM(NVL(crsfactura.id_articol,-1)) + ;
|
|
' id_gestiune=' + TRANSFORM(NVL(crsfactura.id_gestiune,-1)) + ;
|
|
' cantitate=' + TRANSFORM(crsfactura.cantitate) + ;
|
|
' opt_facturare=' + TRANSFORM(NVL(crsfactura.opt_facturare,-1)) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDSCAN
|
|
GO TOP IN crsfactura
|
|
|
|
update_jtva_coloane([JV], [jtva_coloane_temp])
|
|
update_saft_taxtable()
|
|
IF USED('jtva_coloane')
|
|
USE IN jtva_coloane
|
|
ENDIF
|
|
IF poDate.tva_incasare = 0
|
|
SELECT * FROM jtva_coloane_temp WHERE ISNULL(id_jtva_ex) AND !'RORTC' $ UPPER(coloana_jv) INTO CURSOR jtva_coloane
|
|
ELSE
|
|
SELECT * FROM jtva_coloane_temp WHERE ISNULL(id_jtva_neex) AND !'RORTC' $ UPPER(coloana_jv) INTO CURSOR jtva_coloane
|
|
ENDIF
|
|
|
|
loForm = CREATEOBJECT('SpyFrm005')
|
|
loForm.ndiscfactron = lnDiscRon
|
|
loForm.ndiscfactval = lnDiscVal
|
|
loForm.do_calculeaza_totaluri()
|
|
poSnapshotEditare = CreeazaSnapshotEditare(poDate, loForm.ndiscfactron, loForm.ndiscfactval, ;
|
|
lnIdV, Val1([select nvl(id_fact,0) as v from vanzari where id_vanzare = ] + TRANSFORM(lnIdV)), ;
|
|
Val1([select nvl(cod,0) as v from vanzari where id_vanzare = ] + TRANSFORM(lnIdV)), gnAn, gnLuna)
|
|
IF VARTYPE(poSnapshotEditare) <> 'O'
|
|
STRTOFILE('EROARE: instantaneul nu s-a creat' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
RETURN
|
|
ENDIF
|
|
|
|
SELECT crsfactura
|
|
GO TOP
|
|
REPLACE cantitate WITH cantitate + 1 IN crsfactura
|
|
loForm.do_calculeaza_totaluri()
|
|
|
|
lnRuta = AlegeRutaScriereEditare(poSnapshotEditare, poDate, loForm.ndiscfactron, loForm.ndiscfactval, 'crsfactura')
|
|
STRTOFILE('ruta aleasa = ' + TRANSFORM(lnRuta) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
loReal = goExecutor
|
|
loSpy = CREATEOBJECT('SpyF005')
|
|
loSpy.nHandle = gnHandle
|
|
goExecutor = loSpy
|
|
|
|
STRTOFILE('--- INCEPE do_scrie_factura ---' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
llRez = loForm.do_scrie_factura()
|
|
STRTOFILE('--- do_scrie_factura a intors ' + TRANSFORM(llRez) + ' ---' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
goExecutor = loReal
|
|
STRTOFILE('statemente capturate: ' + TRANSFORM(loSpy.nIdx) + ' adauga_articol_factura: ' + TRANSFORM(gnNrAdaugaArt) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
STRTOFILE('ultimul mesaj prin mock: [' + gcMockUltimMesaj + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
SQLROLLBACK(gnHandle)
|
|
SQLSetProp(gnHandle, 'Transactions', 1)
|
|
|
|
DO StareAvize WITH 'DUPA ROLLBACK'
|
|
ENDPROC
|
|
|
|
|
|
*==============================================================================================
|
|
* StareAvize: starea legaturii aviz->factura, citita prin conexiunea curenta (deci vede si ce e
|
|
* nescris-inca-necomis in tranzactia proprie).
|
|
*==============================================================================================
|
|
PROCEDURE StareAvize
|
|
LPARAMETERS tcEticheta
|
|
STRTOFILE(tcEticheta + ' | vanzari.1119 sters=' + TRANSFORM(Val1([select nvl(sters,-9) as v from vanzari where id_vanzare = 1119])) + ;
|
|
' id_fact=' + TRANSFORM(Val1([select nvl(id_fact,-9) as v from vanzari where id_vanzare = 1119])) + ;
|
|
' | aviz 684 facturat=' + TRANSFORM(Val1([select nvl(facturat,-9) as v from vanzari where id_vanzare = 684])) + ;
|
|
' sters=' + TRANSFORM(Val1([select nvl(sters,-9) as v from vanzari where id_vanzare = 684])) + ;
|
|
' | coresp(fact=1119,sters=0)=' + TRANSFORM(Val1([select count(*) as v from vanzari_coresp where id_vanzare_fact = 1119 and sters = 0])) + ;
|
|
' coresp(fact=1119,total)=' + TRANSFORM(Val1([select count(*) as v from vanzari_coresp where id_vanzare_fact = 1119])) + ;
|
|
' | cantitati vii pe det 1119=' + TRANSFORM(Val1([select count(*) as v from vanzari_cantitati where sters = 0 and id_vanzare_det in (select id_vanzare_det from vanzari_detalii where id_vanzare = 1119)])) + ;
|
|
' | ramas_avize_lista(684)=' + TRANSFORM(Val1([select pack_facturare.exista_ramas_avize_lista('684') as v from dual])) + ;
|
|
CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDPROC
|
|
|
|
|
|
*==============================================================================================
|
|
* ListeazaTemp: continutul VANZARI_DETALII_TEMP in tranzactia curenta (tabela temporara pe
|
|
* tranzactie - se vede doar din aceasta sesiune).
|
|
*==============================================================================================
|
|
PROCEDURE ListeazaTemp
|
|
LPARAMETERS tcEticheta
|
|
LOCAL lnR
|
|
IF USED('v_tmp95')
|
|
USE IN v_tmp95
|
|
ENDIF
|
|
lnR = SQLExec(gnHandle, [select id_temp, id_articol, id_gestiune, cantitate, pret, proc_tvav, in_stoc from vanzari_detalii_temp order by id_temp], 'v_tmp95')
|
|
IF lnR < 0 OR !USED('v_tmp95')
|
|
STRTOFILE(tcEticheta + ': EROARE la citirea VANZARI_DETALII_TEMP' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
RETURN
|
|
ENDIF
|
|
STRTOFILE(tcEticheta + ': VANZARI_DETALII_TEMP are ' + TRANSFORM(RECCOUNT('v_tmp95')) + ' randuri' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
SELECT v_tmp95
|
|
SCAN
|
|
STRTOFILE(' id_temp=' + TRANSFORM(NVL(v_tmp95.id_temp,-1)) + ;
|
|
' id_articol=' + TRANSFORM(NVL(v_tmp95.id_articol,-1)) + ;
|
|
' id_gestiune=' + TRANSFORM(NVL(v_tmp95.id_gestiune,-1)) + ;
|
|
' cantitate=' + TRANSFORM(NVL(v_tmp95.cantitate,-1)) + ;
|
|
' pret=' + TRANSFORM(NVL(v_tmp95.pret,-1)) + ;
|
|
' proc_tvav=' + TRANSFORM(NVL(v_tmp95.proc_tvav,-1)) + ;
|
|
' in_stoc=' + TRANSFORM(NVL(v_tmp95.in_stoc,-1)) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDSCAN
|
|
USE IN v_tmp95
|
|
ENDPROC
|
|
|
|
|
|
FUNCTION Val1
|
|
LPARAMETERS tcSql
|
|
LOCAL lnRet, lnR
|
|
lnRet = -1
|
|
IF USED('v_val96')
|
|
USE IN v_val96
|
|
ENDIF
|
|
lnR = SQLExec(gnHandle, tcSql, 'v_val96')
|
|
IF lnR >= 0 AND USED('v_val96')
|
|
SELECT v_val96
|
|
IF RECCOUNT('v_val96') > 0
|
|
GO TOP
|
|
lnRet = NVL(v_val96.v, -1)
|
|
ENDIF
|
|
USE IN v_val96
|
|
ENDIF
|
|
RETURN lnRet
|
|
ENDFUNC
|
|
|
|
|
|
PROCEDURE test_error_handler
|
|
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
|
|
|
STRTOFILE('EROARE NEPRINSA ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcErrLog, 1)
|
|
IF TYPE('gnHandle') = 'N' AND gnHandle > 0
|
|
SQLROLLBACK(gnHandle)
|
|
SQLSetProp(gnHandle, 'Transactions', 1)
|
|
ENDIF
|
|
STRTOFILE('end (eroare) ' + TRANSFORM(DATETIME()) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
QUIT
|
|
ENDPROC
|
|
|
|
|
|
*==============================================================================================
|
|
* SpyFrm005: subclasa a formularului real, cu o singura schimbare - do_inchide_tranzactie face
|
|
* MEREU ROLLBACK, niciodata COMMIT. Restul fluxului ruleaza neatins, deci nimic nu se scrie.
|
|
*==============================================================================================
|
|
DEFINE CLASS SpyFrm005 AS frm_facturare_articole2 OF "D:\ROA\ROAFACTURARE\COMUN\clase\ofacturare.vcx"
|
|
PROCEDURE do_inchide_tranzactie
|
|
LPARAMETERS tnTip
|
|
STRTOFILE(' [SpyFrm005] do_inchide_tranzactie(' + TRANSFORM(tnTip) + ') -> fortat ROLLBACK' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
*!* documentul reemis se masoara AICI - dupa acest apel nu mai exista nimic
|
|
LOCAL lnIdVNou
|
|
lnIdVNou = Val1([select nvl(max(id_vanzare),0) as v from vanzari])
|
|
STRTOFILE('DOCUMENT REEMIS (inainte de rollback) id_vanzare=' + TRANSFORM(lnIdVNou) + ;
|
|
' linii vii=' + TRANSFORM(Val1([select count(*) as v from vanzari_detalii where id_vanzare = ] + TRANSFORM(lnIdVNou) + [ and sters = 0])) + ;
|
|
' (originalul 1119 are 4)' + ;
|
|
' id_fact=' + TRANSFORM(Val1([select nvl(id_fact,-9) as v from vanzari where id_vanzare = ] + TRANSFORM(lnIdVNou))) + ;
|
|
' tip=' + TRANSFORM(Val1([select nvl(tip,-9) as v from vanzari where id_vanzare = ] + TRANSFORM(lnIdVNou))) + ;
|
|
' coresp(fact=nou,tip=1,sters=0)=' + TRANSFORM(Val1([select count(*) as v from vanzari_coresp where id_vanzare_fact = ] + TRANSFORM(lnIdVNou) + [ and tip = 1 and sters = 0])) + ;
|
|
' total_cu_tva=' + TRANSFORM(Val1([select nvl(total_cu_tva,-9) as v from vanzari where id_vanzare = ] + TRANSFORM(lnIdVNou))) + ;
|
|
CHR(13) + CHR(10), gcErrLog, 1)
|
|
RETURN DODEFAULT(2)
|
|
ENDPROC
|
|
ENDDEFINE
|
|
|
|
|
|
*==============================================================================================
|
|
* SpyF005: subclasa a lui oexecutor. Logheaza fiecare statement, masoara starea in punctele-cheie
|
|
* si BLOCHEAZA scrie_factura_avize (RETURN -1) - deci nu se scrie nimic.
|
|
*==============================================================================================
|
|
DEFINE CLASS SpyF005 AS oexecutor
|
|
nIdx = 0
|
|
nVazutInit = 0
|
|
nUrmaTemp = 0
|
|
|
|
PROCEDURE oExecute(tcSql, tcCursor, tlProgress, tcTitluProgress, tnHandle, tlShowError, tlQuitOnError, tlReconnect)
|
|
LOCAL lnI, lnRet, loEx, lcS, lcC, lnPc
|
|
THIS.nIdx = THIS.nIdx + 1
|
|
lnI = THIS.nIdx
|
|
lnPc = PCOUNT()
|
|
lcS = IIF(VARTYPE(m.tcSql) = 'C', m.tcSql, '<NU E SIR>')
|
|
lcC = IIF(VARTYPE(m.tcCursor) = 'C', m.tcCursor, '')
|
|
|
|
STRTOFILE('#' + TRANSFORM(lnI) + ' pcount=' + TRANSFORM(lnPc) + ' cursor=[' + lcC + ']' + ;
|
|
' len=' + TRANSFORM(LEN(lcS)) + CHR(13) + CHR(10) + ;
|
|
' SQL=[' + LEFT(lcS, 1400) + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
*!* apelul se ruleaza infasurat intr-un EXCEPTION WHEN OTHERS care intoarce sqlcode/sqlerrm
|
|
*!* prin bind OUT - acelasi apel, aceleasi argumente, dar cu eroarea vizibila
|
|
IF 'adauga_articol_factura' $ lcS
|
|
gnNrAdaugaArt = gnNrAdaugaArt + 1
|
|
LOCAL lcInner, lnB, lcNou
|
|
IF gnControlNegativ = 1
|
|
lcS = STRTRAN(lcS, [,'371',], [,'',])
|
|
STRTOFILE(' [control negativ] CONT golit in apel' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDIF
|
|
lcInner = SUBSTR(lcS, 7)
|
|
lnB = RAT('end;', lcInner)
|
|
IF lnB > 1
|
|
lcInner = LEFT(lcInner, lnB - 1)
|
|
ENDIF
|
|
pcErrF005 = SPACE(400)
|
|
IF gnFaraInfasurare = 1
|
|
LOCAL ARRAY laErr[1]
|
|
lnRet = SQLExec(gnHandle, lcS)
|
|
pcErrF005 = IIF(lnRet < 0 AND AERROR(laErr) > 0, TRANSFORM(laErr[1,3]), 'OK')
|
|
STRTOFILE(' -> [neinfasurat] ret=' + TRANSFORM(lnRet) + ' err=[' + ALLTRIM(TRANSFORM(pcErrF005)) + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO ListeazaTemp WITH ' dupa acest adauga_articol_factura'
|
|
RETURN lnRet
|
|
ENDIF
|
|
LOCAL lcQ
|
|
lcQ = CHR(39)
|
|
lcNou = [begin begin ] + lcInner + [ ?@pcErrF005 := ] + lcQ + [OK] + lcQ + [; exception when others then ] + ;
|
|
[?@pcErrF005 := to_char(sqlcode) || ] + lcQ + [ ] + lcQ + [ || substr(sqlerrm,1,300); end; end;]
|
|
lnRet = SQLExec(gnHandle, lcNou)
|
|
STRTOFILE(' -> [infasurat] ret=' + TRANSFORM(lnRet) + ' pcErrF005=[' + ALLTRIM(TRANSFORM(pcErrF005)) + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO ListeazaTemp WITH ' dupa acest adauga_articol_factura'
|
|
RETURN IIF(lnRet < 0, -1, 1)
|
|
ENDIF
|
|
|
|
*!* primul initializeaza_date_factura vine imediat DUPA StergeDocumentFacturare
|
|
IF 'initializeaza_date_factura' $ lcS AND THIS.nVazutInit = 0
|
|
THIS.nVazutInit = 1
|
|
DO StareAvize WITH 'DUPA STERGERE (inainte de initializeaza_date_factura)'
|
|
ENDIF
|
|
|
|
IF 'scrie_factura_avize' $ lcS
|
|
STRTOFILE(' *** punct de masura: inainte de scrie_factura_avize ***' + CHR(13) + CHR(10) + ;
|
|
' vanzari_detalii_temp = ' + TRANSFORM(Val1([select count(*) as v from vanzari_detalii_temp])) + ' randuri' + CHR(13) + CHR(10) + ;
|
|
' act_temp = ' + TRANSFORM(Val1([select count(*) as v from act_temp])) + ' randuri' + CHR(13) + CHR(10) + ;
|
|
' poDate.listaid = [' + TRANSFORM(NVL(poDate.listaid,'<NULL>')) + ']' + CHR(13) + CHR(10) + ;
|
|
' clistaid Oracle = [' + TRANSFORM(Sir1([select nvl(pack_facturare.clistaid,'<NULL>') as v from dual])) + ']' + CHR(13) + CHR(10) + ;
|
|
' ntip Oracle = ' + TRANSFORM(Val1([select nvl(pack_facturare.ntip,-9) as v from dual])) + CHR(13) + CHR(10) + ;
|
|
' nid_sucursala Oracle = ' + TRANSFORM(Val1([select nvl(pack_facturare.nid_sucursala,-9) as v from dual])) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO ListeazaTemp WITH ' inainte de scrie_factura_avize'
|
|
DO StareAvize WITH 'INAINTE DE scrie_factura_avize'
|
|
|
|
*!* acelasi apel, dar cu REF CURSOR-ul si OUT-ul in variabile PL/SQL locale si cu
|
|
*!* EXCEPTION WHEN OTHERS care intoarce sqlcode/sqlerrm - apoi se intoarce mereu -1,
|
|
*!* deci fluxul cade pe ramura de eroare (ROLLBACK) chiar daca apelul ar fi reusit
|
|
LOCAL lcQ2, lnP1, lcArg, lcBloc
|
|
lcQ2 = CHR(39)
|
|
lnP1 = AT('(', lcS)
|
|
lcArg = SUBSTR(lcS, lnP1 + 1, RAT(')', lcS) - lnP1 - 1)
|
|
lcArg = STRTRAN(lcArg, '?@poDate.nid_vanzare', 'v')
|
|
pcErrF005 = SPACE(400)
|
|
THIS.nUrmaTemp = 2
|
|
ENDIF
|
|
|
|
lnRet = -1
|
|
TRY
|
|
DO CASE
|
|
CASE lnPc <= 1
|
|
lnRet = DODEFAULT(m.tcSql)
|
|
CASE lnPc = 2
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor)
|
|
CASE lnPc = 3
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress)
|
|
CASE lnPc = 4
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress)
|
|
CASE lnPc = 5
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress, m.tnHandle)
|
|
CASE lnPc = 6
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress, m.tnHandle, m.tlShowError)
|
|
CASE lnPc = 7
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress, m.tnHandle, m.tlShowError, m.tlQuitOnError)
|
|
OTHERWISE
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress, m.tnHandle, m.tlShowError, m.tlQuitOnError, m.tlReconnect)
|
|
ENDCASE
|
|
STRTOFILE(' -> ret=' + TRANSFORM(lnRet) + IIF(lnRet < 0, ' EROARE=[' + THIS.cEroare + ']', '') + CHR(13) + CHR(10), gcErrLog, 1)
|
|
IF THIS.nUrmaTemp > 0
|
|
THIS.nUrmaTemp = 0
|
|
DO ListeazaTemp WITH ' dupa acest statement'
|
|
ENDIF
|
|
CATCH TO loEx
|
|
STRTOFILE(' -> EXCEPTIE VFP la statement #' + TRANSFORM(lnI) + ;
|
|
': ErrorNo=' + TRANSFORM(loEx.ErrorNo) + ;
|
|
' Message=[' + TRANSFORM(loEx.Message) + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
lnRet = -1
|
|
THIS.cEroare = 'SpyF005: ' + TRANSFORM(loEx.Message)
|
|
ENDTRY
|
|
|
|
RETURN lnRet
|
|
ENDPROC
|
|
|
|
FUNCTION oPrelucrareEroare
|
|
RETURN 'SpyF005: ' + TRANSFORM(THIS.cEroare)
|
|
ENDFUNC
|
|
ENDDEFINE
|
|
|
|
|
|
FUNCTION Sir1
|
|
LPARAMETERS tcSql
|
|
LOCAL lcRet, lnR
|
|
lcRet = '<eroare>'
|
|
IF USED('v_sir96')
|
|
USE IN v_sir96
|
|
ENDIF
|
|
lnR = SQLExec(gnHandle, tcSql, 'v_sir96')
|
|
IF lnR >= 0 AND USED('v_sir96')
|
|
SELECT v_sir96
|
|
IF RECCOUNT('v_sir96') > 0
|
|
GO TOP
|
|
lcRet = ALLTRIM(TRANSFORM(NVL(v_sir96.v, '<NULL>')))
|
|
ENDIF
|
|
USE IN v_sir96
|
|
ENDIF
|
|
RETURN lcRet
|
|
ENDFUNC
|