* 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