Ordenes de Compra
Lista de Ordenes de Compra

Detalle de Orden de Compra

Descripcion General
Las Ordenes de Compra (OC) son el documento formal emitido al proveedor para solicitar bienes o servicios. En el flujo de requisiciones de material, las OC se generan automaticamente desde un Analisis de Procura aprobado, agrupando los items por proveedor. Tambien pueden crearse directamente.
Generacion desde Analisis de Procura
Cuando un analisis de procura es aprobado con todos sus proveedores asignados, se pueden generar las OC automaticamente:
- Abra el analisis aprobado
- Haga clic en Generar Ordenes de Compra
- El sistema agrupa las asignaciones de proveedores (SupplierAllocation) por proveedor
- Se crea una OC por proveedor
- Cada OC incluye los items asignados a ese proveedor con cantidades y precios


Datos de la OC generada
| Campo | Valor |
|---|---|
| Codigo | Auto-generado: OC-{ANo}-{NNNN} (ej: OC-2026-0001) |
| Titulo | "OC desde {codigo_analisis} - {nombre_proveedor}" |
| Proveedor | Proveedor asignado en el analisis |
| Estado inicial | DRAFT |
| Tipo | PURCHASE |
| Moneda | USD |
| Subtotal | Suma de (cantidad x precio unitario) por item |
| Notas | "Generada desde analisis de procura {codigo}" |
Items de la OC
Cada item de la OC se crea con:
| Campo | Origen |
|---|---|
| Descripcion | ProcurementAnalysisItem.description |
| Cantidad | SupplierAllocation.allocatedQuantity |
| Unidad | ProcurementAnalysisItem.unit |
| Precio unitario | SupplierAllocation.unitPrice |
| Item de inventario | ProcurementAnalysisItem.inventoryItemId |
Endpoint: POST /api/procurement/analyses/:id/generate-purchase-orders
Trazabilidad
El analisis de procura almacena en su metadata los IDs y codigos de las OC generadas:
{
"purchaseOrderIds": ["uuid-oc-1", "uuid-oc-2"],
"purchaseOrderCodes": ["OC-2026-0001", "OC-2026-0002"],
"purchaseOrdersGeneratedAt": "2026-03-15T...",
"purchaseOrdersGeneratedBy": "uuid-usuario"
}
Estados de una Orden de Compra
| Estado | Codigo | Descripcion |
|---|---|---|
| Borrador | DRAFT | En elaboracion, editable |
| Aprobada | APPROVED | Aprobada internamente. Genera compromiso presupuestario |
| Enviada | SENT | Enviada formalmente al proveedor |
| Parcial | PARTIAL | Recibida parcialmente (al menos un item recibido) |
| Completada | COMPLETED | Recibida en su totalidad (todos los items al 100%) |
| Cancelada | CANCELLED | Cancelada. No se puede recibir material |
Transiciones automaticas de estado
| Evento | Transicion |
|---|---|
| Al recibir el primer item | APPROVED/SENT -> PARTIAL |
| Al recibir todos los items | PARTIAL -> COMPLETED |
| Al revertir una recepcion en OC completada | COMPLETED -> PARTIAL |
Crear una Orden de Compra (Manual)
Informacion General
| Campo | Requerido | Descripcion |
|---|---|---|
| Proveedor | Si | Proveedor seleccionado del catalogo |
| Moneda | Si | USD, VES u otra |
| Tasa de cambio | No | Para monedas distintas a la base |
| Proyecto | No | Proyecto al que se imputa la compra |
| Fecha de entrega esperada | No | Fecha de entrega acordada |
| Terminos de pago | No | Condiciones de pago con el proveedor |
| Notas | No | Instrucciones especiales al proveedor |
Lineas de la OC
| Campo | Requerido | Descripcion |
|---|---|---|
| Item de inventario | No | Articulo del catalogo (si aplica) |
| Descripcion | Si | Descripcion del bien o servicio |
| Cantidad | Si | Unidades a pedir |
| Unidad de medida | Si | UND, KG, LT, M, etc. |
| Precio unitario | Si | Precio acordado con el proveedor |
Aprobacion de OC
La aprobacion de una OC ejecuta el middleware de compromiso presupuestario:
- Se valida la OC
- Se crea el compromiso presupuestario contra la partida correspondiente
- El estado cambia a
APPROVED
Endpoint: POST /api/procurement/purchase-orders/:orderId/approve
Integracion Contable
| Evento | Asiento generado (via Outbox Pattern) |
|---|---|
| Recepcion de mercancia | Inventario D / Cuentas por Pagar C |
| Pago de factura | Cuentas por Pagar D / Banco C |
Los asientos se generan de forma confiable mediante el Outbox Pattern:
- Se escribe una entrada en la tabla
outboxdentro de la misma transaccion de recepcion - Un procesador batch procesa las entradas pendientes y genera los asientos contables
- Si el procesamiento inmediato falla, se reintenta en el siguiente ciclo
Referencia API
| Endpoint | Metodo | Permiso | Descripcion |
|---|---|---|---|
/api/procurement/purchase-orders | GET | procurement:read | Listar ordenes de compra |
/api/procurement/purchase-orders | POST | procurement:create | Crear OC manualmente |
/api/procurement/purchase-orders/:orderId | GET | procurement:read | Detalle de OC |
/api/procurement/purchase-orders/:orderId | PUT | procurement:update | Actualizar OC |
/api/procurement/purchase-orders/:orderId/approve | POST | procurement:approve | Aprobar OC |
/api/procurement/purchase-orders/:orderId/send | POST | procurement:update | Enviar al proveedor |
/api/procurement/purchase-orders/:orderId/cancel | POST | procurement:approve | Cancelar OC |
Ver tambien: Recepciones | Facturas de Proveedor | Pagos a Proveedores