209 lines
5.9 KiB
Plaintext
209 lines
5.9 KiB
Plaintext
{
|
|
=======================================================================
|
|
Programa : GEPRRP003
|
|
Sistema : Sistema de Informacion Gerencia
|
|
Proceso : Suplidor con Compras Mayores a X Cantidad
|
|
Autor : Tadeo A. Ferreras
|
|
Fecha : Junio 21,1993
|
|
=======================================================================
|
|
}
|
|
GLOBALS
|
|
"geprgb000.4gl"
|
|
|
|
DEFINE ger_comp RECORD
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nombre CHAR(30),
|
|
cantidad DECIMAL(10,2),
|
|
secuencia SMALLINT
|
|
END RECORD,
|
|
cod1 SMALLINT
|
|
|
|
DEFINE fecha_in,fecha_fi DATE,
|
|
cod_sup SMALLINT,
|
|
total2,cantidad1 DECIMAL(12,2)
|
|
|
|
FUNCTION geprrp003()
|
|
LET int_flag = FALSE
|
|
|
|
OPTIONS
|
|
FORM LINE 8
|
|
CALL pantalla()
|
|
|
|
OPEN FORM gefmrp003 FROM "gefmrp003"
|
|
DISPLAY FORM gefmrp003
|
|
DISPLAY "geprrp003" AT 4,3 ATTRIBUTE(RED)
|
|
DISPLAY "Suplidores Con Compras Mayores a X Cantidad" AT 6,18
|
|
ATTRIBUTE(BLACK)
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
|
|
|
|
INPUT BY NAME fecha_in,fecha_fi,cod_sup,cantidad1
|
|
|
|
ON KEY(CONTROL-P)
|
|
CALL busca_printer() RETURNING imprime,letras.*, archivo
|
|
|
|
|
|
AFTER FIELD fecha_in
|
|
IF fecha_in IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_in
|
|
END IF
|
|
|
|
BEFORE FIELD fecha_fi
|
|
LET fecha_fi = today
|
|
|
|
AFTER FIELD fecha_fi
|
|
IF fecha_fi IS NULL THEN
|
|
LET fecha_fi = today
|
|
END IF
|
|
|
|
IF fecha_fi < fecha_in THEN
|
|
LET numero_msg = 51
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_fi
|
|
END IF
|
|
|
|
DISPLAY BY NAME fecha_fi
|
|
|
|
AFTER FIELD cod_sup
|
|
IF cod_sup IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sup
|
|
END IF
|
|
|
|
AFTER FIELD cantidad1
|
|
IF cantidad1 IS NULL OR cantidad1 < 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad1
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
IF int_flag tHEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
SELECT SUM(a.valor) INTO total2 FROM cptb00001 a
|
|
WHERE a.status_t IS NULL AND a.fecha_orig between fecha_in AND fecha_fi
|
|
AND a.cod_sp = cod_sup and a.tipo_doc = "FT"
|
|
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT a.cod_sp,a.cod_sp_sec,b.nom_sp,SUM(a.valor)
|
|
FROM cptb00001 a, cotb00001 b
|
|
WHERE (a.cod_sp = b.cod_sp AND a.cod_sp_sec = b.cod_sp_sec) AND
|
|
(a.status_t IS NULL) AND a.fecha_orig between fecha_in AND fecha_fi
|
|
AND (a.cod_sp = cod_sup) and (a.tipo_doc = "FT")
|
|
GROUP BY 1,2,3 HAVING SUM(a.valor) > cantidad1 ORDER BY 4 DESC
|
|
|
|
DISPLAY "Buscando Informacion..... Espere por Favor" AT 17,14
|
|
|
|
START REPORT gerencia1 TO archivo
|
|
DISPLAY "Impresion en Proceso..... Espere por Favor" AT 17,14
|
|
|
|
LET idx = 1
|
|
FOREACH buscar INTO ger_comp.*
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET ger_comp.secuencia = idx
|
|
|
|
OUTPUT TO REPORT gerencia1(ger_comp.*,fecha_in,fecha_fi,cod_sup,
|
|
cantidad1,total2)
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
FINISH REPORT gerencia1
|
|
RUN imprime
|
|
END FUNCTION
|
|
|
|
REPORT gerencia1(x,fecha1,fecha2,cod_sup1,cant,total1)
|
|
|
|
DEFINE x RECORD
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nombre CHAR(30),
|
|
cantidad DECIMAL(10,2),
|
|
secuencia SMALLINT
|
|
END RECORD
|
|
|
|
DEFINE cod_sup1 SMALLINT
|
|
DEFINE supl CHAR(15)
|
|
DEFINE fecha1,fecha2 DATE,
|
|
total1,proporcion,cant DECIMAL(12,2)
|
|
DEFINE descrip,descrip1 CHAR(30)
|
|
DEFINE hora CHAR(5)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 2
|
|
TOP MARGIN 1
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = time
|
|
|
|
PRINT COLUMN 1, "geprrp003",
|
|
COLUMN 17, "R A Y . O . V A C D O M I N I C A N A, S. A.",
|
|
COLUMN 73, "Pag. ", pageno using "###"
|
|
PRINT COLUMN 17, " Sistema de Informacion Gerencial",
|
|
COLUMN 80, today using "dd/mm/yyyy"
|
|
|
|
IF cod_sup1 = 21 THEN
|
|
LET supl = " INTERCOMPANY"
|
|
ELSE
|
|
IF cod_sup1 = 22 THEN
|
|
LET supl = "INTERNACIONALES"
|
|
ELSE
|
|
LET supl = " LOCALES"
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN 32,supl,
|
|
COLUMN 73, hora
|
|
|
|
PRINT COLUMN 24,"Compras Mayores a ", cant USING "###,###,##&.&&"
|
|
SKIP 1 LINES
|
|
PRINT COLUMN 1, "FECHA: DEL ", fecha1 USING "dd/mm/yyyy",
|
|
" AL ", fecha2 USING "dd/mm/yyyy"
|
|
|
|
PRINT COLUMN 1, "----------------------------------------",
|
|
"----------------------------------------"
|
|
|
|
PRINT COLUMN 1, "Secuencia",
|
|
COLUMN 15, "Suplidor",
|
|
COLUMN 62, "Cantidad",
|
|
COLUMN 72, "Proporcion"
|
|
|
|
PRINT COLUMN 1, "----------------------------------------",
|
|
"----------------------------------------"
|
|
|
|
SKIP 1 LINE
|
|
ON EVERY ROW
|
|
|
|
LET proporcion = ((x.cantidad/total1)*100)
|
|
|
|
PRINT COLUMN 2, x.secuencia USING "##,###",
|
|
COLUMN 15,x.cod_sp USING "&&","-",x.cod_sp_sec USING "&&&&"," ",
|
|
x.nombre clipped,
|
|
COLUMN 57,x.cantidad USING "###,###,###.##";
|
|
PRINT COLUMN 74,proporcion USING "##&.&&"
|
|
|
|
ON LAST ROW
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 30,"TOTAL...."," ",
|
|
COLUMN 57,total1 USING "###,###,###.##"
|
|
END REPORT
|
|
|