209 lines
6.2 KiB
Plaintext
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
|