Skip to main content

šŸ“‘ Compras


1. 🧩 Descripción General​

El módulo de Compras permite gestionar la adquisición de productos y servicios desde proveedores. Controla solicitudes, órdenes de compra, recepción de mercancía y conexión con inventarios y finanzas. Su propósito es asegurar el abastecimiento oportuno, con trazabilidad y control financiero.


2. 🧱 Modelos del Módulo​

a. PurchaseRequest​

  • id: integer (PK)
  • created_by: FK → User
  • status: enum (pendiente, autorizada, rechazada)
  • observations: text
  • requested_at: datetime

b. PurchaseRequestItem​

  • id: integer (PK)
  • purchase_request_id: FK → PurchaseRequest
  • product_id: FK → Product
  • quantity: decimal
  • unit: string

c. PurchaseOrder​

  • id: integer (PK)
  • provider_id: FK → Provider
  • requested_by: FK → User
  • status: enum (pendiente, enviada, parcial, completa, cancelada)
  • order_date: datetime
  • expected_date: datetime
  • subtotal, tax, total: decimal

d. PurchaseOrderItem​

  • id: integer (PK)
  • purchase_order_id: FK → PurchaseOrder
  • product_id: FK → Product
  • quantity_ordered: decimal
  • quantity_received: decimal
  • unit_price: decimal

e. PurchaseReceipt​

  • id: integer (PK)
  • purchase_order_id: FK → PurchaseOrder
  • received_by: FK → User
  • received_at: datetime
  • document: string (path o nĆŗmero de remisión)

f. PurchaseReceiptItem​

  • id: integer (PK)
  • purchase_receipt_id: FK → PurchaseReceipt
  • purchase_order_item_id: FK → PurchaseOrderItem
  • quantity_received: decimal
  • batch_number: string
  • expiry_date: date

3. šŸ” Funciones del Controlador​

  • index(): Listado de órdenes de compra.
  • store(): Crear orden desde solicitud o directa.
  • show($id): Detalle de una orden.
  • update($id): Editar orden (si no enviada).
  • destroy($id): Cancelar orden (si no completada).
  • receive(): Registrar recepción parcial o completa.
  • history(): Obtener historial de compras por proveedor/producto.
  • authorizeRequest(): Aprobar solicitud interna.

4. 🌐 Endpoints detallados y justificados​

MétodoRutaDescripciónJustificación
GET/api/purchase-ordersLista de órdenesControl de compras
POST/api/purchase-ordersCrear ordenRegistrar nuevas adquisiciones
GET/api/purchase-orders/{id}Ver detalleRevisión completa del pedido
PUT/api/purchase-orders/{id}EditarAjustes antes de enviar
DELETE/api/purchase-orders/{id}CancelarAnulación de orden no utilizada
POST/api/purchase-orders/{id}/receiveRegistrar recepciónEntrada a inventario + control de entrega
GET/api/purchase-orders/history/product/{product_id}Historial por productoTrazabilidad
GET/api/purchase-orders/history/provider/{provider_id}Historial por proveedorAnƔlisis de desempeƱo

5. šŸ–„ļø DiseƱo UX sugerido (flujo de usuario)​

PĆ”gina principal: "Ɠrdenes de Compra"​

  • Filtros: estado, proveedor, fechas
  • Tabla con órdenes recientes
  • Acciones:
    • Crear nueva orden
    • Ver detalle
    • Recibir productos

PĆ”gina: "Nueva Orden"​

  • Formulario:
    • Selección de proveedor
    • Fecha estimada
    • Productos y cantidades
  • Botón: Enviar/Guardar

PĆ”gina: "Recepción"​

  • Mostrar productos pendientes
  • Campos:
    • Cantidad recibida
    • Lote
    • Fecha de caducidad
  • Botón: Confirmar recepción

6. šŸ“„ Vistas sugeridas (tipo wireframe)​

VistaCampos sugeridosAcciones
Ɠrdenes#, proveedor, estado, fecha, totalVer, Recibir, Cancelar
Formulario ordenProveedor, productos, cantidades, preciosGuardar, Enviar
RecepciónProducto, cantidad pedida, recibida, loteConfirmar, Editar

7. šŸ”— Conexión Frontend ↔ API JSON:API​

Acción en FrontendMétodo/APIResultado esperado
Cargar órdenesGET /api/purchase-ordersMostrar listado
Crear ordenPOST /api/purchase-ordersAlta y redirección
Ver ordenGET /api/purchase-orders/{id}Detalles de productos
Editar ordenPUT /api/purchase-orders/{id}Actualizar info
CancelarDELETE /api/purchase-orders/{id}Estado = cancelada
Registrar recepciónPOST /api/purchase-orders/{id}/receiveActualiza existencias
Ver historialGET /api/purchase-orders/history/product/{id}Mostrar compras previas

🧩 Esta documentación conecta el backend de compras con el inventario, finanzas y proveedores. Su diseño permite operar eficientemente el flujo de adquisición y trazabilidad de insumos dentro del ERP.