Descripción General
Los endpoints de Cálculos Específicos proporcionan funcionalidades especializadas para calcular totales de factura e impuestos basándose en las líneas de factura. Estos endpoints son útiles para validaciones, simulaciones y cálculos en tiempo real sin modificar la base de datos.
🎯 Características de los Cálculos Específicos
- Cálculos en memoria: Procesamiento sin persistencia en base de datos
- Simulaciones: Permite probar diferentes escenarios
- Validaciones: Verificar cálculos antes de aplicar cambios
- Tiempo real: Respuestas inmediatas para cálculos
- Múltiples tipos de IVA: Soporte para diferentes porcentajes
- Precisión: Cálculos exactos según normativa fiscal
- Flexibilidad: Acepta cualquier conjunto de líneas
- No destructivo: No modifica datos existentes
Endpoints Disponibles
POST
/WorkingData/InvoiceTax/calculate-total
Calcula el total de una factura basándose en las líneas proporcionadas. Este endpoint permite calcular el importe total incluyendo impuestos sin necesidad de tener una factura persistida en la base de datos.
Body (JSON):
[
{
"articulo": "ART001",
"cantidad": 2,
"precio": 12.50,
"importe": 25.00,
"descuento": 0,
"iva": 21.0
},
{
"articulo": "ART002",
"cantidad": 1,
"precio": 8.00,
"importe": 8.00,
"descuento": 1.00,
"iva": 10.0
}
]
Parámetros de consulta:
- initialCatalog (string, requerido): Nombre de la base de datos
- userID (string, opcional): ID de usuario de la base de datos
- password (string, opcional): Contraseña de la base de datos
200 OK
Total calculado exitosamente
{
"isSuccess": true,
"error": null,
"data": 35.47
}
400 Bad Request
Error en el cálculo
{
"isSuccess": false,
"error": "Error al calcular total: Datos de líneas inválidos",
"data": 0
}
POST
/WorkingData/InvoiceTax/calculate-taxes
Calcula los impuestos para una factura basándose en las líneas proporcionadas. Este endpoint devuelve el desglose detallado de impuestos por tipo de IVA aplicable.
Body (JSON):
[
{
"articulo": "ART001",
"cantidad": 2,
"precio": 12.50,
"importe": 25.00,
"descuento": 0,
"iva": 21.0
},
{
"articulo": "ART002",
"cantidad": 1,
"precio": 8.00,
"importe": 8.00,
"descuento": 1.00,
"iva": 10.0
}
]
Parámetros de consulta:
- tipoDocumento (string, requerido): Tipo de documento
- serie (string, requerido): Serie del documento
- factura (double, requerido): Número de factura
200 OK
Impuestos calculados exitosamente
[
{
"tipoDocumento": "FACTURA",
"serie": "A",
"factura": 1001,
"iva": 21.0,
"baseImponible": 25.00,
"importeIva": 5.25,
"descripcion": "IVA General"
},
{
"tipoDocumento": "FACTURA",
"serie": "A",
"factura": 1001,
"iva": 10.0,
"baseImponible": 7.00,
"importeIva": 0.70,
"descripcion": "IVA Reducido"
}
]
400 Bad Request
Error en el cálculo de impuestos
{
"isSuccess": false,
"error": "Error al calcular impuestos: Porcentaje de IVA no válido",
"data": null
}
Servicio Utilizado
IInvoiceTaxService - Servicio para cálculos específicos
- CalculateTotalInvoice(): Calcula el total de una factura
- CalculateTaxes(): Calcula los impuestos por líneas
🔧 Funcionalidades del Servicio
- Validación de datos: Verifica que las líneas sean válidas
- Procesamiento en memoria: Cálculos sin persistencia
- Agrupación inteligente: Agrupa líneas por tipo de IVA
- Cálculos precisos: Aplica fórmulas estándar de IVA
- Manejo de descuentos: Procesa descuentos por línea
- Redondeo estándar: Aplica reglas de redondeo
- Validación de resultados: Verifica consistencia de cálculos
- Cumplimiento normativo: Valida adherencia a leyes fiscales