Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

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::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
  • No labels