Files
MBS/PROYECTO/vedir/veprrp015_4.4gl
T

296 lines
9.6 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP015
OBJETIVO : Relacion de Ventas Brutas y Reales, Margen de ventas.
PROGRAMADOR : Ing. Juan Soto (Johnny)
FECHA REALIZACION : Agosto 28, 2021
-------------------------------------------------------------------------------
}
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 VARCHAR(200)
DEFINE xusername, xsmtphost, xsmtpport, xpassword STRING
MAIN
DEFER INTERRUPT
CALL STARTLOG("ventasemail.txt")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING toEmail
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL veprrp015()
END MAIN
FUNCTION veprrp015()
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
DEFINE ventas RECORD
origen VARCHAR(100),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(4),
ventas CHAR(1),
cantidad_vend DECIMAL(12, 2),
valor DECIMAL(12, 2),
precio, precio_neto, porc_desc DECIMAL(12, 2),
sucid SMALLINT,
factura INT,
costo DEC(12, 5),
tasa, margen, porc_margen_c, porc_margen_v DEC(12, 2),
cliente VARCHAR(100),
vendedor VARCHAR(100)
END RECORD
### Definicion del registro a exportar al reporte
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) - 1
# LET ano = 2025
# LET mes = 12
SELECT a.fecha_inicio, a.fecha_corte
INTO fecha_inicial, fecha_final
FROM prdtable a
WHERE a.ano = ano AND a.mes = mes
SELECT a.descrip INTO titulomes FROM mestable a WHERE a.mes = mes
{#DEDTERMINA LOS GASTOS TOTALES
SELECT SUM(a.debito-a.credito) INTO gastos_totales FROM cgtb00004 a
WHERE a.fecha BETWEEN fecha_inicial AND fecha_final AND
a.departamento BETWEEN 4000 AND 49999 AND
a.cuenta_no[1] = '7' AND
a.status_t IS null
}
#LET fecha_inicial = today-29
# Buscando Pilas vendidas del ano actual
LET selec =
"SELECT f1.descripcion as origen,f.cod_n,f.cod_grupo,f.cod_tipo,f.cod_sec,f.descrip_esp,f.unidad_med,
c.ventas,c.sucid,b.factura,b.precio*d.tasa as precioventa,(b.precio -(b.precio *(b.cantidad_2/100)))*d.tasa as precioneto,
k.material+k.labor+k.gastos as costo,b.cantidad as cantidadVendida,d.tasa as tasa,
b.cantidad_2,cli.nombre,RTRIM(vend.nom1_emp) + ' '+vend.apell1_emp,f.cod_cia
from iptb00020 a LEFT OUTER JOIN vetb00003 b ON a.cod_n = b.cod_n
INNER JOIN iptb00002 f ON a.cod_n = f.cod_n and b.cod_grupo = f.cod_grupo and f.cod_tipo = b.cod_tipo and f.cod_sec =b.cod_Sec
INNER JOIN iptb00022 f1 ON f1.cod_cia = f.cod_cia
CROSS JOIN prdtable e
INNER JOIN vetb00002 c ON c.factura = b.factura AND c.sucid = b.sucid AND c.fecha_factura between e.fecha_inicio and e.fecha_corte AND
e.ano = ",ano," and e.mes = ",mes," and c.status_t is null
INNER JOIN vetb00004 cli ON cli.tipo_cliente = c.tipo_cliente and cli.sec_cliente=c.sec_cliente
INNER JOIN adtb00003 vend ON vend.num_emp = c.sec_vend
INNER JOIN vetb00061 g ON g.ventas = c.ventas
INNER JOIN cgtb00084 d ON d.ventas = c.ventas AND d.tipo_cliente = c.tipo_cliente AND d.ano = e.ano and d.mes = e.mes
LEFT OUTER JOIN iptb00004 k ON k.ano = e.ano AND b.cod_n = k.cod_n and b.cod_grupo = k.cod_grupo and b.cod_tipo = k.cod_tipo and
b.cod_sec = k.cod_sec
order by f.cod_cia
"
PREPARE busca_act FROM selec
DECLARE act2 SCROLL CURSOR FOR busca_act
# OPEN act2 USING ano,fecha_inicial,fecha_final,fecha_inicial,fecha_final
# OPEN act2 USING ano, mes
LET salida = "veprrp015b_2.4rp"
IF NOT fgl_report_loadCurrentSettings(salida) THEN
EXIT PROGRAM
END IF
CALL fgl_report_selectDevice("XLSX")
CALL fgl_report_selectPreview(FALSE)
LET attachment = rutafile CLIPPED, 'ventasgrupos.xlsx'
DISPLAY "Ruta: ",attachment
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 grupo TO XML HANDLER HANDLER
FOREACH act2
INTO ventas.origen,
ventas.cod_n,
ventas.cod_grupo,
ventas.cod_tipo,
ventas.cod_sec,
ventas.descrip_esp,
ventas.unidad_med,
ventas.ventas,
ventas.sucid,
ventas.factura,
ventas.precio,
ventas.precio_neto,
ventas.costo,
ventas.cantidad_vend,
ventas.tasa,
ventas.porc_desc,
ventas.cliente,
ventas.vendedor
LET ventas.margen = ventas.precio_neto - ventas.costo
LET ventas.porc_margen_c = (ventas.margen / ventas.costo) * 100
LET ventas.porc_margen_v = (ventas.margen / ventas.precio_neto) * 100
LET ventas.descrip_esp = ventas.descrip_esp CLIPPED
IF ventas.porc_margen_c IS NULL THEN
LET ventas.porc_margen_c = 0
END IF
IF ventas.porc_margen_v IS NULL THEN
LET ventas.porc_margen_v = 0
END IF
IF ventas.costo IS NULL THEN
LET ventas.costo = 0
END IF
IF ventas.margen IS NULL THEN
LET ventas.margen = 0
END IF
OUTPUT TO REPORT grupo(ventas.*)
END FOREACH
FINISH REPORT grupo
# 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 =
'MARGENES DE VENTAS POR PRODUCTOS PARA EL MES DE ',
titulomes CLIPPED,
" DEL PERIODO ",
ano USING "<<<<<"
LET cuerpo_correo =
'laS tasas como se comercializo la factura se encuentra en cada linea al final del registro, no obstante toda la informacion es en RD$'
CALL enviaemail(
toEmail,
subject,
cuerpo_correo,
attachment,
xusername,
xsmtphost,
xsmtpport,
xpassword) #RETURNING mensajes
END FUNCTION
REPORT grupo(x)
DEFINE
hora CHAR(5),
xorigen VARCHAR(100)
DEFINE X RECORD
origen VARCHAR(100),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(100),
unidad_med CHAR(4),
ventas CHAR(1),
cantidad_vend DECIMAL(12, 2),
valor DECIMAL(12, 2),
precio, precio_neto, porc_desc DECIMAL(12, 2),
sucid SMALLINT,
factura INT,
costo DEC(12, 5),
tasa, margen, porc_margen_c, porc_margen_v DEC(12, 2),
cliente VARCHAR(100),
vendedor VARCHAR(100)
END RECORD
DEFINE t_t_t_cantidad_dev,
t_t_t_valor_dev,
g_g_g_cantidad_vend,
g_g_g_valor_vend,
g_g_g_unidad_acum,
g_g_g_valor_acum,
t1_cantidad_dev,
t1_valor_dev,
margen_v,
margen_p,
valor_costo,
valor_vendido
DECIMAL(12, 2)
ORDER BY x.origen
FORMAT
FIRST PAGE HEADER
LET g_g_g_unidad_acum = 0
LET g_g_g_valor_acum = 0
LET t_t_t_cantidad_dev = 0
LET t_t_t_valor_dev = 0
LET t1_cantidad_dev = 0
LET t1_valor_dev = 0
LET g_g_g_cantidad_vend = 0
LET g_g_g_valor_vend = 0
ON EVERY ROW
LET valor_vendido = X.precio_neto * x.cantidad_vend
PRINTX X.*, p_companias.nombre, hora, fecha_inicial, fecha_final
LET g_g_g_valor_acum = valor_vendido + g_g_g_valor_acum
AFTER GROUP OF x.origen
LET valor_costo = GROUP SUM(x.costo)
LET g_g_g_cantidad_vend = GROUP SUM(x.cantidad_vend)
PRINTX valor_costo, g_g_g_cantidad_vend, g_g_g_valor_acum
END REPORT