Skip to content

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:

  1. Identifica todas las relaciones del comprobante con otros modulos
  2. Valida que el comprobante cumpla las condiciones para poder ser dado de baja
  3. Elimina de forma transaccional todos los registros relacionados
  4. 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:

OrdenModuloEntidadDescripcion
1StockMovimientos de StockEliminar y revertir stock de productos
2TesoreriaMovimientos de CajaEliminar movimiento de entrada/salida de caja
3Cuenta CorrienteMovimiento CtaCteEliminar registro de deuda/pago del cliente
4VentasItems del ComprobanteEliminar lineas de detalle del comprobante
5VentasComprobanteEliminar el comprobante principal

Condiciones previas para la baja

Para que un comprobante pueda ser dado de baja, deben cumplirse las siguientes condiciones:

  1. El comprobante debe existir: Debe ser un comprobante registrado manualmente en el sistema
  2. El comprobante debe ser de tipo valido: Factura, Nota de Credito o Nota de Debito
  3. 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

AccionDescripcionResultado esperado
Clic en "Dar de baja"Usuario selecciona la opcion de baja en un comprobanteSistema muestra dialogo de confirmacion con detalle de relaciones
Confirmar bajaUsuario confirma la accion en el dialogoSistema ejecuta el proceso de baja y muestra resultado
Cancelar bajaUsuario cancela la accion en el dialogoSistema cierra el dialogo sin realizar cambios
Ver detalles de restriccionUsuario intenta dar de baja un comprobante restringidoSistema muestra mensaje explicando la restriccion

Permisos

PermisoDescripcionAcciones permitidas
{POR_DETERMINAR}Permiso para dar de baja comprobantes de registracion manualEliminar 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

EstadoDescripcionElementos visuales
Cargando relacionesSistema identificando relaciones del comprobanteIndicador de carga, boton de confirmacion deshabilitado
Validando restriccionesSistema verificando si el comprobante puede darse de bajaIndicador de carga con mensaje "Validando..."
Confirmacion pendienteDialogo mostrando resumen de lo que se eliminaraLista de relaciones, botones Confirmar/Cancelar
Error de restriccionComprobante no puede darse de bajaMensaje de error con explicacion de la restriccion
Procesando bajaSistema ejecutando la eliminacionIndicador de carga, botones deshabilitados
Baja exitosaComprobante eliminado correctamenteMensaje de exito, listado actualizado
Error de sistemaError durante la eliminacionMensaje de error, opcion de reintentar
Sin comprobantesListado vacio de comprobantesEstado 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 relevanteDescripcion
IdentificadorIdentificador unico del comprobante
Tipo de comprobanteCodigo que indica si es Factura, NC o ND
Numero de comprobanteNumero correlativo del comprobante
ClienteCliente asociado al comprobante
FechaFecha de emision del comprobante
TotalImporte total del comprobante
Condicion de ventaContado, Cuenta Corriente o Tarjeta

Items del Comprobante

Lineas de detalle del comprobante con los productos/servicios facturados.

Dato relevanteDescripcion
Identificador del comprobanteRelacion con el comprobante padre
ProductoProducto o servicio facturado
CantidadCantidad del item
PrecioPrecio unitario
ImporteImporte total de la linea

Movimiento de Cuenta Corriente

Registro del movimiento de deuda/credito generado en la cuenta del cliente.

Dato relevanteDescripcion
ClienteCliente de la cuenta corriente
Tipo de comprobanteCodigo del tipo de comprobante que origino el movimiento
Numero de comprobanteNumero del comprobante que origino el movimiento
DebeMonto deudor (facturas)
HaberMonto acreedor (notas de credito, pagos)
SaldoSaldo pendiente del movimiento
Fecha de pagoFecha en que se pago el comprobante (si aplica)

Movimiento de Caja (Tesoreria)

Registro del movimiento de entrada o salida de caja.

Dato relevanteDescripcion
Identificador de cajaCaja a la que pertenece el movimiento
Tipo de movimientoEntrada o Salida
ImporteMonto del movimiento
Comprobante asociadoIdentificador del comprobante que origino el movimiento
Tipo de comprobanteCodigo del tipo de comprobante

Caja (Estado de la Caja de Tesoreria)

Estado de la caja de tesoreria (abierta o cerrada).

Dato relevanteDescripcion
IdentificadorIdentificador unico de la caja
Fecha de aperturaFecha en que se abrio la caja
Fecha de cierreFecha en que se cerro la caja (nulo si esta abierta)
SaldoSaldo de la caja al momento del cierre

Movimiento de Stock

Registro de entrada o salida de inventario por producto.

Dato relevanteDescripcion
ProductoProducto afectado
CantidadCantidad del movimiento
PosicionIngreso o Egreso
ComprobanteCodigo del comprobante que origino el movimiento
Numero de comprobanteNumero del comprobante

Datos necesarios para el proceso

Para ejecutar la baja de un comprobante, el sistema necesita:

DatoOrigenUso
Identificador del comprobanteSeleccion del usuarioIdentificar el comprobante a eliminar
Tipo de comprobanteComprobanteDeterminar validaciones especificas
Condicion de ventaComprobanteDeterminar si afecto cuenta corriente o caja
Items del comprobanteRelacion con comprobanteRevertir movimientos de stock
Movimiento de cuenta corrienteRelacion por tipo y numero de comprobanteValidar restricciones y eliminar
Movimiento de cajaRelacion por comprobanteValidar restricciones y eliminar
Estado de la cajaMovimiento de cajaValidar si la caja esta cerrada
Movimientos de stockRelacion por comprobanteEliminar 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

