This post outlines the steps; how to add financial dimensions (segmented control) in a grid in D365O.
Let’s assume we are adding new table and form for below explanation;
New table contains two fields AccountType and LedgerDimension with relation to DimensionAttributeValueCombination table
Form looks like this;
Set properties for segmented control under form design;
– Auto declaration = Yes
– Account type field = AccountType
– Controller class = DimensionDynamicAccountController
– Filter expression = %1
1. Override modified method for LedgerDimension field under form’s datasource
2. Override lookup and checkUserCustomLookup method on ledger dimension segmented control in form desgin
Datasource | D365O_FinancialDimension | LedgerDimension | modified
[DataSource]
class D365O_FinancialDimension
{
[DataField]
class LedgerDimension
{
void modified()
{
super();
D365O_FinancialDimension_ds.refresh();
}
}
}
Desgin | D365O_FinancialDimension_LedgerDimension | lookup
public void lookup()
{
switch (D365O_FinancialDimension.AccountType)
{
case LedgerJournalACType::Bank:
BankAccountTable::lookupBankAccount(this);
break;
case LedgerJournalACType::Cust:
CustTable::lookupCustomer(this);
break;
case LedgerJournalACType::FixedAssets:
AssetTable::lookupAccountNum(this);
break;
case LedgerJournalACType::Project:
ProjTable::lookupProjId(this, D365O_FinancialDimension);
break;
case LedgerJournalACType::Vend:
VendTable::lookupVendor(this);
break;
default:
super();
break;
}
}
Desgin | D365O_FinancialDimension_LedgerDimension | checkUserCustomLookup
public boolean checkUseCustomLookup(int _accountTypeEnumValue, int _secondaryAccountTypeEnumValue)
{
boolean returnValue;
LedgerJournalACType accountType = any2Enum(_accountTypeEnumValue);
switch (accountType)
{
case LedgerJournalACType::Bank:
case LedgerJournalACType::Cust:
case LedgerJournalACType::FixedAssets:
case LedgerJournalACType::Project:
case LedgerJournalACType::Vend:
returnValue = true;
break;
default:
returnValue = false;
break;
}
return returnValue;
}
Set D365O_FinancialDimensions form as startup object and run the form.
If you just want to see MainAccount in segmented control.
set the segmented control property Is default account = True