// 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;
...
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);
...
Use this event to:
...
Template
...
Use this event to:
Excerpt |
---|
Handle custom Unplanned Functions business logic using XmlDom. |
If you are using MOB5.15 (or newer) consider using the OnPostAdhocRegistrationOnCustomRegistrationType event instead.
Template
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Adhoc Registr.", 'OnPostAdhocRegistrationOnCustomRegistrationTypeAsXml', '', true, true)]
local procedure OnPostAdhocRegistrationOnCustomRegistrationTypeAsXml(_MessageId: Guid; var _XMLRequestDoc: XmlDocument; var _XMLResponseDoc: XmlDocument; _RegistrationType: Text; var _RegistrationTypeTracking: Text[200]; var _IsHandled: Boolean)
var
MobDocQueue: Record "MOB Document Queue";
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
// .....
// Optional: Read MobDocQueue to i.e. read device id
MobDocQueue.GetByGuid(_MessageId, MobDocQueue);
// 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 MyOnPostAdhocRegistrationOnCustomRegistrationTypeAsXml(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";
MobWmsToolbox: Codeunit "MOB WMS Toolbox";
MobWmsLanguage: Codeunit "MOB WMS Language";
XmlRequestNode: XmlNode;
XmlRequestDataNode: XmlNode;
XmlParameterNode: XmlNode;
XmlNodesList: XMLNodeList;
ItemNumber: Code[50];
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(CopyStr(MobXmlMgt.GetNodeInnerText(XmlParameterNode), 1, MaxStrLen(ItemNumber)));
'WhseClassCode':
WhseClassCode := CopyStr(MobXmlMgt.GetNodeInnerText(XmlParameterNode), 1, MaxStrLen(WhseClassCode));
end;
end;
_ReturnRegistrationTypeTracking := 'SetWhseClassCode: ' +
Item.TableCaption() + ' ' +
ItemNumber + ' ' +
Item.FieldCaption("Warehouse Class Code") + ' ' +
WhseClassCode;
// Perform the posting
if not Item.Get(ItemNumber) then
Error(MobWmsLanguage.GetMessage('ITEM_EXIST_ERR'), ItemNumber ItemNumber));
if WhseClassCode <> Item
if WhseClassCode <> Item."Warehouse Class CodeWarehouse Class Code" then begin
Item Item.Validate("Warehouse Class CodeWarehouse Class Code", WhseClassCode WhseClassCode);
Item Item.Modify(true);
end end;
exit(STRSUBSTNO('Warehouse Class Code set for %1', ItemNumber
exit(CopyStr(StrSubstNo('Warehouse Class Code set for %1', ItemNumber), 1, 60));
end;
Version History
Version | Changes |
---|---|
MOB5.00 | Introduced |
MOB5.17 | New parameter _MessageId |