← Volver a Back.API

InvoiceLineController

Controlador para la gestión completa de líneas de factura del restaurante

📊 Resumen del Controlador

2
Servicios Inyectados
5
Endpoints Totales
2
Categorías de Funcionalidad
CRUD
Operaciones Completas

El InvoiceLineController es el controlador encargado de gestionar todos los aspectos relacionados con las líneas de factura del restaurante. Proporciona una API RESTful completa con operaciones CRUD para la entidad FacturaLinea, incluyendo gestión de productos, cantidades, precios y recálculos automáticos.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de líneas de factura (4 endpoints)
  • Consulta de líneas por factura específica
  • Agregar líneas a facturas existentes
  • Actualizar líneas con nuevos datos
  • Eliminar líneas de facturas
  • Recálculo automático de totales (1 endpoint específico)
  • Manejo de transacciones con contexto de base de datos
  • Resultados tipados con ServiceResult para mejor control de errores

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • IInvoiceLineService - Servicio principal de gestión de líneas de factura
  • DbWorkingContextHelper - Helper para configuración de contexto de base de datos

⚠️ Contexto de Base de Datos

Todos los endpoints utilizan WorkingDataContext inyectado a través de [FromServices], lo que proporciona:

  • Transacciones automáticas para operaciones complejas
  • Gestión de conexiones optimizada
  • Consistencia de datos en operaciones múltiples
  • Rollback automático en caso de errores

📋 Categorías de Endpoints

📄 Gestión de Líneas

Operaciones CRUD completas para la gestión de líneas de factura
CRUD
Core

Endpoints: 4 métodos

  • GET /{tipoDocumento}/{serie}/{factura}
  • POST /
  • PUT /
  • DELETE /{tipoDocumento}/{serie}/{factura}/{linea}
Ver detalles →

🧮 Recálculo de Totales

Recálculo automático de totales de factura
Calculation
Automation

Endpoints: 1 método

  • POST /{tipoDocumento}/{serie}/{factura}/recalculate
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /WorkingData/InvoiceLine

Todos los endpoints del controlador están bajo la ruta /WorkingData/InvoiceLine, lo que indica que maneja datos de trabajo del sistema.

Patrones de URL por Categoría:

⚠️ Identificación de Líneas

Las líneas de factura se identifican mediante cuatro parámetros:

  • tipoDocumento (string): Tipo de documento (ej: "FACTURA", "TICKET")
  • serie (string): Serie del documento
  • factura (double): Número de factura
  • linea (int): Número de línea dentro de la factura

📊 Códigos de Respuesta

✅ 200 - OK

Operación exitosa, datos devueltos correctamente

Usado en: GET, POST, PUT, DELETE exitosos

❌ 400 - Bad Request

Error en la solicitud o validación

Usado en: Errores de validación o lógica de negocio

📝 Nota sobre Códigos de Respuesta

Este controlador utiliza ServiceResult para manejar resultados, por lo que todos los endpoints devuelven 200 (éxito) o 400 (error), con la información detallada del resultado en el cuerpo de la respuesta.

🔍 Características Técnicas

🎯 Características del Controlador

  • Async/Await: Todos los métodos son asíncronos para mejor rendimiento
  • Swagger Documentation: Documentación completa con Swagger/OpenAPI
  • ServiceResult Pattern: Manejo estructurado de resultados y errores
  • Dependency Injection: Inyección de servicios + helper de contexto
  • RESTful Design: Diseño REST completo con verbos HTTP apropiados
  • Type Safety: Uso de tipos fuertemente tipados para respuestas
  • Constructor Injection: Inyección de dependencias por constructor
  • Context Management: Gestión automática de contexto de base de datos
  • FromServices Injection: Inyección de contexto a través de servicios

⚠️ Consideraciones de Seguridad

  • Todos los endpoints requieren contexto de base de datos válido
  • Los errores se manejan a través de ServiceResult sin exponer información sensible
  • Se recomienda implementar autenticación y autorización adicional
  • Validación de entrada en todos los endpoints POST/PUT
  • Las líneas de factura son parte de documentos legales, requiere auditoría
  • Verificación de integridad referencial con cabeceras de factura

📝 Patrones de Diseño Utilizados

  • ServiceResult Pattern: Manejo estructurado de resultados
  • Repository Pattern: Acceso a datos a través de servicios
  • Dependency Injection: Inversión de control para servicios
  • Async/Await Pattern: Programación asíncrona
  • Context Pattern: Gestión de contexto de base de datos
  • FromServices Pattern: Inyección de servicios en métodos
  • RESTful API Design: Diseño de API REST estándar

📈 Estadísticas Detalladas

139
Líneas de Código
1
Región de Código
5
Métodos Públicos
4
Verbos HTTP

Distribución de Métodos HTTP:

📋 Modelo de Datos - FacturaLinea

Propiedades principales del modelo FacturaLinea:
  • TipoDocumento (string): Tipo de documento (FACTURA, TICKET, etc.)
  • Serie (string): Serie del documento
  • Factura (double): Número de factura
  • Linea (int): Número de línea dentro de la factura
  • Articulo (string): Código del artículo/producto
  • Cantidad (decimal): Cantidad del producto
  • Precio (decimal): Precio unitario del producto
  • Importe (decimal): Importe total de la línea (cantidad × precio)
  • Descuento (decimal): Descuento aplicado a la línea
  • IVA (decimal): Impuesto aplicable
  • Descripcion (string): Descripción del producto

📝 Cálculos Automáticos

  • Importe: Se calcula automáticamente como Cantidad × Precio
  • Descuentos: Se aplican sobre el importe base
  • IVA: Se calcula sobre el importe neto
  • Totales: Se recalculan automáticamente al modificar líneas