New Device Support
This release adds support for the DOTH-300 device.
Configuration
In order to enable the DOTH-300 support the Mobi package Dotel Scanner Libraries needs to be installed in addition to the Mobile WMS release. It is important that this package is installed after Mobile WMS since it needs to override the Symbol.dll
library distributed as part of the Mobile WMS package.
A small change needs to be done to the CommonConfiguration
section of the app.config
configuration file, where the <scanTrigger>
elements is added to enable the center scan button.
<!-- Service containing common configuration --> <add type="TaskletFactory.WMS.Services.CommonConfigurationService, TaskletFactory.WMS.Services.CommonConfiguration" factory="TaskletFactory.WMS.Services.Configuration.CommonConfigurationServiceFactory, TaskletFactory.WMS.Services.CommonConfiguration" startup="true"> <configuration xmlns="http://schemas.taskletfactory.com/MDMF/MobileWMS/Services/2010/10/CommonConfigurationServiceConfiguration.xsd"> ... <tasklet> <scanTrigger enabled="true" keyName="152" /> ... </tasklet> ... </configuration> </add>
Generic Order Service
As something new it is now possible to create an arbitrary number of services; one is no longer forced to choose from the predefined pick
, receive
, etc services but can e.g. create a pick_extra_validation
service and enable extra validation for new employees.
Service Configuration
The following configuration example shows how to convert the pick
service and tasklets into using the new generic versions. It could just as well be an entirely new service type. The change has to be applied to the whole chain: service, filter, order list, order lines and registration tasklets.
To setup the service add the new ServiceManager
service in app.config
and move the pick
service configuration into the list of <services>
provided by the manager.
<add type="TaskletFactory.WMS.Services.ServiceManager, TaskletFactory.WMS.Services.Base" factory="TaskletFactory.WMS.Services.ServiceManagerFactory, TaskletFactory.WMS.Services.Base" startup="true"> <configuration xmlns="http://schemas.taskletfactory.com/MDMF/MobileWMS/Services/2015/01/ServiceManagerConfiguration.xsd"> <services> <add id="Pick"> <configuration xmlns="http://schemas.taskletfactory.com/MDMF/MobileWMS/Services/2009/01/ServiceConfiguration.xsd"> <DatabaseName>AppDatabase</DatabaseName> <PostOrderRequestDocumentName>PostPickOrder</PostOrderRequestDocumentName> <GetOrdersRequestDocumentName>GetPickOrders</GetOrdersRequestDocumentName> <GetFilteredOrdersRequestDocumentName>GetFilteredPickOrders</GetFilteredOrdersRequestDocumentName> <GetOrderLinesRequestDocumentName>GetPickOrderLines</GetOrderLinesRequestDocumentName> <GetBackendInfoRequestDocumentName>GetBackendInfo</GetBackendInfoRequestDocumentName> <LockOrderRequestDocumentName>LockOrder</LockOrderRequestDocumentName> <UnlockOrderRequestDocumentName>UnlockOrder</UnlockOrderRequestDocumentName> <UseOrderLocking>true</UseOrderLocking> <ScanBehaviourWhenRegisteringQuantity>SCAN_NEXT_ITEM</ScanBehaviourWhenRegisteringQuantity> <DataSource>ONLINE</DataSource> <ExpirationDateSeparator>,</ExpirationDateSeparator> <BarcodeSeparator>;</BarcodeSeparator> <AddOrderLineRequestDocumentName>AddOrderLine</AddOrderLineRequestDocumentName> <AutoPostWhenAllLinesComplete>true</AutoPostWhenAllLinesComplete> <ServiceType>Pick</ServiceType> </configuration> </add> </services> </configuration> </add>
To add a service simply use the <add id="serviceName">
syntax and the service is referenced through its id
. Copy the <configuration>
section from the existing pick
service.
Finally remove the existing pick
service configuration.
Tasklet Configuration
The next step is to convert the accompanying tasklets from using the specific PickFilter
, PickOrderList
, etc. types to the GenericFilter
, GenericOrderList
, etc. versions instead by modifying the UserRole.xml
configuration file.
<tasklet name="PickFilter" text="Pick filter" type="TaskletFactory.WMS.Tasklets.GenericFilter, TaskletFactory.WMS.Tasklets.Filter"> <configuration> <appSettings> <add key="okMenuItem" value="filterMenuOk"/> </appSettings> <filterConfiguration> <service id="Pick" /> </filterConfiguration> </configuration> <actions> <open name="filterMenuOk" tasklet="PickList" priority="110" text="OK_" context=""></open> <exitTasklet name="unplanRegMenuBack" text="Back" priority="1" icon="Arrow Left.bmp" context="The text on the softkey that goes back to the previous tasklet"></exitTasklet> </actions> </tasklet>
The important bits here are type="TaskletFactory.WMS.Tasklets.GenericFilter, TaskletFactory.WMS.Tasklets.Filter"
and the <filterConfiguration>
element containing the service reference.
Below follows the configuration for the order list, order lines and registration tasklets. For all of these it is a matter of instantiating the correct generic type and referencing the service by id
.
<tasklet name="PickList" text="Pick orders" icon="pick.bmp" type="TaskletFactory.WMS.Tasklets.GenericOrderList, TaskletFactory.WMS.Tasklets.OrderList"> <configuration> <appSettings> ... </appSettings> <orderListConfiguration xmlns="http://schemas.taskletfactory.com/MDMF/MobileWMS/Tasklets/2013/08/OrderListConfigurationSection.xsd"> <service id="Pick" /> </orderListConfiguration> <listConfiguration xmlns="http://Schemas.TaskletFactory.com/MDMF/Platform/Controls/2008/10/CustomizableList.xsd"> ... </listConfiguration> </configuration> <actions> ... </actions> </tasklet>
<tasklet name="PickOrderLines" text="Pick order lines" icon="pick.bmp" type="TaskletFactory.WMS.Tasklets.GenericOrderLines, TaskletFactory.WMS.Tasklets.OrderLines"> <configuration> <appSettings> ... </appSettings> <shortcut enabled="true"> ... </shortcut> <orderLineConfiguration xmlns="http://Schemas.TaskletFactory.com/MDMF/Platform/Tasklets/2009/01/OrderLineConfiguration.xsd"> <service id="Pick" /> ... </orderLineConfiguration> <listConfiguration xmlns="http://Schemas.TaskletFactory.com/MDMF/Platform/Controls/2008/10/CustomizableList.xsd"> ... </listConfiguration> </configuration> <actions> ... </actions> <outputMappings> ... </outputMappings> </tasklet>
<tasklet name="Registrations_Pick" text="Registrations" icon="Notepad.bmp" type="TaskletFactory.WMS.Tasklets.GenericRegistration, TaskletFactory.WMS.Tasklets.RegistrationTasklet"> <configuration> <appSettings> ... </appSettings> <registrationConfiguration xmlns="http://Schemas.TaskletFactory.com/MDMF/MobileWMS/Tasklets/2015/01/RegistrationConfiguration.xsd"> <service id="Pick"/> </registrationConfiguration> <listConfiguration xmlns="http://Schemas.TaskletFactory.com/MDMF/Platform/Controls/2008/10/CustomizableList.xsd"> ... </listConfiguration> </configuration> <actions> ... </actions> </tasklet>
Online Bin Validation
It is now possible to enable online bin validation, separately for to and from bins. It requires a change to app.config
for the service in question.
Configuration
<add type="TaskletFactory.WMS.Services.PickService, TaskletFactory.WMS.Services.Pick" factory="TaskletFactory.WMS.Services.Configuration.PickServiceFactory, TaskletFactory.WMS.Services.Pick" startup="true"> <configuration xmlns="http://schemas.taskletfactory.com/MDMF/MobileWMS/Services/2009/01/ServiceConfiguration.xsd"> <validation> <fromBin enabled="true" requestDocumentName="ValidateFromBin" /> <toBin enabled="true" requestDocumentName="ValidateToBin" /> </validation> </configuration> </add>
The requestDocumentName
has to match the document handler on the backend. The values in the example show the default values which will be used if the requestDocumentName
attribute is omitted.
Request from the mobile client to the ERP system
The mobile application sends a request with the parameters shown below.
<?xml version="1.0" encoding="utf-16"?> <request name="ValidateFromBin" created="2015-02-13T14:28:49+01:00" xmlns="http://schemas.microsoft.com/Dynamics/Mobile/2007/04/Documents/Request"> <requestData name="ValidateFromBin"> <orderType>Pick</orderType> <orderBackendId>PI000059</orderBackendId> <lineNumber>90000</lineNumber> <itemNumber>TF-004</itemNumber> <bin>W-02-0001</bin> </requestData> </request>
Related JIRA Issues