sync SVN r18227

This commit is contained in:
2026-09-30 09:47:06 +03:00
parent 1a05265329
commit 7010acf850
3 changed files with 0 additions and 358 deletions

View File

@@ -1,53 +0,0 @@
* mock_cauta_alfa_capture.prg - inlocuieste DOAR PROCEDURE cauta_alfa (COMUN\programe\cauta_alfa.prg,
* linia 16), NU restul lantului (do_cauta/CautPartenerContabilitate/alege_partener raman REALE,
* neatinse) - captureaza starea EXACT in punctul unde codul real ar deschide formularul modal de
* cautare: ASTACKINFO() (cine a apelat - LostFocus/Click/AfterRowColChange), Thisform.LockScreen,
* USED/RECCOUNT('tact'), Grid1.RecordSource. Nu deschide niciun formular - raspunde "Cancel"
* (gnButon=2), exact ca un operator care apasa Renunta, ca sa nu blocheze testul.
* Se incarca PRIMUL (inaintea "SET PROCEDURE TO cauta_alfa ADDITIVE" din test_init_env_auto) - la
* nume duplicat de procedura VFP foloseste fisierul incarcat PRIMUL.
*
* Rezultat expus (citit de testul principal): gnCaptureN (numarul de intrari capturate).
Procedure cauta_alfa
Parameters tcselect,tcfiltru,tcschema,tcorder,tccoloana,tcTitlu,tcTitluColoane, ;
tcNume_Proc,tl_AllInList,tcFiltruOriginal,tcPrimaColoana, tnPornire, tnTipReturn, ;
tcIdColumn, tlDesktop, tcGroup, tcGridDynamicBackColor, tcGridToolTip, tlModParam, tcStringCriterii, ;
tcProceduraVerifica, tcProceduraCopiaza,tcLocate
LOCAL lcStack, lnI, lnN
LOCAL ARRAY laStack[1]
gnCaptureN = gnCaptureN + 1
lnN = ASTACKINFO(laStack)
lcStack = ''
FOR lnI = 1 TO lnN
lcStack = lcStack + ' #' + TRANSFORM(lnI) + ' ' + TRANSFORM(laStack[lnI,3]) + ' linia ' + TRANSFORM(laStack[lnI,6]) + CHR(13) + CHR(10)
ENDFOR
DO HarnessLog WITH '--- CAPTURE #' + TRANSFORM(gnCaptureN) + ' intrare in cauta_alfa (mock) ---'
DO HarnessLog WITH 'ASTACKINFO:' + CHR(13) + CHR(10) + lcStack
DO HarnessLog WITH 'LockScreen=' + TRANSFORM(goFormTest.LockScreen) + ;
' USED(tact)=' + TRANSFORM(USED('tact')) + ' RECCOUNT(tact)=' + TRANSFORM(IIF(USED('tact'),RECCOUNT('tact'),-1)) + ;
' RECNO(tact)=' + TRANSFORM(IIF(USED('tact'),RECNO('tact'),-1)) + ;
' Grid1.RecordSource=[' + goFormTest.Grid1.RecordSource + ']' + ;
' Grid1.Visible=' + TRANSFORM(goFormTest.Grid1.Visible) + ' Thisform.Visible=' + TRANSFORM(goFormTest.Visible)
IF TYPE('gcCaptureSyncStep') = 'N' AND gcCaptureSyncStep > 0
DO HarnessStep WITH gcCaptureSyncStep, 'in interiorul cauta_alfa (mock), captura #' + TRANSFORM(gnCaptureN), 8
ENDIF
*-- raspuns Cancel real (gnButon global, declarat PUBLIC in test_init_env_auto.prg)
gnButon = 2
DO CASE
CASE tnTipReturn = 0
LOCAL loRet
loRet = CREATEOBJECT('Empty')
ADDPROPERTY(loRet, 'id_part', 0)
ADDPROPERTY(loRet, 'tip', 0)
ADDPROPERTY(loRet, 'nume', '')
RETURN loRet
OTHERWISE
RETURN ''
ENDCASE
Endproc && cauta_alfa (mock capturare)

View File

