假设我想在 NetSuite 中添加、更改或删除采购订单行,并且我需要另一个系统来知道我何时执行此操作。 我该如何去做呢?
我仅使用采购订单行作为示例,但理论上我正在寻找一种可以应用于项目更新或销售订单更改等的编程模式。
我认为这与 SuiteScript 有关,特别是用户事件,但我不太清楚如何做到这一点。 我不是在谈论与网络服务的通信——这实际上是最简单的部分。 我正在谈论要放入 SuiteScript 代码中的内容。 我目前在那里的工作是这样的(这不是完美的 JavaScript,更像是伪代码):
function main ()
{
return {
afterSubmit: myAfterSubmit
beforeSubmit: myBeforeSubmit
}
}
function myBeforeSubmit(context)
{
if (context.type == context.UserEventType.DELETE)
{
// Talk to other webservice, telling other system to delete record
}
}
function myAfterSubmit(context)
{
if (context.type == context.UserEventType.CREATE )
{
// Talk to other webservice, telling other system to add record
}
else if (context.type !== context.UserEventType.DELETE )
{
/* Talk to other webservice, telling other system to update record
* This will be approve, cancel, reject, pack, ship, and edit, will probably
* need to ignore some other UserEventType's, or just handle certain event types.
*/
}
}
我至少正朝着正确的方向前进吗? 从我在网上看到的所有内容中,特别让我困惑的是“删除”事件。
这篇文章非常接近,但并没有真正给出更完整的示例,即显示一般工作流程的示例。 另外,我发现了这篇文章,但它讨论了当其他系统对 Netsuite 进行外部 API 调用时使用事件。
因为我是新手。显然我需要学习更多东西,但我只想知道我是否正在接近正确的方向。 其中一些内容是我从文档here中获得的,但是该文档并没有真正解决每个“提交”函数可以并且应该处理哪些事件。
afterSubmit
而不是 beforeSubmit
。 如果您使用 beforeSubmit
,其他脚本可能会在将记录提交到数据库之前更改记录。/**
* @NScriptType UserEventScript
* @NApiVersion 2.1
*
*/
define(["N/https"], function (https) {
function beforeLoad(context) {
...
}
function beforeSubmit(context) {
...
}
function afterSubmit(context) {
...
}
return {
beforeLoad: beforeLoad,
beforeSubmit: beforeSubmit,
afterSubmit: afterSubmit
}
});
请注意文件开头的强制
JSDoc
标签(@NScriptType
和 @ApiVersion
)、define
调用第一行中包含的 AMD 模块,以及传递函数的 return
语句脚本作为键的值,与 NetSuite 对此脚本类型的期望相匹配。