Files
comun/utile/Teste/editare_factura/test_vctva_prelucreaza.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

156 lines
7.6 KiB
Plaintext

* 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