{ ------------------------------------------------------------------ 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