Files
MBS/PROYECTO/codir/coprrp028.4gl
T

222 lines
7.2 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : COPRRP028
OBJETIVO : Reporte De Ordenes Abiertas con Cantidades
Pendientes por Llegar.
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : Mayo 1997
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
------------------------------------------------------------------
}
GLOBALS
"coprgb000.4gl"
##### Registro para almacenar la informacion enviada al reporte
DEFINE d_rep28 RECORD
tipo LIKE cotb00015.tipo,
num_oc LIKE cotb00015.num_oc,
fecha DATE,
cod_n LIKE cotb00020.cod_n,
cod_grupo LIKE cotb00020.cod_grupo,
cod_tipo LIKE cotb00020.cod_tipo,
cod_sec LIKE cotb00020.cod_sec,
cantidad_l DECIMAL(12,2),
descrip_esp CHAR(30),
descrip CHAR(30),
unidad_med CHAR(3),
cantidad_r DECIMAL(12,2)
END RECORD
DEFINE fecha_i,fecha_f DATE
##### Funcion para buscar informacion
FUNCTION coprrp028()
OPTIONS
FORM LINE 8
OPEN FORM cofmrp028 FROM "cofmrp028"
DISPLAY FORM cofmrp028
CALL pantalla()
DISPLAY "coprrp028" AT 4,3
DISPLAY "Cantidades Ordeneadas/Recibidas Por Orden" AT 6,20
LET int_flag = FALSE
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
##### Proceso de busqueda de la informacion requerida
INPUT BY NAME fecha_i,fecha_f
AFTER FIELD fecha_i
IF fecha_i IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_i
END IF
BEFORE FIELD fecha_f
LET fecha_f = TODAY
DISPLAY BY NAME fecha_f
AFTER FIELD fecha_f
IF fecha_f IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_i
END IF
IF fecha_i > fecha_f THEN
LET numero_msg = 149
CALL msg(numero_msg)
NEXT FIELD fecha_f
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DECLARE busqueda CURSOR FOR
SELECT a.tipo,a.num_oc,a.fech_oc,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,
b.cantidad
FROM cotb00014 a, cotb00015 b
WHERE (a.tipo = b.tipo) AND (a.num_oc = b.num_oc) AND (a.cierre IS NULL OR
a.cierre = "N") AND (a.status_t IS NULL) AND
(a.fech_oc BETWEEN fecha_i AND fecha_f)
ORDER BY 3,1,2,4,5,6,7
DISPLAY "Reporte Generandose ... Por Favor Espere"
AT 19,14 ATTRIBUTE(BOLD,REVERSE)
START REPORT reporte_28 TO "C:\\archivo"
FOREACH busqueda INTO d_rep28.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET d_rep28.descrip_esp = NULL
LET d_rep28.unidad_med = NULL
CASE
WHEN d_rep28.tipo = "01"
SELECT a.descrip_esp,a.unidad_med
INTO d_rep28.descrip_esp,d_rep28.unidad_med FROM intb00001 a
WHERE (a.cod_n=d_rep28.cod_n) AND (a.cod_grupo=d_rep28.cod_grupo) AND
(a.cod_tipo=d_rep28.cod_tipo) AND (a.cod_sec=d_rep28.cod_sec)
WHEN d_rep28.tipo = "02"
SELECT a.descrip_esp,a.unidad_med
INTO d_rep28.descrip_esp,d_rep28.unidad_med FROM iptb00002 a
WHERE (a.cod_n=d_rep28.cod_n) AND (a.cod_grupo=d_rep28.cod_grupo) AND
(a.cod_tipo=d_rep28.cod_tipo) AND (a.cod_sec=d_rep28.cod_sec)
OTHERWISE
SELECT a.descrip_esp,a.unidad_med
INTO d_rep28.descrip_esp,d_rep28.unidad_med FROM irtb00001 a
WHERE (a.cod_n=d_rep28.cod_n) AND (a.cod_grupo=d_rep28.cod_grupo) AND
(a.cod_tipo=d_rep28.cod_tipo) AND (a.cod_sec=d_rep28.cod_sec)
END CASE
IF d_rep28.cantidad_l IS NULL THEN
LET d_rep28.cantidad_l = 0
END IF
IF d_rep28.cantidad_r IS NULL THEN
LET d_rep28.cantidad_r = 0
END IF
OUTPUT TO REPORT reporte_28(d_rep28.*)
END FOREACH
FINISH REPORT reporte_28
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
###### Funcion que disena el reporte
REPORT reporte_28(x)
DEFINE x RECORd
tipo LIKE cotb00015.tipo,
num_oc LIKE cotb00015.num_oc,
fecha DATE,
cod_n LIKE cotb00020.cod_n,
cod_grupo LIKE cotb00020.cod_grupo,
cod_tipo LIKE cotb00020.cod_tipo,
cod_sec LIKE cotb00020.cod_sec,
cantidad_l DECIMAL(12,2),
descrip_esp CHAR(30),
descrip CHAR(30),
unidad_med CHAR(3),
cantidad_r DECIMAL(12,2)
END RECORD,
nombre_m CHAR(20),
descripcion CHAR(43)
DEFINE comprimido_on,comprimido_off,negrillas_on,negrillas_off CHAR(2),
hora CHAR(5)
OUTPUT
LEFT MARGIN 0
TOP MARGIN 0
###### Sortenado la informacion en orden de mes de reorden y dia de reorden
FORMAT
PAGE HEADER
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comprimido_on = ASCII 15
LET comprimido_off = ASCII 18
LET hora = TIME
LET l = (121 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, comprimido_on,negrillas_on
PRINT COLUMN 1, "coprrp028",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 114, "Pag. ",PAGENO USING "###"
PRINT COLUMN 37, " SISTEMA DE COMPRAS",
COLUMN 114, TODAY USING "dd/mm/yy"
PRINT COLUMN 37, " Cantidades Ordenadas Vs Recibidas Por Orden",
COLUMN 117, hora
SKIP 1 LINES
PRINT COLUMN 1, "Fecha: Del ",fecha_i USING "dd/mm/yy",
" Al ",fecha_f USING "dd/mm/yy"
PRINT COLUMN 1, "----------------------------------------",
"----------------------------------------",
"---------------------------------------------------"
PRINT COLUMN 1, "Orden",
COLUMN 11, "Fecha",
COLUMN 21, "Producto",
COLUMN 84, "Ordenado",
COLUMN 98, "Recibido",
COLUMN 112, "Pendiente",
COLUMN 123, " Porc."
PRINT COLUMN 1, "----------------------------------------",
"----------------------------------------",
"---------------------------------------------------"
PRINT negrillas_off
BEFORE GROUP OF x.num_oc
SKIP 1 LINE
PRINT COLUMN 1, x.tipo USING "&&","-",x.num_oc USING "&&&&&&",
COLUMN 11, x.fecha USING "dd/mm/yy";
ON EVERY ROW
LET nombre_m = NULL
LET descripcion = x.descrip_esp CLIPPED
PRINT COLUMN 21, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ",
descripcion, x.unidad_med,
COLUMN 73, x.cantidad_l USING "###,###,###.##",
COLUMN 88, x.cantidad_r USING "###,###,###.##",
COLUMN 103, x.cantidad_l - x.cantidad_r USING "###,###,###.##",
COLUMN 124, ((x.cantidad_l-x.cantidad_r)/x.cantidad_l)*100
USING "###.##"," %"
ON LAST ROW
PRINT comprimido_off
END REPORT