我们正在寻找定制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;
}
答案 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);
}