How To Generate Ledger Dimension Name X++ D365fo
static str 300 generateLedgerDimensionName(MainAccountNum _mainAccountId, DimensionValue _purpose, DimensionValue _sector, DimensionValue _department, DimensionValue _worker) { container conData; int hierarchyCount; int hierarchyIdx; LedgerRecId ledgerRecId; MainAccount mainAccount; RefRecId recordvalue; DimensionAttribute dimensionAttribute; DimensionAttributeValue dimensionAttributeValue; DimensionSetSegmentName DimensionSet; DimensionStorage dimStorage; DimensionAttributeValueContract ValueContract; LedgerAccountContract LedgerAccountContract; DimensionAttributeValueCombination dimensionAttributeValueCombination; List valueContracts; DimensionFinancialTag _DimensionFinancialTag,_DimensionFinancialTag2; str 300 DimensionName; OMDepartmentRecId primaryDepartmentRecId, HcmWorkerRecId; OMOperatingUnit omDepartment; OMOperatingUnitNumber _OMOperatingUnitNumber = ""; #define.MainAccount('MainAccount') #define.Purpose('Purpose') #define.Sector('Sector') #define.Department('Department') #define.Worker('Worker') #define.Language('en-gb') LedgerAccountContract = new LedgerAccountContract(); valueContracts = new List(Types::Class); conData =[_mainAccountId]; HcmWorkerRecId = HCMWorker::findByPersonnelNumber(_worker).RecId; DimensionName = ""; if(_mainAccountId != "") { DimensionName = DimensionName + " - " + MainAccount::findByMainAccountId(_mainAccountId).Name; } mainAccount = MainAccount::findByMainAccountId(_mainAccountId); recordvalue = DimensionHierarchy::getAccountStructure(mainAccount.RecId,Ledger::current()); hierarchyCount = DimensionHierarchy::getLevelCount(recordvalue); DimensionSet = DimensionHierarchyLevel::getDimensionHierarchyLevelNames(recordvalue); if (recordvalue) { for(hierarchyIdx = 1;hierarchyIdx<=hierarchyCount;hierarchyIdx++) { if(hierarchyIdx == 1) continue; dimensionAttribute = DimensionAttribute::findByLocalizedName(DimensionSet[hierarchyIdx],false,#Language); //if (dimensionAttribute.Name == #MainAccount) //{ // // //conData += [_mainAccountId]; //} if (dimensionAttribute.Name == #Purpose) { Select _DimensionFinancialTag Where _DimensionFinancialTag.FinancialTagCategory == 5637144576 && _DimensionFinancialTag.Value == _purpose; DimensionName = DimensionName + " - " + _DimensionFinancialTag.Description; //conData += [_purpose]; } if (dimensionAttribute.Name == #Sector) { Select _DimensionFinancialTag2 Where _DimensionFinancialTag2.FinancialTagCategory == 5637145326 && _DimensionFinancialTag2.Value == _sector; DimensionName = DimensionName + " - " + _DimensionFinancialTag2.Description; //conData += [_sector]; } if (dimensionAttribute.Name == #Department) { select omDepartment where omDepartment.OMOperatingUnitNumber == _department && omDepartment.OMOperatingUnitType == OMOperatingUnitType::OMDepartment; if (omDepartment != null) { DimensionName = DimensionName + " - " + omDepartment.Name; } //conData += [_department]; } if (dimensionAttribute.Name == #Worker) { DimensionName = DimensionName + " - " + HCMWorker::findByPersonnelNumber(_worker).name(); //conData += [_worker]; } } } else { warning(strfmt("Ledger dimension Issue for main account %1", _mainAccountId)); } return DimensionName; }
This Code Written By Mohamed Elsagher
Comments
Post a Comment