← Volver a InvoicePayController

💰 Gestión de Pagos

Endpoints para la gestión CRUD completa de pagos de facturas del restaurante

Descripción General

Los endpoints de Gestión de Pagos proporcionan las operaciones fundamentales para administrar los pagos de facturas del restaurante. Estos endpoints manejan el registro, consulta, actualización y eliminación de pagos, incluyendo información de formas de pago, importes y transacciones financieras.

🎯 Características de la Gestión de Pagos

  • Identificación compuesta: Cada pago se identifica por tipo, serie, factura y relación
  • Múltiples formas de pago: Efectivo, tarjeta, transferencia, etc.
  • Pagos parciales: Soporte para múltiples pagos por factura
  • Transacciones seguras: Uso de contexto de base de datos
  • Resultados estructurados: ServiceResult para manejo de errores
  • Retorno de datos: Tuplas con estado y objeto modificado
  • Validación de datos: Verificación de integridad de la información
  • Integración externa: Compatible con POS y apps móviles

Endpoints Disponibles

GET /WorkingData/InvoicePay/{tipoDocumento}/{serie}/{factura}

Obtiene todos los pagos de una factura específica por su tipo de documento, serie y número. Este endpoint permite recuperar la información completa de todos los pagos realizados para una 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
Parámetros de consulta:
  • 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
200 OK
Pagos de factura devueltos exitosamente
[ { "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "relacion": 1, "importe": 25.00, "formaPago": "EFECTIVO", "fechaPago": "2024-01-15T14:30:00Z", "referencia": "", "observaciones": "Pago en efectivo", "usuario": "CAJERO01" }, { "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "relacion": 2, "importe": 15.00, "formaPago": "TARJETA", "fechaPago": "2024-01-15T14:31:00Z", "referencia": "TXN123456", "observaciones": "Pago con tarjeta Visa", "usuario": "CAJERO01" } ]
400 Bad Request
Error en la solicitud o factura no encontrada
{ "isSuccess": false, "error": "Factura no encontrada", "data": null }

POST /WorkingData/InvoicePay

Agrega un nuevo pago a una factura existente. Este endpoint permite añadir pagos a una factura ya creada, retornando tanto el estado de la operación como el objeto de pago insertado con campos autogenerados.
Body (JSON):
{ "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "importe": 40.00, "formaPago": "TARJETA", "referencia": "TXN789012", "observaciones": "Pago con tarjeta Mastercard", "usuario": "CAJERO01" }
Parámetros de consulta:
  • 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
200 OK
Pago agregado exitosamente
{ "added": true, "payment": { "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "relacion": 3, "importe": 40.00, "formaPago": "TARJETA", "fechaPago": "2024-01-15T15:00:00Z", "referencia": "TXN789012", "observaciones": "Pago con tarjeta Mastercard", "usuario": "CAJERO01" } }
400 Bad Request
Error al agregar el pago
{ "isSuccess": false, "error": "Error al agregar pago: Importe excede el total de la factura", "data": null }

PUT /WorkingData/InvoicePay

Actualiza un pago existente de una factura. Este endpoint permite modificar la información de un pago ya registrado, retornando tanto el estado de la operación como el objeto de pago actualizado.
Body (JSON):
{ "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "relacion": 2, "importe": 20.00, "formaPago": "TARJETA", "referencia": "TXN123456", "observaciones": "Pago con tarjeta Visa actualizado", "usuario": "CAJERO01" }
Parámetros de consulta:
  • 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
200 OK
Pago actualizado exitosamente
{ "updated": true, "payment": { "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "relacion": 2, "importe": 20.00, "formaPago": "TARJETA", "fechaPago": "2024-01-15T14:31:00Z", "referencia": "TXN123456", "observaciones": "Pago con tarjeta Visa actualizado", "usuario": "CAJERO01" } }
400 Bad Request
Error al actualizar el pago
{ "isSuccess": false, "error": "Error al actualizar pago: Pago no encontrado", "data": null }

DELETE /WorkingData/InvoicePay/{tipoDocumento}/{serie}/{factura}/{linea}

Elimina un pago específico de una factura. Este endpoint permite remover un pago de una factura, útil para corregir errores o cancelar pagos incorrectos.
Parámetros de ruta:
  • tipoDocumento (string, requerido): Tipo de documento
  • serie (string, requerido): Serie del documento
  • factura (double, requerido): Número de factura
  • linea (int, requerido): Número de línea de pago a eliminar
Parámetros de consulta:
  • 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
200 OK
Pago eliminado exitosamente
{ "isSuccess": true, "error": null, "data": true }
400 Bad Request
Error al eliminar el pago
{ "isSuccess": false, "error": "Error al eliminar pago: No se puede eliminar pago de factura cerrada", "data": false }

Modelo de Datos - FacturasCobro

Propiedades 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 (autogenerado)
  • Importe (decimal): Importe del pago
  • FormaPago (string): Forma de pago utilizada
  • FechaPago (DateTime): Fecha y hora del pago (autogenerado)
  • Referencia (string): Referencia del pago (opcional)
  • Observaciones (string): Observaciones adicionales
  • Usuario (string): Usuario que realizó el pago

💰 Formas de Pago Disponibles

  • 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

Servicio Utilizado

IInvoicePayService - Servicio principal para la gestión de pagos de facturas
  • GetInvoicePayments(): Obtiene todos los pagos de una factura
  • AddInvoicePayment(): Agrega un nuevo pago a una factura
  • UpdateInvoicePayment(): Actualiza un pago existente
  • DeleteInvoicePayment(): Elimina un pago específico

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Pago completo: Un solo pago por el total de la factura
  • Pagos parciales: Múltiples pagos para una misma factura
  • Corrección de errores: Modificar detalles de un pago incorrecto
  • Cancelación de pagos: Eliminar pagos duplicados o erróneos
  • 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
  • Gestión de devoluciones: Procesar devoluciones de pagos
  • Reportes de caja: Generar reportes de pagos por forma de pago

🔒 Consideraciones de Seguridad

⚠️ Protección de Transacciones Financieras

  • Auditoría completa: Todas las operaciones de pago deben ser auditadas
  • No modificación de facturas pagadas: Restricción de cambios en facturas finalizadas
  • Validación de permisos: Solo usuarios autorizados pueden procesar pagos
  • Integridad de datos: Verificar que los totales coincidan con los pagos
  • Validación de importes: Verificar que los pagos no excedan el total de la factura
  • Prevención de pagos duplicados: Validar referencias únicas
  • Encriptación de datos sensibles: Proteger información de tarjetas
  • Logs de transacciones: Mantener registro completo de todas las operaciones
  • Validación de formas de pago: Verificar que las formas de pago sean válidas
  • Control de acceso: Restringir acceso según roles de usuario