Create from IBLPN
The OBLPN create_from_iblpn API allows you to create an OBLPN in Outbound Ready status and allocate inventory from a designated IBLPN in a single request. Additionally allows the caller to trigger packing of the OBLPN.
POST .../entity/oblpn/create_from_iblpn/
Assumptions
- All allocation data must have the same facility and company context as the
OBLPN.
- Allocations may be for multiple sales orders from multiple IBLPNs for different items as long as the facility/company context is consistent with the created OBLPN.
- Sales order status will be recalculated on success.
- IBLPN status will be recalculated on success.
- Inventory history is only written if the OBLPN is packed.
Request Body Data
The request body data utilizes the 3 categories in the following ways:
- `fields` – The initial data required to create the OBLPN.
- `parameters` – List of data defining allocations.
- `options` – Additional functional data.
OBLPN Fields Data
The OBLPN’s initial data is defined in the `fields` section of the request under the `oblpn` key. This is similar to the request body data requirements when creating an LPN directly through the entity’s create mechanism.
Supported fields:
Name | Type | Required | Description |
---|---|---|---|
facility_id | Integer | Y | OBLPN’s facility. |
company_id | Integer | Y | OBLPN’s company. |
container_nbr | String | Y | OBLPN’s container number. |
curr_location_id | Integer | N | OBLPN’s location. |
lpn_type_id | Integer | N | Associated LPN Type. |
length | Numeric | N | OBLPN’s length dimension. |
width | Numeric | N | OBLPN’s width dimension. |
height | Numeric | N | OBLPN’s height dimension. |
- If providing `lpn_type_id` - `length`, `width`, and `height` are not valid.
Example Request Body:
"fields": {
"oblpn": {
"facility_id": 1,
"company_id": 1,
"container_nbr": "OBLPN-1",
"lpn_type_id": 5
}
}
Allocation Parameters Data
Allocation data is defined in the `parameters` section of the request in the `allocations` key. The data is a list of objects, each linking one sales order detail to one IBLPN for the given inventory and quantity. An order detail or IBLPN may be referenced across multiple allocation definitions within the same request. Each of the following allocation scenarios is supported:
- Single order detail from single IBLPN.
- Single order detail from multiple IBLPNs.
- Multiple order details from single IBLPN.
- Multiple order details from multiple IBLPNs.
Category | Name | Type | Required | Description |
---|---|---|---|---|
allocations | order_nbr | String | Y | Sales order identifier. |
allocations | iblpn_nbr | String | Y | IBLPN identifier. |
allocations | qty | Numeric | Y | Non-zero quantity to allocate. |
allocations | order_dtl | Object | Y | Nested object identifying the sales order detail. |
- Sales order status must be less than “Packed”.
- IBLPN status must be “Received”, “Located”, or “Partially Allocated” and have the necessary available unallocated quantity.
The nested `order_dtl` object requires one of two definitions in order to identify the sales order detail.
Identify Sales Order Detail by Sequence Number
If the order detail’s unique sequence number is known to the user, this may be provided in the request and is the only piece of data necessary to identify the correct detail for the given sales order number.
Category | Name | Type | Required | Description |
---|---|---|---|---|
order_dtl | seq_nbr | Integer | C | Sales order detail’s unique sequence number. |
"parameters": {
"allocations": [
{
"order_nbr": "ORDER-1",
"order_dtl": {
"seq_nbr": 1
},
"iblpn_nbr": "IBLPN-1",
"qty": 1
}
]
}
Identify Sales Order Detail by Attributes
The sales order detail may also be identified by its attributes. At least one of the following pieces of information is required. If more than one order detail is identified, an error will be returned. Additionally, this is a restrictive search in that any omitted data will not be treated as a wildcard.
- If no `batch_nbr` is provided, only match order detail(s) without a batch.
- If no `invn_attr_X` value is provided for A-O, it will be treated as blank.
Category | Name | Type | Required | Description |
---|---|---|---|---|
order_dtl | item_barcode | String | C | Item identifier. |
order_dtl | item_alternate_code | String | C | Item identifier. |
order_dtl | batch_nbr | String | N | Batch identifier. |
order_dtl | invn_attr_X | String | N | Attributes A-O tied to the order detail. |
"parameters": {
"allocations": [
{
"order_nbr": "ORDER-2",
"order_dtl": {
"item_barcode": "ITEM2",
"batch_nbr": "BATCH-1",
"invn_attr_a": "A",
"invn_attr_b": "B"
},
"iblpn_nbr": "IBLPN-2",
"qty": 2
}
]
}
Additional Options Data
Functional request data in the `options` section:
Category | Name | Type | Required | Description |
---|---|---|---|---|
options | pack_flg | Boolean | N | Pack the OBLPN? (Default = False) |
- OBLPN will be routed regardless of the `pack_flg` value.
- If `pack_flg` = True:
- OBLPN will be updated to “Packed” status.
- The created allocations will be completed.
- The sales order detail(s) will be updated.
- OBLPN’s final weight and volume will be calculated.
- Inventory history will be written.
Example Request Body:
"options": {
"pack_flg": true
}
Full Request Body Example:
The following example would create a packed OBLPN allocated from two different IBLPNs for the same order.
{
"fields": {
"oblpn": {
"facility_id": 1,
"company_id": 1,
"container_nbr": "OBLPN-1"
}
},
"parameters": {
"allocations": [
{
"order_nbr": "ORDER-1",
"order_dtl": {
"seq_nbr": 1
},
"iblpn_nbr": "IBLPN-1",
"qty": 2
},
{
"order_nbr": "ORDER-1",
"order_dtl": {
"item_barcode": "ITEM-1",
"batch_nbr": "BATCH-1",
"invn_attr_a": "A",
"invn_attr_o": "O"
},
"iblpn_nbr": "IBLPN-2",
"qty": 5.52
}
]
},
"options": {
"pack_flg": true
}
}
Track User Activity
If you have purchased WFM (Oracle Workforce Management), you can also send user activity data using the following parameters in the Create From IBLPN API
- Screen_name: Name of the application or screen in the external system that was used by the user to create OBLPN.
- Begin_ts: Time at which the user started the create OBLPN operation.
- End_ts: Time at which the user completed the create OBLPN operation.
If all the three parameters are sent in the API, and if WFM is enabled, user activity is written to the WMS Activity view and subsequently interfaced to WFM, enabling you to analyze user productivity through productivity reports in WFM.
- All three parameters must be sent for WMS Activity to be written.
- If WFM is not enabled, WMS Activity is not written even if the three parameters are sent.
- Begin_ts and end_ts are parameters at the allocation level and must be sent on all allocations.
- Activity tracking is currently not supported at the OBLPN level.
- In order for WMS Activity data to interface successfully to WFM, screen_name that is sent in the API has to be configured as a screen in WMS using an RF module and mapped to a work area activity in WFM.
- Screen_name sent on the API is also written on the corresponding IHTs that are written with this API.
- If only screen_name is sent without begin_ts and end_ts, the screen_name is written on the IHT, even if WFM is not enabled.
- Begin_ts and End_ts cannot be greater than the current timestamp of the facility in the API.
Request Body with User Activity Data
{
"fields": {
"oblpn": {
"facility_id": 1,
"company_id": 1,
"container_nbr": "OBLPN-1"
}
},
"parameters": {
"allocations": [
{
"order_nbr": "ORDER-1",
"order_dtl": {
"seq_nbr": 1
},
"iblpn_nbr": "IBLPN-1",
"qty": 2,
"begin_ts": "2024-05-21T18:30:00",
"end_ts": "2024-05-21T18:45:00"
},
{
"order_nbr": "ORDER-1",
"order_dtl": {
"item_barcode": "ITEM-1",
"batch_nbr": "BATCH-1",
"invn_attr_a": "A",
"invn_attr_o": "O"
},
"iblpn_nbr": "IBLPN-2",
"qty": 5.52,
"begin_ts": "2024-05-21T18:50:00",
"end_ts": "2024-05-21T18:55:00"
}
]
},
"options": {
"pack_flg": true,
"screen_name": "Create OBLPN Screen"
}
}