首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quickbooks QBFC PurchaseOrderAdd

Quickbooks QBFC PurchaseOrderAdd
EN

Stack Overflow用户
提问于 2018-02-12 07:27:24
回答 1查看 182关注 0票数 0

我一直在从事一个quickbooks项目,并且在许多方面都取得了成功,直到我在尝试添加采购订单时遇到了障碍。

正如标题所述,我正在使用QBFC -has,有谁能成功地实现这一点,并能为我指出正确的方向吗?

我目前主要使用quickbooks的OnScreen参考中的示例代码(在定制它之前),这个过程我已经在工作的其他方面使用过……

它运行得很好,但目前并没有向Quickbook供应商添加任何实际内容?

提前感谢

`公有子writePO_ToQB()

代码语言:javascript
复制
    Dim sessManager As QBSessionManager
    Dim msgSetRs As IMsgSetResponse

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

    MessageBox.Show("calling write command")
    writeActualQBMSG(msgSetRq)

    'step3: begin QB session and send the request
    sessManager.OpenConnection("App", "DataBridge JBOOKS")
    sessManager.BeginSession("", ENOpenMode.omDontCare)
    msgSetRs = sessManager.DoRequests(msgSetRq)



End Sub

Public Sub writeActualQBMSG(requestMsgSet As IMsgSetRequest)

    '   Dim requestMsgSet As IMsgSetRequest
    Dim PurchaseOrderAddRq As IPurchaseOrderAdd
    PurchaseOrderAddRq = requestMsgSet.AppendPurchaseOrderAddRq()

    'add all the elements of a PO to the request - need to determine what is required!!

    '  PurchaseOrderAddRq.VendorRef.FullName.SetValue("Test Vendor")
    PurchaseOrderAddRq.VendorRef.ListID.SetValue("80000094-1512152428")






    '------------------- CODE FROM QBS --------
    Dim ORInventorySiteORShipToEntityElementType162 As String
    ORInventorySiteORShipToEntityElementType162 = "InventorySiteRef"
    If (ORInventorySiteORShipToEntityElementType162 = "InventorySiteRef") Then
        'Set field value for ListID
        PurchaseOrderAddRq.ORInventorySiteORShipToEntity.InventorySiteRef.ListID.SetValue("200000-1011023419")
        'Set field value for FullName
        PurchaseOrderAddRq.ORInventorySiteORShipToEntity.InventorySiteRef.FullName.SetValue("ab")
    End If
    If (ORInventorySiteORShipToEntityElementType162 = "ShipToEntityRef") Then
        'Set field value for ListID
        PurchaseOrderAddRq.ORInventorySiteORShipToEntity.ShipToEntityRef.ListID.SetValue("200000-1011023419")
        'Set field value for FullName
        PurchaseOrderAddRq.ORInventorySiteORShipToEntity.ShipToEntityRef.FullName.SetValue("ab")
    End If
    ' ----------------- END OF CODE FROM QBS --------------------------------------------

    '------------ MOR QBS CODE ------------

    Dim ORPurchaseOrderLineAddListElement324 As IORPurchaseOrderLineAdd
    ORPurchaseOrderLineAddListElement324 = PurchaseOrderAddRq.ORPurchaseOrderLineAddList.Append()
    Dim ORPurchaseOrderLineAddListElementType325 As String
    ORPurchaseOrderLineAddListElementType325 = "PurchaseOrderLineAdd"
    If (ORPurchaseOrderLineAddListElementType325 = "PurchaseOrderLineAdd") Then
        'Set field value for ListID
        '  ORPurchaseOrderLineAddListElement324.PurchaseOrderLineAdd.ItemRef.ListID.SetValue("200000-1011023419")
        'Set field value for FullName
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineAdd.ItemRef.FullName.SetValue("granite")
        'Set field value for ManufacturerPartNumber
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineAdd.ManufacturerPartNumber.SetValue("123456789")
        'Set field value for Desc
        '   ORPurchaseOrderLineAddListElement324.PurchaseOrderLineAdd.Desc.SetValue("ab")
        'Set field value for Quantity
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineAdd.Quantity.SetValue(2)

        Dim DataExt326 As IDataExt
        DataExt326 = ORPurchaseOrderLineAddListElement324.PurchaseOrderLineAdd.DataExtList.Append()
        'Set field value for OwnerID
        ' DataExt326.OwnerID.SetValue(System.Guid.NewGuid().ToString())
        DataExt326.OwnerID.SetValue(0)
        'Set field value for DataExtName
        DataExt326.DataExtName.SetValue("ab")
        'Set field value for DataExtValue
        DataExt326.DataExtValue.SetValue("ab")
    End If
    If (ORPurchaseOrderLineAddListElementType325 = "PurchaseOrderLineGroupAdd") Then
        'Set field value for ListID
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineGroupAdd.ItemGroupRef.ListID.SetValue("200000-1011023419")
        'Set field value for FullName
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineGroupAdd.ItemGroupRef.FullName.SetValue("ab")
        'Set field value for Quantity
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineGroupAdd.Quantity.SetValue(2)
        'Set field value for UnitOfMeasure
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineGroupAdd.UnitOfMeasure.SetValue("ab")
        'Set field value for ListID
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineGroupAdd.InventorySiteLocationRef.ListID.SetValue("200000-1011023419")
        'Set field value for FullName
        ORPurchaseOrderLineAddListElement324.PurchaseOrderLineGroupAdd.InventorySiteLocationRef.FullName.SetValue("ab")
        Dim DataExt327 As IDataExt
        DataExt327 = ORPurchaseOrderLineAddListElement324.PurchaseOrderLineGroupAdd.DataExtList.Append()
        'Set field value for OwnerID
        DataExt327.OwnerID.SetValue(System.Guid.NewGuid().ToString())
        'Set field value for DataExtName
        DataExt327.DataExtName.SetValue("ab")
        'Set field value for DataExtValue
        DataExt327.DataExtValue.SetValue("ab")
    End If

    ' ----- END OF MORE QBS CODE ----------

End Sub`
EN

