- 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
65 lines
2.4 KiB
Plaintext
65 lines
2.4 KiB
Plaintext
* 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
|