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

209 lines
6.2 KiB
Plaintext

{
PROGRAMA: veprrp060
OBJETIVO: Generar las ventas mensuales panoramicas (General) Por categorias
DESARROLLADO POR: ING. JUAN SOTO
FECHA DESARROLLO: MAYO, 10, 2023
}
GLOBALS
"veprgb000.4gl"
DEFINE pano,pmes INT,
xventas RECORD LIKE ventas_facturas.*,
mventas RECORD
producto,
descrip_mes VARCHAR(30),
ventas,
proyeccion,diferencia,porciento DEC(12,2)
END RECORD,
cventas RECORD
producto,
descrip_mes VARCHAR(30),
ventas,
proyeccion,diferencia,porciento DEC(12,2)
END RECORD,
toventas RECORD
producto VARCHAR(30),
ventas,proyeccion,diferencia,porciento DEC(12,2)
END RECORD
,
representa VARCHAR(100),
tiporeporte VARCHAR(20),
kventas RECORD
producto VARCHAR(30),
ventas, proyeccion, diferencia, porciento DEC(12,2)
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT DISTINCT RTRIM(a.nom1_emp)+' '+RTRIM(a.apell1_emp) INTO representa FROM adtb00003 a,seg0001 b
WHERE a.num_emp = b.num_emp AND
b.usuario = usuarios
CALL veprrp060()
END MAIN
FUNCTION veprrp060()
DEFINE dataidx,dataidx1,dataidx2,dataidx3 VARCHAR(60)
OPEN WINDOW w1 WITH FORM 'vefmrp060'
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME pano,pmes
BEFORE INPUT
# CALL cequipos()
CALL combomes("formonly.pmes")
LET pano = YEAR(TODAY)
LET pmes = MONTH(TODAY)
DISPLAY BY NAME pano,pmes,representa
AFTER INPUT
IF int_flag THEN
LET int_flag = FALSE
EXIT PROGRAM
END IF
IF pano IS NULL THEN
CALL msg(16)
NEXT FIELD pano
END IF
IF pmes IS NULL THEN
CALL msg(16)
NEXT FIELD pmes
END IF
LET mventas.descrip_mes = ui.ComboBox.forName("pmes").getTextOf(pmes)
END INPUT
ON ACTION buscar ATTRIBUTE(TEXT="Busca Informacion",IMAGE="find")
LET SELEC = "
SELECT a.* FROM ventas_facturas a
WHERE a.ano = ", pano," AND a.numero_mes = ",pmes,
" ORDER BY a.origen, a.categoria_titulo, a.clase, a.numero_mes"
PREPARE comando FROM selec
DECLARE buscar CURSOR FOR comando
LET idx = 1
LET r_filename = 'veprrp060.4rp'
FOREACH buscar INTO xventas.*
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET idx = idx + 1
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
START REPORT pventas TO XML HANDLER HANDLER
ELSE
EXIT FOREACH
END IF
END IF
LET dataidx = xventas.origen
LET dataidx3 = xventas.categoria_titulo
LET dataidx2 = xventas.clase -- NUEVO
OUTPUT TO REPORT pventas(dataidx, dataidx3, dataidx2)
END FOREACH
IF idx > 1 THEN
FINISH REPORT pventas
ELSE
CALL fgl_winmessage("INFO","NO GENERE INFORMACION","INFO")
END IF
ON ACTION CANCEL ATTRIBUTE(TEXT="Cancelar",IMAGE="quit")
EXIT PROGRAM
END DIALOG
END FUNCTION
REPORT pventas(rindex, rindex3, rindex2)
DEFINE rindex, rindex3, rindex2, hora VARCHAR(60)
FORMAT
PAGE HEADER
SELECT * INTO p_companias.* FROM companias
-- NIVEL MÁS EXTERNO: Origen
AFTER GROUP OF rindex
LET cventas.producto = rindex
LET cventas.ventas = GROUP SUM(xventas.neto)
LET cventas.proyeccion = 0
LET cventas.diferencia = 0
LET cventas.porciento = 0
PRINTX cventas.*
-- NIVEL INTERMEDIO: Categoria_titulo
AFTER GROUP OF rindex3
LET kventas.producto = rindex3
LET kventas.ventas = GROUP SUM(xventas.neto)
LET kventas.proyeccion = 0
LET kventas.diferencia = 0
LET kventas.porciento = 0
PRINTX kventas.*
-- NIVEL MÁS INTERNO: Clase
AFTER GROUP OF rindex2
LET mventas.producto = rindex2
LET mventas.ventas = GROUP SUM(xventas.neto)
LET mventas.proyeccion = 0
LET mventas.diferencia = 0
LET mventas.porciento = 0
LET hora = CURRENT YEAR TO MINUTE USING "YYYY-MM-DD HH:MM"
PRINTX mventas.*, hora, p_companias.nombre, pano, pmes, representa
ON LAST ROW
LET toventas.producto = "TOTAL"
LET toventas.ventas = SUM(xventas.neto)
LET toventas.proyeccion = 0
LET toventas.diferencia = 0
LET toventas.porciento = 0
PRINTX toventas.*
END REPORT
REPORT pventas1(rindex, rindex3)
DEFINE rindex,rindex3, hora VARCHAR(100),
xmes int
#ORDER BY rindex3,rindex,xmes
FORMAT
FIRST PAGE HEADER
SELECT * INTO p_companias.* FROM companias
LET hora = CURRENT
AFTER GROUP OF rindex3
LET mventas.producto = rindex3
LET mventas.ventas = GROUP SUM(xventas.neto)
PRINTX mventas.*,hora
AFTER GROUP OF rindex
LET mventas.producto = rindex
LET mventas.ventas = GROUP SUM(xventas.neto)
PRINTX mventas.*,p_companias.nombre,representa,pano
ON LAST ROW
LET toventas.producto = "TOTAL"
LET toventas.ventas = SUM(xventas.neto)
PRINTX toventas.*
END REPORT