Skip to main content

Product capacity

Product capacity plans can be easily created in our Admin Suite's dedicated chapter Product capacity plans. You might want to interact with PCPs via API sometimes however, aside from the fact that - while front-end functionality is underway - some functionality is currently only available via API.

Viewing product capacity plans

There are three services available related to viewing PCPs:

  • ListProductCapacityPlan
  • GetProductCapacityPlanByID
  • GetProductCapacityPlansByProductID

Although the first two services speak for themselves, the latter one benefits from a bit more explanation: in essence this service lets the user get all PCPs by ProductID. This is important because a product can be part of multiple PCPs in case of multiple suppliers or multiple plans for the same supplier. Therefore, the service returns an IsActive property to indicate which PCP is active (per supplier).

One more thing: this service is cached, so be aware that changes in PCPs can take a few seconds to reflect in this service.

{
"PageConfig": {
"Filter": {
"SupplierOrganizationUnitID": null,
"Name": null,
"Description": null,
"ProductCapacityTimeFrame": null,
"Capacity": null,
"IsDynamic": null,
}
}
}

CRUD services

There are three services available related to changing PCPs themselves, with two more specifically for changing the products contained within PCPs:

  • CreateProductCapacityPlan
  • UpdateProductCapacityPlan
  • DeleteProductCapacityPlan
  • AddProductsToProductCapacityPlan
  • RemoveProductsFromProductCapacityPlan

Note that for the latter two services, they add/remove products to/from the given static product capacity plan. They will fail if called with a dynamic product capacity plan.

{
"SupplierOrganizationUnitID": 1,
"Name": "Printed t-shirts",
"Description": "Printing t-shirts with player names",
"ProductCapacityTimeFrame": 0, // (0 = day, 1 = week)
"Capacity": 100,
"AvailabilityCalculationCutOffInDays": null,
"ProductSearchTemplateID": null,
"ProductSearchFilters": *Dictionary<string, FilterModel>*
"ProductIDs": [1,2,3...],
"OverwriteExistingProductCapacityPlans": false
}

Static vs Dynamic PCPs

A PCP can be either dynamic of static.

  • A static PCP is a plan which has a fixed set of products attached to it.
  • A dynamic PCP has a product search template or its own product search filters. The list of products is dynamic and will be updated every hour.

Static PCPs take precedence over the dynamic PCPs. This can come in handy when a specific product within a set has a temporarily lower capacity then it normally has. You can create a new PCP with this specific product and add a lesser capacity. Static PCPs cannot overlap for the same supplier. If another static PCP for the same supplier already has the given product, the request will fail, unless the OverwriteExistingProductCapacityPlans boolean is set. If this is the case, the product will be removed from its current static PCP and added to the new static PCP.

If products overlap from the contained dynamic PCPs, the first PCP will be linked, while others will be ignored. This can create the situation in which one PCP has a capacity of 100 and another a capacity of 200, but that the end result is that the product is linked to the PCP with the capacity of 100.

Timeframe setting

To prevent endless, or inaccurate capacity calculations, the following setting defaults to 7 days and can be maximized to 14 days: FutureAvailability:ProductCapacityPlansPrefigureTimeSpan

This value can also be overwritten on the PCP itself by setting the AvailabilityCalculationCutOffInDays. The value of this property can be set higher or lower than the setting value, but can not surpass the 14 day limit.

Exceptions

All the previous services are incorporated into the corresponding front end in Admin Suite. Making exceptions however, is currently possible only via API. By creating an exception on a PCP, you can alter the available capacity on a given date or on a returning basis for certain days of the week.

This is done via the following two services:

  • SetProductCapacityPlanException
  • DeleteProductCapacityPlanException

These allow to add/update and delete a ProductCapacityPlanException based update the DayOfWeek or Date.

Both have empty responses.

{
"ID": 1, // ProductCapacityPlanID
"DayOfWeek": 0, // Optional, DayOfWeek enum (0 = Sunday ... 6 = Saturday)
"Date": null, // Optional, Date will be stripped of time element
"Capacity": 1 // The capacity for the given DayOfWeek or Date
}