Tuesday, 10 September 2019

default dimension to ledger dimension x++

class INTC_GenerateDimension
{
    public DimensionDefault generateDefaultDimension(container _conAttr, container _value, boolean _createIfNotFound = true)
    {
        DimenSionAttributevalueSetStorage       valueSetStorage =   new DimenSionAttributevalueSetStorage();
        DimensionDefault                        result;
        DimensionAttribute                      dimensionAttribute;
        DimensionAttributeValue                 dimensionAttributeValue;
        container                               conAttr     =   _conAttr;
        container                               conValue    =   _value;
        str                                     dimValue;
        int i;

        for(i=1; i<=conLen(conAttr); i++)
        {
            dimensionAttribute  =   DimensionAttribute::findByName(conPeek(conAttr, i));

            if(dimensionAttribute.RecId ==0)
            {
                continue;
            }
            dimValue    =   conPeek(conValue, i);

            if(dimValue != "")
            {
                dimensionAttributeValue =   DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, dimValue, false, _createIfNotFound);
                valueSetStorage.addItem(dimensionAttributeValue);
            }
        }
        result  =   valueSetStorage.save();
        return  result;
    }

    public void dimPattern()
    {
        container                               attrCon, valueCon;
        DimensionDefault                        defaultDimensionRecId, ledDimRecId, finLedgerDimValue;
        DimensionAttributeValueCombination      dimensionAttributeValueCombination;
        attrCon     =   ["BusinessUnit", "Department", "Project", "ServiceLine"];
        valueCon    =   ["004", "023", "00000007", "Application Development"];

        defaultDimensionRecId   =   this.generateDefaultDimension(attrCon, valueCon);
        MainAccount mainAccount =   MainAccount::findByMainAccountId("555551");
        ledDimRecId =   LedgerDefaultAccountHelper::getDefaultAccountFromMainAccountId("555551");
        int64   offsetDim     =  LedgerJournalName::find("GenJrn").OffsetLedgerDimension;
        int64   offseDimRecId =  LedgerDefaultAccountHelper::getDefaultAccountFromLedgerDimension(offsetDim);
        finLedgerDimValue   =   LedgerDimensionFacade::serviceCreateLedgerDimension(ledDimRecId, defaultDimensionRecId);

        info(strFmt("Ledger dimension : %1", finLedgerDimValue));

       

        select dimensionAttributeValueCombination where dimensionAttributeValueCombination.RecId    ==  finLedgerDimValue;

        info(strFmt("Display value : %1", dimensionAttributeValueCombination.DisplayValue));
    }

    public static void Main(Args _args)
    {
        INTC_GenerateDimension      generateDimension   = new INTC_GenerateDimension();
        generateDimension.dimPattern();
    }

}

No comments:

Post a Comment