Split Financial Dimension x++ :
static void
getDimensionCombinationValues(Args _args)
{
// DimensionAttributeValueCombination stores the
combinations of dimension values
// Any tables that uses dimension combinations for main account and dimensions
// Has a reference to this table’s recid
DimensionAttributeValueCombination
dimAttrValueComb;
//GeneralJournalAccountEntry is one such tables that
refrences DimensionAttributeValueCombination
GeneralJournalAccountEntry
gjAccEntry;
// Class Dimension storage is used to store and manipulate
the values of combination
DimensionStorage
dimensionStorage;
// Class DimensionStorageSegment will get specfic segments
based on hierarchies
DimensionStorageSegment segment;
int segmentCount, segmentIndex;
int hierarchyCount,
hierarchyIndex;
str segmentName,
segmentDescription;
SysDim
segmentValue;
;
//Get one record for demo purpose
gjAccEntry = GeneralJournalAccountEntry::find(5637196405);
setPrefix("Dimension
values fetching");
//Fetch the Value combination record
dimAttrValueComb =
DimensionAttributeValueCombination::find(gjAccEntry.LedgerDimension);
setPrefix("Breakup
for " + dimAttrValueComb.DisplayValue);
// Get dimension storage
dimensionStorage =
DimensionStorage::findById(gjAccEntry.LedgerDimension);
if (dimensionStorage == null)
{
throw error("@SYS83964");
}
// Get hierarchy count
hierarchyCount = dimensionStorage.hierarchyCount();
//Loop through hierarchies to get individual segments
for(hierarchyIndex = 1; hierarchyIndex <= hierarchyCount;
hierarchyIndex++)
{
setPrefix(strFmt("Hierarchy: %1",
DimensionHierarchy::find(dimensionStorage.getHierarchyId(hierarchyIndex)).Name));
//Get segment count for hierarchy
segmentCount =
dimensionStorage.segmentCountForHierarchy(hierarchyIndex);
//Loop through segments and display required values
for (segmentIndex = 1; segmentIndex <= segmentCount;
segmentIndex++)
{
// Get segment
segment = dimensionStorage.getSegmentForHierarchy(hierarchyIndex,
segmentIndex);
// Get the segment information
if (segment.parmDimensionAttributeValueId()
!= 0)
{
// Get segment name
segmentName =
DimensionAttribute::find(DimensionAttributeValue::find(segment.parmDimensionAttributeValueId()).DimensionAttribute).Name;
//Get segment value (id of the dimension)
segmentValue =
segment.parmDisplayValue();
//Get segment value name (Description for
dimension)
segmentDescription = segment.getName();
info(strFmt("%1: %2, %3", segmentName, segmentValue,
segmentDescription));
}
}
}
}
display
InvoiceId invoiceId()
{
return (select firstonly Invoice from
ledgerJournalTrans
where
ledgerJournalTrans.Voucher ==
generalJournalEntry.SubledgerVoucher
&&
ledgerJournalTrans.TransDate ==
generalJournalEntry.AccountingDate &&
ledgerJournalTrans.DataAreaId == generalJournalEntry.SubledgerVoucherDataAreaId).Invoice;
}
0 comments:
Post a Comment