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:
2026-10-19 09:54:32 -04:00
co-authored by Claude Opus 5.5
parent adbbaaee8e
commit a1c15d43f3
2 changed files with 35 additions and 6 deletions
+18 -6
View File
@@ -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');