← Volver a InvoiceTaxController

📊 Cálculos Específicos

Endpoints para cálculos de totales e impuestos por líneas de factura

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 }

🧮 Proceso de Cálculo

📋 Pasos del Cálculo de Total

  1. Validación de líneas: Verificar que las líneas sean válidas
  2. Cálculo de subtotales: Sumar importes de todas las líneas
  3. Aplicación de descuentos: Restar descuentos por línea
  4. Agrupación por IVA: Agrupar líneas por tipo de IVA
  5. Cálculo de bases imponibles: Sumar importes netos por IVA
  6. Cálculo de impuestos: Aplicar porcentajes de IVA
  7. Suma de totales: Subtotal + Total IVA
  8. Redondeo final: Aplicar reglas de redondeo

📋 Pasos del Cálculo de Impuestos

  1. Validación de líneas: Verificar estructura y datos
  2. Identificación de tipos de IVA: Determinar IVAs únicos
  3. Agrupación por IVA: Agrupar líneas por porcentaje
  4. Cálculo de bases: Sumar importes netos por grupo
  5. Aplicación de IVA: Calcular importe de IVA por grupo
  6. Generación de resultados: Crear objetos FacturaIva
  7. Validación de resultados: Verificar cálculos

📊 Fórmulas de Cálculo

Fórmulas aplicadas:
  • Importe Neto por Línea: Importe - Descuento
  • Subtotal: Σ(Importe Neto de todas las líneas)
  • Base Imponible por IVA: Σ(Importe Neto de líneas con mismo IVA)
  • Importe IVA: Base Imponible × (Porcentaje IVA / 100)
  • Total IVA: Σ(Importe IVA de todos los tipos)
  • Total Factura: Subtotal + Total IVA

📝 Ejemplo de Cálculo Completo

Líneas de entrada:

  • Línea 1: 2 × 12.50€ = 25.00€ (IVA 21%, Descuento 0€)
  • Línea 2: 1 × 8.00€ = 8.00€ (IVA 10%, Descuento 1€)

Cálculos:

  • Importe Neto Línea 1: 25.00€ - 0€ = 25.00€
  • Importe Neto Línea 2: 8.00€ - 1€ = 7.00€
  • Subtotal: 25.00€ + 7.00€ = 32.00€
  • Base IVA 21%: 25.00€
  • Base IVA 10%: 7.00€
  • IVA 21%: 25.00€ × 0.21 = 5.25€
  • IVA 10%: 7.00€ × 0.10 = 0.70€
  • Total IVA: 5.25€ + 0.70€ = 5.95€
  • Total Factura: 32.00€ + 5.95€ = 37.95€

🔍 Casos de Uso

📋 Escenarios de Aplicación

  • Simulaciones de factura: Calcular totales antes de crear la factura
  • Validaciones en tiempo real: Verificar cálculos mientras se edita
  • Comparaciones: Comparar diferentes configuraciones de líneas
  • Auditoría de cálculos: Verificar que los totales sean correctos
  • Integración con POS: Calcular totales en sistemas de punto de venta
  • Apps móviles: Cálculos en dispositivos móviles
  • Reportes temporales: Generar reportes sin persistir datos
  • Testing: Probar diferentes escenarios de facturación
  • Validación de descuentos: Verificar impacto de descuentos en totales
  • Cálculos de presupuesto: Estimar costos antes de confirmar

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

🔒 Consideraciones de Seguridad

⚠️ Protección de Cálculos Fiscales

  • Validación de entrada: Verificar que los datos de líneas sean válidos
  • Límites de cálculo: Establecer límites para evitar cálculos excesivos
  • Validación de porcentajes: Verificar que los IVAs sean válidos
  • Prevención de overflow: Manejar números muy grandes
  • Validación de descuentos: Verificar que los descuentos sean razonables
  • Logs de cálculos: Registrar cálculos para auditoría
  • Rate limiting: Limitar frecuencia de cálculos
  • Validación de resultados: Verificar que los totales sean lógicos
  • Control de acceso: Restringir acceso según roles
  • Sanitización de datos: Limpiar datos de entrada