Отправка заказа в Quickbooks через IPP не работает, когда дата транзакции в прошлом

Я отредактировал вопрос, чтобы сделать его более четким и целенаправленным, теперь, когда я исследовал больше.

Синхронизация заказов работает для текущей даты и будущих дат, но не для дат в прошлом. Я сейчас тестирую прямо в проводнике API.

Вот запрос на добавление заказа и ответ:

<!--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 Explorer. Кроме того, порядок, который я добавил, также не появился в 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 с идентификатором QB в QuickBooks. Эквивалент StateCode 1 (для объекта, созданного в QuickBooks).

Код сообщения 70, кажется, в порядке на основе его описания, но он не был указан в документации.

2 ответа

Решение

В Quickbooks Destop по умолчанию отображаются только транзакции текущего финансового года. Не могли бы вы попробовать изменить фильтр даты на "Все", чтобы увидеть, был ли выполнен заказ клиента?

Таким образом, ваш запрос выполняется, но вы не видите его в QuicKBooks после запуска синхронизации. Проверьте состояние синхронизации объекта, или вы можете увидеть все действия синхронизации, вызвав эти APIS

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, он должен пройти бизнес-правила, которые будут созданы / обновлены на рабочем столе.

Если ваш объект обнаружил ошибку (допустим, она была дубликатом), вы можете добавить фильтр запроса с ошибками в свой запрос, чтобы запросить его.

С уважением
Джарред

Другие вопросы по тегам