Appearance
Campo Manual en Comprobantes de Venta
Modulo: Ventas Tipo: Resource Estado: Implementado Fecha Creacion: 2025-12-23 Fecha Implementacion: 2025-12-29
Descripcion
Problema que resuelve
En el sistema de ventas, los comprobantes pueden originarse de dos formas diferentes:
Generacion automatica: Comprobantes emitidos desde el sistema hacia ARCA (facturacion electronica), donde el sistema controla todo el proceso de emision.
Registracion manual: Comprobantes que fueron emitidos fuera del sistema (por ejemplo, desde el portal de ARCA directamente) y luego se registran manualmente en el sistema para mantener la coherencia contable y de stock.
Actualmente no existe una forma clara de distinguir entre estos dos tipos de comprobantes una vez registrados en el sistema. Esta falta de distincion genera los siguientes problemas:
- Dificultad para identificar comprobantes manuales: No se puede filtrar o buscar rapidamente los comprobantes que fueron registrados manualmente
- Confusion en procesos de baja: No es evidente cuales comprobantes pueden ser candidatos para baja manual
- Reportes imprecisos: No se puede generar reportes separados por origen del comprobante
- Auditoria limitada: No se puede rastrear facilmente cuantos comprobantes fueron registrados manualmente en un periodo
Solucion propuesta
Se agrega un nuevo atributo manual a las entidades de comprobantes de venta (Factura, Nota de Credito, Nota de Debito). Este atributo es un indicador booleano que marca si el comprobante fue registrado manualmente o generado automaticamente por el sistema.
El campo:
- Se establece automaticamente en
truecuando el comprobante se carga a traves del proceso de registracion manual - Se establece en
false(valor por defecto) cuando el comprobante se genera a traves del proceso normal de facturacion electronica - Es de solo lectura una vez establecido (no se puede modificar posteriormente)
- Permite filtrar y consultar comprobantes por su origen
Valor de negocio
- Trazabilidad de origen: Permite conocer el origen de cada comprobante de forma inequivoca
- Facilitacion de procesos: El proceso de baja de comprobantes manuales puede filtrar directamente por este campo
- Reportes diferenciados: Se pueden generar estadisticas y reportes separados por tipo de origen
- Control operativo: Permite a supervisores monitorear el volumen de registraciones manuales vs automaticas
- Auditoria mejorada: Facilita el seguimiento y control de comprobantes ingresados manualmente
Entidades Afectadas
El campo manual se agrega a las siguientes entidades de comprobantes de venta:
Factura
La entidad principal de facturacion.
| Dato | Descripcion |
|---|---|
| Campo | manual |
| Tipo | Booleano (verdadero/falso) |
| Valor por defecto | Falso |
| Obligatorio | Si (no puede ser nulo) |
| Modificable | No (se establece al momento de la creacion) |
Nota de Credito
Comprobante de credito a favor del cliente.
| Dato | Descripcion |
|---|---|
| Campo | manual |
| Tipo | Booleano (verdadero/falso) |
| Valor por defecto | Falso |
| Obligatorio | Si (no puede ser nulo) |
| Modificable | No (se establece al momento de la creacion) |
Nota de Debito
Comprobante de debito contra el cliente.
| Dato | Descripcion |
|---|---|
| Campo | manual |
| Tipo | Booleano (verdadero/falso) |
| Valor por defecto | Falso |
| Obligatorio | Si (no puede ser nulo) |
| Modificable | No (se establece al momento de la creacion) |
Reglas de Negocio
RN-001: Valor por defecto
Descripcion: El campo manual tiene como valor por defecto falso, indicando que por defecto los comprobantes se consideran generados automaticamente.
Condicion: Se crea un nuevo comprobante sin especificar el valor del campo.
Accion: El sistema asigna automaticamente el valor falso.
Fundamento: La mayoria de los comprobantes se generan a traves del proceso normal de facturacion electronica, por lo que el valor por defecto refleja el caso mas comun.
RN-002: Establecimiento en registracion manual
Descripcion: Cuando un comprobante se registra a traves del proceso de registracion manual, el campo manual debe establecerse en verdadero.
Condicion: El usuario registra un comprobante utilizando la funcionalidad de registracion manual de ventas.
Accion: El sistema establece automaticamente el campo manual en verdadero.
Fundamento: Permite identificar de forma automatica todos los comprobantes que ingresaron al sistema a traves del proceso de registracion manual.
RN-003: Establecimiento en facturacion electronica
Descripcion: Cuando un comprobante se genera a traves del proceso de facturacion electronica (emision normal), el campo manual debe establecerse en falso.
Condicion: El sistema genera y emite un comprobante a traves del proceso de facturacion electronica hacia ARCA.
Accion: El sistema establece el campo manual en falso (o lo deja con su valor por defecto).
Fundamento: Estos comprobantes fueron generados y controlados completamente por el sistema, a diferencia de los registrados manualmente.
RN-004: Inmutabilidad del campo
Descripcion: Una vez establecido el valor del campo manual, este no puede ser modificado.
Condicion: El comprobante ya fue creado y tiene un valor asignado en el campo manual.
Accion:
- Si se intenta modificar el campo: el sistema rechaza la operacion
- El campo no debe estar disponible para edicion en ninguna interfaz
Fundamento: El origen de un comprobante es un dato historico que no debe alterarse, ya que afectaria la integridad de los registros y la trazabilidad.
RN-005: Uso en consultas y filtros
Descripcion: El campo manual puede utilizarse como criterio de filtrado en consultas de comprobantes.
Condicion: El usuario o el sistema necesita consultar comprobantes por su origen.
Accion: El sistema permite filtrar por:
- Solo comprobantes manuales (
manual = verdadero) - Solo comprobantes automaticos (
manual = falso) - Todos los comprobantes (sin filtro por origen)
Fundamento: Permite segmentar las consultas segun las necesidades del usuario o proceso.
Casos de Uso
CU-001: Registracion manual de comprobante
Actor: Usuario de Ventas
Objetivo: Registrar un comprobante emitido fuera del sistema
Precondiciones:
- Usuario autenticado con permiso de registracion manual
- Datos del comprobante disponibles
Flujo principal:
- El usuario accede al modulo de registracion manual de ventas
- El usuario ingresa los datos del comprobante (tipo, numero, cliente, items, etc.)
- El usuario confirma el registro
- El sistema crea el comprobante con el campo
manual = verdadero - El sistema muestra mensaje de exito
Postcondiciones:
- El comprobante queda registrado con el indicador de origen manual activado
- El comprobante aparece en consultas filtradas por comprobantes manuales
CU-002: Emision de comprobante electronico
Actor: Sistema / Usuario de Ventas
Objetivo: Emitir un comprobante a traves del proceso de facturacion electronica
Precondiciones:
- Usuario autenticado con permiso de facturacion
- Conexion con ARCA disponible
Flujo principal:
- El usuario o proceso inicia la emision de un comprobante
- El sistema genera el comprobante y lo envia a ARCA
- ARCA retorna el CAE (codigo de autorizacion electronica)
- El sistema crea el comprobante con el campo
manual = falso - El sistema muestra/retorna el comprobante autorizado
Postcondiciones:
- El comprobante queda registrado con el indicador de origen automatico
- El comprobante NO aparece en consultas filtradas por comprobantes manuales
CU-003: Consulta de comprobantes manuales
Actor: Usuario de Ventas / Administrador
Objetivo: Obtener listado de comprobantes registrados manualmente
Precondiciones:
- Usuario autenticado con permiso de consulta de comprobantes
Flujo principal:
- El usuario accede a la consulta de comprobantes
- El usuario aplica el filtro "Solo manuales" o equivalente
- El sistema retorna unicamente los comprobantes con
manual = verdadero - El usuario visualiza los resultados
Postcondiciones:
- El usuario obtiene el listado filtrado por origen manual
CU-004: Busqueda para baja de comprobantes manuales
Actor: Usuario de Ventas / Administrador
Objetivo: Buscar comprobantes manuales candidatos para dar de baja
Precondiciones:
- Usuario autenticado con permiso de baja de comprobantes
- Existen comprobantes registrados manualmente
Flujo principal:
- El usuario accede al proceso de baja de comprobantes manuales
- El usuario solicita ver todos los comprobantes manuales (sin buscar por numero especifico)
- El sistema consulta todos los comprobantes con
manual = verdadero - El sistema muestra el listado de comprobantes manuales disponibles para baja
- El usuario selecciona el comprobante deseado
Postcondiciones:
- El usuario puede proceder con el proceso de baja del comprobante seleccionado
Relaciones con otras funcionalidades
Registracion Manual de Ventas
El proceso de registracion manual es el principal consumidor de este campo, ya que es el encargado de establecer manual = verdadero al crear los comprobantes.
Relacion: El campo manual se establece durante la creacion del comprobante en este proceso.
Baja de Comprobantes Manuales
El proceso de baja utiliza este campo para:
- Identificar rapidamente los comprobantes elegibles para baja (solo los manuales)
- Ofrecer una opcion de busqueda que muestre todos los comprobantes manuales
Relacion: El campo manual se usa como criterio de filtrado en la busqueda.
Reportes de Ventas
Los reportes pueden segmentarse por origen del comprobante, permitiendo analisis diferenciados.
Relacion: El campo manual se usa como criterio de agrupacion o filtrado en reportes.
Auditoria
El campo contribuye a la trazabilidad al indicar como ingreso el comprobante al sistema.
Relacion: El campo manual se incluye en la informacion de auditoria del comprobante.
Diagrama de Entidades
mermaid
erDiagram
FACTURA {
int id
string numero
date fecha
decimal total
boolean manual "Indicador de origen"
}
CREDITO {
int id
string numero
date fecha
decimal total
boolean manual "Indicador de origen"
}
DEBITO {
int id
string numero
date fecha
decimal total
boolean manual "Indicador de origen"
}
FACTURA ||--o{ CREDITO : "puede tener"
FACTURA ||--o{ DEBITO : "puede tener"Consideraciones
Migracion de datos existentes
Para los comprobantes existentes en el sistema (creados antes de la implementacion de este campo):
- Comprobantes sin CAE: Se deben analizar y potencialmente marcar como manuales
- Comprobantes con CAE: Se consideran automaticos (generados por el sistema)
- Criterio alternativo: Evaluar si existe otro atributo que permita determinar el origen
Integridad de datos
- El campo no debe permitir valores nulos para evitar ambiguedades
- El valor por defecto asegura que todos los comprobantes tengan un valor valido
- La inmutabilidad del campo garantiza la consistencia historica
Impacto en consultas existentes
- Las consultas existentes no se ven afectadas (el filtro por
manuales opcional) - Se deben crear nuevas opciones de filtrado donde sea relevante
- Los indices deben considerar este campo para consultas frecuentes
Criterios de Aceptacion
La funcionalidad se considera completa cuando:
- [x] AC-001: El campo
manualexiste en las entidades factura, credito y debito - [x] AC-002: El campo tiene valor por defecto
falso - [x] AC-003: El campo no permite valores nulos
- [x] AC-004: Al registrar un comprobante manualmente, el campo se establece en
verdaderoautomaticamente - [x] AC-005: Al emitir un comprobante electronico, el campo se establece en
falso - [x] AC-006: El campo no es modificable despues de la creacion del comprobante (implementado mediante arquitectura - no hay endpoints de actualizacion)
- [x] AC-007: Se puede filtrar comprobantes por el valor del campo
manual - [x] AC-008: El proceso de baja de comprobantes manuales puede usar este campo para buscar comprobantes
Historial de cambios
| Fecha | Version | Autor | Descripcion |
|---|---|---|---|
| 2025-12-23 | 1.0 | Sistema | Creacion del documento de requerimientos |
| 2025-12-29 | 1.1 | Sistema | Implementacion completa del requerimiento. Se agregaron: migraciones de base de datos (factura, credito, debito), campo en DTOs, mapeo en modelos, logica en servicios para establecer automaticamente el valor, capacidad de filtrado en consultas getAll(), y suite completa de tests unitarios. |