627 lines
33 KiB
Plaintext
627 lines
33 KiB
Plaintext
* probe_12b_s4b_matrice.prg
|
|
* Plan #12b, S4b - proba A (matrice, zero date) + "mutatie de control" pe pachetul de DINAINTE
|
|
* de S4b. Starea curenta a schemei (MARIUSM_AUTO) la data rularii: S4a aplicat (functia
|
|
* pack_facturare.cont_venit_articol_stoc exista), dar cursor_articol din contabilizeaza_articol
|
|
* NU citeste inca A.ID_NOTA, nu deduce SCC din cont si nu are garda FACT-033 - SCD/SCC/ASCD/ASCC
|
|
* vin azi INTOTDEAUNA din nota politicii (B.ID_NOTA), indiferent de politica sau de articol.
|
|
*
|
|
* Apeleaza direct pack_facturare.contabilizeaza_articol(v_row) cu un rand
|
|
* VANZARI_DETALII_TEMP%ROWTYPE construit in PL/SQL (fara sa treaca prin RPC-ul de adaugare
|
|
* linie/UI), citeste rezultatul din ACT_TEMP (GTT ON COMMIT DELETE ROWS) in aceeasi tranzactie
|
|
* manuala (Transactions=2). Fiecare caz care muta date (ID_NOTA pe rand sau pe politica, CONT pe
|
|
* articol) isi restaureaza mutatia INAUNTRUL propriului bloc PL/SQL (pe calea de succes SI pe
|
|
* exceptie, ca sa nu contamineze cazurile urmatoare cand acest script va fi rerulat dupa ce S4b
|
|
* va introduce chiar erorile FACT-033 asteptate) - ROLLBACK-ul final e doar plasa de siguranta.
|
|
*
|
|
* Asteptarile (valorile "S4b" din sectiunea 3 a planului) sunt calculate independent de codul
|
|
* testat: din baseline_12b.md sectiunea 6 (notele 5 si 6, statice) si din interogari separate
|
|
* (nota politicii reale, pack_facturare.GetAnaliticByGrupUtilizatori) - nu din cursor_articol.
|
|
*
|
|
* Rulare: powershell -ExecutionPolicy Bypass -File ruleaza_suita.ps1 -Nume probe_12b_s4b_matrice
|
|
* Log: D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\probe_12b_s4b_matrice.log
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
SET NOTIFY OFF
|
|
CLOSE DATABASES
|
|
|
|
PUBLIC gcLog, gcCaz, gnPass, gnFail, gnTransOriginal, gcErrMsg
|
|
gcErrMsg = ""
|
|
gcLog = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\probe_12b_s4b_matrice.log"
|
|
IF !DIRECTORY("D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out")
|
|
MD "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out"
|
|
ENDIF
|
|
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog)
|
|
gcCaz = ""
|
|
gnPass = 0
|
|
gnFail = 0
|
|
ON ERROR DO AfErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
|
|
DO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto_roafacturare.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
|
IF TYPE('gnHandle') <> 'N' OR gnHandle <= 0
|
|
DO AfLog WITH "FAIL: conexiune Oracle esuata"
|
|
DO Final
|
|
ENDIF
|
|
gnIdUtil = 8
|
|
DO AfLog WITH "ENV OK gnHandle=" + TRANSFORM(gnHandle)
|
|
|
|
gnTransOriginal = SQLGETPROP(gnHandle, "Transactions")
|
|
SQLSETPROP(gnHandle, "Transactions", 2)
|
|
DO AfLog WITH "Transactions manual, original=" + TRANSFORM(gnTransOriginal)
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* precondition: nid_politica_stoc = 41 dupa initializeaza_facturare(8) - altfel ramurile
|
|
* "politica reala" ar trece tautologic (nimic nu ar mai fi cu adevarat "politica de stoc")
|
|
gcCaz = "[precondition] "
|
|
LOCAL lnOk, lcSql
|
|
* pack_facturare are propriile variabile de antet de document (nnumar_act, cserie_act, datele,
|
|
* nid_moneda_nationala, nperechec, nid_fdoc, nid_factc, nid_part, nid_partc, nid_set - toate
|
|
* NOT NULL in ACT_TEMP sau folosite in DECODE-uri care ajung acolo) - neinitializate de
|
|
* initializeaza_facturare (care seteaza doar politica de stoc) si nici de test_init_env_auto_*.
|
|
* Fara ele contabilizeaza_articol pica pe ORA-01400 (NRACT/PERECHEC/ID_SET) inainte sa ajunga la
|
|
* SCD/SCC - descoperit prin proba directa pe sqlplus, nu presupus.
|
|
lcSql = [begin pack_facturare.initializeaza_facturare(8); ] + ;
|
|
[if nvl(pack_facturare.nid_politica_stoc,0) <> 41 then raise_application_error(-20900,'nid_politica_stoc='||to_char(pack_facturare.nid_politica_stoc)); end if; ] + ;
|
|
[pack_facturare.nnumar_act := 999999; pack_facturare.cserie_act := 'TST'; ] + ;
|
|
[pack_facturare.ddata_ireg := sysdate; pack_facturare.ddata_act := sysdate; pack_facturare.ddata_scadenta := sysdate; ] + ;
|
|
[pack_facturare.nid_moneda_nationala := 3; pack_facturare.nperechec := 0; pack_facturare.nid_fdoc := 0; ] + ;
|
|
[pack_facturare.nid_factc := 0; pack_facturare.nid_part := 0; pack_facturare.nid_partc := 0; pack_facturare.nid_set := 25000; ] + ;
|
|
[pack_facturare.nid_sectie_stoc := nvl(pack_facturare.nid_sectie_stoc,1); end;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
DO Verdict WITH lnOk > 0, "initializeaza_facturare(8) + antet document proba + precondition nid_politica_stoc=41"
|
|
IF lnOk <= 0
|
|
DO AfLog WITH "BLOCAT: precondition esuata, opresc"
|
|
DO Final
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* descoperire (read-only): articolul singurei politici 32/33, politica reala a articolului 1
|
|
* (D5), nota acelei politici reale, si analiticele de grup (GetAnaliticByGrupUtilizatori) pentru
|
|
* conturile folosite mai jos - toate independente de cursor_articol
|
|
gcCaz = "[descoperire] "
|
|
LOCAL lnArtPol32, lnArtPol33, lnPolReala1, lnNotaRealaOrig
|
|
lnArtPol32 = 0
|
|
lnArtPol33 = 0
|
|
lnPolReala1 = 0
|
|
lnNotaRealaOrig = 0
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select id_articol from crm_politici_pret_art where id_pol = 32 and rownum = 1", "crsp32")
|
|
IF lnOk > 0 AND USED('crsp32') AND RECCOUNT('crsp32') = 1
|
|
lnArtPol32 = crsp32.id_articol
|
|
ENDIF
|
|
IF USED('crsp32')
|
|
USE IN crsp32
|
|
ENDIF
|
|
DO AfLog WITH "articol politica 32 (HOTEL TAXE) = " + TRANSFORM(lnArtPol32)
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select id_articol from crm_politici_pret_art where id_pol = 33 and rownum = 1", "crsp33")
|
|
IF lnOk > 0 AND USED('crsp33') AND RECCOUNT('crsp33') = 1
|
|
lnArtPol33 = crsp33.id_articol
|
|
ENDIF
|
|
IF USED('crsp33')
|
|
USE IN crsp33
|
|
ENDIF
|
|
DO AfLog WITH "articol politica 33 (HOTEL CAZARE) = " + TRANSFORM(lnArtPol33)
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select id_pol from crm_politici_pret_art where id_articol = 1 and id_pol <> 41 and rownum = 1", "crspr1")
|
|
IF lnOk > 0 AND USED('crspr1') AND RECCOUNT('crspr1') = 1
|
|
lnPolReala1 = crspr1.id_pol
|
|
ENDIF
|
|
IF USED('crspr1')
|
|
USE IN crspr1
|
|
ENDIF
|
|
DO AfLog WITH "politica reala a articolului 1 (D5) = " + TRANSFORM(lnPolReala1)
|
|
|
|
IF lnArtPol32 = 0 OR lnArtPol33 = 0 OR lnPolReala1 = 0
|
|
DO AfLog WITH "BLOCAT: descoperire incompleta (art32=" + TRANSFORM(lnArtPol32) + " art33=" + TRANSFORM(lnArtPol33) + " polreala1=" + TRANSFORM(lnPolReala1) + ")"
|
|
DO Final
|
|
ENDIF
|
|
|
|
LOCAL lcScdReal, lcAscdReal, lcSccReal, lcAsccReal
|
|
lcScdReal = ""
|
|
lcAscdReal = ""
|
|
lcSccReal = ""
|
|
lcAsccReal = ""
|
|
lcSql = "select b.id_nota, nvl(d.scd,'<NULL>') scd, nvl(d.ascd,'<NULL>') ascd, nvl(d.scc,'<NULL>') scc, nvl(d.ascc,'<NULL>') ascc" + ;
|
|
" from crm_politici_preturi b join crm_note_vanzari c on b.id_nota = c.id_nota join note_contabile d on c.id_set = d.id_set" + ;
|
|
" where b.id_pol = " + TRANSFORM(lnPolReala1)
|
|
lnOk = SQLEXEC(gnHandle, lcSql, "crsnr")
|
|
IF lnOk > 0 AND USED('crsnr') AND RECCOUNT('crsnr') = 1
|
|
lnNotaRealaOrig = crsnr.id_nota
|
|
lcScdReal = ALLTRIM(crsnr.scd)
|
|
lcAscdReal = ALLTRIM(crsnr.ascd)
|
|
lcSccReal = ALLTRIM(crsnr.scc)
|
|
lcAsccReal = ALLTRIM(crsnr.ascc)
|
|
ELSE
|
|
DO AfLog WITH "BLOCAT: nu am gasit nota politicii reale " + TRANSFORM(lnPolReala1)
|
|
DO Final
|
|
ENDIF
|
|
IF USED('crsnr')
|
|
USE IN crsnr
|
|
ENDIF
|
|
DO AfLog WITH "nota politicii reale " + TRANSFORM(lnPolReala1) + " = id_nota " + TRANSFORM(lnNotaRealaOrig) + " SCD=" + lcScdReal + " ASCD=" + lcAscdReal + " SCC=" + lcSccReal + " ASCC=" + lcAsccReal
|
|
|
|
LOCAL lcAsc4111, lcAsc461, lcAsc7583, lcAsc707, lcAsc7015, lcAsc418, lcAscScdReal, lcAscSccReal
|
|
lcSql = "select nvl(pack_facturare.GetAnaliticByGrupUtilizatori(8,'4111'),'<NULL>') a1, nvl(pack_facturare.GetAnaliticByGrupUtilizatori(8,'461'),'<NULL>') a2," + ;
|
|
" nvl(pack_facturare.GetAnaliticByGrupUtilizatori(8,'7583'),'<NULL>') a3, nvl(pack_facturare.GetAnaliticByGrupUtilizatori(8,'707'),'<NULL>') a4," + ;
|
|
" nvl(pack_facturare.GetAnaliticByGrupUtilizatori(8,'7015'),'<NULL>') a5, nvl(pack_facturare.GetAnaliticByGrupUtilizatori(8,'418'),'<NULL>') a6," + ;
|
|
" nvl(pack_facturare.GetAnaliticByGrupUtilizatori(8,'" + lcScdReal + "'),'<NULL>') a7, nvl(pack_facturare.GetAnaliticByGrupUtilizatori(8,'" + lcSccReal + "'),'<NULL>') a8" + ;
|
|
" from dual"
|
|
lnOk = SQLEXEC(gnHandle, lcSql, "crsga")
|
|
IF lnOk > 0 AND USED('crsga') AND RECCOUNT('crsga') = 1
|
|
lcAsc4111 = ALLTRIM(crsga.a1)
|
|
lcAsc461 = ALLTRIM(crsga.a2)
|
|
lcAsc7583 = ALLTRIM(crsga.a3)
|
|
lcAsc707 = ALLTRIM(crsga.a4)
|
|
lcAsc7015 = ALLTRIM(crsga.a5)
|
|
lcAsc418 = ALLTRIM(crsga.a6)
|
|
lcAscScdReal = ALLTRIM(crsga.a7)
|
|
lcAscSccReal = ALLTRIM(crsga.a8)
|
|
ELSE
|
|
DO AfLog WITH "BLOCAT: nu am putut citi analiticele de grup"
|
|
DO Final
|
|
ENDIF
|
|
IF USED('crsga')
|
|
USE IN crsga
|
|
ENDIF
|
|
* fallback NVL ca in cod: daca nota nu are ASCD/ASCC propriu, cel efectiv e cel din grup
|
|
IF lcAscdReal == "<NULL>"
|
|
lcAscdReal = lcAscScdReal
|
|
ENDIF
|
|
IF lcAsccReal == "<NULL>"
|
|
lcAsccReal = lcAscSccReal
|
|
ENDIF
|
|
DO AfLog WITH "GetAnaliticByGrupUtilizatori(8,.): 4111=" + lcAsc4111 + " 461=" + lcAsc461 + " 7583=" + lcAsc7583 + " 707=" + lcAsc707 + " 7015=" + lcAsc7015 + " 418=" + lcAsc418
|
|
DO AfLog WITH "ASCD/ASCC efective (dupa fallback NVL) ale politicii reale " + TRANSFORM(lnPolReala1) + ": ASCD=" + lcAscdReal + " ASCC=" + lcAsccReal
|
|
|
|
* nota 6 (PRODUCTIE, politica 41) si nota 5 (VANZARE MARFA) - statice, din baseline_12b.md sect. 6
|
|
LOCAL lcN6Scd, lcN6Ascd, lcN6Scc, lcN6Ascc, lcN5Scd, lcN5Ascd, lcN5Scc, lcN5Ascc
|
|
lcN6Scd = "4111"
|
|
lcN6Ascd = lcAsc4111 && nota 6 are ASCD gol -> fallback grup
|
|
lcN6Scc = "7015"
|
|
lcN6Ascc = lcAsc7015 && nota 6 are ASCC gol -> fallback grup
|
|
lcN5Scd = "4111"
|
|
lcN5Ascd = "11"
|
|
lcN5Scc = "707"
|
|
lcN5Ascc = "11"
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 1: nota pe rand (A.ID_NOTA) 461=7583, creata in tranzactie pe un articol fara nota proprie
|
|
* Tinta S4b (D10 regula 1): SCD/SCC/ASCD/ASCC din nota RANDULUI = 461/7583/asc461/asc7583
|
|
gcCaz = "[caz1-nota-pe-rand-461-7583] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; v_id_nota crm_note_vanzari.id_nota%TYPE; v_id_set crm_note_vanzari.id_set%TYPE; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901000; ] + ;
|
|
[INSERT INTO crm_note_vanzari (denumire, id_util, id_sectie, dataora) VALUES ('PROBA S4B CAZ1', 8, 1, SYSDATE) RETURNING id_nota, id_set INTO v_id_nota, v_id_set; ] + ;
|
|
[INSERT INTO note_contabile (explicatie, scd, scc, ordine, cu_tva, ptva, id_set, in_valuta, id_jtva_coloana) VALUES ('PROBA S4B CAZ1', '461', '7583', 1, 1, 21, v_id_set, 0, 35); ] + ;
|
|
[UPDATE crm_politici_pret_art SET id_nota = v_id_nota WHERE id_pol = 41 AND id_articol = 4294507216; ] + ;
|
|
[v_row.id_pol := 41; v_row.id_articol := 4294507216; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ1'; v_row.proc_tvav := 1.19; ] + ;
|
|
[BEGIN v_res := pack_facturare.contabilizeaza_articol(v_row); ] + ;
|
|
[EXCEPTION WHEN OTHERS THEN UPDATE crm_politici_pret_art SET id_nota = NULL WHERE id_pol = 41 AND id_articol = 4294507216; RAISE; END; ] + ;
|
|
[UPDATE crm_politici_pret_art SET id_nota = NULL WHERE id_pol = 41 AND id_articol = 4294507216; END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
DO Verdict WITH lnOk > 0, "apelul a trecut fara eroare (azi nicio garda pe nota randului)"
|
|
IF lnOk > 0
|
|
DO LeaActTemp WITH -900999
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " ASCD=" + ALLTRIM(crsact.ascd) + " SCC=" + ALLTRIM(crsact.scc) + " ASCC=" + ALLTRIM(crsact.ascc)
|
|
DO AfLog WITH "asteptat S4b: SCD=461 ASCD=" + lcAsc461 + " SCC=7583 ASCC=" + lcAsc7583
|
|
DO Verdict WITH ALLTRIM(crsact.scd) == "461" AND ALLTRIM(crsact.scc) == "7583", "SCD/SCC = nota randului (461/7583) - tinta S4b regula 1"
|
|
ELSE
|
|
DO Verdict WITH .F., "nicio linie in ACT_TEMP (neasteptat)"
|
|
ENDIF
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 2: articol CONT=371 (CORESP->707) pe politica 41, cu nota 5 (ASCC=11) fortata temporar ca
|
|
* nota implicita a politicii 41. Tinta S4b (D10 regula 2): SCC=707 (dedus), ASCC din grup - NU 11
|
|
gcCaz = "[caz2-cont371-nota5-ascc-grup] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; v_orig NUMBER; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901100; ] + ;
|
|
[SELECT id_nota INTO v_orig FROM crm_politici_preturi WHERE id_pol = 41; ] + ;
|
|
[UPDATE crm_politici_preturi SET id_nota = 5 WHERE id_pol = 41; ] + ;
|
|
[v_row.id_pol := 41; v_row.id_articol := 2910202427; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ2'; v_row.proc_tvav := 1.19; ] + ;
|
|
[BEGIN v_res := pack_facturare.contabilizeaza_articol(v_row); ] + ;
|
|
[EXCEPTION WHEN OTHERS THEN UPDATE crm_politici_preturi SET id_nota = v_orig WHERE id_pol = 41; RAISE; END; ] + ;
|
|
[UPDATE crm_politici_preturi SET id_nota = v_orig WHERE id_pol = 41; END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
DO Verdict WITH lnOk > 0, "apelul a trecut fara eroare"
|
|
IF lnOk > 0
|
|
DO LeaActTemp WITH -901099
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " ASCD=" + ALLTRIM(crsact.ascd) + " SCC=" + ALLTRIM(crsact.scc) + " ASCC=" + ALLTRIM(crsact.ascc)
|
|
DO AfLog WITH "asteptat S4b: SCD=" + lcN5Scd + " ASCD=" + lcN5Ascd + " SCC=707 ASCC(grup)=" + lcAsc707 + " [azi foloseste ASCC-ul notei=11, nu grupul]"
|
|
DO Verdict WITH ALLTRIM(crsact.scc) == "707" AND ALLTRIM(crsact.ascc) == lcAsc707, "SCC dedus (707) SI ASCC din grup (nu 11 din nota) - tinta S4b regula 2"
|
|
ELSE
|
|
DO Verdict WITH .F., "nicio linie in ACT_TEMP (neasteptat)"
|
|
ENDIF
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 3: articol scratch (4294507213, DISCOUNT) cu CONT temporar '707' (incepe cu 7 -> dedus =
|
|
* el insusi), pe politica 41 cu nota implicita neatinsa (nota 6). Tinta S4b: SCC=707 (dedus),
|
|
* nu 7015 (nota politicii, cum e azi)
|
|
gcCaz = "[caz3-cont707-dedus] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; v_orig_cont nom_articole.cont%TYPE; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901200; ] + ;
|
|
[SELECT cont INTO v_orig_cont FROM nom_articole WHERE id_articol = 4294507213; ] + ;
|
|
[UPDATE nom_articole SET cont = '707' WHERE id_articol = 4294507213; ] + ;
|
|
[v_row.id_pol := 41; v_row.id_articol := 4294507213; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ3'; v_row.proc_tvav := 1.19; ] + ;
|
|
[BEGIN v_res := pack_facturare.contabilizeaza_articol(v_row); ] + ;
|
|
[EXCEPTION WHEN OTHERS THEN UPDATE nom_articole SET cont = v_orig_cont WHERE id_articol = 4294507213; RAISE; END; ] + ;
|
|
[UPDATE nom_articole SET cont = v_orig_cont WHERE id_articol = 4294507213; END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
DO Verdict WITH lnOk > 0, "apelul a trecut fara eroare"
|
|
IF lnOk > 0
|
|
DO LeaActTemp WITH -901199
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " ASCD=" + ALLTRIM(crsact.ascd) + " SCC=" + ALLTRIM(crsact.scc) + " ASCC=" + ALLTRIM(crsact.ascc)
|
|
DO AfLog WITH "asteptat S4b: SCD=" + lcN6Scd + " ASCD=" + lcN6Ascd + " SCC=707 ASCC(grup)=" + lcAsc707
|
|
DO Verdict WITH ALLTRIM(crsact.scc) == "707", "SCC = cont dedus (707), nu nota politicii (7015) - tinta S4b regula 2"
|
|
ELSE
|
|
DO Verdict WITH .F., "nicio linie in ACT_TEMP (neasteptat)"
|
|
ENDIF
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 4: articol fara cont (CONT NULL), pe politica 41, fara nicio mutatie. Tinta S4b (regula 3,
|
|
* fallback) = nota politicii = azi (4111/7015) - neschimbat de S4b
|
|
gcCaz = "[caz4-faracont-notapolitica] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901300; ] + ;
|
|
[v_row.id_pol := 41; v_row.id_articol := 4294507216; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ4'; v_row.proc_tvav := 1.19; ] + ;
|
|
[v_res := pack_facturare.contabilizeaza_articol(v_row); END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
DO Verdict WITH lnOk > 0, "apelul a trecut fara eroare"
|
|
IF lnOk > 0
|
|
DO LeaActTemp WITH -901299
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " ASCD=" + ALLTRIM(crsact.ascd) + " SCC=" + ALLTRIM(crsact.scc) + " ASCC=" + ALLTRIM(crsact.ascc)
|
|
DO AfLog WITH "asteptat S4b: SCD=" + lcN6Scd + " ASCD=" + lcN6Ascd + " SCC=" + lcN6Scc + " ASCC=" + lcN6Ascc
|
|
DO Verdict WITH ALLTRIM(crsact.scd) == lcN6Scd AND ALLTRIM(crsact.scc) == lcN6Scc, "SCD/SCC = nota politicii (4111/7015) - neschimbat de S4b"
|
|
ELSE
|
|
DO Verdict WITH .F., "nicio linie in ACT_TEMP (neasteptat)"
|
|
ENDIF
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 5: politica de stoc cu ID_NOTA (al politicii) NULL temporar + articol fara cont. Tinta S4b:
|
|
* FACT-033 (SCC final NULL -> refuz). Azi: nicio garda, linia se scrie cu SCD/SCC NULL (gaura V2)
|
|
gcCaz = "[caz5-politicastoc-faranota-faracont] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; v_orig NUMBER; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901400; ] + ;
|
|
[SELECT id_nota INTO v_orig FROM crm_politici_preturi WHERE id_pol = 41; ] + ;
|
|
[UPDATE crm_politici_preturi SET id_nota = NULL WHERE id_pol = 41; ] + ;
|
|
[v_row.id_pol := 41; v_row.id_articol := 4294507216; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ5'; v_row.proc_tvav := 1.19; ] + ;
|
|
[BEGIN v_res := pack_facturare.contabilizeaza_articol(v_row); ] + ;
|
|
[EXCEPTION WHEN OTHERS THEN UPDATE crm_politici_preturi SET id_nota = v_orig WHERE id_pol = 41; RAISE; END; ] + ;
|
|
[UPDATE crm_politici_preturi SET id_nota = v_orig WHERE id_pol = 41; END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
IF lnOk <= 0
|
|
DO LogErr
|
|
DO Verdict WITH .T., "S4b implementat: garda a refuzat linia fara cont de venit (asteptarea planului)"
|
|
DO VerifMesajFact033 WITH 4294507216, 41
|
|
ELSE
|
|
DO LeaActTemp WITH -901399
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " SCC=" + ALLTRIM(crsact.scc) + " (asteptat S4b: eroare FACT-033, nicio linie)"
|
|
DO Verdict WITH .F., "FACT-033 absenta - linia s-a scris cu SCD/SCC NULL (gaura V2, S4b trebuie sa o astupe)"
|
|
ELSE
|
|
DO Verdict WITH .F., "nicio linie si nicio eroare (neasteptat)"
|
|
ENDIF
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 6: nota politicii cu AL DOILEA rand adaugat in NOTE_CONTABILE (acelasi ID_SET). Tinta S4b:
|
|
* FACT-033 (garda pe nota cu mai mult de un rand). Azi: WHILE cursor_articol%FOUND dubleaza
|
|
* venitul - 2 randuri in ACT_TEMP, fara nicio eroare
|
|
gcCaz = "[caz6-nota-dublu-rand] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; v_orig NUMBER; v_id_nota crm_note_vanzari.id_nota%TYPE; v_id_set crm_note_vanzari.id_set%TYPE; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901500; ] + ;
|
|
[SELECT id_nota INTO v_orig FROM crm_politici_preturi WHERE id_pol = 41; ] + ;
|
|
[INSERT INTO crm_note_vanzari (denumire, id_util, id_sectie, dataora) VALUES ('PROBA S4B CAZ6', 8, 1, SYSDATE) RETURNING id_nota, id_set INTO v_id_nota, v_id_set; ] + ;
|
|
[INSERT INTO note_contabile (explicatie, scd, scc, ordine, cu_tva, ptva, id_set, in_valuta, id_jtva_coloana) VALUES ('PROBA S4B CAZ6 rand1', '461', '7583', 1, 1, 21, v_id_set, 0, 35); ] + ;
|
|
[INSERT INTO note_contabile (explicatie, scd, scc, ordine, cu_tva, ptva, id_set, in_valuta, id_jtva_coloana) VALUES ('PROBA S4B CAZ6 rand2', '462', '7584', 2, 1, 21, v_id_set, 0, 35); ] + ;
|
|
[UPDATE crm_politici_preturi SET id_nota = v_id_nota WHERE id_pol = 41; ] + ;
|
|
[v_row.id_pol := 41; v_row.id_articol := 4294507216; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ6'; v_row.proc_tvav := 1.19; ] + ;
|
|
[BEGIN v_res := pack_facturare.contabilizeaza_articol(v_row); ] + ;
|
|
[EXCEPTION WHEN OTHERS THEN UPDATE crm_politici_preturi SET id_nota = v_orig WHERE id_pol = 41; RAISE; END; ] + ;
|
|
[UPDATE crm_politici_preturi SET id_nota = v_orig WHERE id_pol = 41; END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
IF lnOk <= 0
|
|
DO LogErr
|
|
DO Verdict WITH .T., "S4b implementat: garda a refuzat nota cu mai mult de un rand (asteptarea planului)"
|
|
DO VerifMesajFact033 WITH 4294507216, 41
|
|
ELSE
|
|
LOCAL lnCnt
|
|
lnCnt = 0
|
|
IF USED('crscnt')
|
|
USE IN crscnt
|
|
ENDIF
|
|
lnOk = SQLEXEC(gnHandle, "select count(*) cnt from act_temp where id_act between -901499 and -901498", "crscnt")
|
|
IF lnOk > 0 AND USED('crscnt')
|
|
lnCnt = crscnt.cnt
|
|
ENDIF
|
|
IF USED('crscnt')
|
|
USE IN crscnt
|
|
ENDIF
|
|
DO AfLog WITH "obtinut azi: " + TRANSFORM(lnCnt) + " randuri in ACT_TEMP (asteptat S4b: 0, eroare FACT-033)"
|
|
IF lnCnt = 2
|
|
DO LeaActTemp WITH -901499
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH " rand1: SCD=" + ALLTRIM(crsact.scd) + " SCC=" + ALLTRIM(crsact.scc)
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
DO LeaActTemp WITH -901498
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH " rand2: SCD=" + ALLTRIM(crsact.scd) + " SCC=" + ALLTRIM(crsact.scc)
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
ENDIF
|
|
DO Verdict WITH .F., "FACT-033 absenta - venitul se dubleaza tacut (" + TRANSFORM(lnCnt) + " randuri), S4b trebuie sa refuze"
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 7: acelasi articol D5 (id=1, CONT=371) pe politica REALA (nu de stoc), fara nicio mutatie.
|
|
* Tinta S4b: nota politicii reale, neschimbata - regulile D9/D10 nu ating politicile reale
|
|
gcCaz = "[caz7-articol1-politica-reala] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901600; ] + ;
|
|
[v_row.id_pol := ] + TRANSFORM(lnPolReala1) + [; v_row.id_articol := 1; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ7'; v_row.proc_tvav := 1.19; ] + ;
|
|
[v_res := pack_facturare.contabilizeaza_articol(v_row); END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
DO Verdict WITH lnOk > 0, "apelul a trecut fara eroare"
|
|
IF lnOk > 0
|
|
DO LeaActTemp WITH -901599
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " ASCD=" + ALLTRIM(crsact.ascd) + " SCC=" + ALLTRIM(crsact.scc) + " ASCC=" + ALLTRIM(crsact.ascc)
|
|
DO AfLog WITH "asteptat (azi si dupa S4b, neschimbat): SCD=" + lcScdReal + " ASCD=" + lcAscdReal + " SCC=" + lcSccReal + " ASCC=" + lcAsccReal
|
|
DO Verdict WITH ALLTRIM(crsact.scd) == lcScdReal AND ALLTRIM(crsact.scc) == lcSccReal, "SCD/SCC = nota politicii reale, neschimbat de S4b"
|
|
ELSE
|
|
DO Verdict WITH .F., "nicio linie in ACT_TEMP (neasteptat)"
|
|
ENDIF
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 8: politica 32 (HOTEL TAXE), fara nota deloc. Tinta S4b: FACT-033. Azi: SCD/SCC NULL, fara eroare
|
|
gcCaz = "[caz8-politica32-faranota] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901700; ] + ;
|
|
[v_row.id_pol := 32; v_row.id_articol := ] + TRANSFORM(lnArtPol32) + [; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ8'; v_row.proc_tvav := 1.19; ] + ;
|
|
[v_res := pack_facturare.contabilizeaza_articol(v_row); END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
IF lnOk <= 0
|
|
DO LogErr
|
|
DO Verdict WITH .T., "S4b implementat: garda a refuzat politica 32 fara nota (asteptarea planului)"
|
|
DO VerifMesajFact033 WITH lnArtPol32, 32
|
|
ELSE
|
|
DO LeaActTemp WITH -901699
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " SCC=" + ALLTRIM(crsact.scc) + " (asteptat S4b: eroare FACT-033)"
|
|
ENDIF
|
|
DO Verdict WITH .F., "FACT-033 absenta - politica reala fara nota trece tacut azi"
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 9: politica 33 (HOTEL CAZARE), fara nota deloc. Tinta S4b: FACT-033. Azi: idem caz 8
|
|
gcCaz = "[caz9-politica33-faranota] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901800; ] + ;
|
|
[v_row.id_pol := 33; v_row.id_articol := ] + TRANSFORM(lnArtPol33) + [; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ9'; v_row.proc_tvav := 1.19; ] + ;
|
|
[v_res := pack_facturare.contabilizeaza_articol(v_row); END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
IF lnOk <= 0
|
|
DO LogErr
|
|
DO Verdict WITH .T., "S4b implementat: garda a refuzat politica 33 fara nota (asteptarea planului)"
|
|
DO VerifMesajFact033 WITH lnArtPol33, 33
|
|
ELSE
|
|
DO LeaActTemp WITH -901799
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " SCC=" + ALLTRIM(crsact.scc) + " (asteptat S4b: eroare FACT-033)"
|
|
ENDIF
|
|
DO Verdict WITH .F., "FACT-033 absenta - politica reala fara nota trece tacut azi"
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 10: politica reala D5 (a articolului 1) cu ID_NOTA pus pe NULL temporar. Tinta S4b:
|
|
* FACT-033 (garda "pe orice politica", nu doar de stoc). Azi: SCD/SCC NULL, fara eroare
|
|
gcCaz = "[caz10-politicareala-notanull] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; v_orig NUMBER; ] + ;
|
|
[BEGIN pack_facturare.ntip := 1; pack_facturare.nid_act := -901900; ] + ;
|
|
[SELECT id_nota INTO v_orig FROM crm_politici_preturi WHERE id_pol = ] + TRANSFORM(lnPolReala1) + [; ] + ;
|
|
[UPDATE crm_politici_preturi SET id_nota = NULL WHERE id_pol = ] + TRANSFORM(lnPolReala1) + [; ] + ;
|
|
[v_row.id_pol := ] + TRANSFORM(lnPolReala1) + [; v_row.id_articol := 1; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ10'; v_row.proc_tvav := 1.19; ] + ;
|
|
[BEGIN v_res := pack_facturare.contabilizeaza_articol(v_row); ] + ;
|
|
[EXCEPTION WHEN OTHERS THEN UPDATE crm_politici_preturi SET id_nota = v_orig WHERE id_pol = ] + TRANSFORM(lnPolReala1) + [; RAISE; END; ] + ;
|
|
[UPDATE crm_politici_preturi SET id_nota = v_orig WHERE id_pol = ] + TRANSFORM(lnPolReala1) + [; END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
IF lnOk <= 0
|
|
DO LogErr
|
|
DO Verdict WITH .T., "S4b implementat: garda a refuzat politica reala fara nota (asteptarea planului)"
|
|
DO VerifMesajFact033 WITH 1, lnPolReala1
|
|
ELSE
|
|
DO LeaActTemp WITH -901899
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " SCC=" + ALLTRIM(crsact.scc) + " (asteptat S4b: eroare FACT-033)"
|
|
ENDIF
|
|
DO Verdict WITH .F., "FACT-033 absenta - garda azi nu exista pe nicio politica"
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
* verificare restaurare politica reala (defensiv, inainte de ROLLBACK-ul final)
|
|
lnOk = SQLEXEC(gnHandle, "select id_nota from crm_politici_preturi where id_pol = " + TRANSFORM(lnPolReala1), "crschk")
|
|
IF lnOk > 0 AND USED('crschk') AND RECCOUNT('crschk') = 1
|
|
DO Verdict WITH crschk.id_nota == lnNotaRealaOrig, "restaurare in tranzactie: politica reala " + TRANSFORM(lnPolReala1) + " are din nou id_nota=" + TRANSFORM(lnNotaRealaOrig)
|
|
ENDIF
|
|
IF USED('crschk')
|
|
USE IN crschk
|
|
ENDIF
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* CAZ 11 (aviz, ntip=22): articol CONT=371 (CORESP->707) pe politica 41, nota implicita restaurata
|
|
* (nota 6). SCD e fortat 418 pe avize INDIFERENT de S4b (cod neschimbat); SCC: azi=nota (7015),
|
|
* tinta S4b=dedus (707)
|
|
gcCaz = "[caz11-aviz-scd418-sccdedus] "
|
|
lcSql = [DECLARE v_row vanzari_detalii_temp%ROWTYPE; v_res NUMBER; ] + ;
|
|
[BEGIN pack_facturare.ntip := 22; pack_facturare.nid_act := -902000; ] + ;
|
|
[v_row.id_pol := 41; v_row.id_articol := 2910202427; v_row.cont_venit := NULL; ] + ;
|
|
[v_row.cantitate := 1; v_row.pret := 10; v_row.discount_unitar := 0; v_row.pret_cu_tva := 0; ] + ;
|
|
[v_row.id_valuta := 3; v_row.curs := 1; v_row.multiplicator := 1; v_row.id_gestiune := -1000; ] + ;
|
|
[v_row.in_stoc := 0; v_row.explicatia := 'PROBA S4B CAZ11'; v_row.proc_tvav := 1.19; ] + ;
|
|
[v_res := pack_facturare.contabilizeaza_articol(v_row); END;]
|
|
lnOk = SQLEXEC(gnHandle, lcSql)
|
|
DO Verdict WITH lnOk > 0, "apelul a trecut fara eroare"
|
|
IF lnOk > 0
|
|
DO LeaActTemp WITH -901999
|
|
IF USED('crsact') AND RECCOUNT('crsact') = 1
|
|
DO AfLog WITH "obtinut azi: SCD=" + ALLTRIM(crsact.scd) + " ASCD=" + ALLTRIM(crsact.ascd) + " SCC=" + ALLTRIM(crsact.scc) + " ASCC=" + ALLTRIM(crsact.ascc)
|
|
DO AfLog WITH "asteptat S4b: SCD=418 ASCD=" + lcAsc418 + " SCC=707 ASCC(grup)=" + lcAsc707
|
|
DO Verdict WITH ALLTRIM(crsact.scd) == "418", "SCD=418 pe aviz - neschimbat de S4b (cod deja existent)"
|
|
DO Verdict WITH ALLTRIM(crsact.scc) == "707", "SCC = cont dedus (707), nu nota politicii (7015) - tinta S4b regula 2, valabila si pe aviz"
|
|
ELSE
|
|
DO Verdict WITH .F., "nicio linie in ACT_TEMP (neasteptat)"
|
|
ENDIF
|
|
ENDIF
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
|
|
DO Final
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
PROCEDURE LogErr
|
|
LOCAL laErr[1]
|
|
AERROR(laErr)
|
|
gcErrMsg = TRANSFORM(laErr[2])
|
|
DO AfLog WITH " eroare reala: " + TRANSFORM(laErr[1]) + " / " + gcErrMsg
|
|
ENDPROC
|
|
|
|
PROCEDURE VerifMesajFact033
|
|
* verifica ca mesajul FACT-033 (gcErrMsg, populat de LogErr) numeste articolul si politica -
|
|
* denumirile vin din tabele, in afara pachetului testat
|
|
LPARAMETERS tnIdArticol, tnIdPol
|
|
LOCAL lcDenArt, lcDenPol
|
|
lcDenArt = ""
|
|
lcDenPol = ""
|
|
IF USED('crsver')
|
|
USE IN crsver
|
|
ENDIF
|
|
IF SQLEXEC(gnHandle, "select denumire from nom_articole where id_articol = " + TRANSFORM(tnIdArticol), "crsver") > 0 AND USED('crsver')
|
|
lcDenArt = ALLTRIM(crsver.denumire)
|
|
ENDIF
|
|
IF USED('crsver')
|
|
USE IN crsver
|
|
ENDIF
|
|
IF SQLEXEC(gnHandle, "select nume_lista_preturi from crm_politici_preturi where id_pol = " + TRANSFORM(tnIdPol), "crsver") > 0 AND USED('crsver')
|
|
lcDenPol = ALLTRIM(crsver.nume_lista_preturi)
|
|
ENDIF
|
|
IF USED('crsver')
|
|
USE IN crsver
|
|
ENDIF
|
|
DO Verdict WITH !EMPTY(lcDenArt) AND !EMPTY(lcDenPol) AND lcDenArt $ gcErrMsg AND lcDenPol $ gcErrMsg, ;
|
|
"mesajul FACT-033 numeste articolul (" + lcDenArt + ") si politica (" + lcDenPol + "): " + gcErrMsg
|
|
ENDPROC
|
|
|
|
PROCEDURE LeaActTemp
|
|
LPARAMETERS tnIdAct
|
|
LOCAL lnRet
|
|
IF USED('crsact')
|
|
USE IN crsact
|
|
ENDIF
|
|
lnRet = SQLEXEC(gnHandle, "select nvl(scd,'<NULL>') scd, nvl(ascd,'<NULL>') ascd, nvl(scc,'<NULL>') scc, nvl(ascc,'<NULL>') ascc from act_temp where id_act = " + TRANSFORM(tnIdAct), "crsact")
|
|
RETURN lnRet
|
|
ENDPROC
|
|
|
|
PROCEDURE Verdict
|
|
LPARAMETERS tlCond, tcMsg
|
|
IF tlCond
|
|
gnPass = gnPass + 1
|
|
DO AfLog WITH "PASS: " + gcCaz + tcMsg
|
|
ELSE
|
|
gnFail = gnFail + 1
|
|
DO AfLog WITH "FAIL: " + gcCaz + tcMsg
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROCEDURE AfLog
|
|
LPARAMETERS tcMsg
|
|
STRTOFILE(tcMsg + CHR(13) + CHR(10), gcLog, 1)
|
|
ENDPROC
|
|
|
|
PROCEDURE AfErr
|
|
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
|
DO AfLog WITH "ERROR " + TRANSFORM(tnErr) + " [" + gcCaz + tcProg + ":" + TRANSFORM(tnLine) + "] " + tcMsg
|
|
ENDPROC
|
|
|
|
PROCEDURE Final
|
|
LOCAL lnOk
|
|
gcCaz = "[final] "
|
|
lnOk = SQLEXEC(gnHandle, "ROLLBACK")
|
|
DO AfLog WITH "ROLLBACK lnOk=" + TRANSFORM(lnOk)
|
|
IF TYPE('gnTransOriginal') = 'N'
|
|
SQLSETPROP(gnHandle, "Transactions", gnTransOriginal)
|
|
ENDIF
|
|
DO AfLog WITH "TOTAL PASS=" + TRANSFORM(gnPass) + " FAIL=" + TRANSFORM(gnFail)
|
|
DO AfLog WITH "END " + TTOC(DATETIME())
|
|
QUIT
|
|
ENDPROC
|