{ PROGRAMA: CCPRRP054 OBJETIVO: INGRESOS POR USUARIO PROGRAMADOR: ING. JUAN SOTO FECHA : 3/11/2022 } GLOBALS "ccprgb000.4gl" DEFINE fecha1,fecha2 DATE MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL STARTLOG("ccrp054.TXT") CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave CALL emailcorreo() END MAIN FUNCTION emailcorreo() DEFINE HANDLER om.SaxDocumentHandler, archivo STRING, xmes,xano,idx SMALLINT, xporc_itbis DEC(12,2) DEFINE xdatos RECORD tipo_doc CHAR(2), num_doc INT, fecha DATE, vendedor VARCHAR(100), documento_ref INT, aplica_a INT, valor DEC(12,2), equipos VARCHAR(100), cliente VARCHAR(100), tipo_cliente,sec_cliente INT, xtibis CHAR(1), tipo_apl CHAR(3) END RECORD SELECT a.nombre INTO p_companias.nombre FROM companias a WHERE cod_comp = 1 OPEN WINDOW x1 WITH FORM "ccfmrp054" INPUT BY NAME fecha1,fecha2 BEFORE INPUT CALL cequipos() AFTER INPUT IF INT_FLAG THEN CALL msg(2) EXIT INPUT END IF IF fecha2 < fecha1 THEN CALL msg(51) NEXT FIELD fecha1 END IF LET xmes = MONTH(fecha1) LET xano = YEAR(fecha1) END INPUT CONSTRUCT criterio ON b.depto,a.cod_emp_sec FROM equipos,kvendedor BEFORE CONSTRUCT CALL cvendedor(usuarios) AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT IF INT_FLAG THEN LET INT_FLAG = FALSE EXIT PROGRAM END IF LET selec = "SELECT a.tipo_doc,a.num_doc ,CONVERT(char(10),a.fecha_orig,103), ISNULL(RTRIM(e.nom1_emp),1 ) + ' '+ISNULL(RTRIM(e.apell1_Emp),' '), a.documento_ref,a.aplica_a, SUM(a.Valor*c.tasa),d.nombre,f.nombre,a.tipo_cliente, a.sec_cliente,g.paga_itbis from cctb00001 a,seg0000 b LEFT OUTER JOIN seg0008 d on b.depto = d.depto,cgtb00084 c,adtb00003 e, vetb00004 f, vetb00060 g where a.fecha_orig BETWEEN ? AND ? AND a.tipo_Doc in ('PG','PC') AND c.mes = ? AND c.ano = ? AND a.tipo_cliente = c.tipo_cliente AND f.tipo_cliente = g.tipo_cliente AND a.tipo_cliente = f.tipo_cliente AND a.sec_cliente = f.sec_cliente AND a.status_t is null AND a.cod_emp_sec = b.sec_vend AND a.cod_emp_sec = e.num_emp AND ",criterio CLIPPED, " GROUP BY a.tipo_doc,a.num_doc,a.fecha_orig,e.nom1_emp,e.apell1_emp,a.documento_ref,a.aplica_a, d.nombre,f.nombre,a.tipo_cliente,a.sec_cliente,g.paga_itbis ", " UNION ", "SELECT a.tipo_doc,a.num_doc ,CONVERT(char(10),a.fecha_orig,103), ISNULL(RTRIM(e.nom1_emp),1 ) + ' '+ISNULL(RTRIM(e.apell1_Emp),' '), a.documento_Ref,a.aplica_a, SUM(a.Valor*c.tasa),d.nombre,f.nombre,a.tipo_cliente, a.sec_cliente,g.paga_itbis from cctb00001 a,seg0000 b LEFT OUTER JOIN seg0008 d on b.depto = d.depto,cgtb00084 c,adtb00003 e, vetb00004 f, vetb00060 g where a.fecha_orig BETWEEN ? AND ? AND a.tipo_Doc in ('AV') AND a.num_doc = a.aplica_a AND c.mes = ? AND c.ano = ? AND a.tipo_cliente = c.tipo_cliente AND f.tipo_cliente = g.tipo_cliente AND a.tipo_cliente = f.tipo_cliente AND a.sec_cliente = f.sec_cliente AND a.status_t is null AND a.cod_emp_sec = b.sec_vend AND a.cod_emp_sec = e.num_emp AND ",criterio CLIPPED, " GROUP BY a.tipo_doc,a.num_doc,a.fecha_orig,e.nom1_emp,e.apell1_emp,a.documento_ref,a.aplica_a, d.nombre,f.nombre,a.tipo_cliente,a.sec_cliente,g.paga_itbis" PREPARE comando FROM selec DECLARE informacion CURSOR FOR comando OPEN informacion USING fecha1,fecha2,xmes,xano,fecha1,fecha2,xmes,xano LET archivo = "ccprrp054.4rp" SELECT a.itbi INTO xporc_itbis FROM vetb00019 a LET idx = 1 FOREACH informacion INTO xdatos.* IF idx = 1 THEN IF fgl_report_loadCurrentSettings(archivo) THEN -- load the .4rp file CALL fgl_report_selectDevice("SVG") CALL fgl_report_selectPreview(true) # CALL fgl_report_setOutputFileName("emailCobros.pdf") LET xdatos.cliente = xdatos.tipo_cliente USING "&&","-" LET handler = fgl_report_commitCurrentSettings() -- commit changes START REPORT r_email TO XML HANDLER HANDLER ELSE EXIT PROGRAM END IF END IF IF xdatos.tipo_doc = 'PG' OR xdatos.tipo_doc = 'PC' THEN LET xdatos.tipo_apl = 'FT-' LET xdatos.valor = xdatos.valor*-1 END IF IF xdatos.tipo_doc = 'NC' THEN LET xdatos.tipo_apl = 'FT-' END IF IF xdatos.tipo_doc = 'AV' THEN LET xdatos.tipo_apl = 'CT-' END IF IF xdatos.xtibis = "S" THEN LET xdatos.valor = xdatos.valor / (1+(xporc_itbis/100)) END IF LET xdatos.cliente = xdatos.tipo_cliente USING "&&","-",xdatos.sec_cliente USING "<<<<<<<"," ", xdatos.cliente CLIPPED OUTPUT TO REPORT r_email(xdatos.*) LET idx = idx + 1 END FOREACH IF idx > 1 THEN FINISH REPORT r_email ELSE CALL fgl_winmessage("INFO","NO EXISTEN DATOS CON ESTA CONDICION","INFO") END IF END FUNCTION REPORT r_email(zdatos) DEFINE zdatos RECORD tipo_doc CHAR(2), num_doc INT, fecha DATE, vendedor VARCHAR(100), documento_ref INT, aplica_a INT, valor DEC(12,2), equipos VARCHAR(100), cliente VARCHAR(100), tipo_cliente,sec_cliente INT, xibis CHAR(1), tipo_apl CHAR(3) END RECORD DEFINE zreferencia VARCHAR(50), total1,total2,total_general1,total_General2, total_general3,etotal1,etotal2,total3 DEC(12,2) ORDER BY zdatos.equipos,zdatos.vendedor,zdatos.num_doc FORMAT FIRST PAGE HEADER LET total_general1=0 LET total_General2=0 LET total_general3=0 BEFORE GROUP OF zdatos.equipos LET etotal2 = 0 PRINTX zdatos.equipos BEFORE GROUP OF zdatos.vendedor LET etotal1 = 0 BEFORE GROUP OF zdatos.num_doc LET total2 = 0 ON EVERY ROW IF zdatos.tipo_doc = 'AV' THEN LET zreferencia=zdatos.documento_ref END IF IF zdatos.tipo_doc = 'PG' OR zdatos.tipo_doc = 'NC' OR zdatos.tipo_doc='PC' THEN LET zreferencia = zdatos.aplica_a END IF LET total2 = total2 + zdatos.valor # DOCUMENTO LET etotal1 = etotal1 + zdatos.valor # VENDEDOR LET etotal2 = etotal2 + zdatos.valor # EQUIPO LET total_general1 = total_general1 + zdatos.valor PRINTX zdatos.tipo_doc,zdatos.num_doc,zdatos.documento_ref,zdatos.vendedor,zdatos.valor, p_companias.nombre, total1,total2,zreferencia,zdatos.cliente,etotal2, total_general1,total_general3,total3,fecha1,fecha2,etotal1, zdatos.tipo_apl END REPORT