通过C#

时间:2018-08-28 15:48:23

标签: c# quickbooks qbfc

我有一个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:必填字段缺失

我对这意味着什么一无所知,在我的生命中,我找不到关于互联网上其他任何地方的ORSalesPurchaseIItemServiceAdd的任何信息,包括他们的文档。

我可以通过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(对象源,   C:\ Users \ brian \ Documents \ Visual Studio中的ElapsedEventArgs e)   2015 \ Projects \ SterlingQBExport \ SterlingQBExport \ Form1.cs:第537行

1 个答案:

答案 0 :(得分:3)

基于我在搜索ORSalesPurchase ...

时发现的一篇文章

C# .NET Application with QuickBooks Desktop Edition

  

本文是有关如何使用QuickBooks基础类(QBFC)库和C#将.NET应用程序与QuickBooks Desktop Edition集成的介绍。

...和错误消息,似乎您缺少某些字段,这些字段应该属于请求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 id设置的项

itemServiceModRq.ListID.SetValue(Item.QuickBooksID);

现在,我现在还不确定要填写的字段是什么,但这应该是检查以上提供的字段是否有帮助的良好起点。