如何使用QuickBooks QBFC从发票中获取自定义模板字段

时间:2013-04-03 14:45:43

标签: quickbooks qbfc

我想获得定制的S.O.使用QuickBooks QBFC的发票模板字段。

2 个答案:

答案 0 :(得分:4)

以下是如何从销售订单中读取自定义字段:

  1. 将“0”添加到OwnerIDList的{​​{1}}。
  2. 从附加到查询返回的SalesOrderQuery个对象的DataExtRetList中读取自定义标头字段。
  3. 从每个SalesOrderRet中包含的DataExtRetListSalesOrderLineRet对象SalesOrderLineGrouptRet中读取自定义订单项字段(如果您正在阅读订单项)。< / LI>

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

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

答案 1 :(得分:2)

详细说明Paul Keister的答案,你必须添加&#34; 0&#34;查询是因为这是您尝试检索的自定义字段的所有者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());
        }
    }