Skip to content

📄 Registrar Nueva Factura

Permite registrar una nueva factura en el sistema, vinculándola a un pedido (order) existente. Recibe el orderId y el archivo PDF como multipart/form-data.

POST

/api/invoices/register Sin Auth No requiere JWT


  1. Validación del archivo — Verifica que se haya enviado el campo invoicePdf. Si falta, responde 400.

  2. Validación del body — Comprueba que orderId esté presente en el body.

  3. Comprobación de duplicado — Verifica que no exista ya una factura para ese pedido. Si existe, lanza error 400.

  4. Búsqueda del pedido — Localiza el Order en Strapi por numberOrder, incluyendo el usuario relacionado.

  5. Subida del PDF — Sube el archivo a la Media Library de Strapi mediante uploadFile.

  6. Creación de la factura — Crea el registro Invoice con invoiceId, order, user, file y date.

  7. Respuesta — Retorna los datos de la factura recién creada.


POST /api/invoices/register
Content-Type: multipart/form-data
CampoTipoRequeridoDescripción
orderIdstringIdentificador del pedido (numberOrder en la colección Order)
invoicePdffileArchivo PDF de la factura
{
"message": "Invoice registered successfully",
"invoice": {
"invoiceId": "ORD-2024-001",
"date": "2024-03-15",
"order": 42,
"user": 7,
"file": 15
}
}
const formData = new FormData();
formData.append("orderId", "ORD-2024-001");
formData.append("invoicePdf", pdfFile); // File object
const response = await fetch("/api/invoices/register", {
method: "POST",
body: formData,
});
const data = await response.json();
console.log("Factura registrada:", data.invoice.invoiceId);

ArchivoRol
src/api/invoice/controllers/invoice.tsControlador — valida inputs y llama al servicio
src/api/invoice/services/invoice.tsServicio — lógica de negocio y persistencia
src/api/invoice/routes/custom-invoice.tsDefinición de la ruta
src/utils/uploadFile.tsUtilidad para subir archivos a la Media Library
src/api/invoice/content-types/invoice/schema.jsonEsquema del content type Invoice