Files
MBS/PROYECTOS/irdir/irprrp040.4gl
T

291 lines
9.6 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP040
OBJETIVO : Costos de Repuestos en Rangos de Fechas
PROGRAMADOR : Abner Montalvo
FECHA REALIZACION : Febrero 13, 1998
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE fecha1,fecha2 DATE
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL irprrp040()
END MAIN
FUNCTION irprrp040()
##### Definicion de la variables a imprimir
DEFINE material_rep RECORD
fecha_r LIKE irtb00027.fecha_r,
cod_n_r LIKE irtb00027.cod_n_r,
cod_grupo_r LIKE irtb00027.cod_grupo_r,
cod_tipo_r LIKE irtb00027.cod_tipo_r,
cod_sec_r LIKE irtb00027.cod_sec_r,
cod_n_m LIKE irtb00027.cod_n_r,
cod_grupo_m LIKE irtb00027.cod_grupo_r,
cod_tipo_m LIKE irtb00027.cod_tipo_r,
cod_sec_m LIKE irtb00027.cod_sec_r,
cantidad_m LIKE irtb00027.cantidad_m,
descrip_r LIKE intb00001.descrip_esp,
unidad_medr LIKE intb00001.unidad_med,
descrip_m LIKE intb00001.descrip_esp,
unidad_medm LIKE intb00001.unidad_med,
costo_st_r LIKE irtb00013.costo_st,
codigo CHAR(7)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp040 FROM "irfmrp040"
DISPLAY FORM irfmrp040
CALL pantalla()
DISPLAY "irprrp040" AT 4,3
DISPLAY "Formulacion de Repuestos Creadas" AT 6,24
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
DISPLAY " "
at 19,14
####### Creando criterio de busqueda
INPUT BY NAME fecha1,fecha2
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 168
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
# CONSTRUCT criterio ON a.maquina,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
# FROM maquina,cod_n,cod_grupo,cod_tipo,cod_sec
##### Creando la facilidad para cancelar opreacion mediante DELETE
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
##### Selecionando la informacion requerida para la salida de
##### informacion
LET selec =
" SELECT a.fecha_r, a.cod_n_r, a.cod_grupo_r, a.cod_tipo_r, a.cod_sec_r, ",
" a.cod_n_m, a.cod_grupo_m, a.cod_tipo_m, a.cod_sec_m, ",
" a.cantidad_m, b.descrip_esp, b.unidad_med ",
" FROM irtb00027 a, intb00001 b ",
" WHERE a.cod_n_r = b.cod_n AND ",
" a.cod_grupo_r = b.cod_grupo AND ",
" a.cod_tipo_r = b.cod_tipo AND ",
" a.cod_sec_r = b.cod_sec AND ",
" a.status_t is NULL AND ",
" a.fecha_r BETWEEN ? AND ? ",
" ORDER BY 2,3,4,5,6,7,8 "
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha1,fecha2
START REPORT mat_repuesto TO "C:\\archivo"
LET p_param = "S"
WHILE STATUS != NOTFOUND
FETCH accion INTO material_rep.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
# CALL termometro(regi,p_param)
# LET p_param = "N"
LET material_rep.codigo = material_rep.cod_n_r USING "&",
material_rep.cod_grupo_r USING "&",
material_rep.cod_tipo_r USING "&&",
material_rep.cod_sec_r USING "&&&"
LET material_rep.costo_st_r = 0
SELECT costo_st INTO material_rep.costo_st_r
FROM irtb00013
WHERE cod_n = material_rep.cod_n_r AND
cod_grupo = material_rep.cod_grupo_r AND
cod_tipo = material_rep.cod_tipo_r AND
cod_sec = material_rep.cod_sec_r AND
ano = YEAR(material_rep.fecha_r) AND
status_t IS NULL
SELECT d.descrip_esp, d.unidad_med
INTO material_rep.descrip_m, material_rep.unidad_medm
FROM intb00001 d
WHERE d.cod_n = material_rep.cod_n_m AND
d.cod_grupo = material_rep.cod_grupo_m AND
d.cod_tipo = material_rep.cod_tipo_m AND
d.cod_sec = material_rep.cod_sec_m {AND
d.status_t IS NULL }
# LET material_rep.valor = 0
# LET material_rep.valor = material_rep.costo_st * material_rep.cantidad_2
OUTPUT TO REPORT mat_repuesto(material_rep.*)
END WHILE
FINISH REPORT mat_repuesto
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
###### Proceso de generacion del reporte.
REPORT mat_repuesto(x)
DEFINE x RECORD
fecha_r LIKE irtb00027.fecha_r,
cod_n_r LIKE irtb00027.cod_n_r,
cod_grupo_r LIKE irtb00027.cod_grupo_r,
cod_tipo_r LIKE irtb00027.cod_tipo_r,
cod_sec_r LIKE irtb00027.cod_sec_r,
cod_n_m LIKE irtb00027.cod_n_r,
cod_grupo_m LIKE irtb00027.cod_grupo_r,
cod_tipo_m LIKE irtb00027.cod_tipo_r,
cod_sec_m LIKE irtb00027.cod_sec_r,
cantidad_m LIKE irtb00027.cantidad_m,
descrip_r LIKE intb00001.descrip_esp,
unidad_medr LIKE intb00001.unidad_med,
descrip_m LIKE intb00001.descrip_esp,
unidad_medm LIKE intb00001.unidad_med,
costo_st_r LIKE irtb00013.costo_st,
codigo CHAR(7)
END RECORD
DEFINE nombre_suplidor CHAR(30)
DEFINE p RECORD
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE nombre CHAR(8),
und CHAR(3) ,
doble_on CHAR(2),
doble_off CHAR(2),
negrillas_on CHAR(2),
negrillas_off CHAR(2),
comprimido_on CHAR(2),
comprimido_off CHAR(2),
primera CHAR(1),
hora CHAR(5),
dia,mes smallint,
nom_dia,nom_mes CHAR(10)
OUTPUT
LEFT MARGIN 0
###### Formateando la salida de la informacion
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
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 dia = WEEKDAY(x.fecha)
# LET mes = MONTH(x.fecha)
# LET primera = "S"
# CALL busca_mes()
# LET nom_mes = nombre_mes[mes]
# LET dia = dia + 1
# CALL busca_dia()
# LET nom_dia = nombre_dia[dia]
PRINT COLUMN 1, comprimido_on, negrillas_on
PRINT COLUMN 1,"irprrp040",
COLUMN 17, " M A R M O T E C H S. A.",
COLUMN 70, "Pag. ",pageno using "###"
PRINT COLUMN 17, " Sistema de Inventario de Repuestos",
COLUMN 70, today using "dd/mm/yy"
PRINT COLUMN 17, " Formulacion de Repuestos Creadas ",
COLUMN 73, hora
PRINT COLUMN 24, "Del ",fecha1 USING "dd/mm/yy", " Al ",
fecha2 USING "dd/mm/yy"
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------",
"----"
PRINT COLUMN 1, "Repuesto /",
COLUMN 60, "Fecha",
COLUMN 70, " Costo ",
COLUMN 85, " Cantidad "
PRINT COLUMN 1, "Material ",
COLUMN 60, "Creacion",
COLUMN 70, " Estandar "
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------",
"----"
PRINT COLUMN 1, negrillas_off
BEFORE GROUP OF x.codigo
PRINT COLUMN 1, negrillas_on, x.cod_n_r USING "&","-",
x.cod_grupo_r USING "&","-",
x.cod_tipo_r USING "&&","-",x.cod_sec_r USING "&&&",
" ", x.descrip_r CLIPPED," ",x.unidad_medr CLIPPED,
COLUMN 60, x.fecha_r USING "dd/mm/yy",
COLUMN 70, x.costo_st_r USING "###,###,##&.&&", negrillas_off
ON EVERY ROW
PRINT COLUMN 1, x.cod_n_m USING "&","-",x.cod_grupo_m USING "&","-",
x.cod_tipo_m USING "&&","-",x.cod_sec_m USING "&&&",
" ", x.descrip_m CLIPPED," ",x.unidad_medm CLIPPED,
COLUMN 85, x.cantidad_m USING "###,###,##&.&&"
AFTER GROUP OF x.codigo
SKIP 1 LINE
ON LAST ROW
SKIP 1 LINE
# PRINT COLUMN 1, "Total Formulaciones Nuevas ==> ", COUNT(x.codigo)
PRINT comprimido_off
END REPORT