← Volver a Back.API

InvoiceController

Controlador completo para la gestión de facturas, pagos y operaciones relacionadas con la facturación del restaurante

📊 Resumen del Controlador

3
Servicios Inyectados
18
Endpoints Totales
6
Categorías de Operaciones
CRUD
Operaciones Completas

El InvoiceController es el controlador especializado en la gestión completa de facturas del sistema RestMaster, encargado de crear, consultar y administrar facturas, incluyendo la creación desde mesas, gestión de pagos y búsquedas avanzadas. Proporciona una API RESTful completa con operaciones especializadas para el manejo de facturación.

🎯 Funcionalidades Principales

  • Creación de facturas desde datos de mesa (4 endpoints)
  • Gestión de facturas múltiples para división de cuentas (2 endpoints)
  • Búsqueda y consulta de facturas con filtros avanzados (2 endpoints)
  • Gestión de cabeceras de facturas (2 endpoints)
  • Gestión de líneas e IVAs de facturas (2 endpoints)
  • Gestión de pagos y cobros (3 endpoints)
  • Operaciones especializadas como cierre y limpieza (3 endpoints)

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • IInvoiceService - Servicio principal de facturas
  • ILogger<InvoiceController> - Logging de errores y eventos
  • IValidator<InvoiceQueryParams> - Validación de parámetros de consulta

⚠️ Parámetros de Conexión

Todos los endpoints requieren los siguientes parámetros de conexión a la base de datos:

  • initialCatalog (string): 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

📋 Categorías de Endpoints

📄 Creación de Facturas

Creación de facturas desde datos de mesa y números de mesa
Create
Core

Endpoints: 4 métodos

  • POST /from-table
  • POST /from-table-number
  • POST /multiple
  • POST /multiple/table
Ver detalles →

🔍 Búsqueda y Consulta

Búsqueda avanzada y consulta de facturas con filtros
Search
Query

Endpoints: 2 métodos

  • GET /search
  • POST /invoices/by-filter
Ver detalles →

📋 Gestión de Cabeceras

Consulta y gestión de cabeceras de facturas
Headers
Read

Endpoints: 2 métodos

  • GET /headers
  • GET /headers/by-serie-factura
Ver detalles →

📝 Gestión de Líneas e IVAs

Consulta de líneas de factura e impuestos
Lines
Taxes

Endpoints: 2 métodos

  • GET /lines/by-serie-factura
  • GET /ivas/by-serie-factura
Ver detalles →

💰 Gestión de Pagos

Gestión completa de pagos y cobros de facturas
Payments
CRUD

Endpoints: 3 métodos

  • GET /payments/all
  • GET /payments/by-serie-factura
  • POST /add-payment
Ver detalles →

📄 Facturas Múltiples con Datos

Creación de múltiples facturas con datos completos de tabla
Multiple
Table

Endpoints: 1 método

  • POST /multiple/table
Ver detalles →

💰 Factura con Pagos Predefinidos

Creación de facturas con pagos inmediatos desde número de mesa
Payment
Immediate

Endpoints: 1 método

  • POST /from-table-number-with-payments
Ver detalles →

🔧 Operaciones Especializadas

Operaciones avanzadas como cierre y consultas por serie/fecha
Special
Advanced

Endpoints: 5 métodos

  • GET /invoices/by-serie
  • GET /invoices/by-serie-factura
  • GET /invoices/by-date-range
  • GET /headers
  • GET /headers/by-serie-factura
  • GET /lines/by-serie-factura
  • GET /ivas/by-serie-factura
  • PUT /close-and-clear
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /WorkingData/Invoice

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

Patrones de URL por Categoría:

📊 Códigos de Respuesta

✅ 200 - OK

Operación exitosa, datos devueltos correctamente

Usado en: GET, PUT, DELETE exitosos

✅ 201 - Created

Recurso creado exitosamente

Usado en: POST exitosos

❌ 400 - Bad Request

Datos de entrada inválidos o errores de validación

Usado en: Errores de validación y datos incorrectos

❌ 500 - Internal Server Error

Error interno del servidor

Usado en: Errores de excepción no controlados

🔍 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
  • Error Handling: Manejo centralizado de excepciones con logging
  • Dependency Injection: Inyección de 3 servicios diferentes + logger
  • 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
  • Logging: Logging estructurado de errores y eventos
  • Validation: Validación de parámetros con FluentValidation

⚠️ Consideraciones de Seguridad

  • Todos los endpoints requieren parámetros de conexión a la base de datos
  • Los errores internos se loguean pero no exponen información sensible
  • Se recomienda implementar autenticación y autorización adicional
  • Validación de entrada en todos los endpoints POST/PUT
  • Validación de parámetros de consulta con FluentValidation

📝 Patrones de Diseño Utilizados

  • 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
  • Error Handling Pattern: Manejo centralizado de errores
  • RESTful API Design: Diseño de API REST estándar
  • Validation Pattern: Validación de entrada con FluentValidation

📈 Estadísticas Detalladas

856
Líneas de Código
6
Regiones de Código
18
Métodos Públicos
4
Verbos HTTP

Distribución de Métodos HTTP:

📋 Modelo de Datos - FacturasCobro

Nota: El campo Fecha es obligatorio. Si no se envía en la petición, el sistema asigna automáticamente la fecha y hora actual del servidor al guardar el cobro.