Achizitie import unificata (ROAGEST): ointroduceri, teste UI, documentatie
- import_nota / import_adauga_factura: flux unificat note contabile + articole, sincronizare automata, total factura automat, TVA impartit pe conturile creditoare ale notelor (rundele 1-31) - runda 32: totalurile import_nota pe _label/_textbox din _baza.vcx (Arial 10), fara containerele clb_tx_simplu si fara bifa "Recalculeaza TVA" (recalcul mereu automat); "Sincronizeaza facturile secundare" mutata sub butoane - utile/Teste: harness UI VFP headless (vfp_ui_harness.ps1, ui_harness.prg, precompilare, mock-uri) in radacina; suitele e2e pentru achizitia din import grupate in utile/Teste/achizitie_import/ - docs: flux editare text vcx/scx, testare-ui-vfp si testare-vfp-mcp (mutate din ROAGEST, general valabile), inventar comun, orchestrare subagenti, conventie GO recno, depanare testare VFP Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019DGibQKa5uK4P2TNSFFQNh
This commit is contained in:
64
utile/Teste/ui_harness.prg
Normal file
64
utile/Teste/ui_harness.prg
Normal file
@@ -0,0 +1,64 @@
|
||||
* ui_harness.prg - proceduri reutilizabile pentru teste UI VFP cu handshake pe semafoare.
|
||||
* Un test seteaza PUBLIC gcSyncDir (folder semafoare, cu \ final) si gcUILog (fisier log),
|
||||
* apoi SET PROCEDURE TO ui_harness ADDITIVE si foloseste:
|
||||
* HarnessLog(mesaj) - scrie o linie in log
|
||||
* HarnessStep(n, mesaj [, autoSec]) - semnaleaza pasul n gata + asteapta continuarea
|
||||
* HarnessReady(n, mesaj) / HarnessWaitContinue(n [, autoSec]) - variantele separate
|
||||
* HarnessDone([status]) - scrie done.txt
|
||||
* HarnessWaitContinue asteapta cont_<n>.txt; daca nu apare in autoSec secunde (implicit 30),
|
||||
* continua singur (auto-continue) => testul merge si FARA orchestrator (doar log, fara capturi).
|
||||
|
||||
PROCEDURE HarnessInit
|
||||
*-- defensiv: SAFETY OFF ca STRTOFILE peste un fisier existent sa nu scoata dialogul modal
|
||||
*-- "overwrite?" (blocheaza headless); TALK OFF ca SUM/CALCULATE sa nu deseneze pe desktop.
|
||||
*-- Un test ar trebui sa faca oricum SET SAFETY OFF INAINTE de prima lui scriere de log.
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE HarnessLog
|
||||
LPARAMETERS tcMsg
|
||||
IF TYPE('gcUILog') <> 'C' OR EMPTY(gcUILog)
|
||||
RETURN
|
||||
ENDIF
|
||||
SET SAFETY OFF
|
||||
LOCAL lcL
|
||||
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
|
||||
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcUILog)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE HarnessReady
|
||||
LPARAMETERS tnStep, tcNote
|
||||
SET SAFETY OFF
|
||||
STRTOFILE(TTOC(DATETIME()) + ' ' + tcNote + CHR(13)+CHR(10), gcSyncDir + 'ready_' + TRANSFORM(tnStep) + '.txt')
|
||||
HarnessLog('READY ' + TRANSFORM(tnStep) + ' - ' + tcNote)
|
||||
ENDPROC
|
||||
|
||||
FUNCTION HarnessWaitContinue
|
||||
LPARAMETERS tnStep, tnAutoSec
|
||||
LOCAL lcCont, lnMax, lnI, llPrimit
|
||||
lcCont = gcSyncDir + 'cont_' + TRANSFORM(tnStep) + '.txt'
|
||||
lnMax = IIF(TYPE('tnAutoSec') = 'N' AND tnAutoSec > 0, tnAutoSec, 30)
|
||||
lnI = 0
|
||||
DO WHILE !FILE(lcCont) AND lnI < (lnMax * 5)
|
||||
lnI = lnI + 1
|
||||
DOEVENTS FORCE
|
||||
= INKEY(0.2)
|
||||
ENDDO
|
||||
llPrimit = FILE(lcCont)
|
||||
HarnessLog('CONTINUE ' + TRANSFORM(tnStep) + IIF(llPrimit, ' (semnal primit)', ' (auto-continue dupa ' + TRANSFORM(lnMax) + 's)'))
|
||||
RETURN llPrimit
|
||||
ENDFUNC
|
||||
|
||||
PROCEDURE HarnessStep
|
||||
LPARAMETERS tnStep, tcNote, tnAutoSec
|
||||
HarnessReady(tnStep, tcNote)
|
||||
HarnessWaitContinue(tnStep, tnAutoSec)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE HarnessDone
|
||||
LPARAMETERS tcStatus
|
||||
SET SAFETY OFF
|
||||
STRTOFILE(IIF(EMPTY(tcStatus), 'done', tcStatus) + ' ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcSyncDir + 'done.txt')
|
||||
HarnessLog('GATA')
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user