← Volver a InvoiceLineController

📄 Gestión de Líneas

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

Descripción General

Los endpoints de Gestión de Líneas proporcionan las operaciones fundamentales para administrar las líneas de factura del restaurante. Estos endpoints manejan el registro, consulta, actualización y eliminación de líneas de factura, incluyendo información de productos, cantidades, precios y cálculos automáticos.

🎯 Características de la Gestión de Líneas

  • Identificación compuesta: Cada línea se identifica por tipo, serie, factura y número de línea
  • Información de productos: Artículo, descripción, cantidad y precio
  • Cálculos automáticos: Importes, descuentos e IVA
  • Transacciones seguras: Uso de contexto de base de datos
  • Resultados estructurados: ServiceResult para manejo de errores
  • Validación de datos: Verificación de integridad de la información

Endpoints Disponibles

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

Obtiene todas las líneas de una factura específica por su tipo de documento, serie y número. Este endpoint permite recuperar la información completa de todas las líneas de 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 servicios:
  • context (WorkingDataContext): Contexto de base de datos inyectado
200 OK
Líneas de factura devueltas exitosamente
[ { "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "linea": 1, "articulo": "ART001", "cantidad": 2, "precio": 12.50, "importe": 25.00, "descuento": 0, "iva": 5.25, "descripcion": "Hamburguesa Clásica" }, { "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "linea": 2, "articulo": "ART002", "cantidad": 1, "precio": 8.00, "importe": 8.00, "descuento": 1.00, "iva": 1.47, "descripcion": "Refresco Cola" } ]
400 Bad Request
Error en la solicitud o factura no encontrada
{ "isSuccess": false, "error": "Factura no encontrada", "data": null }

POST /WorkingData/InvoiceLine

Agrega una nueva línea a una factura existente. Este endpoint permite añadir productos a una factura ya creada.
Body (JSON):
{ "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "linea": 3, "articulo": "ART003", "cantidad": 1, "precio": 15.00, "descuento": 0, "descripcion": "Ensalada César" }
Parámetros de servicios:
  • context (WorkingDataContext): Contexto de base de datos inyectado
200 OK
Línea agregada exitosamente
{ "isSuccess": true, "error": null, "data": true }
400 Bad Request
Error al agregar la línea
{ "isSuccess": false, "error": "Error al agregar línea: Artículo no válido", "data": false }

PUT /WorkingData/InvoiceLine

Actualiza una línea existente de una factura. Este endpoint permite modificar la información de una línea ya registrada.
Body (JSON):
{ "tipoDocumento": "FACTURA", "serie": "A", "factura": 1001, "linea": 1, "articulo": "ART001", "cantidad": 3, "precio": 12.50, "descuento": 2.50, "descripcion": "Hamburguesa Clásica" }
Parámetros de servicios:
  • context (WorkingDataContext): Contexto de base de datos inyectado
200 OK
Línea actualizada exitosamente
{ "isSuccess": true, "error": null, "data": true }
400 Bad Request
Error al actualizar la línea
{ "isSuccess": false, "error": "Error al actualizar línea: Línea no encontrada", "data": false }

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

Elimina una línea específica de una factura. Este endpoint permite remover un producto de una factura.
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 a eliminar
Parámetros de servicios:
  • context (WorkingDataContext): Contexto de base de datos inyectado
200 OK
Línea eliminada exitosamente
{ "isSuccess": true, "error": null, "data": true }
400 Bad Request
Error al eliminar la línea
{ "isSuccess": false, "error": "Error al eliminar línea: No se puede eliminar línea de factura pagada", "data": false }

Modelo de Datos - FacturaLinea

Propiedades 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 (calculado automáticamente)
  • Descuento (decimal): Descuento aplicado a la línea
  • IVA (decimal): Impuesto aplicable (calculado automáticamente)
  • Descripcion (string): Descripción del producto

📝 Cálculos Automáticos

  • Importe: Cantidad × Precio
  • Importe Neto: Importe - Descuento
  • IVA: Importe Neto × Porcentaje IVA
  • Total Línea: Importe Neto + IVA

Servicio Utilizado

IInvoiceLineService - Servicio principal para la gestión de líneas de factura
  • GetInvoiceLines(): Obtiene todas las líneas de una factura
  • AddInvoiceLine(): Agrega una nueva línea a una factura
  • UpdateInvoiceLine(): Actualiza una línea existente
  • DeleteInvoiceLine(): Elimina una línea específica

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Creación de facturas: Agregar productos a una factura nueva
  • Modificación de pedidos: Cambiar cantidades o productos
  • Corrección de errores: Eliminar líneas incorrectas
  • Consulta de detalles: Ver todos los productos de una factura
  • Auditoría: Revisar líneas para reportes
  • Gestión de descuentos: Aplicar descuentos por línea

🔒 Consideraciones de Seguridad

⚠️ Protección de Datos Fiscales

  • Auditoría completa: Todas las operaciones deben ser auditadas
  • No modificación de facturas pagadas: Restricción de cambios en facturas finalizadas
  • Validación de permisos: Solo usuarios autorizados pueden modificar líneas
  • Integridad de datos: Verificar que los totales coincidan con las líneas
  • Validación de artículos: Verificar que los artículos existan y estén activos