Files
MBS/PROYECTO/gedir/geprrp011.4gl
T

297 lines
9.3 KiB
Plaintext

{
=======================================================================
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