Herramientas de usuario

Herramientas del sitio


ada:sicoferp:compras:maestro_de_ubicaciones

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
ada:sicoferp:compras:maestro_de_ubicaciones [2019/05/17 20:17]
10.1.50.20 creado
ada:sicoferp:compras:maestro_de_ubicaciones [2026/04/10 14:41] (actual)
brahian.castaneda
Línea 2: Línea 2:
  
 En este maestro se configura las diferentes ubicaciones las cuales se le asignan a las placas en el registro de activos fijos. 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:​
 +
 +  * Código
 +  * Descripción
 +  * Dirección
  
 {{:​ada:​sicoferp:​compras:​mubicaci1.jpg?​400|}} {{:​ada:​sicoferp:​compras:​mubicaci1.jpg?​400|}}
  
-Los datos básicos que se deben de ingresar por ubicacion ​son:+Los datos básicos que se deben de ingresar por ubicación ​son: 
 + 
 + 
 +  * Descripción 
 +  * Dirección 
 +  * Ubicación Principal 
 +  * Borrado
  
 {{:​ada:​sicoferp:​compras:​mubc2.jpg?​400|}} {{:​ada:​sicoferp:​compras:​mubc2.jpg?​400|}}
 +
 +(Nota: El campo Cod.ubicación se llena automaticamente con el consecutivo SEQ_CONSECUTIVO_EXT_UBICACION)
 +
 +===== Documentación de Ajuste Técnico: Módulo de Ubicaciones =====
 +
 +=== 1.Identificación del ProblemaRuta:​ Compras > Maestros > Maestro Ubicaciones (w_mae_ubicaciones.srw). ===
 +
 +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.
 +
 +=== 2. Solución AplicadaSe reestructuró el evento ue_grabar bajo los siguientes pilares técnicos: ===
 +
 +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.
 +
 +=== 3. Fragmento de Código Corregido (Lógica Principal)Fragmento de código// Sincronizar buffer ===
 +
 +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
ada/sicoferp/compras/maestro_de_ubicaciones.1558124236.txt.gz · Última modificación: 2019/05/17 20:17 por 10.1.50.20