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.
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:
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.
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.
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
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:
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
(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:
result
output parameter determines whether the bin location is valid or not. errorMessage
can contain the validation error. 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:
result
output parameter determines whether the bin location is valid or not.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 |
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 | - |