Netsuite SuiteTalk – 通过PHP请求客户发票清单
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Netsuite SuiteTalk – 通过PHP请求客户发票清单,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3982字,纯文字阅读大概需要6分钟。
内容图文
![Netsuite SuiteTalk – 通过PHP请求客户发票清单](/upload/InfoBanner/zyjiaocheng/787/b240cef55bdf4fc69e320dc2a39f6176.jpg)
我正在使用Netsuite PHP Toolkit尝试获取客户的发票清单.我可以毫无问题地拨打电话(使用TransactionSearch),但我很难理解我应该如何获得发票的所有详细信息 – 即发票“标题”详细信息(例如总计,货币,主菜单行等)以及每个行项目的详细信息(净值,应税值,项目等).
我尝试了几种方法:
> TransactionSearchAdvanced,指定了返回列,并将returnSearchColumns首选项设置为“false”.这会返回所有单独的行(woo!),但货币和术语之类的东西不会扩展 – 你只需要指定internalId而不是实际的文本(或符号).此外,使用TSA,您是否真的需要指定所需的每一列?即默认真的只是一组空的字段?难道只是说“给我每张发票所有行的所有细节吗?
> TransactionSearch,其中returnSearchColumns首选项设置为“true”.这给出了单个发票类型记录的列表,其中正确填充了所有货币和期限内容,但令人沮丧的是,没有单个行项目.这更像是一个总结.
所以我留下了几个选项,这两个选项都不太合适,即:
>两者都要求所有发票并合并数据.这些搜索需要很长时间(性能是我的另一个问题,所以我真的不想这样做.
要么
>找出一种请求条款,货币等数据的方法,以及获取发票行的方法.
我不知道你应该怎么做,在互联网上找不到任何关于它的东西.这是我使用过的最糟糕的接口之一(我使用了一些非常糟糕的接口).
任何帮助将非常感激.
解决方法:
就像你一样,我开始尝试使用Web Services API(也称为SuiteTalk).大多数情况下,这是一种令人沮丧的运动,因为我最终发现的是我平常无法做到我想要的东西.那和性能非常糟糕,即使它工作正常也会导致我的项目失败.
与Faz一样,我发现使用RESTlet和Saved Searches的组合比处理Web服务框架更容易,更快捷.
基本上将您的问题分解为以下部分:
>保存搜索,返回您想要的结果(跟踪以后需要的内部ID)
> RESTlet它只是一个Javascript文件,它定义了用于从搜索中返回结果的函数
>调用RESTlet并获取结果的客户端代码.
第一部分:
所以保存的搜索非常简单.我会假设你可以做到这一点,而且你可以在一个地方实际获得你想要的所有领域.根据我的经验,情况并非总是如此.
第二部分:
RESTlet涉及更多步骤,即使它真的是一件非常简单的事情.使其变得复杂的是将其上传并部署在NetSuite站点上.如果您还没有安装NetSuite IDE,我强烈推荐它,如果只是为了使脚本部署更容易一些.自动完成和工具提示也非常有用.
例如,这里是我用来从我关心的搜索中获得结果的代码.这是改编自某种灵魂在互联网上的某个地方发布但我遗忘在哪里:
function getSearchResults(){
var max_rows = 1000;
var search_id = 1211;
var search = nlapiLoadSearch(null, search_id);
var results = search.runSearch();
var rows = [];
// add starting point for usage
var context = nlapiGetContext();
startingUsage = context.getRemainingUsage();
rows.push(["beginning usage", startingUsage]);
// now create the collection of result rows in 1000 row chunks
var index = 0;
do{
var chunk = results.getResults(index, index+1000);
if( ! chunk ) break;
chunk.forEach( function(row){
rows.push(row);
index++;
});
}while( chunk.length === max_rows);
// add a line that returns the remaining usage for this RESTlet
context = nlapiGetContext();
var remainingUsage = context.getRemainingUsage();
rows.push(["remaining usage",remainingUsage]);
// send back the rows
return rows;
}
您可以通过传入已保存的搜索内部ID来获取内容:
var search = nlapiLoadSearch(null, SEARCH_ID);
var resultSet = search.runSearch();
然后代码重复调用getResults()来获取1000个结果的块,这是一个NetSuite限制.编写完成后,必须将脚本上载到NetSuite并进行配置和部署.最重要的部分是告诉它为每个动词分配什么功能.在这种情况下,我分配了GET来执行getSearchResults.这里有很多工作要做,我不打算把它全部输出,因为值得花时间学习这一部分.至少足以让IDE为你做这个= D.您可以在“RESTlets简介”指南中阅读所有相关内容.
第三部分.
客户端代码可以是您想要的任何方式,以您喜欢的方式执行REST.我个人喜欢Python,因为请求库太棒了.
这是一些示例Python代码:
import requests
import json
url = 'https://rest.sandbox.netsuite.com/app/site/hosting/restlet.nl?script=123&deploy=1'
headers = {'Content-Type': 'application/json', 'Authorization':'NLAuth nlauth_account=1234567, nlauth_email=someone@somewhere.com, nlauth_signature=somepassword, nlauth_role=3'}
resp = requests.get(url, headers=headers)
data = resp.json()
该URL将作为RESTlet部署的一部分显示给您.然后,您可以使用返回的数据执行所需操作.
所以我建议你花时间的东西是
>设置NetSuite IDE
>获取和阅读SuiteScript开发人员参考文档
>找到一种以您选择的语言创建REST客户端代码的好方法.
我希望有所帮助.
内容总结
以上是互联网集市为您收集整理的Netsuite SuiteTalk – 通过PHP请求客户发票清单全部内容,希望文章能够帮你解决Netsuite SuiteTalk – 通过PHP请求客户发票清单所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。