* 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