Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa | |||
|
ada:sicoferp:financiero:tesoreria:conciliacionbancaria:conciliacioncargadedatos [2026/06/12 12:47] brahian.castaneda |
ada:sicoferp:financiero:tesoreria:conciliacionbancaria:conciliacioncargadedatos [2026/07/17 13:38] (actual) brahian.castaneda |
||
|---|---|---|---|
| Línea 414: | Línea 414: | ||
| === Desarrollado por: [Miguel Muñoz] Fecha: [12/06/2026] Versión de PB: 12.5 === | === Desarrollado por: [Miguel Muñoz] Fecha: [12/06/2026] Versión de PB: 12.5 === | ||
| + | ===== Corrección del Flujo de Conciliación Manual ===== | ||
| + | Fecha de Cambio: 17/07/2026 Objeto Modificado: w_conciliacion_bancos.srw | ||
| + | |||
| + | === 1. Resumen del Problema === | ||
| + | |||
| + | Se detectó un comportamiento anómalo en el proceso de Conciliación Manual. El sistema presentaba los siguientes inconvenientes: | ||
| + | |||
| + | Al seleccionar el tipo de conciliación "Manual", el sistema solicitaba incorrectamente la importación de un archivo de extracto bancario. | ||
| + | Al intentar guardar una conciliación manual, el sistema mostraba el error "No se ha importado el Extracto!", impidiendo finalizar el proceso. | ||
| + | Al navegar a la pestaña de "Inconsistencias", se activaban validaciones que no correspondían al flujo manual. | ||
| + | El objetivo de la conciliación manual es permitir al usuario registrar y cruzar partidas sin la necesidad de un archivo, por lo que este comportamiento era incorrecto. | ||
| + | |||
| + | === 2. Causa Raíz === | ||
| + | |||
| + | El análisis del código reveló que la variable de instancia il_rows_import se utilizaba como un indicador global para determinar si se había cargado un archivo. | ||
| + | |||
| + | Para "engañar" al sistema y permitir el guardado, el modo manual asignaba il_rows_import = 1. | ||
| + | Sin embargo, este valor activaba otras lógicas (como la validación al cambiar de pestaña) que sí esperaban un archivo, causando los errores descritos. | ||
| + | La lógica de guardado y la de navegación entre pestañas no distinguían correctamente entre una conciliación por extracto y una conciliación manual. | ||
| + | 3. Solución Implementada | ||
| + | Se realizaron ajustes en tres eventos clave para crear un flujo lógico claro y separado para la conciliación manual, sin afectar el proceso de importación de extractos. | ||
| + | |||
| + | a) Evento dw_det_bancos::itemchanged (Selección de Tipo) | ||
| + | Se eliminó la asignación il_rows_import = 1 cuando el usuario selecciona el tipo 'M' (Manual). | ||
| + | Impacto: Ahora, en modo manual, la variable il_rows_import permanece en 0 (a menos que se carguen partidas pendientes del mes anterior), lo que evita que se disparen procesos automáticos de importación. | ||
| + | b) Evento carpeta::selectionchanging (Navegación entre Pestañas) | ||
| + | Se modificó la validación que impedía pasar a la pestaña de "Inconsistencias". | ||
| + | Lógica anterior: If oldindex = 2 and newindex > 2 and il_rows_import = 0 Then... | ||
| + | Lógica nueva: If oldindex = 2 and newindex > 2 and il_rows_import = 0 and idw_det_bancos.GetItemString(1, "tipo") <> 'M' Then... | ||
| + | Impacto: Esta validación ahora se ignora si el tipo de conciliación es 'M', permitiendo al usuario navegar libremente a la pestaña de inconsistencias para realizar el cruce manual. | ||
| + | c) Evento ue_grabar (Guardado de la Conciliación) | ||
| + | Se ajustó la condición principal para permitir el guardado en modo manual. | ||
| + | Lógica anterior: If il_rows_import > 0 Then... | ||
| + | Lógica nueva: If il_rows_import > 0 Or idw_det_bancos.GetItemString(1, "tipo") = 'M' Then... | ||
| + | Impacto: El sistema ahora permite guardar una conciliación si se ha importado un archivo O si el modo es manual. | ||
| + | Adicionalmente, se añadieron protecciones para que el cálculo de totales no genere errores en modo manual cuando los DataWindows del extracto están vacíos. | ||
| + | |||
| + | === 4. Comportamiento Corregido === | ||
| + | |||
| + | Con estos cambios, el flujo de la conciliación manual ahora funciona de la siguiente manera: | ||
| + | |||
| + | El usuario crea una nueva conciliación y selecciona el tipo "Manual". | ||
| + | El sistema no solicita importar ningún archivo. | ||
| + | El usuario puede navegar a la pestaña "Inconsistencias". Si existen partidas pendientes del mes anterior, estas se cargan automáticamente para su revisión. | ||
| + | El usuario puede realizar los cruces manuales entre las partidas de tesorería y las del extracto (que puede ingresar manualmente o que provienen del mes anterior). | ||
| + | El usuario puede guardar la conciliación en cualquier momento, ya sea en estado "Incompleta" o "Completada", sin recibir el mensaje de error sobre la falta de un extracto. | ||
| + | |||
| + | === 5. Referencia Técnica (Diff de Cambios) === | ||
| + | |||
| + | A continuación se presenta el diff consolidado con todas las modificaciones aplicadas al objeto w_conciliacion_bancos.srw. | ||
| + | |||
| + | idw_incoincidentes.GroupCalc() | ||
| + | idw_datos_incoincidentes.GroupCalc() | ||
| + | |||
| + | If il_rows_import > 0 Or idw_det_bancos.GetItemString(1, "tipo") = 'M' Then | ||
| + | If idw_coincidentes.RowCount() > 0 Then | ||
| + | ld_total_lib1 = idw_coincidentes.GetItemDecimal(1,"total_conciliado") | ||
| + | End If | ||
| + | |||
| + | // En modo manual, este DW puede no tener filas | ||
| + | If idw_datos_coincidentes.RowCount() > 0 And idw_det_bancos.GetItemString(1, "tipo") = 'E' Then | ||
| + | ld_total_ext1 = idw_datos_coincidentes.GetItemDecimal(1,"total_conciliado") | ||
| + | End If | ||
| + | |||
| + | If idw_incoincidentes.RowCount() > 0 Then | ||
| + | ld_total_lib2 = idw_incoincidentes.GetItemDecimal(1,"total_conciliado") | ||
| + | End If | ||
| + | |||
| + | // En modo manual, este DW puede no tener filas | ||
| + | If idw_datos_incoincidentes.RowCount() > 0 And idw_det_bancos.GetItemString(1, "tipo") = 'E' Then | ||
| + | ld_total_ext2 = idw_datos_incoincidentes.GetItemDecimal(1,"total_conciliado") | ||
| + | End If | ||
| + | |||
| + | If ld_total_lib1 <> ld_total_ext1 And lista_elementos <> 'eliminar_conciliacion' Then | ||
| + | MessageBox("Control Tesoreria","La suma total de las CONSISTENCIAS a Conciliar no coincide!") | ||
| + | |||
| + | If oldindex = 2 and newindex > 2 and il_rows_import = 0 Then | ||
| + | If oldindex = 2 and newindex > 2 and il_rows_import = 0 and idw_det_bancos.GetItemString(1, "tipo") <> 'M' Then | ||
| + | MessageBox("Control Tesoreria","Debe importar el Archivo!") | ||
| + | Return 1 | ||
| + | End If | ||
| + | |||
| + | f_permisos_campos() | ||
| + | //============================================================================== | ||
| + | |||
| + | If DATA= 'E' Then | ||
| + | il_rows_import = 0 | ||
| + | End If | ||
| + | |||
| + | il_rows_import = 0 | ||
| + | End If | ||
| + | |||
| + | END CHOOSE | ||
| + | |||
| + | |||
| + | === Desarrollado por: [Miguel Muñoz] Fecha: [17/07/2026] Versión de PB: 12.5 === | ||