Purchase Orders

Configuration

Learn how to configure purchase order statuses, workflows, reorder settings, deliveries, and automation in Omnium. This guide covers all purchase order configuration options for administrators and developers.

Purchase order statuses

Purchase orders follow a configurable status workflow, similar to order types. Each status defines a step in the purchase order lifecycle, and can be configured with workflow steps that execute automatically when a purchase order enters that status.

Omnium includes a set of built-in status names that are used by default: New, InProgress, Completed, OnHold, OrderCanceled, and Deleted. You can override these or define entirely custom statuses to match your procurement workflow.

Purchase order status model

PropertyTypeDescription
Name *stringUnique status name identifier
Order *intSort order index defining the workflow sequence
DisplayNamestringUser-facing display name in the UI
TranslateKeystringTranslation key for localized display
IsMainFilterboolShow this status as a main filter option in the purchase order list
IsCanceledStatusboolMark orders with this status as canceled
IsConfirmedStatusboolMark orders with this status as confirmed with the supplier
IsCompletedboolMark orders with this status as completed
IsReadOnlyboolPrevent editing of purchase orders in this status
WorkflowStepsList<WorkflowStep>Workflow steps to execute when entering this status
EnabledForTagsList<string>Only show this status for purchase orders with these tags. If empty, the status is available for all purchase orders.
DisabledForTagsList<string>Hide this status for purchase orders with these tags. Overrides EnabledForTags.

Workflow steps

Workflow steps on purchase order statuses follow the same model as order workflow steps.

PropertyTypeDescription
Name *stringWorkflow step name
Connector *stringConnector to use for the workflow step
ActiveboolWhether the step should run
RunAfterOrderIsSavedboolRun the step after the purchase order is saved
ContinueOnErrorboolContinue the workflow if this step fails
TranslateKeystringTranslation key for the workflow step name
IsInvisibleboolHide the result from the UI

Available workflow actions

These are the built-in workflow actions available for purchase order statuses:

ActionGroupDescription
NotificationNotificationsSend notifications when a purchase order enters a status
ReleaseSuggestionsInventoryRelease reorder suggestions associated with the purchase order
ExportPurchaseOrderExportExport the purchase order to all configured purchase order export connectors
SetExpectedDeliveryDateEnrichSet the expected delivery date based on supplier settings or default values
RecalculateAtpValuesEnrichRecalculate Available-to-Promise (ATP) values for inventories included in the purchase order
ExportDeliveriesExportExport deliveries connected to the purchase order to configured delivery export connectors
ValidateOnErrorsValidationCheck the purchase order for errors. If errors are found, the workflow stops and does not proceed further.
CreateOrderFromPurchaseOrderModifyCreate an order from the purchase order, using the supplier as the store. Only works if the supplier is configured as a store in Omnium. Requires OrderType and MarketId properties.
AddSupplierTagsToOrdersExportCopy all tags from the supplier to the purchase order
EnrichLineItemsWithComponentsEnrichAutomatically enrich line items with product components by matching SKUs

Sample

"PurchaseOrderSettings": {
  "PurchaseOrderStatuses": [
    {
      "Name": "New",
      "DisplayName": "New",
      "Order": 1,
      "IsMainFilter": true,
      "WorkflowSteps": [
        {
          "Name": "ValidateOnErrors",
          "Active": true
        }
      ]
    },
    {
      "Name": "Confirmed",
      "DisplayName": "Confirmed",
      "Order": 2,
      "IsMainFilter": true,
      "IsConfirmedStatus": true,
      "WorkflowSteps": [
        {
          "Name": "ExportPurchaseOrder",
          "Active": true
        },
        {
          "Name": "SetExpectedDeliveryDate",
          "Active": true
        }
      ]
    },
    {
      "Name": "InProgress",
      "DisplayName": "In Progress",
      "Order": 3,
      "IsMainFilter": true,
      "WorkflowSteps": []
    },
    {
      "Name": "Completed",
      "DisplayName": "Completed",
      "Order": 4,
      "IsMainFilter": true,
      "IsCompleted": true,
      "IsReadOnly": true,
      "WorkflowSteps": [
        {
          "Name": "RecalculateAtpValues",
          "Active": true
        }
      ]
    },
    {
      "Name": "OrderCanceled",
      "DisplayName": "Canceled",
      "Order": 5,
      "IsCanceledStatus": true,
      "IsReadOnly": true,
      "WorkflowSteps": []
    }
  ]
}

General settings

These settings control calculations used for reorder planning and inventory cost analysis.

PropertyTypeDefaultDescription
StorageCostPercentdecimal0Storage cost as a percentage of inventory value. Used in inventory carrying cost calculations for reorder planning.
AverageDailyUsageDaysint0Number of historical days to use when calculating average daily usage (ADU) for products. A higher value provides a more stable average but is less responsive to recent demand changes.
LeadTimeSafetyMarginDaysint0Additional safety margin in days added to the supplier lead time. Accounts for variability in delivery times to reduce stockout risk.
DefaultAverageLeadTimeDaysint0Default lead time in days for suppliers that do not have a specific lead time configured. Used when calculating reorder points and expected delivery dates.

