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étodo | Ruta | Descripción | Justificación |
|---|
| GET | /api/purchase-orders | Lista de órdenes | Control de compras |
| POST | /api/purchase-orders | Crear orden | Registrar nuevas adquisiciones |
| GET | /api/purchase-orders/{id} | Ver detalle | Revisión completa del pedido |
| PUT | /api/purchase-orders/{id} | Editar | Ajustes antes de enviar |
| DELETE | /api/purchase-orders/{id} | Cancelar | Anulación de orden no utilizada |
| POST | /api/purchase-orders/{id}/receive | Registrar recepción | Entrada a inventario + control de entrega |
| GET | /api/purchase-orders/history/product/{product_id} | Historial por producto | Trazabilidad |
| GET | /api/purchase-orders/history/provider/{provider_id} | Historial por proveedor | AnƔ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)ā
| Vista | Campos sugeridos | Acciones |
|---|
| Ćrdenes | #, proveedor, estado, fecha, total | Ver, Recibir, Cancelar |
| Formulario orden | Proveedor, productos, cantidades, precios | Guardar, Enviar |
| Recepción | Producto, cantidad pedida, recibida, lote | Confirmar, Editar |
7. š Conexión Frontend ā API JSON:APIā
| Acción en Frontend | Método/API | Resultado esperado |
|---|
| Cargar órdenes | GET /api/purchase-orders | Mostrar listado |
| Crear orden | POST /api/purchase-orders | Alta y redirección |
| Ver orden | GET /api/purchase-orders/{id} | Detalles de productos |
| Editar orden | PUT /api/purchase-orders/{id} | Actualizar info |
| Cancelar | DELETE /api/purchase-orders/{id} | Estado = cancelada |
| Registrar recepción | POST /api/purchase-orders/{id}/receive | Actualiza existencias |
| Ver historial | GET /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.