Showing posts with label Default dimension. Show all posts
Showing posts with label Default dimension. Show all posts

Tuesday, May 25, 2021

Set Financial Dimensions by X++ code in AX 2012/Setting one Dimension value in the combination

    /// <summary>
    /// replace specific financial dimension value in DefaultDimension based on the LedgerParameters setup
    /// </summary>
    /// <param name = "_defaultDimensionFrom">DefaultDimension recId the value should be taken from</param>
    /// <param name = "_defaultDimensionTo">DefaultDimension recId the value should be assigned to</param>
    /// <returns>returns new DefaultDimension recId if conditions are met</returns>
    public static DimensionDefault replaceDefaultDim(DimensionDefault _defaultDimensionFrom, DimensionDefault _defaultDimensionTo)
    {
        if(!_defaultDimensionFrom)
        {
            return _defaultDimensionTo;
        }

        LedgerParameters ledgerParameters = LedgerParameters::find();

        if (ledgerParameters.DepartmentSetFinancialDimension &&
            ledgerParameters.DepartmentDimensionAttribute)
        {
            DimensionAttribute                  dimAttr;
            DimensionAttributeValue             dimAttrValue;
            DimensionAttributeValueSetStorage   davss;

            davss = DimensionAttributeValueSetStorage::find(_defaultDimensionTo);

            dimAttr = DimensionAttribute::find(ledgerParameters.DepartmentDimensionAttribute);

            DimensionAttributeValueSetStorage dimStorage = DimensionAttributeValueSetStorage::find(_defaultDimensionFrom);
            DimensionValue dimValue = dimStorage.getDisplayValueByDimensionAttribute(dimAttr.RecId);

            dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttr, dimValue);

            if(dimAttrValue && !davss.containsDimensionAttributeValue(dimAttrValue.RecId))
            {
                davss.addItem(dimAttrValue);

                return davss.save();
            }
        }

        return _defaultDimensionTo;
    }

Monday, April 12, 2021

Create default dimension using X++ in D365fo

        MapEnumerator           mapEnum;
        boolean                  validDim = true;
        List                    _contractList;
        Map                      dimMap = new Map(Types::String, Types::String);
        RecId                    defaultDimension;
        DimensionDefaultContract dimensionDefaultContract = DimensionDefaultContract::construct();

             
       
        
        dimMap.insert('Client', '003501_036');
        
        dimMap.insert('Purpose', '2016GBG');
        
        dimMap.insert('Division', 'CORP');
        
        dimMap.insert('Department', 'ADMIN');
        
        dimMap.insert('Location', 'LOSANGELES');
        
        dimMap.insert('SubDepartment', 'AP');
        
        dimMap.insert('Employee', '100077');
                   
        mapEnum = dimMap.getEnumerator();

        while(mapEnum.moveNext())
        {
            str     dimName, dimValue;
            boolean dimNameValid;

            dimName      = mapEnum.currentKey();
            dimValue     = mapEnum.currentValue();
            
            
            DimensionAttributeValueContract dimAttrValContract = DimensionAttributeValueContract::construct(dimName, dimValue);
            _contractList = dimensionDefaultContract.parmValues();
            _contractList.addEnd(dimAttrValContract);
          
        }

        if(dimensionDefaultContract && !dimensionDefaultContract.parmValues().empty())
        {
            DimensionNameValueListServiceProvider dimensionDefaultServiceProvider = DimensionNameValueListServiceProvider::newForDimensionNameValueListContract(dimensionDefaultContract);
            DimensionStorageResult                dimensionStorageResult          = dimensionDefaultServiceProvider.resolve();

            switch(dimensionStorageResult.parmStatus())
            {
                case DimensionStorageResultStatus::Valid:
                    defaultDimension = dimensionStorageResult.parmSavedRecId();
                    break;

                default:
                    error(strFmt("Validation Status: %1", dimensionStorageResult.parmStatus()));
                    break;
            }
        }

                        
        info(strFmt("Default Dimension %1",defaultDimension));

Table browser URL in D365FO

Critical Thinking icon icon by Icons8