{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP015 OBJETIVO : Generacion ventas por mes PROGRAMADOR : Ing. Juan Soto (Johnny) FECHA REALIZACION : Agosto 08, 2022 ------------------------------------------------------------------------------- } IMPORT JAVA javax.mail.Session GLOBALS "veprgb000.4gl" DEFINE mes,ano INTEGER , fecha_inicial,fecha_final DATE, subject,attachment VARCHAR(100), cuerpo_correo STRING, toEmail string, retorne BOOLEAN DEFINE rutafile,nombreusuario VARCHAR(200) DEFINE xusername,xsmtphost,xsmtpport,xpassword,pusuario,etiqueta STRING MAIN DEFER INTERRUPT CALL STARTLOG("ventasmes.txt") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING toEmail CALL ARG_VAL(4) RETURNING pusuario CALL ARG_VAL(5) RETURNING etiqueta CONNECT TO "smarmotech" USER usuarios USING clave IF pusuario IS NOT NULL THEN SELECT a.nombreusuario INTO nombreusuario FROM seg0001 a WHERE a.usuario = pusuario END IF SELECT * INTO p_companias.* FROM companias CALL ventas_mes() END MAIN FUNCTION ventas_mes() DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename STRING, -- filename of Report Design Document including .4rp extension r_output STRING, -- output format option preview INTEGER -- TRUE/FALSE, to set preview option DEFINE historico CHAR(2) , mensajes STRING, idex1,idx2 VARCHAR(50) DEFINE ventas RECORD mes, moneda VARCHAR(50), bruto, devolucion,neto DEC(12,2), numero_mes SMALLINT END RECORD DEFINE salida,titulomes CHAR(50), gastos_totales,ventas_totales DEC(12,2) #### Pide los parametros para busqueda de informacion LET rutafile ='.\\FILES\\' #SELECT a.fecha_inicio INTO fecha_inicial FROM prdtable a #WHERE a.ano =YEAR(today) AND a.mes = MONTH(today) LET ano = YEAR(TODAY) LET mes = MONTH(TODAY) SELECT a.fecha_inicio,a.fecha_corte INTO fecha_inicial,fecha_final FROM prdtable a WHERE a.ano =ano AND a.mes = mes #LET mes = 1 SELECT a.descrip INTO titulomes FROM mestable a WHERE a.mes = mes # Buscando Pilas vendidas del ano actual IF pusuario IS NULL THEN LET selec = " select a.mes, a.moneda,sum(a.neto),'0','0',a.numero_mes,a.idventas from ventas_facturas a where a.ano = ? and a.numero_mes <= ? and a.tipotransaccion='VENTAS' AND a.clase not in ('AGREGADO','MATERIAL SIN PROCESAR') group by a.mes, a.idventas,a.numero_mes,a.moneda UNION select a.mes, a.moneda,'0',SUM(a.neto),'0',a.numero_mes,a.idventas from ventas_facturas a where a.ano = ? and a.numero_mes <= ? and a.tipotransaccion='NOTAS CREDITOS' AND a.clase not in ('AGREGADO','MATERIAL SIN PROCESAR') group by a.mes, a.idventas,numero_mes,a.moneda UNION select a.mes, RTRIM(a.moneda)+' '+'AGREGADOS',sum(a.neto),'0','0',a.numero_mes,a.idventas from ventas_facturas a where a.ano = ? and a.numero_mes <= ? and a.tipotransaccion='VENTAS' AND a.clase in ('AGREGADO','MATERIAL SIN PROCESAR') group by a.mes, a.idventas,a.numero_mes,a.moneda UNION select a.mes, RTRIM(a.moneda)+' '+'AGREGADOS','0',SUM(a.neto),'0',a.numero_mes,a.idventas from ventas_facturas a where a.ano = ? and a.numero_mes <= ? and a.tipotransaccion='NOTAS CREDITOS' AND a.clase in ('AGREGADO','MATERIAL SIN PROCESAR') group by a.mes, a.idventas,numero_mes,a.moneda order by a.numero_mes,a.idventas " ELSE LET selec = "select a.mes, a.moneda,sum(a.neto),'0','0',a.numero_mes,a.idventas from ventas_facturas a,seg0007 b where a.ano = ? and a.numero_mes <= ? and a.tipotransaccion='VENTAS' and b.usuario = ? AND a.codigovendedor = b.sec_vend AND a.clase NOT in ('AGREGADO','MATERIAL SIN PROCESAR') group by a.mes, a.idventas,a.numero_mes,a.moneda UNION select a.mes, a.moneda,'0',SUM(a.neto),'0',a.numero_mes,a.idventas from ventas_facturas a,seg0007 b where a.ano = ? and a.numero_mes <= ? and a.tipotransaccion='NOTAS CREDITOS' and b.usuario = ? AND a.codigovendedor = b.sec_vend AND a.clase NOT in ('AGREGADO','MATERIAL SIN PROCESAR') group by a.mes, a.idventas,numero_mes,a.moneda UNION select a.mes, a.moneda,sum(a.neto),'0','0',a.numero_mes,a.idventas from ventas_facturas a,seg0007 b where a.ano = ? and a.numero_mes <= ? and a.tipotransaccion='VENTAS' and b.usuario = ? AND a.codigovendedor = b.sec_vend AND a.clase in ('AGREGADO','MATERIAL SIN PROCESAR') group by a.mes, a.idventas,a.numero_mes,a.moneda UNION select a.mes, a.moneda,'0',SUM(a.neto),'0',a.numero_mes,a.idventas from ventas_facturas a,seg0007 b where a.ano = ? and a.numero_mes <= ? and a.tipotransaccion='NOTAS CREDITOS' and b.usuario = ? AND a.codigovendedor = b.sec_vend AND a.clase in ('AGREGADO','MATERIAL SIN PROCESAR') group by a.mes, a.idventas,numero_mes,a.moneda order by a.numero_mes,a.idventas " END IF PREPARE busca_act FROM selec DECLARE act2 SCROLL CURSOR FOR busca_act IF pusuario IS NULL THEN OPEN act2 USING ano,mes,ano,mes,ano,mes,ano,mes ELSE OPEN act2 USING ano,mes,pusuario,ano,mes,pusuario,ano,mes,pusuario,ano,mes,pusuario END IF LET salida = "ventas_mes.4rp" IF NOT fgl_report_loadCurrentSettings(salida) THEN EXIT PROGRAM END IF CALL fgl_report_selectDevice("PDF") CALL fgl_report_selectPreview(FALSE) LET attachment = rutafile CLIPPED,'ventasmes.pdf' CALL fgl_report_setOutputFileName(attachment) { CALL fgl_report_configureXLSXDevice ( NULL, #fromPage INTEGER, NULL, #toPage INTEGER, TRUE, #removeWhitespace BOOLEAN, NULL, #ignoreRowAlignment BOOLEAN, NULL, #ignoreColumnAlignment BOOLEAN, NULL, #removeBackgroundImages BOOLEAN, TRUE ) #mergePages TRUE } LET handler = fgl_report_commitCurrentSettings() START REPORT ventasmes TO XML HANDLER HANDLER FOREACH act2 INTO ventas.* LET idex1 = ventas.numero_mes CLIPPED LET idx2 = ventas.numero_mes USING "<<<","-", ventas.moneda CLIPPED LET ventas.devolucion = ventas.devolucion * -1 LET ventas.neto = ventas.bruto - ventas.devolucion OUTPUT TO REPORT ventasmes(ventas.*,idex1,idx2) END FOREACH FINISH REPORT ventasmes #LET toEmail = 'jsoto@marmotech.com.do' LET xusername ='notificacion@marmotech.com.do' LET xsmtphost ='smtp.office365.com' LET xsmtpport = '587' LET xpassword = 'Lmmjvsd2020' LET subject = 'VENTAS DIARIAS Y ACUMULADAS HASTA EL MES DE ',titulomes CLIPPED," DEL PERIODO ",ano USING "<<<<<", " ",etiqueta CLIPPED LET cuerpo_correo="
", "