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

175 lines
4.8 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IRPRCS007
OBJETIVO : Consultar movimientos de consumo repuestos
por maquina.
PROGRAMADOR : Tadeo A. Ferreras F.
MODIFICADO :
FECHA REALIZACION : Mayo 07,1993.
------------------------------------------------------------------
}
GLOBALS
"irprgb000.4gl"
DEFINE datos_mov RECORD
codigo LIKE irtb00009.codigo,
nombre LIKE irtb00009.nombre,
modelo LIKE irtb00009.modelo,
fecha_in DATE,
fecha_fi DATE,
cod_n SMALLINT
END RECORD
DEFINE mov RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
fecha LIKE irtb00006.fecha,
num_doc LIKE irtb00006.num_doc,
cantidad_2 LIKE irtb00006.cantidad_2,
balance1 DECIMAL(10,2)
END RECORD
DEFINE arr_mov ARRAY[500] OF RECORD
codigo_r CHAR(10),
descripcion CHAR(30),
fecha LIKE irtb00006.fecha,
num_doc LIKE irtb00006.num_doc,
cantidad_2 LIKE irtb00006.cantidad_2,
balance1 DECIMAL(10,2)
END RECORD,
codig CHAR(10)
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL irprcs007()
END MAIN
FUNCTION irprcs007()
OPTIONS
FORM LINE 9
OPEN FORM irfmcs007 FROM "irfmcs007"
CALL pantalla()
DISPLAY "irprcs007" at 4,3 attribute(blue)
DISPLAY "Consumo de Repuesto(s) por Maquina" at 6,23
ATTRIBUTE(blue)
DISPLAY FORM irfmcs007
LABEL vuelve:
INPUT BY NAME datos_mov.*
AFTER FIELD codigo
IF datos_mov.codigo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD codigo
END IF
SELECT nombre,modelo INTO datos_mov.nombre,datos_mov.modelo
FROM irtb00009 WHERE codigo = datos_mov.codigo
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD codigo
END IF
IF STATUS < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
DISPLAY BY NAME datos_mov.nombre,datos_mov.modelo
AFTER FIELD fecha_in
IF datos_mov.fecha_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_in
END IF
BEFORE FIELD fecha_fi
LET datos_mov.fecha_fi = TODAY
DISPLAY BY NAME datos_mov.fecha_fi
AFTER FIELD fecha_fi
IF datos_mov.fecha_fi IS NULL THEN
let datos_mov.fecha_fi = today
END IF
DISPLAY BY NAME datos_mov.fecha_fi
IF datos_mov.fecha_fi < datos_mov.fecha_in THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha_fi
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_grupo,b.cod_tipo,b.cod_sec
FROM cod_grupo,cod_tipo,cod_sec
LET selec = "SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
"a.descrip_esp,b.fecha,b.num_doc,b.cantidad_2 ",
"FROM intb00001 a,irtb00006 b WHERE a.cod_n = b.cod_n ",
"AND b.cantidad_2 <= 0 AND a.cod_grupo = b.cod_grupo ",
"AND a.cod_tipo = b.cod_tipo ",
"AND b.cod_n = ? ",
"AND a.cod_sec = b.cod_sec AND b.maquina = ? ",
"AND b.fecha BETWEEN ? AND ? AND ",
" b.status_t is null AND ",
criterio clipped, "ORDER BY 6,1,2,3,4,7"
DISPLAY "Espere.... Buscando Informacion" AT 23,10
PREPARE comando FROM selec
DECLARE busque CURSOR FOR comando
OPEN busque USING datos_mov.cod_n,datos_mov.codigo,
datos_mov.fecha_in,datos_mov.fecha_fi
LET idx = 1
LET mov.balance1 = 0
WHILE status != notfound
FETCH busque INTO mov.*
IF status = notfound THEN
EXIT WHILE
END IF
LET arr_mov[idx].codigo_r = mov.cod_n using "&","-",
mov.cod_grupo using "&","-",
mov.cod_tipo using "&&","-",
mov.cod_sec using "&&&"
LET arr_mov[idx].descripcion = mov.descripcion clipped
LET arr_mov[idx].fecha = mov.fecha using "dd/mm/yy"
LET arr_mov[idx].num_doc = mov.num_doc using "&&&&&&"
LET arr_mov[idx].cantidad_2 = mov.cantidad_2 using "###,###"
IF arr_mov[idx].codigo_r != codig THEN
LET mov.balance1 = 0
END IF
LET mov.balance1 = mov.balance1 + mov.cantidad_2
LET arr_mov[idx].balance1 = mov.balance1 using "###,###"
LET codig = arr_mov[idx].codigo_r
LET idx = idx + 1
END WHILE
CALL SET_COUNT(idx - 1)
DISPLAY " " AT 23,10
DISPLAY ARRAY arr_mov to p_pant.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
ELSE
CLEAR FORM
goto vuelve
END IF
END FUNCTION