Create record in DimensionAttributeValueCombination table manually.
Sometime we need this RecId
value in DimansionAttributeValueCombination
Table for some reasons likes putting new dimension in LedgerDimension
field in LedgerJournalTrans
Table, or somewhere else.
Suppose my Account structure likes: MainAcct - Dept - Woker - SubAcct - Item, you can custom base on your struture.
This code is for creating a record into DimansionAttributeValueCombination
in code and then get RecID
of this.
static void createDimensionAttributeValueCombination(Args _args)
{
DimensionAttributeValueContract ValueContract;
DimensionAttributeValueCombination davc;
MainAccount valueMainAccount;
DimensionStorage dimStorage;
DimensionServiceProvider DimensionServiceProvider = new DimensionServiceProvider();
LedgerAccountContract LedgerAccountContract = new LedgerAccountContract();
List ListValueContract = new List(Types::Class);
// Get main account with structure : Mainacct - DE - woker - subacct - item
valueMainAccount = MainAccount::findByMainAccountId('910001'); //Get main account
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Department') ;
ValueContract.parmValue('6020'); //Value for dimension Department
ListValueContract.addEnd(ValueContract);
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Worker') ;
ValueContract.parmValue('000001'); //Value for dimension ExpenseCode
ListValueContract.addEnd(ValueContract);
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('SubAcct') ;
ValueContract.parmValue('교보생명'); //Value for dimension Project
ListValueContract.addEnd(ValueContract);
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Item') ;
ValueContract.parmValue('110329'); //Value for dimension Project
ListValueContract.addEnd(ValueContract);
LedgerAccountContract.parmMainAccount(valueMainAccount.MainAccountId);
LedgerAccountContract.parmValues(ListValueContract);
//if combination is not exist then create new one
dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);
davc = DimensionAttributeValueCombination::find(dimStorage.save());
info(strFmt("RecId : %1 - DisplayValue : %2", davc.RecId, davc.DisplayValue));
}
or you can use this way
static void createDimension(Args _args)
{
Struct struct = new Struct();
container financialDimension;
LedgerDimensionAccount legder;
//// Get main account with structure : Mainacct - DE - woker - subacct - item
struct.add('Department', '6020');
struct.add('Item', '220006');
struct.add('SubAcct', 'Max test account');
struct.add('Worker', '000002');
financialDimension += struct.fields();
financialDimension += struct.fieldName(1);
financialDimension += struct.valueIndex(1);
financialDimension += struct.fieldName(2);
financialDimension += struct.valueIndex(2);
financialDimension += struct.fieldName(3);
financialDimension += struct.valueIndex(3);
financialDimension += struct.fieldName(4);
financialDimension += struct.valueIndex(4);
legder = DimensionDefaultingService::serviceCreateLedgerDimension(
DimensionStorage::getDefaultAccountForMainAccountNum("910001"),
AxdDimensionUtil::getDimensionAttributeValueSetId(financialDimension));
info(strFmt("%1",legder));
}