- 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
46 lines
2.7 KiB
Plaintext
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
|