Files
comun/utile/Teste/facturare_unificat/mock_cursor_preturi.prg
Marius Mutu 8e022d332e #13: formular de facturare unificat - etapa curenta
Squash al branch-ului de lucru plan13-s2.

Clase: ofacturare (nucleul formularului unificat), ofacturare_comun,
ferestre_cere_date, ocomenzi, caut_ora (lista de preturi in combo-urile de
cautare), omodificari.

Programe: ofacturare impartit - ofacturare_antet, ofacturare_rutare_scriere si
ogrid_latimi sunt fisiere noi; oproceduri_facturare primeste discountul pe linie
si cota standard de TVA cand articolul nu are cota pe politica.

Documentatie: capcana SQLExec no_data_found, conventia de encoding, depanarea
testelor VFP si regulile de lucru - conflictele cu modificarile venite din alte
proiecte sunt rezolvate pastrand ambele parti.

Loguri de rulare a testelor scoase din versionare; testele raman.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PkyjGyrV2S7932om4kfSiK
2026-09-09 21:38:25 +03:00

50 lines
2.3 KiB
Plaintext

* 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