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
73 lines
2.8 KiB
Plaintext
73 lines
2.8 KiB
Plaintext
* mock_generator_numere.prg - oGeneratorMock, subclasa de test a lui oGeneratorNumere (oserii_numere.prg) care NU
|
|
* atinge Oracle: creeaza_cursor_serii construieste un cursor local de serii (FACTURA 5 / PROFORMA 23 -> 3 = cu serie si
|
|
* plaje, serii diferite; BON FISCAL 3 -> 2 = fara serie, cu plaje), aloca_numar intoarce un contor local (PUBLIC
|
|
* gnMockNumar), dezaloca_numar pune numarul pe 0; toate jurnalizeaza in gcMockApeluri (PUBLIC, declarat de test).
|
|
* Se incarca cu SET PROCEDURE ... ADDITIVE dupa harness (are nevoie de oserii_numere.prg pentru clasa parinte).
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* generator de numere fara Oracle (serii locale, alocare/dezalocare jurnalizate)
|
|
DEFINE CLASS oGeneratorMock AS oGeneratorNumere
|
|
* seriile: FACTURA (5) si PROFORMA (23) -> 3 (cu serie si plaje, serii diferite), BON FISCAL (3) -> 2 (fara
|
|
* serie, cu plaje); cursorul are aceleasi campuri citite de getSerieCursor/getLungimeSerie/aloca_numar
|
|
FUNCTION creeaza_cursor_serii
|
|
LPARAMETERS tnIdTipDoc
|
|
LOCAL lcCursor, lnRezultat, lcAlias
|
|
lcAlias = ALIAS()
|
|
lcCursor = [crsseriitemp] + ALLTRIM(STR(tnIdTipDoc))
|
|
IF USED(lcCursor)
|
|
USE IN (lcCursor)
|
|
ENDIF
|
|
CREATE CURSOR (lcCursor) (id_serie N(10), serie C(10), lungime N(3))
|
|
DO CASE
|
|
CASE tnIdTipDoc = 23
|
|
INSERT INTO (lcCursor) VALUES (9023, "PRO", 5)
|
|
lnRezultat = 3
|
|
CASE tnIdTipDoc = 3
|
|
INSERT INTO (lcCursor) VALUES (9003, "", 5)
|
|
lnRezultat = 2
|
|
OTHERWISE
|
|
INSERT INTO (lcCursor) VALUES (9005, "FAC", 5)
|
|
lnRezultat = 3
|
|
ENDCASE
|
|
GO TOP IN (lcCursor)
|
|
This.paPlaje(tnIdTipDoc, 2) = lcCursor
|
|
This.paPlaje(tnIdTipDoc, 3) = (MOD(lnRezultat, 2) = 1)
|
|
This.paPlaje(tnIdTipDoc, 4) = (lnRezultat >= 2)
|
|
gcMockApeluri = gcMockApeluri + "creeaza_cursor_serii(" + TRANSFORM(tnIdTipDoc) + ") -> " + TRANSFORM(lnRezultat) + CHR(13) + CHR(10)
|
|
IF !EMPTY(lcAlias)
|
|
SELECT (lcAlias)
|
|
ENDIF
|
|
RETURN lnRezultat
|
|
ENDFUNC
|
|
|
|
FUNCTION aloca_numar
|
|
LPARAMETERS tnIdTipDoc, tnIdGestiune
|
|
LOCAL lcCursor, lnIdSerie, lcAlias
|
|
gnMockNumar = gnMockNumar + 1
|
|
lnIdSerie = NULL
|
|
IF !ISNULL(This.paPlaje(tnIdTipDoc, 2))
|
|
lcCursor = This.paPlaje(tnIdTipDoc, 2)
|
|
IF USED(lcCursor)
|
|
lcAlias = ALIAS()
|
|
SELECT (lcCursor)
|
|
lnIdSerie = id_serie
|
|
IF !EMPTY(lcAlias)
|
|
SELECT (lcAlias)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
This.paPlaje(tnIdTipDoc, 1) = gnMockNumar
|
|
This.paPlaje(tnIdTipDoc, 5) = lnIdSerie
|
|
gcMockApeluri = gcMockApeluri + "aloca_numar(" + TRANSFORM(tnIdTipDoc) + ") -> " + TRANSFORM(gnMockNumar) + CHR(13) + CHR(10)
|
|
RETURN gnMockNumar
|
|
ENDFUNC
|
|
|
|
PROCEDURE dezaloca_numar
|
|
LPARAMETERS tnIdTipDoc
|
|
gcMockApeluri = gcMockApeluri + "dezaloca_numar(" + TRANSFORM(tnIdTipDoc) + ") numar=" + TRANSFORM(This.paPlaje(tnIdTipDoc, 1)) + CHR(13) + CHR(10)
|
|
IF !ISNULL(This.paPlaje(tnIdTipDoc, 2))
|
|
This.paPlaje(tnIdTipDoc, 1) = 0
|
|
ENDIF
|
|
ENDPROC
|
|
ENDDEFINE
|