3

I want to get custom S.O. Invoice Template fields using QuickBooks QBFC.

4

2 回答 2

4

以下是从销售订单中读取自定义字段的方法:

  1. 将“0”添加OwnerIDListSalesOrderQuery.
  2. DataExtRetList从附加到SalesOrderRet从查询返回的对象中读取自定义标头字段。
  3. DataExtRetList从每个中包含的对象SalesOrderLineRetSalesOrderLineGrouptRet对象中读取自定义订单项字段SalesOrderRet(如果您正在读取订单项)。

如果您已经在使用IncludeRetElementList,则必须添加DataExtRet到列表中;如果你不是,那么在IncludeRetElementList你有自定义字段工作之前不要开始使用。就像任何交易查询一样,除非您IncludeLineItems在请求中设置标志,否则您不会看到任何订单项数据。

自定义字段在QuickBooks SDK 手册中有详细记录。我建议您查看QBSDK 程序员指南中的DataExt:使用自定义字段和私有数据部分。

于 2013-04-06T17:19:11.137 回答
2

为了详细说明 Paul Keister 的答案,您必须在查询中添加“0”的原因是因为这是您尝试检索的自定义字段的所有者 ID。0 可能是值,但如果所有者 ID 不同,您将不得不在此处使用不同的值。

一些示例 C# 代码:

//set the owner id of the custom field you are trying to get back
IInvoiceQuery invoiceQuery = requestMsgSet.AppendInvoiceQueryRq();
invoiceQuery.OwnerIDList.Add("0");

//set up query parameters and actually call your query...

//call this method for each invoice to get its custom fields (if they exist)
static void GetInvoiceCustomFields(IInvoiceRet invoice)
    {
        if (invoice.DataExtRetList == null)
        {
            return;
        }

        for (int i = 0; i < invoice.DataExtRetList.Count; i++)
        {
            IDataExtRet extData = invoice.DataExtRetList.GetAt(i);
            Console.WriteLine("external data name: " + extData.DataExtName.GetValue());
            Console.WriteLine("external data value: " + extData.DataExtValue.GetValue());
        }
    }
于 2015-11-11T19:04:32.100 回答