{ 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