{ ======================================================================= Programa : GEPRRP011 Sistema : Sistema de Informacion Gerencia Minoristas Proceso : Clientes con Ventas Mayores a X Cantidad Autor : Tadeo A. Ferreras Fecha : Junio 21,1993 ======================================================================= } GLOBALS "geprgb000.4gl" DEFINE ger_comp11 RECORD cod_cia LIKE vetb00002.cod_cia, tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), status_t CHAR(1), cantidad2 DECIMAL(14,2), cantidad1 DECIMAL(14,2), posicion INTEGER, codigo CHAR(6) END RECORD, cod1 SMALLINT DEFINE selec9 CHAR(1000) DEFINE salir,salir9,compa CHAR(1) DEFINE idx9,idx1,j,m,p,s,s1 INTEGER DEFINE ano19 CHAR(4) DEFINE ano1,mes1 SMALLINT DEFINE nom_mes CHAR(15) DEFINE fecha_in,fecha_fi,fecha_in9,fecha_fi9 DATE, cod_cli SMALLINT, total2,cantidad1,cantidad2,cantidad3,cantidad4,cantidad5,cantidad6, cantidad7,cantidad8,cantida9 DECIMAL(12,2) FUNCTION geprrp011() LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM gefmrp009 FROM "gefmrp009" DISPLAY FORM gefmrp009 CALL pantalla() DISPLAY "geprrp011" AT 4,3 ATTRIBUTE(RED) DISPLAY "Ranking de Ventas Comparativas Al Ano Anterior Minoristas" AT 6,11 ATTRIBUTE(BLACK) LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime, letras.*, archivo INPUT BY NAME ano1,mes1,cantidad1 ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER FIELD ano1 IF ano1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano1 END IF SELECT MIN(fecha_inicio) INTO fecha_in FROM prdtable WHERE ano = ano1 SELECT MIN(fecha_inicio) INTO fecha_in9 FROM prdtable WHERE ano = ano1 - 1 LET ano19 = ano1 - 1 USING "&&&&" BEFORE FIELD mes1 LET mes1 = MONTH(today) USING "&&" DISPLAY BY NAME mes1 AFTER FIELD mes1 IF mes1 IS NULL THEN LET mes1 = MONTH(today) USING "&&" END IF DISPLAY BY NAME mes1 SELECT fecha_corte INTO fecha_fi FROM prdtable WHERE ano = ano1 AND mes = mes1 SELECT fecha_corte INTO fecha_fi9 FROM prdtable WHERE ano = ano1 - 1 AND mes = mes1 SELECT descrip INTO nom_mes FROM mestable WHERE mes = mes1 AFTER FIELD cantidad1 IF cantidad1 IS NULL OR cantidad1 < 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad1 END IF AFTER INPUT IF int_flag tHEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF EXIT INPUT END INPUT CONSTRUCT BY NAME criterio ON a.cod_cia ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT IF int_flag tHEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET selec = "SELECT a.cod_cia,a.tipo_cliente,a.sec_cliente,c.nombre,c.status_t,", "SUM(a.neto) ", "FROM vetb00002 a,vetb00004 c ", "WHERE (a.status_t IS NULL) AND (a.fecha_factura BETWEEN ? AND ?) AND ", " (a.ventas = '1') AND (a.tipo_cliente = c.tipo_cliente) AND ", " (a.sec_cliente = c.sec_cliente) AND ",criterio CLIPPED, " GROUP BY 1,2,3,4,5 HAVING SUM(a.neto) <= ? ORDER BY 6 DESC,1,2 " DISPLAY "Buscando Informacion Ano Actual... Espere por Favor" AT 17,14 ATTRIBUTE(BOLD) PREPARE comando FROM selec DECLARE buscar CURSOR FOR comando OPEN buscar USING fecha_in,fecha_fi,cantidad1 START REPORT gerencia11 TO archivo DISPLAY "Impresion en Proceso..... Espere por Favor " AT 17,14 LET idx = 0 LET salir = "N" WHILE salir != "S" FETCH buscar INTO ger_comp11.* IF STATUS = NOTFOUND THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET idx = idx + 1 LET ger_comp11.posicion = idx LET ger_comp11.cantidad1 = 0 SELECT SUM(a.neto) INTO ger_comp11.cantidad1 FROM vetb00002 a WHERE (a.status_t IS NULL) AND (a.ventas = "1") AND (a.fecha_factura BETWEEN fecha_in9 AND fecha_fi9) AND (a.tipo_cliente = ger_comp11.tipo_cliente) AND (a.sec_cliente=ger_comp11.sec_cliente) AND a.cod_cia=2 IF ger_comp11.cantidad2 IS NULL THEN LET ger_comp11.cantidad2 = 0 END IF IF ger_comp11.cantidad1 IS NULL THEN LET ger_comp11.cantidad1 = 0 END IF LET ger_comp11.codigo = ger_comp11.tipo_cliente USING "&&", ger_comp11.sec_cliente USING "&&&&" OUTPUT TO REPORT gerencia11(ger_comp11.*) END WHILE FINISH REPORT gerencia11 RUN imprime END FUNCTION REPORT gerencia11(x) DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), status_t CHAR(1), cantidad2 DECIMAL(14,2), cantidad1 DECIMAL(14,2), posicion INTEGER, codigo CHAR(6) END RECORD DEFINE j ARRAY[5000] OF RECORD codigo CHAR(7), nombre CHAR(30), status_t CHAR(1), cantidad1 DECIMAL(14,2), cantidad2 DECIMAL(14,2), posicion1 INTEGER, posicion2 INTEGER END RECORD DEFINE mes11 SMALLINT DEFINE nom_mes1 CHAR(15) DEFINE descrip,descrip1 CHAR(30) DEFINE nombre_sal CHAR(20), hora CHAR(5) OUTPUT LEFT MARGIN 2 TOP MARGIN 1 # ORDER BY x.cod_cia,x.cantidad2 FORMAT PAGE HEADER LET hora = time PRINT COLUMN 1, letras.comp_on,letras.negrillas_on PRINT COLUMN 1, "geprrp011", COLUMN 22, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 83, "Pag. ", pageno using "###" PRINT COLUMN 22, " Sistema de Informacion Gerencial", COLUMN 83, today using "dd/mm/yyyy" PRINT COLUMN 12, "Ranking de Ventas Comparativas Ano Anterior Menor A ", cantidad1 USING "#,###,###.##", COLUMN 86, hora PRINT COLUMN 22, " M I N O R I S T A S " PRINT COLUMN 1, "ACUMULADO AL MES DE ",nom_mes CLIPPED PRINT COLUMN 1, "----------------------------------------------------", "--------------------------------------" PRINT COLUMN 2, "Posicion", COLUMN 68, "Cantidad" PRINT COLUMN 1, ano1 USING "&&&&", COLUMN 6, ano1-1 USING "&&&&", COLUMN 12, "Cliente", COLUMN 63, ano1 USING "&&&&", COLUMN 78, ano1-1 USING "&&&&", COLUMN 85, "Status" PRINT COLUMN 1, "----------------------------------------------------", "--------------------------------------" PRINT COLUMN 1, letras.negrillas_off BEFORE GROUP OF x.cod_cia CASE WHEN x.cod_cia = 1 PRINT COLUMN 1,letras.negrillas_on,"PRODUCTOS LOCALES" EXIT CASE WHEN x.cod_cia = 2 PRINT COLUMN 1,letras.negrillas_on,"PRODUCTOS IMPORTADOS" EXIT CASE END CASE ON EVERY ROW IF idx1 IS NULL THEN LET idx1 = 0 END IF LET idx1 = idx1 + 1 LET idx = x.posicion LET j[idx].codigo = x.codigo LET j[idx].nombre = x.nombre LET j[idx].status_t = x.status_t LET j[idx].cantidad1 = x.cantidad1 LET j[idx].cantidad2 = x.cantidad2 IF x.cantidad1 = 0 THEN LET j[idx].posicion1 = 0 ELSE LET j[idx].posicion1 = idx1 END IF LET j[idx].posicion2 = x.posicion ON LAST ROW FOR idx = 1 TO idx1 IF j[idx].posicion2 IS NOT NULL AND j[idx].posicion2 > 0 THEN PRINT COLUMN 1, j[idx].posicion2 USING "##&", COLUMN 6, j[idx].posicion1 USING "##&", COLUMN 15, j[idx].codigo," ",j[idx].nombre CLIPPED, COLUMN 55, j[idx].cantidad2 USING "###,###,###.##", COLUMN 70, j[idx].cantidad1 USING "###,###,###.##", COLUMN 87, j[idx].status_t END IF END FOR PRINT COLUMN 55, "--------------", COLUMN 70, "--------------" PRINT COLUMN 30, "TOTAL VENTAS...."," ", COLUMN 55, SUM(x.cantidad2) USING "###,###,###.##", COLUMN 70, SUM(x.cantidad1) USING "###,###,###.##" PRINT COLUMN 1, letras.comp_off,letras.negrillas_off END REPORT