Tuesday 20 November 2018

Set financial dimension mandatory on a form in AX 2012

.                                        Set financial dimension mandatory on a form



         Create a new Class with the name ‘CustTableEventHandler’

     Create a new Pre-or post-event handler method as shown below


3.       Rename newly created method as ‘custValidateWrite’ and write logic as shown below.

public static void custValidateWrite(XppPrePostArgs _args)
{
    DimensionAttribute                  dimAttr;
    DimensionAttributeValue             dimAttrValue;
    DimensionAttributeValueSetItem      dimAttrValueSetItem;
    CustTable                           custTable;
    RefRecId                            defaultDimension;
    boolean                             ret;
    ;

    custTable   = _args.getThis();
    ret         = _args.getReturnValue();

    defaultDimension    =   custTable.DefaultDimension;
   
    dimAttr             =   DimensionAttribute::findByName('Department');

    select firstonly RecId, DisplayValue from dimAttrValueSetItem
                where dimAttrValueSetItem.DimensionAttributeValueSet == defaultDimension
            join dimAttrValue
                where dimAttrValue.RecId == dimAttrValueSetItem.DimensionAttributeValue &&
                dimAttrValue.DimensionAttribute == dimAttr.RecId       &&
                dimAttrValue.IsDeleted == false;
   
    if (!dimAttrValueSetItem.DisplayValue)
    {
        ret     = checkFailed("Department must be specified.");
    }

    _args.setReturnValue(ret);
}


4.       Go to ‘validateWrite’ method of CustTable then right click & select New event handler subscription as shown below.

 
5.       Go to the properties of newly created event handler method & set the properties as shown below.


 

6.       Now try to create new customer without department then it throws a message saying that ‘Department must be specified.’

1 comment: