Versions Compared

Key

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

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

Use this event to:

Excerpt

Handle Custeom Custom Registration Type for Adhoc PostRegistrationConfiguration Document Type.

Extract values from XML Request Doc and handle business logic for the Custom Registration Type.



Template

...

[EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Adhoc Registr.", 'OnPostAdhocRegistrationOnCustomRegistrationType''', true, true)]
local procedure OnPostAdhocRegistrationOnCustomRegistrationType(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.", 'OnPostAdhocRegistrationOnCustomRegistrationType', '', true, true)]
local procedure OnPostAdhocRegistrationOnCustomRegistrationType(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

...