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

355 lines
14 KiB
Plaintext

{
=======================================================================
Programa : GEPRRP008
Sistema : Sistema de Informacion Gerencia
Proceso : Cantidad de Bienes Y/O servicios Comprado en un Rango
Autor : Tadeo A. Ferreras
Fecha : Enero 03,1994
=======================================================================
}
GLOBALS
"geprgb000.4gl"
DEFINE cod1 SMALLINT
DEFINE ger_rep08 RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(3),
cantidad DECIMAL(10,2),
valor DECIMAL(10,2),
cantidad1 DECIMAL(10,2),
valor1 DECIMAL(10,2)
END RECORD
DEFINE fecha_1,fecha_2,fecha_3,fecha_4 DATE,
tipo_rep,salir CHAR(1)
FUNCTION geprrp008()
LET int_flag = FALSE
OPTIONS
FORM LINE 8
OPEN FORM gefmrp008 FROM "gefmrp008"
CALL pantalla()
DISPLAY "geprrp008" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Cantidad de Bien/Serv. Comprado En Un Rango de Fecha" AT 6,14
ATTRIBUTE(BLACK)
DISPLAY FORM gefmrp008
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
INPUT BY NAME fecha_1,fecha_2,tipo_rep
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
AFTER FIELD fecha_1
IF fecha_1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_1
END IF
BEFORE FIELD fecha_2
LET fecha_2 = today
AFTER FIELD fecha_2
IF fecha_2 IS NULL THEN
LET fecha_2 = today
END IF
IF fecha_2 < fecha_1 THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha_2
END IF
DISPLAY BY NAME fecha_2
AFTER FIELD tipo_rep
IF tipo_rep IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_rep
END IF
END INPUT
IF int_flag tHEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET fecha_3 = fecha_1 - 365
LET fecha_4 = fecha_2 - 365
IF tipo_rep = "M" THEN
LET selec =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.descrip_esp, ",
" d.unidad_med,SUM(a.cantidad_2),SUM(a.cantidad_2 * (b.precio / ",
" c.base)) ",
"FROM intb00006 a, cotb00015 b, intb00002 c,intb00001 d ",
"WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND ",
" (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND ",
" (a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ",
" a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec) AND ",
" (a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ",
" a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec) AND ",
" (a.fecha BETWEEN ? AND ?) AND (a.cod_mov IN (34,35)) ",
"GROUP BY 1,2,3,4,5,6 HAVING SUM(a.cantidad_2) > 0 ORDER BY 1,2,3,4 "
DISPLAY "Buscando Compras... Espere por Favor" AT 19,14
END IF
IF tipo_rep = "R" THEN
LET selec =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.descrip_esp, ",
" d.unidad_med,SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio) ",
"FROM irtb00006 a, cotb00015 b, intb00001 d ",
"WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND ",
" (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND ",
" (a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ",
" a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec) AND ",
" (a.fecha BETWEEN ? AND ?) AND (a.cod_mov IN (1,2)) AND ",
" (a.cod_n=5) ",
"GROUP BY 1,2,3,4,5,6 HAVING SUM(a.cantidad_2) > 0 ORDER BY 1,2,3,4 "
DISPLAY "Buscando Compras... Espere por Favor" AT 19,14
END IF
IF tipo_rep = "H" THEN
LET selec =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.descrip_esp, ",
" d.unidad_med,SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio) ",
"FROM ihtb00006 a, cotb00015 b, intb00001 d ",
"WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND ",
" (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND ",
" (a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ",
" a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec) AND ",
" (a.fecha BETWEEN ? AND ?) AND (a.cod_mov IN (1,2)) ",
"GROUP BY 1,2,3,4,5,6 HAVING SUM(a.cantidad_2) > 0 ORDER BY 1,2,3,4 "
DISPLAY "Buscando Compras... Espere por Favor" AT 19,14
END IF
IF tipo_rep = "S" THEN
LET selec =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.descrip_esp, ",
" d.unidad_med,SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio) ",
"FROM istb00006 a, cotb00015 b, intb00001 d ",
"WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND ",
" (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND ",
" (a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ",
" a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec) AND ",
" (a.fecha BETWEEN ? AND ?) AND (a.cod_mov IN (34,1)) ",
"GROUP BY 1,2,3,4,5,6 HAVING SUM(a.cantidad_2) > 0 ORDER BY 1,2,3,4 "
DISPLAY "Buscando Compras... Espere por Favor" AT 19,14
END IF
IF tipo_rep = "P" THEN
LET selec =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.descrip_esp, ",
" d.unidad_med,SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio) ",
"FROM iptb00006 a, cotb00015 b, intb00001 d ",
"WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND ",
" (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND ",
" (a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ",
" a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec) AND ",
" (a.fecha BETWEEN ? AND ?) AND (a.cod_mov = 10) ",
"GROUP BY 1,2,3,4,5,6 HAVING SUM(a.cantidad_2) > 0 ORDER BY 1,2,3,4 "
DISPLAY "Buscando Compras... Espere por Favor" AT 19,14
END IF
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
OPEN busca USING fecha_1,fecha_2
START REPORT gerencia08 TO archivo
DISPLAY "Reporte Generandose... Espere por Favor" AT 19,14 ATTRIBUTE(BOLD)
LET salir = "N"
WHILE salir != "S"
FETCH busca INTO ger_rep08.*
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 ger_rep08.cantidad1 = 0
LET ger_rep08.valor1 = 0
CASE
WHEN tipo_rep = "M"
SELECT SUM(a.cantidad_2),SUM(a.cantidad_2 * (b.precio / c.base))
INTO ger_rep08.cantidad1,ger_rep08.valor1
FROM intb00006 a, cotb00015 b, intb00002 c
WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND
(a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND
a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec) AND
(a.cod_n=ger_rep08.cod_n AND a.cod_grupo=ger_rep08.cod_grupo AND
a.cod_tipo=ger_rep08.cod_tipo AND a.cod_sec=ger_rep08.cod_sec)
AND (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND
(a.fecha BETWEEN fecha_3 AND fecha_4) AND (a.cod_mov IN (34,35))
EXIT CASE
WHEN tipo_rep = "H"
SELECT SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio)
INTO ger_rep08.cantidad1,ger_rep08.valor1
FROM ihtb00006 a, cotb00015 b
WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND
(a.cod_n=ger_rep08.cod_n AND a.cod_grupo=ger_rep08.cod_grupo AND
a.cod_tipo=ger_rep08.cod_tipo AND a.cod_sec=ger_rep08.cod_sec)
AND (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND
(a.fecha BETWEEN fecha_3 AND fecha_4) AND (a.cod_mov IN (1,2))
EXIT CASE
WHEN tipo_rep = "R"
SELECT SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio)
INTO ger_rep08.cantidad1,ger_rep08.valor1
FROM irtb00006 a, cotb00015 b
WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND
(a.cod_n=ger_rep08.cod_n AND a.cod_grupo=ger_rep08.cod_grupo AND
a.cod_tipo=ger_rep08.cod_tipo AND a.cod_sec=ger_rep08.cod_sec)
AND (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND
(a.fecha BETWEEN fecha_3 AND fecha_4) AND (a.cod_mov IN (1,2))
EXIT CASE
WHEN tipo_rep = "S"
SELECT SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio)
INTO ger_rep08.cantidad1,ger_rep08.valor1
FROM istb00006 a, cotb00015 b
WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND
(a.cod_n=ger_rep08.cod_n AND a.cod_grupo=ger_rep08.cod_grupo AND
a.cod_tipo=ger_rep08.cod_tipo AND a.cod_sec=ger_rep08.cod_sec)
AND (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND
(a.fecha BETWEEN fecha_3 AND fecha_4) AND (a.cod_mov IN (1,34))
EXIT CASE
WHEN tipo_rep = "P"
SELECT SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio)
INTO ger_rep08.cantidad1,ger_rep08.valor1
FROM iptb00006 a, cotb00015 b
WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec) AND
(a.cod_n=ger_rep08.cod_n AND a.cod_grupo=ger_rep08.cod_grupo AND
a.cod_tipo=ger_rep08.cod_tipo AND a.cod_sec=ger_rep08.cod_sec)
AND (a.orden_compra = b.num_oc AND a.tipo = b.tipo) AND
(a.fecha BETWEEN fecha_3 AND fecha_4) AND (a.cod_mov = 10)
EXIT CASE
END CASE
OUTPUT TO REPORT gerencia08(ger_rep08.*)
END WHILE
FINISH REPORT gerencia08
RUN imprime
END FUNCTION
REPORT gerencia08(x)
DEFINE x RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(3),
cantidad DECIMAL(10,2),
valor DECIMAL(10,2),
cantidad1 DECIMAL(10,2),
valor1 DECIMAL(10,2)
END RECORD
DEFINE descrip CHAR(11)
DEFINE hora CHAR(5)
OUTPUT
LEFT MARGIN 2
TOP MARGIN 1
ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec
FORMAT
PAGE HEADER
LET hora = time
PRINT letras.comp_on,letras.negrillas_on
PRINT COLUMN 1, "geprrp008",
COLUMN 38, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 116, "Pag. ", pageno using "###"
PRINT COLUMN 38, " Sistema de Informacion Gerencial ",
COLUMN 116, today using "dd/mm/yyyy"
PRINT COLUMN 36, "Cantidad de Bien/Serv. Comprado En Rango de Fecha",
COLUMN 119, hora
IF tipo_rep = "M" THEN
LET descrip = " MATERIAL "
END IF
IF tipo_rep = "R" THEN
LET descrip = " REPUESTO "
END IF
IF tipo_rep = "H" THEN
LET descrip = "HERRAMIENTA"
END IF
IF tipo_rep = "S" THEN
LET descrip = "SUMINISTRO"
END IF
PRINT COLUMN 35, descrip
PRINT COLUMN 1, "Fecha: Del ", fecha_1 USING "dd/mm/yyyy"," Al ",
fecha_2 USING "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-----------------------"
PRINT COLUMN 64, "ANO ACTUAL",
COLUMN 104, "ANO ANTEIOR"
PRINT COLUMN 1, "Material",
COLUMN 56, "Cantidad",
COLUMN 76, "Valor",
COLUMN 96, "Cantidad",
COLUMN 119, "Valor"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-----------------------"
PRINT letras.negrillas_off
ON EVERY ROW
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ",
x.descrip_esp CLIPPED," ",x.unidad_med CLIPPED,
COLUMN 50, x.cantidad USING "###,###,###.##",
COLUMN 70, x.valor USING "###,###,###.##",
COLUMN 90, x.cantidad1 USING "###,###,###.##",
COLUMN 110, x.valor1 USING "###,###,###.##"
ON LAST ROW
PRINT letras.negrillas_on
PRINT COLUMN 76, "--------------",
COLUMN 110, "--------------"
PRINT COLUMN 40,"Total General ==> ",
COLUMN 76, SUM(x.valor) USING "###,###,###.##",
COLUMN 110, SUM(x.valor1) USING "###,###,###.##"
PRINT letras.comp_off,letras.negrillas_off
END REPORT