* probe_defect5_latent.prg * I1 din mandatul defect5b: simuleaza reparatia golului de incarcare (poDate.incasat nepopulat, * docs\raport_s8_defect5_incasat.md) FARA sa atinga codul de productie. Repeta pas-cu-pas corpul * real al frm_facturi.do_editare_unificata (ofacturare_comun.vc2:3890-3975), cu poDate.incasat * fortat la valoarea reala din baza dupa IncarcaAntetFacturaEditare si inainte de Createobject/Show, * ca sa arate ce s-ar intampla daca golul de incarcare ar fi reparat. Nu scrie in Oracle (doar * SELECT prin gencursor/goExecutor), nu modifica niciun .vc2/.vcx. * Document: id_vanzare=1071 (tip=1, incasat=119, eproforma=0, sters=0), gasit de * find_defect5_doc.prg. Driver de inchidere modal: acelasi driverS8p7 din test_s8_pas7_cablare.prg. SET SAFETY OFF SET TALK OFF PUBLIC gcErrLog gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\probe_defect5_latent_log.txt' STRTOFILE('start' + CHR(13) + CHR(10), gcErrLog) ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() DO ('D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto_roafacturare.prg') WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT' 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 LOCAL lcProcExistent lcProcExistent = SET("PROCEDURE") SET PROCEDURE TO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\mock_amessagebox.prg", &lcProcExistent PUBLIC gcMockUltimMesaj, gnMockUltimTip, gnMockRaspuns gcMockUltimMesaj = '' gnMockUltimTip = 0 gnMockRaspuns = 6 PUBLIC goDriverS8p7 goDriverS8p7 = Createobject('driverS8p7') _SCREEN.AddObject('tmrS8p7', 'Timer') _SCREEN.tmrS8p7.Interval = 150 Bindevent(_SCREEN.tmrS8p7, 'Timer', goDriverS8p7, 'Executa') _SCREEN.tmrS8p7.Enabled = .T. *!* --- G2: instantaneu vplaje_numere INAINTE --- LOCAL lnSuccesG2a lnSuccesG2a = goExecutor.oExecute('select * from vplaje_numere order by 1', 'crsplaje_inainte') STRTOFILE('vplaje_numere INAINTE: oExecute=' + Transform(lnSuccesG2a) + ' randuri=' + ; Transform(Iif(Used('crsplaje_inainte'), Reccount('crsplaje_inainte'), -1)) + CHR(13) + CHR(10), gcErrLog, 1) goExecutor.oReset() LOCAL lnIdVanzare lnIdVanzare = 1071 *!* --- replica exacta a corpului do_editare_unificata (ofacturare_comun.vc2:3890-3975) --- Local lnSters, llEProforma, lnTipDoc, loForm, pnDiscountRon, pnDiscountValuta Private pnAn, pnLuna, lnCod, lnIdFact, lnIdVanzareP, poDate Store 0 To pnAn, pnLuna, lnCod, lnIdFact, lnIdVanzareP LOCAL lnSuccesSel lnSuccesSel = goExecutor.oExecute('select id_vanzare,cod,data_act,sters,id_fact,eproforma,tip,incasat from fact_vfacturi where id_vanzare=' + Transform(lnIdVanzare), 'crsUnic') IF lnSuccesSel < 0 OR !Used('crsUnic') OR Reccount('crsUnic') <> 1 STRTOFILE('EROARE: documentul 1071 nu a putut fi reincarcat pentru replica' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF SELECT crsUnic lnIdVanzareP = id_vanzare lnCod = cod pnAn = Year(data_act) pnLuna = Month(data_act) lnSters = sters lnIdFact = id_fact llEProforma = (eproforma = 1) lnTipDoc = tip LOCAL lnIncasatReal lnIncasatReal = incasat STRTOFILE('replica: id_vanzare=' + Transform(lnIdVanzareP) + ' tip=' + Transform(lnTipDoc) + ; ' eproforma=' + Transform(llEProforma) + ' sters=' + Transform(lnSters) + ' incasat_real=' + Transform(lnIncasatReal) + CHR(13) + CHR(10), gcErrLog, 1) IF lnSters = 1 STRTOFILE('OPRIT: document sters' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF IF llEProforma STRTOFILE('OPRIT: proforma' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF IF Inlist(lnTipDoc, 44, 45, 46, 51) STRTOFILE('OPRIT: tip in afara perimetrului' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF IF (pnAn * 12) + pnLuna <> (gnAn * 12) + gnLuna STRTOFILE('OPRIT: nu e in luna curenta de lucru' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF IF ReferinteDocumenteNota(pnAn, pnLuna, lnCod) STRTOFILE('OPRIT: are referinte (incasari/plati)' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF IF EsteInEFactura(lnIdFact) STRTOFILE('OPRIT: e in eFactura' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF IF DocumentAreUrmasi(lnIdVanzareP) STRTOFILE('OPRIT: are urmasi' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF poDate = IncarcaAntetFacturaEditare(lnIdVanzareP, @pnDiscountRon, @pnDiscountValuta) IF Vartype(poDate) <> 'O' STRTOFILE('OPRIT: IncarcaAntetFacturaEditare a esuat' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF STRTOFILE('poDate.incasat INAINTE de fortare (asa cum e azi, defect infirmat/latent) = ' + Transform(poDate.incasat) + CHR(13) + CHR(10), gcErrLog, 1) *!* FORTARE - simuleaza reparatia golului de incarcare, fara sa atinga IncarcaAntetFacturaEditare poDate.incasat = lnIncasatReal STRTOFILE('poDate.incasat DUPA fortare (simuleaza reparatia) = ' + Transform(poDate.incasat) + CHR(13) + CHR(10), gcErrLog, 1) IncarcaLiniiFacturaEditare(poDate, lnIdVanzareP) 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 STRTOFILE('inainte de Createobject(frm_facturare_articole2)' + CHR(13) + CHR(10), gcErrLog, 1) goDriverS8p7.Reseteaza() loForm = Createobject('frm_facturare_articole2') STRTOFILE('Createobject terminat (Init a rulat deja aici, inclusiv blocul incasat<>0 daca poDate.incasat<>0)' + CHR(13) + CHR(10), gcErrLog, 1) loForm.ndiscfactron = pnDiscountRon loForm.ndiscfactval = pnDiscountValuta loForm.do_calculeaza_totaluri() STRTOFILE('inainte de Show()' + CHR(13) + CHR(10), gcErrLog, 1) loForm.Show() STRTOFILE('dupa Show(), mesaj amessagebox=[' + gcMockUltimMesaj + '] driver.lGasit=' + Transform(goDriverS8p7.lGasit) + CHR(13) + CHR(10), gcErrLog, 1) _SCREEN.tmrS8p7.Enabled = .F. Try _SCREEN.RemoveObject('tmrS8p7') Catch Endtry Try loForm.Release() Catch Endtry *!* --- G2: instantaneu vplaje_numere DUPA --- LOCAL lnSuccesG2b lnSuccesG2b = goExecutor.oExecute('select * from vplaje_numere order by 1', 'crsplaje_dupa') STRTOFILE('vplaje_numere DUPA: oExecute=' + Transform(lnSuccesG2b) + ' randuri=' + ; Transform(Iif(Used('crsplaje_dupa'), Reccount('crsplaje_dupa'), -1)) + CHR(13) + CHR(10), gcErrLog, 1) goExecutor.oReset() IF Used('crsplaje_inainte') AND Used('crsplaje_dupa') LOCAL lnDiferente, lnIdPlajaC, lnUrmvalInainte, lnUrmvalDupa lnDiferente = 0 SELECT crsplaje_inainte SCAN lnIdPlajaC = id_plaja lnUrmvalInainte = urmval SELECT crsplaje_dupa LOCATE FOR id_plaja = lnIdPlajaC IF FOUND() lnUrmvalDupa = urmval IF lnUrmvalInainte <> lnUrmvalDupa lnDiferente = lnDiferente + 1 STRTOFILE('DIFERENTA vplaje_numere: id_plaja=' + Transform(lnIdPlajaC) + ; ' urmval_inainte=' + Transform(lnUrmvalInainte) + ' urmval_dupa=' + Transform(lnUrmvalDupa) + CHR(13) + CHR(10), gcErrLog, 1) ENDIF ELSE lnDiferente = lnDiferente + 1 STRTOFILE('LIPSA in dupa: id_plaja=' + Transform(lnIdPlajaC) + CHR(13) + CHR(10), gcErrLog, 1) ENDIF SELECT crsplaje_inainte ENDSCAN STRTOFILE('G2 vplaje_numere: total diferente urmval=' + Transform(lnDiferente) + CHR(13) + CHR(10), gcErrLog, 1) ENDIF STRTOFILE('done' + CHR(13) + CHR(10), gcErrLog, 1) QUIT PROCEDURE test_error_handler LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcErrLog, 1) ENDPROC DEFINE CLASS driverS8p7 AS Custom lBusy = .F. lGasit = .F. PROCEDURE Reseteaza This.lGasit = .F. ENDPROC PROCEDURE Executa IF This.lBusy OR This.lGasit RETURN ENDIF This.lBusy = .T. TRY LOCAL lnI, loFrm2 FOR lnI = 1 TO _SCREEN.FormCount IF Upper(_SCREEN.Forms(m.lnI).Class) == 'FRM_FACTURARE_ARTICOLE2' loFrm2 = _SCREEN.Forms(m.lnI) This.lGasit = .T. loFrm2.Release() EXIT ENDIF ENDFOR CATCH TO loExcS8p7 STRTOFILE('DRIVER EROARE ' + TRANSFORM(loExcS8p7.ErrorNo) + ' ' + loExcS8p7.Message + CHR(13) + CHR(10), gcErrLog, 1) FINALLY This.lBusy = .F. ENDTRY ENDPROC ENDDEFINE