Создавайте новые предметы в QuickBooks через C # - PullRequest
0 голосов
/ 28 августа 2018

У меня есть инструмент C #, который я написал для синхронизации заказов из БД в QB, и каждый шаг был огромной болью.

Я пытаюсь создать позиции, которые есть в нашей БД в QB, чтобы я мог правильно прикрепить позиции счета, но наша система позволяет торговому персоналу вводить пользовательские слова, поэтому я не могу просто добавить все возможные позиции в QB через интерфейс QB.

У меня есть этот кусок кода здесь

IMsgSetRequest AddItemRequestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);
AddItemRequestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

IItemServiceAdd itemAddRq = AddItemRequestMsgSet.AppendItemServiceAddRq();
itemAddRq.Name.SetValue(Item);
// itemAddRq.ORSalesPurchase.

IMsgSetResponse ItemAddResponseMsgSet = sessionManager.DoRequests(AddItemRequestMsgSet);
IResponse ItemAddResponse = ItemAddResponseMsgSet.ResponseList.GetAt(0);

Но это выдает ошибку, которая:

ORSalesPurchase: обязательное поле отсутствует

Я не имею ни малейшего представления о том, что это значит, и за свою жизнь я не могу найти ничего о ORSalesPurchase или IItemServiceAdd где-либо еще в Интернете, включая их документы.

Я могу сказать с помощью автозаполнения Visual Studio, что itemAddRq.ORSalesPurchase имеет кучу вариантов, но я не смог понять из этого, о чем просит QB.

QB is the worst

Какие поля обязательны для добавления элемента обслуживания в QB?

И если кто-то может указать мне, где это находится в их документах, это было бы замечательно :)


Трассировка стека:

System.Runtime.InteropServices.COMException (0x80040307): ItemServiceAdd ORSalesPurchase: обязательное поле отсутствует Конец ItemServiceAdd

в QBFC12Lib.IQBSessionManager.DoRequests (запрос IMsgSetRequest)
в SterlingQBExport.Form1.CheckNewInvoices (Источник объекта, ElapsedEventArgs e) в C: \ Users \ brian \ Documents \ Visual Studio 2015 \ Проекты \ SterlingQBExport \ SterlingQBExport \ Form1.cs: строка 537

1 Ответ

0 голосов
/ 30 августа 2018

Основано на статье, которую я нашел при поиске ORSalesPurchase ...

Приложение C # .NET с QuickBooks Desktop Edition

Эта статья представляет собой введение в процесс интеграции приложения .NET с QuickBooks Desktop Edition с использованием библиотеки QuickBooks Foundation Classes (QBFC) и C #.

... и сообщение об ошибке, может показаться, что вы пропускаете определенные поля, которые, как ожидается, будут частью запросов ORSalesPurchase

Используя образец из статьи, я подозреваю, что это выглядит примерно так:

//Create the message set request object to hold our request
IMsgSetRequest addItemRequestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);
addItemRequestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

IItemServiceAdd itemServiceAddRq = addItemRequestMsgSet.AppendItemServiceAddRq();
itemServiceAddRq.Name.SetValue(Item.Name);
itemServiceAddRq.ORSalesPurchase.SalesOrPurchase.Desc.SetValue(Item.Description);
itemServiceAddRq.ORSalesPurchase.SalesOrPurchase.ORPrice.Price.SetValue(Item.Price);
itemServiceAddRq.ORSalesPurchase.SalesOrPurchase.AccountRef.FullName.SetValue("Some custom service description here");

//...

Теперь появилось еще кое-что, что, по-видимому, указывает на то, что установленные поля различаются в зависимости от элементов, уже имеющих идентификатор quickbooks, где он был установлен с помощью

itemServiceModRq.ListID.SetValue(Item.QuickBooksID);

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

...