286 lines
8.8 KiB
Plaintext
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
|