Appearance
Validacion de Duplicidad en Comprobantes de Registracion Manual
Modulo: Ventas Tipo: Resource Estado: ✅ Implementado Fecha: 2025-12-23 Fecha de Implementación: 2025-12-30
Descripcion
Problema que resuelve
El proceso de registracion manual de comprobantes de ventas permite a los usuarios ingresar al sistema comprobantes que fueron emitidos fuera del mismo (por ejemplo, desde el portal de ARCA directamente). Este proceso requiere que el usuario ingrese manualmente los datos del comprobante, incluyendo el CAE y la identificacion del comprobante (punto de venta, numero y tipo).
Sin validaciones de duplicidad, el sistema esta expuesto a los siguientes riesgos:
- Carga duplicada por error humano: Un usuario podria cargar el mismo comprobante dos veces por distraccion o confusion sobre si ya fue registrado
- Inconsistencia en datos contables: Los comprobantes duplicados afectan los totales de ventas, IVA y otras metricas financieras
- Afectacion de cuenta corriente: Si el comprobante genera movimiento de cuenta corriente, la duplicacion genera deuda ficticia al cliente
- Impacto en tesoreria: Los movimientos de caja asociados quedarian duplicados, alterando los saldos
- Desajuste de stock: Los movimientos de inventario se duplicarian, generando inconsistencias en las existencias
- Necesidad de procesos correctivos: Corregir duplicados requiere utilizar el proceso de baja de comprobantes, que es mas complejo que prevenir el error
Solucion propuesta
Se implementan dos validaciones preventivas que se ejecutan durante el proceso de registracion manual, antes de permitir guardar el comprobante:
Validacion de CAE unico: Verifica que el CAE (Codigo de Autorizacion Electronica) ingresado no exista previamente en el sistema.
Validacion de combinacion unica de identificacion: Verifica que la combinacion de punto de venta (sucursal emisora) + numero de comprobante + tipo de comprobante no exista previamente.
Ambas validaciones actuan como barreras preventivas que detectan el intento de duplicacion antes de que los datos se persistan, informando al usuario con mensajes claros que le permiten verificar y corregir la situacion.
Valor de negocio
- Prevencion de errores: Detecta duplicaciones antes de que ocurran, evitando inconsistencias en los datos
- Integridad de datos: Garantiza que cada comprobante fiscal se registre una unica vez en el sistema
- Reduccion de trabajo correctivo: Elimina la necesidad de utilizar procesos de baja para corregir duplicaciones
- Calidad de informacion: Mejora la confiabilidad de reportes y estadisticas de ventas
- Eficiencia operativa: Ahorra tiempo al usuario al prevenir errores en lugar de corregirlos posteriormente
- Control fiscal: Asegura que la informacion fiscal sea precisa y consistente con los comprobantes autorizados por ARCA
Contexto del sistema
Esta funcionalidad se integra en el proceso existente de registracion manual de ventas y afecta a todos los tipos de comprobantes que pueden registrarse manualmente:
- Facturas (tipos A, B, C y otros tipos habilitados para registracion manual)
- Notas de Credito (tipos A, B, C y otros tipos habilitados para registracion manual)
- Notas de Debito (tipos A, B, C y otros tipos habilitados para registracion manual)
Las validaciones se aplican de manera uniforme a todos estos tipos de comprobantes.
Frontend
Vistas afectadas
Las validaciones de duplicidad se manifiestan en la interfaz de usuario durante el proceso de registracion manual:
- Formulario de registracion manual de ventas: Vista donde el usuario ingresa los datos del comprobante a registrar
Interacciones del usuario
Flujo normal (sin duplicacion):
- El usuario accede al formulario de registracion manual de ventas
- El usuario completa los campos del comprobante (tipo, punto de venta, numero, CAE, cliente, items, etc.)
- El usuario confirma el registro
- El sistema valida que no existan duplicados
- El sistema guarda el comprobante y muestra mensaje de exito
Flujo con deteccion de duplicado por CAE:
- El usuario accede al formulario de registracion manual de ventas
- El usuario completa los campos del comprobante, incluyendo un CAE que ya existe en el sistema
- El usuario confirma el registro
- El sistema detecta que el CAE ya fue registrado
- El sistema muestra mensaje de error: "El comprobante ya existe en el sistema. El CAE ingresado ya fue registrado anteriormente"
- El comprobante NO se guarda
- El usuario debe verificar si ya cargo el comprobante previamente
Flujo con deteccion de duplicado por identificacion:
- El usuario accede al formulario de registracion manual de ventas
- El usuario completa los campos del comprobante con una combinacion de punto de venta + numero + tipo que ya existe
- El usuario confirma el registro
- El sistema detecta que ya existe un comprobante con la misma identificacion
- El sistema muestra mensaje de error: "El comprobante ya existe en el sistema. Ya existe un comprobante con el mismo punto de venta, numero y tipo"
- El comprobante NO se guarda
- El usuario debe verificar si ya cargo el comprobante previamente
Permisos
Las validaciones de duplicidad se ejecutan automaticamente para cualquier usuario que tenga permisos de registracion manual de ventas. No requieren permisos adicionales.
| Permiso | Descripcion | Relacion con validaciones |
|---|---|---|
| Registracion manual de ventas | Permite registrar comprobantes manualmente | Las validaciones se aplican automaticamente durante este proceso |
Estados de UI
Estado normal:
- El formulario de registracion esta disponible para completar
- Los campos se muestran en estado editable
Estado de error por duplicacion de CAE:
- Se muestra mensaje de error destacado
- El mensaje indica: "El comprobante ya existe en el sistema. El CAE ingresado ya fue registrado anteriormente"
- El formulario permanece con los datos ingresados para que el usuario pueda verificar
- El usuario puede corregir el CAE o cancelar la operacion
Estado de error por duplicacion de identificacion:
- Se muestra mensaje de error destacado
- El mensaje indica: "El comprobante ya existe en el sistema. Ya existe un comprobante con el mismo punto de venta, numero y tipo"
- El formulario permanece con los datos ingresados para que el usuario pueda verificar
- El usuario puede corregir los datos de identificacion o cancelar la operacion
Backend
Entidades de negocio involucradas
Comprobante de Venta
Representa el documento fiscal de venta (factura, nota de credito, nota de debito) que contiene la informacion a validar.
Datos relevantes para las validaciones:
| Dato | Descripcion | Uso en validacion |
|---|---|---|
| CAE | Codigo de Autorizacion Electronica otorgado por ARCA | Se verifica unicidad en validacion RN-001 |
| Punto de venta | Numero del punto de venta emisor (sucursal) | Se usa en combinacion para validacion RN-002 |
| Numero de comprobante | Numero secuencial del comprobante | Se usa en combinacion para validacion RN-002 |
| Tipo de comprobante | Codigo que identifica el tipo (Factura A, B, NC, ND, etc.) | Se usa en combinacion para validacion RN-002 |
Validaciones de negocio
Validacion de CAE unico:
- El CAE es un identificador unico otorgado por ARCA para cada comprobante electronico autorizado
- No pueden existir dos comprobantes diferentes con el mismo CAE en el sistema
- Si el CAE ya existe, se rechaza el registro con mensaje descriptivo
Validacion de combinacion unica:
- La combinacion de punto de venta + numero + tipo identifica de forma unica un comprobante fiscal
- No pueden existir dos comprobantes con la misma combinacion en el sistema
- Si la combinacion ya existe, se rechaza el registro con mensaje descriptivo
Relaciones con otras entidades
Las validaciones de duplicidad se relacionan indirectamente con otras entidades que serian afectadas si se permitiera la duplicacion:
- Items del comprobante: Se duplicarian las lineas de detalle
- Movimientos de cuenta corriente: Se duplicaria la deuda del cliente
- Movimientos de caja: Se duplicarian las entradas de tesoreria
- Movimientos de stock: Se duplicarian los movimientos de inventario
La prevencion de duplicados protege la integridad de todas estas entidades relacionadas.
Reglas de Negocio
RN-001: Validacion de duplicidad por CAE
Descripcion: Al registrar manualmente un comprobante, el sistema debe validar que el CAE no exista previamente en el sistema.
Condicion: El usuario intenta registrar un comprobante con un CAE.
Accion:
- Antes de guardar, el sistema verifica si el CAE ya existe en cualquier comprobante
- Si el CAE ya existe: se rechaza la operacion con mensaje de error indicando duplicacion
- Si el CAE no existe: se permite continuar con el registro
Mensaje de error: "El comprobante ya existe en el sistema. El CAE ingresado ya fue registrado anteriormente"
Fundamento: El CAE (Codigo de Autorizacion Electronica) es un identificador unico otorgado por ARCA para cada comprobante electronico. Por su naturaleza de identificador unico a nivel nacional, no pueden existir dos comprobantes con el mismo CAE. La presencia de un CAE duplicado indica que el comprobante ya fue registrado anteriormente.
RN-002: Validacion de duplicidad por identificacion de comprobante
Descripcion: Al registrar manualmente un comprobante, el sistema debe validar que la combinacion de punto de venta + numero de comprobante + tipo de comprobante no exista previamente.
Condicion: El usuario intenta registrar un comprobante.
Accion:
- Antes de guardar, el sistema verifica si ya existe un comprobante con la misma combinacion:
- Mismo punto de venta (sucursal emisora)
- Mismo numero de comprobante
- Mismo tipo de comprobante
- Si la combinacion ya existe: se rechaza la operacion con mensaje de error indicando duplicacion
- Si la combinacion no existe: se permite continuar con el registro
Mensaje de error: "El comprobante ya existe en el sistema. Ya existe un comprobante con el mismo punto de venta, numero y tipo"
Fundamento: La combinacion de punto de venta, numero y tipo de comprobante constituye la identificacion fiscal unica de un comprobante. Esta combinacion es el criterio oficial para identificar un comprobante ante ARCA y en la normativa tributaria argentina. No pueden existir dos comprobantes con la misma identificacion fiscal.
RN-003: Momento de ejecucion de validaciones
Descripcion: Las validaciones de duplicidad se ejecutan en el momento de intentar guardar el comprobante, antes de que los datos se persistan.
Condicion: El usuario confirma el registro de un comprobante manual.
Accion:
- El sistema ejecuta primero la validacion de CAE (RN-001)
- Si pasa la validacion de CAE, ejecuta la validacion de combinacion (RN-002)
- Solo si ambas validaciones son exitosas, se procede a guardar el comprobante
- Si alguna validacion falla, se rechaza la operacion completa
Fundamento: Ejecutar las validaciones antes de persistir los datos garantiza que nunca se registren duplicados. La validacion preventiva es mas eficiente que la correccion posterior.
RN-004: Independencia de validaciones
Descripcion: Ambas validaciones (CAE y combinacion de identificacion) se ejecutan de forma independiente y cualquiera de ellas puede rechazar el registro.
Condicion: Se evaluan las condiciones de duplicidad.
Accion:
- Cada validacion se evalua por separado
- Un comprobante puede ser rechazado por cualquiera de las dos validaciones
- El mensaje de error indica especificamente cual condicion de duplicidad se detecto
- No es necesario que fallen ambas validaciones para rechazar el registro; basta con que falle una
Fundamento: Aunque en la practica un comprobante duplicado probablemente falle ambas validaciones (mismo CAE y misma identificacion), pueden existir casos donde solo falle una (por ejemplo, un error de tipeo en el CAE pero identificacion correcta). Validar ambos criterios de forma independiente maximiza la deteccion de posibles duplicaciones.
RN-005: Aplicacion a todos los tipos de comprobantes manuales
Descripcion: Las validaciones de duplicidad se aplican a todos los tipos de comprobantes que pueden registrarse manualmente.
Condicion: Se intenta registrar cualquier tipo de comprobante manual.
Accion:
- Las validaciones se aplican uniformemente a:
- Facturas (todos los tipos habilitados para registro manual)
- Notas de Credito (todos los tipos habilitados)
- Notas de Debito (todos los tipos habilitados)
- No hay excepciones ni tipos de comprobantes exentos de las validaciones
Fundamento: Todos los comprobantes fiscales tienen CAE y una identificacion unica (punto de venta, numero, tipo), por lo tanto todas deben ser validados para prevenir duplicaciones independientemente de su tipo.
Casos de Uso
CU-001: Intento de registro bloqueado por CAE duplicado
Actor: Usuario de Ventas
Objetivo: Registrar manualmente un comprobante que ya fue registrado previamente (por error)
Precondiciones:
- Usuario autenticado con permiso de registracion manual
- El comprobante a registrar tiene un CAE que ya existe en el sistema
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario selecciona el tipo de comprobante a registrar
- El usuario ingresa los datos del comprobante, incluyendo el CAE
- El usuario ingresa los datos del cliente y los items
- El usuario confirma el registro del comprobante
- El sistema verifica si el CAE ya existe en la base de datos
- El sistema detecta que el CAE ya fue registrado en otro comprobante
- El sistema muestra mensaje de error: "El comprobante ya existe en el sistema. El CAE ingresado ya fue registrado anteriormente"
- El comprobante NO se guarda en el sistema
- El usuario verifica si ya cargo el comprobante previamente
Postcondiciones:
- No se crea un comprobante duplicado en el sistema
- El comprobante original (con el mismo CAE) permanece sin cambios
- El usuario es informado claramente del motivo del rechazo
- El formulario mantiene los datos ingresados para revision del usuario
Flujos alternativos:
- Usuario corrige el CAE: Si el usuario detecto que ingreso un CAE incorrecto, puede corregirlo y volver a intentar el registro
- Usuario cancela: Si el usuario confirma que el comprobante ya fue cargado, cancela la operacion
CU-002: Intento de registro bloqueado por combinacion duplicada
Actor: Usuario de Ventas
Objetivo: Registrar manualmente un comprobante con numero que ya existe en el sistema
Precondiciones:
- Usuario autenticado con permiso de registracion manual
- Ya existe un comprobante con la misma combinacion de punto de venta + numero + tipo
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario selecciona el tipo de comprobante a registrar
- El usuario ingresa el punto de venta y numero de comprobante
- El usuario completa los demas datos (cliente, items, CAE, etc.)
- El usuario confirma el registro del comprobante
- El sistema verifica si ya existe un comprobante con la misma combinacion
- El sistema detecta que ya existe un comprobante con esa identificacion
- El sistema muestra mensaje de error: "El comprobante ya existe en el sistema. Ya existe un comprobante con el mismo punto de venta, numero y tipo"
- El comprobante NO se guarda en el sistema
- El usuario verifica si ya cargo el comprobante previamente
Postcondiciones:
- No se crea un comprobante duplicado en el sistema
- El comprobante original (con la misma identificacion) permanece sin cambios
- El usuario es informado claramente del motivo del rechazo
- El formulario mantiene los datos ingresados para revision del usuario
Flujos alternativos:
- Usuario corrige la identificacion: Si el usuario detecto un error de tipeo en el numero o punto de venta, puede corregirlo
- Usuario verifica tipo: Si el usuario selecciono el tipo de comprobante incorrecto, puede cambiarlo
- Usuario cancela: Si el usuario confirma que el comprobante ya fue cargado, cancela la operacion
CU-003: Registro exitoso con datos unicos
Actor: Usuario de Ventas
Objetivo: Registrar manualmente un comprobante nuevo que no existe en el sistema
Precondiciones:
- Usuario autenticado con permiso de registracion manual
- El comprobante a registrar tiene un CAE que no existe en el sistema
- El comprobante a registrar tiene una combinacion de identificacion unica
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario selecciona el tipo de comprobante a registrar
- El usuario ingresa los datos del comprobante (punto de venta, numero, CAE)
- El usuario selecciona el cliente
- El usuario ingresa los items del comprobante
- El usuario confirma el registro del comprobante
- El sistema verifica que el CAE no exista en la base de datos
- El sistema confirma que el CAE es unico
- El sistema verifica que la combinacion de identificacion no exista
- El sistema confirma que la identificacion es unica
- El sistema procede a guardar el comprobante con todos sus datos relacionados
- El sistema muestra mensaje de exito al usuario
Postcondiciones:
- El comprobante queda registrado correctamente en el sistema
- Los items del comprobante quedan registrados
- Si aplica, se genera el movimiento de cuenta corriente correspondiente
- Si aplica, se genera el movimiento de caja correspondiente
- Si aplica, se generan los movimientos de stock correspondientes
- El comprobante queda marcado con el indicador de origen manual activado
CU-004: Consulta de comprobante existente antes de registrar
Actor: Usuario de Ventas
Objetivo: Verificar si un comprobante ya fue registrado antes de intentar cargarlo
Precondiciones:
- Usuario autenticado con permiso de consulta de comprobantes
- El usuario tiene los datos del comprobante a verificar
Flujo principal:
- El usuario accede a la consulta de comprobantes de ventas
- El usuario busca por numero de comprobante y punto de venta
- El sistema muestra los resultados de la busqueda
- Si el comprobante existe, el usuario lo visualiza y confirma que ya fue cargado
- Si el comprobante no existe, el usuario procede con el registro manual
Postcondiciones:
- El usuario tiene certeza sobre si el comprobante ya existe o no
- Se evita un intento de carga duplicada innecesario
Nota: Este caso de uso representa una buena practica que el usuario puede seguir para evitar intentos de duplicacion, aunque las validaciones automaticas tambien lo protegen.
Consideraciones
Seguridad
Proteccion de integridad de datos:
- Las validaciones protegen la integridad de los datos fiscales y contables del sistema
- Previenen la introduccion de informacion duplicada que afectaria reportes y calculos
- Funcionan como una capa de proteccion contra errores humanos de carga
Mensajes de error seguros:
- Los mensajes de error no revelan informacion sensible del comprobante existente
- Solo indican que existe un duplicado, sin detallar datos del comprobante original
Auditoria
Registro de intentos fallidos:
- Los intentos de registro rechazados por duplicacion pueden registrarse en el log de auditoria
- Esto permite identificar patrones de error o intentos repetidos de carga
Informacion a registrar:
- Fecha y hora del intento
- Usuario que realizo el intento
- Tipo de validacion que fallo (CAE o combinacion)
- Datos ingresados que generaron el rechazo
Rendimiento
Expectativas de tiempo de respuesta:
- La validacion de duplicidad debe ejecutarse de manera inmediata
- El usuario no debe percibir demora adicional significativa al confirmar el registro
- Las consultas de verificacion deben ser eficientes para no impactar la experiencia del usuario
Volumenes esperados:
- El volumen de registraciones manuales es tipicamente bajo comparado con las emisiones automaticas
- Las validaciones deben mantener su eficiencia independientemente del volumen historico de comprobantes
Compatibilidad
Comprobantes existentes:
- Las validaciones aplican tanto a comprobantes nuevos como a la verificacion contra comprobantes historicos
- Los comprobantes registrados antes de implementar las validaciones se incluyen en la verificacion de duplicidad
Dependencias
Funcionalidades relacionadas
Proceso de Registracion Manual de Ventas:
- Las validaciones de duplicidad son parte integral del proceso de registracion manual
- Se ejecutan automaticamente durante el flujo de registro
Campo Manual en Comprobantes (documentado en campo-manual-comprobantes-resource.md):
- Los comprobantes que pasan las validaciones de duplicidad se marcan con el indicador
manual = verdadero - Ambas funcionalidades trabajan en conjunto durante el proceso de registracion manual
Proceso de Baja de Comprobantes Manuales (documentado en baja-comprobantes-manual-process.md):
- Las validaciones de duplicidad reducen la necesidad de utilizar el proceso de baja
- Al prevenir duplicaciones, se minimiza la cantidad de comprobantes erroneos que requieren baja
Funcionalidades que se benefician
Reportes de ventas:
- La prevencion de duplicados garantiza la precision de los totales y estadisticas
Cuenta corriente de clientes:
- Se evitan deudas duplicadas por comprobantes repetidos
Tesoreria:
- Se evitan movimientos de caja duplicados
Stock:
- Se evitan movimientos de inventario duplicados
Criterios de Aceptacion
La funcionalidad se considera completa cuando se cumplan los siguientes criterios:
- [x] AC-001: El sistema rechaza el registro de un comprobante cuyo CAE ya existe en la base de datos ✅
- [x] AC-002: El sistema muestra el mensaje "El comprobante ya existe" cuando se detecta CAE duplicado ✅
- [x] AC-003: El sistema rechaza el registro de un comprobante cuya combinacion de punto de venta + numero + tipo ya existe ✅
- [x] AC-004: El sistema muestra el mensaje "El comprobante ya existe" cuando se detecta combinacion duplicada ✅
- [x] AC-005: Las validaciones se ejecutan antes de intentar guardar el comprobante en la base de datos ✅
- [x] AC-006: Las validaciones se aplican a todos los tipos de comprobantes que permiten registracion manual (facturas, notas de credito, notas de debito) ✅
- [x] AC-007: Los mensajes de error son claros y permiten al usuario entender el motivo del rechazo ✅
- [x] AC-008: El formulario de registracion mantiene los datos ingresados cuando se rechaza por duplicacion, permitiendo al usuario revisar ✅
- [x] AC-009: Un comprobante con CAE unico y combinacion de identificacion unica se registra exitosamente ✅
- [x] AC-010: Las validaciones se ejecutan en tiempo aceptable sin generar demoras perceptibles al usuario ✅
Notas adicionales
Relacion con validaciones de ARCA
Es importante notar que estas validaciones son complementarias a las validaciones que realiza ARCA:
- ARCA valida la autorizacion: ARCA valida que el CAE corresponda a un comprobante autorizado
- El sistema valida la duplicacion local: El sistema valida que el comprobante no haya sido registrado previamente en la base de datos local
Un comprobante puede tener un CAE valido ante ARCA pero estar duplicado en el sistema local si se intenta cargar mas de una vez.
Escenarios especiales
Comprobante rechazado y reintentado:
- Si un usuario intenta cargar un comprobante, es rechazado por otro motivo (no duplicacion), corrige el error y vuelve a intentar
- Las validaciones de duplicidad se ejecutan nuevamente en cada intento
- Esto es comportamiento esperado y correcto
Multiples sucursales/puntos de venta:
- Cada punto de venta tiene su propia secuencia de numeros de comprobante
- Un numero de comprobante puede existir en diferentes puntos de venta sin generar conflicto
- La validacion de combinacion incluye el punto de venta precisamente para este caso
Historial de cambios
| Fecha | Version | Autor | Descripcion |
|---|---|---|---|
| 2025-12-30 | 2.0 | Sistema | Implementación completa con tests. Actualización de estado a Implementado. |
| 2025-12-23 | 1.0 | Sistema | Creacion del documento de requerimientos de negocio |