SAC 9.6.9706

Lista de adecuaciones y correcciones de los programas SAC, MCOB, MCAL e IC. De septiembre del 2025 a julio del 2026.  


  1. Solicita la entidad SMC se muestre el saldo de la cuenta corriente en el reporte de solicitud de préstamo (ReciboPrestamo.rpt). Se toma el saldo de la cuenta 9. Se usa dentro del reporte de CR la instrucción: SELECT ... pp.saldo as saldo_cuenta_corriente, ... FROM  prestotor p LEFT JOIN (socios s left join sociospas pp on s.sucursal=pp.sucursal and s.maymen=pp.maymen and s.clavesocio=pp.clavesocio and pp.cta=9) on p.sucsoc=s.sucursal and p.maymen=s.maymen and p.clavesocio=s.clavesocio ... WHERE p.ClavePrestamo={?ClavePrestamo} and p.Sucursal='{?Sucursal}'
  2. Había un pequeño error en la impresión de oficios de aviso a los acreditados y/o avales. Unos saldos salían incorrectos.
  3. Se modifica el permiso 7.1 para que pida autorización al agregar un tercer préstamo al acreditado. Anteriormente solo verificaba el segundo préstamo. Ver 3/abr/2025.
  4. Había una consideración incorrecta cuando un préstamo estaba vencido y bajaba a menos de 90 días de vencido. Lo correcto es que, a pesar de bajar de 90 días, el préstamo sigue estando en cartera vencida, y la fecha a partir de la cual se calculan int. en cuentas de orden (fecha considerado vencido) sigue inalterable. Esto hasta que el préstamo se ponga totalmente al corriente.
  5. En IC marca error al leer un CFDI. Estaba cerrando un formulario de lectura de CFDIs sin verificar si estaba abierto.
  6. En SMC se necesita saber la hora de otorgamiento del crédito y la de liquidación, es por una solicitud de FOCOOP. Ya aparece en el formulario de pólizas (Caja / Pólizas), solo hay que localizar la póliza con la que se pagó el préstamo. Se agrega la hora de entrega y la hora de pago en el Reportes / Préstamos / Movimientos / Préstamos otorgados, respectivamente en las columnas HoraEnt y HoraPag. La hora de entrega se toma de la tabla de préstamos, PRESTOTOR.hora. Para la hora de pago, se agrega el campo PRESTOTOR.horapag, que es un campo calculado en el mismo procedimiento que calcula PRESTOTOR.fecpag, llamado CalcFecPagPre.
  7. En SAC se genere recordatorios en ciertas fechas, como una agenda, por ejemplo para recordar al administrador que genere estados financieros. Se implementa un formulario en Sistema/Tareas para agregar/modificar/borrar una lista de tareas, donde se coloque la periodicidad y la hora de la tarea. Se agrega la tabla TAREAS a la base de datos.
  8. Aparecía incorrectamente las listas de país/estado para los beneficiarios 1 y 2, en la actualización de personas. Corregido.
  9. Agregar a socios un campo para ver su status en cuanto a propietario de un vehículo, con los valores: no, moto, auto/camioneta, moto y auto/camionet, múltiples vehículos. Se agrega en el formulario de actualización de personas el combobox Auto, que corresponde al campo de base de datos EdoAuto.
  10. En parentesco de personas existe el campo TipoRel, con los valores Dep. Eco., Prov. Rec., etc. Añadir el valor "comparten fuentes de ingreso". Cuando dos personas con parentesco tengan este valor, serán consideradas de riesgo común.
  11. MBATCH: añadir persona. Se crea la consulta Querypersonpost.xml
  12. MBATCH: añadir pago a préstamo con ficha de depósito o transferencia. Se crea la consulta Querypaymentbankpost.xml 
  13. Ver si se puede hacer mas eficiente la consulta update movprestamo set contra=isnull(contra,-1). Se cambia por "update " & s & " set contra=-1 where contra is null"
  14. La entidad SFCT solicita un nuevo reporte basado en el reporte de saldo de préstamos. Se duplica éste, creando la función CrearReporteSFCT. Posteriormente se podrá llamar de forma semi-automática este reporte con la funcionalidad de Tareas. Notar que en el layout que proporciona la entidad, no incluyen columnas para cartera atrasada (etapa 2), que en un futuro podrían necesitar.
  15. IC: al tratar de crear una póliza leyendo un XML de un CFDI, dentro de Pólizas / Leer CFDI, marcaba error de inserción de datos por la llave foránea FK_detallepoliza_cuenta. Cuando trato de crear estas pólizas, inserto claves de cuenta contable nulas, puesto que desconozco a qué cuenta contable equivale cada importe de la factura. Resulta que debo usar NULL en vez de System.DBNull.value.
  16. En caja, se detecta si la persona ha estado inactiva por 10 años o más, por lo que se pide el permiso 15.1 para realizar el movimiento respectivo. En especiales se agrega el procedimiento "Asigna fecha de último mov. para identificar personas inactivas" para establecer un valor a este campo. Se agregó el campo FecUltMovFix. Ver 22/ago/2025. Ahora se establece igual a la fecha de reingreso, cuando se agrega o modifica la persona. En caja, si se detecta una persona inactiva, y hace un movimiento, se establece con la fecha del movimiento. 
  17. En el reporte de plan de pagos, no cargaba la lista de dias inhábiles cuando se tomaban los datos del formulario. Por lo tanto no era correcto el plan de pagos generado. Cuando se tomaban los datos de un préstamo existente, si aparecía correctamente.
  18. En caja, al revisar si una persona tipo menor tenía tutor cuando excedía los 1500 UDIS, si el primer tutor encontrado era una persona cancelada, detectaba el error y no dejaba hacer el movimiento. Ahora hace un recorrido con todos los tutores registrados; es suficiente con que uno de ellos esté activo.
  19. No se podía abonar a pasivos para las cuentas de menores, porque indicaba que superaban los 1500 UDIS. Resulta que para la sucursal UMD, las cuentas antigüas de pasivos, que se renumeraron como 1000, 1001.. 1011, se cancelaron antes del cierre del año. Entonces no se actualizaron sus saldos, que debieron quedar en ceros. En el momento que un menor quiere hacer un movimiento, suma el saldo de su cuenta UniCuenta (clave 0), que es correcto, más el saldo de su cuenta de Ahorro (clave 1000), que es incorrecto, y por tanto aparece con más saldo. Entonces deberá aplicarse la siguiente instrucción SQL en el SQL Server Management Studio, para poner los saldos en 0, en estas cuentas: update sociospas set saldoini=0, saldo=0 where sucursal='UMD' and cta in (1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011)
  20. préstamo UMD-29016, del socio UMD-may-3740, al parecer pasa de vencido a vigente sin haberse puesto al corriente. Se observa que es reestructurado, por lo que está en cartera vencida desde el inicio y durante gran parte de su historial, sin haber alcanzado los 90 días, sin embargo parece que llega a los 90 días antes del 12/ene/26, donde hace un pago, y se hace vigente por ser pago sostenido. Esto era porque se consideraba incorrectamente que el préstamo tenía pago sostenido. Había un error en el ciclo que asigna si "cumple" o hay "atraso" para cada vencimiento del plan de pagos, cuando el préstamo tenía 2 pagos el mismo día. Se cambia la instrucción If MovFecha = FechaRealAnt Then PPcartera(i) = -1 por If MovFecha = FechaRealAnt And MovFecha = CDate(PP(i, 1)) Then PPcartera(i) = -1
  21. MCOB: en eventos, que aparezcan los días vencidos del préstamo, fecha de últ. Mov. (ult. Capital y ult. Interés). Se agrega además un botón de consulta de datos del préstamo.
  22. En caja, en el combo de selección del crédito, se muestra más información del mismo, como la descripción del producto de préstamo y el monto. Esto para distinguirlo cuando el acreditado tiene varios créditos y abonar al correcto.
  23. Se agrega en el formulario de préstamos un checkedlist con toda la documentación requerida en el expediente. Con acceso restringido. Un campo de observación al final, y un checkbox que indique si el expediente está "completo" o "incompleto". De otro modo no entregar. Se agrega el campo PRESTOTOR.documentacion, y la propiedad DocPDesc, en VALORES, para guardar la lista de los documentos del expediente. Se agrega el campo PRESTOTOR.expediente, que indica si el expediente del crédito está completo, de acuerdo al criterio del of. de crédito. Si está incompleto, no se puede entregar el préstamo. Se agrega el campo PRESTOTOR.expedienteobs, para redactar observaciones. Se agrega el permiso 7.2 Modificar expediente del préstamo, necesario para acceder a modificar esta información. Se otorga este permiso por default al usuario tipo 4-of. de crédito.
  24. Reporte de préstamos con los contratos de inversión que los garantizan. Se agrega un reporte "Detalle de garantías" en reportes/préstamos/saldos. Se muestran los detalles de las garantías hipotecarias, prendarias, de nómina y por contrato de inversión. En la última columna se muestran los contratos de inversión que garantizan a cada préstamo.
  25. En la tabla de SOCIOS, el campo "ocupacion" aveces no es suficiente para almacenar el texto respectivo; actualmente mide 30 caracteres. Su información proviene de la tabla VALORES, campo valor, que tiene un tamaño de 200 caracteres. Se observa que la ocupación de mayor largo tiene 54 caracteres, por tanto se amplia SOCIOS.ocupacion y SOCIOS.ocupacion2 a 60 caracteres.
  26. Había la duda de cuál era el reporte donde se muestran fechas de vigencia de los documentos. Es en Reportes/otros/imágenes.
  27. Se realiza un proceso extraordinario, relacionado con el historial de créditos de Caja Popular Porvenir, derivado del traspaso de cartera que se realizó hacia Caja Popular Unisol el 30 de junio de 2025. Se genera reporte de saldo de préstamos, se exporta a Excel, se modifica de acuerdo al manual de SAC, "captura masiva de pagos". Se deben reportar por última vez esos créditos utilizando la clave de observación “CA” (Cuenta al corriente vendida o cedida), dejando los créditos cerrados con fecha del 30 de junio de 2025, saldo en cero y MOP 01. Se aplica: update prestotor set ClaveObservacion='CA' where ClaveObservacion='CC' and fecpag='30/6/2025'
  28. Antes de mostrar cualquier reporte de préstamos, se llama a la subrutina CalcSaldoPre, que, entre otras cosas, asigna la clave de Buró de Crédito, CC, a los créditos pagados. Manualmente se tuvieron que cambiar algunos créditos con clave CA (Cuenta al corriente vendida o cedida a un Usuario de una Sociedad de Información Crediticia) por un proceso de migración. Se modifica la subrutina para que no afecte estos créditos y los vuelva a establecer en CC.
  29. Al detectar que el expediente del préstamo está incompleto, que se detenga completamente el proceso de entrega y no permita continuar al formulario de desembolso.
  30. Actualmente los documentos del checklist tienen únicamente las opciones Sí / No. Consideramos necesario agregar un tercer valor: "No aplica", ya que dependiendo del tipo de crédito puede haber documentación que no sea requerida. Dejar el valor "No" en estos casos podría generar confusión, ya que parecería que el documento está faltante. Entonces el campo PRESTOTOR.documentacion almacenará los valores 0-no, 1-si, 2-no aplica, para cado uno de los documentos del expediente.
  31. Para el control del expediente del préstamo, se agrega el campo "fecha de revisión", fecha en que se realiza la primera revisión del expediente.Podría capturarse automáticamente al momento de la primera modificación o permitir que el revisor la seleccione. Esto nos permitiría medir el tiempo entre la creación de la solicitud y la revisión del expediente.
  32. Se modifica el campo PRESTOTOR.expediente para poder almacenar 3 valores: 0-en revisión, 1-en corrección, 2-liberada. Hasta que el préstamo tenga el valor 2, no se podrá entregar el préstamo.
  33. Para el control del expediente del préstamo, se agrega el campo "finalizado con" para llevar control de cuántas veces el crédito fue regresado para corrección: 0-sin errores, 1-con 1 corrección, 2-con 2 correciones, 3-con 3 o más correcciones.
  34. Quito la propiedad AcceptButton del formulario de préstamos, para que puedan desplegarse los valores del DataMap de una celda de un flexgrid, cuando se da Enter sobre la celda.
  35. IFRS: Se crea una utilería dentro de IC para duplicar cuentas y sus subcuentas, dentro de Cuentas / Ver catálogo / Acciones /Duplicar cuenta y sus subcuentas. Sugiere automáticamente una nueva clave de cuenta, o deja que el usuario la capture. Util por ejemplo para generar cuentas de cartera atrasada en el catálogo de cuentas, en base a las cuentas de cartera vigente que ya existan en el catálogo. Para facilitar la migración a la nueva norma IFRS 9.
  36. En Reportes / Pasivos / Saldos / Avanzado / Personas inactivas 10 años, agrego un checkbox para mostrar solo a las personas con 10 años de inactividad o más. Esto corresponde al campo SOCIOS.fecultmovfix. También se muestran las personas que tienen este campo con valor nulo, por nunca haber hecho un movimiento (pasivos, contratos, préstamos, servicios) desde que ingresaron a la entidad.
  37. En reportes/bancos/movimientos/formato del reporte: ampliado había un error: referencia al campo IM ambigua. Se cambia en la instrucción t-sql a m.im
  38. Había un error en la consideración de capital, interés ordinario y moroso al aplicar un pago adelantado. Se tomaban valores incorrectos de las variables en el módulo respectivo.
  39. IFRS: Se modifica el reporte de balance general en IC, en Reportes/Balance general. Se agregan las cuentas y subcuentas para la cartera atrasada, tanto en el reporte para SOCAP como para SOFIPO, de todos los niveles.
  40. Se agrega un retorno de línea en la impresión del Estado de Cuenta tipo SAC, en Reportes / Personas / Estado de cuenta. Formato del reporte: SAC. Esto mediante la instrucción xmlBody.Add(SaltoDePag())
  41. En IC / Pólizas / Generar automáticamente, al generar la póliza de castigos de préstamos, mezclaba en la misma póliza los cargos y abonos a cuentas de cartera (capital, interes, estimaciones) por un lado, y las cuentas de orden por otro. Ahora se separan en dos pólizas, una tipo diario (D) y otra tipo orden (O) para las cuentas respectivas.
  42. En IC / Pólizas / Generar automáticamente, al generar la póliza de int. dvg. de préstamos, mezclaba en la misma póliza los cargos y abonos a cuentas de cartera (capital, interes, estimaciones) por un lado, y las cuentas de orden por otro. Ahora se separan en dos pólizas, una tipo diario (D) y otra tipo orden (O) para las cuentas respectivas.
  43. IC: en Interfaz, para la cuenta de caja se puede capturar en el rasgo2 la clave de usuario (USUARIOS.usuario) sin embargo al generar pólizas automáticas no lo toma en cuenta, trae la primer cuenta contable con rasgo1 igual a "caja". Lo mismo sucedía con las cuentas para cheques recibidos, "chrec". Ver 30/jun/2023
  44. IC: Se agrega un acceso directo en la barra de herramientas para entrar a "Ver cuentas". Se hacen diversas mejoras en este formulario, como reordenar las cuentas del catálogo y volverlas a mostrar con las modificaciones, después de agregar, eliminar, o duplicar cuentas. Cuando se hace cambio entre ventanas, se evita que se vuelva a generar el treeview, es decir el catálogo de cuentas en vista de árbol.
  45. Al generar el reporte de saldo de pasivos muestra el error "los datos de cadena o binarios se truncarían". Se debe a que recientemente se incrementó el tamaño de la ocupacion de 30 a 60 caracteres, y al generar el reporte se crea una tabla temporal que copiaba la información al campo viejo de 30 caracteres.
  46. En SAC, al ejecutarse por primera vez y generar base de datos y sus valores (frmInicial) no encripta la contraseña del usuario por default (admin) de manera correcta.
  47. Expediente de crédito: Actualmente el sistema valida que el expediente esté completo al momento de entregar el crédito (paso de Autorizado a Vigente). Mover esa validación un paso antes, es decir, al momento de autorizar el crédito, para que no pueda pasar de: Solicitado a Autorizado si no cuenta con la documentación completa.
  48. Perfiles adicionales de usuarios: Derivado de observaciones de auditoría interna, estamos reajustando permisos y perfiles de usuarios dentro de SAC. Sin embargo, vemos que el número actual de perfiles nos queda limitado. Se añaden los perfiles adicionales: 14-Gerente Operación, 15-Asesor Múltiple, 16-Auxiliar Administrativo, 17-Archivista
  49. IC: al establecer en interfaz la cuenta contable para cada usuario de caja, si el usuario se dejaba vacío, no generaba movimientos de caja. Ahora se puede usar el rasgo2, estableciendo cada usuario para caja, lo cual se tomará como que se separan los movimientos de caja de cada cajero en diferentes cuentas contables, o bien dejándolo vacío, lo cual se tomará como que todos los movimientos de caja se acumulan en la misma cuenta contable.  Ver 18/abr/2026.
  50. Posibilidad de cambiar el producto de préstamo en una solicitud de crédito: Pretendemos establecer un control sobre la autorización de créditos, tomando en cuenta que la tasa de interés definitiva se asigna según los resultados de la evaluación del socio, inicialmente las asesoras crearían una solicitud de crédito con la tasa de interés y después de llevar a cabo la evaluación, dicha tasa podría modificarse al alza o a la baja, actualmente SAC no permite modificar la tasa de interés de una solicitud, por lo que solicito que puedan llevarse a cabo tales ajustes. Se agrega en el formulario de préstamos , en Acciones, la opción "Cambiar producto de préstamo". Se agrega el permisos 9.1. Al cambiar el producto de un préstamo, se cambian tambien la tasa ordinaria, la tasa morosa y los tantos (TipPre) del mismo. Después se limpia la pantalla automáticamente y se puede volver a cargar el préstamo. Al intentar modificarlo, SAC verificará que otros datos del préstamo cumplan con las restricciones del producto de préstamo. Por ejemplo el rango del monto de préstamo.
  51. Respecto del perfil transaccional de los socios, es necesario que las asesoras tengan permiso para manipular los datos únicamente al registrar al socio en SAC, pero con posterioridad a la apertura de la cuenta, cualquier actualización a dicho perfil debe ser facultad únicamente del oficial de cumplimiento y/o del analista de operaciones. Se agrega el permiso 19.1, "Modificar perfil transaccional de personas"
  52. 451: Modificación en los datos del reporte C-0451 Desagregado de créditos para el consumo, la vivienda y comerciales:
  53. 451: En el reporte se pide que en la columna "sucursal que opera el crédito" se despliegue la "clave de sucursal" en vez de el nombre de la misma. Se usa la clave CASFIM, que actualmente no tiene uso en SAC, y se puede capturar en Parámetros. Se amplía PARAMETROS.clavecasfim de 7 a 9 caracteres.
  54. 451: Se cambia el desplegado del municipio por el del código postal del domicilio del socio (en cre. Comerciales, debe ser municipio del trabajo, en cre. Vivienda, municipio de la vivienda)
  55. 451: Se cambia el formato de las cantidades monetarias de 0 a 2 decimales
  56. 451: Se cambia el desplegado de la fecha nula de "19000101" a "9999-12-31"
  57. 451: Se agrega el campo TASAS.ClaveTasaCNBV, que es numérico de 10 digitos, para capturar en Parámetros/Productos de préstamo/ClaveSHCP, la clave del producto de acuerdo al “Catálogo de Producto Crédito SOCAPS” proporcionado por la CNBV. Se muestra en los reportes C-0451 y I-0453.
  58. 451: En la columna de clasificacion del crédito, muestra la cuenta contable según el catálogo de la SHCP, para lo cual considera la finalidad del préstamo y si está en cartera vigente o vencida.
  59. 451: Cambiar nombre de columna FECHA 1er INCUMPLIMIENTO a columna FECHA DE LA PRIMERA AMORTIZACIÓN NO CUBIERTA
  60. 451: No aparece dato correspondiente a las columnas: CALIFICACION PARTE CUBIERTA (porcentaje), CALIFICACION PARTE EXPUESTA (porcentaje), MONTO DE ESTIMACIONES PARTE CUBIERTA, MONTO DE ESTIMACIONES PARTE EXPUESTA. Faltaba solo la calificación de la parte expuesta, puesto que la calificación de la parte cubierta siempre es 0, de acuerdo a las más recientes Disposiciones. Los montos si aparecen, a menos que el préstamo esté configurado para no considerar garantías líquidas.
  61. 451: Para mostrar el "ID DE CREDITO", se quitan los espacios internos; se usa la misma instrucción que en el reporte 453.
  62. 451: En creditos de comercio cambiar clave de 130105010000 - Vigente.- Comercial.- Operaciones quirografarias por 130105060000 - Vigente.- Comercial.- Otros
  63. 453: Modificación en los datos del reporte I-0453 Desagregado de cartera de crédito castigada:
  64. 453: El Instructivo de llenado especifica que el objetivo del reporte es recabar información sobre los créditos al momento de su castigo. Por lo que se solicita corregir el cálculo de los saldos mostrados en el reporte, ya que actualmente SAC devuelve los saldos a la fecha en que se genera el reporte, cuando deberían calcularse solo hasta la fecha de castigo de cada crédito.
  65. 453: La columna "Modalidad de Pago" del reporte 0453 deberá determinarse conforme a la tabla de conversión, ya que el catálogo de este reporte difiere del utilizado en el R04-C-0451. Se usan los mismos códigos en ambos reportes: 1,2,3,7,8.
  66. 453: En la columna de "ESTIMACIONES PREVENTIVAS TOTALES" reflejar el valor igual al monto castigado
  67. 453: En la columna "TIPO DE COBRANZA", es una tabla: 1-Ninguna, por declararse inmaterial, 2-Ninguna, por declararse incobrable, 3-Extrajudicial propia, 4-Extrajudicial a cargo de terceros, 5-Judicial propia. Se agrega el campo PRESTOTOR.TipoCobranza, el cual se podrá actualizar desde el formulario de préstamos, al castigar el préstamo (Acciones/Castigar), o en los Eventos de MCOB.
  68. 453: Falta agregar la columna INTERESES REFINANCIADOS O INTERESES RECAPITALIZADOS, que en el caso de la entidad siempre va en 0.
  69. 453: Para mostrar el no. de contrato de préstamo, se quitan los espacios internos; se usa la instrucción: Regex.Replace(ForClavePrestamo(.Fields("sucursal").Value, .Fields("claveprestamo").Value, .Fields("sub").Value), "\s+", "").Trim
  70. 841: Modificación en los datos del reporte C-0841 Desagregado de depósitos de socios:
  71. 841: Número de identificación: A Menores relacionados con un socio, SAC debe asignar un número de identificación especial. Tipo de socio: SAC debe asignar el valor "4" y su número de ahorrador a Menores relacionados con un externo, ya que le asigna el número de identificación del externo y los clasifica como "menores relacionados a un socio". "En caso de ser menor de edad vinculado al Socio, se debe colocar el número del Socio al que está vinculado agregando al final la letra “m”, seguida de un consecutivo 1,2,3; que servirá como diferenciador del padre y entre otros ahorradores menores con el mismo tutor, quedando como sigue: número de identificación del socio + m1. En caso de ser menor independiente, debe contar con su propio número de identificador." Se agrega el procedimiento en Especiales / Asigna tutores y consecutivo a menores de edad. Aunque se corre automáticamente al generara los reportes de captación.
  72. 841: NOMBRE DE LA SUCURSAL QUE OPERA EL DEPOSITO: Mostrar clave de sucursal en lugar de nombre. Se debe editar en Parámetros / Generales / Clave CASFIM SHCP
  73. 841: TIPO DE MODALIDAD, En el caso de la cooperativa usamos el valor 2 y 5, pero SAC solo asigna ahorita el 2, las de menores asignar el valor 5. Ya se reportaba correctamente para las cuentas de pasivo, hacía falta en los contratos de inversión.
  74. 841: TASA DE RENDIMIENTO ANUAL, se ajusta a 4 decimales.
  75. SAC y LotFi: se incorpora el parámetro de "enganche" en el plan de pagos. Un enganche es un pago único, en el primer abono, que se da como anticipo para un terreno. En las bases de datos se agrega el campo PRESTOTOR.Enganche.
  76. Actualmente se usa el formato de CR, EdoCue.rpt, para imprimir un estado de cuenta para pasivos y contratos de inversión. Se agrega el formato EdoCuePre.rpt para imprimir un estado de cuenta para préstamos. Se realiza en base a las Disposiciones publicadas en el DOF el 11/ago/2016 dirigidas a SOFOMs, Art. 33 al 37 y Anexo 2. Se modifica ImprimeEdoCueCONDUSEF0 para que llame a la nueva subrutina ImprimeEdoCuePreCONDUSEF.
  77. En la subrutina CalcPrestamo4 agrego como salidas en el hashtable hSalidas, los valores catsi y catci, que son respectivamente el CAT sin IVA y con IVA. Revisar que no se llame innecesariamente a PlanPagos2 en el código.
  78. En SAC, el reporte de saldo de préstamos ya permite filtrar por cartera (vigente, vencida). Se agrega otro combo para filtrar por etapa del crédito (etapa 1, 2 y 3)
  79. Se calculaba erróneamente el monto de último pago de capital de un préstamo, en la función CalcPrestamo4. Se cambia totalmente. Ahora se crea una estructura de datos tipo Dictionary(Of Date, Decimal), donde se guardan las fechas y el monto de cada abono de capital. Igual, se crea otro Dictionary para guardar las fechas y el monto de interés pagado. Esto permite agregar en una misma fecha 2 o más montos que se hayan pagado el mismo día. Posteriormente, de estos Dictionary se obtiene la última fecha donde el monto sea mayor que cero, mediante una consulta tipo LINQ, lo cual logra un código más legible, sencillo y eficiente: Dim registroMax = dicFechaMontoC.Where(Function(kvp) kvp.Value > 0).OrderByDescending(Function(kvp) kvp.Key).FirstOrDefault()
  80. En julio de 2019, Bansefi dejó de existir oficialmente para convertirse en el Banco del Bienestar. Como aliado de la organización alemana DGRV, pensé en quitar lo reportes relacionados, y el campo folio IF, que se usa en estos reportes. Pero aunque Bansefi desapareció, DGRV sigue operando en el país. Sin embargo se eliminan.
  81. Se establece un contrato de inversión como garantía de un préstamo. Después este contrato se cancela, se crea uno nuevo, y se establece este segundo contrato como garantía de un préstamo, en vez del primero. Al imprimir el formato de CR, contratocredito6.rpt, se imprimen los dos. Faltaba establecer un status=0 (considerar solo relaciones activas) en la sentencia SQL de CR, quedando: SELECT s.maymen as smaymen, a.maymen as amaymen, a1.maymen as a1maymen, a2.maymen as a2maymen,t.Descripcion, c.sucursal+' '+cast(c.clavecontrato as nvarchar(10)) as clavecontrato_, * FROM  prestotor p LEFT JOIN socios s on p.sucsoc=s.sucursal and p.maymen=s.maymen and p.clavesocio=s.clavesocio LEFT JOIN socios a on p.sucaval=a.sucursal and p.maymena=a.maymen and p.aval=a.clavesocio LEFT JOIN socios a1 on p.sucaval1=a1.sucursal and p.maymena1=a1.maymen and p.aval1=a1.clavesocio LEFT JOIN socios a2 on p.sucaval2=a2.sucursal and p.maymena2=a2.maymen and p.aval2=a2.clavesocio LEFT JOIN tasas t on p.ClaveTasa=t.ClaveTasa and t.sucursal=p.sucursal and t.concepto=p.Concepto LEFT JOIN (contpre cp left join continv c on cp.sucursal=c.sucursal and cp.clavecontrato=c.clavecontrato) on p.sucursal=cp.sucpre and p.claveprestamo=cp.claveprestamo and p.sub=cp.sub and cp.status=0 WHERE p.ClavePrestamo={?ClavePrestamo} and p.Sucursal='{?Sucursal}'
  82. Solicitamos revisar la validación cuando se constituye un DPF (depósito a plazo fijo) utilizando recursos de una cuenta de ahorro (UniCuenta). La propuesta es que el sistema no permita realizar la operación cuando, después del cargo, la cuenta quede por debajo del saldo mínimo configurado para el producto de pasivo. En nuestro caso, el saldo mínimo configurado es de $50.00, por lo que la inversión no debería generarse si el saldo remanente es inferior a dicho importe.
  83. Al calcular un CURP, el sistema SAC, para el estado de Aguascalientes, regresaba la clave "As" en vez de "AS"
  84. Se agrega el campo MOVPRESTAMO.num, que es el número de abono de cada préstamo, en orden cronológico (por fecha, hora y clavemov), comenzando en 1. Calculado en CalcNumAboPre. El número de abono se puede consultar en el corte de caja.
  85. Mostrar el depósito inicial efectuado por el socio en los formatos de: contrato de ahorro, perfil transaccional y en los de PLD. En modImpresion.ImprimirContratoAh se hace el cálculo del primer depósito, para la cuenta de pasivo específica, correspondiente a la cuenta del contrato de pasivos. Para el formato de perfil transaccional, se calcula el primer depósito a cualquier cuenta de pasivo. Se agrega el parámetro MontoAp a los formatos de Crystal Reports, PerfilTran.rpt y PerfilTran1.rpt
  86. En algunas pantallas no se mostraban los botones de la esquina inferior derecha del formulario de Parámetros y de Actualización de personas. Por recomendaciones de la IA cambié la propiedad del formulario, AutoScaleMode=Dpi en vez del valor anterior que era Font.
  87. Al generar un nuevo registro de varias tablas (BITACORA, MOVCONTRATO, MOVUSUARIOS, MOVBANCOS, CHEQUESREC, MOVSERVICIOS, MSG) se crea una nueva clave primaria numérica (clavemov u otra parecida). Se cambia el procedimiento de generar esta clave. Anteriormente se llamaba a un procedimiento especial (NuevaClave), ahora se crea dentro de la misma instrucción que inserta el registro, mediante ISNULL(MAX(clavemov),1)+1. Se pretende hacer más eficientes los procesos de agregado de registros a la base de datos.


Comentarios

Entradas más populares de este blog

Reporte de Buró de Crédito INTF versión 14

Base de datos de códigos postales

SAC 9.6.9374