2017-02-18 92 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

我已經更新了答案,請看看。 –