#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
This commit is contained in:
69
utile/Teste/facturare_unificat/mock_cursor_articole.prg
Normal file
69
utile/Teste/facturare_unificat/mock_cursor_articole.prg
Normal file
@@ -0,0 +1,69 @@
|
||||
* mock_cursor_articole.prg - suportul headless al lui test_s3_4_cursor_articole.prg.
|
||||
* oExecutorMock (subclasa de test a lui oexecutor) intercepteaza DOAR apelul pe cursorul crsarticole:
|
||||
* jurnalizeaza SQL-ul in gcMockSql, construieste un cursor sintetic dupa gcMockMod (PLIN / PLIN2 = si
|
||||
* crsarticole1 pentru contracte / GOL / FARA = niciun cursor) si intoarce gnMockSucces cu nEroare =
|
||||
* gnMockEroare. Orice alt apel (citeste_cursuri_zi) merge la executorul real, prin This.oReal.
|
||||
* vizualizeaza_curs e inlocuita ca sa nu deschida formularul de cursuri la esecul Oracle -20005; se
|
||||
* incarca ULTIMA cu SET PROCEDURE ... ADDITIVE, ca sa castige la rezolutia de nume.
|
||||
* Publicele asteptate de la test: gcMockSql, gcMockMod, gnMockSucces, gnMockEroare, gcMockCurs.
|
||||
|
||||
DEFINE CLASS oExecutorMock AS oexecutor
|
||||
oReal = NULL
|
||||
|
||||
PROCEDURE oExecute
|
||||
LPARAMETERS tcSql, tcCursor, tlProgress, tcTitluProgress, tnHandle, tlShowError, tlQuitOnError, tlReconnect
|
||||
IF !(UPPER(ALLTRIM(TRANSFORM(tcCursor))) == 'CRSARTICOLE')
|
||||
RETURN This.oReal.oExecute(tcSql, tcCursor)
|
||||
ENDIF
|
||||
gcMockSql = gcMockSql + TRANSFORM(tcSql) + CHR(13) + CHR(10)
|
||||
This.nEroare = gnMockEroare
|
||||
This.nSucces = gnMockSucces
|
||||
DO CreeazaArticole WITH gcMockMod
|
||||
RETURN gnMockSucces
|
||||
ENDPROC
|
||||
|
||||
FUNCTION oPrelucrareEroare
|
||||
RETURN "MOCK eroare Oracle " + TRANSFORM(This.nEroare)
|
||||
ENDFUNC
|
||||
ENDDEFINE
|
||||
|
||||
* cursorul sintetic de articole: campurile citite de blocul testat (gestionabil, curs/nume_val/id_valuta/
|
||||
* multiplicator/tip_valuta pentru crscursuri, nume_lista_preturi/id_pol pentru crspolitici, id_gestiune/
|
||||
* nume_gestiune pentru crsgestiunidest) plus campurile luate cu Scatter pe ramura tnTip = 30
|
||||
PROCEDURE CreeazaArticole
|
||||
LPARAMETERS tcMod
|
||||
IF USED('crsarticole')
|
||||
USE IN crsarticole
|
||||
ENDIF
|
||||
IF USED('crsarticole1')
|
||||
USE IN crsarticole1
|
||||
ENDIF
|
||||
IF tcMod == "FARA"
|
||||
RETURN
|
||||
ENDIF
|
||||
CREATE CURSOR crsarticole (id_c N(20), id_articol N(20), id_gestiune N(20), nume_gestiune C(100), ;
|
||||
cont C(4), um C(10), id_valuta N(10), gestionabil N(1), tip_valuta N(1), curs N(20,4), ;
|
||||
multiplicator N(10), codmat C(100), preta N(20,4), pretd N(20,4), id_valuta_d N(15), ;
|
||||
denumire C(100), pretftva N(20,4), pretctva N(20,4), cantitate N(20,4), tvav N(20,4), ;
|
||||
proc_tvav N(20,4), preturi_cu_tva N(1), nume_val C(20), nume_lista_preturi C(100), id_pol N(20))
|
||||
IF tcMod == "GOL"
|
||||
RETURN
|
||||
ENDIF
|
||||
INSERT INTO crsarticole VALUES (1, 11, 21, "GEST A", "371", "BUC", 1, 1, 1, 4.9, 1, "CM1", ;
|
||||
10, 11, 1, "Articol A", 100, 119, 2, 19, 1.19, 0, "EUR", "LISTA A", 31)
|
||||
INSERT INTO crsarticole VALUES (2, 12, 22, "GEST B", "371", "BUC", 2, 0, 1, 5.1, 1, "CM2", ;
|
||||
20, 21, 2, "Articol B", 200, 238, 3, 38, 1.19, 0, "USD", "LISTA B", 32)
|
||||
GO TOP IN crsarticole
|
||||
IF tcMod == "PLIN2"
|
||||
CREATE CURSOR crsarticole1 (id_ctr N(20), numar_contract C(100), data D NULL, numar C(50) NULL)
|
||||
INSERT INTO crsarticole1 VALUES (41, "CTR A", DATE(2026, 1, 1), "A1")
|
||||
INSERT INTO crsarticole1 VALUES (42, "CTR B", DATE(2026, 2, 1), "B1")
|
||||
GO TOP IN crsarticole1
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
* fara formularul de cursuri in headless - jurnalizeaza doar ca a fost chemata
|
||||
PROCEDURE vizualizeaza_curs
|
||||
LPARAMETERS tdDataCurs
|
||||
gcMockCurs = gcMockCurs + "vizualizeaza_curs(" + TRANSFORM(tdDataCurs) + ")" + CHR(13) + CHR(10)
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user