Отношение поступает из QBSDK в IPP? - PullRequest
3 голосов
/ 24 ноября 2011

В настоящее время мы используем Windows QBSDK для взаимодействия с QuickBooks.Мы оцениваем IPP в будущем.Однако QBSDK использует ListID / TransactionID для идентификации объектов, а IPP использует другую схему.Есть ли способ определить соответствие между ними?

1 Ответ

4 голосов
/ 13 февраля 2012

Задал тот же вопрос в IDN, и ему сказали, что нет никого, кто мог бы выполнить этот перевод. Тем не менее, небольшая помощь со стороны партнера, некоторое тщательное наблюдение за результатами между IPP и QuickBooks и у меня есть довольно приличный ответ.

Типичный идентификатор в QuickBooks выглядит следующим образом:

80000001-1296949588

Первая часть - это идентификатор, а вторая часть - это временная метка.

Рассматривайте первую часть как 32-разрядное шестнадцатеричное число и отключайте старший бит. В этом случае вы получите 1.

Если вы сначала создадите запись в QB, а затем выполните синхронизацию с IPP, вы найдете запись, идентифицированную следующим образом:

<Id idDomain="QB">1</Id>

Если вы сначала создадите запись в IPP, вы найдете запись, идентифицированную следующим образом:

<Id idDomain="NG">1</Id>

После синхронизации вы найдете ссылку на внешнюю запись, например:

<ExternalKey idDomain="QB">3</ExternalKey>

Это будет соответствовать идентификатору транзакции в QuickBooks:

80000003-1299163737

К сожалению, это преобразование не является изоморфным из-за отметки времени, добавляемой в конце идентификатора в QuickBooks. Поэтому преобразование идентификатора QuickBooks в идентификатор на основе IPP является тривиальным. Перевод другого способа потребует перечисления записей в QuickBooks и сопоставления идентификаторов.

...