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

329 lines
11 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP030
OBJETIVO : REPUESTOS SIN CONSUMO EN ? DIAS
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Septiembre 20, 1996.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE ano_c,p_mes,dias SMALLINT,
fecha1,fecha_hoy DATE
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL irprrp030()
END MAIN
FUNCTION irprrp030()
### Variable de los datos del reporte
DEFINE materia RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
fecha LIKE irtb00006.fecha,
existencia LIKE irtb00002.existencia,
costo LIKE irtb00013.costo_st,
compra LIKE irtb00006.cantidad_2,
ult_consumo LIKE irtb00006.cantidad_2
END RECORD,
dia_ult SMALLINT,
fecha_ult DATE
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp030 FROM "irfmrp030"
DISPLAY FORM irfmrp030
CALL pantalla()
DISPLAY "irprrp030" AT 4,3
DISPLAY "Repuestos Sin Consumo En X Dias" AT 6,22
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
INPUT BY NAME dias
AFTER FIELD dias
IF dias IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD dias
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 b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
### Proceso Para Cancelar Reportes
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET fecha_hoy = TODAY USING "dd/mm/yy"
LET fecha1 = fecha_hoy - dias
## Buscando Informacion Dependiendo del tipo deseado
LET SELEC =
"SELECT UNIQUE b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
" b.descrip_esp[1,30],b.unidad_med,MAX(a.fecha) ",
"FROM intb00001 b,irtb00006 a, irtb00005 c ",
"WHERE (b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND ",
" b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec) AND ",
criterio clipped," and (a.status_t IS NULL) AND (b.status_t IS NULL) ",
" AND (a.num_doc = a.num_doc AND a.cod_mov = c.cod_mov) ",
" AND c.status_mov = 2 ",
"GROUP BY 1,2,3,4,5,6 ",
"ORDER BY 1,2,3,4 "
DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 17,14
ATTRIBUTE (BOLD)
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion
LET selec1 =
"SELECT COUNT(*) ",
"FROM intb00001 b,irtb00006 a, irtb00005 c ",
"WHERE (b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND ",
" b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec) AND ",
criterio clipped," and (a.status_t IS NULL) AND (b.status_t IS NULL) ",
" AND (a.num_doc = a.num_doc AND a.cod_mov = c.cod_mov) ",
" AND c.status_mov = 2 "
PREPARE comando1 FROM selec1
DECLARE busca1 CURSOR FOR comando1
OPEN busca1
START REPORT reporte_30 TO "c:\\archivo"
DISPLAY "<< Reporte Generandose... Espere Por Favor >>" AT 17,14
ATTRIBUTE (BOLD)
FETCH busca1 INTO regi
DISPLAY " " AT 17,14
LET p_param = "S"
WHILE status != notfound
FETCH accion INTO materia.*
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 materia.existencia = 0
LET materia.compra = 0
LET materia.ult_consumo = 0
LET dia_ult = 0
IF fecha_hoy - materia.fecha >= dias THEN
# Busca la existencia del repuesto actual
SELECT SUM(a.cantidad_2) INTO materia.existencia
FROM irtb00006 a
WHERE (a.cod_n = materia.cod_n AND
a.cod_grupo = materia.cod_grupo AND
a.cod_tipo = materia.cod_tipo AND
a.cod_sec = materia.cod_sec) AND
(a.status_t IS NULL)
IF materia.existencia IS NULL THEN
LET materia.existencia = 0
END IF
# Busca el compra a partir de los dias que el usuario proporcione
# hasta la fecha del reporte
SELECT SUM(a.cantidad_2) INTO materia.compra
FROM irtb00006 a
WHERE (a.cod_n = materia.cod_n AND
a.cod_grupo = materia.cod_grupo AND
a.cod_tipo = materia.cod_tipo AND
a.cod_sec = materia.cod_sec AND
a.fecha between fecha1 AND fecha_hoy) AND
(a.num_doc=a.num_doc AND a.cod_mov IN (1,2)) AND
(a.status_t IS NULL)
IF materia.compra IS NULL THEN
LET materia.compra = 0
END IF
# Busca el ultimo Consumo del Repuesto
SELECT MAX(a.fecha),MIN(a.cantidad_2)
INTO fecha_ult,materia.ult_consumo
FROM irtb00006 a ,irtb00005 b
WHERE (a.cod_n = materia.cod_n AND
a.cod_grupo = materia.cod_grupo AND
a.cod_tipo = materia.cod_tipo AND
a.cod_sec = materia.cod_sec AND
a.fecha < fecha1 ) AND
(a.num_doc=a.num_doc AND a.cod_mov = b.cod_mov) AND
b.status_mov = 2 AND
(a.status_t IS NULL)
IF materia.ult_consumo IS NULL THEN
LET materia.ult_consumo = 0
END IF
IF fecha_ult IS NULL THEN
LET fecha_ult = fecha_hoy
END IF
LET dia_ult = fecha_hoy - fecha_ult
# Busca el costo del repuesto
LET ano_c = YEAR(fecha_hoy)
SELECT MAX(a.mes_fin) INTO p_mes
FROM irtb00013 a
WHERE (a.cod_n = materia.cod_n and a.cod_grupo = materia.cod_grupo and
a.cod_tipo = materia.cod_tipo and a.cod_sec = materia.cod_sec) and
(a.ano = ano_c) and a.status_t is null
SELECT a.costo_st INTO materia.costo FROM irtb00013 a
WHERE (a.cod_n = materia.cod_n and a.cod_grupo = materia.cod_grupo and
a.cod_tipo = materia.cod_tipo and a.cod_sec = materia.cod_sec) and
(a.ano = ano_c and a.mes_fin = p_mes) and a.status_t is null
IF status = notfound THEN
LET status = 0
END IF
# IF materia.existencia > 0 THEN
OUTPUT TO REPORT reporte_30(materia.*,dia_ult)
# END IF
END IF
END WHILE
FINISH REPORT reporte_30
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte_30(x,dias1)
DEFINE x RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
fecha LIKE irtb00006.fecha,
existencia LIKE irtb00002.existencia,
costo LIKE irtb00013.costo_st,
compra LIKE irtb00006.cantidad_2,
ult_consumo LIKE irtb00006.cantidad_2
END RECORD,
dias1 SMALLINT,
doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off,
normal,doce CHAR(3),
hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 4
BOTTOM MARGIN 2
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 comp_on = ASCII 15
#LET comp_off = ASCII 18
#LET doce = ASCII 27, ASCII 77
#LET normal = ASCII 27, ASCII 80
LET negrillas_on = ASCII 027, ASCII 098
LET negrillas_off = ASCII 027, ASCII 099
LET comp_on = ASCII 31
LET comp_off = ASCII 029
LET doce = ASCII 030
LET normal = ASCII 029
LET hora = time
PRINT COLUMN 1, comp_off,doce ,negrillas_on
PRINT COLUMN 1, "irprrp030",
COLUMN 65, " M A R M O T E C H S. A.",
COLUMN 145, "Pag. ",PAGENO USING "###"
PRINT COLUMN 65, " Sistema de Inventario de Repuestos ",
COLUMN 145, TODAY USING "dd/mm/yy"
PRINT COLUMN 65, " Repuestos Sin Consumo En ",dias USING "<<<",
" dias",
COLUMN 148, hora
PRINT COLUMN 1, "Fecha de Corte: ", TODAY USING "dd/mm/yy"
#PRINT comp_on
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-----------------------------------------------------"
PRINT COLUMN 130, "CANTIDAD"
PRINT COLUMN 65, "COSTO",
COLUMN 85, "EXISTENCIA",
COLUMN 100, "VALOR",
COLUMN 115, "COMPRA",
COLUMN 130, "ULTIMO"
PRINT COLUMN 1, "CODIGO",
COLUMN 12, "DESCRIPCION ",
COLUMN 45, "UNIDAD",
COLUMN 65, "UNITARIO",
COLUMN 85, "ACTUAL",
COLUMN 100, "EXISTENCIA",
COLUMN 115, "PERIODO",
COLUMN 130, "CONSUMO",
COLUMN 145, "NO. DIAS"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-----------------------------------------------------"
PRINT COLUMN 1, negrillas_off
ON EVERY ROW
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&",
COLUMN 12, x.descrip_esp ,
COLUMN 45, x.unidad_med ,
COLUMN 62, x.costo USING "###,###.###",
COLUMN 85, x.existencia USING "#,###",
COLUMN 96, x.costo * x.existencia USING "#,###,###.##",
COLUMN 112, x.compra USING "##,###.##",
COLUMN 127, x.ult_consumo USING "#,###.##",
COLUMN 145, dias1 USING "#,###"
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 96, "------------"
PRINT COLUMN 3, "Total ===> ",
COLUMN 96, SUM(x.costo * x.existencia) USING "#,###,###.##"
PRINT COLUMN 1, "====================================================",
"================================================="
PRINT comp_off,normal
END REPORT