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
234 lines
8.1 KiB
Plaintext
234 lines
8.1 KiB
Plaintext
* 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
|