我希望这个问题不是太晦涩的交叉手指
我正在为netsuite脚本和api 寻找一个不错的参考(两者都基于ASP)
有谁知道在哪里找到这些东西?netsuite帮助页面充其量只是平庸,论坛不是很活跃.(我想这两件事情已经很糟糕了,但值得一试吗?)
在什么版本的javascript上netsuite 目前运行SuiteScripts?
这是我的理解:SuiteScript是一个在javascript引擎上运行的NetSuite脚本API.Javascript有多个版本(EG ES6和ES7).这个引擎使用哪个版本?或者,也许我应该问"SuiteScript运行的是什么javascript引擎?".然后我可以查看该引擎运行的哪个版本的javascript?
让我举一个实际的例子来说明我的成就.在javascript版本的ECMAScript 7中,您可以声明一个异步函数,但是您不能在ECMAScript 6中声明.我可以在SuiteScript中声明一个"异步函数"吗?(任意例子)
我想做一个与Netsuite集成的iOS应用程序,它应该通过RESTful API完成,但我在他们的网站,互联网甚至与他们的代表交谈时都找不到任何清晰的东西.有谁知道周围是否有任何文件?谢谢!
这是我的代码:
$service = new NetSuiteService();
$getRequest = new GetRequest();
$getRequest->baseRef = new RecordRef();
$getRequest->baseRef->internalId = "custitem3";
$getRequest->baseRef->type = "itemCustomField";
$result = $service->get($getRequest);
echo "<pre>";
var_dump($result);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)
结果是:该记录不存在.
但是该自定义项目字段显示在netsuite后端的" 设置">"自定义">"项目"字段中
目标是能够使用OAuth-header而不是来自我的Java应用程序的NLAuth-header来调用RESTlet.为了实现它,我采取了以下步骤:
我创建了NetSuite开发者社区帐户并获得了具有管理员访问权限的测试环境(domain system.na1.netsuite.com).
我打开了设置 - >公司 - >启用功能.然后打开"SuiteCloud"选项卡并在此处选中"Client SuiteScript","Server SuiteScript"和"基于令牌的身份验证".
我打开了其中一个角色的编辑页面(这里称为"08:Inspection").在"权限"选项卡上,我打开了"安装"选项卡,并为此角色添加了以下权限:"访问令牌管理","使用访问令牌登录"和"用户访问令牌".
我编辑了我的帐户以获得该角色:在编辑用户时打开"访问" - 选项卡,在"角色"选项卡上添加了该角色("08:检查").
我打开了Setup - > Integration - > Manage Integrations - > New并在这里创建了新的应用程序("TestIntegr").最后一页有两个字符串:Consumer Key和Consumer Secret.我将它们保存在单独的文件中.
我打开了Setup - > Users/Roles - > Access Tokens - > New并为我的应用程序+用户+角色创建了新令牌.最后一页有两个字符串:Token ID和Token Secret.我将它们保存在单独的文件中.
我使用我的测试程序生成授权标题字符串,然后在rest-client(我使用"Insomnia")中使用此字符串来访问我的虚拟重定位器.得到了"INVALID_LOGIN_ATTEMPT" - 错误.
在NetSuite审计日志中,我可以代表我的用户看到失败但没有角色.
有关第7步的更多技术信息,请参见下面的示例.
我用来访问虚拟restlet的URL是https://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=546&deploy=1
所以我生成了"签名字符串"(步骤5中的"consumer_key"和步骤6中的"token"):
GET&https%3A%2F%2Frest.na1.netsuite.com%2Fapp%2Fsite%2Fhosting%2Frestlet.nl&deploy%3D1%26oauth_consumer_key%3D17840f699409f5031c22a6e4af15961e9627c168cd0ae71f9c14f71b4097a0b6%26oauth_nonce%3D1444927941574%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1444927941%26oauth_token%3Df3c29a8b2c7988e00947d8c5836ef0ff1883556d96b8beac5bbbdda001ba0292%26realm%3DTSTDRV1403065%26script%3D546
Run Code Online (Sandbox Code Playgroud)
然后我使用这个字符串和"consumer_secret&token_secret"生成"签名".然后标题具有以下外观:
OAuth oauth_signature="7doRJOJyV36Av4e4BBUgoOPn7Vk%3D", oauth_nonce="1444927941574", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="17840f699409f5031c22a6e4af15961e9627c168cd0ae71f9c14f71b4097a0b6", oauth_token="f3c29a8b2c7988e00947d8c5836ef0ff1883556d96b8beac5bbbdda001ba0292", oauth_timestamp="1444927941", realm="TSTDRV1403065"
Run Code Online (Sandbox Code Playgroud)
然后我在我的rest-client中使用了这个头,得到了"INVALID_LOGIN_ATTEMPT" - 错误(而NLAuth头与这个rest-client,这个用户和这个虚拟restlet完美配合).
我使用这个在线工具检查了我的签名算法:http://nouncer.com/oauth/authentication.html它使用相同的令牌/时间戳/ nonce/etc显示相同的结果.我想在设置NetSuite环境(用户/角色/其他东西)时我错过了一些东西.另一方面,NetSuite HelpCenter说:"当OAuth标头中的随机数,消费者密钥,令牌或签名无效时,将返回INVALID_LOGIN_ATTEMPT错误".
请告诉我有什么问题.
我想在该字段中使用现有值设置多选的值.(即)如果Filed具有值"A,B"意味着我想用现有值添加新值"c"那么,结果将是"A,B,C".
我使用"N/Record"模块SubmitFields API来设置多选字段的值,就像这样
代码:SuiteScript 2.0版本:
初始代码:
var strArrayValue = new Array();
strArrayValue [0] = "A";
strArrayValue [1] = "B";
strArrayValue [2] = "C";
record.submitFields({
type:'purchaseorder',
id:56,
values:{
custbody_multiselectfield: strArrayValue
},
options: {
enableSourcing: false,
ignoreMandatoryFields : true
}
});
Run Code Online (Sandbox Code Playgroud)
它显示如下错误:"您输入了无效类型参数:arg 4"
更新的代码:
var strArrayValue = new Array();
strArrayValue [0] = "A";
strArrayValue [1] = "B";
strArrayValue [2] = "C";
var PORec = record.load({ // Loading Purchase Order Recod
type:"purchaseorder",
id:56,
isDynamic: true
)};
PORec.setValue('custbody_multiselectfield',strArrayValue ); // Setting Value (Array …Run Code Online (Sandbox Code Playgroud) 首先,我发现这个链接对完成这项工作有很大帮助。
但想发布我的发现 - 以防它对其他人有帮助。
步骤 1:向您的项目添加服务引用(WCF Web 服务)
步骤 2:创建 NetSuitePortTypeClient 并打开它(使用您自己的帐户特定)
NetSuitePortTypeClient nsptc = new NetSuitePortTypeClient(NetSuitePortTypeClient.EndpointConfiguration.NetSuitePort, "https://########.suitetalk.api.netsuite.com/services/NetSuitePort_2021_2");
await nsptc.OpenAsync();
Run Code Online (Sandbox Code Playgroud)
步骤 3:在此示例中创建交易搜索
TransactionSearch tranSearch = new TransactionSearch();
TransactionSearchBasic tranSearchBasic = new TransactionSearchBasic();
SearchStringField searchstringfield = new SearchStringField();
searchstringfield.@operator = SearchStringFieldOperator.@is;
searchstringfield.operatorSpecified = true;
searchstringfield.searchValue = "$$$$$$";
tranSearchBasic.tranId = searchstringfield;
tranSearch.basic = tranSearchBasic;
Run Code Online (Sandbox Code Playgroud)
第 4 步:调用搜索
searchResponse sresponse = await nsptc.searchAsync(CreateTokenPassport(), null, null, null, tranSearch);
Run Code Online (Sandbox Code Playgroud)
AND 这是 CreateTokenPassword 函数
public TokenPassport CreateTokenPassport()
{
string account = "account";
string consumerKey = …Run Code Online (Sandbox Code Playgroud) Netsuite的文档非常缺乏,它们涵盖了基础知识,然后让您松散探索.任何没有大量PHP知识试图使用他们的PHP工具包的人都会乞求怜悯.
在整个项目的任何一点,它都是追踪和错误,并试图理解一切,直到东西开始工作.
我很难将自定义字段分配给销售订单,我知道它必须是对象对象的对象,以便它将xml分层以便肥皂接管,但是什么与什么有什么关系?
我有一些我工作的代码,但它抱怨它不是正确的RecordRef类型.如果有人和Netsuite一起工作并且感觉到我的痛苦,请在我拔掉所有头发之前把你的知识借给我.
提前致谢.
码:
$customFields = array('internalId' => 'custbody_new_die_yn','value' => array('name' => 'custbody_new_die_yn','internalId' => 'NO'));
$customObject = new nsComplexObject("SelectCustomFieldRef");
$customObject->setFields($customFields);
$salesOrderFields = array(
'entity' => new nsRecordRef(array('internalId' => $userId)),
'paymentMethod' => array('internalId' => 8),
'ccNumber' => 4111111111111111,
'ccExpireDate' => date("c", mktime(0,0,0,11,1,2011)),
'ccName' => 'Test Testerson',
'itemList' => array(
'item' => array(
'item' => array('internalId' => 5963),
'quantity' => 5
)
),
'department' => new nsRecordRef(array('internalId' => 1)),
'class' => new nsRecordRef(array('internalId' => 47)),
'customFieldList' => $customObject
);
Run Code Online (Sandbox Code Playgroud) 我正在尝试自动将 NetSuite 采购订单链接到 NetSuite 销售订单,以下是我尝试完成此任务的代码。但我收到错误(见底部)。你能检查一下并让我知道我在这里遗漏了什么吗?
采购订单创建代码:
var createPurchaseOrder = new PurchaseOrder();
createPurchaseOrder.entity = new RecordRef()
{
internalId = “653”
//type = RecordType.purchaseOrder,
//typeSpecified = true
};
RecordRef soRecordRef = new RecordRef();
soRecordRef.internalId = “XXXXXXXX”;
soRecordRef.type = RecordType.salesOrder;
soRecordRef.typeSpecified = true;
createPurchaseOrder.createdFrom = soRecordRef;
RecordRef depRecordRef = new RecordRef();
depRecordRef.internalId = “3”;
depRecordRef.name = “eBay : eBay FNC”;
depRecordRef.type = RecordType.department;
depRecordRef.typeSpecified = true;
createPurchaseOrder.department = depRecordRef;
PurchaseOrderItem[] Items = new PurchaseOrderItem[1];
Items[0] = new PurchaseOrderItem();
RecordRef item = new RecordRef(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PHP Toolkit在NetSuite中通过ID搜索产品.据我所知,从我的Google搜索中可以看出,NetSuite并没有很好地记录他们的PHP工具包.从我可以收集到的,我有这个:
$service = new NetSuiteService();
$service->setSearchPreferences(false, 1000);
$search = new ItemSearchBasic();
$search->searchValue = array('internalId' => $id);
$search->type = "item";
$request = new SearchRequest();
$request->searchRecord = $search;
$searchResponse = $service->search($request);
Run Code Online (Sandbox Code Playgroud)
但这只是给了我一堆随意的废话.谁能帮我这个?