← Volver a Back.API

InvoicePayController

Controlador para la gestión completa de pagos de facturas del restaurante

📊 Resumen del Controlador

2
Servicios Inyectados
4
Endpoints Totales
1
Categoría de Funcionalidad
CRUD
Operaciones Completas

El InvoicePayController es el controlador encargado de gestionar todos los aspectos relacionados con los pagos de facturas del restaurante. Proporciona una API RESTful completa con operaciones CRUD para la entidad FacturasCobro, incluyendo gestión de formas de pago, importes y transacciones financieras.

🎯 Funcionalidades Principales

  • Gestión CRUD completa de pagos de facturas (4 endpoints)
  • Consulta de pagos por factura específica
  • Agregar pagos a facturas existentes con retorno de datos
  • Actualizar pagos con validación de datos
  • Eliminar pagos de facturas
  • Múltiples formas de pago (efectivo, tarjeta, transferencia, etc.)
  • Pagos parciales y totales
  • Integración con sistemas externos (POS, apps móviles)
  • Manejo de transacciones con contexto de base de datos
  • Resultados tipados con ServiceResult para mejor control de errores

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • IInvoicePayService - Servicio principal de gestión de pagos de facturas
  • DbWorkingContextHelper - Helper para configuración de contexto de base de datos

⚠️ Parámetros de Conexión

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

  • 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

📋 Categorías de Endpoints

💰 Gestión de Pagos

Operaciones CRUD completas para la gestión de pagos de facturas
CRUD
Payments

Endpoints: 4 métodos

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

🔗 Estructura de Rutas

Ruta Base: /WorkingData/InvoicePay

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

Patrones de URL:

⚠️ Identificación de Pagos

Los pagos 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 de pago 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
  • Tuple Returns: Retorno de tuplas para operaciones complejas
  • FromQuery Parameters: Parámetros de conexión por query string

⚠️ Consideraciones de Seguridad

  • Todos los endpoints requieren parámetros de conexión a la base de datos
  • 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
  • Los pagos son transacciones financieras críticas, requiere auditoría completa
  • Verificación de integridad referencial con facturas
  • Validación de importes y formas de pago
  • Prevención de pagos duplicados

📝 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
  • Tuple Pattern: Retorno de múltiples valores
  • FromQuery Pattern: Parámetros de conexión por query
  • RESTful API Design: Diseño de API REST estándar

📈 Estadísticas Detalladas

152
Líneas de Código
1
Región de Código
4
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.

Propiedades principales del modelo FacturasCobro:
  • TipoDocumento (string): Tipo de documento (FACTURA, TICKET, etc.)
  • Serie (string): Serie del documento
  • Factura (double): Número de factura
  • Relacion (int): Número de relación de pago
  • Importe (decimal): Importe del pago
  • FormaPago (string): Forma de pago utilizada
  • FechaPago (DateTime): Fecha y hora del pago
  • Referencia (string): Referencia del pago (opcional)
  • Observaciones (string): Observaciones adicionales
  • Usuario (string): Usuario que realizó el pago

💰 Formas de Pago Soportadas

  • EFECTIVO: Pago en efectivo
  • TARJETA: Pago con tarjeta de crédito/débito
  • TRANSFERENCIA: Transferencia bancaria
  • CHEQUE: Pago con cheque
  • VALES: Vales de descuento o regalo
  • CREDITO: Pago a crédito
  • BIZUM: Pago móvil Bizum
  • OTROS: Otras formas de pago

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Pago completo: Pago del total de la factura en una sola transacción
  • Pagos parciales: Múltiples pagos para una misma factura
  • Corrección de pagos: Modificar detalles de un pago realizado
  • Cancelación de pagos: Eliminar pagos incorrectos
  • Consulta de pagos: Ver todos los pagos de una factura
  • Integración POS: Conectar con sistemas de punto de venta
  • Apps móviles: Procesar pagos desde aplicaciones móviles
  • Auditoría financiera: Revisar pagos para reportes contables