如何将通过Quickbooks SDK生成的发票导出为PDF

时间:2011-09-02 09:50:38

标签: c# asp.net pdf quickbooks qbfc

我们需要使用Quickbooks SDK从外部应用程序创建发票,然后将该发票的PDF副本返回给调用应用程序。

使用Quickbooks SDK很容易创建发票,因此第一步没有问题。

但是,我不确定如何通过外部呼叫应用程序实际打印或退回发票(作为PDF)。

以下是我与此目标有关的几个问题。

  1. Quickbooks SDK是否提供直接请求和返回文档的可视化表示(例如PDF)的功能(例如发票)?
  2. Quickbooks SDK是否提供直接打印文档的功能(例如发票)?
  3. 这些问题大多来自我对Quickbooks SDK的熟悉程度。

    假设上述数字1不可能,实现我们目标的一些可能的替代策略如下:

    策略A - 使用预定文件名打印并导出为PDF

    如果支持,我们会要求Quickbooks将发票打印到具有我们选择名称的PDF。使用Filewatcher,我们将监视目录并以编程方式检索打印的发票。

    策略B - 在Quickbooks之外创建自己的发票报告

    我们知道我们可以通过Quickbooks SDK接收发票的所有数据。我们可以生成自己的发票报告,并在Quickbooks之外完全打印。这是很多工作,如果可能的话我们宁愿避免这种情况。

    我非常欢迎对这些策略的任何评论。更好的是,一个可行的解决方案会很棒。

    仅供参考,我们的技术Stack使用C#/ ASP.NET,QBFC,Web连接器和Quickbooks 2010。

    提前谢谢!

2 个答案:

答案 0 :(得分:2)

您的问题的答案是......:

  

Quickbooks SDK是否提供直接请求和的功能   返回文档的可视表示(例如PDF)(例如,   发票)?

不,它没有。

  

Quickbooks SDK是否提供直接打印文档的功能(例如发票)?

不,它没有。

您的策略B是正确的策略。通过SDK获取发票数据,并使用它创建自己的发票。

答案 1 :(得分:0)

每当您使用SDK在quickbook中创建任何发票时,作为响应,您将获得发票数据

找到以下代码以保存数据表中的发票金额

你可以将该数据表转换为pdf或任何格式

Dim response As IResponse
                    response = responseList.GetAt(i)
                    If (response.StatusCode >= 0) Then
                        'the request-specific response is in the details, make sure we have some
                        If (Not response.Detail Is Nothing) Then
                            'make sure the response is the type we're expecting
                            Dim responseType As ENResponseType
                            responseType = CType(response.Type.GetValue(), ENResponseType)
                            If (responseType = ENResponseType.rtInvoiceQueryRs) Then
                                '//upcast to more specific type here, this is safe because we checked with response.Type check above
                                Dim InvoiceRet As IInvoiceRetList
                                InvoiceRet = CType(response.Detail, IInvoiceRetList)
                                Dim row As DataRow
                                row = Dt.NewRow
                                row.Item("InvoiceNo") = InvoiceRet.GetAt(i).RefNumber.GetValue.ToString()
                                row.Item("ListID") = InvoiceRet.GetAt(i).TxnID.GetValue.ToString()
                                row.Item("EditSequence") = InvoiceRet.GetAt(i).EditSequence.GetValue.ToString()
                                Dt.Rows.Add(row)
                            End If
                        End If
  

在我的情况下,我是0