Showing posts with label Lookup fields filter based on the parent lookup using UiBuilder in ax2012. Show all posts
Showing posts with label Lookup fields filter based on the parent lookup using UiBuilder in ax2012. Show all posts

Tuesday, 13 February 2018

Lookup fields filter based on the parent lookup using UiBuilder.

Lookup filter in Ax 2012 R3

sub:Lookup fields filter based on the parent lookup using UiBuilder.

UiBuilder class:

class LookUpFilterUiBuilder extends SysOperationAutomaticUIBuilder
{

//Author : Rajaram E
//Title : Lookup fields filter based on the parent lookup using UiBuilder.

    DialogField                     dlgBusinessGroup;
    DialogField                     dlgBranch;
    UiBuilderContract           contract;
}

public void build()
{
    // build ui
    Dialog      dialogLocal = this.dialog();
    contract = this.dataContractObject();

    this.addDialogField(methodStr(UiBuilderContract,parmBusinessGroup), contract);
    this.addDialogField(methodStr(UiBuilderContract,parmBranch), contract);

}

public void businessGroupLookup(FormStringControl _formStringControl)
{
    Query query = new Query();// query
    SysTableLookup sysTablelookup;// lookup

    sysTableLookup = SysTableLookup::newParameters(tableNum(OMHierarchyType),_formStringControl);
    sysTableLookup.addLookupfield(fieldNum(OMHierarchyType,Name));

    query.addDataSource(tableNum(OMHierarchyType));// adding table in query

    sysTableLookup.ParmQuery(query);  // run query
    sysTableLookup.PerformFormLookup();// enable lookup

}

public boolean businessGroupModified(FormStringControl _control)
{
    // while modified to be related tavle should be clear
    dlgBusinessGroup.value(_control.valueStr());
    dlgBranch.value('');
    return true;
}

// branch method
public void organizationvaluelookup(FormStringControl _formStringControl)
{
    Query query = new Query();
    SysTableLookup               sysTablelookup;
    QueryBuildDataSource    Qbds, Qbds1, Qbds2;
    QueryBuildRange             queryBuildRange;
    ;
    sysTableLookup = SysTableLookup::newParameters(tableNum(OMOperatingUnit),_formStringControl);// lookup table and fields
    sysTableLookup.addLookupfield(fieldNum(OMOperatingUnit,OMOperatingUnitNumber),true);// this is the parameter field
    sysTableLookup.addLookupfield(fieldNum(OMOperatingUnit,Name));// display name

    Qbds = query.addDataSource(tableNum(OMOperatingUnit));// adding first table in the query
    Qbds1=Qbds.addDataSource(tableNum(OMHierarchyRelationship));//adding second datasource inside first datasource
    Qbds1.joinMode(JoinMode::InnerJoin);// join
    Qbds1.addLink(fieldNum(OMOperatingUnit, RecId), fieldNum(OMHierarchyRelationship, ChildOrganization));// relationship for both table

    Qbds2=Qbds1.addDataSource(tableNum(OMHierarchyType));// adding thired table
    Qbds2.joinMode(JoinMode::InnerJoin);// join mode
    Qbds2.addLink(fieldNum(OMHierarchyType,RecId), fieldNum(OMHierarchyRelationship,HierarchyType));// relationship
    Qbds2.addRange(fieldNum(OMHierarchyType,Name)).value(dlgBusinessGroup.value());//adding range value from first lookup based

    sysTableLookup.ParmQuery(query);
    sysTableLookup.PerformFormLookup();

}


public void getFromDialog()
{
    contract = this.dataContractObject();
    super();
}


public void postRun()
{
    super();
}

public void initializeFields()
{
    contract = this.dataContractObject();
}


public void postBuild()
{
    super();
    // business group
    dlgBusinessGroup = this.bindInfo().getDialogField(
                         this.dataContractObject(),
                         methodStr(UiBuilderContract, parmBusinessGroup));

    if (dlgBusinessGroup)
    {
        dlgBusinessGroup.lookupButton(2);
    }
    dlgBusinessGroup.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(LookUpFilterUiBuilder, businessGroupLookUp), this);
    dlgBusinessGroup.registerOverrideMethod(methodStr(FormStringControl, modified), methodStr(LookUpFilterUiBuilder, businessGroupModified), this);

    // branch
    dlgBranch = this.bindInfo().getDialogField(
                         this.dataContractObject(),
                         methodStr(UiBuilderContract,parmBranch));

    dlgBranch.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(LookUpFilterUiBuilder, organizationvaluelookup), this);

    if (dlgBranch)
    {
        dlgBranch.lookupButton(2);
    }


}





Step-by-Step Guide to Restore a SQL BACPAC File - Microsoft dynamics D365 Fin & Ops

 Restore steps for bacpac file in to SQL server - Microsoft dynamics D365 Fin & Ops. Log in to LCS and navigate to the asset library. On...