Files
comun/utile/Teste/mock_cauta_nom_articole.prg
Marius Mutu 53d9f1c64a 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
2026-07-20 00:50:18 +03:00

46 lines
2.7 KiB
Plaintext

* mock_cauta_nom_articole.prg
* Bypass al dialogului real de cautare articole (cauta_alfa/CAUT, modal, nu poate rula
* headless) - dar returneaza XML in ACELASI format ca fluxul real (cauta_alfa.prg ~227/510:
* Cursortoxml(cursor,'var',2,0+2+8,0,'1') pe un cursor cu coloanele cerute de cauta_nom_articole:
* denumire,codmat,codbare,um,grupa,subgrupa,cont,acont,dnf,id_articol), ca sa exercite REAL
* do_adauga_articol din COMUN\clase\ointroduceri.vcx cu date controlate.
* Incarcat cu SET PROCEDURE ... ADDITIVE INAINTEA lui ocautare.prg (nume duplicat de procedura -
* castiga cel incarcat PRIMUL, la fel ca mock_amessagebox - vezi docs/testare-ui-vfp.md capcana j).
* gnButon trebuie sa existe deja (PUBLIC) in programul principal al testului - vezi
* Programe/roagest.prg:496 (PRIVATE gnButon la nivelul de top al aplicatiei reale, de-aia
* functioneaza gnButon "gol" in tot lantul de apeluri); mock-ul doar il seteaza (fara PRIVATE),
* ca sa actualizeze variabila existenta, nu sa creeze una noua locala functiei.
* gcMockArtCodmat (PUBLIC, optional): daca testul o declara/seteaza inainte de a apela
* do_adauga_articol(), mock-ul returneaza articolul cu acel codmat (vezi lista de mai jos) in loc
* de BULDOEXCAVATOR (implicit) - permite testelor cu mai multe articole (runda7) sa controleze ce
* articol "gaseste" dialogul real la fiecare apel, fara sa schimbe comportamentul testelor vechi.
FUNCTION cauta_nom_articole
LPARAMETERS tcFiltruOriginal, tnPornire, tlLoud, tcListaId, tcListaDenumire
gnButon = 1
LOCAL lcXML, lcCodmatCautat
lcCodmatCautat = IIF(TYPE('gcMockArtCodmat') = 'C' AND !EMPTY(gcMockArtCodmat), gcMockArtCodmat, 'ART-BULD-212')
IF USED('crsMockCautaArt')
USE IN ('crsMockCautaArt')
ENDIF
CREATE CURSOR crsMockCautaArt (denumire C(100), codmat C(30), codbare C(30), um C(10), ;
grupa C(10), subgrupa C(10), cont C(10), acont C(20), dnf C(10), id_articol N(14))
DO CASE
CASE lcCodmatCautat == 'ART-GREE-303'
INSERT INTO crsMockCautaArt (denumire, codmat, codbare, um, grupa, subgrupa, cont, acont, dnf, id_articol) ;
VALUES ('AC GREE BORA', 'ART-GREE-303', '', 'BUC', '', '', '303', '', '', 9002)
CASE lcCodmatCautat == 'ART-A8-371'
INSERT INTO crsMockCautaArt (denumire, codmat, codbare, um, grupa, subgrupa, cont, acont, dnf, id_articol) ;
VALUES ('A8', 'ART-A8-371', '8003510000203', 'BUC', '', '', '371', '', '', 9003)
OTHERWISE
INSERT INTO crsMockCautaArt (denumire, codmat, codbare, um, grupa, subgrupa, cont, acont, dnf, id_articol) ;
VALUES ('BULDOEXCAVATOR', 'ART-BULD-212', '', 'BUC', '', '', '212', '', '', 9001)
ENDCASE
lcXML = ''
Cursortoxml('crsMockCautaArt', 'lcXML', 2, 0+2+8, 0, '1')
USE IN ('crsMockCautaArt')
RETURN lcXML
ENDFUNC