Friday, July 5, 2013

Creating new ledger dimension for the given combination of dimension in Ax 2012

private LedgerDimensionDefaultAccount gettingLedgerDimensionAll(LedgerDimensionDefaultAccount _ledgerJournalId, HcmPersonnelNumberId _emplId)
{
HcmWorker HcmWorker;
HcmEmployment HcmEmployment;
DimensionAttributeValueSetItem DimensionAttributeValueSetItem;
RefRecId emplDimAttrRecId; // For ex. purpose defaulting it to required DimensionAttributeValueSet RecordId

LedgerDimensionAccount ledgerDimension; // Record id for LedgerDimension(DimensionAttributeValueCombination) containing combination of dimensions
RefRecId dimensionRecId; // For ex. purpose defaulting it to required DimensionAttributeValueSet RecordId
LedgerDimensionAccount mainAccDimension; // Record id for LedgerDimension(DimensionAttributeValueCombination) containing default account for main account RecId
DimensionValue MainAccount;
MainAccount = this.gettingMainAccount(_ledgerJournalId);
select HcmWorker
where HcmWorker.PersonnelNumber==_emplId
join HcmEmployment
where HcmEmployment.Worker==HcmWorker.RecId //5637144698
join DimensionAttributeValueSetItem
where DimensionAttributeValueSetItem.DimensionAttributeValueSet==HcmEmployment.DefaultDimension; //5637145447

dimensionRecId = HcmEmployment.DefaultDimension;//5637145447
emplDimAttrRecId = DimensionAttributeValueSetItem.DimensionAttributeValueSet; //5637145447

// Get the default account for main account
mainAccDimension = DimensionStorage::getDefaultAccountForMainAccountNum(MainAccount); //5637160041

//Find or create the LedgerDimension record for required combination
//Param1 – Ledger Dimension record id, in our case Default account for main account
//Param2 – Default Dimension Record Id for 1st Dimension Combination
//Param3 – Default Dimension Record Id for 2nd Dimension Combination
//Param4 – Default Dimension Record Id for 3rd Dimension Combination

ledgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension(
mainAccDimension,
dimensionRecId,
emplDimAttrRecId);
//5637157272:

//info(strFmt("%1: %2", ledgerDimension, DimensionAttributeValueCombination::find(ledgerDimension).DisplayValue));
return ledgerDimension;
}

2 comments: