1

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

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

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

以下是我对这个目标的一些问题。

  1. Quickbooks SDK 是否提供直接请求和返回文档(例如发票)的可视化表示(例如 PDF)的能力?
  2. Quickbooks SDK 是否提供直接打印文档(例如发票)的功能?

这些问题大部分来自我对 Quickbooks SDK 的普遍缺乏熟悉。

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

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

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

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

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

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

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

先感谢您!

4

2 回答 2

3

您的问题的答案是……:

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

不,它没有。

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

不,它没有。

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

于 2011-09-15T18:34:27.953 回答
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

于 2011-09-08T08:06:12.047 回答