Herramientas de usuario

Herramientas del sitio


ada:sicoferp:financiero:tesoreria:conciliacionbancaria:conciliacioncargadedatos

Diferencias

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

Enlace a la vista de comparación

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 ===
  
ada/sicoferp/financiero/tesoreria/conciliacionbancaria/conciliacioncargadedatos.txt · Última modificación: 2026/07/17 13:38 por brahian.castaneda