{ ------------------------------------------------------------------ PROGRAMA : IRPRMT002 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Maestra Repuestos. PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Febrero 15, 1992. MODIFICADO POR : Ing. Elvis García FECHA : Agosto 15, 2024 ------------------------------------------------------------------ } GLOBALS "irprgb000.4gl" DEFINE exist_act DECIMAL(12,2) DEFINE user1 CHAR(9) DEFINE fech1 DATETIME YEAR TO MINUTE, arr_tabla DYNAMIC ARRAY OF RECORD articulo VARCHAR(150), existencia FLOAT, exist_minima FLOAT, dias_transito INT, xcuenta1 VARCHAR(14), status_t CHAR(1), enviarMX CHAR(5), codn,codgrupo,codtipo,codsec INT, id_maintainX INT END RECORD DEFINE xcodid INT, xcuenta VARCHAR(14), arr_trans DYNAMIC ARRAY OF RECORD fecha VARCHAR(15), movimiento VARCHAR(100), num_doc INT, cantidad FLOAT END RECORD, maintainGO BOOLEAN , answer, checkMaintainID INT DEFINE sp_nom STRING, colors DYNAMIC ARRAY OF STRING MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT TO "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL irprmt002() END MAIN FUNCTION irprmt002() CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM irfmmt002 FROM "irfmmt002" DISPLAY FORM irfmmt002 #CALL pantalla() DISPLAY "irprmt002" AT 4,3 DISPLAY "Maestra de Repuestos" at 6,30 CALL busca_maestra() END FUNCTION FUNCTION irpcad002() ## Captura los datos que va a contener el registro INPUT BY NAME m_articulos.*,xcuenta, maintainGO BEFORE INPUT INITIALIZE m_articulos TO NULL CALL cuentas() LET maintainGo = FALSE ## Verifica que el codigo no exista en el catalogo de m_aINPrticulos. Si existe, ## entonces despliega los datos del registro existente. BEFORE FIELD cod_sec SELECT MAX(a.cod_sec) INTO m_articulos.cod_sec FROM irtb00002 a WHERE a.cod_n = m_articulos.cod_n and a.cod_grupo = m_articulos.cod_grupo and a.cod_tipo = m_articulos.cod_tipo IF m_articulos.cod_sec IS NULL THEN LET m_articulos.cod_sec = 1 ELSE LET m_articulos.cod_sec = m_articulos.cod_sec + 1 END IF DISPLAY m_articulos.cod_sec AFTER FIELD cod_sec IF (m_articulos.cod_n = 0 AND m_articulos.cod_grupo = 0 AND m_articulos.cod_tipo = 0 AND m_articulos.cod_sec = 0 ) THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF SELECT a.* INTO articulos.* FROM irtb00002 a WHERE a.cod_n = m_articulos.cod_n AND a.cod_grupo = m_articulos.cod_grupo AND a.cod_tipo = m_articulos.cod_tipo AND a.cod_sec = m_articulos.cod_sec IF status != NOTFOUND THEN IF articulos.status_t IS NOT NULL THEN LET numero_msg = 39 CALL msg(numero_msg) DISPLAY BY NAME articulos.descrip_esp, articulos.status_t THRU articulos.fech_mod END IF LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_n END IF { AFTER FIELD codid NEXT FIELD xcuenta AFTER FIELD xcuenta NEXT FIELD cod_sp } AFTER FIELD cod_sp_sec IF m_articulos.cod_sp IS NOT NULL AND m_articulos.cod_sp_sec IS NOT NULL THEN SELECT nom_sp, id_maintainx INTO sp_nom, checkMaintainID FROM cotb00001 WHERE cod_sp = m_articulos.cod_sp AND cod_sp_sec = m_articulos.cod_sp_sec IF STATUS = NOTFOUND THEN CALL msg(3) ELSE DISPLAY BY NAME sp_nom END IF END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF SELECT unique cod_n FROM irtb00006 WHERE cod_n = m_articulos.cod_n and cod_grupo = m_articulos.cod_grupo and cod_tipo = m_articulos.cod_tipo and cod_sec = m_articulos.cod_sec and cod_mov = 99 and status_t is null IF status = notfound THEN LET datos_gen.num_doc = 0 SELECT MAX(a.num_doc) INTO datos_gen.num_doc FROM irtb00006 a WHERE a.status_t IS NULL AND a.cod_mov = 99 IF datos_gen.num_doc IS NULL THEN LET datos_gen.num_doc = 0 END IF LET datos_gen.num_doc = datos_gen.num_doc + 1 IF xcuenta IS NULL THEN CALL msg(16) NEXT FIELD xcuenta END IF IF m_articulos.unidad_med IS NULL THEN CALL msg(16) NEXT FIELD unidad_med END IF IF maintainGo THEN IF checkMaintainID IS NULL THEN CALL fgl_winmessage( "NO EXISTE PROVEEDOR", "El proveedor insertado no se encuentra en MaintainX", "stop") NEXT FIELD cod_sp END IF END IF IF MaintainGO THEN CALL ApiMaintainR('POST',NULL, m_articulos.*,null) RETURNING m_articulos.id_maintainX IF m_articulos.id_maintainX IS NULL OR m_articulos.id_maintainX = 0 THEN ROLLBACK WORK ELSE DISPLAY "nuevo ID: ",m_articulos.id_maintainX LET m_articulos.enviarMX = 'SI' END IF DISPLAY "YES" END IF INSERT INTO irtb00006 (num_doc ,fecha ,cod_mov ,cod_n ,cod_grupo ,cod_tipo ,cod_sec ,cantidad_2 ,us_crea ,fech_crea ,bodega ,costo_act ,costo_old) VALUES (datos_gen.num_doc,today,99, m_articulos.cod_n,m_articulos.cod_grupo, m_articulos.cod_tipo,m_articulos.cod_sec, m_articulos.existencia, USUARIOS,GETDATE(),1,0,0) END IF BEGIN WORK INSERT INTO irtb00002 (cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp,descrip_ing,unidad_med,existencia ,exist_min,{dia_llegada,}categoria,us_crea,fech_crea,cuenta, id_maintainX, enviarMX,cod_sp,cod_sp_sec) VALUES (m_articulos.cod_n,m_articulos.cod_grupo, m_articulos.cod_tipo,m_articulos.cod_sec, m_articulos.descrip_esp, m_articulos.descrip_ing,m_articulos.unidad_med, m_articulos.existencia, m_articulos.exist_min,{dia_llegada,} m_articulos.categoria,usuarios,getdate(),xcuenta, m_articulos.id_maintainX, m_articulos.enviarMX, m_articulos.cod_sp, m_articulos.cod_sp_sec) IF m_articulos.categoria IS NOT NULL THEN INSERT INTO irtb00016 VALUES (m_articulos.cod_n,m_articulos.cod_grupo, m_articulos.cod_tipo,m_articulos.cod_sec, m_articulos.categoria,TODAY,null,usuarios,getdate(),null,null) END IF IF SQLCA.SQLCODE < 0 THEN ROLLBACK WORK ELSE COMMIT WORK LET numero_msg = 1 CALL msg(numero_msg) END IF CLEAR FORM END input END FUNCTION FUNCTION irpcmf002() {CLEAR FORM ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, a.descrip_esp,a.descrip_ing FROM cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp, descrip_ing IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " a.existencia,a.exist_min,a.dia_llegada,a.categoria, ", " a.status_t,a.us_crea,a.fech_crea,a.us_mod,a.fech_mod, ", " a.descrip_esp,a.descrip_ing,a.unidad_med,a.codid ", "FROM irtb00002 a ", "WHERE ", criterio clipped," ORDER BY 1,2,3,4 " PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO m_articulos.cod_n ,m_articulos.cod_grupo ,m_articulos.cod_tipo ,m_articulos.cod_sec , m_articulos.existencia,m_articulos.exist_min,m_articulos.dia_llegada,m_articulos.categoria, m_articulos.status_t,m_articulos.us_crea,m_articulos.fech_crea,m_articulos.us_mod, m_articulos.fech_mod, descrip_esp,descrip_ing,medida,xcodid IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL art_existe() DISPLAY BY NAME m_articulos.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO m_articulos.cod_n ,m_articulos.cod_grupo ,m_articulos.cod_tipo ,m_articulos.cod_sec , m_articulos.existencia,m_articulos.exist_min,m_articulos.dia_llegada,m_articulos.categoria, m_articulos.status_t,m_articulos.us_crea,m_articulos.fech_crea,m_articulos.us_mod, m_articulos.fech_mod, descrip_esp,descrip_ing,medida,xcodid IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF CALL art_existe() DISPLAY BY NAME m_articulos.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO m_articulos.cod_n ,m_articulos.cod_grupo ,m_articulos.cod_tipo ,m_articulos.cod_sec , m_articulos.existencia,m_articulos.exist_min,m_articulos.dia_llegada,m_articulos.categoria, m_articulos.status_t,m_articulos.us_crea,m_articulos.fech_crea,m_articulos.us_mod, m_articulos.fech_mod, descrip_esp,descrip_ing,medida,xcodid IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF CALL art_existe() DISPLAY BY NAME m_articulos.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO m_articulos.cod_n ,m_articulos.cod_grupo ,m_articulos.cod_tipo ,m_articulos.cod_sec , m_articulos.existencia,m_articulos.exist_min,m_articulos.dia_llegada,m_articulos.categoria, m_articulos.status_t,m_articulos.us_crea,m_articulos.fech_crea,m_articulos.us_mod, m_articulos.fech_mod, descrip_esp,descrip_ing,medida,xcodid CALL art_existe() DISPLAY BY NAME m_articulos.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" } INITIALIZE maintainGO TO NULL LET user1 = m_articulos.us_crea LET fech1 = m_articulos.fech_crea INPUT BY NAME m_articulos.descrip_esp,m_articulos.descrip_ing,m_articulos.unidad_med,m_articulos.exist_min, m_articulos.dia_llegada,xcuenta, m_articulos.id_maintainX, m_articulos.enviarMX, maintainGO, m_articulos.cod_sp, m_articulos.cod_sp_sec WITHOUT DEFAULTS AFTER FIELD cod_sp_sec IF m_articulos.cod_sp IS NOT NULL AND m_articulos.cod_sp_sec IS NOT NULL THEN SELECT nom_sp, id_maintainx INTO sp_nom, checkMaintainID FROM cotb00001 WHERE cod_sp = m_articulos.cod_sp AND cod_sp_sec = m_articulos.cod_sp_sec IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD cod_sp ELSE DISPLAY BY NAME sp_nom END IF END IF NEXT FIELD maintainGO AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF xcuenta IS NULL THEN CALL msg(16) NEXT FIELD xcuenta END IF IF m_articulos.unidad_med IS NULL THEN CALL msg(16) NEXT FIELD unidad_med END IF IF maintainGo THEN IF checkMaintainID IS NULL THEN CALL fgl_winmessage( "NO EXISTE PROVEEDOR", "El proveedor insertado no se encuentra en MaintainX", "stop") NEXT FIELD cod_sp END IF END IF SELECT costo_st INTO m_articulos.descrip_ing from irtb00013 where mes_fin = 12 and ano = 2024 and cod_n =m_articulos.cod_n AND cod_grupo = m_articulos.cod_grupo AND cod_tipo = m_articulos.cod_tipo AND cod_sec = m_articulos.cod_sec AND status_t IS NULL SELECT SUM(cantidad_2) INTO m_articulos.existencia from irtb00006 WHERE cod_n =m_articulos.cod_n AND cod_grupo = m_articulos.cod_grupo AND cod_tipo = m_articulos.cod_tipo AND cod_sec = m_articulos.cod_sec AND status_t IS NULL BEGIN WORK IF MaintainGO THEN IF m_articulos.id_maintainX IS NULL THEN CALL ApiMaintainR('POST',NULL, m_articulos.*,usuarios) RETURNING answer IF answer IS NOT NULL THEN LET m_articulos.id_maintainx = answer END IF ELSE CALL ApiMaintainR('PATCH',m_articulos.id_maintainX, m_articulos.*,usuarios) RETURNING answer END IF IF answer IS NULL THEN ROLLBACK WORK DISPLAY "NULL ANSWER" ELSE DISPLAY "SUCCESS" LET m_articulos.enviarmx = 'SI' INITIALIZE m_articulos.descrip_ing, m_articulos.existencia TO NULL END IF END IF UPDATE irtb00002 SET (descrip_esp,descrip_ing,unidad_med ,exist_min,dia_llegada,categoria,us_mod,fech_mod,cuenta, id_maintainX, enviarMX, cod_sp, cod_sp_sec) = (m_articulos.descrip_esp, m_articulos.descrip_ing,m_articulos.unidad_med, m_articulos.exist_min, m_articulos.dia_llegada,m_articulos.categoria, usuarios,GETDATE(),xcuenta, m_articulos.id_maintainX, m_articulos.enviarMX, m_articulos.cod_sp, m_articulos.cod_sp_sec) WHERE codid = xcodid IF m_articulos.existencia is null THEN LET m_articulos.existencia = 0 END IF SELECT a.* FROM irtb00006 a WHERE a.cod_n=m_articulos.cod_n and a.cod_grupo=m_articulos.cod_grupo and a.cod_tipo=m_articulos.cod_tipo and a.cod_sec=m_articulos.cod_sec and a.cod_mov = 99 and status_t is null IF STATUS = NOTFOUND THEN INSERT INTO irtb00006 VALUES (1,today,null,null,null,null,null,null,99,null, m_articulos.cod_n,m_articulos.cod_grupo,m_articulos.cod_tipo, m_articulos.cod_sec,null,m_articulos.existencia,null,null,null, null,user1,fech1,useruarios,getdate()) ELSE UPDATE irtb00006 SET (cantidad_2,us_mod,fech_mod) = (m_articulos.existencia,usuarios,getdate()) WHERE @cod_n=m_articulos.cod_n and @cod_grupo=m_articulos.cod_grupo and @cod_tipo=m_articulos.cod_tipo and @cod_sec=m_articulos.cod_sec and @cod_mov = 99 and status_t is null END IF SELECT a.* FROM irtb00016 a WHERE a.cod_n=m_articulos.cod_n and a.cod_grupo=m_articulos.cod_grupo and a.cod_tipo=m_articulos.cod_tipo and a.cod_sec=m_articulos.cod_sec IF STATUS = NOTFOUND THEN IF m_articulos.categoria IS NOT NULL THEN INSERT INTO irtb00016 VALUES(m_articulos.cod_n,m_articulos.cod_grupo,m_articulos.cod_tipo, m_articulos.cod_sec,m_articulos.categoria,today,null,usuarios, GETDATE(),null,null) END IF ELSE IF m_articulos.categoria IS NOT NULL THEN UPDATE irtb00016 SET categoria = m_articulos.categoria, us_mod = usuarios, fech_mod = getdate() WHERE @cod_n = m_articulos.cod_n AND @cod_grupo = m_articulos.cod_grupo AND @cod_tipo = m_articulos.cod_tipo AND @cod_sec = m_articulos.cod_sec ELSE DELETE FROM irtb00016 WHERE @cod_n = m_articulos.cod_n AND @cod_grupo = m_articulos.cod_grupo AND @cod_tipo = m_articulos.cod_tipo AND @cod_sec = m_articulos.cod_sec END IF END IF IF SQLCA.SQLCODE < 0 THEN ROLLBACK WORK ELSE COMMIT WORK LET numero_msg = 13 CALL msg(numero_msg) END IF END INPUT END FUNCTION FUNCTION llena_tabla() CALL arr_tabla.clear() CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp FROM codn1,codgrupo1,codtipo1,codsec1,descripcion1 AFTER CONSTRUCT IF int_flag THEN CALL msg(2) EXIT CONSTRUCT END IF END CONSTRUCT IF int_flag THEN LET int_flag = FALSE RETURN END IF LET selec = " SELECT CAST(a.cod_n AS VARCHAR(5))+'-'+CAST(a.cod_grupo AS VARCHAR(5))+'-'+CAST(a.cod_tipo AS VARCHAR(5))+'-'+ CAST(a.cod_sec AS VARCHAR(5))+' '+RTRIM(a.descrip_esp)+' '+a.unidad_med, ISNULL(SUM(b.cantidad_2),0),a.exist_min,a.dia_llegada,a.cuenta,a.status_t,a.enviarMX, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec, a.id_maintainX, a.cod_sp, a.cod_sp_sec FROM irtb00002 a,irtb00006 b WHERE ",criterio CLIPPED," AND (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) " #(b.status_t IS NULL) AND (a.status_t IS NULL) ,"GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_Esp,a.exist_min,a.dia_llegada,a.unidad_med, a.cuenta,a.status_t,a.enviarMX, a.id_maintainX, a.cod_sp, a.cod_sp_sec ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec " #DISPLAY SELEC PREPARE cllena FROM selec DECLARE busca_maestra CURSOR FOR cllena LET idx = 1 FOREACH busca_maestra INTO arr_tabla[idx].* IF arr_tabla[idx].status_t IS NOT NULL THEN LET colors[idx] = "lightred reverse" ELSE LET colors[idx] = NULL END IF LET idx =idx + 1 END FOREACH END FUNCTION FUNCTION busca_maestra() CALL llena_tabla() DIALOG ATTRIBUTE(UNBUFFERED) DISPLAY ARRAY arr_tabla TO stabla.* BEFORE DISPLAY IF arr_tabla[arr_curr()].status_t IS NOT NULL THEN CALL dialog.setCellAttributes(colors) END IF ON ACTION eliminar ATTRIBUTE(TEXT="DESACTIVAR",IMAGE="delete") IF m_articulos.cod_n IS NOT NULL THEN LET exist_act = 0 SELECT ISNULL(SUM(a.cantidad_2),0) INTO exist_act FROM irtb00006 a WHERE a.cod_n = m_articulos.cod_n AND a.cod_grupo = m_articulos.cod_grupo AND a.cod_tipo = m_articulos.cod_tipo AND a.cod_sec = m_articulos.cod_sec AND a.status_t IS NULL IF exist_act = 0 THEN LET opt = fgl_winquestion("ELIMINAR","ESTA SEGURO?","NO","NO|YES","QUESTION",0) LET opt =upshift(opt) IF opt = "YES" THEN BEGIN WORK INITIALIZE answer TO NULL UPDATE irtb00002 SET (status_t,us_mod,fech_mod) = ("E",usuarios,GETDATE()) WHERE @cod_n = arr_tabla[arr_curr()].codn AND @cod_grupo = arr_tabla[arr_curr()].codgrupo AND @cod_tipo = arr_tabla[arr_curr()].codtipo AND @cod_sec = arr_tabla[arr_curr()].codsec UPDATE irtb00016 SET (status_t,us_mod,fech_mod) = ("E",usuarios,GETDATE()) WHERE @cod_n = arr_tabla[arr_curr()].codn AND @cod_grupo = arr_tabla[arr_curr()].codgrupo AND @cod_tipo = arr_tabla[arr_curr()].codtipo AND @cod_sec = arr_tabla[arr_curr()].codsec IF arr_tabla[arr_curr()].id_maintainX IS NOT NULL THEN CALL ApiMaintainR('DELETE',arr_tabla[arr_curr()].id_maintainX, m_articulos.*,NULL) RETURNING answer IF answer != 1 THEN ROLLBACK WORK END IF END IF IF SQLCA.SQLCODE < 0 THEN ROLLBACK WORK ELSE COMMIT WORK LET numero_msg = 39 CALL msg(numero_msg) END IF END IF ELSE CALL fgl_Winmessage("INFO","NO PUEDES DESACTIVAR ESTE PRODUCTO, TIENE EXISTENCIA","INFO") END IF END IF ON ACTION refrescar ATTRIBUTE(TEXT="Refrescar",IMAGE="refresh") CALL llena_tabla() ON ACTION actualiza IF arr_tabla[arr_curr()].codn IS NOT NULL THEN INITIALIZE m_articulos TO NULL LET SELEC = "SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " a.exist_min,a.dia_llegada,a.categoria, ", " a.status_t,a.us_crea,a.fech_crea,a.us_mod,a.fech_mod, ", " a.descrip_esp,a.descrip_ing,a.unidad_med,a.codid, ", " a.cuenta, a.enviarMX, a.id_maintainx, a.cod_sp, a.cod_sp_sec ", "FROM irtb00002 a ", "WHERE (a.cod_n = ",arr_tabla[arr_curr()].codn," AND ", " a.cod_Grupo = ",arr_tabla[arr_curr()].codgrupo, " AND ", " a.cod_tipo = ",arr_tabla[arr_curr()].codtipo, " AND ", " a.cod_sec = ",arr_tabla[arr_curr()].codsec, ")" PREPARE busca FROM selec EXECUTE busca INTO m_articulos.cod_n ,m_articulos.cod_grupo ,m_articulos.cod_tipo ,m_articulos.cod_sec , m_articulos.exist_min,m_articulos.dia_llegada,m_articulos.categoria, m_articulos.status_t,m_articulos.us_crea,m_articulos.fech_crea,m_articulos.us_mod, m_articulos.fech_mod, m_articulos.descrip_esp,m_articulos.descrip_ing,medida,xcodid,xcuenta, m_articulos.enviarMX, m_articulos.id_maintainX, m_articulos.cod_sp, m_articulos.cod_sp_sec LET m_articulos.unidad_med =medida DISPLAY BY NAME m_articulos.unidad_med DISPLAY arr_tabla[arr_curr()].existencia TO existencia1 CALL cuentas() DISPLAY BY NAME m_articulos.cod_n ,m_articulos.cod_grupo ,m_articulos.cod_tipo ,m_articulos.cod_sec , m_articulos.exist_min,m_articulos.dia_llegada,m_articulos.categoria, m_articulos.status_t,m_articulos.us_crea,m_articulos.fech_crea,m_articulos.us_mod, m_articulos.fech_mod, m_articulos.descrip_esp,m_articulos.descrip_ing, m_articulos.unidad_med,xcuenta, m_articulos.enviarMX, m_articulos.id_maintainX, m_articulos.cod_sp, m_articulos.cod_sp_sec CALL irpcmf002() END IF AFTER DISPLAY LET m_articulos.cod_n = arr_tabla[arr_curr()].codn LET m_articulos.cod_grupo = arr_tabla[arr_curr()].codgrupo LET m_articulos.cod_tipo = arr_tabla[arr_curr()].codtipo LET m_articulos.cod_sec = arr_tabla[arr_curr()].codsec CALL transacciones() END DISPLAY DISPLAY ARRAY arr_trans TO sdocs.* END DISPLAY ON ACTION adicionar ATTRIBUTE(TEXT="Nuevo",IMAGE="new") INITIALIZE m_articulos TO NULL CALL irpcad002() ON ACTION activar ATTRIBUTE(TEXT="Re-activar",IMAGE="refresh") LET opt = fgl_winquestion("ACTIVACION","SEGURO QUE QUIERE ACTIVAR ESTE REGISTRO?","YES","YES|NO","QUESTION",0) LET opt =upshift(opt) IF opt = "YES" THEN UPDATE irtb00002 SET status_t = NULL WHERE cod_n = arr_tabla[arr_curr()].codn AND cod_grupo = arr_tabla[arr_curr()].codgrupo AND cod_tipo = arr_tabla[arr_curr()].codtipo AND cod_sec = arr_tabla[arr_curr()].codsec IF STATUS != NOTFOUND THEN LET numero_msg = 14 CALL msg(numero_msg) ELSE LET numero_msg = 1663 CALL msg(numero_msg) END IF END IF ON ACTION salir ATTRIBUTE(TEXT="Salir",IMAGE="quit") EXIT DIALOG END DIALOG END FUNCTION FUNCTION transacciones() DECLARE busca_trx CURSOR FOR SELECT CAST(a.fecha AS VARCHAR(15)),CAST(b.cod_mov AS VARCHAR(5))+' '+b.descrip_mov,a.num_doc,a.cantidad_2 FROM irtb00006 a,irtb00005 b WHERE a.cod_mov = b.cod_mov AND (a.cod_n = m_articulos.cod_n AND a.cod_grupo = m_articulos.cod_grupo AND a.cod_tipo = m_articulos.cod_tipo AND a.cod_sec = m_articulos.cod_sec) AND a.status_T IS NULL ORDER BY a.fecha LET idx = 1 FOREACH busca_trx INTO arr_trans[idx].* LET idx = idx + 1 END FOREACH END FUNCTION