【问题标题】:Sending an order into Quickbooks via IPP doesn't work when transaction date is in the past当交易日期已过时,无法通过 IPP 向 Quickbooks 发送订单
【发布时间】:2013-04-02 19:07:48
【问题描述】:

在我进行了更多调查后,我已经编辑了问题,使其更加简洁和集中。

同步订单适用于今天和未来的日期,但不适用于过去的日期。我现在直接在 API Explorer 中进行测试。

这是添加订单请求和响应:

<!--Add order request-->
<Add xmlns="http://www.intuit.com/sb/cdm/v2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    RequestId="ecc53f53d70f0a52de4c88021721ba32" 
    xsi:schemaLocation="http://www.intuit.com/sb/cdm/v2 ./RestDataFilter.xsd ">
    <OfferingId>ipp</OfferingId>
    <ExternalRealmId>688875295</ExternalRealmId>
    <Object xsi:type="SalesOrder">
        <Header>
            <DocNumber>6</DocNumber>
            <TxnDate>2010-12-25</TxnDate>
            <CustomerId idDomain="QB">4</CustomerId>
            <SalesRepId idDomain="QB">1</SalesRepId>
        </Header>
        <Line>
            <ItemId idDomain="QB">1</ItemId>
            <Qty>6</Qty>
        </Line>
    </Object>
</Add>

<!--Add order response-->
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2">
    <Success RequestId="ecc53f53d70f0a52de4c88021721ba32">
        <ObjectRef>
            <Id idDomain="NG">802721</Id>
            <SyncToken>1</SyncToken>
            <LastUpdatedTime>2013-04-29T15:26:53Z</LastUpdatedTime>
        </ObjectRef>
        <RequestName>SalesOrderAdd</RequestName>
        <ProcessedTime>2013-04-29T15:26:53Z</ProcessedTime>
    </Success>
</RestResponse>

这是同步状态和同步活动。 SalesOrder 只有一个实体,但时间不匹配,所以我不相信它引用了我通过 API 资源管理器添加的相同订单。另外,我添加的订单也没有出现在 Quickbooks 中。

<SyncStatusResponse>
<NgIdSet>
<NgId>802721</NgId>
<NgObjectType>SalesOrder</NgObjectType>
</NgIdSet>
<RequestId>DB7F4BF877006079E040900A0F1B14C1</RequestId>
<StateCode>8</StateCode>
<StateDesc>Record netted with QB</StateDesc>
<MessageCode>70</MessageCode>
<MessageDesc>MBL Netter success using QB SDK ext_ack_id</MessageDesc>
<ResponseLogTMS>2013-04-29T15:38:02.0Z</ResponseLogTMS>
</SyncStatusResponse>


<SyncActivityResponse>
<SyncType>Writeback</SyncType>
<StartSyncTMS>2013-04-10T12:42:21.0</StartSyncTMS>
<EndSyncTMS>2013-04-29T08:38:02.0</EndSyncTMS>
<EntityName>SalesOrder</EntityName>
<EntityRowCount>20</EntityRowCount>
</SyncActivityResponse>

从同步状态响应来看,状态码8表示

记录净额。同步。在数据服务中创建的对象。同步管理器已确认同步对象并将其 NG ID 映射到 QuickBooks 中的 QB ID。等效于 StateCode 1(用于在 QuickBooks 中创建的对象)。

根据描述,消息代码 70 似乎没问题,但它没有在 documentation 中列出。

【问题讨论】:

  • 您能发布您的请求和回复吗?
  • 另外,如果您的创建请求成功但没有同步,您需要检查同步活动/同步状态,并确保同步时没有出错。
  • @JarredKeneally 我在问题中添加了细节。对于同步活动/同步状态,您是指 Intuit Sync Manager 吗?我想出了如何查看日志文件,并且有 15 个日志文件。你指的是这个吗? (对不起,我对这个和一般的开发是全新的)。
  • 同步管理器是将数据从桌面移动到云端并返回的软件。然后,我们会公开 API,以便您查看已同步的状态或活动。

标签: quickbooks intuit-partner-platform


【解决方案1】:

在 Quickbooks Destop 中,默认情况下仅显示当前会计年度交易。您可以尝试将日期过滤器更改为“全部”,以查看销售订单是否成功?

【讨论】:

  • 我什至没有注意到这一点。谢谢!
【解决方案2】:

因此,您的请求成功,但同步运行后您在 QuickKBooks 中看不到它。 查看对象的同步状态,也可以调用这些API查看所有的同步活动

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

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

即使您的请求成功,在同步到 QuickBooks 之前,它也必须通过要在桌面上创建/更新的业务规则。

如果您的对象遇到错误(假设它是重复的),那么您也可以在查询中添加错误对象过滤器来查询它。

问候
震动

【讨论】:

  • 谢谢 Jarred,你能告诉我如何通过 PHP DevKit 完成这项工作吗?我还在我的问题中发布了正确的请求/响应。
  • 我不太精通 PHP,只精通 .Net 和 Java。对不起
  • 我根据您的建议结果编辑了问题。
猜你喜欢
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 2015-12-30
  • 2020-08-18
  • 1970-01-01
  • 2021-07-06
  • 2022-08-12
相关资源
最近更新 更多