我正在尝试整合Netsuite来替换部分支付系统。从我们的系统向Netsuite发送数据对于Web服务来说是微不足道的,但是如何获取信息呢。比如说,我想在NetSuite中创建付费帐单作为数据库上的付款记录时,将付费帐单添加回我们的系统。
我想到的最简单的解决方案是按最新插入的事务ID进行搜索和过滤,但该字段不接受greaterThan运算符,因为它是一个字符串。
工作流程是否可以触发套件?即,在创建Bill时,运行此脚本等,然后将数据发布到某个终点?
如何处理此问题的任何想法或任何其他建议。
感谢。
答案 0 :(得分:3)
这里有很多很多选择。大卫提到的解决方案是一种选择。您当前的系统需要一个可用的Web API(例如SOAP或JSON,REST等)。
如果您需要接近实时的支付数据,您可以在适用的NetSuite记录上构建适当的用户事件脚本,以便在创建记录时将数据推送到您的应用程序的API。
如果要以较大批量发送数据,可以编写预定脚本,搜索尚未发送到外部系统的任何记录并发布它们。
您可以构建按计划运行的已保存搜索,并将结果的CSV文件通过电子邮件发送给可以将其导入外部系统的人。
顺便说一句,您可以使用internalidnumber
字段构建您提到的搜索,这将接受一个Greater Than运算符。更合适的可能是使用最新订购的createddate
字段。
答案 1 :(得分:2)
我认为最好的方法取决于很多内部和外部因素。其中一些因素将是您的外部系统的响应速度,实时/计划的出口频率,外部系统的API限制等。以下是基于频率的方法分类:
<强> 1。实时出口
(先决条件高度响应的外部系统) 在AfterSubmit事件上为付款记录类型(现金销售/发票)部署用户事件脚本,并在脚本中使用nlapiRequestURL SuiteScript API发送所需数据并实时获取响应。注意:nlapiRequestURL API具有5秒连接超时限制和45秒响应超时限制。如果您的外部服务器可能超出这些限制,您可能需要查看其他方法。
<强> 2。预定出口
第3。近实时出口 (这种方法有点描述性,我列出了高级设计)
答案 2 :(得分:1)
如果您不需要实时,您可以让外部守护程序每隔X分钟通过Web服务在NetSuite中运行搜索查询。守护程序检索尚未发送的记录并将它们发送到外部系统。我使用了一个带有Spring集成框架的java守护进程,它运行良好。
要监控哪些记录已发送,哪些记录尚未发送,您可以在NetSuite的付费帐单记录中添加boolean类型的自定义字段。将记录发送到外部系统后,将其设置为true,以便下一个搜索查询不会再次返回该记录。
答案 3 :(得分:1)
您可以使用nlapiRequestURL(套件脚本API)调用终点,并从支付记录中提取Bill id,Amount等所需的任何其他数据。在Netsuite中创建Bill记录时,可以调用此API。因此,您将从Netsuite获取实时数据到您的系统。