Я хочу получить кастомный S.O. Поля шаблона счета-фактуры с использованием QuickBooks QBFC.
Как получить настраиваемые поля шаблона из счета-фактуры с помощью QuickBooks QBFC
Ответы (2)
Вот как читать настраиваемые поля из заказа на продажу:
- Добавьте «0» к
OwnerIDList
изSalesOrderQuery
. - Чтение настраиваемых полей заголовков из
DataExtRetList
, прикрепленных кSalesOrderRet
объектам, которые возвращаются из запроса. - Прочитайте поля настраиваемых позиций из
DataExtRetList
в объектахSalesOrderLineRet
иSalesOrderLineGrouptRet
, включенных в каждыйSalesOrderRet
(если вы читаете позиции).
Если вы уже используете IncludeRetElementList
, вы должны добавить DataExtRet
в список; если нет, то не начинайте использовать IncludeRetElementList
, пока у вас не заработают настраиваемые поля. Как и в любом запросе транзакции, вы не увидите никаких данных о позиции, если не установите в запросе флаг IncludeLineItems
.
Пользовательские поля подробно описаны в Руководство по QuickBooks SDK. Я рекомендую вам ознакомиться с разделом DataExt: использование настраиваемых полей и частных данных в Руководстве программиста QBSDK.
Чтобы уточнить ответ Пола Кейстера, причина, по которой вы должны добавить «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());
}
}