public DimensionDynamicAccount generateLedgerDimension(str _mainAccount, container _conData)
{
int i;
LedgerRecId ledgerRecId;
DimensionAttribute dimensionAttribute;
DimensionAttributeValue dimensionAttributeValue;
DimensionStorage dimStorage;
LedgerAccountContract ledgerAccountContract = new LedgerAccountContract();
DimensionAttributeValueContract valueContract;
List valueContracts = new List(Types::Class);
DimensionAttributeValueCombination dimensionAttributeValueCombination;
container conAttr = ["EntityName","CentreName","departmentName"];
for (i = 1; i <= conLen(conAttr); i++)
{
dimensionAttribute = DimensionAttribute::findByName(conPeek(conAttr, i));
if (dimensionAttribute.RecId == 0)
{
continue;
}
if (dimensionAttribute)
{
dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,
conPeek(_conData, i));
if (dimensionAttributeValue)
{
valueContract = new DimensionAttributeValueContract();
valueContract.parmName(dimensionAttribute.Name);
valueContract.parmValue(dimensionAttributeValue.CachedDisplayValue);
valueContracts.addEnd(valueContract);
}
}
}
ledgerAccountContract.parmMainAccount(_mainAccount);
ledgerAccountContract.parmValues(valueContracts);
dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(ledgerAccountContract);
dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());
ledgerRecId = dimensionAttributeValueCombination.RecId;
return ledgerRecId;
}