Use this event to:
Handle Custom Registration Type for Adhoc PostRegistrationConfiguration Document Type.
Extract values from XML Request Doc and handle business logic for the Custom Registration Type.
If you are using MOB5.15 (or newer) consider using the event instead.Template
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Adhoc Registr.", 'OnPostAdhocRegistrationOnCustomRegistrationTypeAsXml', '', true, true)]
local procedure OnPostAdhocRegistrationOnCustomRegistrationTypeAsXml(var _XMLRequestDoc: XmlDocument; var _XMLResponseDoc: XmlDocument; _RegistrationType: Text; var _RegistrationTypeTracking: Text[200]; var _IsHandled: Boolean)
var
MOBToolbox: Codeunit "MOB Toolbox";
Status: Text;
begin
if _RegistrationType = 'MyCustomRegistrationType' then begin // Replace constant 'MyCustomRegistrationType' with your own RegistrationType
if _IsHandled then
exit;
// Add your business logic here
// .....
// Always return a response text to the front-end
Status := 'OK';
MOBToolbox.CreateSimpleResponse(_XMLResponseDoc, Status);
// Return that this registration type was handled
_IsHandled := true;
end;
end;
Example
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Adhoc Registr.", 'OnPostAdhocRegistrationOnCustomRegistrationTypeAsXml', '', true, true)]
local procedure OnPostAdhocRegistrationOnCustomRegistrationTypeAsXml(var _XMLRequestDoc: XmlDocument; var _XMLResponseDoc: XmlDocument; _RegistrationType: Text; var _RegistrationTypeTracking: Text[200]; var _IsHandled: Boolean)
var
MOBToolbox: Codeunit "MOB Toolbox";
Status: Text;
begin
if _RegistrationType = 'SetWhseClassCode' then begin
if _IsHandled then
exit;
Status := PostSetWhseClassCodeRegistration(_XMLRequestDoc, _RegistrationTypeTracking);
MOBToolbox.CreateSimpleResponse(_XMLResponseDoc, Status);
_IsHandled := true;
end;
end;
procedure PostSetWhseClassCodeRegistration(_XMLRequestDoc: XmlDocument; var _ReturnRegistrationTypeTracking: Text[200]): Text[60];
var
Item: Record Item;
MobXMLMgt: Codeunit "MOB XML Management";
MobToolbox: Codeunit "MOB Toolbox";
MobWMSToolbox: Codeunit "MOB WMS Toolbox";
MobWmsLanguage: Codeunit "MOB WMS Language";
XMLRequestNode: XmlNode;
XMLRequestDataNode: XmlNode;
XMLParameterNode: XmlNode;
XMLNodesList: XMLNodeList;
ItemNumber: Code[20];
i: Integer;
WhseClassCode: Code[10];
begin
// Extract any parameters from the XML
// The parameters are located in the <requestData> element
MobXMLMgt.GetDocRootNode(_XMLRequestDoc, XMLRequestNode);
MobXMLMgt.FindNode(XMLRequestNode, MobWMSToolbox."CONST::requestData"(), XMLRequestDataNode);
// Loop over the registration values. We don't know which values will be present because it is configurable
// The values are added to the relevant journal if they have been registered on the mobile device
MobXMLMgt.GetNodeChildNodes(XMLRequestDataNode, XMLNodesList);
for i := 1 to XMLNodesList.Count() do begin
MobXMLMgt.GetListItem(XMLNodesList, XMLParameterNode, (i)); // AL = 1 based index
case MobXMLMgt.GetNodeName(XMLParameterNode) of
'ItemNumber':
ItemNumber := MobWMSToolbox.GetItemNumber(MOBToolbox.ReadMisc(MobXMLMgt.GetNodeInnerText(XMLParameterNode)));
'WhseClassCode':
WhseClassCode := MobXMLMgt.GetNodeInnerText(XMLParameterNode);
end;
end;
_ReturnRegistrationTypeTracking := 'SetWhseClassCode: ' +
Item.TableCaption() + ' ' +
ItemNumber + ' ' +
Item.FieldCaption("Warehouse Class Code") + ' ' +
WhseClassCode;
// Perform the posting
if not Item.GET(ItemNumber) then
ERROR(STRSUBSTNO(MobWmsLanguage.GetMessage('ITEM_EXIST_ERR'), ItemNumber));
if WhseClassCode <> Item."Warehouse Class Code" then begin
Item.Validate("Warehouse Class Code", WhseClassCode);
Item.Modify(true);
end;
exit(STRSUBSTNO('Warehouse Class Code set for %1', ItemNumber));
end;
Version History
Version | Changes |
---|---|
MOB5.00 | Introduced |