我曾尝试itemFulfillment以多种方式创建记录,但无论我做什么,销售订单总是"完全"完成(无论是否所有项目都已实现.)
如果销售订单中只有"部分"商品已经发货,我们只需将这些商品设置为满足,这样就可以对相应的采购订单进行结算,并将跟踪发送给客户.当我们仅尝试履行这些项目时,销售订单总是以满足所有项目的方式结束.这给我们带来了许多问题.
我试过的事情:
从头开始创建新项目实现(不使用初始化)
使用initialize创建新项目实现(以获取对现有IF记录的引用)
仅添加已完成的订单项
添加所有订单项,明确设置quantityRemaining = quantity(尚未履行项目的位置)以及quantityRemaining = 0已完成项目的设置.
尝试变种ReplaceAll = true,并再次尝试变化ReplaceAll = false.
在每种情况下,SalesOrder标记中的每个项目都完全满足(每个项目都设置为满足.)
如果有人能够"部分"履行销售订单,您能否想出如何做到这一点?
我想用Maven替换提供的Ant构建.我知道(但没有使用过)蚂蚁跑,我也不愿意.
简而言之,NetSuite提供了一个wsdl,用于在进行Web服务调用时再次使用其ERP产品,我目前使用他们提供的ant构建来从wsdl生成代理类.(此处提供示例应用,wsdl和修补轴)
我遇到的问题是ant任务使用了修补的轴1.4(以及支持库,其中有几个是〜7年),我想使用中央maven仓库中可以获得的库来实现这个wsdl,最好是电流.
任何人都可以指出我需要研究一个有效的解决方案吗?
对于任何需要知道的人:我尝试使用axis2进行生成,并抛出以下异常:
timeException: Element QName is null for ExceededRequestSizeFault!
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:293)
at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: org.apache.axis2.wsdl.codegen.CodeGenerationException: java.lang.RuntimeException: Element QName is null for ExceededRequestSizeFault!
at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.emitSkeleton(AxisServiceBasedMultiLanguageEmitter.java:1451)
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:275)
... 2 more
Caused by: java.lang.RuntimeException: Element QName is null for ExceededRequestSizeFault!
at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultParamElements(AxisServiceBasedMultiLanguageEmitter.java:
2925)
at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultElement(AxisServiceBasedMultiLanguageEmitter.java:2844)
at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.generateMethodElement(AxisServiceBasedMultiLanguageEmitter.java:
2366)
at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.loadOperations(AxisServiceBasedMultiLanguageEmitter.java:2242)
at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.createDOMDocumentForSkeleton(AxisServiceBasedMultiLanguageEmitte
r.java:2156)
at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.writeSkeleton(AxisServiceBasedMultiLanguageEmitter.java:2082)
at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.emitSkeleton(AxisServiceBasedMultiLanguageEmitter.java:1408)
... 3 more
Run Code Online (Sandbox Code Playgroud)
如果它是具有最新NetSuite WSDL的经过测试的解决方案,则可获得奖励.
我正在尝试使用NetSuite API搜索NetSuite供应商(可能存在或不存在于NetSuite中); 但是,我对供应商的唯一信息是externalId.我的目标是使用给定的externalId查询供应商的NetSuite,如果供应商存在,则在后续的API调用中使用它.如果供应商不存在,我将创建它并使用我刚刚在后续API调用中创建的供应商.
尽管我进行了搜索,但我还是找不到通过externalId搜索NetSuite记录的方法(我发现了很多方法可以通过Field搜索;但是我找不到通过属性搜索的方法,即externalId).任何帮助表示赞赏.
我正在尝试使用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)
但这只是给了我一堆随意的废话.谁能帮我这个?
通过UI,我创建了几个附加到支持故障单记录的消息记录,其中两个记录具有文件附件.我已经能够检索票证,以及它在Bellcript中的相关消息 - 正确报告hasAttachment为'T' - 但我似乎无法访问附件本身.文档指出附件是一个名为'mediaitem'的子列表(或'mediaitemlist',具体取决于您所查看的位置),但没有一个子列表API在这些名称上取得任何成功.
var record = nlapiLoadRecord('message', 1092823, {recordmode: 'dynamic'});
var itemCount = record.getLineItemCount('mediaitem');
// returns -1
Run Code Online (Sandbox Code Playgroud)
文档和其他在线信息非常稀疏,所以任何帮助将不胜感激.
我正在尝试使用 NetSuite SuiteTalk REST Web 服务来访问 NetSuite CRM 数据。
我可以访问并在生产中工作。能够检索记录数据和元数据。
我现在正在尝试在沙箱中设置访问权限以进行更深入的测试。
在沙箱中,我有: - 启用休息 Web 服务 - 启用基于令牌的身份验证 - 给定用户并发 Web 服务权限 - 给定用户使用访问令牌权限登录 - 创建集成 - 创建访问令牌
所有这些操作都反映了在生产中所做的事情。
当我尝试对 Web 服务执行任何类型的 GET 操作时,我会收到 401 - 无效的登录尝试。
当我检查登录审计跟踪时,我没有看到任何 GET 尝试的记录,失败或其他。
是否有一些系统性的事情我必须在沙箱中额外做才能启用休息 Web 服务?除了在 SuiteCloud/SuiteTalk 中启用它?
我在审计跟踪中完全看不到任何东西的事实让我相信某些东西仍然“关闭”。
===> 4/4/2020 更新
ed14 和 Nihkil,
感谢您的回复,很抱歉回复延迟。
不幸的是,在领域中下划线的连字符对我没有帮助。
让我回顾一下最近的尝试:
1) 首先验证生产中的 REST API 测试是否仍然有效。
2) 沙箱由 CRM 管理员刷新。应用程序仍然存在,但我的访问令牌不在。我在沙箱中创建了一个新的。
是否可以删除应用程序?我看不出有什么办法可以做到这一点。
3) 使用现有的消费者令牌和新的访问令牌进行测试。得到了与我的第一篇文章相同的回复:"title": "无效的登录尝试,有关更多详细信息,请参阅登录审核跟踪。",
4) 通过稍微修改 URL 进行测试,以确保我不会去某个地方的黑洞。它给了我预期的错误。
5)通过修改realm进行测试:Realm 9999999-sb4到Realm 9999999_sb4它给了我一个错误,让我相信我原来的realm是正确的:“title”:“发生意外错误。错误ID:k8hd8pqej3unxblmaoik”,
同样,没有任何测试作为失败的尝试出现在审计日志的任何地方。
不知道从这里去哪里?删除沙箱应用程序(如果可能)并重新开始?还是沙箱中的新应用程序?
感谢您的任何帮助。
布莱恩亨特
我正在寻找Netsuite中的oauth实现.Netsuite是否支持oauth?我搜索了NetSuite中的誓言实现,但没有一个结果.
有没有官方文件说netsuite不支持oauth?
有没有人知道SuiteScript 2.0的等价物?
nlapiRequestURL(url, postdata, headers, httpMethod)
Run Code Online (Sandbox Code Playgroud) 我正在尝试加载如下的自定义记录:
var mergeRecord = record.load({
type: record.Type.'custrecord_merge_vendor',
id: '12',
isDynamic: true
});
Run Code Online (Sandbox Code Playgroud)
这看似错误..但标准记录的等价如下:
var objRecord = record.load({
type: record.Type.SALES_ORDER,
id: 157,
isDynamic: true,
});
Run Code Online (Sandbox Code Playgroud)
这该怎么做 ?
我正在尝试使用基于令牌的身份验证对Netsuite API进行SOAP调用.我有一个从WDSL生成的C#客户端,它正在发送以下请求(更换了秘密).
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:messages_2016_2.platform.webservices.netsuite.com" xmlns:urn1="urn:core_2016_2.platform.webservices.netsuite.com">
<soapenv:Header>
<urn:partnerInfo>
<urn:partnerId>[MyAccountId]</urn:partnerId>
</urn:partnerInfo>
<urn:applicationInfo>
<urn:applicationId>[MyApplicationId]</urn:applicationId>
</urn:applicationInfo>
<urn:tokenPassport>
<urn1:account>[MyAccountId]</urn1:account>
<urn1:consumerKey>[MyConsumerKey]</urn1:consumerKey>
<urn1:token>[MyTokenId]</urn1:token>
<urn1:nonce>1574515852</urn1:nonce>
<urn1:timestamp>1499135589</urn1:timestamp>
<urn1:signature algorithm="HMAC-SHA1">Ll8DbLvTWsBh/G7UtenErR03OrM=</urn1:signature>
</urn:tokenPassport>
</soapenv:Header>
<soapenv:Body>
<urn:getDataCenterUrls>
<urn:account>[MyAccountId]</urn:account>
</urn:getDataCenterUrls>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
我收到了以下回复
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>Ambiguous authentication</faultstring>
<detail>
<platformFaults:invalidCredentialsFault xmlns:platformFaults="urn:faults_2016_2.platform.webservices.netsuite.com">
<platformFaults:code>USER_ERROR</platformFaults:code>
<platformFaults:message>Ambiguous authentication</platformFaults:message>
</platformFaults:invalidCredentialsFault>
<ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">partners-java20004.sea.netledger.com</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多不同的方法来生成签名,nonce和时间戳.目前我有以下内容:
private string computeNonce()
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] data = new byte[20];
rng.GetBytes(data);
int value = Math.Abs(BitConverter.ToInt32(data, 0));
return value.ToString();
}
private long computeTimestamp()
{ …Run Code Online (Sandbox Code Playgroud)