quickbooks供应商信用错误消息

时间:2013-09-11 17:59:42

标签: quickbooks intuit-partner-platform

当我将以下XML发送到QuickBooks Desktop云时,我收到以下错误,我不明白。谷歌搜索但没有找到任何相关的东西。有谁知道源列是什么?

收到错误消息: p_validate_txn_ln - 无法找到每个ref id的src_column_name_id acc_id = 39 idDomain = QB

<Object xsi:type="VendorCredit"><Header>
<DocNumber>8D1FC366607</DocNumber>
<TxnDate>2013-09-11</TxnDate>
<Note>Expense Report 09/11/2013 #2</Note>
<VendorName>E100</VendorName>
<TotalAmt>-25.00</TotalAmt>
<APAccountName>Accounts Payable</APAccountName></Header>
<Line>
<Desc>Airfare:</Desc>
<Amount>25.00</Amount>
<ClassId idDomain="QB">5</ClassId>
<ReimbursableInfo>
<CustomerId idDomain="QB">5</CustomerId>
<JobId idDomain="QB">6</JobId>
</ReimbursableInfo>
<BillableStatus>NotBillable</BillableStatus>
<AccountId idDomain="QB">39</AccountId>
</Line>
</Object>

3 个答案:

答案 0 :(得分:0)

虽然文档提到AccountId是一个必填字段,但它不是(文档可能稍微偏离)。你可以忽略它。如果您选择添加它,则需要包含与项目相关的所有字段。 相反,ItemId是必填字段。因此,请将其包含在您的请求中。 请参考: https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0500_quickbooks_windows/0600_object_reference/vendorcredit

我按如下方式创建了供应商创建请求,并且能够获得正确的响应。 请求 -

<Add xmlns="http://www.intuit.com/sb/cdm/v2"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" RequestId="Szey2z7hrGf888888888jfc5hrGSYg99" xsi:schemaLocation="http://www.intuit.com/sb/cdm/v2 ./RestDataFilter.xsd">
<Object xsi:type="VendorCredit">
<Header>
    <DocNumber>8D1FC366607</DocNumber>
    <TxnDate>2013-09-11</TxnDate>
    <Note>Expense Report 09/11/2013 #2</Note>
    <VendorName>TestVendor4</VendorName>
    <TotalAmt>-25.00</TotalAmt>
    <APAccountName>Accounts Payable</APAccountName>
</Header>
<Line>
    <Desc>Airfare:</Desc>
    <Amount>25.00</Amount>
    <ClassId idDomain="QB">1</ClassId>
    <ReimbursableInfo>
        <CustomerId idDomain="QB">31</CustomerId>           
    </ReimbursableInfo>
    <BillableStatus>NotBillable</BillableStatus>
    <ItemId idDomain="QB">12</ItemId>       
</Line>
</Object>
</Add>

响应 -

<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2">
  <Success RequestId="Szey2z7hrGf888888888jfc5hrGSYg99">
<ObjectRef>
  <Id idDomain="NG">1925041</Id>
  <SyncToken>1</SyncToken>
  <LastUpdatedTime>2013-09-12T07:50:34Z</LastUpdatedTime>
</ObjectRef>
<RequestName>VendorCreditAdd</RequestName>
<ProcessedTime>2013-09-12T07:50:34Z</ProcessedTime>
  </Success>
</RestResponse>

编辑问题: * 请注意: * VendorCredit是一项AP交易,代表来自第三方的退货或未提供的服务的信用。在QuickBooks桌面版本中,供应商信用也称为“账单信用”。也就是说,由于您多付了账单,退回的商品或其他原因,这是供应商欠您的信用。在Bill Pay交易中引用VendorCredit之前,不会应用VendorCredit。 注意:VendorCredit不应与Credit Memo混淆,后者是您欠客户的东西

ItemId是指为其提供信用的项目。您可以通过在QBD中调用Item api来获取ItemId。请参阅您的请求。 由于您没有在请求xml中提及itemid,因此您获得了响应,但同步到QB桌面文件失败。您的供应商信用对象必须已出错。

