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

233 lines
7.8 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : COPRRP027
OBJETIVO : Reporte Detallado de Plan de Reorden Segun
Proyecciones.
PROGRAMADOR : Tadeo A. Ferreras F.
FECHA REALIZACION : Mayo 13, 1993
------------------------------------------------------------------
}
GLOBALS
"coprgb000.4gl"
##### Registro para almacenar la informacion enviada al reporte
DEFINE prt_reorden RECORD
fecha_del LIKE cotb00020.fecha_del,
fecha_al LIKE cotb00020.fecha_al,
cod_n LIKE cotb00020.cod_n,
cod_grupo LIKE cotb00020.cod_grupo,
cod_tipo LIKE cotb00020.cod_tipo,
cod_sec LIKE cotb00020.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
tipo LIKE cotb00020.tipo,
dia_reord LIKE cotb00020.dia_reord,
mes_reord LIKE cotb00020.mes_reord
END RECORD
##### Funcion para buscar informacion
FUNCTION coprrp027()
CLEAR SCREEN
CALL pantalla()
DISPLAY "coprrp027" AT 4,3
DISPLAY "Listado de Reordenamiento" AT 6,27
LET int_flag = FALSE
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
##### Proceso de busqueda de la informacion requerida
DECLARE busqueda CURSOR FOR
SELECT a.fecha_del,a.fecha_al,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
b.descrip_esp,b.unidad_med,a.tipo,a.dia_reord,a.mes_reord
FROM cotb00020 a,intb00001 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.mes_reord is not null
DISPLAY "Reporte Generandose ... Por Favor Espere"
AT 19,14 ATTRIBUTE(BOLD,REVERSE)
START REPORT reporte_27 TO "C:\\archivo"
FOREACH busqueda INTO prt_reorden.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT reporte_27(prt_reorden.*)
END FOREACH
FINISH REPORT reporte_27
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
###### Funcion que disena el reporte
REPORT reporte_27(x)
DEFINE x RECORd
fecha_del LIKE cotb00020.fecha_del,
fecha_al LIKE cotb00020.fecha_al,
cod_n LIKE cotb00020.cod_n,
cod_grupo LIKE cotb00020.cod_grupo,
cod_tipo LIKE cotb00020.cod_tipo,
cod_sec LIKE cotb00020.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
tipo LIKE cotb00020.tipo,
dia_reord LIKE cotb00020.dia_reord,
mes_reord LIKE cotb00020.mes_reord
END RECORD
DEFINE comprimido_12_off,comprimido_12_on,comprimido_on,comprimido_off,
doble_on,doble_off,negrillas_on,negrillas_off CHAR(2)
DEFINE cant,costo,prec,c_base,c_otros_g,c_c_flete,t_c_flete,t_t_flete
DECIMAL(12,2),
num_ord INTEGER,
c_cod_n,c_cod_grupo,c_cod_tipo, c_cod_sec SMALLINT
OUTPUT
LEFT MARGIN 6
TOP MARGIN 1
###### Sortenado la informacion en orden de mes de reorden y dia de reorden
ORDER BY x.mes_reord,x.dia_reord,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec
##### Creando el formato de salida
FORMAT
PAGE HEADER
LET negrillas_on = ASCII 27, ASCII 71
LET negrillas_off = ASCII 27, ASCII 72
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET comprimido_on = ASCII 15
LET comprimido_off = ASCII 18
LET comprimido_12_on = ASCII 27, ASCII 77
LET comprimido_12_off = ASCII 27, ASCII 80
LET l = (147 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, comprimido_12_off,Negrillas_on
PRINT COLUMN 1, "coprrp027",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 140, "Pag. ",pageno using "###"
PRINT COLUMN 50, " SISTEMA DE COMPRAS",
COLUMN 140, today using "dd/mm/yy"
PRINT COLUMN 50, " PLAN DE REORDEN MENSUAL SEGUN PROYECCIONES",
COLUMN 140, time
SKIP 1 LINE
PRINT COLUMN 1, "FECHA: Del ", x.fecha_del using "dd/mmm/yy",
" Al ", x.fecha_al using "dd/mmm/yy"
PRINT COLUMN 1, "-------------------------------------------------",
"-------------------------------------------------",
"-------------------------------------------------"
PRINT COLUMN 52, "UNIDAD",
COLUMN 134, "FECHA DE"
PRINT COLUMN 19, "MATERIAL",
COLUMN 52, "MEDIDA",
COLUMN 64, "TIPO",
COLUMN 81, "CANTIDAD",
COLUMN 101, "C & F",
COLUMN 134, "REORDEN"
PRINT COLUMN 1, "-------------------------------------------------",
"-------------------------------------------------",
"-------------------------------------------------"
PRINT negrillas_on
BEFORE GROUP OF x.mes_reord
PRINT negrillas_on
PRINT COLUMN 1, x.mes_reord
PRINT negrillas_off
LET t_c_flete = 0
IF t_t_flete IS NULL THEN
LET t_t_flete = 0
END IF
ON EVERY ROW
###### Selecionando la ultima orden de compra para un material
SELECT UNIQUE cod_n,cod_grupo,cod_tipo,cod_sec,max(num_oc)
INTO c_cod_n,c_cod_grupo,c_cod_tipo,c_cod_sec,num_ord
FROM cotb00015
WHERE cod_n = x.cod_n AND cod_grupo = x.cod_grupo AND
cod_tipo = x.cod_tipo AND cod_sec = x.cod_sec GROUP BY 1,2,3,4
###### Selecionando canmtidad y precio del material
SELECT UNIQUE cantidad,precio INTO cant,prec
FROM cotb00015
WHERE cod_n = c_cod_n AND cod_grupo = c_cod_grupo AND
cod_tipo = c_cod_tipo AND cod_sec = c_cod_sec AND num_oc = num_ord
####### Selecionando los gastos que se incurren en la traida de materiales
SELECT UNIQUE c_flete,otros_g INTO c_c_flete,c_otros_g
FROM cotb00014
WHERE num_oc = num_ord AND status_t IS NULL AND fech_oc > "010694"
####### Selecionando la base de medida para la compra de un material
SELECT UNIQUE MAX(a.base) INTO c_base FROM intb00002 a
WHERE 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.status_t IS NULL
IF c_base IS NULL THEN
LET c_base = 1
END IF
IF c_c_flete IS NULL THEN
LET c_c_flete = 0
END IF
IF c_otros_g IS NULL THEN
LET c_otros_g = 0
END IF
###### Calculando el costo para la compra de un material
LET costo = ((cant * prec)/c_base) + (c_c_flete + c_otros_g)
PRINT COLUMN 2, x.cod_n using "&","-",x.cod_grupo using "&","-",
x.cod_tipo using "&&","-",x.cod_sec using "&&&",
COLUMN 15, x.descrip_esp clipped,
COLUMN 55, x.unidad_med,
COLUMN 63, x.tipo clipped,
COLUMN 75, cant using "###,###,###.##",
COLUMN 92, costo using "###,###,###.##",
COLUMN 136, x.dia_reord
##### Acumulando total por mes de reorden
LET t_c_flete = t_c_flete + costo
##### Acumulando total general
LET t_t_flete = t_t_flete + costo
AFTER GROUP OF x.mes_reord
PRINT negrillas_on
PRINT COLUMN 81,"TOTAL...",
COLUMN 94,t_c_flete using "###,###,###.##"
PRINT negrillas_off
ON LAST ROW
SKIP 1 LINE
PRINT negrillas_on
PRINT COLUMN 73, "TOTAL GENERAL...",
COLUMN 94, t_t_flete using "###,###,###.##"
PRINT negrillas_on,comprimido_12_off
END REPORT