Saltar al contenido principal

Ordenes de Compra

Lista de Ordenes de Compra

Listado de ordenes de compra con estados y montos

Detalle de Orden de Compra

Detalle de una orden de compra con lineas y recepciones


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:

  1. Abra el analisis aprobado
  2. Haga clic en Generar Ordenes de Compra
  3. El sistema agrupa las asignaciones de proveedores (SupplierAllocation) por proveedor
  4. Se crea una OC por proveedor
  5. Cada OC incluye los items asignados a ese proveedor con cantidades y precios

Detalle de generacion de OC

OC generada exitosamente

Datos de la OC generada

CampoValor
CodigoAuto-generado: OC-{ANo}-{NNNN} (ej: OC-2026-0001)
Titulo"OC desde {codigo_analisis} - {nombre_proveedor}"
ProveedorProveedor asignado en el analisis
Estado inicialDRAFT
TipoPURCHASE
MonedaUSD
SubtotalSuma 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:

CampoOrigen
DescripcionProcurementAnalysisItem.description
CantidadSupplierAllocation.allocatedQuantity
UnidadProcurementAnalysisItem.unit
Precio unitarioSupplierAllocation.unitPrice
Item de inventarioProcurementAnalysisItem.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

EstadoCodigoDescripcion
BorradorDRAFTEn elaboracion, editable
AprobadaAPPROVEDAprobada internamente. Genera compromiso presupuestario
EnviadaSENTEnviada formalmente al proveedor
ParcialPARTIALRecibida parcialmente (al menos un item recibido)
CompletadaCOMPLETEDRecibida en su totalidad (todos los items al 100%)
CanceladaCANCELLEDCancelada. No se puede recibir material

Transiciones automaticas de estado

EventoTransicion
Al recibir el primer itemAPPROVED/SENT -> PARTIAL
Al recibir todos los itemsPARTIAL -> COMPLETED
Al revertir una recepcion en OC completadaCOMPLETED -> PARTIAL

Crear una Orden de Compra (Manual)

Informacion General

CampoRequeridoDescripcion
ProveedorSiProveedor seleccionado del catalogo
MonedaSiUSD, VES u otra
Tasa de cambioNoPara monedas distintas a la base
ProyectoNoProyecto al que se imputa la compra
Fecha de entrega esperadaNoFecha de entrega acordada
Terminos de pagoNoCondiciones de pago con el proveedor
NotasNoInstrucciones especiales al proveedor

Lineas de la OC

CampoRequeridoDescripcion
Item de inventarioNoArticulo del catalogo (si aplica)
DescripcionSiDescripcion del bien o servicio
CantidadSiUnidades a pedir
Unidad de medidaSiUND, KG, LT, M, etc.
Precio unitarioSiPrecio acordado con el proveedor

Aprobacion de OC

La aprobacion de una OC ejecuta el middleware de compromiso presupuestario:

  1. Se valida la OC
  2. Se crea el compromiso presupuestario contra la partida correspondiente
  3. El estado cambia a APPROVED

Endpoint: POST /api/procurement/purchase-orders/:orderId/approve


Integracion Contable

EventoAsiento generado (via Outbox Pattern)
Recepcion de mercanciaInventario D / Cuentas por Pagar C
Pago de facturaCuentas por Pagar D / Banco C

Los asientos se generan de forma confiable mediante el Outbox Pattern:

  1. Se escribe una entrada en la tabla outbox dentro de la misma transaccion de recepcion
  2. Un procesador batch procesa las entradas pendientes y genera los asientos contables
  3. Si el procesamiento inmediato falla, se reintenta en el siguiente ciclo

Referencia API

EndpointMetodoPermisoDescripcion
/api/procurement/purchase-ordersGETprocurement:readListar ordenes de compra
/api/procurement/purchase-ordersPOSTprocurement:createCrear OC manualmente
/api/procurement/purchase-orders/:orderIdGETprocurement:readDetalle de OC
/api/procurement/purchase-orders/:orderIdPUTprocurement:updateActualizar OC
/api/procurement/purchase-orders/:orderId/approvePOSTprocurement:approveAprobar OC
/api/procurement/purchase-orders/:orderId/sendPOSTprocurement:updateEnviar al proveedor
/api/procurement/purchase-orders/:orderId/cancelPOSTprocurement:approveCancelar OC

Ver tambien: Recepciones | Facturas de Proveedor | Pagos a Proveedores