Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Use this event to:

Excerpt

Handle business logic for the custom RegistrationType.

Extract values from XML Xml Post-Request using XmlDom.

...



If you are using MOB5.15 (or newer) consider using the OnPostAdhocRegistrationOnCustomRegistrationType event instead.


Template

[EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Adhoc Registr.", 'OnPostAdhocRegistrationOnCustomRegistrationTypeAsXml''', true, true)]
local procedure OnPostAdhocRegistrationOnCustomRegistrationTypeAsXml(var _XMLRequestDoc: XmlDocumentvar _XMLResponseDoc: XmlDocument; _RegistrationType: Textvar _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

VersionChanges
MOB5.00Introduced

...