Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa | |||
|
sicoferp:compras:inventarios:reintegros:start [2022/09/07 21:16] jaime.ardila |
sicoferp:compras:inventarios:reintegros:start [2026/03/20 16:19] (actual) brahian.castaneda |
||
|---|---|---|---|
| Línea 23: | Línea 23: | ||
| ==== B. RT, TC ==== | ==== B. RT, TC ==== | ||
| + | ====== Duplicidad de Documentos ====== | ||
| + | 1. Descripción del Problema | ||
| + | Se identificó una inconsistencia crítica en el proceso de Reintegros de Bodega (w_reintegros_bodega). El sistema presentaba los siguientes síntomas: | ||
| + | Duplicidad de Consecutivos: Registros en la tabla MAE_REINTEGRO con diferentes IDs internos (CODIGO_REINTEGRO) pero compartiendo el mismo NUMERO_DOCUMENTO (consecutivo de cara al usuario). | ||
| + | Inconsistencia en Auditoría: Dificultad para rastrear movimientos reales frente a intentos de grabación fallidos. | ||
| + | 2. Análisis de Causa Raíz (RCA) | ||
| + | Tras la auditoría del objeto w_reintegros_bodega.srw en el evento ue_grabar, se detectó una vulnerabilidad en la lógica de control transaccional: | ||
| + | Fallo en el manejo de estado (ib_commit) | ||
| + | La variable de instancia ib_commit controla si el sistema debe generar un nuevo número de documento o reutilizar uno existente durante el procesamiento por lotes. | ||
| + | |||
| + | Escenario de Error: Si el proceso de grabación fallaba y ejecutaba un Rollback, la variable ib_commit permanecía en True. | ||
| + | |||
| + | Efecto Cascada: Al reintentar la grabación sin cerrar la ventana, el sistema omitía la solicitud de un nuevo consecutivo (asumiendo que ya tenía uno válido del intento anterior), asignando un número ya existente a un nuevo encabezado. | ||
| + | |||
| + | 3. Solución Técnica Implementada | ||
| + | Lógica de Corrección (PowerBuilder) | ||
| + | Se modificó el flujo del evento para garantizar la idempotencia del proceso de grabación. Se fuerza el reinicio de la bandera de control al inicio de cada intento de persistencia. | ||
| + | |||
| + | Objeto: compras\w_reintegros_bodega.srw | ||
| + | |||
| + | Evento: ue_grabar | ||
| + | |||
| + | Fragmento de Código Corregido: | ||
| + | Fragmento de código | ||
| + | ==== CORRECCIÓN: Inicialización de bandera de control ==== | ||
| + | // Se debe reiniciar ib_commit al iniciar el proceso para evitar la reutilización | ||
| + | // de números de documento tras un Rollback previo. | ||
| + | ib_commit = False | ||