← Volver a InvoiceTaxController

🧮 Recálculo de Impuestos

Endpoint para el recálculo automático de impuestos de factura

Descripción General

El endpoint de Recálculo de Impuestos proporciona la funcionalidad para recalcular automáticamente todos los impuestos de una factura basándose en sus líneas y configuraciones de IVA. Este endpoint es esencial para mantener la consistencia de los datos fiscales después de modificaciones en las líneas de factura o cambios en los tipos de IVA.

🎯 Propósito del Recálculo

  • Consistencia fiscal: Asegura que los impuestos coincidan con las líneas de factura
  • Automatización: Elimina la necesidad de cálculos manuales de impuestos
  • Precisión: Garantiza cálculos exactos de IVA según normativa vigente
  • Integridad: Mantiene la integridad referencial de los datos fiscales
  • Auditoría: Proporciona trazabilidad de cambios en impuestos
  • Cumplimiento: Asegura adherencia a normativas fiscales

Endpoint Detallado

POST /WorkingData/InvoiceTax/{tipoDocumento}/{serie}/{factura}/recalculate

Recalcula todos los impuestos de una factura específica. Este endpoint procesa todas las líneas de la factura y actualiza automáticamente los impuestos según los tipos de IVA aplicables.
Parámetros de ruta:
  • tipoDocumento (string, requerido): Tipo de documento (ej: "FACTURA", "TICKET")
  • serie (string, requerido): Serie del documento
  • factura (double, requerido): Número de factura a recalcular
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
Impuestos recalculados exitosamente
{ "isSuccess": true, "error": null, "data": true }
400 Bad Request
Error en el recálculo
{ "isSuccess": false, "error": "Error al recalcular impuestos: Factura no encontrada", "data": false }

🧮 Proceso de Recálculo

📋 Pasos del Recálculo Automático

  1. Validación inicial: Verificar que la factura existe y está en estado editable
  2. Lectura de líneas: Obtener todas las líneas de la factura
  3. Identificación de tipos de IVA: Determinar qué tipos de IVA se aplican
  4. Agrupación por IVA: Agrupar líneas por porcentaje de IVA
  5. Cálculo de bases imponibles: Sumar importes por tipo de IVA
  6. Cálculo de impuestos: Aplicar porcentajes de IVA a las bases
  7. Actualización de impuestos: Modificar registros de impuestos en la factura
  8. Validación final: Verificar consistencia de datos fiscales
  9. Confirmación: Confirmar transacción si todo es correcto

⚠️ Consideraciones del Recálculo

  • Transacción atómica: Todo el proceso se ejecuta en una sola transacción
  • Rollback automático: Si hay error, se revierten todos los cambios
  • Estado de factura: Solo facturas en estado editable pueden recalcularse
  • Líneas válidas: Solo se consideran líneas activas y válidas
  • Configuración de IVA: Se aplican las reglas de IVA vigentes
  • Redondeo: Se aplican reglas de redondeo estándar
  • Validación normativa: Se verifica cumplimiento de leyes fiscales

📊 Cálculos Realizados

Fórmulas de cálculo aplicadas:
  • 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
  • Tipos de IVA únicos: Número de tipos de IVA diferentes

📝 Ejemplo de Recálculo

Antes del recálculo:

  • Línea 1: 50.00€ (IVA 21%) → Base: 50.00€, IVA: 10.50€
  • Línea 2: 30.00€ (IVA 10%) → Base: 30.00€, IVA: 3.00€
  • Total IVA: 13.50€

Después de modificar Línea 1 (cantidad = 2):

  • Línea 1: 100.00€ (IVA 21%) → Base: 100.00€, IVA: 21.00€
  • Línea 2: 30.00€ (IVA 10%) → Base: 30.00€, IVA: 3.00€
  • Total IVA: 24.00€

🔍 Casos de Uso

📋 Escenarios de Aplicación

  • Después de modificar líneas: Recalcular tras cambios en cantidades o precios
  • Cambio de tipos de IVA: Recalcular al cambiar porcentajes de IVA
  • Corrección de errores: Recalcular después de corregir datos incorrectos
  • Aplicación de descuentos: Recalcular al aplicar descuentos que afecten IVA
  • Verificación de integridad: Validar que los impuestos sean correctos
  • Preparación de cierre: Recalcular antes de cerrar la factura
  • Auditoría fiscal: Verificar cálculos para reportes
  • Cumplimiento normativo: Asegurar adherencia a leyes fiscales

⚠️ Cuándo NO usar el recálculo

  • Facturas pagadas: No recalcular facturas ya finalizadas
  • Facturas anuladas: No recalcular facturas canceladas
  • Sin cambios: No recalcular si no hay modificaciones
  • Procesamiento en lote: Evitar múltiples recálculos simultáneos
  • Facturas con auditoría pendiente: No recalcular si hay auditoría en curso

Servicio Utilizado

IInvoiceTaxService - Servicio para el recálculo de impuestos
  • RecalculateInvoiceTaxes(): Recalcula todos los impuestos de una factura

🔧 Funcionalidades del Servicio

  • Validación de factura: Verifica que la factura existe y es editable
  • Procesamiento de líneas: Lee y procesa todas las líneas activas
  • Agrupación por IVA: Agrupa líneas por tipo de IVA
  • Cálculos automáticos: Aplica fórmulas de cálculo estándar
  • Actualización de impuestos: Modifica los impuestos en la factura
  • Manejo de transacciones: Gestiona la transacción de base de datos
  • Validación de resultados: Verifica la consistencia final
  • Cumplimiento normativo: Valida adherencia a leyes fiscales

🔒 Consideraciones de Seguridad

⚠️ Protección de Datos Fiscales

  • Auditoría obligatoria: Todos los recálculos deben ser auditados
  • Permisos específicos: Solo usuarios autorizados pueden recalcular
  • Validación de estado: Verificar que la factura esté en estado editable
  • Integridad de datos: Asegurar que los cálculos sean precisos
  • Prevención de conflictos: Evitar recálculos simultáneos
  • Backup de datos: Mantener respaldo antes de recálculos masivos
  • Validación normativa: Verificar cumplimiento de leyes fiscales
  • Logs de transacciones: Mantener registro completo de recálculos
  • Control de acceso: Restringir acceso según roles de usuario
  • Validación de resultados: Verificar que los totales sean correctos