Как получить настраиваемые поля шаблона из счета-фактуры с помощью QuickBooks QBFC

Я хочу получить кастомный S.O. Поля шаблона счета-фактуры с использованием QuickBooks QBFC.


person user2240918    schedule 03.04.2013    source источник


Ответы (2)


Вот как читать настраиваемые поля из заказа на продажу:

  1. Добавьте «0» к OwnerIDList из SalesOrderQuery.
  2. Чтение настраиваемых полей заголовков из DataExtRetList, прикрепленных к SalesOrderRet объектам, которые возвращаются из запроса.
  3. Прочитайте поля настраиваемых позиций из DataExtRetList в объектах SalesOrderLineRet и SalesOrderLineGrouptRet, включенных в каждый SalesOrderRet (если вы читаете позиции).

Если вы уже используете IncludeRetElementList, вы должны добавить DataExtRet в список; если нет, то не начинайте использовать IncludeRetElementList, пока у вас не заработают настраиваемые поля. Как и в любом запросе транзакции, вы не увидите никаких данных о позиции, если не установите в запросе флаг IncludeLineItems.

Пользовательские поля подробно описаны в Руководство по QuickBooks SDK. Я рекомендую вам ознакомиться с разделом DataExt: использование настраиваемых полей и частных данных в Руководстве программиста QBSDK.

person Paul Keister    schedule 06.04.2013

Чтобы уточнить ответ Пола Кейстера, причина, по которой вы должны добавить «0» в запрос, заключается в том, что это идентификатор владельца настраиваемого поля, которое вы пытаетесь получить. 0, вероятно, будет значением, но если идентификатор владельца отличается, вам придется использовать здесь другое значение.

Некоторый пример кода С#:

//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());
        }
    }
person Nick Tiberi    schedule 11.11.2015