ValidacionCondicionComportamiento si no cumple
Existencia del comprobanteEl comprobante debe existir en el sistemaError: "El comprobante no existe"
Tipo de comprobante validoDebe ser Factura, Nota de Credito o Nota de DebitoError: "Tipo de comprobante no valido para baja"
Caja no cerradaSi tiene movimiento de caja, la caja debe estar abiertaError: "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 pagoError: "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 debeError: "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:

  1. El usuario accede al modulo de registracion manual de ventas
  2. El usuario localiza la factura a dar de baja en el listado
  3. El usuario selecciona la opcion "Dar de baja"
  4. 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"
  5. El usuario confirma la operacion
  6. El sistema ejecuta las validaciones (todas pasan)
  7. El sistema elimina en orden: stock, cuenta corriente, items, comprobante
  8. El sistema muestra mensaje: "Comprobante dado de baja exitosamente"
  9. 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:

  1. El usuario accede al modulo de registracion manual de ventas
  2. El usuario localiza la factura a dar de baja en el listado
  3. El usuario selecciona la opcion "Dar de baja"
  4. El sistema ejecuta las validaciones
  5. El sistema detecta que el movimiento de caja pertenece a Caja Nro: 15, cerrada el 2025-12-18
  6. 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"
  7. El dialogo muestra solo el boton "Aceptar"
  8. 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:

  1. El usuario accede al modulo de registracion manual de ventas
  2. El usuario localiza la factura a dar de baja en el listado
  3. El usuario selecciona la opcion "Dar de baja"
  4. El sistema ejecuta las validaciones
  5. El sistema detecta que el movimiento de cuenta corriente tiene fecha de pago: 2025-12-15
  6. 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"
  7. El dialogo muestra solo el boton "Aceptar"
  8. 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:

  1. El usuario accede al modulo de registracion manual de ventas
  2. El usuario localiza la factura a dar de baja en el listado
  3. El usuario selecciona la opcion "Dar de baja"
  4. El sistema ejecuta las validaciones
  5. El sistema detecta que saldo ($6.000) != debe ($10.000)
  6. 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"
  7. El dialogo muestra solo el boton "Aceptar"
  8. 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:

  1. El usuario accede al modulo de registracion manual de ventas
  2. El usuario localiza la nota de credito a dar de baja en el listado
  3. El usuario selecciona la opcion "Dar de baja"
  4. 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)"
  5. El usuario confirma la operacion
  6. El sistema ejecuta las validaciones (todas pasan)
  7. El sistema elimina movimientos de stock y DECREMENTA el stock de productos (revierte el ingreso por devolucion)
  8. El sistema elimina cuenta corriente, items y comprobante
  9. 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
                          FIN

Secuencia de eliminacion detallada

PasoAccionModuloDetalle
1Iniciar transaccionSistemaAbre transaccion en todas las conexiones necesarias
2Obtener movimientos de stockStockConsulta movimientos por codigo de comprobante y numero
3Revertir stock por productoStockPor cada movimiento, actualiza el stock del producto en sentido inverso
4Eliminar movimientos de stockStockElimina los registros de movimiento
5Obtener movimiento de cajaTesoreriaConsulta por id_comprobante y id_tipo_comprobante
6Eliminar movimiento de cajaTesoreriaElimina el registro del movimiento
7Obtener movimiento cuenta corrienteCtaCteConsulta por numero y tipo de comprobante
8Eliminar movimiento cuenta corrienteCtaCteElimina el registro del movimiento
9Eliminar items del comprobanteVentasElimina registros de items relacionados al comprobante
10Eliminar comprobanteVentasElimina el registro principal del comprobante
11Registrar auditoriaSistemaRegistra la operacion DELETE con todos los detalles
12Confirmar transaccionSistemaCommit 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:

OperacionInformacion capturada
DELETE de comprobanteTipo, numero, cliente, fecha, total, usuario, timestamp
DELETE de itemsCantidad de items eliminados, comprobante padre
DELETE de cuenta corrienteCliente, importe, tipo comprobante
DELETE de movimiento cajaCaja, importe, tipo
DELETE de movimientos stockProducto, 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

CodigoMensajeCausa
ERR-BAJA-001El comprobante no existeComprobante no encontrado
ERR-BAJA-002Tipo de comprobante no valido para bajaNo es Factura, NC ni ND
ERR-BAJA-003No se puede dar de baja porque el movimiento pertenece a una caja cerradaCaja cerrada
ERR-BAJA-004No se puede dar de baja porque la factura ya tiene fecha de pagoFecha de pago registrada
ERR-BAJA-005No se puede dar de baja porque el saldo ha sido modificadoSaldo != Debe
ERR-BAJA-006Error al eliminar los registros relacionadosError de sistema

Preguntas resueltas

  1. Se debe hacer soft delete o hard delete? Hard delete - los registros se eliminan completamente, quedando solo el registro de auditoria
  2. 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
  3. 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

Frontend


Historial de cambios

FechaVersionAutorDescripcion
2025-12-191.0SistemaCreacion del documento de requerimientos de negocio