4

我想获取所有 InventoryItems 根据此文档的列表: https ://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/getAll.html

我正在形成以下请求:

<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:platformMsgs="urn:platform_2013_1.webservices.netsuite.com" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header>
        <passport>
            <email>******</email>
            <password>******</password>
            <account>******</account>
        </passport>
    </env:Header>
    <env:Body>
        <platformMsgs:getAll>
            <recordType>InventoryItem</recordType>
        </platformMsgs:getAll>
    </env:Body>
</env:Envelope>

但收到错误的响应:

<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:Header>
        <platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2013_1.platform.webservices.netsuite.com">
            <platformMsgs:nsId>WEBSERVICES_969904_100920131651936419141601801_cbf1690968b43</platformMsgs:nsId>
        </platformMsgs:documentInfo>
  </soapenv:Header>
  <soapenv:Body>
      <getAllResponse xmlns="urn:platform_2013_1.webservices.netsuite.com">
          <platformCore:getAllResult xmlns:platformCore="urn:core_2013_1.platform.webservices.netsuite.com">
              <platformCore:status isSuccess="false">
                  <platformCore:statusDetail type="ERROR">
                      <platformCore:code>GETALL_RCRD_TYPE_REQD</platformCore:code>
                      <platformCore:message>The getAll record type is required.</platformCore:message>
                  </platformCore:statusDetail>
              </platformCore:status>
          </platformCore:getAllResult>
      </getAllResponse>
   </soapenv:Body>
</soapenv:Envelope>

我试图请求货币,状态 - 响应始终相同

我尝试了以下变体:

<GetAllRecordType>inventoryItem</GetAllRecordType>

<recordType>inventoryItem</recordType>

<GetAllRecordType>currency</GetAllRecordType>

<recordType>currency</recordType>

有同样的回应:

 <platformCore:message>The getAll record type is required.</platformCore:message>

根据https://webservices.netsuite.com/xsd/platform/v2013_2_0/coreTypes.xsd - 我已经正确指定了recordType(顺便说一句,我也尝试过但没有成功)

我正在使用 ruby​​,并且没有完整的 ruby​​ 库。存在的那个几乎不包含我将要使用的所有东西。

有人可以帮助我我做错了什么,或者可能有人有工作的例子

4

7 回答 7

5

getAll 不能用于所有记录类型。以下是通过 getAll 支持的内容:

预算类别

竞选观众

活动类别

活动频道

竞选家庭

活动优惠

活动搜索引擎

活动订阅

广告系列垂直

成本类别

货币

铅源

销售税项

状态

支持案例问题

支持案例起源

支持案例优先

支持案例状态

支持案例类型

税务集团

税种

于 2013-10-15T22:20:59.393 回答
2

我偶然发现了这个问题与相同的问题

<platformCore:message>The getAll record type is required.</platformCore:message>

我想我会发布一个关于这个请求的合适的肥皂信封应该是什么样子的片段。正如其他人所提到的,这个调用只支持某些记录类型......但是一旦你确定了你想要的记录类型,下面的代码应该会有所帮助。

<soap:Envelope xmlns:platformFaults="urn:faults_2014_1.platform.webservices.netsuite.com" xmlns:platformMsgs="urn:messages_2014_1.platform.webservices.netsuite.com" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="urn:platform_2014_1.webservices.netsuite.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Header>
        <passport>
            <email>test@example.com</email>
            <password>*******</password>
            <account>AccountNumber</account>
            <role internalId="3"/>
        </passport>
    </soap:Header>
    <soap:Body>
        <platformMsgs:getAll xmlns="urn:messages_2014_1.platform.webservices.netsuite.com" xmlns:platformMsgs="urn:messages_2014_1.platform.webservices.netsuite.com">
            <platformMsgs:record recordType="currency"/>
        </platformMsgs:getAll>
    </soap:Body>
</soap:Envelope>

此外,我们正在使用node-soap模块与此 Web 服务进行通信,从这个角度来看,它也是如此。

