似乎大多数人都在使用PHP Toolkit进行NetSuite webservices交互;我不是,但我会粘贴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)>
答案 0 :(得分:1)
查看&#34; invoice.location&#34; JSON数据([2] pry(main)&gt; invoice.location = ottawa)发布在你的问题中,我看到你有&#34; make_inventory_available&#34;在NetSuite内部的位置记录中将字段设置为false。
你可以试试下面的内容,让我知道它是否有效: