由于客户全名,无法在 QBXML 请求中添加发票
Cannot add Invoice in QBXML request due to the Customer FullName
在 qbxml 中发送 CustomerQueryRq
时,它 returns:
500: The query request has not been fully completed.
There was a required element ("Client Name") that could not be found in QuickBooks.
然后我发送 CustomerAddRq
returns:
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.
全名 "Client Name" 的客户怎么可能已经在使用中,但在尝试为该客户添加发票时找不到它?
我是否误解了这些错误消息?
这是您的答案:
- 指定的名称无效或类型错误。
这告诉我没有一个客户的名字完全相同,但是有一个 VENDOR 或 EMPLOYEE 或 OTHER NAME 条目具有相同的名字。
QuickBooks 中的 Name
字段是跨供应商、员工、其他名称条目和客户的 UNIQUE
键。
注意: 始终转义并 trim 您的数据并在将其传递给 QB 之前检查长度。始终参考 OSR.
首先尝试使用 CustomerQueryRq
xml:
按姓名查找客户
// 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>';
分析您的回复。
如果找到某些内容(可能有 John Doe
和 John Doe 1
等),请检查他们的电子邮件地址。如果找到匹配项,则将其 QuickBooks ID 绑定到电子商务数据库中的客户。您将在进一步的请求中参考此 ID。跳过步骤 #3。
如果未找到任何内容,请添加新客户(第 3 步)。
正在添加客户。现在使用 CustomerAdd XML:
$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 存储在您的数据库中以供将来参考。
构建您的 InvoiceAdd XML 并指定客户 ID(不是姓名):
$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。
在 qbxml 中发送 CustomerQueryRq
时,它 returns:
500: The query request has not been fully completed.
There was a required element ("Client Name") that could not be found in QuickBooks.
然后我发送 CustomerAddRq
returns:
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.
全名 "Client Name" 的客户怎么可能已经在使用中,但在尝试为该客户添加发票时找不到它?
我是否误解了这些错误消息?
这是您的答案:
- 指定的名称无效或类型错误。
这告诉我没有一个客户的名字完全相同,但是有一个 VENDOR 或 EMPLOYEE 或 OTHER NAME 条目具有相同的名字。
QuickBooks 中的 Name
字段是跨供应商、员工、其他名称条目和客户的 UNIQUE
键。
注意: 始终转义并 trim 您的数据并在将其传递给 QB 之前检查长度。始终参考 OSR.
首先尝试使用
按姓名查找客户CustomerQueryRq
xml:// 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>';
分析您的回复。 如果找到某些内容(可能有
John Doe
和John Doe 1
等),请检查他们的电子邮件地址。如果找到匹配项,则将其 QuickBooks ID 绑定到电子商务数据库中的客户。您将在进一步的请求中参考此 ID。跳过步骤 #3。
如果未找到任何内容,请添加新客户(第 3 步)。
正在添加客户。现在使用 CustomerAdd XML:
$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 存储在您的数据库中以供将来参考。
构建您的 InvoiceAdd XML 并指定客户 ID(不是姓名):
$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。