soap.createClient(this.url, function (err, client) {
            client.addSoapHeader({
                passport: {
                    email: 'test@example.com',
                    password: 'pass',
                    account: 'Acct Number',
                    role: {
                        attributes: { internalId: 3 }
                    }
                }
            });
            client.getAll({
                "record": {
                  "attributes": {
                    "recordType": "currency"
                    }
                 }
           }, callback);
        });
});

无论如何,我希望这对其他人有所帮助,因为它确实困扰了我一段时间。

于 2014-09-16T15:55:28.510 回答
2

SuiteTalk 在 Ruby 中最完整的实现是netsuite ruby​​ gem

它还不支持ItemSearchAdvanced(请注意,与大多数 NetSuite 记录不同,没有ItemSearchBasic)。另外,请注意,没有您期望的 , 等InventoryItemAdvancedSearchNonInventoryItemAdvancedSearch查看架构浏览器lists.accounting.xsd中的更多信息。

就像其他人提到的那样,没有getAll要求项目记录类型。获取 NetSuite 实例中所有项目的最佳(可能也是唯一)方法是通过搜索进行分页并组合所有结果。

我编写了一个快速 hack来演示为了在 NetSuite gem 中实现项目搜索需要做什么。我不会在生产中使用引用的 hack,但是您可以使用上面引用的 hack 的信息轻松地将项目搜索集成到 NetSuite gem 中。

下面是搜索代码,当与上述 hack 结合使用时,将为您获取 NetSuite 实例中的所有项目。

item_list = []
item_search = NetSuite::Records::InventoryItem.search(
  criteria: {
    basic: [

    ]
  },

  preferences: {
    page_size: 100,
  }
)

item_search.results_in_batches do |batch|
  item_list += batch
end

(如果搜索返回一个NonInventoryItem或另一个不是 a 的项目记录,上面的代码可能会中断InventoryItem,但这应该足以让你开始)

于 2013-10-15T14:46:23.530 回答
1

正如 Dave 所建议的,请求将区分大小写,因此请确保您使用的值与 XSD 所说的完全匹配。

如果您进一步向下滚动 XSD,您将看到枚举,GetAllRecordType而不仅仅是RecordType. 这没有inventoryItem任何类似的条目,因此库存项目很可能在此类请求中不可用。

您可能不得不构建一个不带过滤器的项目搜索来返回所有库存项目。

于 2013-10-09T17:41:22.833 回答
1

库存项目,而不是库存项目。

另外,您使用的是什么语言?如果是 PHP,有一个 PHPToolkit 可以帮助你。

于 2013-10-09T17:01:11.097 回答
1

对于使用 PHP 和特别是这个库的任何人,您可以通过这种方式指定记录类型:

$getAllRequest = new GetAllRequest();
$getAllRequest->record = new GetAllRecord();
$getAllRequest->record->recordType = RecordType::currency;
$getAllResponse = $service->getAll($getAllRequest);

例如,这将返回所有现有货币的列表。

于 2018-04-26T01:19:53.683 回答
0

也许这个链接有帮助: http
: //tellsaqib.github.io/NSPHP-Doc/df/d09/class_get_all_record_type.html GetAllRecordType 类没有 InventoryItem
数据字段 const budgetCategory = "budgetCategory"

常量campaignAudience = "campaignAudience"

常量campaignCategory = "campaignCategory"

常量campaignChannel = "campaignChannel"

常量campaignFamily = "campaignFamily"

常量campaignOffer = "campaignOffer"

常量campaignSearchEngine = "campaignSearchEngine"

常量campaignSubscription = "campaignSubscription"

常量campaignVertical =“campaignVertical”

const costCategory = "costCategory"

常量货币 = “货币”

常量leadSource = "leadSource"

const salesTaxItem = "salesTaxItem"

常量状态 = “状态”

常量 supportCaseIssue = "supportCaseIssue"

常量 supportCaseOrigin = "supportCaseOrigin"

常量 supportCasePriority = "supportCasePriority"

常量 supportCaseStatus = "supportCaseStatus"

常量 supportCaseType = "supportCaseType"

const taxGroup = "taxGroup"

常量 taxType = "taxType"

于 2013-10-30T03:51:55.957 回答