Appearance
Baja de Comprobantes de Registracion Manual
Modulo: Ventas Tipo: Process Estado: Planificado Fecha: 2025-12-19
Descripcion
Problema que resuelve
En el proceso de registracion manual de ventas, actualmente no existe un mecanismo para dar de baja (eliminar) comprobantes que fueron registrados por error o que necesitan ser anulados. Cuando un usuario comete un error al registrar manualmente una factura, nota de credito o nota de debito, no tiene forma de revertir esa operacion desde el sistema.
Esta limitacion genera los siguientes problemas:
- Inconsistencia de datos: Los comprobantes erroneos permanecen en el sistema afectando reportes y estadisticas
- Afectacion de cuenta corriente: Los movimientos de cuenta corriente generados por el comprobante quedan registrados incorrectamente
- Impacto en tesoreria: Los movimientos de caja asociados al comprobante permanecen, alterando los saldos
- Desajuste de stock: Si el comprobante afecto el inventario, el stock queda desajustado
- Trabajo manual adicional: El usuario debe realizar ajustes manuales en multiples modulos para compensar el error
Solucion propuesta
Se implementa la funcionalidad de "Baja de Comprobantes" en el modulo de registracion manual de ventas. Esta funcionalidad permite eliminar completamente un comprobante registrado manualmente, junto con todos sus registros relacionados en los diferentes modulos del sistema (items, cuenta corriente, tesoreria, stock).
El sistema:
- Identifica todas las relaciones del comprobante con otros modulos
- Valida que el comprobante cumpla las condiciones para poder ser dado de baja
- Elimina de forma transaccional todos los registros relacionados
- Registra la operacion para auditoria
Valor de negocio
- Correccion de errores: Permite revertir errores de registracion sin afectar la integridad de los datos
- Integridad del sistema: Mantiene la coherencia entre los diferentes modulos (ventas, cuenta corriente, tesoreria, stock)
- Eficiencia operativa: Elimina la necesidad de ajustes manuales en multiples lugares
- Trazabilidad: Registra quien dio de baja el comprobante y cuando
- Control financiero: Protege movimientos ya cerrados en caja mediante validaciones
Contexto del sistema
Esta funcionalidad se integra en el proceso existente de registracion manual de ventas y afecta a:
- Comprobantes de Ventas: Facturas, Notas de Credito, Notas de Debito registrados manualmente
- Items del Comprobante: Lineas de detalle del comprobante
- Cuenta Corriente (Clientes): Movimientos generados por condicion de venta "Cuenta Corriente"
- Tesoreria: Movimientos de caja generados por condicion de venta "Contado" o "Tarjeta"
- Stock: Movimientos de inventario generados por los items del comprobante
Proceso de Negocio
Flujo de baja de comprobante
+---------------------------------------------------------------------------------+
| FLUJO DE BAJA DE COMPROBANTE DE REGISTRACION MANUAL |
+---------------------------------------------------------------------------------+
| |
| 1. USUARIO SOLICITA BAJA DE COMPROBANTE |
| +-- Usuario accede al modulo de registracion manual de ventas |
| +-- Usuario selecciona el comprobante a dar de baja |
| +-- Usuario confirma la accion de baja |
| | |
| v |
| 2. SISTEMA IDENTIFICA RELACIONES DEL COMPROBANTE |
| +-- Identifica tipo de comprobante (Factura, NC, ND) |
| +-- Verifica si tiene items asociados |
| +-- Verifica si genero movimiento de cuenta corriente |
| +-- Verifica si genero movimiento de caja (tesoreria) |
| +-- Verifica si genero movimientos de stock |
| | |
| v |
| 3. SISTEMA EJECUTA VALIDACIONES DE RESTRICCION |
| +-- Valida estado de caja en tesoreria (si aplica) |
| +-- Valida estado de pago en cuenta corriente (si aplica - solo facturas) |
| +-- Valida saldo vs debe en cuenta corriente (si aplica) |
| | |
| v |
| 4. DECISION: PASA TODAS LAS VALIDACIONES? |
| | |
| +-- NO: Mostrar mensaje de error con la restriccion que impide la baja |
| | |
| +-- SI: Continuar al paso 5 |
| | |
| v |
| 5. SISTEMA ELIMINA REGISTROS RELACIONADOS |
| +-- Elimina movimientos de stock (si existen) |
| +-- Revierte el stock de cada producto afectado |
| +-- Elimina movimiento de caja (si existe) |
| +-- Elimina movimiento de cuenta corriente (si existe) |
| +-- Elimina items del comprobante |
| +-- Elimina el comprobante principal |
| | |
| v |
| 6. SISTEMA REGISTRA AUDITORIA |
| +-- Registra la operacion de baja |
| +-- Registra el usuario que realizo la baja |
| +-- Registra la fecha y hora |
| +-- Registra los detalles del comprobante eliminado |
| | |
| v |
| 7. SISTEMA CONFIRMA LA OPERACION |
| +-- Muestra mensaje de exito al usuario |
| +-- Actualiza la vista del listado de comprobantes |
| |
+---------------------------------------------------------------------------------+Orden de eliminacion de registros
La eliminacion de registros debe seguir un orden especifico para mantener la integridad referencial:
| Orden | Modulo | Entidad | Descripcion |
|---|---|---|---|
| 1 | Stock | Movimientos de Stock | Eliminar y revertir stock de productos |
| 2 | Tesoreria | Movimientos de Caja | Eliminar movimiento de entrada/salida de caja |
| 3 | Cuenta Corriente | Movimiento CtaCte | Eliminar registro de deuda/pago del cliente |
| 4 | Ventas | Items del Comprobante | Eliminar lineas de detalle del comprobante |
| 5 | Ventas | Comprobante | Eliminar el comprobante principal |
Condiciones previas para la baja
Para que un comprobante pueda ser dado de baja, deben cumplirse las siguientes condiciones:
- El comprobante debe existir: Debe ser un comprobante registrado manualmente en el sistema
- El comprobante debe ser de tipo valido: Factura, Nota de Credito o Nota de Debito
- El comprobante no debe estar bloqueado: No debe cumplir ninguna de las restricciones de baja
Frontend
Vistas
Vista principal afectada:
- Listado de Comprobantes de Registracion Manual: Se agrega la opcion de dar de baja a cada comprobante listado
Elementos de la vista:
//TODO: Modal de búsqueda similar a la reimpresión de comprobantes de ventas
- Boton o icono de "Dar de baja" en cada fila del listado de comprobantes
- Dialogo de confirmacion antes de ejecutar la baja
- Dialogo de detalle mostrando las relaciones que seran eliminadas
- Mensajes de error cuando no se puede dar de baja
Interacciones del usuario
| Accion | Descripcion | Resultado esperado |
|---|---|---|
| Clic en "Dar de baja" | Usuario selecciona la opcion de baja en un comprobante | Sistema muestra dialogo de confirmacion con detalle de relaciones |
| Confirmar baja | Usuario confirma la accion en el dialogo | Sistema ejecuta el proceso de baja y muestra resultado |
| Cancelar baja | Usuario cancela la accion en el dialogo | Sistema cierra el dialogo sin realizar cambios |
| Ver detalles de restriccion | Usuario intenta dar de baja un comprobante restringido | Sistema muestra mensaje explicando la restriccion |
Permisos
| Permiso | Descripcion | Acciones permitidas |
|---|---|---|
{POR_DETERMINAR} | Permiso para dar de baja comprobantes de registracion manual | Eliminar comprobantes y sus relaciones |
Nota: El permiso de baja debe ser asignado de forma independiente al permiso de creacion, permitiendo un control granular sobre quien puede eliminar comprobantes.
Estados de UI
| Estado | Descripcion | Elementos visuales |
|---|---|---|
| Cargando relaciones | Sistema identificando relaciones del comprobante | Indicador de carga, boton de confirmacion deshabilitado |
| Validando restricciones | Sistema verificando si el comprobante puede darse de baja | Indicador de carga con mensaje "Validando..." |
| Confirmacion pendiente | Dialogo mostrando resumen de lo que se eliminara | Lista de relaciones, botones Confirmar/Cancelar |
| Error de restriccion | Comprobante no puede darse de baja | Mensaje de error con explicacion de la restriccion |
| Procesando baja | Sistema ejecutando la eliminacion | Indicador de carga, botones deshabilitados |
| Baja exitosa | Comprobante eliminado correctamente | Mensaje de exito, listado actualizado |
| Error de sistema | Error durante la eliminacion | Mensaje de error, opcion de reintentar |
| Sin comprobantes | Listado vacio de comprobantes | Estado vacio con mensaje informativo |
Backend
Entidades de negocio involucradas
Comprobante de Venta
Entidad principal que representa la factura, nota de credito o nota de debito.
| Dato relevante | Descripcion |
|---|---|
| Identificador | Identificador unico del comprobante |
| Tipo de comprobante | Codigo que indica si es Factura, NC o ND |
| Numero de comprobante | Numero correlativo del comprobante |
| Cliente | Cliente asociado al comprobante |
| Fecha | Fecha de emision del comprobante |
| Total | Importe total del comprobante |
| Condicion de venta | Contado, Cuenta Corriente o Tarjeta |
Items del Comprobante
Lineas de detalle del comprobante con los productos/servicios facturados.
| Dato relevante | Descripcion |
|---|---|
| Identificador del comprobante | Relacion con el comprobante padre |
| Producto | Producto o servicio facturado |
| Cantidad | Cantidad del item |
| Precio | Precio unitario |
| Importe | Importe total de la linea |
Movimiento de Cuenta Corriente
Registro del movimiento de deuda/credito generado en la cuenta del cliente.
| Dato relevante | Descripcion |
|---|---|
| Cliente | Cliente de la cuenta corriente |
| Tipo de comprobante | Codigo del tipo de comprobante que origino el movimiento |
| Numero de comprobante | Numero del comprobante que origino el movimiento |
| Debe | Monto deudor (facturas) |
| Haber | Monto acreedor (notas de credito, pagos) |
| Saldo | Saldo pendiente del movimiento |
| Fecha de pago | Fecha en que se pago el comprobante (si aplica) |
Movimiento de Caja (Tesoreria)
Registro del movimiento de entrada o salida de caja.
| Dato relevante | Descripcion |
|---|---|
| Identificador de caja | Caja a la que pertenece el movimiento |
| Tipo de movimiento | Entrada o Salida |
| Importe | Monto del movimiento |
| Comprobante asociado | Identificador del comprobante que origino el movimiento |
| Tipo de comprobante | Codigo del tipo de comprobante |
Caja (Estado de la Caja de Tesoreria)
Estado de la caja de tesoreria (abierta o cerrada).
| Dato relevante | Descripcion |
|---|---|
| Identificador | Identificador unico de la caja |
| Fecha de apertura | Fecha en que se abrio la caja |
| Fecha de cierre | Fecha en que se cerro la caja (nulo si esta abierta) |
| Saldo | Saldo de la caja al momento del cierre |
Movimiento de Stock
Registro de entrada o salida de inventario por producto.
| Dato relevante | Descripcion |
|---|---|
| Producto | Producto afectado |
| Cantidad | Cantidad del movimiento |
| Posicion | Ingreso o Egreso |
| Comprobante | Codigo del comprobante que origino el movimiento |
| Numero de comprobante | Numero del comprobante |
Datos necesarios para el proceso
Para ejecutar la baja de un comprobante, el sistema necesita:
| Dato | Origen | Uso |
|---|---|---|
| Identificador del comprobante | Seleccion del usuario | Identificar el comprobante a eliminar |
| Tipo de comprobante | Comprobante | Determinar validaciones especificas |
| Condicion de venta | Comprobante | Determinar si afecto cuenta corriente o caja |
| Items del comprobante | Relacion con comprobante | Revertir movimientos de stock |
| Movimiento de cuenta corriente | Relacion por tipo y numero de comprobante | Validar restricciones y eliminar |
| Movimiento de caja | Relacion por comprobante | Validar restricciones y eliminar |
| Estado de la caja | Movimiento de caja | Validar si la caja esta cerrada |
| Movimientos de stock | Relacion por comprobante | Eliminar y revertir stock |
Relaciones de negocio
COMPROBANTE (Factura/NC/ND)
|
+--- [1:N] --- ITEMS DEL COMPROBANTE
| |
| +--- [1:1] --- MOVIMIENTO DE STOCK (por cada item que maneja stock)
|
+--- [1:0..1] --- MOVIMIENTO CUENTA CORRIENTE (si condicion = CTA.CTE)
|
+--- [1:0..1] --- MOVIMIENTO DE CAJA (si condicion = CONTADO o TARJETA)
|
+--- [N:1] --- CAJA (contiene estado abierta/cerrada)Descripcion de relaciones:
- Un Comprobante tiene uno o varios Items
- Cada Item puede generar un Movimiento de Stock (si el producto maneja stock)
- Un Comprobante puede generar un Movimiento de Cuenta Corriente (si la condicion de venta es "Cuenta Corriente")
- Un Comprobante puede generar un Movimiento de Caja (si la condicion de venta es "Contado" o "Tarjeta")
- Cada Movimiento de Caja pertenece a una Caja que puede estar abierta o cerrada
Validaciones de negocio
| Validacion | Condicion | Comportamiento si no cumple |
|---|---|---|
| Existencia del comprobante | El comprobante debe existir en el sistema | Error: "El comprobante no existe" |
| Tipo de comprobante valido | Debe ser Factura, Nota de Credito o Nota de Debito | Error: "Tipo de comprobante no valido para baja" |
| Caja no cerrada | Si tiene movimiento de caja, la caja debe estar abierta | Error: "No se puede dar de baja porque el movimiento pertenece a una caja cerrada" |
| Sin fecha de pago (solo facturas) | Si tiene movimiento de cuenta corriente y es factura, no debe tener fecha de pago | Error: "No se puede dar de baja porque la factura ya tiene fecha de pago registrada" |
| Saldo igual a debe (solo cuenta corriente) | Si tiene movimiento de cuenta corriente, el saldo debe ser igual al debe | Error: "No se puede dar de baja porque el saldo del movimiento ha sido modificado" |
Reglas de Negocio
RN-001: Alcance de comprobantes afectados
Descripcion: La funcionalidad de baja aplica unicamente a comprobantes de Facturas, Notas de Credito y Notas de Debito registrados de forma manual.
Condicion: Usuario solicita dar de baja un comprobante.
Accion:
- Si el comprobante es Factura, Nota de Credito o Nota de Debito: se permite continuar con el proceso
- Si el comprobante es de otro tipo: se rechaza la operacion
Fundamento: Los comprobantes de registracion manual son aquellos que no fueron emitidos desde el sistema hacia ARCA, por lo que pueden requerir correccion.
RN-002: Restriccion por caja cerrada
Descripcion: No se puede dar de baja un comprobante cuyo movimiento de caja pertenece a una caja que ya fue cerrada.
Condicion: El comprobante genero un movimiento de caja (condicion de venta Contado o Tarjeta).
Accion:
- Si la caja asociada al movimiento tiene fecha de cierre registrada: se rechaza la operacion
- Si la caja esta abierta (fecha de cierre nula): se permite continuar
Mensaje de error: "No se puede dar de baja el comprobante porque el movimiento de caja pertenece a una caja que ya fue cerrada. Caja Nro: [numero], cerrada el [fecha]"
Fundamento: Una caja cerrada representa un corte contable. Permitir eliminar movimientos de una caja cerrada desbalancearia los saldos ya consolidados y los asientos contables generados al cierre.
RN-003: Restriccion por fecha de pago (solo facturas)
Descripcion: No se puede dar de baja una factura cuyo movimiento de cuenta corriente tiene fecha de pago registrada.
Condicion: El comprobante es una Factura y genero un movimiento de cuenta corriente (condicion de venta Cuenta Corriente).
Accion:
- Si el movimiento de cuenta corriente tiene fecha de pago: se rechaza la operacion
- Si no tiene fecha de pago: se permite continuar
- Si el comprobante es Nota de Credito o Nota de Debito: esta regla NO aplica
Mensaje de error: "No se puede dar de baja la factura porque ya tiene fecha de pago registrada en cuenta corriente. Fecha de pago: [fecha]"
Fundamento: Una fecha de pago indica que el cliente ya abono el comprobante, posiblemente a traves de un recibo. Eliminar la factura dejaria el recibo sin comprobante asociado.
RN-004: Restriccion por saldo modificado en cuenta corriente
Descripcion: No se puede dar de baja un comprobante cuyo movimiento de cuenta corriente tiene un saldo diferente al valor original del debe.
Condicion: El comprobante genero un movimiento de cuenta corriente.
Accion:
- Si el saldo es diferente al debe (saldo != debe): se rechaza la operacion
- Si el saldo es igual al debe: se permite continuar
Mensaje de error: "No se puede dar de baja el comprobante porque el saldo en cuenta corriente ha sido modificado. Saldo actual: [saldo], Importe original: [debe]"
Fundamento: Un saldo diferente al debe indica que hubo pagos parciales, aplicacion de notas de credito u otras operaciones que modificaron el saldo. Eliminar el comprobante dejaria esas operaciones huerfanas.
RN-005: Eliminacion completa y transaccional
Descripcion: La baja de un comprobante debe eliminar todos los registros relacionados de forma atomica. Si alguna eliminacion falla, ninguna debe aplicarse.
Condicion: Usuario confirma la baja de un comprobante.
Accion:
- Iniciar transaccion
- Eliminar movimientos de stock y revertir cantidades de productos
- Eliminar movimiento de caja (si existe)
- Eliminar movimiento de cuenta corriente (si existe)
- Eliminar items del comprobante
- Eliminar comprobante principal
- Si todas las eliminaciones son exitosas: confirmar transaccion
- Si alguna eliminacion falla: revertir todas las operaciones
Fundamento: Garantiza la integridad de los datos. No puede quedar un estado intermedio donde se elimino parcialmente.
RN-006: Reversion de stock
Descripcion: Al eliminar un comprobante, se debe revertir el efecto en el stock de cada producto afectado.
Condicion: El comprobante tiene items con productos que manejan stock.
Accion:
- Para facturas (que generaron egreso): incrementar el stock de cada producto
- Para notas de credito (que generaron ingreso por devolucion): decrementar el stock de cada producto
- Para notas de debito: depende del tipo de operacion original
Fundamento: El stock debe reflejar la realidad del inventario. Si se elimina una factura, los productos "vuelven" al stock.
RN-007: Comprobantes relacionados (NC/ND con factura)
Descripcion: Si una Nota de Credito o Nota de Debito esta relacionada con una factura y modifico su saldo, no se puede dar de baja la factura hasta que se elimine primero la NC/ND.
Condicion: La factura a dar de baja tiene su saldo modificado por una NC o ND.
Accion:
- Verificar si el saldo de la factura fue modificado (regla RN-004)
- Si fue modificado: indicar que debe darse de baja primero la NC/ND que lo afecto
Fundamento: Mantiene la consistencia de las relaciones entre comprobantes.
RN-008: Registro obligatorio de auditoria
Descripcion: Toda operacion de baja de comprobante debe quedar registrada en el log de auditoria con informacion completa.
Condicion: Se ejecuta exitosamente una baja de comprobante.
Accion:
- Registrar operacion: "DELETE"
- Registrar modulo: segun tipo de comprobante (FACTURA, NOTA_DE_CREDITO, NOTA_DE_DEBITO)
- Registrar identificador del registro eliminado
- Registrar usuario que realizo la operacion
- Registrar fecha y hora
Fundamento: Permite rastrear quien elimino que comprobante y cuando, fundamental para auditorias y resolucion de problemas.
Casos de Uso
CU-001: Baja exitosa de factura con todos los modulos afectados
Actor: Usuario de Ventas / Administrador
Objetivo: Dar de baja una factura registrada manualmente que afecto cuenta corriente y stock
Precondiciones:
- Usuario autenticado con permiso de baja de comprobantes
- Factura registrada manualmente existente
- La factura fue registrada con condicion de venta "Cuenta Corriente"
- La factura tiene items de productos que manejan stock
- El movimiento de cuenta corriente NO tiene fecha de pago
- El saldo del movimiento es igual al debe (no hubo pagos parciales)
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario localiza la factura a dar de baja en el listado
- El usuario selecciona la opcion "Dar de baja"
- El sistema muestra dialogo de confirmacion indicando:
- "Se eliminara la factura Nro: 00001-00000123"
- "Se eliminaran 5 items del comprobante"
- "Se eliminara el movimiento de cuenta corriente del cliente"
- "Se revertiran 5 movimientos de stock"
- El usuario confirma la operacion
- El sistema ejecuta las validaciones (todas pasan)
- El sistema elimina en orden: stock, cuenta corriente, items, comprobante
- El sistema muestra mensaje: "Comprobante dado de baja exitosamente"
- El listado se actualiza sin mostrar la factura eliminada
Postcondiciones:
- La factura ya no existe en el sistema
- Los items de la factura fueron eliminados
- El movimiento de cuenta corriente fue eliminado
- Los movimientos de stock fueron eliminados y el stock de productos revertido
- La operacion quedo registrada en auditoria
CU-002: Intento de baja bloqueado por caja cerrada
Actor: Usuario de Ventas / Administrador
Objetivo: Dar de baja una factura cuyo movimiento de caja pertenece a una caja cerrada
Precondiciones:
- Usuario autenticado con permiso de baja de comprobantes
- Factura registrada manualmente existente
- La factura fue registrada con condicion de venta "Contado"
- El movimiento de caja pertenece a una caja que fue cerrada
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario localiza la factura a dar de baja en el listado
- El usuario selecciona la opcion "Dar de baja"
- El sistema ejecuta las validaciones
- El sistema detecta que el movimiento de caja pertenece a Caja Nro: 15, cerrada el 2025-12-18
- El sistema muestra mensaje de error: "No se puede dar de baja el comprobante porque el movimiento de caja pertenece a una caja que ya fue cerrada. Caja Nro: 15, cerrada el 2025-12-18"
- El dialogo muestra solo el boton "Aceptar"
- El usuario cierra el dialogo
Postcondiciones:
- La factura permanece sin cambios
- Todos los registros relacionados permanecen sin cambios
- No se registra operacion de auditoria
Flujo alternativo - Solucion:
- El usuario debe contactar al administrador para evaluar si es posible reabrir la caja (si el sistema lo permite) o realizar un ajuste contable
CU-003: Intento de baja bloqueado por fecha de pago
Actor: Usuario de Ventas / Administrador
Objetivo: Dar de baja una factura que ya tiene fecha de pago en cuenta corriente
Precondiciones:
- Usuario autenticado con permiso de baja de comprobantes
- Factura registrada manualmente existente
- La factura fue registrada con condicion de venta "Cuenta Corriente"
- El movimiento de cuenta corriente tiene fecha de pago registrada
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario localiza la factura a dar de baja en el listado
- El usuario selecciona la opcion "Dar de baja"
- El sistema ejecuta las validaciones
- El sistema detecta que el movimiento de cuenta corriente tiene fecha de pago: 2025-12-15
- El sistema muestra mensaje de error: "No se puede dar de baja la factura porque ya tiene fecha de pago registrada en cuenta corriente. Fecha de pago: 2025-12-15"
- El dialogo muestra solo el boton "Aceptar"
- El usuario cierra el dialogo
Postcondiciones:
- La factura permanece sin cambios
- Todos los registros relacionados permanecen sin cambios
- No se registra operacion de auditoria
Flujo alternativo - Solucion:
- El usuario debe primero anular o eliminar el recibo que cancelo la factura, lo cual eliminara la fecha de pago, y luego podra dar de baja la factura
CU-004: Intento de baja bloqueado por saldo modificado
Actor: Usuario de Ventas / Administrador
Objetivo: Dar de baja una factura cuyo saldo en cuenta corriente fue modificado por pagos parciales
Precondiciones:
- Usuario autenticado con permiso de baja de comprobantes
- Factura registrada manualmente existente con total $10.000
- La factura fue registrada con condicion de venta "Cuenta Corriente"
- El saldo actual del movimiento es $6.000 (se aplicaron $4.000 en pagos parciales)
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario localiza la factura a dar de baja en el listado
- El usuario selecciona la opcion "Dar de baja"
- El sistema ejecuta las validaciones
- El sistema detecta que saldo ($6.000) != debe ($10.000)
- El sistema muestra mensaje de error: "No se puede dar de baja el comprobante porque el saldo en cuenta corriente ha sido modificado. Saldo actual: $6.000,00, Importe original: $10.000,00"
- El dialogo muestra solo el boton "Aceptar"
- El usuario cierra el dialogo
Postcondiciones:
- La factura permanece sin cambios
- Todos los registros relacionados permanecen sin cambios
- No se registra operacion de auditoria
Flujo alternativo - Solucion:
- El usuario debe primero anular los recibos o notas de credito que modificaron el saldo, dejando el saldo igual al debe original, y luego podra dar de baja la factura
CU-005: Baja de Nota de Credito con reversion de stock
Actor: Usuario de Ventas / Administrador
Objetivo: Dar de baja una nota de credito que genero devolucion de productos al stock
Precondiciones:
- Usuario autenticado con permiso de baja de comprobantes
- Nota de credito registrada manualmente existente
- La NC tiene items de productos que manejan stock
- La NC esta asociada a una factura
- No hay restricciones que impidan la baja
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario localiza la nota de credito a dar de baja en el listado
- El usuario selecciona la opcion "Dar de baja"
- El sistema muestra dialogo de confirmacion indicando:
- "Se eliminara la Nota de Credito Nro: 00001-00000045"
- "Se eliminaran 2 items del comprobante"
- "Se eliminara el movimiento de cuenta corriente del cliente"
- "Se revertiran 2 movimientos de stock (se decrementara el stock)"
- El usuario confirma la operacion
- El sistema ejecuta las validaciones (todas pasan)
- El sistema elimina movimientos de stock y DECREMENTA el stock de productos (revierte el ingreso por devolucion)
- El sistema elimina cuenta corriente, items y comprobante
- El sistema muestra mensaje: "Comprobante dado de baja exitosamente"
Postcondiciones:
- La nota de credito ya no existe en el sistema
- El stock de los productos fue decrementado (revertido el ingreso)
- Si la NC habia modificado el saldo de una factura relacionada, ese saldo vuelve a su valor anterior
Flujo del Proceso
Diagrama de decision de validaciones
INICIO
|
v
+------------------------+
| Obtener comprobante |
+------------------------+
|
v
+------------------------+
| Identificar relaciones |
| - Items |
| - Cuenta corriente |
| - Movimiento caja |
| - Movimientos stock |
+------------------------+
|
v
+------------------------+
| Tiene movimiento |
| de caja? |
+------------------------+
| |
SI NO
| |
v |
+------------------------+
| La caja esta cerrada? |
+------------------------+
| |
SI NO
| |
v |
+------------------------+
| ERROR: Caja cerrada |------> FIN
+------------------------+
|
v
+------------------------+
| Tiene movimiento |
| cuenta corriente? |
+------------------------+
| |
SI NO
| |
v |
+------------------------+
| Es una Factura? |
+------------------------+
| |
SI NO
| |
v |
+------------------------+
| Tiene fecha de pago? |
+------------------------+
| |
SI NO
| |
v |
+------------------------+
| ERROR: Tiene fecha |
| de pago |------> FIN
+------------------------+
|
v
+------------------------+
| Saldo = Debe? |
+------------------------+
| |
NO SI
| |
v |
+------------------------+
| ERROR: Saldo |
| modificado |------> FIN
+------------------------+
|
v
+------------------------+
| TODAS LAS VALIDACIONES |
| PASARON |
+------------------------+
|
v
+------------------------+
| Ejecutar eliminacion |
| transaccional |
+------------------------+
|
v
+------------------------+
| Registrar auditoria |
+------------------------+
|
v
FINSecuencia de eliminacion detallada
| Paso | Accion | Modulo | Detalle |
|---|---|---|---|
| 1 | Iniciar transaccion | Sistema | Abre transaccion en todas las conexiones necesarias |
| 2 | Obtener movimientos de stock | Stock | Consulta movimientos por codigo de comprobante y numero |
| 3 | Revertir stock por producto | Stock | Por cada movimiento, actualiza el stock del producto en sentido inverso |
| 4 | Eliminar movimientos de stock | Stock | Elimina los registros de movimiento |
| 5 | Obtener movimiento de caja | Tesoreria | Consulta por id_comprobante y id_tipo_comprobante |
| 6 | Eliminar movimiento de caja | Tesoreria | Elimina el registro del movimiento |
| 7 | Obtener movimiento cuenta corriente | CtaCte | Consulta por numero y tipo de comprobante |
| 8 | Eliminar movimiento cuenta corriente | CtaCte | Elimina el registro del movimiento |
| 9 | Eliminar items del comprobante | Ventas | Elimina registros de items relacionados al comprobante |
| 10 | Eliminar comprobante | Ventas | Elimina el registro principal del comprobante |
| 11 | Registrar auditoria | Sistema | Registra la operacion DELETE con todos los detalles |
| 12 | Confirmar transaccion | Sistema | Commit de todas las operaciones |
Consideraciones
Seguridad
Control de acceso:
- La funcionalidad requiere un permiso especifico de baja separado del permiso de creacion
- Solo usuarios autorizados deben poder eliminar comprobantes
- El permiso debe ser asignado de forma restrictiva
Datos sensibles:
- Los datos del comprobante eliminado quedan registrados en auditoria
- No se permite recuperar un comprobante eliminado (eliminacion definitiva)
- Los importes y datos fiscales del comprobante quedan en el log de auditoria
Integridad:
- La transaccionalidad garantiza que no queden estados intermedios
- Las validaciones previenen eliminaciones que dejarian inconsistencias
Auditoria
Operaciones a registrar:
| Operacion | Informacion capturada |
|---|---|
| DELETE de comprobante | Tipo, numero, cliente, fecha, total, usuario, timestamp |
| DELETE de items | Cantidad de items eliminados, comprobante padre |
| DELETE de cuenta corriente | Cliente, importe, tipo comprobante |
| DELETE de movimiento caja | Caja, importe, tipo |
| DELETE de movimientos stock | Producto, cantidad, tipo movimiento |
Informacion adicional en auditoria:
- IP del usuario que realizo la operacion
- Detalle de los montos afectados
Rendimiento
Consideraciones de volumen:
- La baja de un comprobante implica multiples operaciones de eliminacion
- Cada item puede requerir actualizacion de stock
- El proceso debe ejecutarse de forma eficiente incluso con comprobantes con muchos items
Tiempos esperados:
- Comprobante con hasta 10 items: menos de 2 segundos
- Comprobante con hasta 50 items: menos de 5 segundos
- Comprobante con hasta 100 items: menos de 10 segundos
Optimizaciones recomendadas:
- Eliminar items en lote en lugar de uno por uno
- Actualizar stock en una sola operacion por producto (sumando cantidades)
- Usar transacciones optimizadas
Dependencias
Funcionalidades relacionadas
- Registracion Manual de Ventas: Funcionalidad existente donde se agregan comprobantes, a la cual se agrega la opcion de baja
- Gestion de Cuenta Corriente Clientes: Modulo que gestiona los movimientos de cuenta corriente
- Tesoreria - Movimientos de Caja: Modulo que gestiona los movimientos de caja
- Stock - Movimientos de Inventario: Modulo que gestiona los movimientos de stock
- Cierre de Caja: Proceso que cierra la caja y genera asientos contables
Entidades del sistema
- Comprobantes de Venta (Factura, NC, ND): Entidades principales a eliminar
- Items de Comprobante: Detalles del comprobante
- Movimientos de Cuenta Corriente: Registros de deuda/credito
- Movimientos de Caja: Registros de entrada/salida de efectivo
- Caja: Estado de la caja de tesoreria
- Movimientos de Stock: Registros de inventario
- Productos: Maestro de productos (para actualizar stock)
Modulos externos
- Sistema de Auditoria: Para registrar las operaciones de baja
- Sistema de Permisos: Para validar autorizacion del usuario
Criterios de Aceptacion
La funcionalidad se considera completa cuando:
- [ ] AC-001: El usuario puede ver la opcion "Dar de baja" en el listado de comprobantes de registracion manual
- [ ] AC-002: Al seleccionar "Dar de baja", el sistema muestra un dialogo de confirmacion con el detalle de todas las relaciones que seran eliminadas
- [ ] AC-003: El sistema valida correctamente la restriccion de caja cerrada y muestra mensaje de error apropiado cuando aplica
- [ ] AC-004: El sistema valida correctamente la restriccion de fecha de pago en facturas y muestra mensaje de error apropiado cuando aplica
- [ ] AC-005: El sistema valida correctamente la restriccion de saldo diferente al debe y muestra mensaje de error apropiado cuando aplica
- [ ] AC-006: Cuando todas las validaciones pasan, el sistema elimina correctamente:
- [ ] Los movimientos de stock asociados
- [ ] El movimiento de caja asociado (si existe)
- [ ] El movimiento de cuenta corriente asociado (si existe)
- [ ] Los items del comprobante
- [ ] El comprobante principal
- [ ] AC-007: Al eliminar movimientos de stock, el sistema revierte correctamente el stock de cada producto afectado
- [ ] AC-008: La eliminacion es transaccional: si alguna operacion falla, ninguna se aplica
- [ ] AC-009: La operacion de baja queda registrada en el log de auditoria con todos los detalles requeridos
- [ ] AC-010: El usuario recibe confirmacion visual cuando la baja se realiza exitosamente
- [ ] AC-011: El listado de comprobantes se actualiza automaticamente despues de una baja exitosa
- [ ] AC-012: Solo usuarios con el permiso de baja pueden ejecutar la operacion
- [ ] AC-013: La funcionalidad aplica a Facturas, Notas de Credito y Notas de Debito
- [ ] AC-014: Las Notas de Credito NO estan restringidas por la validacion de fecha de pago
- [ ] AC-015: El tiempo de procesamiento de la baja es aceptable (menos de 5 segundos en casos tipicos)
Notas adicionales
Formato del mensaje de confirmacion
El dialogo de confirmacion debe mostrar claramente todo lo que se eliminara:
+-----------------------------------------------------------------------+
| CONFIRMAR BAJA DE COMPROBANTE |
+-----------------------------------------------------------------------+
| |
| Esta a punto de dar de baja el siguiente comprobante: |
| |
| Tipo: FACTURA |
| Numero: 00001-00000123 |
| Cliente: 000001 - CLIENTE EJEMPLO S.A. |
| Fecha: 19/12/2025 |
| Total: $15.000,00 |
| |
+-----------------------------------------------------------------------+
| |
| Se eliminaran los siguientes registros relacionados: |
| |
| [X] 5 items del comprobante |
| [X] 1 movimiento de cuenta corriente |
| [X] 3 movimientos de stock (se revertira el stock de productos) |
| |
+-----------------------------------------------------------------------+
| |
| ATENCION: Esta operacion no se puede deshacer. |
| |
| [ CANCELAR ] [ CONFIRMAR BAJA ] |
| |
+-----------------------------------------------------------------------+Mensajes de error estandarizados
| Codigo | Mensaje | Causa |
|---|---|---|
| ERR-BAJA-001 | El comprobante no existe | Comprobante no encontrado |
| ERR-BAJA-002 | Tipo de comprobante no valido para baja | No es Factura, NC ni ND |
| ERR-BAJA-003 | No se puede dar de baja porque el movimiento pertenece a una caja cerrada | Caja cerrada |
| ERR-BAJA-004 | No se puede dar de baja porque la factura ya tiene fecha de pago | Fecha de pago registrada |
| ERR-BAJA-005 | No se puede dar de baja porque el saldo ha sido modificado | Saldo != Debe |
| ERR-BAJA-006 | Error al eliminar los registros relacionados | Error de sistema |
Preguntas resueltas
- Se debe hacer soft delete o hard delete? Hard delete - los registros se eliminan completamente, quedando solo el registro de auditoria
- Que pasa con los comprobantes relacionados (NC que afecta factura)? Se aplica la regla de saldo: si el saldo fue modificado, no se puede eliminar
- Se puede reabrir una caja para permitir la baja? Eso es una funcionalidad separada del modulo de tesoreria, fuera del alcance de este requerimiento
Documentacion Tecnica
Base de Datos
- Entidades principales: Comprobantes de venta (factura, credito, debito), items, ordcta (cuenta corriente), movimi (tesoreria), mov_sto (stock)
- Relaciones: Ver seccion "Relaciones de negocio"
Backend
- Documentacion Backend: ../../backend/index.md
Frontend
- Documentacion Frontend: ../../frontend/index.md
Historial de cambios
| Fecha | Version | Autor | Descripcion |
|---|---|---|---|
| 2025-12-19 | 1.0 | Sistema | Creacion del documento de requerimientos de negocio |