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
422 lines
22 KiB
Plaintext
422 lines
22 KiB
Plaintext
* test_s10_proc_tvav.prg
|
|
* Control negativ S10 (docs\propunere_s10_proc_tvav.md §10), PE COD NEMODIFICAT: dovedeste ca
|
|
* PACK_FACTURARE.adauga_articol_factura re-deriva PROC_TVAV, silentios, pe ramura contract SI pe
|
|
* ramura ELSE - inainte de a scrie diff-ul din runda 2.
|
|
*
|
|
* PROIECTARE REVIZUITA (fata de prima incercare din aceasta sesiune): apel DIRECT la
|
|
* pack_facturare.adauga_articol_factura, cu parametrii exact ca linia reala 1604 (doc 1055), nu
|
|
* prin tot lantul do_scrie_factura()/scrie_factura2 - acela a picat cu o eroare Oracle NELEGATA de
|
|
* S10 ("SQL statement parameter is required for non-prepared SQLEXEC() calls", pe scrie_factura2
|
|
* pentru documente CONTRACT reale - vezi §11 din propunere). Apelul direct testeaza EXACT
|
|
* mecanismul in discutie (CASE-ul din adauga_articol_factura), scrie doar in
|
|
* VANZARI_DETALII_TEMP (niciodata in VANZARI/VANZARI_DETALII/DOCUMENTE - zero risc, zero SSS ars,
|
|
* nimic de reparat la un document real) si e complet reversibil.
|
|
*
|
|
* EXTINDERE (aplicare Oracle, dupa scrierea diff-ului din §7 - vezi docs\raport_s10_aplicare_oracle.md):
|
|
* cazurile 3 si 4 folosesc parametrul nou V_PROC_TVAV_TEMP (pozitia 28) si flag-ul de pachet
|
|
* pack_facturare.nregenerare_editare, ca sa dovedeasca proba ceruta de decizia 3: cu flag=1 si
|
|
* V_PROC_TVAV_TEMP trimis, cota scrisa trebuie sa fie cea SALVATA, nu cea derivata. Cazurile 1/2
|
|
* raman NESCHIMBATE LA COD (apel cu 27 argumente, flag-ul niciodata atins) - proba de "neschimbat"
|
|
* e ca produc EXACT ACELASI TIPAR de PASS/FAIL dupa diff ca inainte (CTR-2/ELSE-2 continua sa PICE,
|
|
* adica tot re-deriva - flag-ul implicit 0 inseamna "override-ul nu se aplica", nu "comportament
|
|
* corect"), nu ca ar incepe sa treaca.
|
|
*
|
|
* Parametru tnCaz:
|
|
* 1 = CONTRACT - parametrii liniei reale 1604 (doc 1055: id_articol 4294507173, id_pol 41,
|
|
* pret 101.13, id_valuta 3, id_jtva_coloana 37, proc_tvav SALVAT 1.21), trimisi la
|
|
* adauga_articol_factura (27 argumente, flag neatins - ramane 0) cu V_ID_CTR = 61
|
|
* (CONTRACTE.OPT_FACTURARE NULL -> branch-ul principal, nu portita NO_DATA_FOUND). Setup:
|
|
* CRM_POLITICI_PRET_ART (id_pol_art 1593, acelasi articol/politica ca linia reala, azi
|
|
* PROC_TVAV NULL) -> 1.09; CTR_ARTICOLE nou care leaga contractul 61 de politica 1593
|
|
* (pret_unitar=0, ca sa nu amestece si divergenta de PRET - izolat strict pe PROC_TVAV).
|
|
* INAINTE si DUPA diff: TREBUIE sa PICE la fel (CTR-2), tot re-deriva - flag=0 nu schimba
|
|
* nimic pentru apelantii de azi.
|
|
* 2 = ELSE - parametrii liniei reale 481 (doc 287: id_jtva_coloana 1 "RO19B", proc_tvav
|
|
* SALVAT 1.19), trimisi cu pack_facturare.ntip := 1 (tip simplu, nu comanda/aviz/restaurant/
|
|
* contract - cade pe ELSE). Setup: JTVA_COLOANE.COTA_TVA (id 1) 19 -> 9 (simuleaza o
|
|
* schimbare legala de cota intre emiterea documentului si o eventuala regenerare). INAINTE si
|
|
* DUPA diff: TREBUIE sa PICE la fel (ELSE-2).
|
|
* 3 = CONTRACT + FLAG - acelasi setup ca 1, dar apel cu 28 argumente:
|
|
* pack_facturare.nregenerare_editare := 1 inainte de apel, V_PROC_TVAV_TEMP = cota salvata
|
|
* (1.21). Cere pachetul deja recompilat cu diff-ul din §7 (altfel pica cu "wrong number of
|
|
* arguments"). TREBUIE sa TREACA: cota scrisa = cea salvata, nu cea noua din politica.
|
|
* 4 = ELSE + FLAG - acelasi setup ca 2, apel cu 28 argumente, flag=1, V_PROC_TVAV_TEMP = cota
|
|
* salvata (1.19). TREBUIE sa TREACA: cota scrisa = cea salvata, nu cea noua din JTVA_COLOANE.
|
|
*
|
|
* Cazurile 1/2: asertul central e "PROC_TVAV in TEMP = cel salvat pe linia reala" - PICA mereu (si
|
|
* inainte, si dupa diff, cat timp flag-ul ramane 0): Oracle re-deriva din politica/JTVA_COLOANE
|
|
* curente, nu primeste si nu respecta o valoare salvata pe calea normala (fara flag). Asertul de
|
|
* control CTR-3/ELSE-3 (valoarea noua chiar a ajuns in TEMP) confirma ca testul masoara ceva real
|
|
* si inainte, si dupa - proba ca diff-ul n-a schimbat comportamentul implicit. Setup-ul de schema e
|
|
* revertit necondiționat la finalul fiecarui caz. Cazurile 3/4 reseteaza flag-ul la 0 imediat dupa
|
|
* citirea rezultatului, in ACELASI bloc/sesiune, ca sa nu ramana agatat pentru vreun apel urmator
|
|
* din aceeasi conexiune.
|
|
LPARAMETERS tnCaz
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
|
|
PUBLIC gcErrLog, gnPass, gnFail
|
|
|
|
gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_s10_proc_tvav_log_' + ;
|
|
STRTRAN(STRTRAN(STRTRAN(TTOC(DATETIME()), '/', ''), ':', ''), ' ', '_') + '.txt'
|
|
STRTOFILE('start ' + TRANSFORM(DATETIME()) + ' caz=' + TRANSFORM(tnCaz) + CHR(13) + CHR(10), gcErrLog)
|
|
|
|
ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
DO ('D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto_roafacturare.prg') WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
|
IF gnHandle <= 0
|
|
STRTOFILE('EROARE: conectare esuata' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
QUIT
|
|
ENDIF
|
|
gnIdUtil = 8
|
|
|
|
gnPass = 0
|
|
gnFail = 0
|
|
|
|
LOCAL lnCaz
|
|
lnCaz = VAL(TRANSFORM(tnCaz))
|
|
DO CASE
|
|
CASE lnCaz = 1
|
|
DO CazContract
|
|
CASE lnCaz = 2
|
|
DO CazElse
|
|
CASE lnCaz = 3
|
|
DO CazContractFlag
|
|
CASE lnCaz = 4
|
|
DO CazElseFlag
|
|
OTHERWISE
|
|
STRTOFILE('EROARE: tnCaz trebuie sa fie 1 (CONTRACT) / 2 (ELSE) / 3 (CONTRACT+FLAG) / 4 (ELSE+FLAG)' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDCASE
|
|
|
|
STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
STRTOFILE('end ' + TRANSFORM(DATETIME()) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
QUIT
|
|
|
|
|
|
*==============================================================================================
|
|
* CazContract: parametrii liniei reale 1604 (doc 1055), trimisi cu V_ID_CTR=61 (OPT_FACTURARE
|
|
* NULL - branch-ul principal, nu NO_DATA_FOUND).
|
|
*==============================================================================================
|
|
PROCEDURE CazContract
|
|
LOCAL lnIdPolArt, lnIdCtr, lnProcTvavVechi, lnIdCtrArtNou, lnProcTvavSalvat, lnProcTvavTemp
|
|
LOCAL llOk
|
|
|
|
lnIdPolArt = 1593
|
|
lnIdCtr = 61
|
|
|
|
lnProcTvavSalvat = Val1([select proc_tvav as v from vanzari_detalii where id_vanzare_det = 1604])
|
|
DO asserteaza WITH 'PRECONDITIE linia reala 1604 are proc_tvav salvat = 1.21', lnProcTvavSalvat = 1.21, TRANSFORM(lnProcTvavSalvat)
|
|
|
|
lnProcTvavVechi = Val1([select proc_tvav as v from crm_politici_pret_art where id_pol_art = ] + TRANSFORM(lnIdPolArt))
|
|
STRTOFILE('SETUP inainte: crm_politici_pret_art.proc_tvav (id_pol_art=' + TRANSFORM(lnIdPolArt) + ') = ' + TRANSFORM(lnProcTvavVechi) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
DO asserteaza WITH 'PRECONDITIE contractul 61 are OPT_FACTURARE care cade pe branch-ul principal (NVL(...,3)=3)', ;
|
|
Val1([select nvl(opt_facturare,3) as v from contracte where id_ctr = ] + TRANSFORM(lnIdCtr)) = 3, ;
|
|
TRANSFORM(Val1([select nvl(opt_facturare,3) as v from contracte where id_ctr = ] + TRANSFORM(lnIdCtr)))
|
|
|
|
llOk = goExecutor.oExecuta([update crm_politici_pret_art set proc_tvav = 1.09 where id_pol_art = ] + TRANSFORM(lnIdPolArt))
|
|
DO asserteaza WITH 'SETUP update politica reusit', llOk, TRANSFORM(llOk)
|
|
IF !llOk
|
|
RETURN
|
|
ENDIF
|
|
|
|
lnIdCtrArtNou = Val1([select seq_ctr_articole.nextval as v from dual])
|
|
llOk = goExecutor.oExecuta([insert into ctr_articole (id_ctr_art, id_ctr, id_pol_art, pret_unitar) values (] + ;
|
|
TRANSFORM(lnIdCtrArtNou) + [, ] + TRANSFORM(lnIdCtr) + [, ] + TRANSFORM(lnIdPolArt) + [, 0)])
|
|
DO asserteaza WITH 'SETUP insert ctr_articole reusit (id_ctr_art=' + TRANSFORM(lnIdCtrArtNou) + ')', llOk, TRANSFORM(llOk)
|
|
IF !llOk
|
|
DO CazContractRevert WITH lnIdPolArt, lnProcTvavVechi, -1
|
|
RETURN
|
|
ENDIF
|
|
|
|
*!* apel DIRECT, 27 argumente, ca la ofacturare.vc2:19977-19999 - flag NEATINS (implicit 0 pe
|
|
*!* pachet, sau ce a ramas de la un caz anterior din aceeasi sesiune - de aceea CazContractFlag/
|
|
*!* CazElseFlag reseteaza flag-ul la 0 imediat dupa citire). CITIREA rezultatului trebuie sa fie
|
|
*!* in ACELASI apel/tranzactie: VANZARI_DETALII_TEMP e GLOBAL TEMPORARY TABLE cu
|
|
*!* DURATION=SYS$TRANSACTION (verificat pe USER_TABLES) - randul dispare la primul COMMIT, iar
|
|
*!* goExecutor face auto-commit dupa fiecare oExecuta separat (Transactions <> 2, nicio
|
|
*!* tranzactie manuala deschisa aici). Un al doilea apel SELECT separat vedea mereu 0 randuri.
|
|
*!* Solutia: SELECT ... INTO ?@pnRezultatCtr (bind OUT, PRIVATE - vezi tiparul ?@poDate.nid_vanzare
|
|
*!* din ofacturare.vc2) IN ACELASI bloc PL/SQL, inainte de commit-ul acelui apel.
|
|
PRIVATE pnRezultatCtr
|
|
pnRezultatCtr = -999
|
|
LOCAL lcSqlApel
|
|
lcSqlApel = [begin pack_facturare.ntip := 2; pack_facturare.adauga_articol_factura(] + ;
|
|
[999001, 4294507173, '', '', 41, NULL, 0, NULL, NULL, ] + ;
|
|
[101.13, 3, 0, 1, 1, 0, 'XXXX', 1, 1, 37, NULL, NULL, 101.13, NULL, ] + TRANSFORM(lnIdCtr) + [, 8, NULL, NULL); ] + ;
|
|
[select proc_tvav into ?@pnRezultatCtr from vanzari_detalii_temp where id_temp = 999001; end;]
|
|
*!* oExecute (spre deosebire de oExecuta) intoarce direct codul numeric (lnSucces < 0 = eroare)
|
|
LOCAL lnSuccesApel
|
|
lnSuccesApel = goExecutor.oExecute(lcSqlApel)
|
|
llOk = (lnSuccesApel >= 0)
|
|
STRTOFILE('goExecutor.cEroare dupa apel: [' + NVL(goExecutor.cEroare,'') + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO asserteaza WITH 'CTR-1 apelul la adauga_articol_factura a reusit (fara exceptie Oracle)', llOk, TRANSFORM(lnSuccesApel)
|
|
|
|
IF llOk
|
|
lnProcTvavTemp = NVL(pnRezultatCtr, -1)
|
|
STRTOFILE('CTR proc_tvav in VANZARI_DETALII_TEMP: ' + TRANSFORM(lnProcTvavTemp) + ;
|
|
' (salvat_pe_document=' + TRANSFORM(lnProcTvavSalvat) + ', politica_noua=1.09)' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
*!* ASERTUL CENTRAL - flag ramane 0 (neatins) - TREBUIE sa PICE la fel INAINTE si DUPA diff
|
|
*!* (dovada ca diff-ul nu schimba comportamentul implicit pentru apelantii de azi)
|
|
DO asserteaza WITH 'CTR-2 PROC_TVAV = cel salvat pe document (decizia 3, flag implicit 0 - trebuie sa PICE, neschimbat fata de azi)', ;
|
|
lnProcTvavTemp = lnProcTvavSalvat, TRANSFORM(lnProcTvavSalvat) + ' -> ' + TRANSFORM(lnProcTvavTemp)
|
|
DO asserteaza WITH 'CTR-3 (control ca testul masoara ceva) cota noua a politicii chiar a ajuns in TEMP', ;
|
|
lnProcTvavTemp = 1.09, TRANSFORM(lnProcTvavTemp)
|
|
ENDIF
|
|
|
|
DO CazContractRevert WITH lnIdPolArt, lnProcTvavVechi, lnIdCtrArtNou
|
|
ENDPROC
|
|
|
|
|
|
PROCEDURE CazContractRevert
|
|
LPARAMETERS tnIdPolArt, tnProcTvavVechi, tnIdCtrArtNou
|
|
LOCAL llOk1, llOk2
|
|
|
|
llOk2 = .T.
|
|
IF tnIdCtrArtNou <> -1
|
|
llOk2 = goExecutor.oExecuta([delete from ctr_articole where id_ctr_art = ] + TRANSFORM(tnIdCtrArtNou))
|
|
ENDIF
|
|
llOk1 = goExecutor.oExecuta([update crm_politici_pret_art set proc_tvav = ] + ;
|
|
IIF(ISNULL(tnProcTvavVechi) OR tnProcTvavVechi = -1, [NULL], TRANSFORM(tnProcTvavVechi)) + [ where id_pol_art = ] + TRANSFORM(tnIdPolArt))
|
|
STRTOFILE('REVERT: delete ctr_articole=' + TRANSFORM(llOk2) + ' update politica=' + TRANSFORM(llOk1) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO asserteaza WITH 'CTR-9 revert setup (politica + ctr_articole) reusit', llOk1 AND llOk2, TRANSFORM(llOk1) + '/' + TRANSFORM(llOk2)
|
|
|
|
LOCAL lnVerif
|
|
lnVerif = Val1([select proc_tvav as v from crm_politici_pret_art where id_pol_art = ] + TRANSFORM(tnIdPolArt))
|
|
STRTOFILE('REVERT verificat: proc_tvav acum = ' + TRANSFORM(lnVerif) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDPROC
|
|
|
|
|
|
*==============================================================================================
|
|
* CazElse: parametrii liniei reale 481 (doc 287), trimisi cu pack_facturare.ntip := 1 (cade pe
|
|
* ELSE - nu e in nicio lista comanda/aviz/restaurant/contract).
|
|
*==============================================================================================
|
|
PROCEDURE CazElse
|
|
LOCAL lnCotaVeche, lnProcTvavSalvat, lnProcTvavTemp, llOk
|
|
|
|
lnProcTvavSalvat = Val1([select proc_tvav as v from vanzari_detalii where id_vanzare_det = 481])
|
|
DO asserteaza WITH 'PRECONDITIE linia reala 481 are proc_tvav salvat = 1.19', lnProcTvavSalvat = 1.19, TRANSFORM(lnProcTvavSalvat)
|
|
|
|
lnCotaVeche = Val1([select cota_tva as v from jtva_coloane where id_jtva_coloana = 1])
|
|
STRTOFILE('SETUP inainte: jtva_coloane.cota_tva (id=1) = ' + TRANSFORM(lnCotaVeche) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO asserteaza WITH 'PRECONDITIE cota_tva porneste de la 19', lnCotaVeche = 19, TRANSFORM(lnCotaVeche)
|
|
|
|
llOk = goExecutor.oExecuta([update jtva_coloane set cota_tva = 9 where id_jtva_coloana = 1])
|
|
DO asserteaza WITH 'SETUP update jtva_coloane reusit', llOk, TRANSFORM(llOk)
|
|
IF !llOk
|
|
RETURN
|
|
ENDIF
|
|
|
|
*!* apel DIRECT, 27 argumente (V_ID_JTVA_COLOANA=1, restul dupa vanzari_detalii), ntip=1
|
|
*!* (tip simplu -> ELSE); V_ID_ARTICOL 691698485 ca in linia reala - flag NEATINS. Citire in
|
|
*!* ACELASI apel/tranzactie - vezi comentariul din CazContract (VANZARI_DETALII_TEMP e GTT
|
|
*!* DURATION=SYS$TRANSACTION, disparea la commit-ul automat al urmatorului oExecuta separat)
|
|
PRIVATE pnRezultatElse
|
|
pnRezultatElse = -999
|
|
LOCAL lcSqlApel2, lnSuccesApel2
|
|
lcSqlApel2 = [begin pack_facturare.ntip := 1; pack_facturare.adauga_articol_factura(] + ;
|
|
[999002, 691698485, '', '', NULL, NULL, 0, NULL, NULL, ] + ;
|
|
[100, 1, 0, 1, 1, 0, 'XXXX', 1, 1, 1, NULL, NULL, 100, NULL, NULL, 8, NULL, NULL); ] + ;
|
|
[select proc_tvav into ?@pnRezultatElse from vanzari_detalii_temp where id_temp = 999002; end;]
|
|
lnSuccesApel2 = goExecutor.oExecute(lcSqlApel2)
|
|
llOk = (lnSuccesApel2 >= 0)
|
|
STRTOFILE('goExecutor.cEroare dupa apel: [' + NVL(goExecutor.cEroare,'') + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO asserteaza WITH 'ELSE-1 apelul la adauga_articol_factura a reusit (fara exceptie Oracle)', llOk, TRANSFORM(lnSuccesApel2)
|
|
|
|
IF llOk
|
|
lnProcTvavTemp = NVL(pnRezultatElse, -1)
|
|
STRTOFILE('ELSE proc_tvav in VANZARI_DETALII_TEMP: ' + TRANSFORM(lnProcTvavTemp) + ;
|
|
' (salvat_pe_document=' + TRANSFORM(lnProcTvavSalvat) + ', cota_noua_asteptata=1.09)' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
DO asserteaza WITH 'ELSE-2 PROC_TVAV = cel salvat pe document (decizia 3, flag implicit 0 - trebuie sa PICE, neschimbat fata de azi)', ;
|
|
lnProcTvavTemp = lnProcTvavSalvat, TRANSFORM(lnProcTvavSalvat) + ' -> ' + TRANSFORM(lnProcTvavTemp)
|
|
DO asserteaza WITH 'ELSE-3 (control ca testul masoara ceva) cota noua din JTVA_COLOANE chiar a ajuns in TEMP', ;
|
|
lnProcTvavTemp = 1.09, TRANSFORM(lnProcTvavTemp)
|
|
ENDIF
|
|
|
|
DO CazElseRevert WITH lnCotaVeche
|
|
ENDPROC
|
|
|
|
|
|
PROCEDURE CazElseRevert
|
|
LPARAMETERS tnCotaVeche
|
|
LOCAL llOk
|
|
|
|
llOk = goExecutor.oExecuta([update jtva_coloane set cota_tva = ] + TRANSFORM(tnCotaVeche) + [ where id_jtva_coloana = 1])
|
|
STRTOFILE('REVERT: update jtva_coloane=' + TRANSFORM(llOk) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO asserteaza WITH 'ELSE-9 revert setup (jtva_coloane) reusit', llOk, TRANSFORM(llOk)
|
|
|
|
LOCAL lnVerif
|
|
lnVerif = Val1([select cota_tva as v from jtva_coloane where id_jtva_coloana = 1])
|
|
STRTOFILE('REVERT verificat: cota_tva acum = ' + TRANSFORM(lnVerif) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDPROC
|
|
|
|
|
|
*==============================================================================================
|
|
* CazContractFlag: acelasi setup ca CazContract, dar apel cu 28 argumente - flag=1,
|
|
* V_PROC_TVAV_TEMP = cota salvata (1.21). Cere parametrul nou pe pachet (dupa diff-ul din §7).
|
|
*==============================================================================================
|
|
PROCEDURE CazContractFlag
|
|
LOCAL lnIdPolArt, lnIdCtr, lnProcTvavVechi, lnIdCtrArtNou, lnProcTvavSalvat, lnProcTvavTemp
|
|
LOCAL llOk
|
|
|
|
lnIdPolArt = 1593
|
|
lnIdCtr = 61
|
|
|
|
lnProcTvavSalvat = Val1([select proc_tvav as v from vanzari_detalii where id_vanzare_det = 1604])
|
|
DO asserteaza WITH 'PRECONDITIE linia reala 1604 are proc_tvav salvat = 1.21', lnProcTvavSalvat = 1.21, TRANSFORM(lnProcTvavSalvat)
|
|
|
|
lnProcTvavVechi = Val1([select proc_tvav as v from crm_politici_pret_art where id_pol_art = ] + TRANSFORM(lnIdPolArt))
|
|
STRTOFILE('SETUP inainte: crm_politici_pret_art.proc_tvav (id_pol_art=' + TRANSFORM(lnIdPolArt) + ') = ' + TRANSFORM(lnProcTvavVechi) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
llOk = goExecutor.oExecuta([update crm_politici_pret_art set proc_tvav = 1.09 where id_pol_art = ] + TRANSFORM(lnIdPolArt))
|
|
DO asserteaza WITH 'SETUP update politica reusit', llOk, TRANSFORM(llOk)
|
|
IF !llOk
|
|
RETURN
|
|
ENDIF
|
|
|
|
lnIdCtrArtNou = Val1([select seq_ctr_articole.nextval as v from dual])
|
|
llOk = goExecutor.oExecuta([insert into ctr_articole (id_ctr_art, id_ctr, id_pol_art, pret_unitar) values (] + ;
|
|
TRANSFORM(lnIdCtrArtNou) + [, ] + TRANSFORM(lnIdCtr) + [, ] + TRANSFORM(lnIdPolArt) + [, 0)])
|
|
DO asserteaza WITH 'SETUP insert ctr_articole reusit (id_ctr_art=' + TRANSFORM(lnIdCtrArtNou) + ')', llOk, TRANSFORM(llOk)
|
|
IF !llOk
|
|
DO CazContractRevert WITH lnIdPolArt, lnProcTvavVechi, -1
|
|
RETURN
|
|
ENDIF
|
|
|
|
*!* apel cu 28 argumente: flag pornit inainte de apel, V_PROC_TVAV_TEMP = cota salvata pe
|
|
*!* document. Flag resetat la 0 IN ACELASI bloc, dupa citirea rezultatului, ca sa nu ramana
|
|
*!* agatat pentru vreun apel urmator din aceeasi sesiune (goExecutor.oExecute e o singura
|
|
*!* conexiune reutilizata pe tot testul).
|
|
PRIVATE pnRezultatCtrFlag
|
|
pnRezultatCtrFlag = -999
|
|
LOCAL lcSqlApel
|
|
lcSqlApel = [begin pack_facturare.nregenerare_editare := 1; pack_facturare.ntip := 2; ] + ;
|
|
[pack_facturare.adauga_articol_factura(] + ;
|
|
[999003, 4294507173, '', '', 41, NULL, 0, NULL, NULL, ] + ;
|
|
[101.13, 3, 0, 1, 1, 0, 'XXXX', 1, 1, 37, NULL, NULL, 101.13, NULL, ] + TRANSFORM(lnIdCtr) + [, 8, NULL, NULL, ] + ;
|
|
ALLTRIM(STR(lnProcTvavSalvat,18,4)) + [); ] + ;
|
|
[select proc_tvav into ?@pnRezultatCtrFlag from vanzari_detalii_temp where id_temp = 999003; ] + ;
|
|
[pack_facturare.nregenerare_editare := 0; end;]
|
|
LOCAL lnSuccesApel
|
|
lnSuccesApel = goExecutor.oExecute(lcSqlApel)
|
|
llOk = (lnSuccesApel >= 0)
|
|
STRTOFILE('goExecutor.cEroare dupa apel: [' + NVL(goExecutor.cEroare,'') + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO asserteaza WITH 'CTRF-1 apelul (28 arg, flag=1) la adauga_articol_factura a reusit (fara exceptie Oracle)', llOk, TRANSFORM(lnSuccesApel)
|
|
|
|
IF llOk
|
|
lnProcTvavTemp = NVL(pnRezultatCtrFlag, -1)
|
|
STRTOFILE('CTRF proc_tvav in VANZARI_DETALII_TEMP: ' + TRANSFORM(lnProcTvavTemp) + ;
|
|
' (salvat_pe_document=' + TRANSFORM(lnProcTvavSalvat) + ', politica_noua=1.09)' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
*!* ASERTUL CENTRAL - cu flag=1 SI V_PROC_TVAV_TEMP trimis, TREBUIE sa TREACA: cota
|
|
*!* pastrata = cea salvata, nu cea noua din politica
|
|
DO asserteaza WITH 'CTRF-2 PROC_TVAV = cel salvat pe document (decizia 3, flag=1 - pastrat)', ;
|
|
lnProcTvavTemp = lnProcTvavSalvat, TRANSFORM(lnProcTvavSalvat) + ' -> ' + TRANSFORM(lnProcTvavTemp)
|
|
DO asserteaza WITH 'CTRF-3 (control) cota pastrata NU e cea noua a politicii (1.09)', ;
|
|
lnProcTvavTemp <> 1.09, TRANSFORM(lnProcTvavTemp)
|
|
ENDIF
|
|
|
|
DO CazContractRevert WITH lnIdPolArt, lnProcTvavVechi, lnIdCtrArtNou
|
|
ENDPROC
|
|
|
|
|
|
*==============================================================================================
|
|
* CazElseFlag: acelasi setup ca CazElse, dar apel cu 28 argumente - flag=1, V_PROC_TVAV_TEMP =
|
|
* cota salvata (1.19).
|
|
*==============================================================================================
|
|
PROCEDURE CazElseFlag
|
|
LOCAL lnCotaVeche, lnProcTvavSalvat, lnProcTvavTemp, llOk
|
|
|
|
lnProcTvavSalvat = Val1([select proc_tvav as v from vanzari_detalii where id_vanzare_det = 481])
|
|
DO asserteaza WITH 'PRECONDITIE linia reala 481 are proc_tvav salvat = 1.19', lnProcTvavSalvat = 1.19, TRANSFORM(lnProcTvavSalvat)
|
|
|
|
lnCotaVeche = Val1([select cota_tva as v from jtva_coloane where id_jtva_coloana = 1])
|
|
STRTOFILE('SETUP inainte: jtva_coloane.cota_tva (id=1) = ' + TRANSFORM(lnCotaVeche) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO asserteaza WITH 'PRECONDITIE cota_tva porneste de la 19', lnCotaVeche = 19, TRANSFORM(lnCotaVeche)
|
|
|
|
llOk = goExecutor.oExecuta([update jtva_coloane set cota_tva = 9 where id_jtva_coloana = 1])
|
|
DO asserteaza WITH 'SETUP update jtva_coloane reusit', llOk, TRANSFORM(llOk)
|
|
IF !llOk
|
|
RETURN
|
|
ENDIF
|
|
|
|
PRIVATE pnRezultatElseFlag
|
|
pnRezultatElseFlag = -999
|
|
LOCAL lcSqlApel2, lnSuccesApel2
|
|
lcSqlApel2 = [begin pack_facturare.nregenerare_editare := 1; pack_facturare.ntip := 1; ] + ;
|
|
[pack_facturare.adauga_articol_factura(] + ;
|
|
[999004, 691698485, '', '', NULL, NULL, 0, NULL, NULL, ] + ;
|
|
[100, 1, 0, 1, 1, 0, 'XXXX', 1, 1, 1, NULL, NULL, 100, NULL, NULL, 8, NULL, NULL, ] + ;
|
|
ALLTRIM(STR(lnProcTvavSalvat,18,4)) + [); ] + ;
|
|
[select proc_tvav into ?@pnRezultatElseFlag from vanzari_detalii_temp where id_temp = 999004; ] + ;
|
|
[pack_facturare.nregenerare_editare := 0; end;]
|
|
lnSuccesApel2 = goExecutor.oExecute(lcSqlApel2)
|
|
llOk = (lnSuccesApel2 >= 0)
|
|
STRTOFILE('goExecutor.cEroare dupa apel: [' + NVL(goExecutor.cEroare,'') + ']' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
DO asserteaza WITH 'ELSEF-1 apelul (28 arg, flag=1) la adauga_articol_factura a reusit (fara exceptie Oracle)', llOk, TRANSFORM(lnSuccesApel2)
|
|
|
|
IF llOk
|
|
lnProcTvavTemp = NVL(pnRezultatElseFlag, -1)
|
|
STRTOFILE('ELSEF proc_tvav in VANZARI_DETALII_TEMP: ' + TRANSFORM(lnProcTvavTemp) + ;
|
|
' (salvat_pe_document=' + TRANSFORM(lnProcTvavSalvat) + ', cota_noua_asteptata=1.09)' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
DO asserteaza WITH 'ELSEF-2 PROC_TVAV = cel salvat pe document (decizia 3, flag=1 - pastrat)', ;
|
|
lnProcTvavTemp = lnProcTvavSalvat, TRANSFORM(lnProcTvavSalvat) + ' -> ' + TRANSFORM(lnProcTvavTemp)
|
|
DO asserteaza WITH 'ELSEF-3 (control) cota pastrata NU e cea noua din JTVA_COLOANE (1.09)', ;
|
|
lnProcTvavTemp <> 1.09, TRANSFORM(lnProcTvavTemp)
|
|
ENDIF
|
|
|
|
DO CazElseRevert WITH lnCotaVeche
|
|
ENDPROC
|
|
|
|
|
|
*==============================================================================================
|
|
FUNCTION Val1
|
|
LPARAMETERS tcSql
|
|
LOCAL lnRet
|
|
lnRet = -1
|
|
IF USED('v_val10')
|
|
USE IN v_val10
|
|
ENDIF
|
|
IF goExecutor.oExecuta(tcSql, 'v_val10')
|
|
SELECT v_val10
|
|
IF RECCOUNT('v_val10') > 0
|
|
GO TOP
|
|
lnRet = NVL(v_val10.v, -1)
|
|
ENDIF
|
|
USE IN v_val10
|
|
ELSE
|
|
STRTOFILE('EROARE Val1: ' + goExecutor.cEroare + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDIF
|
|
RETURN lnRet
|
|
ENDFUNC
|
|
|
|
|
|
PROCEDURE asserteaza
|
|
LPARAMETERS tcNume, tlConditie, tcValoare
|
|
|
|
IF m.tlConditie
|
|
gnPass = gnPass + 1
|
|
STRTOFILE('PASS ' + m.tcNume + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ELSE
|
|
gnFail = gnFail + 1
|
|
STRTOFILE('FAIL ' + m.tcNume + ' (valoare: ' + TRANSFORM(m.tcValoare) + ')' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROCEDURE test_error_handler
|
|
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
|
|
|
STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcErrLog, 1)
|
|
gnFail = gnFail + 1
|
|
STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
STRTOFILE('end (eroare) ' + TRANSFORM(DATETIME()) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
QUIT
|
|
ENDPROC
|