在qbxml中发送CustomerQueryRq
时,它会返回:
500: The query request has not been fully completed.
There was a required element ("Client Name") that could not be found in QuickBooks.
然后我发送一个返回的CustomerAddRq
:
3100: The name "Client Name" of the list element is already in use.
InvoiceAddRq
无法说:
3140: There is an invalid reference to QuickBooks Customer "Client Name"
in the Invoice. QuickBooks error message: The specified name is either
invalid or of the wrong type.
如何使用FullName“客户名称”的客户,但是在尝试为该客户添加发票时找不到它?
我是否误解了这些错误消息?
答案 0 :(得分:2)
这是你的回答:
这告诉我,没有一个客户拥有这个确切的名称,但是他/她是一个具有相同名称的供应商或员工或其他名称条目。
QuickBooks中的Name
字段是供应商,员工,其他名称条目和客户之间的UNIQUE
密钥。
答案 1 :(得分:1)
注意:始终转义并修剪数据并检查其长度,然后再传递给QB。请务必参阅OSR。
首先尝试使用// CustomerQuery Request
$name = 'John Doe';
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<CustomerQueryRq>
<NameFilter>
<MatchCriterion>StartsWith</MatchCriterion>
<Name>' . $name . '</Name>
</NameFilter>
</CustomerQueryRq>
</QBXMLMsgsRq>
</QBXML>';
xml:
John Doe
解析您的回复。
如果找到了某些内容(可能有John Doe 1
和$name = 'John Doe';
$firstname = 'John';
$lastname = 'Doe';
$address_xml = ''; // Put address XML block here
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="2.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerAddRq>
<CustomerAdd>
<Name>' . $name . '</Name>
<CompanyName></CompanyName>
<FirstName>' . $firstname . '</FirstName>
<LastName>' . $lastname . '</LastName>
' . $address_xml . '
<Phone>555-555-55</Phone>
<AltPhone></AltPhone>
<Fax>555-555-55</Fax>
<Email>john@doe.com</Email>
<Contact>' . $name . '</Contact>
</CustomerAdd>
</CustomerAddRq>
</QBXMLMsgsRq>
</QBXML>';
等),请检查他们的电子邮件地址。如果找到匹配项,请将其QuickBooks ID绑定到电子商务数据库中的客户。您将在进一步的请求中引用此ID。跳过步骤#3。
如果未找到任何内容,请添加新客户(步骤3)。
添加客户。立即使用CustomerAdd XML:
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<InvoiceAddRq>
<InvoiceAdd>
<CustomerRef>
<ListID>' . $id . '</ListID>
</CustomerRef>
<!-- rest of XML -->
';
解析您的请求并将QuickBooks ID存储在您的数据库中以便将来引用它。
构建InvoiceAdd XML并指定客户ID(不是名称):
$('#langtabs').tabSelect({
tabElements: languages,
selectedTabs: [ 'de', 'en' ],
onChange: function(selection){
alert(selection);
}
});
不要忘记在数据库中保存刚刚创建的发票的QuickBooks ID。