Add lookup to batch dialog

Add lookup to Batch dialog












Step 1: Creating a batch job parameter creates a contract class containing a reference to the UI builder class.

Code:
 [DataContractAttribute,
   SysOperationContractProcessingAttribute(ClassStr(Name UI Builder Class))]

class  Lok_CustomerPaymentContract
{
    LedgerJournalNameId     journalName;

    [
        DataMemberAttribute,
        SysOperationLabelAttribute(literalStr("As per required ")),
        SysOperationDisplayOrderAttribute('1')
    ]
   
   public   LedgerJornalNameId    parmJournalName(LedgerJournalNameId   _journalName =           journalName)
  {
       JournalName = _journalName;
       return   journalName;
  }

}


Step 2: Now Create UI Builder Class to customize the parameter.


class Lok_CustomerPaymentUIbuilder   extends SysOperationAutomaticUIBuilder
{
    #define.lookupAlways(1)
    DialogField       journalNameField;

    public  void postBuild()
  {
       super();
       journalNameField  = this.bindInfo().getDialogField(
           methodstr(Lok_CustomerPaymentContract, parmjournalName));

        journalNameField.lookupButton(#lookupAlways);
   }

    public  void postRun()
   {
       super();
       journalNameField.registerOverrideMethod(methodstr(FormStringControl, lookup),
           methodstr(Lok_CutomerPaymentUIBuilder, nameLookup), this);
   } 

    public  void   nameLookup(FormStringControl  _control)
   {
       Query                                  q; 
       QueryBuildDataSource       qbds; 
       SysTableLookup                  stl;
       QueryBuildRange                qbr;

        q = new Query();
        qbds = q.addDataSource(tableNum(LedgerJournalName));
        qbds.field().clearFieldList();
        qbds.field().addField(fieldNum(LedgerjournalName, JournalName));
        qbds.addGroupByField(fieldNum(LedgerJournalName, JournalName));
 
        qbr= qbds.addRange(fieldNum(LedgerJournalName, JournalType));
        qbr.value(enum2str(LedgerJournalType::Custpayment));

        stl = SysTableLookup::newParameter(tableNum(LedgerJournalName, JournalName));
        stl.addLookup(fieldNum(LedgerJournalName, JournalName));
        stl.parmQuery(q);
        stl.performFormLookup():     
   }
}


Now Create a class with a member and Bussiness Logic. 
Now to call BatchJob Create an action menu item. 

Comments

Popular posts from this blog

Configuring and using the Excel Data Connector add-in in D365 F&O

Configuring Power BI in D365 Finance and Operation

How to Change report title in SSRS Report in D365 F&O