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

286 lines
8.8 KiB
Plaintext

{
=======================================================================
Programa : GEPRRP014
Sistema : Sistema de Informacion Gerencia Minoristas
Proceso : Suplidores Con Compras Mayores a X Cantidad Comparativas
Autor : Tadeo A. Ferreras
Fecha : Junio 21,1993
=======================================================================
}
GLOBALS
"geprgb000.4gl"
DEFINE ger_comp14 RECORD
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
nom_sp CHAR(30),
status_t CHAR(1),
cantidad2 DECIMAL(14,2),
cantidad1 DECIMAL(14,2),
posicion INTEGER,
codigo CHAR(6)
END RECORD,
cod_sp1 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 geprrp014()
LET int_flag = FALSE
OPTIONS
FORM LINE 8
OPEN FORM gefmrp014 FROM "gefmrp014"
DISPLAY FORM gefmrp014
CALL pantalla()
DISPLAY "geprrp014" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Ranking de Compras Comparativas Ano Anterior" AT 6,18
ATTRIBUTE(BLACK)
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
INPUT BY NAME ano1,mes1,cantidad1,cod_sp1
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 fecha_inicio INTO fecha_in FROM prdtable
WHERE ano = ano1 AND mes = 1
SELECT fecha_inicio INTO fecha_in9 FROM prdtable
WHERE ano = ano1 - 1 AND mes = 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 FIELD cod_sp1
IF cod_sp1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sp1
END IF
SELECT UNIQUE cod_sp FROM cotb00001 WHERE cod_sp = cod_sp1
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_sp1
END IF
END INPUT
IF int_flag tHEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET selec =
"SELECT a.cod_sp,a.cod_sp_sec,c.nom_sp,c.status_t,SUM(a.valor) ",
"FROM cptb00001 a,cotb00001 c ",
"WHERE (a.status_t IS NULL) AND (a.fecha_orig BETWEEN ? AND ?) AND ",
" (a.cod_sp=?) AND (a.cod_sp = c.cod_sp) AND ",
" (a.cod_sp_sec = c.cod_sp_sec) AND (a.tipo_doc = 'FT') AND ",
" (a.status_t IS NULL) GROUP BY 1,2,3,4 HAVING SUM(a.valor) >= ? ",
"ORDER BY 5 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,cod_sp1,cantidad1
START REPORT gerencia14 TO archivo
DISPLAY "Impresion en Proceso..... Espere por Favor " AT 17,14
LET idx1 = 0
LET idx = 0
LET salir = "N"
WHILE salir != "S"
FETCH buscar INTO ger_comp14.*
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_comp14.posicion = idx
LET ger_comp14.cantidad1 = 0
SELECT SUM(a.valor) INTO ger_comp14.cantidad1 FROM cptb00001 a
WHERE (a.status_t IS NULL) AND (a.tipo_doc = "FT") AND
(a.fecha_orig BETWEEN fecha_in9 AND fecha_fi9) AND
(a.cod_sp = ger_comp14.cod_sp) AND
(a.cod_sp_sec=ger_comp14.cod_sp_sec)
IF ger_comp14.cantidad2 IS NULL THEN
LET ger_comp14.cantidad2 = 0
END IF
IF ger_comp14.cantidad1 IS NULL THEN
LET ger_comp14.cantidad1 = 0
END IF
LET ger_comp14.codigo = ger_comp14.cod_sp USING "&&",
ger_comp14.cod_sp_sec USING "&&&&"
OUTPUT TO REPORT gerencia14(ger_comp14.*)
END WHILE
FINISH REPORT gerencia14
RUN imprime
END FUNCTION
REPORT gerencia14(x)
DEFINE x RECORD
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
nom_sp 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),
nom_sp 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 nom_sp_sal CHAR(20)
DEFINE hora CHAR(5)
OUTPUT
LEFT MARGIN 2
TOP MARGIN 1
ORDER BY x.cantidad1 DESC,x.codigo
FORMAT
PAGE HEADER
LET hora = time
PRINT COLUMN 1, letras.comp_on,letras.negrillas_on
PRINT COLUMN 1, "geprrp014",
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 Compras Comparativas Ano Anterior Mayor A ",
cantidad1 USING "#,###,###.##",
COLUMN 86, hora
SKIP 1 LINE
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
ON EVERY ROW
LET idx1 = idx1 + 1
LET idx = x.posicion
LET j[idx].codigo = x.codigo
LET j[idx].nom_sp = x.nom_sp
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].nom_sp 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 COMPRAS..."," ",
COLUMN 55, SUM(x.cantidad2) USING "###,###,###.##",
COLUMN 70, SUM(x.cantidad1) USING "###,###,###.##"
PRINT COLUMN 1, letras.comp_off,letras.negrillas_off
END REPORT