296 lines
9.6 KiB
Plaintext
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
|