Sample

"PurchaseOrderSettings": {
  "StorageCostPercent": 12.5,
  "AverageDailyUsageDays": 90,
  "LeadTimeSafetyMarginDays": 3,
  "DefaultAverageLeadTimeDays": 14
}

Reorder suggestions

These settings control how reorder suggestions are generated and filtered.

PropertyTypeDefaultDescription
ReorderSuggestionsMinQuantityRoundUpboolfalseWhen enabled, suggested reorder quantities are rounded up to the nearest minimum order quantity defined on the product or supplier.
NonPurchasableAssortmentCodesList<string>nullAssortment codes that should be excluded from reorder suggestions. Products with any of these assortment codes will not appear in purchase order suggestions. Assortment codes are defined in product settings.

Sample

"PurchaseOrderSettings": {
  "ReorderSuggestionsMinQuantityRoundUp": true,
  "NonPurchasableAssortmentCodes": [
    "DISCONTINUED",
    "SEASONAL-ONLY",
    "CONSIGNMENT"
  ]
}

Internal transfers

These settings control automatic creation of internal transfer orders for pickup warehouses (e.g., stores that receive stock from a central warehouse).

PropertyTypeDefaultDescription
CreateInternalTransfersForPickUpWarehousesboolfalseWhen enabled, internal transfer orders are automatically created for warehouses configured as pickup locations. This is used when a central warehouse distributes stock to store locations.
CreateInternalTransfersForPickUpWarehousesStatusstringnullThe status to assign to automatically created internal transfer orders. If not set, transfers are created with the default initial status.

Sample

"PurchaseOrderSettings": {
  "CreateInternalTransfersForPickUpWarehouses": true,
  "CreateInternalTransfersForPickUpWarehousesStatus": "New"
}

Delivery settings

These settings control how deliveries (goods reception) are handled on purchase orders.

PropertyTypeDefaultDescription
GoodsReceptionCompletedStatusstringnullThe purchase order status to set when goods reception is completed (all expected items have been received). If not configured, the status is not automatically changed on completion.
SetEstimatedTimeOfArrivalFromPurchaseOrderboolfalseWhen enabled, the RequestedDeliveryDate from the purchase order is used as the EstimatedTimeOfArrival on deliveries created from the purchase order. Useful for propagating delivery expectations to downstream logistics.
IncludePackagesInPurchaseOrdersboolfalseWhen enabled, package information (bundled products and their components) is included in purchase order data. Enable this if your purchase orders need to track product packaging details.
OrderTypesWithAutomaticLineSplittingList<string>nullList of order types where order lines are automatically split when customer reservations exceed the available quantity on a delivery. For example, if a delivery has 10 units but 15 are reserved across orders, the order line with excess reservations is split so the available units can be allocated.

Sample

"PurchaseOrderSettings": {
  "GoodsReceptionCompletedStatus": "Completed",
  "SetEstimatedTimeOfArrivalFromPurchaseOrder": true,
  "IncludePackagesInPurchaseOrders": false,
  "OrderTypesWithAutomaticLineSplitting": ["Online", "ClickAndCollect"]
}

ETA-based order status updates

When a purchase order's estimated delivery date changes, Omnium can automatically update the status of sales orders that are waiting for stock from that purchase order. This is useful for keeping customers informed about delivery timeline changes.

PropertyTypeDefaultDescription
UpdateOrderStatusWhenEstimatedDeliveryDateChangedboolfalseEnable automatic order status updates when the estimated delivery date changes on a purchase order. When enabled, the two properties below become active.
UpdateToStatusstringnullThe order status to set on affected sales orders when the estimated delivery date changes. Only applies when UpdateOrderStatusWhenEstimatedDeliveryDateChanged is enabled.
DisabledForStatusesList<string>nullOrder statuses that should be excluded from automatic status updates. Orders in any of these statuses will not be updated even if the estimated delivery date changes. Only applies when UpdateOrderStatusWhenEstimatedDeliveryDateChanged is enabled.

The UpdateToStatus and DisabledForStatuses settings reference order statuses from your order type configuration, not purchase order statuses.

Sample

"PurchaseOrderSettings": {
  "UpdateOrderStatusWhenEstimatedDeliveryDateChanged": true,
  "UpdateToStatus": "AwaitingDeliveryUpdate",
  "DisabledForStatuses": ["Completed", "Shipped", "Canceled"]
}

Display and printing

PropertyTypeDefaultDescription
ShowCustomerReservationsOnPurchaseOrderPrintboolfalseWhen enabled, customer reservations linked to purchase order line items are included on the printed purchase order document. Useful for suppliers who need to know which customers are waiting for specific items.

Sample

"PurchaseOrderSettings": {
  "ShowCustomerReservationsOnPurchaseOrderPrint": true
}

Properties and tags

Default properties

Default properties are automatically available on purchase orders. They provide structured fields for capturing additional data specific to your procurement process.

