* test_vctva_prelucreaza.prg * Proba tintita pentru reparatia din docs\propunere_comparatie_coloane_crsfactura.md sectiunea 3.1: * vpretctva / vdiscountctva trebuie sa iasa din prelucreaza_facturacrs exact din Pret_val / * discount_unitar_val, nu 0 tacit. Verifica si ca ramura in lei si campurile de dupa punctele de * inserare din lista pozitionala INSERT ... SELECT au ramas neschimbate, plus prezenta coloanei * NUME_GESTIUNE in VVANZARI_ARTICOLE (reparatia din sectiunea 3.2). SET SAFETY OFF SET TALK OFF PUBLIC gcErrLog, gnPass, gnFail gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_vctva_prelucreaza_log.txt' STRTOFILE('start ' + TRANSFORM(DATETIME()) + 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 gnPass = 0 gnFail = 0 STRTOFILE('precizii: gnPVal=' + TRANSFORM(gnPVal) + ' gnPPretV=' + TRANSFORM(gnPPretV) + ' gnPc=' + TRANSFORM(gnPc) + CHR(13) + CHR(10), gcErrLog, 1) DO CazValutaCuTva DO CazValutaFaraTva DO CazLei DO ColoanaNumeGestiune STRTOFILE(CHR(13) + CHR(10) + 'REZULTAT: pass=' + TRANSFORM(gnPass) + ' fail=' + TRANSFORM(gnFail) + CHR(13) + CHR(10), gcErrLog, 1) QUIT PROCEDURE CreeazaSursa LPARAMETERS tnPretCuTva, tnTipValuta, tnPret, tnDiscount, tnPretVal, tnDiscountVal IF USED('crssursavctva') USE IN crssursavctva ENDIF CREATE CURSOR crssursavctva (id_vanzare_det N(10), id_articol N(10), explicatie M, denumire C(100), ; lot C(20) NULL, serie C(100) NULL, codmat C(50), codmatc C(50), id_jtva_coloana N(10) NULL, ; id_jtva_coloana_ex N(10) NULL, taxcode N(6) NULL, codmatf C(50), codbare C(50), ; pret_achizitie N(20,6), cantitate N(20,6), proc_tvav N(20,4), um C(10), cod_um_iso C(5), ; pret_cu_tva N(1), pret N(20,6), discount_unitar N(20,6), pret_val N(20,6), discount_unitar_val N(20,6), ; id_vanzare_set N(20) NULL, id_gestiune N(20) NULL, id_ctr N(20) NULL, numar_contract C(100) NULL, ; id_valuta N(10), tip_valuta N(1), curs N(20,4), multiplicator N(10), nume_val C(100), ; codnc8 V(20) NULL, codcpv V(20) NULL) INSERT INTO crssursavctva (id_vanzare_det, id_articol, explicatie, denumire, lot, serie, codmat, codmatc, ; id_jtva_coloana, id_jtva_coloana_ex, taxcode, codmatf, codbare, pret_achizitie, cantitate, proc_tvav, ; um, cod_um_iso, pret_cu_tva, pret, discount_unitar, pret_val, discount_unitar_val, id_vanzare_set, ; id_gestiune, id_ctr, numar_contract, id_valuta, tip_valuta, curs, multiplicator, nume_val, codnc8, codcpv) ; VALUES (77, 4242, 'expl', 'ARTICOL PROBA', 'L1', 'S1', 'CM1', 'CMC1', ; 11, .NULL., 0, 'CMF1', 'CB1', 5.000000, 2.000000, 1.1900, 'BUC', 'H87', ; tnPretCuTva, tnPret, tnDiscount, tnPretVal, tnDiscountVal, 900, ; 31, 55, 'CTR-1', 3, tnTipValuta, 4.9000, 1, 'EUR', 'NC8', 'CPV') creeaza_facturacrs('crsfactura') prelucreaza_facturacrs('crssursavctva', 'crsfactura', 0, 0, 0) SELECT crsfactura GO TOP ENDPROC PROCEDURE CazValutaCuTva STRTOFILE(CHR(13) + CHR(10) + '--- CAZ 1: valuta (tip_valuta=1) + pret_cu_tva=1' + CHR(13) + CHR(10), gcErrLog, 1) DO CreeazaSursa WITH 1, 1, 490.000000, 49.000000, 100.000000, 10.000000 DO Asserta WITH 'vpretctva = Round(Pret_val)', crsfactura.vpretctva, ROUND(100.000000, gnPVal) DO Asserta WITH 'vdiscountctva = Round(discount_unitar_val)', crsfactura.vdiscountctva, ROUND(10.000000, gnPVal) DO Asserta WITH 'pretctva (lei, neschimbat)', crsfactura.pretctva, ROUND(490.000000, gnPPretV) DO Asserta WITH 'discountctva (lei, neschimbat)', crsfactura.discountctva, ROUND(49.000000, gnPPretV) DO ProbeazaPozitii ENDPROC PROCEDURE CazValutaFaraTva STRTOFILE(CHR(13) + CHR(10) + '--- CAZ 2: valuta (tip_valuta=1) + pret_cu_tva=0' + CHR(13) + CHR(10), gcErrLog, 1) DO CreeazaSursa WITH 0, 1, 490.000000, 49.000000, 100.000000, 10.000000 DO Asserta WITH 'vpretctva = pret_val + tva', crsfactura.vpretctva, ; ROUND(100.000000, gnPVal) + ROUND(ROUND(100.000000, gnPVal) * (1.1900 - 1), gnPVal) DO Asserta WITH 'vdiscountctva = 0 pe ramura fara tva', crsfactura.vdiscountctva, 0.000 DO Asserta WITH 'vpretftva = pret_val', crsfactura.vpretftva, ROUND(100.000000, gnPVal) DO Asserta WITH 'vdiscountftva = discount_unitar_val', crsfactura.vdiscountftva, ROUND(10.000000, gnPVal) DO ProbeazaPozitii ENDPROC PROCEDURE CazLei STRTOFILE(CHR(13) + CHR(10) + '--- CAZ 3: lei (tip_valuta=0) + pret_cu_tva=1' + CHR(13) + CHR(10), gcErrLog, 1) DO CreeazaSursa WITH 1, 0, 200.000000, 20.000000, 0.000000, 0.000000 DO Asserta WITH 'pretctva', crsfactura.pretctva, ROUND(200.000000, gnPPretV) DO Asserta WITH 'discountctva', crsfactura.discountctva, ROUND(20.000000, gnPPretV) DO Asserta WITH 'vpretctva = 0 (fara valuta)', crsfactura.vpretctva, 0.000 DO Asserta WITH 'vdiscountctva = 0 (fara valuta)', crsfactura.vdiscountctva, 0.000 DO Asserta WITH 'vpretftva = 0 (fara valuta)', crsfactura.vpretftva, 0.000 DO Asserta WITH 'vdiscountftva = 0 (fara valuta)', crsfactura.vdiscountftva, 0.000 DO ProbeazaPozitii ENDPROC *!* campurile de DUPA cele doua puncte de inserare din lista pozitionala INSERT ... SELECT: *!* o nepotrivire de ordine le-ar muta tacit valorile PROCEDURE ProbeazaPozitii DO Asserta WITH 'pozitie: id_set_fact', crsfactura.id_set_fact, 900 DO Asserta WITH 'pozitie: gestionabil', crsfactura.gestionabil, 1 DO Asserta WITH 'pozitie: id_ctr', crsfactura.id_ctr, 55 DO Asserta WITH 'pozitie: id_valuta', crsfactura.id_valuta, 3 DO Asserta WITH 'pozitie: curs', crsfactura.curs, 4.9000 DO Asserta WITH 'pozitie: multiplicator', crsfactura.multiplicator, 1 DO AssertaC WITH 'pozitie: numar_contract', ALLTRIM(NVL(crsfactura.numar_contract, '')), 'CTR-1' DO AssertaC WITH 'pozitie: nume_val', ALLTRIM(NVL(crsfactura.nume_val, '')), 'EUR' DO AssertaC WITH 'pozitie: codnc8', ALLTRIM(NVL(crsfactura.codnc8, '')), 'NC8' DO AssertaC WITH 'pozitie: codcpv', ALLTRIM(NVL(crsfactura.codcpv, '')), 'CPV' ENDPROC PROCEDURE ColoanaNumeGestiune STRTOFILE(CHR(13) + CHR(10) + '--- CAZ 4: VVANZARI_ARTICOLE expune NUME_GESTIUNE' + CHR(13) + CHR(10), gcErrLog, 1) LOCAL lnS lnS = goExecutor.oExecute("select column_name from all_tab_columns where owner = 'MARIUSM_AUTO' and table_name = 'VVANZARI_ARTICOLE' and column_name = 'NUME_GESTIUNE'", 'crsNG') DO Asserta WITH 'NUME_GESTIUNE in VVANZARI_ARTICOLE', IIF(USED('crsNG'), RECCOUNT('crsNG'), 0), 1 IF USED('crsNG') USE IN crsNG ENDIF goExecutor.oReset() ENDPROC PROCEDURE Asserta LPARAMETERS tcNume, tnGasit, tnAsteptat IF ABS(tnGasit - tnAsteptat) < 0.0000005 gnPass = gnPass + 1 STRTOFILE(' OK ' + tcNume + ' = ' + TRANSFORM(tnGasit) + CHR(13) + CHR(10), gcErrLog, 1) ELSE gnFail = gnFail + 1 STRTOFILE(' FAIL ' + tcNume + ': gasit ' + TRANSFORM(tnGasit) + ', asteptat ' + TRANSFORM(tnAsteptat) + CHR(13) + CHR(10), gcErrLog, 1) ENDIF ENDPROC PROCEDURE AssertaC LPARAMETERS tcNume, tcGasit, tcAsteptat IF tcGasit == tcAsteptat gnPass = gnPass + 1 STRTOFILE(' OK ' + tcNume + ' = [' + tcGasit + ']' + CHR(13) + CHR(10), gcErrLog, 1) ELSE gnFail = gnFail + 1 STRTOFILE(' FAIL ' + tcNume + ': gasit [' + tcGasit + '], asteptat [' + tcAsteptat + ']' + CHR(13) + CHR(10), gcErrLog, 1) ENDIF ENDPROC PROCEDURE test_error_handler LPARAMETERS tnErr, tcMsg, tcProg, tnLine STRTOFILE('EROARE #' + TRANSFORM(tnErr) + ': ' + tcMsg + ' in ' + tcProg + ' linia ' + TRANSFORM(tnLine) + CHR(13) + CHR(10), gcErrLog, 1) ENDPROC