Appearance
Trazabilidad de Movimientos de Stock con Comprobantes de Ventas
Modulo: Stock Tipo: Resource Estado: Implementado Fecha: 2025-12-23 Ultima actualizacion: 2025-12-24 (v1.6 - Bridge de Ventas Implementado)
Descripcion
Problema de negocio
Actualmente, los movimientos de stock generados por operaciones de ventas no mantienen una relacion explicita con los comprobantes que los originaron. Esta ausencia de vinculo genera los siguientes problemas operativos:
- Falta de trazabilidad: No es posible determinar de forma directa que comprobante de ventas (factura o nota de credito) genero un movimiento de stock especifico
- Dificultad en auditorias: Los procesos de control y verificacion requieren cruzar informacion manualmente entre distintos registros del sistema
- Reversiones imprecisas: Al eliminar o anular un comprobante de ventas, no existe un mecanismo confiable para identificar todos los movimientos de stock que deben revertirse
- Inconsistencia de datos: Pueden quedar movimientos de stock "huerfanos" cuando se eliminan comprobantes sin revertir adecuadamente el inventario
- Complejidad operativa: Los usuarios deben realizar busquedas indirectas para relacionar movimientos de stock con sus comprobantes de origen
Necesidad del negocio
El sistema requiere establecer una relacion trazable entre los movimientos de stock y los comprobantes de ventas que los originan. Esta relacion debe cumplir las siguientes caracteristicas:
- Identificacion del origen: Cada movimiento de stock generado por una venta debe registrar el identificador global del comprobante y su tipo
- Identificacion global univoca: El identificador de venta debe ser un UUID (identificador unico universal) que garantice unicidad en toda la empresa, sin importar la sucursal que genero el comprobante. Este UUID se obtiene del sistema de identificadores globales de comprobantes de venta (bridge de ventas). Ver Identificadores Globales para Comprobantes de Venta
- Flexibilidad arquitectonica: La relacion no debe depender de restricciones de integridad referencial rigidas, permitiendo flexibilidad en el manejo de datos historicos y procesos de migracion
- Integridad por logica de negocio: La consistencia entre movimientos de stock y comprobantes debe mantenerse mediante validaciones y procesos de negocio
Tipos de comprobantes de ventas involucrados:
- Facturas de venta (generan egreso de stock)
- Notas de credito de venta (generan ingreso de stock por devolucion)
- Notas de debito de venta (pueden generar egreso de stock segun el tipo de operacion)
Valor de negocio
La implementacion de esta funcionalidad aportara los siguientes beneficios:
- Trazabilidad completa: Permite rastrear el origen de cada movimiento de stock generado por ventas, facilitando consultas y verificaciones
- Reversiones precisas: Al eliminar un comprobante de ventas, el sistema puede identificar exactamente que movimientos de stock deben revertirse
- Integridad de inventario: Garantiza que no queden movimientos de stock sin revertir cuando se elimina un comprobante
- Auditoria eficiente: Simplifica los procesos de control al tener una relacion directa entre ventas y movimientos de inventario
- Soporte a compliance: Facilita el cumplimiento de requisitos de control interno y regulatorios relacionados con trazabilidad de operaciones
- Reduccion de errores: Minimiza la posibilidad de inconsistencias entre el modulo de ventas y el modulo de stock
Contexto en el proceso de negocio
Esta funcionalidad se integra en el flujo de ventas de la siguiente manera:
- El usuario registra un comprobante de ventas (factura, nota de credito, nota de debito)
- El sistema genera los movimientos de stock correspondientes segun los items del comprobante
- [Esta funcionalidad] El sistema registra en cada movimiento de stock el identificador del comprobante y su tipo
- La relacion queda disponible para consultas y para el proceso de reversion
Integracion con proceso de baja de comprobantes:
Esta funcionalidad es fundamental para el correcto funcionamiento del proceso de "Baja de registracion manual de comprobantes" documentado en baja-comprobantes-manual-process.md. Al eliminar un comprobante de ventas manualmente, el sistema debe:
- Buscar todos los movimientos de stock relacionados mediante la combinacion de identificador de venta y tipo de comprobante
- Revertir cada movimiento de stock encontrado (ajustar cantidades de productos)
- Eliminar los registros de movimiento de stock
- Garantizar que no queden movimientos de stock huerfanos
Backend
Entidades de negocio
Movimiento de Stock (entidad existente - enriquecida)
Entidad que representa cada movimiento de entrada o salida de inventario de un producto. Se enriquece con la capacidad de registrar su relacion con comprobantes de ventas.
Datos existentes relevantes:
| Dato | Descripcion | Proposito |
|---|---|---|
| Identificador del movimiento | Identificador unico del movimiento de stock | Identifica el registro |
| Producto | Producto afectado por el movimiento | Indica que producto se movio |
| Cantidad | Cantidad del movimiento | Indica cuanto se movio |
| Tipo de movimiento | Ingreso o Egreso | Indica la direccion del movimiento |
| Fecha | Fecha del movimiento | Indica cuando ocurrio |
| Comprobante de origen | Codigo del comprobante (generico) | Referencia textual al origen |
Datos nuevos (trazabilidad con ventas):
| Dato | Descripcion | Proposito |
|---|---|---|
| Identificador de venta | Identificador unico global (UUID) del comprobante de ventas que origino el movimiento. Este UUID se obtiene del sistema de identificadores globales de comprobantes de venta (bridge de ventas), garantizando unicidad en toda la empresa independientemente de la sucursal de origen | Permite relacionar el movimiento con el comprobante de venta especifico de forma univoca en toda la empresa, eliminando ambiguedades entre sucursales |
| Tipo de comprobante de venta | Tipo del comprobante de ventas (factura, nota de credito, nota de debito) | Indica el tipo de documento para logica de negocio y filtros. El UUID por si solo ya identifica univocamente el comprobante |
| Marca de origen | Caracter que identifica si el movimiento proviene de una operacion oficial ('O') o de prueba ('P') | Permite diferenciar movimientos oficiales de movimientos de prueba. Ver Marca de Origen en Movimientos de Stock |
Datos necesarios
Para la trazabilidad entre movimientos de stock y comprobantes de ventas, el sistema debe registrar:
| Dato | Descripcion | Obligatoriedad |
|---|---|---|
| Identificador de venta | Identificador unico global (UUID) que referencia al comprobante de ventas que genero el movimiento. Este UUID se obtiene del sistema de identificadores globales (bridge de ventas) | Obligatorio para TODOS los movimientos generados por ventas (oficiales y de prueba) |
| Tipo de comprobante de venta | Codigo del tipo de comprobante (factura, NC, ND) | Obligatorio cuando existe identificador de venta |
| Marca de origen | Caracter que identifica el tipo de operacion: 'O' (Oficial) o 'P' (Prueba) | Obligatorio para TODOS los movimientos de ventas. Facturas oficiales: 'O'. Facturas de prueba: 'P'. Notas de credito oficiales: 'O'. Notas de credito de prueba: 'P' |
Notas importantes:
- Estos datos de trazabilidad aplican a TODOS los movimientos generados por operaciones de ventas, tanto oficiales como de prueba
- Los movimientos de otros origenes (ajustes manuales, compras, transferencias entre depositos) no tendran identificador de venta ni tipo de comprobante de venta, pero SI deben tener la marca de origen
- La marca de origen es obligatoria para todos los nuevos movimientos de stock, independientemente de su origen. Ver Marca de Origen en Movimientos de Stock
Relaciones de negocio
Comprobante de Ventas (1) ---- (1) Identificador Global ---- (N) Movimientos de Stock- Comprobante a Movimientos: Un comprobante de ventas puede generar multiples movimientos de stock (uno por cada item del comprobante que afecte inventario)
- Movimiento a Comprobante: Cada movimiento de stock generado por una venta esta relacionado con exactamente un comprobante de ventas
- Identificacion de relacion mediante UUID global: El identificador de venta almacenado en el movimiento de stock es un UUID que proviene del sistema de identificadores globales de comprobantes de venta (bridge de ventas). Este UUID garantiza unicidad en toda la empresa, permitiendo identificar sin ambiguedad cualquier comprobante de venta, sin importar en que sucursal fue generado. Ver Identificadores Globales para Comprobantes de Venta
- Tipo de comprobante como informacion complementaria: El tipo de comprobante (factura, nota de credito, etc.) se registra para facilitar la logica de negocio y los filtros, pero el UUID global por si solo es suficiente para identificar univocamente el comprobante origen
Tipos de comprobantes y efecto en stock:
| Tipo de comprobante | Efecto en stock | Tipo de movimiento |
|---|---|---|
| Factura de venta | Salida de productos vendidos | Egreso |
| Nota de credito de venta | Entrada de productos devueltos | Ingreso |
Validaciones de negocio
Consistencia de datos de relacion:
- Si un movimiento tiene identificador de venta, debe tener obligatoriamente el tipo de comprobante
- Si un movimiento tiene tipo de comprobante de venta, debe tener obligatoriamente el identificador de venta
- No puede existir uno sin el otro
Validez de la relacion:
- El identificador de venta (UUID) debe existir en el sistema de identificadores globales de comprobantes de venta (bridge de ventas)
- El sistema debe validar que el UUID referenciado exista antes de registrar la relacion
- Al tratarse de un UUID global, la validacion se realiza a nivel empresa (no limitada a la sucursal actual)
Movimientos sin relacion a ventas:
- Los movimientos de stock que no provienen de ventas (ajustes manuales, compras, transferencias) no deben tener identificador ni tipo de comprobante de venta
- Estos campos deben permanecer vacios para ese tipo de movimientos
- Nota: Todos los movimientos de ventas (oficiales Y de prueba) SI registran trazabilidad
Inmutabilidad de la relacion:
- Una vez creada, la relacion entre un movimiento de stock y su comprobante de venta no puede modificarse
- Solo puede eliminarse la relacion cuando se elimina el movimiento de stock completo
Obligatoriedad de marca de origen:
- Todos los movimientos de stock generados por ventas deben tener la marca de origen asignada
- Facturas oficiales y notas de credito oficiales: marca = 'O'
- Facturas de prueba y notas de credito de prueba: marca = 'P'
- Ver validaciones completas en Marca de Origen en Movimientos de Stock
Reglas de Negocio
RN-001: Registro automatico de relacion y marca al generar movimiento desde venta
Descripcion: Cuando el sistema genera un movimiento de stock a partir de cualquier comprobante de ventas (oficial o de prueba), debe registrar automaticamente la relacion con dicho comprobante utilizando su identificador global (UUID) y la marca de origen correspondiente.
Condicion: Se esta registrando un comprobante de ventas que contiene items de productos que afectan el inventario.
Accion:
- Por cada item del comprobante que genera movimiento de stock, el sistema debe registrar:
- El identificador global (UUID) del comprobante de ventas, obtenido del sistema de identificadores globales (bridge de ventas)
- El tipo de comprobante (factura, nota de credito, nota de debito)
- La marca de origen correspondiente:
- Comprobante oficial: marca = 'O'
- Comprobante de prueba: marca = 'P'
- Todos los datos deben registrarse atomicamente junto con el movimiento de stock
Aplica a:
- Facturas de venta oficiales (marca = 'O')
- Facturas de venta de prueba (marca = 'P')
- Notas de credito oficiales (marca = 'O')
- Notas de credito de prueba (marca = 'P')
Fundamento: Garantiza que todos los movimientos de stock generados por ventas (tanto oficiales como de prueba) queden relacionados con su comprobante de origen mediante un UUID global y correctamente marcados segun su caracter, permitiendo trazabilidad completa, reversiones precisas y segmentacion de datos.
RN-002: Unicidad de identificacion del comprobante origen
Descripcion: El identificador de venta (UUID global) es suficiente por si solo para identificar de manera univoca el comprobante de ventas origen en toda la empresa. El tipo de comprobante se registra como informacion complementaria para la logica de negocio.
Condicion: Al consultar o buscar el comprobante origen de un movimiento de stock.
Accion:
- El sistema utiliza el identificador global (UUID) para localizar el comprobante origen
- El UUID garantiza unicidad en toda la empresa, sin importar la sucursal de origen
- El tipo de comprobante proporciona contexto adicional para la logica de negocio
- No existe posibilidad de ambiguedad ya que el UUID es unico a nivel empresa
Fundamento: El uso de UUID global elimina el problema de identificadores numericos coincidentes entre sucursales. Mientras que antes era necesaria la combinacion de identificador + tipo + sucursal para evitar ambiguedades, ahora el UUID por si solo garantiza unicidad en toda la empresa.
RN-003: Identificacion y reversion de movimientos al eliminar comprobante
Descripcion: Al eliminar manualmente un comprobante de ventas, el sistema debe identificar todos los movimientos de stock relacionados mediante el identificador global (UUID) y revertirlos.
Condicion: Se esta ejecutando el proceso de baja de registracion manual de un comprobante de ventas.
Accion:
- El sistema busca todos los movimientos de stock donde el identificador de venta (UUID global) coincida con el del comprobante a eliminar
- Para cada movimiento encontrado:
- Revierte el efecto en el stock del producto (incrementa si era egreso, decrementa si era ingreso)
- Elimina el registro del movimiento de stock
- Si no se encuentran movimientos (comprobante que no afecto stock), el proceso continua normalmente
Fundamento: Garantiza que la eliminacion de un comprobante no deje movimientos de stock huerfanos y que el inventario refleje correctamente la reversion de la operacion. El uso del UUID global permite identificar los movimientos relacionados independientemente de la sucursal donde se ejecute el proceso de baja.
Referencia: Ver proceso completo en Baja de Comprobantes de Registracion Manual
RN-004: Movimientos no relacionados con ventas
Descripcion: Los movimientos de stock que no provienen de operaciones de ventas no deben tener datos de relacion con comprobantes de ventas.
Condicion: Se esta registrando un movimiento de stock por:
- Ajuste manual de inventario
- Compra de mercaderia
- Transferencia entre depositos
- Devolucion a proveedor
- Otros motivos no relacionados con ventas a clientes
Accion:
- El sistema no debe registrar identificador de venta ni tipo de comprobante de venta
- Estos campos deben permanecer sin valor
Fundamento: Permite distinguir claramente los movimientos originados por ventas de aquellos originados por otras operaciones, manteniendo la integridad semantica de los datos.
RN-005: Compatibilidad con datos historicos
Descripcion: Los movimientos de stock historicos que no tienen la relacion registrada deben seguir funcionando correctamente en el sistema.
Condicion: Existen movimientos de stock creados antes de la implementacion de esta funcionalidad.
Accion:
- El sistema debe manejar correctamente movimientos sin identificador de venta ni tipo de comprobante
- Las funcionalidades existentes no deben verse afectadas por la ausencia de estos datos
- Las nuevas funcionalidades de trazabilidad deben indicar "Relacion no disponible" o similar para estos movimientos
Fundamento: Garantiza compatibilidad hacia atras y permite una migracion gradual sin afectar la operacion del sistema.
RN-006: Integridad de datos por logica de negocio
Descripcion: La consistencia entre movimientos de stock y comprobantes de ventas debe mantenerse mediante logica de negocio, no mediante restricciones de base de datos.
Condicion: En cualquier operacion que involucre movimientos de stock relacionados con ventas.
Accion:
- Las validaciones de existencia del comprobante se realizan en el momento de la operacion
- No se impiden operaciones de mantenimiento o correccion de datos por restricciones rigidas
- Los procesos de negocio garantizan la consistencia de las relaciones
Fundamento: Permite flexibilidad para manejar situaciones especiales (migracion de datos, correccion de inconsistencias historicas) sin que las restricciones de base de datos bloqueen operaciones legitimas.
RN-007: Trazabilidad completa para todos los comprobantes de venta (oficiales y de prueba)
Descripcion: TODOS los movimientos de stock generados por comprobantes de ventas (oficiales y de prueba) deben registrar trazabilidad completa con el comprobante origen, incluyendo la marca de origen correspondiente.
Condicion: Se esta registrando cualquier comprobante de ventas (oficial o de prueba) que contiene items de productos que afectan el inventario.
Accion:
- El sistema genera los movimientos de stock normalmente para afectar el inventario
- El sistema registra el identificador de venta en el movimiento de stock
- El sistema registra el tipo de comprobante de ventas
- El sistema asigna la marca de origen correspondiente:
- Comprobantes oficiales: marca = 'O'
- Comprobantes de prueba: marca = 'P'
Aplica a:
| Tipo de comprobante | Registra id_ventas | Registra tipo_comprobante | Marca |
|---|---|---|---|
| Factura oficial | SI | SI | 'O' |
| Factura de prueba | SI | SI | 'P' |
| Nota de credito oficial | SI | SI | 'O' |
| Nota de credito de prueba | SI | SI | 'P' |
Fundamento: La trazabilidad completa para todos los comprobantes (incluyendo los de prueba) proporciona:
- Consistencia de datos: Todos los movimientos de ventas tienen la misma estructura de trazabilidad
- Reversiones precisas: Tanto comprobantes oficiales como de prueba pueden revertirse correctamente usando la trazabilidad
- Segmentacion por marca: La marca de origen permite distinguir movimientos oficiales de movimientos de prueba en consultas y reportes
- Auditoria completa: Se puede rastrear el origen de cualquier movimiento de stock generado por ventas
Implicaciones:
- Los movimientos de stock generados por comprobantes de prueba apareceran en consultas de trazabilidad (filtrables por marca = 'P')
- Al eliminar un comprobante de prueba, se ejecutara el proceso de reversion de stock usando la trazabilidad
- La marca de origen permite filtrar reportes para mostrar solo movimientos oficiales o solo de prueba segun sea necesario
- Ver documentacion relacionada: Marca de Origen en Movimientos de Stock
Casos de Uso
CU-001: Registrar movimiento de stock desde factura de venta oficial
Actor: Sistema (proceso automatico al facturar)
Objetivo: Generar movimientos de stock con trazabilidad completa y marca 'O' (Oficial) al registrar una factura de venta oficial
Precondiciones:
- Usuario esta registrando una factura de venta oficial
- La factura contiene items de productos que afectan inventario
- Los productos tienen stock habilitado
Flujo principal:
- El usuario confirma el registro de la factura de venta oficial
- El sistema valida y registra el comprobante de factura
- Por cada item de la factura que afecta stock:
- El sistema crea un movimiento de stock de tipo "Egreso"
- El sistema registra en el movimiento el identificador de la factura
- El sistema registra en el movimiento el tipo de comprobante "Factura"
- El sistema asigna la marca de origen 'O' (Oficial)
- El sistema actualiza el stock del producto (decrementa)
- El sistema confirma la operacion exitosa al usuario
Postcondiciones:
- La factura oficial queda registrada en el sistema
- Los movimientos de stock quedan registrados con la relacion al comprobante y marca 'O'
- El stock de los productos queda decrementado
- La relacion esta disponible para consultas inmediatas
- Los movimientos son identificables como oficiales mediante la marca
Flujos alternativos:
- Items sin afectacion de stock: Si algun item es un servicio o producto sin control de stock, no se genera movimiento de stock para ese item
- Error en creacion de movimiento: Si ocurre un error al crear algun movimiento de stock, se revierte toda la operacion incluyendo la factura
CU-002: Registrar movimiento de stock desde factura de venta de prueba
Actor: Sistema (proceso automatico al facturar)
Objetivo: Generar movimientos de stock con trazabilidad completa y marca 'P' (Prueba) al registrar una factura de venta de prueba
Precondiciones:
- Usuario esta registrando una factura de venta de prueba
- La factura contiene items de productos que afectan inventario
- Los productos tienen stock habilitado
Flujo principal:
- El usuario confirma el registro de la factura de venta de prueba
- El sistema valida y registra el comprobante de factura de prueba
- Por cada item de la factura que afecta stock:
- El sistema crea un movimiento de stock de tipo "Egreso"
- El sistema registra en el movimiento el identificador de la factura
- El sistema registra en el movimiento el tipo de comprobante "Factura"
- El sistema asigna la marca de origen 'P' (Prueba)
- El sistema actualiza el stock del producto (decrementa)
- El sistema confirma la operacion exitosa al usuario
Postcondiciones:
- La factura de prueba queda registrada en el sistema
- Los movimientos de stock quedan registrados con la relacion al comprobante y marca 'P'
- El stock de los productos queda decrementado
- La relacion esta disponible para consultas inmediatas
- Los movimientos son identificables como de prueba mediante la marca
Flujos alternativos:
- Items sin afectacion de stock: Si algun item es un servicio o producto sin control de stock, no se genera movimiento de stock para ese item
- Error en creacion de movimiento: Si ocurre un error al crear algun movimiento de stock, se revierte toda la operacion incluyendo la factura
CU-003: Revertir movimientos de stock al eliminar comprobante de venta
Actor: Sistema (proceso automatico durante baja de comprobante)
Objetivo: Identificar y revertir todos los movimientos de stock asociados a un comprobante de ventas que se esta eliminando
Precondiciones:
- Un usuario con permisos esta ejecutando el proceso de baja de registracion manual de un comprobante de ventas
- El comprobante cumplio todas las validaciones para poder ser dado de baja
- El proceso de baja esta en ejecucion
Flujo principal:
- El proceso de baja solicita la identificacion de movimientos de stock relacionados
- El sistema busca todos los movimientos de stock donde:
- El identificador de venta coincide con el comprobante a eliminar
- El tipo de comprobante coincide con el tipo del comprobante a eliminar
- El sistema encuentra N movimientos de stock relacionados
- Por cada movimiento encontrado:
- Si era tipo "Egreso": incrementa el stock del producto (devuelve los productos)
- Si era tipo "Ingreso": decrementa el stock del producto (revierte la devolucion)
- Elimina el registro del movimiento de stock
- El proceso de baja continua con las siguientes etapas (cuenta corriente, caja, items, comprobante)
Postcondiciones:
- Todos los movimientos de stock relacionados al comprobante han sido eliminados
- El stock de los productos afectados ha sido revertido correctamente
- No quedan movimientos de stock huerfanos relacionados al comprobante eliminado
Flujos alternativos:
- Comprobante sin movimientos de stock: Si el comprobante no tiene movimientos de stock asociados (items sin control de inventario), el proceso continua sin errores
- Error en reversion: Si ocurre un error al revertir algun movimiento, el sistema revierte toda la operacion de baja (rollback transaccional)
Referencia: Este caso de uso es parte del proceso documentado en Baja de Comprobantes de Registracion Manual
CU-005: Registrar movimiento de stock desde nota de credito de venta oficial
Actor: Sistema (proceso automatico al registrar nota de credito)
Objetivo: Generar movimientos de stock de ingreso (devolucion) con trazabilidad completa y marca 'O' (Oficial) al registrar una nota de credito oficial
Precondiciones:
- Usuario esta registrando una nota de credito de venta oficial
- La nota de credito contiene items de productos que afectan inventario
- Los productos tienen stock habilitado
Flujo principal:
- El usuario confirma el registro de la nota de credito oficial
- El sistema valida y registra el comprobante de nota de credito
- Por cada item de la nota de credito que afecta stock:
- El sistema crea un movimiento de stock de tipo "Ingreso" (devolucion de producto)
- El sistema registra en el movimiento el identificador de la nota de credito
- El sistema registra en el movimiento el tipo de comprobante "Nota de Credito"
- El sistema asigna la marca de origen 'O' (Oficial)
- El sistema actualiza el stock del producto (incrementa)
- El sistema confirma la operacion exitosa al usuario
Postcondiciones:
- La nota de credito oficial queda registrada en el sistema
- Los movimientos de stock de ingreso quedan registrados con la relacion al comprobante y marca 'O'
- El stock de los productos queda incrementado (productos devueltos)
- La relacion esta disponible para consultas inmediatas
- Los movimientos son identificables como oficiales mediante la marca
CU-006: Registrar movimiento de stock desde nota de credito de venta de prueba
Actor: Sistema (proceso automatico al registrar nota de credito)
Objetivo: Generar movimientos de stock de ingreso (devolucion) con trazabilidad completa y marca 'P' (Prueba) al registrar una nota de credito de prueba
Precondiciones:
- Usuario esta registrando una nota de credito de venta de prueba
- La nota de credito contiene items de productos que afectan inventario
- Los productos tienen stock habilitado
Flujo principal:
- El usuario confirma el registro de la nota de credito de prueba
- El sistema valida y registra el comprobante de nota de credito de prueba
- Por cada item de la nota de credito que afecta stock:
- El sistema crea un movimiento de stock de tipo "Ingreso" (devolucion de producto)
- El sistema registra en el movimiento el identificador de la nota de credito
- El sistema registra en el movimiento el tipo de comprobante "Nota de Credito"
- El sistema asigna la marca de origen 'P' (Prueba)
- El sistema actualiza el stock del producto (incrementa)
- El sistema confirma la operacion exitosa al usuario
Postcondiciones:
- La nota de credito de prueba queda registrada en el sistema
- Los movimientos de stock de ingreso quedan registrados con la relacion al comprobante y marca 'P'
- El stock de los productos queda incrementado (productos devueltos)
- La relacion esta disponible para consultas inmediatas
- Los movimientos son identificables como de prueba mediante la marca
Consideraciones
Seguridad
Control de acceso:
- La consulta de relaciones entre movimientos de stock y comprobantes de ventas requiere permisos de visualizacion en ambos modulos
- Solo usuarios con permiso de baja de comprobantes pueden ejecutar la reversion de movimientos de stock
- Los datos de relacion no deben ser modificables manualmente por usuarios
Integridad de datos:
- Las relaciones solo se crean y eliminan mediante procesos automaticos del sistema
- No existe funcionalidad para modificar manualmente la relacion entre un movimiento y su comprobante
Auditoria
Operaciones que se auditan:
- Creacion de movimientos de stock con relacion a comprobantes de ventas
- Eliminacion de movimientos de stock como parte del proceso de baja de comprobantes
- Reversiones de stock ejecutadas
Informacion preservada:
- Identificador del comprobante y tipo de comprobante en cada movimiento
- Datos completos en el log de auditoria cuando se eliminan movimientos
- Usuario y fecha/hora de las operaciones
Rendimiento
Volumenes esperados:
- Un movimiento de stock por cada item de producto en cada comprobante de ventas
- El numero de movimientos crece proporcionalmente con el volumen de ventas
Expectativas de tiempo de respuesta:
- La busqueda de movimientos por comprobante debe ser rapida (menos de 1 segundo)
- La creacion de relaciones no debe agregar latencia perceptible al registro de comprobantes
- La identificacion de movimientos durante el proceso de baja debe ser eficiente
Consideraciones de busqueda:
- Las consultas frecuentes por identificador de venta y tipo de comprobante deben ser optimizadas
- La busqueda inversa (desde comprobante hacia movimientos) es un caso de uso comun
Migracion de datos
Movimientos historicos:
- Los movimientos de stock existentes antes de la implementacion no tendran la relacion registrada
- El sistema debe manejar correctamente estos movimientos sin la relacion
- Se puede evaluar una migracion retroactiva basada en datos existentes si es necesario y factible
Compatibilidad:
- Las funcionalidades existentes del modulo de stock no deben verse afectadas
- La ausencia de datos de relacion no debe generar errores en el sistema
Dependencias
Funcionalidades relacionadas
Identificadores Globales para Comprobantes de Venta (Ver documento): Esta funcionalidad depende del sistema de identificadores globales (bridge de ventas) para obtener el UUID unico de cada comprobante de venta. El UUID global permite referenciar comprobantes de venta de cualquier sucursal sin ambiguedades, resolviendo el problema de superposicion de identificadores numericos locales entre sucursales. Los movimientos de stock almacenan este UUID para establecer la relacion con el comprobante de origen.
Marca de Origen en Movimientos de Stock (Ver documento): La marca de origen es un requisito complementario a la trazabilidad. Todos los movimientos de ventas deben registrar la marca correspondiente: 'O' para oficiales, 'P' para prueba. La marca permite filtrar y segmentar movimientos segun su caracter.
Registro de Comprobantes de Ventas: Esta funcionalidad se integra en el proceso de registro de facturas, notas de credito y notas de debito de ventas. La relacion (mediante UUID global) y la marca se crean automaticamente como parte del flujo de registro.
Baja de Registracion Manual de Comprobantes (Ver documento): El proceso de baja debe utilizar el UUID global para identificar y revertir los movimientos de stock asociados al comprobante eliminado. Esta funcionalidad es un prerequisito para la correcta eliminacion de comprobantes. Aplica tanto a comprobantes oficiales como de prueba.
Gestion de Stock: El modulo de stock recibe las modificaciones de esta funcionalidad para soportar la trazabilidad mediante UUID global y la marca de origen. Las consultas de movimientos se enriquecen con la informacion de comprobante origen y marca.
Auditoria del Sistema: Los registros de auditoria incluyen la informacion de la relacion entre movimientos y comprobantes (mediante UUID global), asi como la marca de origen para trazabilidad completa.
Modulos de negocio involucrados
| Modulo | Rol en esta funcionalidad |
|---|---|
| Ventas | Proporciona los comprobantes (facturas, NC, ND) que originan los movimientos de stock |
| Stock | Recibe la mejora para registrar y consultar la relacion con comprobantes de ventas |
| Auditoria | Registra las operaciones de creacion y eliminacion de movimientos con sus relaciones |
Impacto en otros procesos
| Proceso | Impacto |
|---|---|
| Registro de factura de venta oficial | Los movimientos de stock generados registraran la relacion con la factura y marca = 'O' |
| Registro de factura de venta de prueba | Los movimientos de stock generados registraran la relacion con la factura y marca = 'P' |
| Registro de nota de credito oficial | Los movimientos de stock de devolucion registraran la relacion con la NC y marca = 'O' |
| Registro de nota de credito de prueba | Los movimientos de stock de devolucion registraran la relacion con la NC y marca = 'P' |
| Baja de comprobantes manuales | Utilizara la relacion para identificar y revertir movimientos de stock (comprobantes oficiales y de prueba) |
| Consulta de movimientos de stock | Mostrara el comprobante origen y la marca de origen para todos los movimientos de ventas |
| Reportes de inventario | Podran filtrar o agrupar movimientos por comprobante de ventas y por marca de origen (oficial/prueba) |
Criterios de Aceptacion
La funcionalidad se considera completa cuando se cumplan los siguientes criterios:
Criterios de trazabilidad para comprobantes oficiales
[x] AC-001: Al registrar una factura de venta oficial con items que afectan stock, cada movimiento de stock generado registra el identificador de la factura, tipo de comprobante, y marca = 'O'
[x] AC-002: Al registrar una nota de credito de venta oficial con items que afectan stock, cada movimiento de stock generado registra el identificador de la NC, tipo de comprobante, y marca = 'O'
Criterios de trazabilidad para comprobantes de prueba
[ ] AC-002.1: Al registrar una factura de venta de prueba con items que afectan stock, cada movimiento de stock generado registra el identificador de la factura, tipo de comprobante, y marca = 'P'
[ ] AC-002.2: Al registrar una nota de credito de venta de prueba con items que afectan stock, cada movimiento de stock generado registra el identificador de la NC, tipo de comprobante, y marca = 'P'
Criterios de marca de origen
[ ] AC-016: Todos los movimientos de stock generados por comprobantes de ventas oficiales tienen marca = 'O'
[ ] AC-017: Todos los movimientos de stock generados por comprobantes de ventas de prueba tienen marca = 'P'
[ ] AC-018: La marca de origen no puede ser modificada una vez creado el movimiento de stock
[ ] AC-019: La marca de origen es obligatoria para todos los nuevos movimientos de stock generados por ventas
Criterios de identificacion y busqueda
[x] AC-003: La combinacion de identificador de venta + tipo de comprobante permite identificar univocamente el comprobante origen de un movimiento de stock
[x] AC-006: Al buscar movimientos de stock por identificador de venta y tipo de comprobante, el sistema retorna todos los movimientos relacionados (oficiales y de prueba)
[ ] AC-020: Al buscar movimientos de stock, se puede filtrar por marca de origen (solo oficiales 'O', solo prueba 'P', o todos)
Criterios de baja de comprobantes
[x] AC-007: Al ejecutar la baja de un comprobante de ventas (oficial o de prueba), el sistema identifica todos los movimientos de stock relacionados mediante la consulta por identificador de venta + tipo de comprobante
[x] AC-008: Al ejecutar la baja de un comprobante de ventas, el sistema revierte correctamente el stock de cada producto afectado (incrementa para facturas dadas de baja, decrementa para NC dadas de baja)
[x] AC-009: Al ejecutar la baja de un comprobante de ventas, se eliminan todos los movimientos de stock relacionados sin dejar registros huerfanos
Criterios de compatibilidad y rendimiento
[x] AC-010: Los movimientos de stock historicos (sin relacion registrada ni marca) siguen funcionando correctamente en todas las funcionalidades existentes
[x] AC-012: La auditoria registra correctamente la creacion de movimientos de stock con su relacion a comprobantes de ventas y marca de origen
[x] AC-013: La auditoria registra correctamente la eliminacion de movimientos de stock como parte del proceso de baja de comprobantes
[x] AC-014: El rendimiento de creacion de movimientos de stock no se ve afectado significativamente por el registro de la relacion y marca
[x] AC-015: El rendimiento de busqueda de movimientos por comprobante es aceptable (menos de 1 segundo en casos tipicos)
Notas adicionales
Cambio de identificador numerico local a UUID global (v1.5)
A partir de la version 1.5, el identificador de venta almacenado en los movimientos de stock es un UUID (identificador unico universal) en lugar de un identificador numerico local.
Razon del cambio: En un sistema multi-sucursal con esquemas separados, los identificadores numericos locales pueden repetirse entre sucursales. Por ejemplo, la factura con identificador 1000 en la Sucursal 1 es diferente de la factura con identificador 1000 en la Sucursal 2. El UUID global, proporcionado por el sistema de identificadores globales de comprobantes de venta (bridge de ventas), resuelve esta ambiguedad al garantizar unicidad en toda la empresa.
Beneficios del UUID global:
- Unicidad empresarial: El UUID identifica un comprobante de forma univoca en toda la empresa, sin importar la sucursal de origen
- Trazabilidad multi-sucursal: Los movimientos de stock pueden referenciar comprobantes de cualquier sucursal sin ambiguedades
- Simplificacion de busquedas: Ya no es necesario conocer la sucursal de origen para localizar un comprobante a partir de un movimiento de stock
- Preparacion para integraciones: El UUID es apto para ser expuesto a sistemas externos que requieran referenciar comprobantes
Compatibilidad con datos historicos:
- Los movimientos de stock creados antes de este cambio pueden tener un identificador numerico local en lugar de UUID
- El sistema maneja correctamente ambos tipos de identificadores
- Un proceso de migracion puede actualizar las referencias historicas para utilizar UUIDs
Ver Identificadores Globales para Comprobantes de Venta para documentacion completa del sistema de identificadores globales.
Bridge de Ventas Implementado (v1.6)
El sistema de identificadores globales para comprobantes de venta (bridge de ventas) ha sido implementado exitosamente con las siguientes caracteristicas:
Estado de implementacion:
- El bridge de ventas esta operativo y genera UUIDs automaticamente para cada comprobante de venta
- Los movimientos de stock pueden utilizar estos UUIDs para trazabilidad
- La funcionalidad de idempotencia garantiza que el mismo comprobante siempre retorna el mismo UUID
Caracteristicas de la implementacion:
- El UUID es generado automaticamente por PostgreSQL (no por la aplicacion)
- El tipo de comprobante se almacena como codigo numerico AFIP
- La sucursal se identifica por el nombre del schema de base de datos
- El sistema es idempotente: multiples solicitudes del UUID para el mismo comprobante devuelven el mismo valor
Integracion con movimientos de stock:
- Los servicios de facturacion y notas de credito pueden obtener el UUID global antes de generar movimientos de stock
- El UUID se almacena en el campo id_ventas del movimiento de stock
- La busqueda de movimientos por comprobante utiliza el UUID para localizar registros sin ambiguedades
Ver Identificadores Globales para Comprobantes de Venta para documentacion completa actualizada (v1.1 - Implementado).
Diferencia con otros tipos de movimientos de stock
Es importante distinguir los movimientos de stock generados por ventas de otros tipos de movimientos:
| Tipo de movimiento | Tiene relacion con ventas | Datos de relacion | Marca de origen |
|---|---|---|---|
| Venta oficial (factura) | Si | UUID global del comprobante + Tipo "Factura" | 'O' (Oficial) |
| Devolucion oficial (NC) | Si | UUID global del comprobante + Tipo "Nota de Credito" | 'O' (Oficial) |
| Venta de prueba (factura) | Si | UUID global del comprobante + Tipo "Factura" | 'P' (Prueba) |
| Devolucion de prueba (NC) | Si | UUID global del comprobante + Tipo "Nota de Credito" | 'P' (Prueba) |
| Compra | No | Sin datos de relacion a ventas | 'O' o 'P' segun corresponda |
| Ajuste manual | No | Sin datos de relacion a ventas | 'O' o 'P' segun corresponda |
| Transferencia entre depositos | No | Sin datos de relacion a ventas | 'O' o 'P' segun corresponda |
| Devolucion a proveedor | No | Sin datos de relacion a ventas | 'O' o 'P' segun corresponda |
Nota importante: Todos los movimientos de ventas (oficiales y de prueba) ahora registran trazabilidad completa mediante UUID global. La marca de origen permite distinguir entre movimientos oficiales y de prueba. Ver Marca de Origen en Movimientos de Stock para mas detalles sobre la marca en movimientos no relacionados con ventas.
Relacion con el proceso de baja de comprobantes
Esta funcionalidad es fundamental para el correcto funcionamiento del proceso de "Baja de registracion manual de comprobantes". El orden de eliminacion documentado en ese proceso indica que los movimientos de stock se eliminan en el primer paso:
| Orden | Modulo | Entidad | Dependencia de esta funcionalidad |
|---|---|---|---|
| 1 | Stock | Movimientos de Stock | Utiliza el UUID global del comprobante para buscar y eliminar movimientos relacionados |
| 2 | Tesoreria | Movimientos de Caja | No aplica |
| 3 | Cuenta Corriente | Movimiento CtaCte | No aplica |
| 4 | Ventas | Items del Comprobante | No aplica |
| 5 | Ventas | Comprobante | No aplica |
Consideraciones para migracion futura
Si se decide realizar una migracion de datos para establecer relaciones en movimientos historicos:
- Identificar movimientos de stock que correspondan a comprobantes de ventas existentes mediante los datos actuales (tipo_comprobante, nrocomprobante, fecha)
- Validar que la asociacion sea correcta antes de actualizar
- Marcar los registros migrados para distinguirlos de los creados con la nueva funcionalidad
- Ejecutar la migracion de forma gradual y reversible
Preguntas resueltas
- Se utiliza clave foranea para la relacion? No - la relacion se mantiene mediante logica de negocio para mayor flexibilidad
- Que pasa con movimientos historicos? Siguen funcionando correctamente, el sistema indica cuando la relacion no esta disponible. Los movimientos con identificador numerico local pueden migrarse a UUID global
- Como se identifica univocamente el comprobante? Mediante el identificador global (UUID) del comprobante de venta. El UUID es unico en toda la empresa y se obtiene del sistema de identificadores globales (bridge de ventas). El tipo de comprobante es informacion complementaria para logica de negocio
- Que tipos de comprobantes generan esta relacion? TODOS los comprobantes de ventas: Facturas de venta (oficiales y de prueba), Notas de credito de venta (oficiales y de prueba), Notas de debito de venta
- Los comprobantes de prueba registran trazabilidad? SI - A partir de la version 1.3, TODOS los comprobantes de ventas (oficiales y de prueba) registran trazabilidad completa con UUID global y marca de origen. Ver RN-007 actualizada
- Como se distinguen los movimientos oficiales de los de prueba? Mediante la marca de origen: 'O' para oficiales, 'P' para prueba. Esto permite filtrar reportes y consultas por tipo de operacion
- Que es la marca de origen y por que es obligatoria? La marca de origen es un campo que identifica el caracter de la operacion (oficial o prueba). Es obligatoria para todos los nuevos movimientos de stock para garantizar la correcta clasificacion y segmentacion de datos. Ver Marca de Origen en Movimientos de Stock
- Por que se cambio de identificador numerico a UUID? En un sistema multi-sucursal, los identificadores numericos locales pueden repetirse entre sucursales (por ejemplo, factura 1000 en Sucursal 1 y factura 1000 en Sucursal 2 son comprobantes diferentes). El UUID global, proporcionado por el bridge de ventas, garantiza unicidad en toda la empresa y elimina ambiguedades. Ver Identificadores Globales para Comprobantes de Venta
Historial de cambios
| Fecha | Version | Autor | Descripcion |
|---|---|---|---|
| 2025-12-24 | 1.6 | Sistema | Bridge de Ventas Implementado: El sistema de identificadores globales (bridge de ventas) ha sido implementado exitosamente. Nueva seccion "Bridge de Ventas Implementado (v1.6)" en Notas adicionales documentando el estado de implementacion, caracteristicas del sistema (UUID generado por PostgreSQL, tipo comprobante como codigo AFIP, schema como identificador de sucursal, idempotencia) e integracion con movimientos de stock. Actualizada referencia al documento bridge-ventas-resource.md (ahora v1.1 - Implementado). Los movimientos de stock pueden utilizar UUIDs globales para trazabilidad inequivoca de comprobantes de cualquier sucursal |
| 2025-12-24 | 1.5 | Sistema | CAMBIO MAYOR - Identificadores Globales: El identificador de venta ahora es un UUID global en lugar de un identificador numerico local. Este UUID se obtiene del sistema de identificadores globales de comprobantes de venta (bridge de ventas) y garantiza unicidad en toda la empresa, resolviendo el problema de superposicion de identificadores entre sucursales. Actualizadas secciones: Descripcion (necesidad del negocio), Datos nuevos, Datos necesarios, Relaciones de negocio, Validaciones de negocio (punto 2), RN-001, RN-002, RN-003. Agregada dependencia del bridge de ventas. Nueva seccion en Notas adicionales explicando el cambio. Actualizada tabla de tipos de movimiento. Agregada pregunta 8 sobre razon del cambio a UUID |
| 2025-12-24 | 1.4 | Sistema | IMPLEMENTADO: Marca de origen ahora se detecta AUTOMATICAMENTE segun la base de datos en uso. El sistema identifica automaticamente si se trata de una operacion oficial o de prueba. Los procesos de ventas (facturas y notas de credito) marcan automaticamente los movimientos de stock segun corresponda. Los movimientos genericos de stock y los pedidos siempre se marcan como oficiales. El sistema valida obligatoriamente que todos los nuevos movimientos tengan marca asignada. Tests verificados exitosamente. Estado: IMPLEMENTADO |
| 2025-12-23 | 1.3 | Sistema | CAMBIO MAYOR: Todos los movimientos de ventas (oficiales Y de prueba) ahora registran trazabilidad completa. Agregado campo 'marca' de origen obligatorio para todos los movimientos de ventas. RN-007 completamente reescrita: ya no excluye comprobantes de prueba, ahora define trazabilidad universal con marca. RN-001 actualizada para incluir asignacion de marca. Agregados CU-002 (factura prueba) y CU-006 (NC prueba). Actualizados criterios de aceptacion AC-002.1, AC-002.2 y agregados AC-016 a AC-020 para marca de origen. Actualizada tabla de impacto en procesos. Agregada referencia a documento de Marca de Origen. Estado cambiado a Planificado para nueva implementacion |
| 2025-12-23 | 1.2 | Sistema | Implementacion exitosa de la funcionalidad de trazabilidad. Agregados campos de identificador de venta y tipo de comprobante a la entidad Movimiento de Stock. Modificados los procesos de ventas para registrar trazabilidad solo en comprobantes oficiales (RN-007). Proceso de baja de comprobantes integrado con reversion automatica de stock. Tests unitarios implementados y pasando. Todos los criterios de aceptacion cumplidos. Estado cambiado a Implementado |
| 2025-12-23 | 1.1 | Sistema | Agregada RN-007: Exclusion de comprobantes de prueba de la trazabilidad. Actualizadas validaciones, criterios de aceptacion e impactos en procesos para reflejar que solo comprobantes oficiales registran trazabilidad |
| 2025-12-23 | 1.0 | Sistema | Creacion del documento de requerimientos de negocio |