← Volver a InvoiceLineController

🧮 Recálculo de Totales

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

Descripción General

El endpoint de Recálculo de Totales proporciona la funcionalidad para recalcular automáticamente todos los totales de una factura basándose en sus líneas. Este endpoint es esencial para mantener la consistencia de los datos después de modificaciones en las líneas de factura.

🎯 Propósito del Recálculo

  • Consistencia de datos: Asegura que los totales coincidan con las líneas
  • Automatización: Elimina la necesidad de cálculos manuales
  • Precisión: Garantiza cálculos exactos de importes e impuestos
  • Integridad: Mantiene la integridad referencial de la factura
  • Auditoría: Proporciona trazabilidad de cambios en totales
  • Eficiencia: Optimiza el rendimiento al recalcular solo cuando es necesario

Endpoint Detallado

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

Recalcula todos los totales de una factura específica. Este endpoint procesa todas las líneas de la factura y actualiza automáticamente los totales, descuentos e impuestos en la cabecera de la factura.
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 servicios:
  • context (WorkingDataContext): Contexto de base de datos inyectado
200 OK
Totales recalculados exitosamente
{ "isSuccess": true, "error": null, "data": true }
400 Bad Request
Error en el recálculo
{ "isSuccess": false, "error": "Error al recalcular totales: 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. Cálculo de subtotales: Sumar importes de todas las líneas
  4. Aplicación de descuentos: Calcular descuentos totales
  5. Cálculo de impuestos: Aplicar IVA y otros impuestos
  6. Actualización de cabecera: Modificar totales en la factura
  7. Validación final: Verificar consistencia de datos
  8. 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 impuestos: Se aplican las reglas de impuestos vigentes
  • Redondeo: Se aplican reglas de redondeo estándar

📊 Cálculos Realizados

Fórmulas de cálculo aplicadas:
  • Subtotal: Σ(Cantidad × Precio) de todas las líneas
  • Descuento Total: Σ(Descuentos por línea) + Descuentos generales
  • Base Imponible: Subtotal - Descuento Total
  • IVA: Base Imponible × Porcentaje IVA
  • Total Factura: Base Imponible + IVA
  • Total Líneas: Número total de líneas en la factura

📝 Ejemplo de Recálculo

Antes del recálculo:

  • Línea 1: 2 × 12.50 = 25.00
  • Línea 2: 1 × 8.00 = 8.00
  • Subtotal: 33.00
  • Descuento: 0.00
  • IVA: 6.93
  • Total: 39.93

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

  • Línea 1: 2 × 12.50 = 25.00
  • Línea 2: 2 × 8.00 = 16.00
  • Subtotal: 41.00
  • Descuento: 0.00
  • IVA: 8.61
  • Total: 49.61

🔍 Casos de Uso

📋 Escenarios de Aplicación

  • Después de modificar líneas: Recalcular tras cambios en cantidades o precios
  • Corrección de errores: Recalcular después de corregir datos incorrectos
  • Cambio de impuestos: Recalcular al cambiar tipos de IVA
  • Aplicación de descuentos: Recalcular al aplicar descuentos generales
  • Verificación de integridad: Validar que los totales sean correctos
  • Preparación de cierre: Recalcular antes de cerrar la factura

⚠️ 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

Servicio Utilizado

IInvoiceLineService - Servicio para el recálculo de totales
  • RecalculateInvoiceLines(): Recalcula todos los totales 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
  • Cálculos automáticos: Aplica fórmulas de cálculo estándar
  • Actualización de cabecera: Modifica los totales en la factura
  • Manejo de transacciones: Gestiona la transacción de base de datos
  • Validación de resultados: Verifica la consistencia final

🔒 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