dimension control Enable Disable

 Public class DSADimensionEntryControlUtil

{

    //Enable Disable Sector Dimension

    public static void disableDimension(custtable custtable, DimensionEntryControl dimControl , str Sector = 'Sector')

    {

        

        DimensionEnumeration            dimensionSetId               = DimensionCache::getDimensionAttributeSetForLedger();

        DimensionAttributeSetStorage    dimensionAttributeSetStorage = new DimensionAttributeSetStorage();

        DimensionAttribute              dimensionAttribute;

        DimensionAttributeSetItem       dimAttrSetItem;


        if(custtable.DSACustomerSectorType == DSACustomerSectorType::MultiSector)

        {

            while select dimensionAttribute

            where dimensionAttribute.Name != Sector // Exclude specific dimension which should be not editable

            join dimAttrSetItem

            where dimAttrSetItem.DimensionAttribute == dimensionAttribute.RecId

            && dimAttrSetItem.DimensionAttributeSet == dimensionSetId

            {

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

            }

        }

        else

        {

            while select dimensionAttribute

            join dimAttrSetItem

            where dimAttrSetItem.DimensionAttribute == dimensionAttribute.RecId

            && dimAttrSetItem.DimensionAttributeSet == dimensionSetId

            {

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

            }

        }

            

        dimControl.parmEditableDimensionSet(dimensionAttributeSetStorage.save());

        dimControl.run();

        dimControl.reactivate();

        dimControl.reactivateDisplayValuesAndEnums();

        dimControl.loadAttributeValueSet(custtable.DefaultDimension);

        

    }


    //Enable Disable Sector Dimension

    public static void disableSOAndProjDimension(custtable custtable, DimensionEntryControl dimControl , str Sector = 'Sector')

    {

        

        DimensionEnumeration            dimensionSetId               = DimensionCache::getDimensionAttributeSetForLedger();

        DimensionAttributeSetStorage    dimensionAttributeSetStorage = new DimensionAttributeSetStorage();

        DimensionAttribute              dimensionAttribute;

        DimensionAttributeSetItem       dimAttrSetItem;


        if(

            (custtable.DSACustomerSectorType == DSACustomerSectorType::MultiSector)

            || ((custtable.DSACustomerSectorType == DSACustomerSectorType::SingleSector) && (DSADimensionEntryControlUtil::isAllowedToEdit()))

          )

        {

            while select dimensionAttribute

            join dimAttrSetItem

            where dimAttrSetItem.DimensionAttribute == dimensionAttribute.RecId

            && dimAttrSetItem.DimensionAttributeSet == dimensionSetId

            {

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

            }

        }

        else

        {

            while select dimensionAttribute

            where dimensionAttribute.Name != Sector // Exclude specific dimension which should be not editable

            join dimAttrSetItem

            where dimAttrSetItem.DimensionAttribute == dimensionAttribute.RecId

            && dimAttrSetItem.DimensionAttributeSet == dimensionSetId

            {

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

            }

        }

            

        dimControl.parmEditableDimensionSet(dimensionAttributeSetStorage.save());

        dimControl.run();

        dimControl.reactivate();

        dimControl.reactivateDisplayValuesAndEnums();

        dimControl.loadAttributeValueSet(custtable.DefaultDimension);

        

    }


    public static SecurityRole isAllowedToEdit()

    {

        userinfo            userinfo;

        SecurityUserRole    SecurityUserRole;

        SecurityRole        SecurityRole;


        select  AOTNAME

        from SecurityRole

        exists join SecurityUserRole

        where SecurityRole.RecId == SecurityUserRole.SecurityRole

        exists join userinfo

        where SecurityUserRole.USER == userinfo.ID

        && userinfo.id == curUserId()

        && SecurityRole.AOTNAME == 'DSACustomerSectorTypeRole';


        return SecurityRole;

    }


}




Regards 
farazjaved01@gmail.com

Comments

Popular posts from this blog

How to Bypass Next in COC in D365 X++

create movement journal through code in d365 FO x++