所以我的问题非常简单:我正在尝试使用ASP.NET和QBWebConnector将客户添加到Quickbooks,谢天谢地我成功了。当我尝试向客户添加自定义字段时会出现问题。
以下是我发送的qbposxml
:
<?xml version="1.0" encoding="UTF-8"?>
<?qbposxml version="3.0"?>
<QBPOSXML>
<QBPOSXMLMsgsRq onError="stopOnError">
<CustomerAddRq requestID="1">
<CustomerAdd>
<Salutation>Mr.</Salutation>
<FirstName>Ammar</FirstName>
<LastName>Ahmed</LastName>
<BillAddress>
<Street>asascc, asdas</Street>
</BillAddress>
<Phone>03321221221</Phone>
</CustomerAdd>
</CustomerAddRq>
<DataExtModRq>
<DataExtMod>
<OwnerID>0</OwnerID>
<DataExtName>IDNumber</DataExtName>
<ListDataExtType>Customer</ListDataExtType>
<ListObjRef>
<FullName>Ammar Ahmed</FullName>
</ListObjRef>
<DataExtValue>12331</DataExtValue>
</DataExtMod>
</DataExtModRq>
<DataExtModRq>
<DataExtMod>
<OwnerID>0</OwnerID>
<DataExtName>GebDatum</DataExtName>
<ListDataExtType>Customer</ListDataExtType>
<ListObjRef>
<FullName>Ammar Ahmed</FullName>
</ListObjRef>
<DataExtValue>21/22/12</DataExtValue>
</DataExtMod>
</DataExtModRq>
</QBPOSXMLMsgsRq>
</QBPOSXML>
现在我得到的回应是:
<?xml version="1.0" encoding="UTF-8"?>
<QBPOSXML>
<QBPOSXMLMsgsRs>
<CustomerAddRs requestID="1" statusCode="0" statusMessage="Status OK" statusSeverity="Info">
<CustomerRet>
<ListID>755269278256496897</ListID>
<TimeModified>2017-03-08T14:00:42+05:00</TimeModified>
<AccountBalance>0.00</AccountBalance>
<AccountLimit>0.00</AccountLimit>
<CustomerDiscPercent>0.00</CustomerDiscPercent>
<CustomerDiscType>None</CustomerDiscType>
<FirstName>Ammar</FirstName>
<FullName>Mr. Ammar Ahmed</FullName>
<IsAcceptingChecks>True</IsAcceptingChecks>
<IsUsingWithQB>False</IsUsingWithQB>
<LastName>Ahmed</LastName>
<Phone>03321221221</Phone>
<PriceLevelNumber>1</PriceLevelNumber>
<Salutation>Mr.</Salutation>
<StoreExchangeStatus>Modified</StoreExchangeStatus>
<BillAddress>
<Street>asascc, asdas</Street>
</BillAddress>
</CustomerRet>
</CustomerAddRs>
<DataExtModRs statusCode="20036" statusMessage="Extension error (ListID is missing)" statusSeverity="Error">
<DataExtRet />
</DataExtModRs>
</QBPOSXMLMsgsRs>
</QBPOSXML>
我不知道如何获得我正在添加的客户的ListID
,因为是在添加客户之后创建的。
注意事项:添加了客户,但没有自定义字段。从this和this我收集到了我不需要ListID。
任何帮助都将受到高度赞赏。
更新 所以在answer William Lorfing 之后,我查看了QBPOS程序员指南的第6章并发现了宏。以下是我最终使用它们的方法,结果非常出色:
我的客户添加请求变为:
<?xml version="1.0" encoding="UTF-8"?>
<?qbposxml version="3.0"?>
<QBPOSXML>
<QBPOSXMLMsgsRq onError="stopOnError">
<CustomerAddRq requestID="1">
<CustomerAdd defMacro="ListID:Cust1"> NOTICE THE INITIALIZATION OF MACRO!
<Salutation>Mr.</Salutation>
<FirstName>Ammar</FirstName>
<LastName>Ahmed</LastName>
<BillAddress>
<Street>asascc, asdas</Street>
</BillAddress>
<Phone>03321221221</Phone>
</CustomerAdd>
</CustomerAddRq>
<DataExtModRq>
<DataExtMod>
<OwnerID>0</OwnerID>
<DataExtName>IDNumber</DataExtName>
<ListDataExtType>Customer</ListDataExtType>
<ListObjRef>
<ListID useMacro="ListID:Cust1" /> NOTICE THE USE OF MACRO!
</ListObjRef>
<DataExtValue>12331</DataExtValue>
</DataExtMod>
</DataExtModRq>
<DataExtModRq>
<DataExtMod>
<OwnerID>0</OwnerID>
<DataExtName>GebDatum</DataExtName>
<ListDataExtType>Customer</ListDataExtType>
<ListObjRef>
<ListID useMacro="ListID:Cust1" /> NOTICE THE USE OF MACRO!
</ListObjRef>
<DataExtValue>21/22/12</DataExtValue>
</DataExtMod>
</DataExtModRq>
</QBPOSXMLMsgsRq>
</QBPOSXML>
首先我们初始化宏然后我们使用它,从而避免了额外的请求,并且不知道有多少行无用的代码只是为了添加自定义字段。
感谢 William Lorfing 提供了正确方向的提示。
答案 0 :(得分:0)
对于QBPOS SDK,ListObjRef需要ListID而不是fullname。
您将要么必须执行customeradd,然后在下一个请求中使用ListID执行DataExtAdd,或者您可以尝试使用宏。请参阅“POS SDK程序员指南”的第6章。 该指南包含在POS SDK中。