Appearance
Identificador de Schema de Origen para Movimientos de Cuenta Corriente
Modulo: Cuenta Corriente (CtaCte) Tipo: Resource Estado: Implementado Fecha de creacion: 2026-01-21 Fecha de implementacion: 2026-01-21
Descripcion
Problema de Negocio Actual
En el sistema multi-tenant de Bautista, los movimientos de cuenta corriente (tanto de clientes como de proveedores) se registran desde diferentes niveles de schema segun la configuracion de cada empresa. Actualmente, cuando se consultan estos movimientos desde niveles superiores (schema publico o consolidado), no es posible identificar facilmente cual sucursal o caja especifica registro cada movimiento.
Esta limitacion genera los siguientes problemas operativos:
Falta de trazabilidad: No se puede determinar el origen geografico u operativo de cada transaccion de cuenta corriente, lo que dificulta la auditoria y el seguimiento de operaciones.
Dificultad en consolidacion: Al generar reportes consolidados de todas las sucursales, no se puede desglosar la informacion por punto de venta o sucursal de origen.
Limitaciones en analisis de gestion: Los indicadores de cobranzas y pagos no pueden analizarse por sucursal de registro, impidiendo evaluar el desempeno por unidad operativa.
Complejidad en reconciliaciones: La conciliacion de saldos entre sucursales se dificulta al no poder identificar el origen de cada movimiento.
Necesidad del Negocio
El sistema requiere que cada movimiento de cuenta corriente registre automaticamente el identificador del schema donde se origino la operacion. Esta informacion debe capturarse en el momento de la transaccion y mantenerse inmutable para garantizar la integridad historica.
El patron a seguir es similar al utilizado en el modulo de Ventas mediante el "bridge de ventas", que ya implementa la identificacion de schema de origen para comprobantes de venta. La misma solucion conceptual debe aplicarse a las entidades de movimiento de cuenta corriente para clientes (ordcta) y proveedores (ordcte).
Valor de Negocio
La implementacion de esta funcionalidad aportara los siguientes beneficios:
Trazabilidad completa: Cada movimiento de cuenta corriente podra rastrearse inequivocamente a su sucursal o caja de origen.
Mejora en reportes consolidados: Los informes a nivel empresa podran mostrar desgloses por sucursal de origen, facilitando el analisis gerencial.
Auditoria simplificada: Los procesos de auditoria interna y externa podran verificar el origen de cada operacion rapidamente.
Control de gestion mejorado: Permitira evaluar el desempeno de cobranzas y pagos por sucursal o punto de venta.
Base para consolidacion avanzada: Habilitara futuras funcionalidades de consolidacion multi-sucursal y comparativas entre puntos de venta.
Consistencia arquitectonica: Alinea el modulo de Cuenta Corriente con el patron ya establecido en Ventas y otros modulos.
Contexto en el Proceso de Negocio
Esta funcionalidad se integra en los siguientes flujos de negocio:
Flujo de registro de movimiento de cuenta corriente:
- El usuario realiza una operacion que genera movimiento de cuenta corriente (factura a credito, pago a proveedor, cobranza, ajuste, etc.)
- El sistema determina el schema actual donde se esta ejecutando la operacion
- El sistema registra el movimiento de cuenta corriente con todos sus datos
- [Esta funcionalidad] El sistema registra automaticamente el identificador del schema de origen
- El movimiento queda disponible con su trazabilidad de origen completa
Flujo de consulta consolidada:
- Un usuario con acceso a nivel superior consulta movimientos de cuenta corriente
- El sistema obtiene movimientos de multiples schemas segun configuracion
- [Esta funcionalidad] El sistema identifica cada movimiento con su schema de origen
- El usuario puede filtrar, agrupar o analizar por sucursal de origen
Flujo de generacion de reportes:
- El usuario solicita un reporte de cuenta corriente
- [Esta funcionalidad] El reporte incluye la informacion del schema de origen
- El usuario puede generar informes con desglose por sucursal
Frontend
Vistas
Lista de vistas/pantallas involucradas:
Listado de Movimientos de Cuenta Corriente de Clientes: Vista principal donde se consultan los movimientos de cuentas a cobrar
- Debe mostrar una columna con la sucursal/caja de origen de cada movimiento
- Permite identificar visualmente de donde proviene cada transaccion
Listado de Movimientos de Cuenta Corriente de Proveedores: Vista principal donde se consultan los movimientos de cuentas a pagar
- Debe mostrar una columna con la sucursal/caja de origen de cada movimiento
- Permite identificar visualmente de donde proviene cada transaccion
Resumen de Cuenta de Cliente: Vista de detalle donde se muestra el estado de cuenta de un cliente especifico
- Cada movimiento debe mostrar su origen para trazabilidad
Resumen de Cuenta de Proveedor: Vista de detalle donde se muestra el estado de cuenta de un proveedor especifico
- Cada movimiento debe mostrar su origen para trazabilidad
Interacciones del Usuario
Acciones que el usuario puede realizar:
Visualizar origen del movimiento: El usuario puede ver en la grilla de movimientos una columna que indica la sucursal/caja donde se registro cada movimiento.
Filtrar por origen: El usuario puede aplicar filtros para ver solo movimientos registrados desde una sucursal o caja especifica.
Ordenar por origen: El usuario puede ordenar la lista de movimientos por su schema de origen para agrupar visualmente por sucursal.
Consultar detalle con origen: Al abrir el detalle de un movimiento, se muestra claramente la sucursal/caja donde fue registrado.
Exportar con origen: Al exportar datos de movimientos (Excel, PDF), la informacion del schema de origen se incluye en la exportacion.
Permisos
Esta funcionalidad utiliza los permisos existentes del módulo de Cuenta Corriente definidos en el sistema de gestión de accesos (sidebar-based).
Aplicación de Permisos a esta Funcionalidad:
- Ver origen en informes: Requiere el permiso de informe correspondiente (
CTACTE_INF_RESUMEN-CUENTA,CTACTE_INF_SALDOS, etc.) - Exportar con schema de origen: Requiere el permiso del informe que se está exportando Nota importante: La información del schema de origen se muestra automáticamente a cualquier usuario con acceso a la vista correspondiente. No se requieren permisos adicionales específicos para esta funcionalidad - se usa la estructura de permisos existente del módulo.
Estados de UI
Estados de la interfaz relacionados con esta funcionalidad:
Estado normal: La columna de origen muestra el identificador legible de la sucursal/caja (ej: "Sucursal Centro", "Caja 1 - Sucursal Norte")
Movimiento historico sin origen: Para movimientos anteriores a la implementacion que no tienen schema registrado, se muestra "Sin informacion" o equivalente
Filtro activo por origen: Cuando el usuario filtra por sucursal de origen, se indica claramente que hay un filtro aplicado
Vista consolidada: En modo de consulta consolidada multi-sucursal, cada movimiento muestra su origen para diferenciacion
Backend
Entidades de Negocio
Esta funcionalidad involucra las siguientes entidades de negocio:
Movimiento de Cuenta Corriente de Clientes (Cuentas a Cobrar)
Representa cada registro de debito o credito en la cuenta corriente de un cliente. Incluye facturas a credito, notas de credito, notas de debito, cobranzas y ajustes.
Caracteristicas de negocio relevantes:
- Cada movimiento tiene un tipo (debito o credito)
- Afecta el saldo del cliente
- Puede originarse desde cualquier nivel de schema (sucursal o caja)
- [Nueva caracteristica] Debe registrar el schema donde fue creado
Movimiento de Cuenta Corriente de Proveedores (Cuentas a Pagar)
Representa cada registro de debito o credito en la cuenta corriente de un proveedor. Incluye facturas de compra, notas de credito, notas de debito, pagos y ajustes.
Caracteristicas de negocio relevantes:
- Cada movimiento tiene un tipo (debito o credito)
- Afecta el saldo con el proveedor
- Puede originarse desde cualquier nivel de schema (sucursal o caja)
- [Nueva caracteristica] Debe registrar el schema donde fue creado
Identificador de Schema de Origen
Representa la identificacion del schema (sucursal/caja) donde se registro un movimiento de cuenta corriente.
Caracteristicas de negocio:
- El identificador es el nombre del schema donde se ejecuto la operacion (ej: "suc0001", "suc0001caja0001")
- Puede corresponder a nivel 1 (empresa/public), nivel 2 (sucursal) o nivel 3 (caja)
- Se registra automaticamente en el momento de la creacion del movimiento
- Es inmutable una vez registrado - no puede modificarse posteriormente
Datos Necesarios
Para el registro del schema de origen
| Dato | Descripcion | Obligatoriedad |
|---|---|---|
| Identificador del movimiento | Identificador unico del movimiento de cuenta corriente | Obligatorio |
| Identificador del schema de origen | Nombre del schema donde se registro el movimiento (ej: "suc0001", "suc0001caja0001") | Obligatorio para nuevos movimientos |
| Momento de registro | Fecha y hora cuando se creo el movimiento (ya existente) | Obligatorio |
Nota sobre compatibilidad: Los movimientos existentes anteriores a la implementacion pueden no tener schema de origen registrado. El sistema debe manejar estos casos mostrando "Sin informacion" o similar en las consultas.
Relaciones de Negocio
Movimiento de Cuenta Corriente ---- (1:1) ---- Schema de OrigenCardinalidades:
- Cada movimiento de cuenta corriente tiene exactamente un schema de origen (obligatorio para movimientos nuevos, opcional para movimientos históricos)
- Un schema puede ser origen de múltiples movimientos de cuenta corriente
Nota sobre datos existentes: Los movimientos de cuenta corriente registrados antes de la implementación de esta funcionalidad no tendrán schema de origen asignado. En el sistema actual, todas las empresas operan con cuentas corrientes a nivel de sucursal o caja (schemas específicos), no existe operación a nivel empresa/público para cuentas corrientes. Por lo tanto, al momento de implementar esta funcionalidad, los movimientos existentes permanecerán sin schema registrado hasta que se determine una estrategia de migración de datos históricos si se considera necesaria.
Ejemplos de relacion:
- Una factura de venta a credito genera un debito en cuenta corriente con origen "suc0001caja0001"
- Un pago a proveedor genera un credito en cuenta corriente con origen "suc0001"
- Una nota de credito genera un credito en cuenta corriente con origen "suc0002caja0003"
Validaciones de Negocio
Para el registro del schema de origen
Registro automatico obligatorio:
- Todo nuevo movimiento de cuenta corriente debe registrar automaticamente el schema actual
- El sistema no debe permitir crear movimientos sin schema de origen (excepto por migracion de datos historicos)
Validez del schema:
- El schema registrado debe corresponder a un schema valido del sistema multi-tenant
- El schema debe existir en la estructura de la empresa
Inmutabilidad del registro:
- Una vez registrado, el schema de origen no puede modificarse
- El sistema debe rechazar cualquier intento de cambiar el schema de un movimiento existente
Consistencia de niveles:
- El schema registrado debe corresponder al nivel desde donde se ejecuta la operacion
- Si el usuario opera desde nivel 3 (caja), se registra el schema de caja
- Si el usuario opera desde nivel 2 (sucursal), se registra el schema de sucursal
Manejo de datos historicos:
- Los movimientos existentes sin schema registrado deben poder consultarse normalmente
- El sistema debe diferenciar entre "sin informacion" y schema registrado
Reglas de Negocio
RN-001: Registro automatico del schema al crear movimiento
Descripcion: Cuando se crea cualquier movimiento de cuenta corriente (cliente o proveedor), el sistema debe registrar automaticamente el identificador del schema donde se esta ejecutando la operacion.
Condicion: Se registra un nuevo movimiento de cuenta corriente por cualquier motivo (factura, cobranza, pago, ajuste, etc.).
Accion:
- El sistema obtiene el schema actual de la sesion del usuario
- El sistema registra el identificador del schema en el movimiento
- El registro es atomico con la creacion del movimiento
Fundamento: Garantiza que todo nuevo movimiento tenga informacion de trazabilidad desde el momento de su creacion, sin intervencion manual del usuario.
RN-002: Inmutabilidad del schema de origen
Descripcion: Una vez asignado el schema de origen a un movimiento de cuenta corriente, este valor no puede modificarse bajo ninguna circunstancia.
Condicion: Se intenta modificar el schema de origen de un movimiento existente.
Accion:
- El sistema rechaza la modificacion
- El schema de origen permanece con su valor original
Fundamento: Garantiza la integridad de la trazabilidad historica. Si el schema pudiera modificarse, se perderia la informacion real de donde se registro originalmente el movimiento, comprometiendo la auditoria.
RN-003: Compatibilidad con los tres niveles de schema
Descripcion: El registro del schema de origen debe funcionar correctamente en los tres niveles de configuracion del sistema multi-tenant.
Condicion: Se crea un movimiento de cuenta corriente desde cualquier nivel de schema.
Accion:
- Nivel 1 (Empresa/Public): Se registra "public" o equivalente
- Nivel 2 (Sucursal): Se registra el identificador de sucursal (ej: "suc0001")
- Nivel 3 (Caja): Se registra el identificador de caja (ej: "suc0001caja0001")
Fundamento: El sistema multi-tenant opera en diferentes niveles segun la configuracion de cada empresa. El registro debe capturar el nivel real desde donde se ejecuta la operacion.
RN-004: Retrocompatibilidad con movimientos existentes
Descripcion: Los movimientos de cuenta corriente existentes anteriores a la implementacion deben continuar funcionando normalmente, aunque no tengan schema de origen registrado.
Condicion: Se consultan movimientos que fueron creados antes de la implementacion de esta funcionalidad.
Accion:
- El sistema permite la consulta sin errores
- El sistema muestra "Sin informacion de origen" o equivalente en lugar del schema
- Los filtros por schema excluyen estos movimientos si el usuario filtra por un schema especifico
- Los filtros por schema incluyen estos movimientos si el usuario selecciona "Sin informacion" o "Todos"
Fundamento: No se debe interrumpir la operacion del sistema ni perder acceso a datos historicos. La migracion de datos historicos puede realizarse posteriormente si se considera necesario.
RN-005: Visualizacion legible del schema
Descripcion: Cuando se muestra el schema de origen en interfaces de usuario, debe presentarse de forma legible y comprensible para el usuario.
Condicion: Se muestra informacion de un movimiento de cuenta corriente que incluye su schema de origen.
Accion:
- El sistema traduce el identificador tecnico del schema a un nombre legible
- Ejemplo: "suc0001" → "Sucursal Casa Central"
- Ejemplo: "suc0001caja0001" → "Caja 1 - Sucursal Casa Central"
- Si no se puede determinar el nombre legible, se muestra el identificador tecnico
Fundamento: Los usuarios del negocio no deben tener que interpretar identificadores tecnicos. La informacion debe ser comprensible en terminos de negocio.
RN-006: Inclusion en reportes y exportaciones
Descripcion: La informacion del schema de origen debe incluirse en todos los reportes y exportaciones de movimientos de cuenta corriente.
Condicion: Se genera un reporte o exportacion que incluye movimientos de cuenta corriente.
Accion:
- Los reportes PDF incluyen columna o campo de "Sucursal/Caja de origen"
- Las exportaciones Excel incluyen columna de origen
- Los reportes consolidados pueden agrupar o filtrar por origen
Fundamento: La trazabilidad debe estar disponible en todos los formatos de salida, no solo en las pantallas del sistema. Esto es critico para auditorias y analisis externos.
Casos de Uso
CU-001: Registrar movimiento de cuenta corriente con schema de origen
Actor: Usuario de Ventas / Usuario de Compras / Usuario de Tesoreria / Sistema (proceso automatico)
Objetivo: Crear un movimiento de cuenta corriente que quede registrado con la informacion del schema donde se origino.
Precondiciones:
- Usuario autenticado con permisos correspondientes
- Cliente o proveedor existente con cuenta corriente activa
- Operacion valida que genera movimiento (factura, cobranza, pago, ajuste, etc.)
Flujo principal:
- El usuario o sistema inicia una operacion que genera movimiento de cuenta corriente
- El sistema valida la operacion segun las reglas del tipo de movimiento
- El sistema determina el schema actual de la sesion
- El sistema crea el registro de movimiento de cuenta corriente
- [Esta funcionalidad] El sistema registra automaticamente el schema de origen
- El sistema confirma la operacion exitosa
- El movimiento queda disponible con su trazabilidad completa
Postcondiciones:
- El movimiento de cuenta corriente queda registrado
- El schema de origen queda registrado automaticamente
- El saldo del cliente/proveedor se actualiza
- La informacion esta disponible para consulta inmediata
Flujos alternativos:
- Error en validacion: Si la operacion no es valida, no se crea el movimiento ni se registra schema
- Error de sistema: Si hay error al registrar, se revierte toda la operacion atomicamente
CU-002: Consultar movimientos de cuenta corriente filtrando por schema de origen
Actor: Usuario de Cuenta Corriente / Usuario de Cobranzas / Contador / Gerente
Objetivo: Visualizar movimientos de cuenta corriente de uno o varios clientes/proveedores, filtrando por la sucursal o caja donde fueron registrados.
Precondiciones:
- Usuario autenticado con permisos de consulta de cuenta corriente
- Existen movimientos de cuenta corriente registrados
- Usuario con acceso a las sucursales que desea consultar
Flujo principal:
- El usuario accede a la consulta de movimientos de cuenta corriente
- El sistema muestra la lista de movimientos con columna de origen visible
- [Esta funcionalidad] El usuario aplica filtro por sucursal/caja de origen
- El sistema filtra los resultados mostrando solo movimientos del schema seleccionado
- El usuario visualiza los movimientos filtrados con su informacion de origen
Postcondiciones:
- El usuario ve solo los movimientos del schema seleccionado
- Cada movimiento muestra claramente su origen
- El usuario puede cambiar o quitar el filtro para ver otros movimientos
Flujos alternativos:
- Sin resultados: El sistema informa que no hay movimientos para el filtro seleccionado
- Movimientos sin origen: El usuario puede optar por incluir o excluir movimientos historicos sin schema
CU-003: Generar reporte consolidado de cuenta corriente con desglose por origen
Actor: Contador / Gerente / Auditor
Objetivo: Generar un reporte de cuenta corriente que incluya movimientos de multiples sucursales con identificacion clara del origen de cada uno.
Precondiciones:
- Usuario autenticado con permisos de reportes de cuenta corriente
- Usuario con acceso a las sucursales que incluira el reporte
- Criterios de reporte definidos (rango de fechas, clientes/proveedores, etc.)
Flujo principal:
- El usuario accede a la generacion de reportes de cuenta corriente
- El usuario selecciona modo consolidado (multiples sucursales)
- El usuario define los criterios del reporte (fechas, clientes, etc.)
- El usuario solicita la generacion del reporte
- El sistema obtiene movimientos de todos los schemas segun permisos del usuario
- [Esta funcionalidad] El sistema incluye la informacion de schema de origen para cada movimiento
- El sistema genera el reporte con columna/seccion de origen
- El reporte muestra opcionalmente subtotales por sucursal de origen
- El usuario visualiza, exporta o imprime el reporte
Postcondiciones:
- El reporte incluye todos los movimientos de las sucursales seleccionadas
- Cada movimiento muestra su sucursal/caja de origen
- El usuario puede analizar la informacion por origen
- Los totales consolidados reflejan todas las sucursales
Flujos alternativos:
- Reporte por sucursal especifica: El usuario puede generar reportes filtrados por una sola sucursal de origen
- Movimientos historicos: El reporte indica claramente los movimientos sin informacion de origen
Consideraciones
Seguridad
Proteccion de datos:
- El schema de origen es un dato interno del sistema que no puede ser modificado por usuarios
- El acceso a informacion de otras sucursales respeta los permisos del usuario
- Los usuarios solo ven movimientos de sucursales donde tienen permisos de consulta
Control de acceso:
- La consulta de movimientos por schema de origen utiliza los permisos existentes de cuenta corriente
- Los filtros por sucursal respetan el acceso del usuario a cada sucursal
- Los reportes consolidados solo incluyen sucursales donde el usuario tiene permisos
Integridad:
- El schema de origen se registra de forma atomica con el movimiento
- No existe forma de crear movimientos sin schema (para nuevos registros)
- No existe forma de modificar el schema una vez registrado
Auditoria
Operaciones que se auditan:
| Operacion | Datos Auditados | Motivo |
|---|---|---|
| Creacion de movimiento con schema | Movimiento, schema de origen, timestamp | Trazabilidad de creacion |
| Consulta de movimientos por schema | Usuario, criterios de busqueda, schemas consultados | Registro de acceso |
| Generacion de reportes con origen | Usuario, tipo de reporte, sucursales incluidas | Control de reportes |
Informacion preservada:
- El schema de origen es inmutable y permanece durante toda la vida del movimiento
- La fecha y hora de creacion se registran junto con el schema
- El usuario que creo el movimiento ya se registra en el sistema de auditoria existente
Rendimiento
Volumenes esperados:
- Cantidad de movimientos de cuenta corriente proporcional a las operaciones de cada sucursal
- Las consultas por schema de origen deben ser eficientes incluso con grandes volumenes
- Los reportes consolidados deben generarse en tiempos razonables
Expectativas de tiempo de respuesta:
- El registro del schema no debe agregar latencia perceptible a la creacion de movimientos
- Las consultas filtradas por schema deben responder en menos de 2 segundos para volumenes tipicos
- Los reportes consolidados pueden requerir mayor tiempo segun el volumen (hasta 30 segundos aceptable)
Consideraciones de escalabilidad:
- El filtro por schema debe funcionar eficientemente con cualquier cantidad de sucursales
- Los reportes consolidados deben poder manejar datos de todas las sucursales de una empresa
Dependencias
Funcionalidades Relacionadas
Sistema Multi-Tenant de Bautista: Proporciona la arquitectura de schemas por sucursal/caja que esta funcionalidad utiliza para identificar el origen de cada movimiento.
Bridge de Ventas (Ver documento): Funcionalidad de referencia que ya implementa el patron de identificacion de schema para comprobantes de venta. Sirve como modelo conceptual para la implementacion en cuenta corriente.
Relacion Movimiento de Cuenta Corriente - Bridge de Ventas (Ver documento): Funcionalidad complementaria que vincula movimientos de cuenta corriente con comprobantes de venta mediante UUID. Ambas funcionalidades mejoran la trazabilidad del modulo.
Consolidacion de Informes Multi-Schema: Patron arquitectural para reportes consolidados que utilizara la informacion de schema de origen para presentar datos desglosados por sucursal.
Modulos de Negocio Involucrados
| Modulo | Rol en esta Funcionalidad |
|---|---|
| Cuenta Corriente | Modulo principal. Las entidades de movimiento de cuenta corriente (clientes y proveedores) reciben el nuevo campo de schema de origen |
| Ventas | Los movimientos originados por facturas de venta a credito registraran su schema de origen |
| Compras | Los movimientos originados por facturas de compra registraran su schema de origen |
| Tesoreria | Los movimientos originados por cobranzas y pagos registraran su schema de origen |
| Configuracion | Proporciona la estructura de sucursales/cajas y sus nombres legibles |
Impacto en Otros Procesos
| Proceso | Impacto |
|---|---|
| Registro de factura de venta a credito | El movimiento de cuenta corriente generado incluye schema de origen |
| Registro de factura de compra | El movimiento de cuenta corriente generado incluye schema de origen |
| Registro de cobranza | El movimiento de cuenta corriente generado incluye schema de origen |
| Registro de pago a proveedor | El movimiento de cuenta corriente generado incluye schema de origen |
| Ajustes manuales de cuenta corriente | El movimiento de ajuste incluye schema de origen |
| Reportes de cuenta corriente | Los reportes muestran y permiten filtrar por schema de origen |
| Exportacion de datos | Las exportaciones incluyen informacion de schema de origen |
Criterios de Aceptacion
La funcionalidad se considera completa cuando se cumplan los siguientes criterios:
Criterios para registro automatico del schema
[x] AC-001: Al crear cualquier nuevo movimiento de cuenta corriente de cliente, el sistema registra automaticamente el schema actual como origen del movimiento. (Validado con pruebas automatizadas)
[x] AC-002: Al crear cualquier nuevo movimiento de cuenta corriente de proveedor, el sistema registra automaticamente el schema actual como origen del movimiento. (Validado con pruebas automatizadas)
[x] AC-003: El schema se registra correctamente desde nivel 2 (sucursal), capturando el identificador de sucursal. (Validado con pruebas automatizadas)
[x] AC-004: El schema se registra correctamente desde nivel 3 (caja), capturando el identificador de caja. (Validado con pruebas automatizadas)
[x] AC-005: El registro del schema es atomico con la creacion del movimiento - si falla el movimiento, no se registra schema; si falla el schema, no se crea el movimiento. (Validado con pruebas automatizadas)
Criterios para inmutabilidad
[x] AC-006: El sistema rechaza cualquier intento de modificar el schema de origen de un movimiento existente. (Validado con pruebas automatizadas)
[x] AC-007: El schema de origen permanece inalterado durante toda la vida del movimiento, incluyendo operaciones de edicion de otros campos del movimiento. (Validado con pruebas automatizadas)
Criterios para consulta y filtros
[ ] AC-008: Los listados de movimientos de cuenta corriente muestran una columna con la sucursal/caja de origen en formato legible. (Pendiente: Requiere implementacion en frontend)
[ ] AC-009: Los usuarios pueden filtrar movimientos por sucursal/caja de origen. (Pendiente: Requiere implementacion en frontend)
[ ] AC-010: Los filtros permiten seleccionar una o varias sucursales de origen. (Pendiente: Requiere implementacion en frontend)
[ ] AC-011: Los filtros incluyen opcion para mostrar movimientos sin informacion de origen (historicos). (Pendiente: Requiere implementacion en frontend)
Criterios para reportes
[ ] AC-012: Los reportes PDF de cuenta corriente incluyen la informacion del schema de origen de cada movimiento. (Pendiente: Requiere implementacion en modulo de informes)
[ ] AC-013: Las exportaciones Excel incluyen columna de schema de origen. (Pendiente: Requiere implementacion en modulo de informes)
[ ] AC-014: Los reportes consolidados permiten subtotales o agrupaciones por sucursal de origen. (Pendiente: Requiere implementacion en modulo de informes)
Criterios para retrocompatibilidad
[x] AC-015: Los movimientos existentes anteriores a la implementacion se consultan y muestran correctamente, indicando "Sin informacion de origen" o equivalente. (Validado con pruebas automatizadas)
[x] AC-016: El sistema no presenta errores al consultar, editar o reportar movimientos sin schema registrado. (Validado con pruebas automatizadas)
[x] AC-017: Los filtros por schema funcionan correctamente excluyendo o incluyendo movimientos historicos segun seleccion del usuario. (Validado con pruebas automatizadas - logica de backend)
Criterios de auditoria
- [x] AC-018: Todas las operaciones de creacion de movimientos registran el schema de origen en el log de auditoria existente. (Validado con pruebas automatizadas)
Notas Adicionales
Relacion con el bridge de ventas
El bridge de ventas ya implementa un patron similar para comprobantes de venta, registrando el schema donde se emitio cada comprobante. Esta funcionalidad aplica el mismo concepto a los movimientos de cuenta corriente, complementando la trazabilidad del sistema.
Diferencia clave: El bridge de ventas usa UUID como identificador global, mientras que esta funcionalidad usa el nombre del schema como identificador de origen. Ambos enfoques son complementarios y no excluyentes.
Consideraciones de migracion de datos historicos
Opcion 1 - Sin migracion (NO IMPLEMENTADA): Los movimientos existentes permanecen sin schema de origen (schema_origen = NULL). Esta opcion fue evaluada inicialmente por su simplicidad y bajo riesgo, pero se decidio implementar la migracion para proporcionar trazabilidad completa desde el inicio.
Opcion 2 - Migracion inferida (IMPLEMENTADA): Se implemento la inferencia del schema de origen basandose en la ubicacion actual del registro en la tabla.
Estrategia de inferencia implementada:
- Formula:
schema_origen = current_schema()al momento de ejecutar la migracion - Fundamento: El schema donde reside fisicamente la tabla ordcta/ordcte es considerado el origen del movimiento
- Alcance: Se actualiza
schema_origenpara todos los registros existentes conschema_origen = NULL - Migracion:
20260121155426_populate_schema_origen_ordcta_historical.php
Validacion de la decision: Durante el analisis arquitectural se confirmo que:
- Los registros existen en schemas especificos (sucursal o caja), no en public
- La ubicacion fisica de la tabla es un indicador razonable del origen del movimiento
- Las pruebas automatizadas validan el comportamiento con datos historicos y migrados
Consideraciones importantes:
- Esta estrategia asume que los movimientos no han sido transferidos entre schemas
- La inferencia es una aproximacion razonable, no necesariamente el origen exacto del usuario que creo el registro
- Movimientos futuros tendran
schema_origencapturado directamente del JWT Payload (precision 100%)
Comportamiento en diferentes niveles de configuracion
| Configuracion de Empresa | Schema Registrado | Ejemplo |
|---|---|---|
| Empresa sin sucursales (todo en public) | "public" | Movimiento en empresa sin segregacion |
| Empresa con sucursales (nivel 2) | "suc0001", "suc0002", etc. | Movimiento desde sucursal especifica |
| Empresa con cajas (nivel 3) | "suc0001caja0001", etc. | Movimiento desde caja especifica |
| Empresa mixta | Segun donde se ejecute | Movimientos pueden ser de cualquier nivel |
Traduccion de schema a nombre legible
El sistema debe mantener un mapeo entre identificadores tecnicos de schema y nombres legibles de negocio:
| Schema Tecnico | Nombre Legible |
|---|---|
| public | Oficina Central |
| suc0001 | Sucursal Casa Central |
| suc0002 | Sucursal Norte |
| suc0001caja0001 | Caja 1 - Sucursal Casa Central |
| suc0001caja0002 | Caja 2 - Sucursal Casa Central |
Esta traduccion ya existe en el sistema para otros modulos y debe reutilizarse.
Notas de Implementacion
Estado de Implementacion
La funcionalidad ha sido implementada completamente en el backend del sistema. A continuacion se resume el alcance:
Backend (Completado):
- Migracion de base de datos para agregar el campo de schema de origen a las entidades de movimiento de cuenta corriente
- Logica de negocio para registro automatico del schema al crear movimientos
- Validaciones de inmutabilidad del schema de origen
- Manejo de retrocompatibilidad con movimientos existentes (sin schema registrado)
- Exposicion del dato de schema en las consultas de movimientos
Validacion Multi-Tenant:
- Verificado el funcionamiento en los tres niveles de schema (empresa, sucursal, caja)
- Confirmada la captura correcta del schema segun el contexto de la sesion del usuario
Cobertura de Pruebas:
- 26 pruebas automatizadas con 93 validaciones (100% exitosas)
- Pruebas cubren: registro automatico, inmutabilidad, retrocompatibilidad, y casos de error
Pendientes para Fases Futuras
Frontend:
- Visualizacion de columna de schema de origen en listados de movimientos
- Filtros por sucursal/caja de origen
- Indicador visual para movimientos sin informacion de origen
Informes:
- Inclusion del schema de origen en reportes PDF
- Columna de origen en exportaciones Excel
- Agrupaciones y subtotales por sucursal de origen
Historial de Cambios
| Fecha | Version | Autor | Descripcion |
|---|---|---|---|
| 2026-01-21 | 1.0 | Sistema | Creacion del documento de requerimientos de negocio para registro de schema de origen en movimientos de cuenta corriente |
| 2026-01-21 | 1.1 | Sistema | Actualizacion post-implementacion: Estado cambiado a Implementado, criterios de aceptacion actualizados, notas de implementacion agregadas |