@@ -1,78 +0,0 @@
* probe_env.prg - sonda READ-ONLY: structura vact_tot, un cont cu config_cont_ireg, si test tact minimal.
* Rulare: vfp9.exe -A -T "probe_env.prg"
SET SAFETY OFF
SET TALK OFF
SET DELETED ON
SET EXACT ON
SET CENTURY ON
SET DATE DMY
SET NULLDISPLAY TO ''
CLOSE DATABASES
PUBLIC gcLog
gcLog = "D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\probe_env_log.txt"
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog)
ON ERROR DO PrE 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', 2026, 9
IF gnHandle <= 0
DO PrL WITH 'FAIL conectare, gnHandle=' + TRANSFORM(gnHandle)
QUIT
ENDIF
DO PrL WITH 'conectat gnHandle=' + TRANSFORM(gnHandle) + ' gcS=' + gcS + ' gnAn=' + TRANSFORM(gnAn) + ' gnLuna=' + TRANSFORM(gnLuna)
LOCAL llSucces
llSucces = goExecutor.oExecuta("select * from vact_tot where 1=2", "v_act")
DO PrL WITH 'vact_tot 1=2: succes=' + TRANSFORM(llSucces)
IF llSucces
LOCAL laF[1], lnI, lcCols
lnI = AFIELDS(laF, 'v_act')
lcCols = ''
FOR lnI = 1 TO ALEN(laF,1)
lcCols = lcCols + laF[lnI,1] + '(' + laF[lnI,2] + ') '
ENDFOR
DO PrL WITH 'vact_tot campuri (' + TRANSFORM(ALEN(laF,1)) + '): ' + lcCols
USE IN v_act
ENDIF
llSucces = goExecutor.oExecuta("select cont, count(*) as ncc from config_cont_ireg group by cont order by cont", "cCfg")
IF llSucces
DO PrL WITH 'config_cont_ireg conturi: reccount=' + TRANSFORM(RECCOUNT('cCfg'))
SELECT cCfg
SCAN
DO PrL WITH ' cont=[' + TRANSFORM(cont) + ']'
ENDSCAN
USE IN cCfg
ELSE
DO PrL WITH 'FAIL config_cont_ireg: ' + goExecutor.cEroare
ENDIF
llSucces = goExecutor.oExecuta("select count(*) as n from coresp_tip_cont where cont = '4111'", "cCorp")
IF llSucces
DO PrL WITH 'coresp_tip_cont cont=4111: n=' + TRANSFORM(cCorp.n)
USE IN cCorp
ENDIF
DO PrL WITH 'DONE ' + TTOC(DATETIME())
CATCH TO loEx
DO PrL WITH 'EXCEPTIE ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
ENDTRY
QUIT
PROCEDURE PrL
LPARAMETERS tcMsg
LOCAL lcL
SET SAFETY OFF
lcL = IIF(FILE(gcLog), FILETOSTR(gcLog), '')
STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcLog)
ENDPROC
PROCEDURE PrE
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
DO PrL WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
ENDPROC

View File

