用QuickBooks和vb.net创建Salesorder的麻烦

发布于 2025-02-05 15:00:54 字数 2316 浏览 1 评论 0原文

我在QuickBooks Enterprise 22中使用QBFC15和VB.NET创建销售订单时遇到困难。我可以连接到QB并为现有客户创建以下代码的作业:

Dim msgSetRs As IMsgSetResponse
Try
    sessManager = New QBSessionManagerClass()
    sessManager.OpenConnection("App", "Admin to Quickbooks Utility")
    sessManager.BeginSession("", ENOpenMode.omDontCare)
    Console.WriteLine("Quickbook COM Session Opened")
Catch
    Console.WriteLine("Quickbook COM Error: " + Err.Description)
    Return
End Try

Dim msgSetRq As IMsgSetRequest = sessManager.CreateMsgSetRequest("US", 15, 0)
msgSetRq.Attributes.OnError = ENRqOnError.roeContinue

Dim custAdd As ICustomerAdd = msgSetRq.AppendCustomerAddRq

custAdd.Name.SetValue(JobName)
custAdd.ParentRef.FullName.SetValue(String.Format("{0}", StoreName))
custAdd.BillAddress.Addr1.SetValue(String.Format("{0}", StoreName))
msgSetRs = sessManager.DoRequests(msgSetRq)

请注意,请注意,请注意,StoreName =“ mystore.com”和jobname =“ job -1001”

当我尝试为该作业创建销售订单时,以下代码不会给出错误,但QB中没有出现销售订单。

如果这很重要,我正在重复使用同样的qbsession。

我子例程添加销售订单的部分

Dim requestMsgSet As IMsgSetRequest = sessManager.CreateMsgSetRequest("US",15,0)
requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue

Dim SalesOrderAddRq As ISalesOrderAdd

SalesOrderAddRq = requestMsgSet.AppendSalesOrderAddRq()
SalesOrderAddRq.CustomerRef.FullName.SetValue(StoreName + ":" + JobName)
SalesOrderAddRq.TxnDate.SetValue(Date.Parse(OrderDate)) 'OrderDate is a DateTime = 3/9/2022 12:31:09 PM
SalesOrderAddRq.RefNumber.SetValue(MainOrderId.ToString) 'OrderID is an integer = 123456 
SalesOrderAddRq.BillAddress.Addr1.SetValue(StoreName)
SalesOrderAddRq.DueDate.SetValue(Date.Parse(OrderDate))

Dim SalesOrderAddLn As ISalesOrderLineAdd

SalesOrderAddLn = SalesOrderAddRq.ORSalesOrderLineAddList.Append.SalesOrderLineAdd

SalesOrderAddLn.ItemRef.FullName.SetValue("Merchandise")' This exists in QB item list
SalesOrderAddLn.Desc.SetValue("A Product")
SalesOrderAddLn.Amount.SetValue(10.00)

SalesOrderAddLn = SalesOrderAddRq.ORSalesOrderLineAddList.Append.SalesOrderLineAdd
SalesOrderAddLn.ItemRef.FullName.SetValue("Shipping")' This also in QB
SalesOrderAddLn.Desc.SetValue("Shipping")
SalesOrderAddLn.Amount.SetValue(12.00)

msgSetRs = sessManager.DoRequests(requestMsgSet)
Console.WriteLine("Quickbooks Sales Order Lines Created")

I'm having trouble creating a sales order using QBFC15 and VB.Net into Quickbooks Enterprise 22. I can connect to QB and create a job for an existing customer with the following code:

Dim msgSetRs As IMsgSetResponse
Try
    sessManager = New QBSessionManagerClass()
    sessManager.OpenConnection("App", "Admin to Quickbooks Utility")
    sessManager.BeginSession("", ENOpenMode.omDontCare)
    Console.WriteLine("Quickbook COM Session Opened")
Catch
    Console.WriteLine("Quickbook COM Error: " + Err.Description)
    Return
End Try

Dim msgSetRq As IMsgSetRequest = sessManager.CreateMsgSetRequest("US", 15, 0)
msgSetRq.Attributes.OnError = ENRqOnError.roeContinue

