NetSuite,如果分配了潜在客户与客户,则阻止引用销售订单(通过销售订单按钮)
Posted
技术标签:
【中文标题】NetSuite,如果分配了潜在客户与客户,则阻止引用销售订单(通过销售订单按钮)【英文标题】:NetSuite, prevent Quote to Sales Order (via Sales Order button) if prospect assigned vs customer 【发布时间】:2015-10-01 16:49:57 【问题描述】:我们允许销售人员将潜在客户附加到机会和报价单上,一旦信用证明潜在客户合格,他们就会将潜在客户推广给客户。我们需要做的是隐藏报价单上的“销售订单”按钮,或者不允许将报价单推进到销售订单。
我很犹豫要不要问这个-似乎应该很直观地弄清楚。我查看了 NetSuite 帮助中的标准 NetSuite 按钮 ID,但没有用于“销售订单”的按钮 ID。我查看了验证逻辑,但这不是验证,因为当记录未处于编辑模式时会显示销售订单按钮。如果可能的话,我希望解决方案是独立的。
我很乐意隐藏按钮或让用户单击按钮并阻止他们创建销售订单。后者可能对用户更友好,因为如果按钮是隐藏的,销售人员会打电话询问为什么按钮不存在。
为了清楚起见,这里是一张图片:
【问题讨论】:
【参考方案1】:我假设当您谈论“销售订单按钮”时,您指的是这个:
我不确定这是否是最佳的用户体验,或者您是否有可用的 NetSuite 开发资源,但这里有一种选择:
创建一个新的用户事件脚本,该脚本部署到销售订单(以及您可能希望进行此预防的任何其他交易记录)。使用BeforeLoad
事件,您可以检查 Transaction 上的实体是否处于 Prospect 阶段。如果是,则脚本将引发错误,从而阻止创建事务。完成此操作的代码:
function onBeforeLoad(type)
var entityId = nlapiGetFieldValue('entity');
if ((type != 'create') || !entityId) return;
if(nlapiLookupField('customer', nlapiGetFieldValue('entity'), 'stage') === 'PROSPECT')
throw nlapiCreateError('INVALID_REQUEST', 'You cannot create a Sales Order from a Quote placed for a Prospect');
我在 TSTDRV 帐户中测试了此代码,它按预期工作。或者,您也可以构建一个无需编写代码即可执行相同操作的工作流,但我没有尝试这样做。
通过使用用户事件脚本,此代码将独立于表单和入口点,这意味着如果通过 UI、其他脚本、Web 服务集成创建销售订单,则此代码将执行(取决于您的 Web 服务配置),或通过 CSV 导入(取决于您的 CSV 导入配置)。
【讨论】:
非常感谢 ++ 我发布了一张显示情况的图片,但您的解决方案仍然可以完美运行。 varthankYou = abortSOBeforeLoad.Select(new String "如果潜在客户尚未提升为 "Customer").Where(e => e.transactionType == "Quote").Where(e = > e.entityType == "Prospect").OrderBy(e => e.***hero == "egrubaugh360"); 我测试了它 - 完美运行!我主要使用 *** 来回答问题,因为回答它们可以帮助我学习/记住,但我在这个问题上承受着压力,很高兴我问了。我希望有朝一日能报答恩。【参考方案2】:隐藏选项: 如果您指的是下拉列表,您可以创建一个用于上下文查看/编辑的脚本来执行以下操作:
setFieldAndLabelVisibility("nl13", false);
否则,将 nl13 替换为在您检查所需销售订单链接/图标上的元素时显示的 table 或 td 元素的值。
--上例中的ID是检查元素时显示的表格、按钮或标签ID
【讨论】:
这又是一个好主意——没想到。很高兴在这里见到一些 NetSuite 专家。这是我不得不匆忙处理的最困难的事情之一。谢谢。以上是关于NetSuite,如果分配了潜在客户与客户,则阻止引用销售订单(通过销售订单按钮)的主要内容,如果未能解决你的问题,请参考以下文章
Netsuite API - PHP将自定义字段附加到新客户