SalesLineType_Sales扩展可能吗?

时间:2017-02-18 03:15:25

标签: axapta microsoft-dynamics x++ dynamics-ax7

我们正在寻找定制SalesLineType_Sales,我们需要为" SalesQty"添加验证。 in" pdsMRCCheckRestricted"方法如下。

现在,我们知道自定义不受欢迎,因此请寻找任何建议或最佳做法,以便妥善完成。

1-我们可以自定义" SalesLineType_Sales" - 但这是Dynamics 365运营的最佳实践吗? 2-还有其他可能的选择吗?

任何评论都将不胜感激!

public boolean pdsMRCCheckRestricted()
{
    boolean                 isRestricted = false;
    AddressCountryRegionId  deliveryCountryId;
    AddressStateId          deliveryStateId;

    deliveryCountryId = salesLine.deliveryAddress().CountryRegionId ?
        salesLine.deliveryAddress().CountryRegionId : salesTable.deliveryAddress().CountryRegionId;

    deliveryStateId   = salesLine.deliveryAddress().State ?
        salesLine.deliveryAddress().State : salesTable.deliveryAddress().State;

    if (salesLine.SalesQty >  0)
    {

        isRestricted = PdsMRCRestrictedListByItem::checkItemRestrictedForState(
                                         deliveryCountryId,
                                         deliveryStateId,
                                         salesLine.ItemId);
        if (!isRestricted)
        {
            isRestricted =
                PdsMRCRestrictedListByItem::checkItemRestrictedForCountry(
                                            deliveryCountryId,
                                            salesLine.ItemId);
        }

        if (isRestricted)
        {
            error(strFmt("@PDS908", salesLine.ItemId));
        }
    }

    return isRestricted;
}

1 个答案:

答案 0 :(得分:0)

在Dynamics 365 for Operations中,对现有对象进行自定义的首选机制是使用事件处理程序对各种事件做出反应,而不是覆盖表,表单和类上的方法。

[PostHandlerFor(classStr(SalesLineType_Sales), methodstr(SalesLineType_Sales, pdsMRCCheckRestricted))]
public static void PostPdsMRCCheckRestricted(XppPrePostArgs args)
{
    boolean     returnValue = args.getReturnValue();
    int         infologLine;
    ;

    //Suppress error message
    if (returnValue)
    {
        infologLine = Global::infologLine();
        infolog.clear(infologLine - 1);
    }

    //Add your validation here

    args.setReturnValue(returnValue);        
}