Dim custAdd As ICustomerAdd = msgSetRq.AppendCustomerAddRq

custAdd.Name.SetValue(JobName)
custAdd.ParentRef.FullName.SetValue(String.Format("{0}", StoreName))
custAdd.BillAddress.Addr1.SetValue(String.Format("{0}", StoreName))
msgSetRs = sessManager.DoRequests(msgSetRq)

Note in the above, Storename = "MyStore.com" and Jobname = "Job - 1001"

When I try to create a sales order for that job, the code below does not give an error, but no sales order appears in QB.

I am reusing the same QBSession if that matters.

My subroutine's part to add a Sales Order

Dim requestMsgSet As IMsgSetRequest = sessManager.CreateMsgSetRequest("US",15,0)
requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue

Dim SalesOrderAddRq As ISalesOrderAdd

SalesOrderAddRq = requestMsgSet.AppendSalesOrderAddRq()
SalesOrderAddRq.CustomerRef.FullName.SetValue(StoreName + ":" + JobName)
SalesOrderAddRq.TxnDate.SetValue(Date.Parse(OrderDate)) 'OrderDate is a DateTime = 3/9/2022 12:31:09 PM
SalesOrderAddRq.RefNumber.SetValue(MainOrderId.ToString) 'OrderID is an integer = 123456 
SalesOrderAddRq.BillAddress.Addr1.SetValue(StoreName)
SalesOrderAddRq.DueDate.SetValue(Date.Parse(OrderDate))

Dim SalesOrderAddLn As ISalesOrderLineAdd

SalesOrderAddLn = SalesOrderAddRq.ORSalesOrderLineAddList.Append.SalesOrderLineAdd

SalesOrderAddLn.ItemRef.FullName.SetValue("Merchandise")' This exists in QB item list
SalesOrderAddLn.Desc.SetValue("A Product")
SalesOrderAddLn.Amount.SetValue(10.00)

SalesOrderAddLn = SalesOrderAddRq.ORSalesOrderLineAddList.Append.SalesOrderLineAdd
SalesOrderAddLn.ItemRef.FullName.SetValue("Shipping")' This also in QB
SalesOrderAddLn.Desc.SetValue("Shipping")
SalesOrderAddLn.Amount.SetValue(12.00)

msgSetRs = sessManager.DoRequests(requestMsgSet)
Console.WriteLine("Quickbooks Sales Order Lines Created")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘿看小鸭子会跑 2025-02-12 15:00:56

QuickBooks返回MessageEtresponse.Responselist的响应对象中的成功或失败。因此,在您的示例中,将销售订单创建方法中的最后一行替换为以下内容,以获取订单未进入QB的原因。

Dim response As IResponse = msgSetRs.ReponseList.GetAt(0)
If response.StatusCode = 0 Then
  Console.WriteLine("Quickbooks Sales Order Lines Created")
Else
  Console.WriteLine("There was an error posting the sales order. " & response.StatusMessage)
End If

有关QB状态代码的完整列表,请参见此页面: https://developer.intuit.com/app/developer/qbdesktop/develop/develop/expleloring-the--quickbooks-the-quickbooks-deskbooks-desktop-sktop-sdk/status-codes-in-in - 响应消息

PS我的VB技能有点质朴;请根据需要修复它:)

Quickbooks returns success or failure in of the Response objects of the MessageSetResponse.ResponseList. So in your example, replace the last line in sales-order-creation method with the following to get the reason of the order not making it into QB.

Dim response As IResponse = msgSetRs.ReponseList.GetAt(0)
If response.StatusCode = 0 Then
  Console.WriteLine("Quickbooks Sales Order Lines Created")
Else
  Console.WriteLine("There was an error posting the sales order. " & response.StatusMessage)
End If

For the full list of QB status codes, see this page: https://developer.intuit.com/app/developer/qbdesktop/docs/develop/exploring-the-quickbooks-desktop-sdk/status-codes-in-response-messages

P.S. my VB skills is a bit rustic; please fix it as needed :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文