回答 1

Stack Overflow用户

发布于 2018-02-12 08:08:57

这里的问题是您没有包含错误和响应处理代码。您需要具有与WalkPurchaseOrderAddRs(responseMsgSet)等效的内容。特别是在该函数中,这将检查错误条件。我有他们样本的改良版。

代码语言:javascript
复制
For j=0 To responseList.Count - 1
   Dim response As IResponse
   response = responseList.GetAt(i)
   'check the status code of the response
   If response.StatusCode = 0 Then
      '  response is ok, handle results as usual... 

   ElseIf response.StatusCode = 1 Then 
      '  Used when search results return nothing...

   Else '  > 1  Is an error      
      '  Is an error or warning condition...  
      '   Capture code and message from QuickBooks

      Dim code As String = response.StatusCode
      Dim severity As String = response.StatusSeverity '  ERROR or WARNING
      Dim message As String = response.StatusMessage

   End If
Next j

顺便说一句,OSR示例代码实际上只是为了说明目的。这段代码和类似的代码毫无意义。

代码语言:javascript
复制
Dim ORInventorySiteORShipToEntityElementType162 As String
ORInventorySiteORShipToEntityElementType162 = "InventorySiteRef"
If (ORInventorySiteORShipToEntityElementType162 = "InventorySiteRef") Then

再给你一个提示。在设置供应商或ItemRef等列表中的值时,可以选择ListID或FullName。如果如示例所示同时使用两者,则QuickBooks将使用ListID。我建议您使用FullName并丢弃ListID。原因是QuickBooks会模仿你在错误消息中使用的任何东西。因此,如果您的供应商不存在,您将看到类似“缺少元素80000094-1512152428”或“缺少元素TheFullName”之类的内容,这是隐秘的但可读的。

好的,再来一个……用于设置自定义域数据DataExt...的示例代码将不起作用。您需要改用DataExtAdd请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48737574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档