@@ -1,227 +0,0 @@
* test_grid_albit_stack.prg - dovada prin rulare (nu analiza statica) a CE declanseaza deschiderea
* cautarii partenerului cand se paraseste celula Partener Credit (Grid1.Column10) goala, in
* frm_modific2024 (COMUN\clase\omodificari.vc2:6375), ecranul de verificare dupa import.
* Instrumentare: mock_cauta_alfa_capture.prg inlocuieste cauta_alfa cu o capturare de stare
* (ASTACKINFO/LockScreen/USED/RECCOUNT/RecordSource), fara sa deschida vreun formular - restul
* lantului (do_cauta/CautPartenerContabilitate/alege_partener/LostFocus/AfterRowColChange) e REAL.
* tact e construit din structura REALA de productie (vact_tot -> ales/Cu_tva/tipnota, exact ca in
* Programe\ocont2003.prg::note_fara_predefinire), cu doua randuri: randul 1 cont 4111 (are
* config_cont_ireg+coresp_tip_cont) cu partener CREDIT gol, randul 2 cu partener deja completat.
*
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\test_grid_albit_stack.prg"
* Iesire: D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\test_grid_albit_stack_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, gcSyncDir, gnCaptureN, gcCaptureSyncStep, goFormTest
gcSyncDir = 'D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\uisync\'
gcUILog = 'D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\test_grid_albit_stack_log.txt'
STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
gnCaptureN = 0
gcCaptureSyncStep = 0
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
ON SHUTDOWN QUIT
*-- cai complete: la lansare vfp9 -A -T directorul curent NU e cel al scriptului, deci nume goale
*-- de PRG nu se gasesc (era cauza dialogului "Program Error: harnesslog.prg does not exist")
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\ui_harness.prg" ADDITIVE
*-- mock-ul cauta_alfa TREBUIE incarcat inaintea test_init_env_auto (care face
*-- SET PROCEDURE TO cauta_alfa ADDITIVE) - la nume duplicat VFP tine fisierul incarcat PRIMUL
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\mock_cauta_alfa_capture.prg" ADDITIVE
TRY
DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT', 2026, 9
IF gnHandle <= 0
DO HarnessLog WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
DO HarnessDone WITH 'error'
QUIT
ENDIF
DO HarnessLog WITH 'mediu initializat gnHandle=' + TRANSFORM(gnHandle)
DO BuildTact
DO HarnessLog WITH 'tact construit, reccount=' + TRANSFORM(RECCOUNT('tact')) + ' campuri=' + TRANSFORM(FCOUNT('tact'))
DO HarnessLog WITH ' rand1: scc=' + ALLTRIM(tact.scc) + ' partc=[' + ALLTRIM(NVL(tact.partc,'')) + ']'
GO 2 IN tact
DO HarnessLog WITH ' rand2: scc=' + ALLTRIM(tact.scc) + ' partc=[' + ALLTRIM(NVL(tact.partc,'')) + ']'
GO 1 IN tact
SELECT tact
GO TOP
goFormTest = CREATEOBJECT('frm_modific2024', 90023, .T., NULL)
goFormTest.lActivExtrase = .T.
goFormTest.WindowType = 0
goFormTest.Show()
DO HarnessLog WITH 'form afisat: LockScreen=' + TRANSFORM(goFormTest.LockScreen) + ' Grid1.RecordSource=[' + goFormTest.Grid1.RecordSource + '] Grid1.RecordSourceType=' + TRANSFORM(goFormTest.Grid1.RecordSourceType) + ' Visible=' + TRANSFORM(goFormTest.Visible)
*=====================================================================
* SCENARIU A: parasirea celulei Partener Credit (goala) prin LostFocus, urmat de Click pe
* butonul "Partener Credit" - tiparul exact din log.txt (dubla cautare)
*=====================================================================
DO HarnessLog WITH ''
DO HarnessLog WITH '=== SCENARIU A: Column10.Text1.LostFocus (partc gol) apoi Command2.Click ==='
SELECT tact
GO 1
LOCAL lnCapturiA0, lnCapturiA1
lnCapturiA0 = gnCaptureN
DO HarnessLog WITH 'A: inainte - LockScreen=' + TRANSFORM(goFormTest.LockScreen) + ' recno=' + TRANSFORM(RECNO('tact')) + ' partc=[' + ALLTRIM(NVL(tact.partc,'')) + ']'
*-- incearca intai focus REAL (poate declansa evenimente native suplimentare), apoi apelul direct
*-- garanteaza deterministic reproducerea, indiferent daca SetFocus a functionat headless
TRY
goFormTest.Grid1.SetFocus()
goFormTest.Grid1.Column10.Text1.SetFocus()
DO HarnessLog WITH 'A: SetFocus real pe Column10.Text1 - OK, ActiveColumn=' + TRANSFORM(goFormTest.Grid1.ActiveColumn)
CATCH TO loExFocus
DO HarnessLog WITH 'A: SetFocus real a esuat (' + loExFocus.Message + ') - continui cu apelul direct al metodei'
ENDTRY
goFormTest.Grid1.Column10.Text1.LostFocus()
lnCapturiA1 = gnCaptureN
DO HarnessLog WITH 'A1 (LostFocus): capturi noi=' + TRANSFORM(lnCapturiA1 - lnCapturiA0) + ' LockScreen dupa=' + TRANSFORM(goFormTest.LockScreen) + ' partc=[' + ALLTRIM(NVL(tact.partc,'')) + ']'
goFormTest.Command2.Click()
DO HarnessLog WITH 'A2 (Command2.Click): capturi noi=' + TRANSFORM(gnCaptureN - lnCapturiA1) + ' LockScreen dupa=' + TRANSFORM(goFormTest.LockScreen)
DO HarnessLog WITH 'A: TOTAL capturi scenariu=' + TRANSFORM(gnCaptureN - lnCapturiA0) + ' (asteptat 2 daca ipoteza H1 se confirma: LostFocus + Click deschid ambele cautarea)'
*=====================================================================
* SCENARIU B: schimbare de rand, cu randul PARASIT avand partc gol - testeaza (B1) daca un GO
* brut pe cursorul legat declanseaza singur vreun eveniment, si (B2) dansul LockScreen din
* AfterRowColChange (16083-16097) cand randul recalculat (nRecLipsuri) are partc gol
*=====================================================================
DO HarnessLog WITH ''
DO HarnessLog WITH '=== SCENARIU B: schimbare de rand, randul cu partc gol e cel reverificat de AfterRowColChange ==='
SELECT tact
GO 1
LOCAL lnCapturiB0, lnCapturiB1
lnCapturiB0 = gnCaptureN
TRY
goFormTest.Grid1.Column10.Text1.SetFocus()
CATCH TO loExFocus
ENDTRY
GO 2 IN tact
lnCapturiB1 = gnCaptureN
DO HarnessLog WITH 'B1 (GO 2 brut, fara apel explicit): capturi noi=' + TRANSFORM(lnCapturiB1 - lnCapturiB0) + ' LockScreen=' + TRANSFORM(goFormTest.LockScreen)
goFormTest.nRecLipsuri = 1 && "randul parasit" pe care AfterRowColChange il reverifica e randul 1 (partc gol)
goFormTest.cSemnLipsuri = 'FORTAT-DIFERIT-CA-SA-INTRE-PE-RAMURA'
DO HarnessLog WITH 'B2: inainte de AfterRowColChange - LockScreen=' + TRANSFORM(goFormTest.LockScreen) + ' recno curent=' + TRANSFORM(RECNO('tact')) + ' nRecLipsuri=' + TRANSFORM(goFormTest.nRecLipsuri)
goFormTest.Grid1.AfterRowColChange(10)
DO HarnessLog WITH 'B2 (AfterRowColChange explicit): capturi noi=' + TRANSFORM(gnCaptureN - lnCapturiB1) + ' LockScreen dupa=' + TRANSFORM(goFormTest.LockScreen) + ' recno curent=' + TRANSFORM(RECNO('tact'))
DO HarnessLog WITH 'B: TOTAL capturi scenariu=' + TRANSFORM(gnCaptureN - lnCapturiB0)
*=====================================================================
* SCENARIU C: Click direct pe buton, FARA ca focusul sa fi trecut prin celula (fara LostFocus)
*=====================================================================
DO HarnessLog WITH ''
DO HarnessLog WITH '=== SCENARIU C: Command2.Click direct, focus pe alt control (nu in celula Partener Credit) ==='
SELECT tact
GO 1
LOCAL lnCapturiC0
lnCapturiC0 = gnCaptureN
TRY
goFormTest.but_renunt1.SetFocus()
CATCH TO loExFocus
ENDTRY
goFormTest.Command2.Click()
DO HarnessLog WITH 'C (Command2.Click direct): capturi noi=' + TRANSFORM(gnCaptureN - lnCapturiC0) + ' LockScreen dupa=' + TRANSFORM(goFormTest.LockScreen)
DO HarnessLog WITH ''
DO HarnessLog WITH '=== REZULTAT: total capturi cauta_alfa=' + TRANSFORM(gnCaptureN) + ' ==='
DO HarnessDone WITH 'done'
DO HarnessLog WITH 'TOTAL: test terminat fara exceptie'
CATCH TO loEx
DO HarnessLog WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
DO HarnessDone WITH 'error'
ENDTRY
QUIT
**********************************************************
* tact - structura REALA de productie (vact_tot -> ales/Cu_tva/tipnota), ca in
* Programe\ocont2003.prg::note_fara_predefinire (liniile 1007-1082). Doua randuri: primul cu
* cont 4111 (config_cont_ireg + coresp_tip_cont populate pe schema de test) si partener CREDIT
* gol - tinta bugului; al doilea cu partener deja completat, doar ca sa existe "schimbare de rand".
PROCEDURE BuildTact
LOCAL llSucces
IF USED('tact')
USE IN tact
ENDIF
IF USED('actactan')
USE IN actactan
ENDIF
IF USED('crsJtvaTemp')
USE IN crsJtvaTemp
ENDIF
*-- Init/Load (frm_modific2024) citesc crsJtvaTemp - exact apelul din ocont2003.prg:997
update_jtva_coloane("", "crsJtvaTemp", 1)
llSucces = goExecutor.oExecuta("select * from vact_tot where 1=2", "v_act")
IF !llSucces
DO HarnessLog WITH 'FAIL: vact_tot inaccesibil - ' + goExecutor.cEroare
RETURN .F.
ENDIF
SELECT * FROM v_act INTO CURSOR actactan READWRITE
USE IN v_act
SELECT .F. AS ales, IIF(EMPTY(NVL(a.id_jtva_coloana,0)),0,1) AS Cu_tva, CAST(0 AS N(2)) AS tipnota, a.* FROM actactan a INTO CURSOR tact READWRITE
USE IN actactan
*-- trul/trul_obinv - formularul le foloseste (pgfArticole) chiar daca randurile de tact nu au
*-- rulaje; goale, aceeasi structura ca in ocont2003.prg::note_fara_predefinire (1017-1044)
IF USED('trul')
USE IN trul
ENDIF
llSucces = goExecutor.oExecuta("select * from vrul_tot where 1=2", "v_rul")
IF !llSucces
DO HarnessLog WITH 'FAIL: vrul_tot inaccesibil - ' + goExecutor.cEroare
RETURN .F.
ENDIF
SELECT *, valoare + valtva AS valoarectva, valoarev + valtvav AS valoarevctva FROM v_rul INTO CURSOR trul READWRITE
USE IN v_rul
IF USED('trul_obinv')
USE IN trul_obinv
ENDIF
llSucces = goExecutor.oExecuta("select * from vrul_obinv_tot where 1=2", "v_rul_obinv")
IF !llSucces
DO HarnessLog WITH 'FAIL: vrul_obinv_tot inaccesibil - ' + goExecutor.cEroare
RETURN .F.
ENDIF
SELECT *, valoare + valtva AS valoarectva, valoarev + valtvav AS valoarevctva FROM v_rul_obinv INTO CURSOR trul_obinv READWRITE
USE IN v_rul_obinv
SELECT tact
APPEND BLANK
REPLACE dataireg WITH DATETIME(), dataact WITH DATETIME(), datascad WITH DATETIME() + 30 * 86400
REPLACE id_sucursala WITH NVL(gnIdSucursala, 0), sters WITH 0, an WITH gnAn, luna WITH gnLuna
REPLACE scd WITH '628', scc WITH '4111', partd WITH 'CHELTUIALA TEST', id_partd WITH 0
REPLACE partc WITH '', id_partc WITH 0, suma WITH 100.00, nract WITH 1, cod WITH 1
APPEND BLANK
REPLACE dataireg WITH DATETIME(), dataact WITH DATETIME(), datascad WITH DATETIME() + 30 * 86400
REPLACE id_sucursala WITH NVL(gnIdSucursala, 0), sters WITH 0, an WITH gnAn, luna WITH gnLuna
REPLACE scd WITH '5121', scc WITH '4111', partd WITH '', id_partd WITH 0
REPLACE partc WITH 'PARTENER DEJA ALES', id_partc WITH 1, suma WITH 50.00, nract WITH 2, cod WITH 1
GO TOP
RETURN .T.
ENDPROC
**********************************************************
PROCEDURE PrErrLocal
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
LOCAL lcMsg
lcMsg = 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
IF TYPE('gcUILog') = 'C' AND !EMPTY(gcUILog)
SET SAFETY OFF
STRTOFILE(IIF(FILE(gcUILog), FILETOSTR(gcUILog), '') + lcMsg + CHR(13) + CHR(10), gcUILog)
ENDIF
ENDPROC