* 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