* mock_cursor_preturi.prg - suport headless pentru test_s4_3b_combosql_filtrat.prg. * oExecutorMockPret (subclasa de test a lui oexecutor) intercepteaza DOAR apelurile pe cursoarele * brute ale cautarii in linie (crsCodmatRaw / crsDenumireRaw, adica {call ... cursor_preturi ...}): * jurnalizeaza SQL-ul in gcMockSql si construieste un cursor sintetic dupa structura lui * cursor_preturi (24 coloane). Orice alt apel (cCboGestiune -> VNOM_GESTIUNI, oAntetFacturare etc.) * merge la executorul real, prin This.oReal. Se incarca cu SET PROCEDURE ... ADDITIVE dupa harness. * Publicele asteptate de la test: gcMockSql, gnMockSucces, gnMockEroare. DEFINE CLASS oExecutorMockPret AS oexecutor oReal = NULL PROCEDURE oExecute LPARAMETERS tcSql, tcCursor, tlProgress, tcTitluProgress, tnHandle, tlShowError, tlQuitOnError, tlReconnect LOCAL lcCur lcCur = UPPER(ALLTRIM(TRANSFORM(tcCursor))) IF lcCur == 'CRSCODMATRAW' OR lcCur == 'CRSDENUMIRERAW' gcMockSql = gcMockSql + TRANSFORM(tcSql) + CHR(13) + CHR(10) DO CreeazaRaw WITH lcCur This.nEroare = gnMockEroare This.nSucces = gnMockSucces RETURN gnMockSucces ENDIF RETURN This.oReal.oExecute(tcSql, tcCursor) ENDPROC FUNCTION oPrelucrareEroare RETURN "MOCK eroare Oracle " + TRANSFORM(This.nEroare) ENDFUNC ENDDEFINE * cursorul brut sintetic: aceeasi ordine de coloane ca {call pack_facturare.cursor_preturi(...)} * (24 coloane); campurile cerute de reordonarea locala (codmat/denumire/um/pret/proc_tvav/...). PROCEDURE CreeazaRaw LPARAMETERS tcCur IF USED(tcCur) USE IN (tcCur) ENDIF CREATE CURSOR (tcCur) (id_c N(20), id_articol N(20), lot C(20) NULL, serie C(20) NULL, ; id_pol N(20), id_valuta N(10), nume_lista_preturi C(100), discount_unitar N(20,4), ; discount_unitar_val N(20,4), codmat C(100), codbare C(50), denumire C(100), um C(10), ; gestionabil N(1), cantitate N(20,4), proc_tvav N(20,4), preturi_cu_tva N(1), ; curs N(20,4), multiplicator N(10), pret N(20,4), pret_val N(20,4), tip_valuta N(1), ; nume_val C(20), modificabil N(1)) INSERT INTO (tcCur) VALUES (1, 11, NULL, NULL, 31, 1, "LISTA A", 0, 0, ; "CM1", "CB1", "Articol A", "BUC", 1, 100, 1.19, 0, 4.9, 1, 100, 100, 1, "RON", 1) INSERT INTO (tcCur) VALUES (2, 12, NULL, NULL, 32, 1, "LISTA B", 0, 0, ; "CM2", "CB2", "Articol B", "BUC", 0, 200, 1.19, 0, 4.9, 1, 200, 200, 1, "RON", 1) GO TOP IN (tcCur) ENDPROC