2017-02-18 130 views
0

我们正在研究定制SalesLineType_Sales,我们需要在下面的“pdsMRCCheckRestricted”方法中为“SalesQty”添加验证。SalesLineType_Sales扩展可能吗?

现在,我们知道自定义不受青睐,因此寻找任何建议或最佳实践来适当地完成自定义。

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

回答

0

动力学365操作用于定制的优选机制将现有对象是使用事件处理程序来对各种事件作出反应,而不是覆盖在表格,表单,和类的方法。

[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);   
} 
+0

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

+0

我已经更新了答案,请看看。 –