Axapta SalesLineType\u是否可以进行销售扩展?

Axapta SalesLineType\u是否可以进行销售扩展?,axapta,microsoft-dynamics,x++,dynamics-ax7,Axapta,Microsoft Dynamics,X++,Dynamics Ax7,我们正在考虑进行定制SalesLineType_Sales,我们需要在下面的“pdsMRCCheckRestricted”方法中为“SalesQty”添加验证 现在,我们知道定制是不受欢迎的,所以寻找任何建议或最佳实践来适当地完成它 1-我们可以自定义“SalesLineType_Sales”-但这是Dynamics 365的最佳操作实践吗? 2-还有其他可能的选择吗 任何意见将不胜感激 public boolean pdsMRCCheckRestricted() { boolean

我们正在考虑进行定制SalesLineType_Sales,我们需要在下面的“pdsMRCCheckRestricted”方法中为“SalesQty”添加验证

现在,我们知道定制是不受欢迎的,所以寻找任何建议或最佳实践来适当地完成它

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;
}

在Dynamics 365 for Operations中,对现有对象进行自定义的首选机制是使用事件处理程序对各种事件作出反应,而不是重写表、窗体和类上的方法

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

    //Suppress error message
    if (returnValue)
    {
        infolog.clear();
    }

    //Add your validation here

    args.setReturnValue(returnValue);        
}

感谢aliaksandr的回复。infolog会发生什么?当结果为真时,它将记录错误。if(isRestricted){error(strFmt(@PDS908),salesLine.ItemId));}