PropertyTypeDescription
KeystringProperty identifier
ValuestringDefault value
ValueTypestringData type (String, Number, Boolean, Date)
KeyGroupstringGrouping category for organizing properties in the UI
ValueOptionsList<string>Available options for dropdown selection
IsCustomValueOptionAllowedboolAllow free-text values in addition to predefined options
IsMultiSelectEnabledboolAllow selecting multiple values from options
ReadOnlyboolMake the property read-only after creation

Highlighted properties

Configure which property keys should be displayed prominently on the purchase order detail page. Properties listed here are shown in a highlighted section for quick reference.

"PurchaseOrderSettings": {
  "HighlightedProperties": [
    "Priority",
    "BuyerName",
    "PaymentTerms"
  ]
}

Tags

Tags allow you to categorize and filter purchase orders. Tags can also be used to control which statuses are available for a purchase order (via EnabledForTags and DisabledForTags on statuses).

PropertyTypeDescription
NamestringTag identifier
TranslationKeystringTranslation key for the tag label in the UI

Sample

"PurchaseOrderSettings": {
  "DefaultProperties": [
    {
      "Key": "Priority",
      "Value": "Normal",
      "ValueType": "String",
      "ValueOptions": ["Low", "Normal", "High", "Urgent"],
      "IsCustomValueOptionAllowed": false
    },
    {
      "Key": "PaymentTerms",
      "Value": "",
      "ValueType": "String",
      "ReadOnly": false
    }
  ],
  "HighlightedProperties": ["Priority", "PaymentTerms"],
  "TagSettings": [
    { "Name": "Domestic", "TranslationKey": "Tag_Domestic" },
    { "Name": "Import", "TranslationKey": "Tag_Import" },
    { "Name": "Urgent", "TranslationKey": "Tag_Urgent" },
    { "Name": "Dropship", "TranslationKey": "Tag_Dropship" }
  ]
}

Complete configuration example

Below is a comprehensive example showing all purchase order settings configured together:

{
  "PurchaseOrderSettings": {
    "PurchaseOrderStatuses": [
      {
        "Name": "New",
        "DisplayName": "New",
        "Order": 1,
        "IsMainFilter": true,
        "WorkflowSteps": [
          { "Name": "ValidateOnErrors", "Active": true }
        ]
      },
      {
        "Name": "Confirmed",
        "DisplayName": "Confirmed",
        "Order": 2,
        "IsMainFilter": true,
        "IsConfirmedStatus": true,
        "WorkflowSteps": [
          { "Name": "ExportPurchaseOrder", "Active": true },
          { "Name": "SetExpectedDeliveryDate", "Active": true }
        ]
      },
      {
        "Name": "InProgress",
        "DisplayName": "In Progress",
        "Order": 3,
        "IsMainFilter": true,
        "WorkflowSteps": []
      },
      {
        "Name": "Completed",
        "DisplayName": "Completed",
        "Order": 4,
        "IsMainFilter": true,
        "IsCompleted": true,
        "IsReadOnly": true,
        "WorkflowSteps": [
          { "Name": "RecalculateAtpValues", "Active": true }
        ]
      },
      {
        "Name": "OrderCanceled",
        "DisplayName": "Canceled",
        "Order": 5,
        "IsCanceledStatus": true,
        "IsReadOnly": true,
        "WorkflowSteps": []
      }
    ],
 
    "StorageCostPercent": 12.5,
    "AverageDailyUsageDays": 90,
    "LeadTimeSafetyMarginDays": 3,
    "DefaultAverageLeadTimeDays": 14,
 
    "ReorderSuggestionsMinQuantityRoundUp": true,
    "NonPurchasableAssortmentCodes": ["DISCONTINUED", "CONSIGNMENT"],
 
    "CreateInternalTransfersForPickUpWarehouses": true,
    "CreateInternalTransfersForPickUpWarehousesStatus": "New",
 
    "GoodsReceptionCompletedStatus": "Completed",
    "SetEstimatedTimeOfArrivalFromPurchaseOrder": true,
    "IncludePackagesInPurchaseOrders": false,
    "OrderTypesWithAutomaticLineSplitting": ["Online", "ClickAndCollect"],
 
    "UpdateOrderStatusWhenEstimatedDeliveryDateChanged": true,
    "UpdateToStatus": "AwaitingDeliveryUpdate",
    "DisabledForStatuses": ["Completed", "Shipped"],
 
    "ShowCustomerReservationsOnPurchaseOrderPrint": true,
 
    "DefaultProperties": [
      {
        "Key": "Priority",
        "Value": "Normal",
        "ValueType": "String",
        "ValueOptions": ["Low", "Normal", "High", "Urgent"]
      }
    ],
    "HighlightedProperties": ["Priority"],
 
    "TagSettings": [
      { "Name": "Domestic", "TranslationKey": "Tag_Domestic" },
      { "Name": "Import", "TranslationKey": "Tag_Import" },
      { "Name": "Urgent", "TranslationKey": "Tag_Urgent" }
    ]
  }
}