Saturday, August 9, 2025

Enable finanancial dimension control elements based on custom setup using x++ d365fo

[System.ComponentModel.Composition.ExportMetadataAttribute(extendedTypeStr(ExtendedDataTypeName), extendedTypeStr(PurchReqTableDefaultDimension)),

System.ComponentModel.Composition.ExportAttribute(identifierStr(Dynamics.AX.Application.DimensionEntryController))]

internal final class IS_PurchReqTableDimensionEntryController extends DimensionEntryController

{

    public static PurchReqTableDimensionEntryController construct()

    {

        PurchReqTableDimensionEntryController controller = new PurchReqTableDimensionEntryController();

        controller.initialize();

        return controller;

    }


    public boolean validateValue(DimensionAttributeValue _dimAttrValue, DimensionValue _enteredValue)

    {

        return true;

    }


    public void applyDimensionAttributeCategorizationFiltering(Query _query, DimensionAttribute _dimensionAttribute)

    {

    }


    public boolean onValueSetLoad()

    {

        return false;

    }


    protected void initialize()

    {

        DimensionAttributeSetStorage dimensionAttributeSetStorage = new DimensionAttributeSetStorage();

        DimensionAttribute dimensionAttribute;

        PurchReqTableHeaderFinancialDimensions purchReqTableHeaderFinancialDimensions;

        str sqlExpression;

        int counter = 0;

        Query q = new Query();

        QueryRun qr;

        QueryBuildDataSource qbr1;

        str strTemp;


        qbr1 = q.addDataSource(tablenum(dimensionAttribute));

        while select purchReqTableHeaderFinancialDimensions

        {

            qbr1.addRange(fieldNum(dimensionAttribute, Name)).value(purchReqTableHeaderFinancialDimensions.Name);

        }

        qr = new QueryRun(q);

        while (qr.next())

        {

            dimensionAttribute = qr.getNo(1);

            if (dimensionAttribute.getStatus() == DimensionAttributeStatus::Active)

            {

                dimensionAttributeSetStorage.addItem(dimensionAttribute.RecId, dimensionAttribute.HashKey, NoYes::Yes);

            }

        }


        RecId dimensionAttributeSetStorageRecId = dimensionAttributeSetStorage.save();

        this.parmDimensionsToDisplay(dimensionAttributeSetStorageRecId);

        this.parmDimensionsToAllowEdit(dimensionAttributeSetStorageRecId);

    }

}


Call API using x++ D365FO

 System.Net.HttpWebRequest    request; System.Net.HttpWebResponse   response; System.IO.Stream             dataStream; System.IO.StreamReade...