Files
comun/utile/Teste/facturare_unificat/test_jtva_v2_constatare.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

146 lines
6.0 KiB
Plaintext

* test_jtva_v2_constatare.prg
* Headless, read-only, fara formulare, fara emitere: constatare pe date deja existente in
* MARIUSM_AUTO@ROA_CENTRAL despre tiparul ID_JTVA_COLOANA/PROC_TVA/TAXCODE gol pe documentele
* emise de frm_facturare_articole2 (v2), gasit in S6-2 pe comanda SSS656/id_vanzare=1114.
* Nu emite nimic, doar SELECT.
*
* Rulare: vfp9.exe -A -T "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\test_jtva_v2_constatare.prg"
* Log: D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_jtva_v2_constatare.log
SET SAFETY OFF
SET TALK OFF
CLOSE DATABASES
PUBLIC gcLog
gcLog = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\test_jtva_v2_constatare.log"
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog)
TRY
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 JLog WITH 'EROARE: conectare Oracle esuata'
DO JFinal
ENDIF
DO JLog WITH 'ENV OK gnHandle=' + TRANSFORM(gnHandle)
DO JLog WITH CHR(13) + CHR(10) + '===== 1. cele 4 documente cunoscute (VANZARI + rezumat VANZARI_DETALII + rezumat ACT) ====='
DO Raporteaza WITH 1111
DO Raporteaza WITH 1112
DO Raporteaza WITH 1113
DO Raporteaza WITH 1114
DO JLog WITH CHR(13) + CHR(10) + '===== 2. esantion productie recenta (v1), serie <> SSS, tip in (2,3), ordonat id_vanzare desc ====='
LOCAL lcSql
lcSql = [select id_vanzare, tip, id_part, serie_act, numar_act as nract, total_fara_tva, total_tva from vanzari ] + ;
[where serie_act <> 'SSS' and tip in (2,3) and rownum <= 15 order by id_vanzare desc]
IF goExecutor.oExecute(lcSql, 'crsesantion') < 0
DO JLog WITH 'EROARE esantion productie: ' + goExecutor.oPrelucrareEroare()
ELSE
SELECT crsesantion
SCAN
DO Raporteaza WITH id_vanzare
ENDSCAN
USE IN crsesantion
ENDIF
DO JLog WITH CHR(13) + CHR(10) + '===== 3. documente istorice ale clientilor 2873 si 2874 (test decisiv client vs formular) ====='
lcSql = [select id_vanzare, tip, id_part, serie_act, numar_act as nract, total_fara_tva, total_tva from vanzari ] + ;
[where id_part in (2873,2874) and rownum <= 20 order by id_part, id_vanzare desc]
IF goExecutor.oExecute(lcSql, 'crsclienti') < 0
DO JLog WITH 'EROARE esantion clienti: ' + goExecutor.oPrelucrareEroare()
ELSE
SELECT crsclienti
SCAN
DO Raporteaza WITH id_vanzare
ENDSCAN
USE IN crsclienti
ENDIF
DO JFinal
CATCH TO loExc
DO JLog WITH 'CATCH TOP-LEVEL ErrorNo=' + TRANSFORM(loExc.ErrorNo) + ' Message=' + loExc.Message + ;
' Proc=' + loExc.Procedure + ' Line=' + TRANSFORM(loExc.LineNo)
DO JFinal
ENDTRY
QUIT
*----------------------------------------------------------------------------------------
* Raporteaza: pentru un id_vanzare dat, scrie in log randul VANZARI relevant, rezumatul
* VANZARI_DETALII (jonctiune pe id_vanzare) si rezumatul ACT (jonctiune pe serie_act+nract).
PROCEDURE Raporteaza
LPARAMETERS tnIdVanzare
LOCAL lcSql, lcSerieAct, lnNract, lcJtvaSet, lcTaxSet
lcSql = [select id_vanzare, tip, id_part, serie_act, numar_act as nract, total_fara_tva, total_tva, ] + ;
[total_cu_tva from vanzari where id_vanzare = ] + TRANSFORM(tnIdVanzare)
IF goExecutor.oExecute(lcSql, 'crsv') < 0
DO JLog WITH 'EROARE VANZARI id_vanzare=' + TRANSFORM(tnIdVanzare) + ': ' + goExecutor.oPrelucrareEroare()
RETURN
ENDIF
IF !USED('crsv') OR RECCOUNT('crsv') = 0
DO JLog WITH 'VANZARI id_vanzare=' + TRANSFORM(tnIdVanzare) + ' NEGASIT'
IF USED('crsv')
USE IN crsv
ENDIF
RETURN
ENDIF
SELECT crsv
lcSerieAct = ALLTRIM(NVL(serie_act, ''))
lnNract = NVL(nract, 0)
DO JLog WITH 'VANZARI id_vanzare=' + TRANSFORM(tnIdVanzare) + ' tip=' + TRANSFORM(tip) + ;
' id_part=' + TRANSFORM(id_part) + ' serie_act=' + lcSerieAct + ' nract=' + TRANSFORM(lnNract) + ;
' total_fara_tva=' + TRANSFORM(total_fara_tva) + ' total_tva=' + TRANSFORM(total_tva) + ;
' total_cu_tva=' + TRANSFORM(total_cu_tva)
USE IN crsv
* rezumat VANZARI_DETALII (jonctiune pe id_vanzare)
lcSql = [select count(*) as nlinii, sum(nvl(proc_tvav,0)) as sumproc, ] + ;
[min(nvl(id_jtva_coloana,-1)) as minjtva, max(nvl(id_jtva_coloana,-1)) as maxjtva, ] + ;
[sum(case when id_jtva_coloana is null then 1 else 0 end) as njtvanull, ] + ;
[sum(case when taxcode is null then 1 else 0 end) as ntaxnull from vanzari_detalii ] + ;
[where sters = 0 and id_vanzare = ] + TRANSFORM(tnIdVanzare)
IF goExecutor.oExecute(lcSql, 'crsd') < 0
DO JLog WITH ' EROARE VANZARI_DETALII: ' + goExecutor.oPrelucrareEroare()
ELSE
SELECT crsd
DO JLog WITH ' VANZARI_DETALII linii=' + TRANSFORM(nlinii) + ' sum_proc_tvav=' + TRANSFORM(sumproc) + ;
' id_jtva_coloana[min,max]=[' + TRANSFORM(minjtva) + ',' + TRANSFORM(maxjtva) + ']' + ;
' linii_jtva_null=' + TRANSFORM(njtvanull) + ' linii_taxcode_null=' + TRANSFORM(ntaxnull)
USE IN crsd
ENDIF
* rezumat ACT (jonctiune pe serie_act+nract)
IF EMPTY(lcSerieAct) OR lnNract = 0
DO JLog WITH ' ACT: fara serie_act/nract, sarit'
RETURN
ENDIF
lcSql = [select count(*) as nlinii, sum(nvl(suma,0)) as sumasuma, ] + ;
[min(nvl(id_jtva_coloana,-1)) as minjtva, max(nvl(id_jtva_coloana,-1)) as maxjtva, ] + ;
[sum(case when id_jtva_coloana is null then 1 else 0 end) as njtvanull, ] + ;
[sum(nvl(proc_tva,0)) as sumproctva, ] + ;
[sum(case when taxcode is null then 1 else 0 end) as ntaxnull from act where sters = 0 ] + ;
[and serie_act = '] + lcSerieAct + [' and nract = ] + TRANSFORM(lnNract)
IF goExecutor.oExecute(lcSql, 'crsa') < 0
DO JLog WITH ' EROARE ACT: ' + goExecutor.oPrelucrareEroare()
ELSE
SELECT crsa
DO JLog WITH ' ACT linii=' + TRANSFORM(nlinii) + ' suma=' + TRANSFORM(sumasuma) + ;
' id_jtva_coloana[min,max]=[' + TRANSFORM(minjtva) + ',' + TRANSFORM(maxjtva) + ']' + ;
' linii_jtva_null=' + TRANSFORM(njtvanull) + ' sum_proc_tva=' + TRANSFORM(sumproctva) + ;
' linii_taxcode_null=' + TRANSFORM(ntaxnull)
USE IN crsa
ENDIF
ENDPROC
PROCEDURE JLog
LPARAMETERS tcMsg
STRTOFILE(tcMsg + CHR(13) + CHR(10), gcLog, 1)
ENDPROC
PROCEDURE JFinal
DO JLog WITH 'END ' + TTOC(DATETIME())
QUIT
ENDPROC