Pick Confirm
The Pick Confirm API allows you to perform cubed or non-cubed picking. Also:
- The Pick Confirm API supports picking of multiple allocations in a single payload.
- If one or more Pick updates fail we report an error only for the first failed Pick.
- If the First Pick fails, then the rest of the Picks in the payload does not get Picked.
This API supports features of the legacy API including the following new parameters:
- mhe_mode_flg - true/false; default true
- async_flg - true/false; default true
- short_flg - true/false; default false
- Replaces using the legacy "action_code" = "SHORT".
The Pick Confirm API can be called using the following POST request:
POST ..lgfapi/v10/pick_pack/pick_confirm/
Note About Distribution
This API has been updated so that it will not auto-close an OBLPN when there are cancelled allocations going into it. Also note, for distribution, it is recommend that you use the Pack OBLPN Distribution API.
Note About Tasks
Allocation Unit of Measure
Request Parameters
Pick List
These represent the parameters required for a single pick/short:
Name | Required | Type | Default | Description |
---|---|---|---|---|
facility_id | Integer | Facility context by id. | ||
facility_id__code | String | Facility context by code. | ||
company_id | Integer | Company context by id. | ||
company_id___code | String | Company context by code. | ||
wave_nbr | X | String | Associated wave. | |
order_nbr | X | String | Associated sales order. | |
item_alternate_code | C | String | Item identifier. | |
item_barcode | C | String | Item identifier. | |
qty | X | Number | 0 | Quantity to be acted upon. |
batch_nbr | String | Inventory batch/lot. | ||
uom_qty | Number | Filter on Case or Pack quantity when searching for allocations. | ||
allocation_uom | String | "UNITS", "PACKS", or "CASES". | ||
reason_code | String | Reason for short. | ||
pick_location | C | String | From location. | |
from_container_nbr | C | String | From container. | |
to_container_nbr | C | String | LPN inventory is packed into. Not required for short. | |
update_inventory_on_short_flg | Boolean | False | Also short source inventory on pick short? | |
close_container_status | String | "packed" | Final OBLPN status: "picked" or "packed". | |
short_on_close_flg | Boolean | False | Should any remaining unpacked quantity shorted? | |
mhe_system_code | C | String | MHE system. | |
short_flg | Boolean | False | Is this a short? | |
serial_nbr_list | C | String | List of Serial Numbers separated by a comma. | |
invn_attr_a |
C | String | Inventory attribute A | |
invn_attr_b |
C | String | Inventory attribute B | |
invn_attr_c |
C | String | Inventory attribute C | |
invn_attr_d |
C | String | Inventory attribute D | |
invn_attr_e | C | String | Inventory attribute E | |
invn_attr_f |
C | String | Inventory attribute F | |
invn_attr_g |
C | String | Inventory attribute G | |
invn_attr_h |
C | String | Inventory attribute H | |
invn_attr_i | C | String | Inventory attribute I | |
invn_attr_j | C | String | Inventory attribute J | |
invn_attr_k | C | String | Inventory attribute K | |
invn_attr_l | C | String | Inventory attribute L | |
invn_attr_m |
C | String | Inventory attribute M | |
invn_attr_n |
C | String | Inventory attribute N | |
invn_attr_o | C | String | Inventory attribute O | |
Expiry_date | C | Date | Format YYYY-MM-DD | |
orig_iblpn_nbr | C | String | If the original allocation is from the LPN and substitution is happening from a different LPN. | |
orig_batch_nbr | C | String | Batch Number associated with the original allocation. | |
orig_expiry_date | C | String | Expiry Date associated with the original allocation. | |
orig_inventory_attribute_a to orig_inventory_attribute_o | C | String | Inventory attributes value associated with the original allocation. | |
cubed_oblpn_exact_match_only_flg | Boolean | False | When passed as true, in cubed scenarios (when the OBLPN is created at wave time), the system will be enabled optimizations to make processing faster. |
Validations
- Facility must be in user's eligible facilities and not be ambiguous.
- Possible if there is a Store and a DC with the same code.
- Company must be in user's eligible companies.
- If facility or company context is not included in the input parameters, user defaults are used.
- User cannot pass both "facility_id" and "facility_id__code" in the same request.
- User cannot pass both "company_id" and "company_id_code" in the same request.
- "mhe_system_code" is required if "mhe_mode_flg" is True.
- Only one of "item_alternate_code" or "item_barcode" is allowed.
- Only one of "pick_location" or "from_container_nbr" is allowed.
- "to_container_nbr" is required for "pick" operation, but is not required for "short".
- If the allocated inventory for the given order detail in the API request does not match with the inventory attribute values passed in the API, then the system will return the error response "Inventory attribute combination is not allocated for order %order number%."
Request-Level Flags
Name | Required | Type | Default | Description |
---|---|---|---|---|
mhe_mode_flg | Boolean | True | When true, enforce that "mhe_system_code" is provided. | |
async_flg | Boolean | True | Run API asynchronously? | |
suppress_serial_warning_flg | Boolean | True |
If the suppress_serial_warning_flg" is set to "false":
|
The following is an example JSON request:
{
"mhe_mode_flg": true,
"async_flg": true,
"suppress_serial_warning_flg":true,
"pick_list": [{ "facility_id__code": "QATST01",
"company_id__code": "QATSTPC",
"wave_nbr": "WVQATSTPC072935",
"order_nbr": "CPORD102720C1",
"item_barcode": "RUG99",
"qty":3,
"serial_nbr_list": [
"SLN1",
"SLN2",
"SLN3"],
"invn_attr_a" : "TESTA",
"invn_attr_b" : "TESTB",
"invn_attr_c" : "TESTC",
"invn_attr_d" : "TESTD",
"invn_attr_e" : "TESTE",
"invn_attr_f" : "TESTF",
"invn_attr_g" : "TESTG",
"invn_attr_h" : "TESTH",
"invn_attr_i" : "TESTI",
"invn_attr_j" : "TESTJ",
"invn_attr_k" : "TESTK",
"invn_attr_l" : "TESTL",
"invn_attr_m" : "TESTM",
"invn_attr_n" : "TESTN",
"invn_attr_o" : "TESTO",
"from_container_nbr": "CNTST0100031583",
"to_container_nbr": "CPOBLPN0106,
"update_inventory_on_short_flg": true,
"close_container_status" : "packed",
"mhe_system_code": "CONVCP1",
"short_flg": false }]
}
The following is an example XML request:
<request>
<mhe_mode_flg>false</mhe_mode_flg>
<async_flg>false</async_flg>
<pick_list>
<list-item>
<facility_id_code>FAC</facility_id_code>
<company_id>1</company_id>
<wave_nbr>WAVE001</wave_nbr>
<order_nbr>ORDER001</order_nbr>
<item_barcode>ITEM1234</item_barcode>
<qty>10</qty>
<from_container_nbr>IBLPN0001</from_container_nbr>
<to_container_nbr>OBLPN0001</to_container_nbr>
<short_flg>false</short_flg>
</list-item>
</pick_list>
</request>
Currently, the Pick Confirm API (URL: pick_pack/pick_confirm/) sends the Batch Number that is used during picking. If the batch number provided in the API is not the same as the original allocated inventory, or if the location where the pick is happening contains inventory pointing to multiple batches for the same SKU, then substitution will happen against one of the allocated inventory. (For example: If Location has Batch1 and Batch2 allocated for Order1, during picking if the user sends Batch3 for Order1, the system will substitute against Batch1 or Batch2).
Substitution
In scenarios when the original allocated inventory is not available, you can now substitute with another inventory. The Pick Confirm API is enhanced to support substitutions where you can substitute or replace an inventory with another available inventory via Pick Confirm API. As shown below, the following fields were added to the Pick List:
Parameters
Name | Required | Type | Default | Description |
---|---|---|---|---|
Orig_IBLPN_Nbr | C | String | If original allocation is from LPN & substitution is happening from different LPN. | |
Orig_Batch_nbr | C | String | Batch Number associated with the original allocation. | |
Orig_expiry_date | C | String | Expiry Date associated with the original allocation. | |
Orig_Inventory_Attribute_A to Orig_Inventory_Attribute_O | C | String | Inventory attributes value associated with the original allocation. |
- Substitution will happen based on the value defined in the above fields, If the value is not defined in the above fields (LPN ,Batch, Expiry date), then the system will consider it as normal picking flow (Without substitution).
- If original (Batch/Expiry/Attributes/LPN) values are not sent in the pick confirm API request, then after sending a different batch number (other than the allocated batch number), the system will perform implicit substitution which is an existing behavior.
- If any of the Original values (Attribute/Expiry date/LPN) are sent in the pick confirm API, and the user wants a batch number to also be part of substitution, then the original batch number explicitly has to passed in the API. In this case, implicit substitution of the batch number will not happen.
{
"mhe_mode_flg": false,
"async_flg": true,
"pick_list": [{
"facility_id__code": "QATST01",
"company_id__code": "QATSTPC",
"wave_nbr": "WVQATSTPC072935",
"order_nbr": "CPORD102720C1",
"item_barcode": "RUG99",
"qty":2,
"uom_qty":4,
"orig_iblpn_nbr": "CNTST0100031599",
"from_container_nbr": "CNTST0100031583",
"to_container_nbr": "CPOBLPN010621C1",
"orig_batch_nbr":"BAT2021",
"batch_nbr":"CPBAT0708C12",
"update_inventory_on_short_flg": true,
"close_container_status" : "packed",
"mhe_system_code": "CONVCP1",
"short_flg": false
},
{
"facility_id__code": "QATST01",
"company_id__code": "QATSTPC",
"wave_nbr": "WVQATSTPC072935",
"order_nbr": "CPORD102720C1",
"item_barcode": "RUG99",
"qty":2,
"pick_location": "CPLOC2021AA",
"to_container_nbr": "CPOBLPN010621C1",
"orig_batch_nbr":"BAT2021",
"batch_nbr":"CPBAT0708C16",
"update_inventory_on_short_flg": true,
"close_container_status" : "packed",
"mhe_system_code": "CONVCP1",
"short_flg": false
}
]}