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

Запись чистая. Синхронизировано. Объект, созданный в Data Services. Sync Manager подтвердил синхронизацию объекта и сопоставил его NG ID с QB ID в QuickBooks. Эквивалентен StateCode 1 (для объекта, созданного в QuickBooks).

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


person abc123    schedule 02.04.2013    source источник
comment
Можете ли вы опубликовать свой запрос и ответ, пожалуйста?   -  person Jarred Keneally    schedule 03.04.2013
comment
Кроме того, если ваш запрос на создание выполнен успешно, но не синхронизируется, вам необходимо проверить активность синхронизации/состояние синхронизации и убедиться, что при синхронизации не произошло ошибки.   -  person Jarred Keneally    schedule 03.04.2013
comment
@JarredKeneally Я добавил детали к вопросу. Что касается активности/состояния синхронизации, вы имеете в виду Intuit Sync Manager? Я разобрался, как посмотреть лог-файлы, а там 15 лог-файлов. Это то, что вы имеете в виду? (Извините, я новичок в этом и в разработке в целом).   -  person abc123    schedule 03.04.2013
comment
Диспетчер синхронизации — это программное обеспечение, которое перемещает данные с рабочего стола в облако и обратно. Затем мы предоставляем API, чтобы вы могли видеть статус или активность, которые были синхронизированы.   -  person Jarred Keneally    schedule 04.04.2013


Ответы (2)


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

person Priyadarshini    schedule 01.05.2013
comment
Я этого даже не заметил. Спасибо! - person abc123; 02.05.2013

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

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

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

person Jarred Keneally    schedule 04.04.2013
comment
Спасибо, Джарред, не могли бы вы подсказать, как это можно сделать с помощью PHP DevKit? Я также разместил правильный запрос/ответ в своем вопросе. - person abc123; 09.04.2013
comment
Я не очень хорошо разбираюсь в PHP, только в .Net и Java. Извиняюсь - person Jarred Keneally; 10.04.2013
comment
Я отредактировал вопрос на основе результатов ваших предложений. - person abc123; 29.04.2013