How to display product image after selecting the item in Picking and Ad-Hoc picking

  • Updated

This note describes how to display product image after selecting the item in Ad-Hoc picking

There is a HookScript in the system that is triggered after selecting an item.

Item Configuration

I added a picture to the item in the Item master Data. I am going to load this filename and path from table ATC1inthescript.

Changing the Workflow script

Open the script of AdHocAfterItemToPickSelectedHookScript from Organizational Structure > Company object > Workflows tab, and replace the content of the script by the script below.

For Picking flow you can use PickingAfterItemToPickIdentifiedHookScript. The example code was made for the AdHoc process.


The Mobile Client application must be restarted.

I am using the IShowImageScreen in the script. This object will display the image.

TitleKey: set the title of the screen

MessageKey: adding text to the screen

ImagePath: defining the path of the picture


script:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Globalization;
using System.Reflection;
using System.Text;
using System.Transactions;
using Produmex.Foundation;
using Produmex.Foundation.Barcode;
using Produmex.Foundation.Data;
using Produmex.Foundation.Data.Sbo;
using Produmex.Foundation.Data.Sbo.BusinessObjects;
using Produmex.Foundation.Data.Sbo.BusinessObjects.Convertors;
using Produmex.Foundation.Data.Sbo.BusinessObjects.Definitions;
using Produmex.Foundation.Data.Sbo.BusinessObjects.Definitions.Tables;
using Produmex.Foundation.Data.Sbo.DataObjects;
using Produmex.Foundation.Data.Sbo.Providers;
using Produmex.Foundation.Data.Sbo.Utilities;
using Produmex.Foundation.Data.SqlClient;
using Produmex.Foundation.Diagnostics;
using Produmex.Foundation.GS1;
using Produmex.Foundation.Messages;
using Produmex.Foundation.SlimScreen;
using Produmex.Foundation.SlimScreen.Interfaces;
using Produmex.Foundation.SlimScreen.Interfaces.Definitions;
using Produmex.Foundation.SlimScreen.Interfaces.Definitions.DataObjects;
using Produmex.Foundation.SlimScreen.Interfaces.Definitions.KnownDataSets;
using Produmex.Foundation.SlimScreen.WinGui;
using Produmex.Foundation.Utilities;
using Produmex.Foundation.Workflows;
using Produmex.Foundation.Workflows.Parameters;
using Produmex.Foundation.Wwf.Sbo;
using Produmex.Foundation.Wwf.Sbo.DataObjects;
using Produmex.Foundation.Wwf.Sbo.LocalServices;
using Produmex.Sbo.Logex.Data.BusinessObjects;
using Produmex.Sbo.Logex.Data.BusinessObjects.Definitions;
using Produmex.Sbo.Logex.Data.BusinessObjects.Definitions.Tables;
using Produmex.Sbo.Logex.Data.DataObjects;
using Produmex.Sbo.Logex.Data.Devices;
using Produmex.Sbo.Logex.Data.Generators.BatchNumberGenerators;
using Produmex.Sbo.Logex.Data.Generators.PackingController;
using Produmex.Sbo.Logex.Data.Providers;
using Produmex.Sbo.Logex.Data.ViewObjects.Definitions.Views;
using Produmex.Foundation.Messages;
using Produmex.Foundation.SlimScreen;
using Produmex.Foundation.Wwf.Sbo.LocalServices;

namespace Produmex.Sbo.Logex.WorkflowScripts
{
  public class WorkflowScript_AdHocAfterItemToPickSelectedHookScript : WorkflowInstanceScriptBase
  {
      private static readonly ILog s_log = LogProvider.GetLogger(MethodInfo.GetCurrentMethod().DeclaringType);
      // Input parameters * do not change *
      public ReadOnlyBinder<CultureInfo> DefaultCultureInfo;
      public ReadOnlyBinder<PmxOseCompany> PmxOseCompany;
      public ReadOnlyBinder<PmxItemInfo> ItemInfo;
      public ReadOnlyBinder<int> PickListDocEntry;
      public ReadOnlyBinder<string> PmxWhsCode;
      public ReadOnlyBinder<DataRow> SelectedProductDataRow;
      // Output parameters * do not change *
      public ReadWriteBinder<bool> BackRequested;
      // Sub-flows
      // <none>
      public WorkflowScript_AdHocAfterItemToPickSelectedHookScript(WorkflowInstanceBase parent, WorkflowInstanceFactory factory)
          : base(parent, factory)
      {
      }
      #region WorkflowInstanceScriptBase Members

        protected override void Execute()
      {
          // Parameters in scope
          Session session = GetScopeParameter("Session") as Session;
          ISboProviderService sboProviderService = GetScopeParameter("<WwfService>ISboService") as ISboProviderService;
DataSet dsItemImage = null;

          string query = BuildQuery.GetImagePath(ItemInfo.Get().ItemCode);
dsItemImage = sboProviderService.RunView(false, null, null, query);
if ( dsItemImage.Tables.Count > 0 )
{

Message msg = null;
session.ShowScreen(typeof(Produmex.Foundation.SlimScreen.Interfaces.IShowImageScreen),
                this.DefaultCultureInfo, BuildParamCollection(

                              "TitleKey", "Picture of the product",
                              "MessageKey", ItemInfo.Get().ItemCode + " " + dsItemImage.Tables[0].Rows[0]["Attachment"].ToString(),
                              "ImagePath", dsItemImage.Tables[0].Rows[0]["Attachment"].ToString(),
                              "ShowButton", true
                              ));
                msg = WaitForMessage();
}
      }
      #endregion

      #region BUILD QUERY
      internal static class BuildQuery
      {
          public static string GetImagePath(string item)
          {
return "select \"Attachment\" from OITM as A inner join ATC1 as B on A.\"AtcEntry\"=B.\"AbsEntry\" where A.\"ItemCode\" = '" + item + "'";
          }
      }
      #endregion
  }
}

 

 

Was this article helpful?

0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.