1. 🧩 Descripción General
El módulo de Facturación permite generar, registrar y controlar comprobantes fiscales (facturas) relacionados a ventas, anticipos, devoluciones o cargos. Se conecta con Ventas, Clientes, Finanzas y Producción para reflejar operaciones económicas reales con sustento legal.
2. 🧱 Modelos del Módulo
a. Invoice
id: integer (PK)
client_id: FK → Client
sales_order_id: FK → SalesOrder
date: date
folio: string (único)
status: enum (generada, timbrada, cancelada)
subtotal, tax, total: decimal
currency: string
payment_method: string
cfdi_use: string
xml_path: string
pdf_path: string
b. InvoiceItem
id: integer (PK)
invoice_id: FK → Invoice
product_id: FK → Product
description: string
quantity: decimal
unit_price: decimal
amount: decimal
c. CreditNote
id: integer (PK)
invoice_id: FK → Invoice
reason: text
amount: decimal
date: date
status: enum (emitida, aplicada)
3. 🔁 Funciones del Controlador
index(): Listar facturas.
store(): Generar factura desde pedido.
show($id): Ver detalle y archivos asociados.
cancel(): Solicitar cancelación.
generateCreditNote(): Emitir nota de crédito.
download(): Descargar XML o PDF.
4. 🌐 Endpoints detallados y justificados
| Método | Ruta | Descripción | Justificación |
|---|
| GET | /api/invoices | Listar facturas | Historial contable y fiscal |
| POST | /api/invoices | Generar factura | Desde pedido de venta |
| GET | /api/invoices/{id} | Detalle de factura | Ver campos y archivos |
| POST | /api/invoices/{id}/cancel | Cancelar | CFDi cancelación |
| POST | /api/invoices/{id}/credit-note | Nota de crédito | Corrección o devolución |
| GET | /api/invoices/{id}/download | Descargar | Archivos XML y PDF |
5. 🖥️ Diseño UX sugerido (flujo de usuario)
Página: "Facturas"
- Tabla con folio, cliente, fecha, monto, estado
- Filtros por periodo, cliente, estatus
- Acciones: Ver, Cancelar, Descargar
Página: "Detalle"
- Datos del CFDI
- Lista de productos facturados
- Botones: Descargar XML/PDF, Emitir Nota
6. 📄 Vistas sugeridas (tipo wireframe)
| Vista | Campos sugeridos | Acciones |
|---|
| Listado | Folio, cliente, fecha, total, estado | Ver, Descargar, Cancelar |
| Detalle | Cliente, productos, impuestos, archivos | Nota crédito, Descargar |
7. 🔗 Conexión Frontend ↔ API JSON:API
| Acción en Frontend | Método/API | Resultado esperado |
|---|
| Ver facturas | GET /api/invoices | Tabla |
| Emitir factura | POST /api/invoices | Crear desde pedido |
| Ver detalle | GET /api/invoices/{id} | Información fiscal |
| Cancelar | POST /api/invoices/{id}/cancel | Estado = cancelado |
| Nota de crédito | POST /api/invoices/{id}/credit-note | Corrección aplicada |
| Descargar archivos | GET /api/invoices/{id}/download | XML o PDF |
🧾 Este módulo formaliza las operaciones económicas del ERP, permitiendo el cumplimiento fiscal, control contable y generación automática de CFDI en conexión con SAT o servicios externos.