Задал тот же вопрос в 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 и сопоставления идентификаторов.