Похоже, вы на правильном пути. Давайте поговорим о конкретных c сообщениях об ошибках, которые вы получаете:
3040: Произошла ошибка при преобразовании суммы «1,5» в поле «Сумма»
суммы в долларах в QuickBooks имеют 2 знака после запятой. например, вам необходимо отправить:
<Rate>1.50</Rate>
<Amount>1.50</Amount>
3140: в счете-фактуре имеется недопустимая ссылка на метод доставки QuickBooks "Fedex". Сообщение об ошибке QuickBooks: неверный аргумент. Указанная запись не существует в списке.
QuickBooks по своей сути является реляционной базой данных. Думайте о ShipMethodRef/FullName
(и / или ShipMethodRef/ListID
) как об ограничении внешнего ключа.
Если вы попытаетесь вставить что-то и сослаться на внешний ключ, который не существует, вы получите ошибку. Таким образом, вам либо необходимо:
- Go в пользовательский интерфейс QuickBooks и создать метод доставки с именем
Fedex
(Это, вероятно, ваш лучший выбор, так как Ship Method
s имеют тенденцию меняться не часто, и их обычно не так много. В QuickBooks выберите Lists > Customer & Vendor Profile Lists > Item List
)
или
Выполните
ShipMethodAdd
вызов для создания метода корабля (документы:
https://developer.intuit.com/app/developer/qbdesktop/docs/api-reference/shipmethodadd)
или
Вы можете полностью опустить
<ShipMethodRef>
, если вы вообще не хотите его устанавливать
Вы также должны решить, собираетесь ли вы отправлять ListID
или FullName
. Не отправляйте оба, это только делает ошибки более запутанными. Я бы порекомендовал вам отправить только FullName
. Если вы хотите отправить ListID
, вам нужно будет запросить QuickBooks, чтобы получить значения ListID
(они не отображаются в интерфейсе QuickBooks).
3140: недопустимая ссылка на элемент «QuickBooks» в строке «Счет-фактура». Сообщение об ошибке QuickBooks: неверный аргумент. Указанная запись не существует в списке.
Эта ошибка очень похожа на ошибку ShipMethod
, описанную выше. Вы ссылаетесь на элемент:
<ItemRef>
<FullName >item</FullName>
</ItemRef>
И QuickBooks сообщает вам, что этот элемент не существует . Подобно Ship Method
, вам необходимо:
- Создать его (или использовать существующий элемент) через интерфейс QuickBooks (в QuickBooks выберите
Lists > Item List
)
или
Создайте его через API (документы:
https://developer.intuit.com/app/developer/qbdesktop/docs/api-reference/itemnoninventoryadd)
У вас нет опции 3.
здесь, потому что это обязательное поле для счетов.
Поскольку вы только начинаете разработку QuickBooks, Я НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ вам go с опцией 1.
выше .
Работайте с 2.
только в случае необходимости и после того, как у вас начнутся основы интеграции (например, после того, как вы увидели, что некоторые счета-фактуры действительно были успешно созданы).
Еще одна вещь, за которой нужно следить - в QuickBooks есть понятие «подпункт». Думайте об этом так:
Shirts
> T-Shirts
> Red T-Shirts
> Blue T-Shirts
> Green T-Shirts
Каждый из них является Item
, , но , потому что они находятся во вложенной иерархии (например, T-Shirts
является дочерним элементом / подпункт из Shirts
) FullName
значения отражают эту иерархию :
Shirts (name=Shirts, FullName=Shirts)
> T-Shirts (name=T-Shirts, FullName=Shirts:T-Shirts)
> Red T-Shirts (name=Red T-Shirts, FullName=Shirts:T-Shirts:Red T-Shirts)
> Blue T-Shirts (name=Red T-Shirts, FullName=Shirts:T-Shirts:Blue T-Shirts)
> Green T-Shirts (name=Red T-Shirts, FullName=Shirts:T-Shirts:Green T-Shirts)
Так что если вы видите элемент в QuickBooks ... но вы ' Вы все еще получаете ошибки о FullName
, убедитесь, что вы действительно используете все FullName
вместо Name
.