JSOTO acprmt001: ALTER de actb00001 y arreglos de MaintainX y lista
- acprmt001_alter_actb00001.sql: crea en actb00001 las columnas cod_sp, cod_sp_sec, tipo_activo y activo_padre (NULL). Las usa la version ene-2025 del programa (integracion MaintainX) y nunca se habian creado en ninguna base. Aplicado en la .250; pendiente en produccion. - Si MaintainX falla (Adicionar/Modificar con la casilla marcada, Eliminar con id_maintainx) se cancela la operacion; antes hacia ROLLBACK y seguia grabando fuera de la transaccion (COMMIT -255). - Eliminar: parametros de ApiMaintainX en el orden de la firma (infoArray, maquinaria). - Lista: se quita la fila vacia final; getdata usa el codigo como parametro (antes "WHERE a.codigo = " sin valor daba -201) y filtra la maquina inactiva en el ON del LEFT JOIN. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -442,6 +442,11 @@ FUNCTION acpcad001() --Consultar Datos Activo
|
||||
LET i = i + 1
|
||||
|
||||
END FOREACH
|
||||
-- el FOREACH deja un elemento vacio al final; al seleccionarlo getdata armaba
|
||||
-- "WHERE a.codigo = " sin valor (-201) y el programa se caia
|
||||
IF DisArray.getLength() >= i THEN
|
||||
CALL DisArray.deleteElement(i)
|
||||
END IF
|
||||
|
||||
END FUNCTION
|
||||
|
||||
@@ -470,12 +475,12 @@ FUNCTION getdata(idx INT)
|
||||
,a.id_MaintainX
|
||||
,a.id_codigo
|
||||
,b.nombre
|
||||
FROM actb00001 a left join irtb00009 b on a.id_codigo = b.codigo
|
||||
WHERE a.codigo = " || DisArray[idx].codigo1 || "
|
||||
AND a.status_t is null and b.status_t is null
|
||||
FROM actb00001 a left join irtb00009 b on a.id_codigo = b.codigo AND b.status_t is null
|
||||
WHERE a.codigo = ?
|
||||
AND a.status_t is null
|
||||
ORDER BY a.codigo"
|
||||
|
||||
EXECUTE query INTO infoArray.*
|
||||
EXECUTE query USING DisArray[idx].codigo1 INTO infoArray.*
|
||||
|
||||
SELECT a.descripcion
|
||||
INTO des.descripcion2
|
||||
@@ -568,6 +573,9 @@ FUNCTION insertData()
|
||||
|
||||
IF infoArray.id_MaintainX IS NULL THEN
|
||||
ROLLBACK WORK
|
||||
-- antes seguia grabando fuera de la transaccion (el COMMIT caia -255)
|
||||
CALL fgl_winmessage("MaintainX", "NO SE PUDO REGISTRAR EN MAINTAINX, OPERACION CANCELADA", "stop")
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
|
||||
@@ -701,6 +709,8 @@ INITIALIZE checking TO NULL
|
||||
|
||||
IF answer IS NULL THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("MaintainX", "NO SE PUDO ACTUALIZAR MAINTAINX, OPERACION CANCELADA", "stop")
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
|
||||
@@ -811,11 +821,13 @@ INITIALIZE checking TO NULL
|
||||
END IF
|
||||
|
||||
IF infoArray.id_MaintainX IS NOT NULL THEN
|
||||
CALL ApiMaintainX('DELETE',infoArray.id_MaintainX,maquinaria.*, infoArray.*,extraCampos.*,NULL)
|
||||
CALL ApiMaintainX('DELETE',infoArray.id_MaintainX,infoArray.*,maquinaria.*,extraCampos.*,NULL) -- antes maquinaria/infoArray invertidos
|
||||
RETURNING answer
|
||||
|
||||
IF answer != 1 THEN
|
||||
IF answer != 1 OR answer IS NULL THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("MaintainX", "NO SE PUDO ELIMINAR EN MAINTAINX, OPERACION CANCELADA", "stop")
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
END IF
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
-- acprmt001 (version ene-2025, integracion MaintainX) usa 4 columnas que nunca se
|
||||
-- crearon en actb00001: proveedor del activo, tipo de activo y activo padre.
|
||||
-- Todas NULL: no afectan filas existentes ni a los programas que no las usan.
|
||||
-- Ejecutar primero en la .250 (QA G6); en produccion (.40.8) solo cuando se apruebe.
|
||||
USE marmotech;
|
||||
GO
|
||||
IF COL_LENGTH('dbo.actb00001','cod_sp') IS NULL
|
||||
ALTER TABLE dbo.actb00001 ADD cod_sp INT NULL; -- cotb00001.cod_sp (proveedor)
|
||||
IF COL_LENGTH('dbo.actb00001','cod_sp_sec') IS NULL
|
||||
ALTER TABLE dbo.actb00001 ADD cod_sp_sec INT NULL; -- cotb00001.cod_sp_sec
|
||||
IF COL_LENGTH('dbo.actb00001','tipo_activo') IS NULL
|
||||
ALTER TABLE dbo.actb00001 ADD tipo_activo VARCHAR(30) NULL; -- CAMIONES, IT HARDWARE, MAQUINARIAS, MONTACARGAS, EDIFICIOS
|
||||
IF COL_LENGTH('dbo.actb00001','activo_padre') IS NULL
|
||||
ALTER TABLE dbo.actb00001 ADD activo_padre INT NULL; -- actb00001.codigo del activo padre
|
||||
GO
|
||||
SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('dbo.actb00001')
|
||||
AND name IN ('cod_sp','cod_sp_sec','tipo_activo','activo_padre');
|
||||
Reference in New Issue
Block a user