用QuickBooks和vb.net创建Salesorder的麻烦
我在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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
QuickBooks返回MessageEtresponse.Responselist的响应对象中的成功或失败。因此,在您的示例中,将销售订单创建方法中的最后一行替换为以下内容,以获取订单未进入QB的原因。
有关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.
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 :)