En este maestro se configura las diferentes ubicaciones las cuales se le asignan a las placas en el registro de activos fijos.
Se lista la siguiente información:
Los datos básicos que se deben de ingresar por ubicación son:
(Nota: El campo Cod.ubicación se llena automaticamente con el consecutivo SEQ_CONSECUTIVO_EXT_UBICACION)
Síntoma: El sistema permitía modificar campos (descripción, departamento, ciudad), reportaba “Datos guardados correctamente”, pero los cambios no persistían en la base de datos tras cerrar y volver a abrir el módulo. Causa Raíz: Inconsistencia en el manejo de objetos de transacción. Se realizaba el SetTransObject con ts_transaccion , pero se ejecutaban comandos de control (COMMIT / ROLLBACK) utilizando el objeto SQLCA. Al no ser el mismo canal de comunicación, los cambios quedaban en un “limbo” transaccional y se perdían al cerrar la conexión.
A. Unificación del Transaction ObjectSe migraron todas las sentencias SQL y controles de transacción para utilizar exclusivamente ts_transaccion. Esto garantiza que el Update() y el Commit viajen por el mismo túnel de comunicación. Antes: COMMIT Using SQLCA; Después: COMMIT Using ts_transaccion;
B. Sincronización de Interfaz (Buffer)Se añadió una validación estricta al inicio del evento de grabado:Fragmento de códigoIF idw_registro.AcceptText() <> 1 THEN Return Esto asegura que el último dato digitado por el usuario (ej. la nueva descripción) sea validado y trasladado de la UI al buffer del DataWindow antes de iniciar el proceso de guardado. C. Optimización del Ciclo de UpdateSe implementó el uso de Update(TRUE, FALSE) seguido de un ResetUpdate() manual tras el éxito del COMMIT.Propósito: Evita que el DataWindow limpie sus “flags” de modificación prematuramente. Si el COMMIT falla, el usuario aún tiene los cambios en pantalla para reintentar sin perder su trabajo.
IF idw_registro.AcceptText() <> 1 THEN Return
… validaciones de departamento y ciudad Actualización usando el objeto correcto IF idw_registro.Update(TRUE, FALSE) = 1 THEN
IF IsValid(idw_lista_ubicaciones) THEN
idw_lista_ubicaciones.Update(TRUE, FALSE)
END IF
COMMIT Using ts_transaccion; // Unificación de transacción
IF ts_transaccion.SQLCode = 0 THEN
idw_registro.ResetUpdate()
// Refrescar UI
ELSE
ROLLBACK Using ts_transaccion;
END IF
ELSE
ROLLBACK Using ts_transaccion;
END IF