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
}
📊 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
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