由于Customer FullName,无法在QBXML请求中添加Invoice

时间:2016-05-04 20:50:59

标签: quickbooks qbxml

在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“客户名称”的客户,但是在尝试为该客户添加发票时找不到它?

我是否误解了这些错误消息?

2 个答案:

答案 0 :(得分:2)

这是你的回答:

  • 指定的名称无效或类型错误。

这告诉我,没有一个客户拥有这个确切的名称,但是他/她是一个具有相同名称的供应商或员工或其他名称条目。

QuickBooks中的Name字段是供应商,员工,其他名称条目和客户之间的UNIQUE密钥。

答案 1 :(得分:1)

注意:始终转义并修剪数据并检查其长度,然后再传递给QB。请务必参阅OSR

  1. 首先尝试使用// 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
  2. 解析您的回复。 如果找到了某些内容(可能有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. 如果未找到任何内容,请添加新客户(步骤3)。

    1. 添加客户。立即使用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 -->
         ';
      
    2. 解析您的请求并将QuickBooks ID存储在您的数据库中以便将来引用它。

    3. 构建InvoiceAdd XML并指定客户ID(不是名称):

      $('#langtabs').tabSelect({
              tabElements: languages,
              selectedTabs: [ 'de', 'en' ],  
              onChange: function(selection){
                  alert(selection);
              }
          });
      
    4. 不要忘记在数据库中保存刚刚创建的发票的QuickBooks ID。