如何使用QBPOSXML将具有自定义字段的客户添加到Quickbooks POS

时间:2017-03-08 09:09:33

标签: c# asp.net asp.net-mvc qbxml

所以我的问题非常简单:我正在尝试使用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,因为是在添加客户之后创建的。

注意事项:添加了客户,但没有自定义字段。从thisthis我收集到了我不需要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 提供了正确方向的提示。

1 个答案:

答案 0 :(得分:0)

对于QBPOS SDK,ListObjRef需要ListID而不是fullname。

您将要么必须执行customeradd,然后在下一个请求中使用ListID执行DataExtAdd,或者您可以尝试使用宏。请参阅“POS SDK程序员指南”的第6章。 该指南包含在POS SDK中。