要检查实体是否处于错误状态,可以通过执行查询并设置ErroredObjectsOnly =“true”来进行检查。

http://docs.developer.intuit.com/0025_Intuit_Anywhere/0050_Data_Services/v2/0500_QuickBooks_Windows/0100_Calling_Data_Services/0015_Retrieving_Objects#Objects_in_Error_State

如果实体处于错误状态,您可以使用SyncStatus API查询特定原因:

http://docs.developer.intuit.com/0025_Intuit_Anywhere/0050_Data_Services/v2/0500_QuickBooks_Windows/0600_Object_Reference/SyncStatus

请在您的请求中添加itemid引用,它应该有效。

答案 1 :(得分:0)

在不包括AccountId或ItemId之后,我能够很好地发送创建VendorCredit对象。获得成功回应。但是在我运行同步管理器后,转到QB Desktop,找到帐户,vendorCredit不在那里。有什么建议? XML发送:

<Object xsi:type="VendorCredit">
    <Header>
        <DocNumber>58B58878D79</DocNumber>
        <TxnDate>2013-09-12</TxnDate>
        <Note>Expense Report 09/12/2013 #2</Note>
        <VendorName>E100</VendorName>
        <TotalAmt>-43.80</TotalAmt>
        <APAccountName>Accounts Payable</APAccountName>
    </Header>
    <Line>
        <Desc>Advertising:</Desc>
        <Amount>43.80</Amount>
        <ClassId idDomain="QB">1</ClassId>
        <ReimbursableInfo>
            <CustomerId idDomain="QB">4</CustomerId>
            <JobId idDomain="QB">8</JobId>
        </ReimbursableInfo>
    </Line>
</Object>

收到回复:

<?xml version="1.0" encoding="UTF-8"?>
<RestResponse>
    <Success RequestId="4a3f1538a01b4a4dac6f03406c6710c7">
    <VendorCredit>
    <Id idDomain="NG">14542796</Id>
    <SyncToken>1</SyncToken>
    <MetaData>
        <CreatedBy>app</CreatedBy>
        <CreateTime>2013-09-12T23:41:38Z</CreateTime>
        <LastModifiedBy>app</LastModifiedBy>
        <LastUpdatedTime>2013-09-12T23:41:38Z</LastUpdatedTime>
    </MetaData>
    <Synchronized>false</Synchronized>
    <Header>
        <DocNumber>58B58878D79</DocNumber>
        <TxnDate>2013-09-12T00:00:00Z</TxnDate>
        <Note>Expense Report 09/12/2013 #2</Note>
        <VendorName>E100</VendorName>
        <TotalAmt>-43.8</TotalAmt>
        <APAccountName>Accounts Payable</APAccountName>
    </Header>
    <Line>
        <Id idDomain="NG">50786642</Id>
        <Desc>Advertising:</Desc>
        <Amount>43.8</Amount>
        <ClassId idDomain="QB">1</ClassId>
        <ReimbursableInfo>
        <    CustomerId idDomain="QB">4</CustomerId>
            <JobId idDomain="QB">8</JobId>
        </ReimbursableInfo>
    </Line>
</VendorCredit>
<RequestName>VendorCreditAdd</RequestName><ProcessedTime>2013-09-12T23:41:38Z</ProcessedTime>
</Success>
</RestResponse>

答案 2 :(得分:0)

http://support.quickbooks.intuit.com/support/articles/SLN74445

QuickBooks检测到您没有物品当尝试输入没有物品的发票或销售收据时会收到以下警告: QuickBooks检测到您没有物品,或者您的一个或多个金额与物品无关。请输入一个项目。 为什么会这样 如果在“首选项”中选中“需要帐户”,则会出现此警告。 如何解决它   能够在没有项目的情况下输入发票或销售收据: 1.单击“编辑”菜单。 2.单击首选项... 3.单击会计首选项&gt;公司偏好。 4.取消选中“需要帐户”。 5.单击“确定”。 您现在可以输入没有项目的发票或销售收据。