{ ======================================================================= Programa : GEPRRP012 Sistema : Sistema de Informacion Gerencia Proceso : Ranking de Ventas por Vendedor, Compania y Cliente Autor : Tadeo A. Ferreras Fecha : Enero 18, 1995 Modificado Por: Juan F. Soto Descripcion : Se le quito las columnas Devoluciones y neto. Se Agrego la columna de VENTAS DEL ANO ANTERIOR AL ACTUAL. Fecha : Mayo 21, 1996. ======================================================================= } GLOBALS "geprgb000.4gl" DEFINE ger_comp12 RECORD sec_vend INTEGER, compania SMALLINT, tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), venta DECIMAL(14,2), venta_ant DECIMAL(14,2), venta_ant1 DECIMAL(14,2) END RECORD, cuenta,p_mes_ini SMALLINT, valor_d,valor_a DEC(12,2) DEFINE ger_comp121 RECORD sec_vend INTEGER, compania SMALLINT, tipo_cliente SMALLINT, sec_cliente SMALLINT, ventas DECIMAL(14,2) END RECORD DEFINE ger_comp122 RECORD sec_vend INTEGER, compania SMALLINT, tipo_cliente SMALLINT, sec_cliente SMALLINT, ventas DECIMAL(14,2) END RECORD DEFINE ger_comp123 RECORD sec_vend INTEGER, compania SMALLINT, tipo_cliente SMALLINT, sec_cliente SMALLINT, ventas DECIMAL(14,2) END RECORD DEFINE nomb,apell CHAR(15), nombre CHAR(30), mov1 SMALLINT, idx1,idx2 INTEGER, venta_ant1,venta_ant2 DECIMAL(12,4) , desc_mes, desc_mes_ini CHAR(12) DEFINE esta,esta1,salir,salir1,salir2,salir3 CHAR(1), p_ano_ant1,p_ano_ant,p_ano,p_mes SMALLINT DEFINE fecha3,fecha4,fecha1,fecha2,fecha_inicial,fecha_final DATE FUNCTION geprrp012() LET int_flag = FALSE OPTIONS FORM LINE 8 CALL pantalla() OPEN FORM gefmrp012 FROM "gefmrp012" DISPLAY "geprrp012" AT 4,3 ATTRIBUTE(RED) DISPLAY FORM gefmrp012 DISPLAY "Ranking de Ventas Por Vendedor, Compania y Cliente" AT 6,15 ATTRIBUTE(BLACK) LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime, letras.*, archivo INPUT BY NAME p_ano,p_mes_ini,p_mes,valor_d,valor_a ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER FIELD p_ano IF p_ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano END IF AFTER FIELD p_mes IF p_mes IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes END IF LET p_ano_ant = p_ano - 1 LET p_ano_ant1 = p_ano - 2 SELECT fecha_inicio INTO fecha_inicial FROM prdtable WHERE mes = p_mes_ini and ano = p_ano SELECT fecha_corte INTO fecha_final FROM prdtable WHERE mes = p_mes and ano = p_ano SELECT fecha_inicio INTO fecha1 FROM prdtable WHERE mes = p_mes_ini and ano = p_ano_ant SELECT fecha_corte INTO fecha2 FROM prdtable WHERE mes = p_mes and ano = p_ano_ant SELECT fecha_inicio INTO fecha3 FROM prdtable WHERE mes = p_mes_ini and ano = p_ano_ant1 SELECT fecha_corte INTO fecha4 FROM prdtable WHERE mes = p_mes and ano = p_ano_ant1 SELECT descrip INTO desc_mes FROM mestable WHERE mes = p_mes SELECT descrip INTO desc_mes_ini FROM mestable WHERE mes = p_mes_ini END INPUT IF int_flag tHEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT criterio ON a.sec_vend,a.tipo_cliente,a.sec_cliente FROM sec_vend,tipo_cliente,sec_cliente 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 # Ano Actual LET selec1 = "SELECT b.sec_vend,'1',a.tipo_cliente,a.sec_cliente, ", " SUM(a.sub_total-a.monto_desc) ", "FROM vetb00002 a,vetb00028 b ", "WHERE ", " (a.fecha_factura BETWEEN ? AND ?) AND ", " a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente and ", " (a.ventas = '1') AND (a.status_t IS NULL) AND ",criterio CLIPPED, " GROUP BY 1,2,3,4 HAVING SUM(a.sub_total-a.monto_desc) BETWEEN ? AND ? ORDER BY 1,2,3,4,5 " DISPLAY "Buscando Informacion2... Espere por Favor" AT 17,14 ATTRIBUTE(BOLD) PREPARE comando1 FROM selec1 DECLARE buscar1 SCROLL CURSOR FOR comando1 OPEN buscar1 USING fecha_inicial,fecha_final,valor_d,valor_a # Ano Anterior LET selec4 = "SELECT b.sec_vend,'1',a.tipo_cliente,a.sec_cliente, ", " SUM(a.sub_total-a.monto_desc) ", "FROM vetb00002 a,vetb00028 b ", "WHERE ", " (a.fecha_factura BETWEEN ? AND ?) and", " a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente and ", " (a.ventas = '1') AND (a.status_t IS NULL) AND ",criterio CLIPPED, " GROUP BY 1,2,3,4 HAVING SUM(a.sub_total-a.monto_desc) BETWEEN ? AND ? ORDER BY 1,2,3,4,5 " DISPLAY "Buscando Ano Anterior... Espere por Favor" AT 17,14 ATTRIBUTE(BOLD) PREPARE comando2 FROM selec4 DECLARE buscar2 SCROLL CURSOR FOR comando2 OPEN buscar2 USING fecha1,fecha2,valor_d,valor_a # Ano Anterior Anterior LET selec4 = "SELECT b.sec_vend,'1',a.tipo_cliente,a.sec_cliente, ", " SUM(a.sub_total-a.monto_desc) ", "FROM vetb00002 a,vetb00028 b ", "WHERE ", " (a.fecha_factura BETWEEN ? AND ?) AND ", " a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente and ", " (a.ventas = '1') AND (a.status_t IS NULL) AND ",criterio CLIPPED, " GROUP BY 1,2,3,4 HAVING SUM(a.sub_total-a.monto_desc) BETWEEN ? AND ? ORDER BY 1,2,3,4,5 " DISPLAY "Buscando Ano Anterior 2... Espere por Favor" AT 17,14 ATTRIBUTE(BOLD) PREPARE comando3 FROM selec4 DECLARE buscar3 SCROLL CURSOR FOR comando3 OPEN buscar3 USING fecha3,fecha4,valor_d,valor_a START REPORT repor_12 TO archivo DISPLAY "Reporte Generandose ... Espere por Favor" AT 17,14 ATTRIBUTE(BOLD) LET cuenta = 1 LET ger_comp12.sec_vend = 0 LET ger_comp12.compania = 0 LET ger_comp12.tipo_cliente= 0 LET ger_comp12.sec_cliente = 0 LET ger_comp12.nombre = " " LET ger_comp12.venta = 0 LET ger_comp12.venta_ant = 0 LET ger_comp12.venta_ant1 = 0 LET idx = 1 LET idx1 = 0 LET salir1 = "N" WHILE salir1 != "S" FETCH buscar1 INTO ger_comp121.* IF STATUS = NOTFOUND THEN LET salir1 = "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 cuenta = cuenta + 1 LET ger_comp12.sec_vend = ger_comp121.sec_vend LET ger_comp12.compania = ger_comp121.compania LET ger_comp12.tipo_cliente = ger_comp121.tipo_cliente LET ger_comp12.sec_cliente = ger_comp121.sec_cliente LET ger_comp12.venta = ger_comp121.ventas LET ger_comp12.venta_ant = 0 LET ger_comp12.venta_ant1 = 0 display ger_comp12.sec_cliente at 17,2 # Busca Las Informaciones del ano anterior LET idx = 1 LET salir2 = "N" WHILE salir2 != "S" FETCH ABSOLUTE idx buscar2 INTO ger_comp122.* IF status = notfound THEN LET salir2 = "S" LET idx = 1 EXIT WHILE END IF LET idx = idx + 1 IF ger_comp122.sec_vend = ger_comp12.sec_vend and ger_comp122.compania = ger_comp12.compania and ger_comp122.tipo_cliente = ger_comp12.tipo_cliente and ger_comp122.sec_cliente = ger_comp12.sec_cliente THEN LET ger_comp12.venta_ant = ger_comp122.ventas EXIT WHILE END IF END WHILE # Busca las informaciones del ano anterior anterior LET idx1 = 1 LET salir3 = "N" WHILE salir3 != "S" FETCH ABSOLUTE idx1 buscar3 INTO ger_comp123.* IF status = notfound THEN LET salir3 = "S" LET idx1 = 1 EXIT WHILE END IF LET idx1 = idx1 + 1 IF ger_comp123.sec_vend = ger_comp12.sec_vend and ger_comp123.compania = ger_comp12.compania and ger_comp123.tipo_cliente = ger_comp12.tipo_cliente and ger_comp123.sec_cliente = ger_comp12.sec_cliente THEN LET ger_comp12.venta_ant1 = ger_comp123.ventas EXIT WHILE END IF END WHILE # IF cuenta < 16 THEN OUTPUT TO REPORT repor_12(ger_comp12.*) # ELSE # EXIT WHILE # END IF END WHILE FINISH REPORT repor_12 RUN imprime END FUNCTION REPORT repor_12(x) DEFINE x RECORD sec_vend INTEGER, compania SMALLINT, tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), venta DECIMAL(14,2), venta_ant DECIMAL(14,2), venta_ant1 DECIMAL(14,2) END RECORD DEFINE hora CHAR(5) OUTPUT LEFT MARGIN 2 TOP MARGIN 1 ORDER BY x.sec_vend,x.compania,x.venta DESC,x.tipo_cliente,x.sec_cliente FORMAT PAGE HEADER LET hora = time PRINT COLUMN 1, letras.doce,letras.negrillas_on PRINT COLUMN 1, "geprrp012", COLUMN 25, " R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 91, "Pag. ", pageno using "###" PRINT COLUMN 25, " Sistema de Informacion Gerencial", COLUMN 91, today using "dd/mm/yyyy" PRINT COLUMN 25, "Ranking de Ventas Por Vendedor, Compania y Cliente", COLUMN 94, hora PRINT COLUMN 30, "CLIENTES VENTAS DESDE ",valor_d USING "###,###,###.##"," HASTA ",valor_a USING "###,###,###.##" SKIP 1 LINES PRINT COLUMN 1, "MES INICIAL: ",desc_mes_ini," HASTA ",desc_mes PRINT COLUMN 1, "-------------------------------------------------", "-------------------------------------------------" PRINT COLUMN 59, "Venta", COLUMN 72, "Venta", COLUMN 93, "Venta" PRINT COLUMN 1, "Posicion y Cliente", COLUMN 59, p_ano using "####", COLUMN 72, p_ano_ant using "####", COLUMN 93, p_ano_ant1 using "####" PRINT COLUMN 1, "-------------------------------------------------", "-------------------------------------------------" PRINT COLUMN 1, letras.negrillas_off BEFORE GROUP OF x.sec_vend SKIP TO TOP OF PAGE SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO nomb,apell FROM adtb00003 a WHERE a.num_emp = x.sec_vend LET nombre = nomb CLIPPED," ",apell CLIPPED PRINT COLUMN 1, letras.negrillas_on PRINT COLUMN 1, "Vendedor: ",x.sec_vend USING "&&&&"," ",nombre, letras.negrillas_off BEFORE GROUP OF x.compania PRINT COLUMN 1, letras.negrillas_on IF x.compania = 1 THEN PRINT COLUMN 1, "Productos Locales", letras.negrillas_off ELSE PRINT COLUMN 1, "Productos Importados", letras.negrillas_off END IF LET idx2 = 0 ON EVERY ROW SELECT a.nombre INTO x.nombre FROM vetb00004 a WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente LET idx2 = idx2 + 1 PRINT COLUMN 1, idx2 USING "&&&"," ", x.tipo_cliente USING "&&","-", x.sec_cliente USING "&&&&"," ", " ",x.nombre CLIPPED, COLUMN 51, x.venta USING "-,---,---,---.##", COLUMN 68, x.venta_ant USING "-,---,---,---.##", COLUMN 85, x.venta_ant1 USING "-,---,---,---.##" AFTER GROUP OF x.compania PRINT COLUMN 1, letras.negrillas_on PRINT COLUMN 51, "----------------", COLUMN 68, "----------------", COLUMN 85, "----------------" PRINT COLUMN 1, "Total Compania ---> ", COLUMN 51, GROUP SUM(x.venta) USING "-,---,---,---.##", COLUMN 68, GROUP SUM(x.venta_ant) USING "-,---,---,---.##", COLUMN 85, GROUP SUM(x.venta_ant1) USING "-,---,---,---.##" PRINT COLUMN 1, letras.negrillas_off AFTER GROUP OF x.sec_vend PRINT COLUMN 1, letras.negrillas_on PRINT COLUMN 51, "----------------", COLUMN 68, "----------------", COLUMN 85, "----------------" PRINT COLUMN 1, "Total Vendedor ---> ", COLUMN 51, GROUP SUM(x.venta) USING "-,---,---,---.##", COLUMN 68, GROUP SUM(x.venta_ant) USING "-,---,---,---.##", COLUMN 85, GROUP SUM(x.venta_ant1) USING "-,---,---,---.##" PRINT COLUMN 1, letras.negrillas_off ON LAST ROW PRINT COLUMN 1, letras.negrillas_on PRINT COLUMN 51, "================", COLUMN 68, "================", COLUMN 85, "================" PRINT COLUMN 1, "Total General ---> ", COLUMN 51, SUM(x.venta) USING "-,---,---,---.##", COLUMN 68, SUM(x.venta_ant) USING "-,---,---,---.##", COLUMN 85, SUM(x.venta_ant1) USING "-,---,---,---.##" PRINT COLUMN 1, letras.normal,letras.negrillas_off END REPORT