Put Away Strategy and Move Restrictions
Overview
Location attribute types and values:
You can define location attribute types and valid values for zones and bin locations in the Organizational Structure. The defined location attribute types and valid values can be used in the new Produmex Transaction Notification stored procedures
for put-away suggestions and move restrictions.
The defined location attribute types and their values are automatically inherited from the main zone to sub-zones and bin locations and from sub-zones to bin locations. When a sub-zone or bin location inherits location attribute values, the system allows for selecting a different location attribute value later on.
Put away strategy:
With Produmex WMS it is possible to define which destination locations the Mobile Client should display when putting away stock in the warehouse. A hook flow can be used for customization purposes in a way that is optimal for your warehouse. Based on the customization, the system allows for scanning or selecting only the defined destination locations in the Put Away Flow.
Move restrictions:
With the help of Produmex Transaction Notification stored procedures, you can also define restrictions. When you move stock, you can make sure that the stock is not moved to the wrong destination location within the warehouse. Move restrictions can be defined for locations that are created in the Organizational Structure as bin locations. Through the validation location chain, all types of moves (including SBO and PMX) are validated.
1. Location attribute types and values
Location attribute types
Location attribute types can be defined for zones and bin locations on the Produmex Location Attribute Types (PMX_OSAT) default form with the following convertor types:
- String (collection of characters)
- Int (integer)
- Double (number with decimal)
- Date
- List
The defined location attribute types can be selected in the Organizational Structure > zone or bin location element > Attributes tab > Attribute Code drop-down menu.
Location attribute values
In the Attribute Value field you can add values to the location attribute types based on the convertor defined for the location attribute type.
- In case of location attribute types with convertor String, Int, Double and Date, you can manually add values in the Attributes Value field.
- In case of location attribute types with List convertor type, the Attribute Value drop-down menu lists the valid values for the selected location attribute type. The list of the drop-down menu can be defined on the Valid Values for Produmex Location Attributes (PMX_OAVV) default form.
Inherited location attribute types and values
The defined location attribute types and their values are automatically inherited from the main zone to sub-zones and bin locations and from sub-zones to bin locations.
If the Is Inherited Value column shows True, the location attribute type and the value are inherited from the zone.
- The inherited location attribute type cannot be deleted manually on the level of sub-zones and bin location. If the location attribute type of the main zone is deleted, the system also deletes the location attribute type of the sub-zone and the bin location (see exception below).
- The inherited location attribute value can be changed in the Attribute Value field. In this case the inherited location attribute type is not deleted automatically when the location attribute type of the main zone is deleted.
- If a sub-zone or a bin location has got its own location attribute type and value and later on the same location attribute type is added to the main zone with a different value, the system does not overwrite the location attribute value on the level of the sub-zone and bin location.
PMX_SP_GetOseAttributeValues stored procedure
You can reach the defined location attribute types and values with the help of the PMX_SP_GetOseAttributeValues stored procedure. It returns the table PMX_OSAV filtered by an OSE Code (Bin Code, Zone Code etc.) set in the stored procedure parameter oseCode
.
Parameter | Type |
---|---|
oseCode | nvarchar(50) |
The description of table PMX_OSAV can be found here
2. Put away strategy
The name of the hook flow is PutAwayDestinationLocationHookScript and it can be customized on the Workflows tab of the Organizational Structure.
Based on the customization, the system allows for scanning or selecting only the defined destination locations on the Scan a Destination Location and Select a Destination Location screens of the Put Away Flow.
If there is only one location defined and the location is not available for some reason, you are not able to move the stock to any other location not defined in the hook flow.
If you try to move the stock to the wrong location, the Mobile Client displays an error message.
During the flow the system displays the default location on the Scan a Destination Location screen. The default location is the first location returned from the stored procedure.
The hook flow is called if the following settings are disabled:
- Use suggested locations? setting on the Location controller
- Use Location Suggestions? on the warehouse level of the Organization Structure
The input parameter of the hook flow: object[] FlowParameters
The content of the array:
Parameter | Type | Description |
---|---|---|
currentFlowParameters[0] | integer | luid |
currentFlowParameters[1] | string | sscc |
currentFlowParameters[2] | Collection<string> | list of item codes |
currentFlowParameters[3] | double | quantity to move |
currentFlowParameters[4] | Collection<string> | list of zone types for items |
currentFlowParameters[5] | string | source location |
currentFlowParameters[6] | string | warehouse |
currentFlowParameters[7] | enum LocationFilter | location filter, possible values: All = 0, Empty = 1, NotFull = 2, NotFullAndIgnoreNonLuidStock = 3 |
Output parameter of the hook flow: DataSet Location
The required column names are listed below and extra columns are also allowed.
Required column name | Description |
---|---|
Code | location code |
Description | location description |
WarehouseCode | warehouse code |
WarehouseName | warehouse name |
The hook flow contains the call of a sample stored procedure (SP_EXAMPLE_PUTAWAY_DESTINATION) that must be renamed. The sample stored procedure has a HANA and an MS SQL version. The necessary parts must be uncommented. You also have the opportunity to use less parameters and you can remove the unnecessary ones.
The code also contains example stored procedures that are commented.
MS SQL stored procedure example:
CREATE PROCEDURE [dbo].[SP_EXAMPLE_PUTAWAY_DESTINATION] @luid INT ,@sscc NVARCHAR(20) ,@listOfItemCode NVARCHAR(MAX) ,@quantityToMove NUMERIC(19, 6) ,@listOfZoneTypesForItems NVARCHAR(MAX) ,@sourceLocation NVARCHAR(50) ,@warehouse NVARCHAR(50) ,@selectLocationFilter NVARCHAR(100) AS BEGIN SELECT "PMX_OSSL"."Code" AS "Code" ,"PMX_OSSL"."Name" AS "Description" ,"PMX_OSEL"."PmxWhsCode" AS "WarehouseCode" ,"PMX_OSWH"."Name" AS "WarehouseName" FROM "PMX_OSSL" INNER JOIN "PMX_OSEL" ON "PMX_OSEL"."Code" = "PMX_OSSL"."Code" INNER JOIN "PMX_OSWH" ON "PMX_OSEL"."PmxWhsCode" = "PMX_OSWH"."Code" INNER JOIN "OWHS" ON "OWHS"."WhsCode" = "PMX_OSWH"."SboWhsCode" AND "OWHS"."U_PMX_IMBP" = 'Y' WHERE "PMX_OSSL"."IsActive" = 'Y' END
HANA stored procedure example:
CREATE PROCEDURE "SP_EXAMPLE_PUTAWAY_DESTINATION" ( p_luid INT ,p_sscc NVARCHAR(20) ,p_listOfItemCode NVARCHAR(255) ,p_quantityToMove NUMERIC(19, 6) ,p_listOfZoneTypesForItems NVARCHAR(255) ,p_sourceLocation NVARCHAR(50) ,p_warehouse NVARCHAR(50) ,p_selectLocationFilter NVARCHAR(100) ) LANGUAGE SQLSCRIPT AS BEGIN SELECT "PMX_OSSL"."Code" AS "Code" ,"PMX_OSSL"."Name" AS "Description" ,"PMX_OSEL"."PmxWhsCode" AS "WarehouseCode" ,"PMX_OSWH"."Name" AS "WarehouseName" FROM "PMX_OSSL" INNER JOIN "PMX_OSEL" ON "PMX_OSEL"."Code" = "PMX_OSSL"."Code" INNER JOIN "PMX_OSWH" ON "PMX_OSEL"."PmxWhsCode" = "PMX_OSWH"."Code" INNER JOIN "OWHS" ON "OWHS"."WhsCode" = "PMX_OSWH"."SboWhsCode" AND "OWHS"."U_PMX_IMBP" = 'Y' WHERE "PMX_OSSL"."IsActive" = 'Y'; END
3. Move restrictions
(1) PMX_SP_LocationValidation stored procedure
Make sure that the stored procedure is not customized. It is overwritten each time Produmex WMS is upgraded.
Description:
- The
result
output parameter determines whether the bin location is valid or not. - 'Y' means true, otherwise false and the
errorMessage
can contain the validation error.
- It calls the PMX_SP_LocationValidation_Custom and logs the execution time of that call to the table PMX_LOGT.
Parameter | Type |
---|---|
luid | int |
itemCode | nvarchar(50) |
quantity | numeric(19,6) |
location | nvarchar(50) |
isSourceStorageLocation | char(1) |
isDestinationStorageLocation | char(1) |
result | char(1)output |
errorMessage | nvarchar(255) output |
(2) PMX_SP_LocationValidation_Custom stored procedure
The stored procedure can be customized.
Description:
- The
result
output parameter determines whether the bin location is valid or not. - 'Y' means true, otherwise false and the
errorMessage
can contain a custom validation error, which is shown in SAP Business One or on the Mobile Client.
Parameter | Type |
---|---|
luid | int |
itemCode | nvarchar(50) |
quantity | numeric(19,6) |
location | nvarchar(50) |
isSourceStorageLocation | char(1) |
isDestinationStorageLocation | char(1) |
result | char(1) output |
errorMessage | nvarchar(255) output |
4. Logging time
The system tracks the start date and the end date of calling the hook flow and the stored procedure and does the logging in milliseconds in the PMX_LOGT table. You can use the table to determine if the custom stored procedure causes any performance issues.
This function is defined by the PMX_OSCO.EnableTimeLoggingToTable hidden setting. By default, the setting is enabled.
The PMX_LOGT table contains the following fields:
Field name | Field type | Field structure | Length |
---|---|---|---|
Date | Date/Time | Date | - |
Thread | Alphanumeric | Text | - |
Level | Alphanumeric | Regular | 50 |
Logger | Alphanumeric | Text | - |
Message | Alphanumeric | Text | - |
Exception | Alphanumeric | Text | - |
DomainName | Alphanumeric | Regular | 50 |
UserName | Alphanumeric | Regular | 50 |
SessionName | Alphanumeric | Regular | 50 |
StartDate | Date/Time | Date | - |