Initial: flux text FoxBin2Prg (git urmareste .??2 in-arbore, binarele VFP git-ignored)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
125
utile/Teste/test_repro_cnrcrt_footer.prg
Normal file
125
utile/Teste/test_repro_cnrcrt_footer.prg
Normal file
@@ -0,0 +1,125 @@
|
||||
* test_repro_cnrcrt_footer.prg
|
||||
* Repro/regresie pentru eroarea "Property CNRCRT is not found" din
|
||||
* FRM_MODIFIC2024.PGFARTICOLE.PAGE1._GRDFOOTER1.CALCTOTAL
|
||||
* (Import extrase bancare > Generare note, ROACONT 2.11.61, 15.07.2026).
|
||||
*
|
||||
* Cauza (dovedita prin bisectie, vezi COMUN\docs\depanare_testare_vfp.md):
|
||||
* - frm_import_extrase_banca.modificanote crea crsJTVATemp prin
|
||||
* SELECT * INTO CURSOR (copia pierde indexul TAG id_jtva creat de update_jtva_coloane);
|
||||
* - coloana cExplicatieTVA din frm_modific2024.grdRulaje face Seek pe acel tag in ControlSource;
|
||||
* - dupa repararea typo-ului oMinHeaderHeight->nMinHeaderHeight in cusfonthandler
|
||||
* (accessibility.vcx, r17869), ApplyFontToGrid atinge coloanele la Init;
|
||||
* evaluarea ControlSource-ului cu Seek pe tag inexistent face grid-ul sa-si piarda
|
||||
* TOATE coloanele => footer-ul se ataseaza la 0 coloane => calctotal crapa la
|
||||
* Getpem(This, cColWithLabel).
|
||||
*
|
||||
* Rulare headless (nu tine VFP IDE deschis; nu rula cu roacont.exe pornit):
|
||||
* & "C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe" -A -T ;
|
||||
* "D:\ROA\ROACONT\COMUN\utile\Teste\test_repro_cnrcrt_footer.prg" [MOD]
|
||||
* MOD:
|
||||
* CUINDEX (implicit) - fluxul corectat (index pe crsJTVATemp). Asteptat: 63 coloane, OK.
|
||||
* FARAINDEX - fluxul vechi, fara index. Asteptat: 0 coloane + eroarea CNRCRT
|
||||
* (reproduce bug-ul; util ca test de regresie al capcanei).
|
||||
* Rezultatul se scrie in %TEMP%\test_repro_cnrcrt_footer.txt, ultima linie REZULTAT: OK/BUG.
|
||||
|
||||
LPARAMETERS tcMode
|
||||
tcMode = IIF(EMPTY(tcMode), 'CUINDEX', UPPER(ALLTRIM(tcMode)))
|
||||
|
||||
PUBLIC gcLogFile, gnErrCNRCRT
|
||||
gcLogFile = ADDBS(SYS(2023)) + 'test_repro_cnrcrt_footer.txt'
|
||||
gnErrCNRCRT = 0
|
||||
STRTOFILE('START ' + tcMode + ' ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcLogFile)
|
||||
|
||||
ON ERROR DO ReproErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||
ON SHUTDOWN QUIT
|
||||
|
||||
DO D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
||||
IF gnHandle <= 0
|
||||
DO ReproLog WITH 'EROARE: conectare Oracle esuata'
|
||||
DO ReproLog WITH 'REZULTAT: NEDETERMINAT'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO ReproLog WITH 'mediu OK, gnAn=' + TRANSFORM(gnAn) + ' luna=' + TRANSFORM(gnLuna)
|
||||
|
||||
* ===== replicare modificanote din frm_import_extrase_banca (partea non-UI) =====
|
||||
IF !Used('saft_taxtable')
|
||||
update_saft_taxtable()
|
||||
ENDIF
|
||||
IF !Used('saft_mecanisme_plati')
|
||||
update_saft_mecanisme_plati()
|
||||
ENDIF
|
||||
update_jtva_coloane("JV", 'crsExplicatiiTVATemp', 1)
|
||||
SELECT * FROM crsExplicatiiTVATemp INTO CURSOR crsJTVATemp READWRITE
|
||||
IF tcMode == 'CUINDEX'
|
||||
* fix-ul din modificanote (15.07.2026): copia SELECT INTO pierde indexul
|
||||
SELECT crsJTVATemp
|
||||
INDEX ON id_jtva_coloana TAG id_jtva
|
||||
ENDIF
|
||||
|
||||
LOCAL llSucces, lcSql
|
||||
lcSql = [SELECT * FROM vact WHERE 1=2]
|
||||
llSucces = goExecutor.oExecuta(m.lcSql, 'actactan_temp')
|
||||
lcSql = [select * from vrul_tot where 1=2]
|
||||
llSucces = goExecutor.oExecuta(lcSql, 'v_rul')
|
||||
Select *, valoare + valtva As valoarectva, valoarev + valtvav As valoarevctva From v_rul Into Cursor trul READWRITE
|
||||
Use In (SELECT('v_rul'))
|
||||
lcSql = [select * from vrul_obinv_tot where 1=2]
|
||||
llSucces = goExecutor.oExecuta(lcSql, 'v_rul_obinv')
|
||||
Select *, valoare + valtva As valoarectva, valoarev + valtvav As valoarevctva From v_rul_obinv Into Cursor trul_obinv READWRITE
|
||||
Use In (SELECT('v_rul_obinv'))
|
||||
|
||||
Select actactan_temp
|
||||
Select .F. As ales, a.explicatia4 As iban, Iif(!Empty(Nvl(a.id_jtva_coloana, 0)), 1, 0) As Cu_tva, ;
|
||||
Cast(0 As N(2)) As tipnota, a.*, b.denumire As explicatie_tva_2 ;
|
||||
From actactan_temp a Left Join crsExplicatiiTVATemp b On a.id_jtva_coloana = b.id_jtva_coloana ;
|
||||
Into Cursor tact Readwrite
|
||||
gcAcces = "1;2;3;4;"
|
||||
Select tact
|
||||
Go Top
|
||||
|
||||
* ===== forma reala + secventa relevanta din Show =====
|
||||
LOCAL loForm, i, lcNames, lnColSrc, lnColFooter
|
||||
loForm = CREATEOBJECT([frm_modific2024], 90023, .T.)
|
||||
IF VARTYPE(loForm) <> 'O'
|
||||
DO ReproLog WITH 'EROARE: frm_modific2024 nu s-a instantiat'
|
||||
DO ReproLog WITH 'REZULTAT: NEDETERMINAT'
|
||||
QUIT
|
||||
ENDIF
|
||||
Select tact
|
||||
loForm.grid1.SetFocus
|
||||
loForm.gridextra1.setup()
|
||||
loForm.CalculeazaTotal()
|
||||
|
||||
lnColSrc = loForm.pgfArticole.Page1.grdRulaje.ColumnCount
|
||||
DO ReproLog WITH 'grdRulaje coloane: ' + TRANSFORM(lnColSrc)
|
||||
|
||||
loForm.pgfArticole.page1._grdfooter1.attachtogrid(loForm.pgfArticole.page1.grdRulaje)
|
||||
lnColFooter = loForm.pgfArticole.Page1._grdfooter1.ColumnCount
|
||||
DO ReproLog WITH 'footer coloane dupa attach: ' + TRANSFORM(lnColFooter)
|
||||
|
||||
loForm.pgfArticole.page1._grdfooter1.calcTotal()
|
||||
loForm.pgfArticole.page2._grdfooter1.attachtogrid(loForm.pgfArticole.page2.grdRulajeObinv)
|
||||
loForm.pgfArticole.page2._grdfooter1.calcTotal()
|
||||
loForm.Release()
|
||||
|
||||
IF m.lnColSrc > 0 AND m.gnErrCNRCRT = 0
|
||||
DO ReproLog WITH 'REZULTAT: OK'
|
||||
ELSE
|
||||
DO ReproLog WITH 'REZULTAT: BUG (coloane pierdute sau eroare CNRCRT)'
|
||||
ENDIF
|
||||
QUIT
|
||||
|
||||
PROCEDURE ReproErr
|
||||
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
||||
IF 'CNRCRT' $ UPPER(tcMsg)
|
||||
gnErrCNRCRT = gnErrCNRCRT + 1
|
||||
ENDIF
|
||||
DO ReproLog WITH 'ERR ' + TRANSFORM(tnErr) + ' [' + tcProg + ':' + TRANSFORM(tnLine) + '] ' + tcMsg
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE ReproLog
|
||||
LPARAMETERS tcMsg
|
||||
LOCAL lcL
|
||||
lcL = FILETOSTR(gcLogFile)
|
||||
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcLogFile)
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user