Skip to content

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:

  1. Validacion de CAE unico: Verifica que el CAE (Codigo de Autorizacion Electronica) ingresado no exista previamente en el sistema.

  2. 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):

  1. El usuario accede al formulario de registracion manual de ventas
  2. El usuario completa los campos del comprobante (tipo, punto de venta, numero, CAE, cliente, items, etc.)
  3. El usuario confirma el registro
  4. El sistema valida que no existan duplicados
  5. El sistema guarda el comprobante y muestra mensaje de exito

Flujo con deteccion de duplicado por CAE:

  1. El usuario accede al formulario de registracion manual de ventas
  2. El usuario completa los campos del comprobante, incluyendo un CAE que ya existe en el sistema
  3. El usuario confirma el registro
  4. El sistema detecta que el CAE ya fue registrado
  5. El sistema muestra mensaje de error: "El comprobante ya existe en el sistema. El CAE ingresado ya fue registrado anteriormente"
  6. El comprobante NO se guarda
  7. El usuario debe verificar si ya cargo el comprobante previamente

Flujo con deteccion de duplicado por identificacion:

  1. El usuario accede al formulario de registracion manual de ventas
  2. El usuario completa los campos del comprobante con una combinacion de punto de venta + numero + tipo que ya existe
  3. El usuario confirma el registro
  4. El sistema detecta que ya existe un comprobante con la misma identificacion
  5. 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"
  6. El comprobante NO se guarda
  7. 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.

PermisoDescripcionRelacion con validaciones
Registracion manual de ventasPermite registrar comprobantes manualmenteLas 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:

DatoDescripcionUso en validacion
CAECodigo de Autorizacion Electronica otorgado por ARCASe verifica unicidad en validacion RN-001
Punto de ventaNumero del punto de venta emisor (sucursal)Se usa en combinacion para validacion RN-002
Numero de comprobanteNumero secuencial del comprobanteSe usa en combinacion para validacion RN-002
Tipo de comprobanteCodigo 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:

  1. El usuario accede al modulo de registracion manual de ventas
  2. El usuario selecciona el tipo de comprobante a registrar
  3. El usuario ingresa los datos del comprobante, incluyendo el CAE
  4. El usuario ingresa los datos del cliente y los items
  5. El usuario confirma el registro del comprobante
  6. El sistema verifica si el CAE ya existe en la base de datos
  7. El sistema detecta que el CAE ya fue registrado en otro comprobante
  8. El sistema muestra mensaje de error: "El comprobante ya existe en el sistema. El CAE ingresado ya fue registrado anteriormente"
  9. El comprobante NO se guarda en el sistema
  10. 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:

  1. El usuario accede al modulo de registracion manual de ventas
  2. El usuario selecciona el tipo de comprobante a registrar
  3. El usuario ingresa el punto de venta y numero de comprobante
  4. El usuario completa los demas datos (cliente, items, CAE, etc.)
  5. El usuario confirma el registro del comprobante
  6. El sistema verifica si ya existe un comprobante con la misma combinacion
  7. El sistema detecta que ya existe un comprobante con esa identificacion
  8. 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"
  9. El comprobante NO se guarda en el sistema
  10. 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:

  1. El usuario accede al modulo de registracion manual de ventas
  2. El usuario selecciona el tipo de comprobante a registrar
  3. El usuario ingresa los datos del comprobante (punto de venta, numero, CAE)
  4. El usuario selecciona el cliente
  5. El usuario ingresa los items del comprobante
  6. El usuario confirma el registro del comprobante
  7. El sistema verifica que el CAE no exista en la base de datos
  8. El sistema confirma que el CAE es unico
  9. El sistema verifica que la combinacion de identificacion no exista
  10. El sistema confirma que la identificacion es unica
  11. El sistema procede a guardar el comprobante con todos sus datos relacionados
  12. 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:

  1. El usuario accede a la consulta de comprobantes de ventas
  2. El usuario busca por numero de comprobante y punto de venta
  3. El sistema muestra los resultados de la busqueda
  4. Si el comprobante existe, el usuario lo visualiza y confirma que ya fue cargado
  5. 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

FechaVersionAutorDescripcion
2025-12-302.0SistemaImplementación completa con tests. Actualización de estado a Implementado.
2025-12-231.0SistemaCreacion del documento de requerimientos de negocio