Files
comun/utile/Teste/facturare_unificat/mock_generator_numere.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

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