客户属性未在Add上保存

时间:2013-07-25 20:06:48

标签: intuit-partner-platform quickbooks-online

所以我一直在尝试从我们公司的本地数据库实例向QuickBooks Online添加customers。我想在QBO中跟踪我们的内部客户参考号,因此尝试将它们保存到几个不同的属性,如AcctNum,ExternalKey,ExternalId,AlternateId,甚至直接保存到Id属性。尝试保存到这些字段后,返回结果看起来不错。

var qbCustomer = new Customer
                    {
                        AcctNum = customer.CustRef.ToString(CultureInfo.InvariantCulture),
                        ExternalKey = new IdType {idDomain = idDomainEnum.NG, Value = customer.CustRef.ToString(CultureInfo.InvariantCulture)},
                        Id = new IdType {idDomain = idDomainEnum.NG, Value = customer.CustRef.ToString(CultureInfo.InvariantCulture)},
                        Name = customer.CustName1,
                        FamilyName = customer.CustRef.ToString(CultureInfo.InvariantCulture),
                    };

Customer resultCustomer = dataServices.Add(qbCustomer);

但是下次我检索这些客户时,所有这些字段都是空的。为什么这些字段不能保存?除了使用其中一个纯文本字段(名称,地址等)之外,还有另一个更合适的字段用于存储外部ID吗?

更新: 这是原始XML交换。

添加新客户时发送的内容:

<?xml version="1.0" encoding="utf-8"?>
<q1:Customer xmlns="http://www.intuit.com/sb/cdm/qbo" xmlns:q1="http://www.intuit.com/sb/cdm/v2">
<q1:Id>7</q1:Id>
<q1:ExternalKey>7</q1:ExternalKey>
<q1:TypeOf>Person</q1:TypeOf>
<q1:Name>Customer Name</q1:Name>
<q1:FamilyName>7</q1:FamilyName>
<q1:AcctNum>7</q1:AcctNum>
</q1:Customer>

Intuit的回应:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Customer xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:qbp="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:qbo="http://www.intuit.com/sb/cdm/qbo">
<Id idDomain="QBO">12</Id>
<SyncToken>0</SyncToken>
<MetaData><CreateTime>2013-07-25T13:51:43-07:00</CreateTime><LastUpdatedTime>2013-07-25T13:51:43-07:00</LastUpdatedTime></MetaData>
<Name>Customer Name</Name>
<WebSite/>
<Email/>
<FamilyName>7</FamilyName>
<CustomField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="StringTypeCustomField"><DefinitionId>Preferred Delivery Method</DefinitionId><Value>DONT</Value></CustomField>
<CustomField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="StringTypeCustomField"><DefinitionId>Resale Number</DefinitionId></CustomField>
<CustomField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="BooleanTypeCustomField"><DefinitionId>Bill With Parent</DefinitionId><Value>false</Value></CustomField>
<ShowAs>Erik Kunze/Magdalena Guarda Munoz</ShowAs>
<OpenBalance><Amount>0</Amount></OpenBalance>
</Customer>

我稍后检索:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<qbo:SearchResults xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:qbp="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:qbo="http://www.intuit.com/sb/cdm/qbo">
<qbo:CdmCollections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Customers">
<Customer>
<Id idDomain="QBO">12</Id>
<SyncToken>0</SyncToken>
<MetaData><CreateTime>2013-07-25T13:51:43-07:00</CreateTime><LastUpdatedTime>2013-07-25T13:51:43-07:00</LastUpdatedTime></MetaData>
<Name>Customer Name</Name>
<WebSite/>
<Email/>
<FamilyName>7</FamilyName>
<CustomField xsi:type="BooleanTypeCustomField"><DefinitionId>Bill With Parent</DefinitionId><Value>false</Value></CustomField>
<CustomField xsi:type="StringTypeCustomField"><DefinitionId>Preferred Delivery Method</DefinitionId><Value>DONT</Value></CustomField>
<ShowAs>Erik Kunze/Magdalena Guarda Munoz</ShowAs>
<OpenBalance><Amount>0</Amount></OpenBalance>
</Customer>
</qbo:CdmCollections>
<qbo:Count>1</qbo:Count>
<qbo:CurrentPage>1</qbo:CurrentPage>
</qbo:SearchResults>

原始XML中没有AcctNum。

2 个答案:

答案 0 :(得分:1)

您在apiexplorer中引用QBD的客户端点。

更正QBO链接 - https://developer.intuit.com/apiexplorer?apiname= V2QBO #Customer

Api Docs&amp;示例创建请求 - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0400_quickbooks_online/customer#Sample_Create_Request_XML

创建QBO客户的最简单的请求体 -

<Customer xmlns:ns2="http://www.intuit.com/sb/cdm/qbo" xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:ns3="http://www.intuit.com/sb/cdm/baseexceptionmodel/xsd">
    <TypeOf>Person</TypeOf>
    <Name>TestQBCustomer12345</Name>
</Customer>

最简单的回应

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Customer xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:qbp="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:qbo="http://www.intuit.com/sb/cdm/qbo">
    <Id idDomain="QBO">14</Id>
    <SyncToken>0</SyncToken>
    <MetaData>
        <CreateTime>2013-07-25T14:08:49-07:00</CreateTime>
        <LastUpdatedTime>2013-07-25T14:08:49-07:00</LastUpdatedTime>
    </MetaData>
    <Name>TestQBCustomer12345</Name>
    <WebSite/>
    <Email/>
    <CustomField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="StringTypeCustomField">
        <DefinitionId>Preferred Delivery Method</DefinitionId>
        <Value>DONT</Value>
    </CustomField>
    <CustomField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="StringTypeCustomField">
        <DefinitionId>Resale Number</DefinitionId>
    </CustomField>
    <CustomField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="BooleanTypeCustomField">
        <DefinitionId>Bill With Parent</DefinitionId>
        <Value>false</Value>
    </CustomField>
    <ShowAs>TestQBCustomer12345</ShowAs>
    <OpenBalance>
        <Amount>0</Amount>
    </OpenBalance>
</Customer>

您可以先使用apiexplorer进行测试,然后使用正确的setter在您的代码中执行相同操作。

请告诉我它是怎么回事。

由于

答案 1 :(得分:0)

请参阅文档:

你会注意到:

  • Id是由IPP / IDS生成的内部密钥 - 这不是您可以自行设置的内容。
  • ExternalKey是相同的情况 - 它是由IPP / IDS生成的,不能由您设置。
  • ExternalId标记为“UNSUPPORTED FIELD。”
  • AlternateId标记为“NOT SUPPORTED。”

应该工作的唯一一个字段是:

  • ACCTNUM

如果您仍然遇到该字段的问题,那么解决问题的方法是从Intuit获取原始XML传出请求,这是您获得的原始XML(显示成功),然后是您在返回时获得的原始响应你查询它,表明它是NULL。