2013-06-26 32 views
2

我写一个代码来将购物车与quickbooks集成,使用quickbooks网络连接器。问题是,当我试图找出是否有客户在通过名称和电子邮件过滤的quickbooks中。我试过这个:我可以通过名称和电子邮件查询一个quickbooks客户

<?xml version="1.0" encoding="utf-8"?> 
<?qbxml version="9.0"?> 
<QBXML> 
    <QBXMLMsgsRq onError="continueOnError"> 
    <CustomerQueryRq> 
     <FullName>Mladen Petrov</FullName> 
     <Email>[email protected]</Email> 
    </CustomerQueryRq> 
    </QBXMLMsgsRq> 
</QBXML> 

但它返回了一个错误。有没有一种方法可以通过姓名和电子邮件找到快速客户,或者我必须让所有QB客户以某种方式将他们存储到我的数据库中,并使用他们的QB ID?

回答

1

谢谢你们。我发现另一个可用的解决方案:

在字段FullName我把FullName(电子邮件)。这样,我有全名和电子邮件的唯一用户。其他字段(首字母,姓氏和联系人填写正确)。

但只要确保fullName + email低于41个字符(这是字段限制)。

2

姓名是,邮箱地址。

您需要拉取完整或过滤的列表,并通过它解析查找电子邮件地址。

3

Quickbooks在寻找客户方面并不十分稳健。唯一存在的过滤器实际上就是名称。有些地方可以通过发票上的各种东西找到用户,但他们的实际数据很少(地址,电子邮件等)。因此,您所做的是搜索名称并循环查看完整的结果列表以查找您想要的记录。效率不高,但有效。有一种方法可以对结果进行分页,因此您不会通过数十项结果扼杀您的机器。

有如何分页这里 http://www.consolibyte.com/wiki/doku.php/quickbooks_qbxml_customerquery_with_iterators

你的结果一定要参考哪些字段支持的OSR旧的书面记录。电子邮件不是该类型请求的定义字段。 https://member.developer.intuit.com/qbsdk-current/Common/newOSR/index.html

0

看起来你可以通过电子邮件地址现在搜索:"Select * From Customer Where PrimaryEmailAddr = '[email protected]'"

这是基于API V3

+0

Note标记qbxml。我仅使用Quickbooks Web连接器和PHP Web服务器的桌面版。 – bksi

0

是否容易使用名称过滤NameRange过滤以自己特有的查询该客户客户名称

"<NameFilter> <!-- optional --> 
<!-- MatchCriterion may have one of the following values: StartsWith, Contains, EndsWith --> 
<MatchCriterion >ENUMTYPE</MatchCriterion> <!-- required --> 
<Name >STRTYPE</Name> <!-- required --> 
</NameFilter> 
<!-- OR --> 
<NameRangeFilter> <!-- optional --> 
<FromName >STRTYPE</FromName> <!-- optional --> 
<ToName >STRTYPE</ToName> <!-- optional --> 
</NameRangeFilter>" 

例子:

“ StartsWith MladenPetrov

姆拉登·彼得罗夫 ”

与电子邮件ID的效应初探检查它正确与否 ..

+0

是的,我可以直接尝试全名,但这会影响性能。 – bksi

+0

FullName是以每个祖先的名字作为前缀的名称,例如Jones:Kitchen:Cabinets。FullName值不区分大小写。如果我想在quickbooks桌面中同步旧记录,我如何知道旧记录的全名。我只知道客户名称,所以这个查询是正确的? –

+0

这个想法不是与旧记录同步,而是在采取行动(编辑/添加)之前检查记录是否存在。采取这一行动,服务器不知道QB中的内容。 – bksi

相关问题