NetSuite的发票创建MLI_LOCATION_REQUIRED但invoice.locatio

2019-10-21 11:03发布

好像大多数人都在使用NetSuite的web服务交互的PHP工具包; 我不是,但我会粘贴希望有人能帮助(咳嗽套房资源咳嗽)的SOAP编码的请求/响应。

我试图创建一个单一的发票项目一个新的发票。 我得到的错误:

多位置库存错误(MLI_LOCATION_REQUIRED):本次交易或它的项目必须有位置。

然而,当我尝试在发票本身设置的位置,我得到的错误:

您没有权限为元素的位置,由于一个值​​设置为以下原因:1)该字段是只读的; 2)相关联的特征被禁用; 3)创建既可以当一个记录或更新,但不是在这两种情况下的字段可用。

[1] pry(main)> invoice.add

D, [2014-12-19T16:47:19.997923 #13995] DEBUG -- : HTTPI GET request to webservices.sandbox.netsuite.com (net_http)
I, [2014-12-19T16:47:20.464235 #13995]  INFO -- : SOAP request: https://webservices.sandbox.netsuite.com/services/NetSuitePort_2013_2
I, [2014-12-19T16:47:20.464378 #13995]  INFO -- : SOAPAction: "add", Content-Type: text/xml;charset=UTF-8, Content-Length: 2568
D, [2014-12-19T16:47:20.464926 #13995] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:platformMsgs="urn:messages_2013_2.platform.webservices.netsuite.com" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:platformCore="urn:core_2013_2.platform.webservices.netsuite.com" xmlns:platformCommon="urn:common_2013_2.platform.webservices.netsuite.com" xmlns:listRel="urn:relationships_2013_2.lists.webservices.netsuite.com" xmlns:tranSales="urn:sales_2013_2.transactions.webservices.netsuite.com" xmlns:actSched="urn:scheduling_2013_2.activities.webservices.netsuite.com" xmlns:setupCustom="urn:customization_2013_2.setup.webservices.netsuite.com" xmlns:listAcct="urn:accounting_2013_2.lists.webservices.netsuite.com" xmlns:tranBank="urn:bank_2013_2.transactions.webservices.netsuite.com" xmlns:tranCust="urn:customers_2013_2.transactions.webservices.netsuite.com" xmlns:tranInvt="urn:inventory_2013_2.transactions.webservices.netsuite.com" xmlns:listSupport="urn:support_2013_2.lists.webservices.netsuite.com" xmlns:tranGeneral="urn:general_2013_2.transactions.webservices.netsuite.com" xmlns:listMkt="urn:marketing_2013_2.lists.webservices.netsuite.com" xmlns:listWebsite="urn:website_2013_2.lists.webservices.netsuite.com" xmlns:fileCabinet="urn:filecabinet_2013_2.documents.webservices.netsuite.com" xmlns:listEmp="urn:employees_2013_2.lists.webservices.netsuite.com">
  <env:Header>
    <platformMsgs:passport>
      <platformCore:email>[REDACTED]</platformCore:email>
      <platformCore:password>[REDACTED]</platformCore:password>
      <platformCore:account>[REDACTED]</platformCore:account>
      <platformCore:role internalId="3"/>
    </platformMsgs:passport>
  </env:Header>
  <env:Body>
    <platformMsgs:add>
      <platformMsgs:record xsi:type="tranSales:Invoice">
        <tranSales:email>[REDACTED]</tranSales:email>
        <tranSales:isTaxable>false</tranSales:isTaxable>
        <tranSales:entity internalId="26017" externalId="[REDACTED]" type="customer"/>
        <tranSales:itemList>
          <tranSales:item>
            <tranSales:item internalId="152"/>
            <tranSales:line>1</tranSales:line>
            <tranSales:orderLine>1</tranSales:orderLine>
            <tranSales:amount>313</tranSales:amount>
            <tranSales:location internalId="1" type="location"/>
            <tranSales:revRecStartDate>2014-12-01T08:13:00.000Z</tranSales:revRecStartDate>
            <tranSales:revRecEndDate>2015-12-01T08:13:00.000Z</tranSales:revRecEndDate>
          </tranSales:item>
        </tranSales:itemList>
      </platformMsgs:record>
    </platformMsgs:add>
  </env:Body>
</env:Envelope>

D, [2014-12-19T16:47:20.465337 #13995] DEBUG -- : HTTPI POST request to webservices.sandbox.netsuite.com (net_http)
I, [2014-12-19T16:47:23.786293 #13995]  INFO -- : SOAP response (status 200)
D, [2014-12-19T16:47:23.786660 #13995] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
<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_2.platform.webservices.netsuite.com">
      <platformMsgs:nsId>WEBSERVICES_[REDACTED]_121920141668433096579618905_1be2c0a823e5</platformMsgs:nsId>
    </platformMsgs:documentInfo>
  </soapenv:Header>
  <soapenv:Body>
    <addResponse xmlns="urn:messages_2013_2.platform.webservices.netsuite.com">
      <writeResponse>
        <platformCore:status xmlns:platformCore="urn:core_2013_2.platform.webservices.netsuite.com" isSuccess="false">
          <platformCore:statusDetail type="ERROR">
            <platformCore:code>MLI_REQD</platformCore:code>
            <platformCore:message>Multi-location Inventory Error (MLI_LOCATION_REQUIRED): this transaction or its items must have locations.</platformCore:message>
          </platformCore:statusDetail>
          <platformCore:statusDetail type="WARN">
            <platformCore:code>WARNING</platformCore:code>
            <platformCore:message>Fake Billing Line Item: You have only 0 available across all locations (0 back ordered, 0 on order).</platformCore:message>
          </platformCore:statusDetail>
        </platformCore:status>
      </writeResponse>
    </addResponse>
  </soapenv:Body>
</soapenv:Envelope>

=> false
[2] pry(main)> invoice.location = ottawa
=> #<NetSuite::Records::Location:0x007fca96a5eea8
 @attributes=
  {:name=>"Ottawa",
   :is_inactive=>false,
   :addressee=>"Ottawa",
   :addr1=>"[REDACTED]",
   :city=>"Ottawa",
   :state=>"ON",
   :zip=>"[REDACTED]",
   :country=>"_canada",
   :addr_text=>"Ottawa\n[REDACTED]\nOttawa ON [REDACTED]",
   :override=>false,
   :make_inventory_available=>false},
 @external_id=nil,
 @internal_id="1">
[3] pry(main)> invoice.add
D, [2014-12-19T16:48:03.626321 #13995] DEBUG -- : HTTPI GET request to webservices.sandbox.netsuite.com (net_http)
I, [2014-12-19T16:48:04.090118 #13995]  INFO -- : SOAP request: https://webservices.sandbox.netsuite.com/services/NetSuitePort_2013_2
I, [2014-12-19T16:48:04.090331 #13995]  INFO -- : SOAPAction: "add", Content-Type: text/xml;charset=UTF-8, Content-Length: 2640
D, [2014-12-19T16:48:04.090841 #13995] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:platformMsgs="urn:messages_2013_2.platform.webservices.netsuite.com" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:platformCore="urn:core_2013_2.platform.webservices.netsuite.com" xmlns:platformCommon="urn:common_2013_2.platform.webservices.netsuite.com" xmlns:listRel="urn:relationships_2013_2.lists.webservices.netsuite.com" xmlns:tranSales="urn:sales_2013_2.transactions.webservices.netsuite.com" xmlns:actSched="urn:scheduling_2013_2.activities.webservices.netsuite.com" xmlns:setupCustom="urn:customization_2013_2.setup.webservices.netsuite.com" xmlns:listAcct="urn:accounting_2013_2.lists.webservices.netsuite.com" xmlns:tranBank="urn:bank_2013_2.transactions.webservices.netsuite.com" xmlns:tranCust="urn:customers_2013_2.transactions.webservices.netsuite.com" xmlns:tranInvt="urn:inventory_2013_2.transactions.webservices.netsuite.com" xmlns:listSupport="urn:support_2013_2.lists.webservices.netsuite.com" xmlns:tranGeneral="urn:general_2013_2.transactions.webservices.netsuite.com" xmlns:listMkt="urn:marketing_2013_2.lists.webservices.netsuite.com" xmlns:listWebsite="urn:website_2013_2.lists.webservices.netsuite.com" xmlns:fileCabinet="urn:filecabinet_2013_2.documents.webservices.netsuite.com" xmlns:listEmp="urn:employees_2013_2.lists.webservices.netsuite.com">
  <env:Header>
    <platformMsgs:passport>
      <platformCore:email>[REDACTED]</platformCore:email>
      <platformCore:password>[REDACTED]</platformCore:password>
      <platformCore:account>[REDACTED]</platformCore:account>
      <platformCore:role internalId="3"/>
    </platformMsgs:passport>
  </env:Header>
  <env:Body>
    <platformMsgs:add>
      <platformMsgs:record xsi:type="tranSales:Invoice">
        <tranSales:email>[REDACTED]</tranSales:email>
        <tranSales:isTaxable>false</tranSales:isTaxable>
        <tranSales:entity internalId="26017" externalId="[REDACTED]" type="customer"/>
        <tranSales:itemList>
          <tranSales:item>
            <tranSales:item internalId="152"/>
            <tranSales:line>1</tranSales:line>
            <tranSales:orderLine>1</tranSales:orderLine>
            <tranSales:amount>313</tranSales:amount>
            <tranSales:location internalId="1" type="location"/>
            <tranSales:revRecStartDate>2014-12-01T08:13:00.000Z</tranSales:revRecStartDate>
            <tranSales:revRecEndDate>2015-12-01T08:13:00.000Z</tranSales:revRecEndDate>
          </tranSales:item>
        </tranSales:itemList>
        <tranSales:location internalId="1" type="location"/>
      </platformMsgs:record>
    </platformMsgs:add>
  </env:Body>
</env:Envelope>

D, [2014-12-19T16:48:04.091365 #13995] DEBUG -- : HTTPI POST request to webservices.sandbox.netsuite.com (net_http)
I, [2014-12-19T16:48:05.738270 #13995]  INFO -- : SOAP response (status 200)
D, [2014-12-19T16:48:05.738785 #13995] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
<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_2.platform.webservices.netsuite.com">
      <platformMsgs:nsId>WEBSERVICES_[REDACTED]_121920141668476805866012724_a7c7c427c826</platformMsgs:nsId>
    </platformMsgs:documentInfo>
  </soapenv:Header>
  <soapenv:Body>
    <addResponse xmlns="urn:messages_2013_2.platform.webservices.netsuite.com">
      <writeResponse>
        <platformCore:status xmlns:platformCore="urn:core_2013_2.platform.webservices.netsuite.com" isSuccess="false">
          <platformCore:statusDetail type="ERROR">
            <platformCore:code>INSUFFICIENT_PERMISSION</platformCore:code>
            <platformCore:message>You do not have permissions to set a value for element location due to one of the following reasons: 1) The field is read-only; 2) An associated feature is disabled; 3) The field is available either when a record is created or updated, but not in both cases.</platformCore:message>
          </platformCore:statusDetail>
        </platformCore:status>
      </writeResponse>
    </addResponse>
  </soapenv:Body>
</soapenv:Envelope>

=> false
[4] pry(main)>

Answer 1:

纵观“invoice.location” JSON数据([2]撬(主)> invoice.location =渥太华)张贴在你的问题,我看你有没有“make_inventory_available”字段设置为假的位置记录NetSuite的内部。

你可以尝试下面的,让我知道,如果它的工作原理:

  1. 在NetSuite的用户界面,导航到设置 - >公司 - >位置(下分类)。
  2. 编辑与内部编号位置“1”,即“渥太华”。
  3. 设置复选框字段“MAKE可用库存”为真。
  4. 现在尝试通过张贴在你的第一个SOAP XML请求设置在物品等级位置字段进行invoice.add操作([1]撬(主)> invoice.add)。


文章来源: NetSuite Invoice Creation MLI_LOCATION_REQUIRED but invoice.location unsettable