Не удается обновить SalesReceipt на рабочем столе Quickbooks
Я использую QuickBooks Integrator из /nSoftware для интеграции с QuickBooks Desktop
Я пытаюсь обновить счет-фактуру и не получаю никаких ошибок, но когда я проверяю QuickBooks, я вижу, что ничего не изменилось и фактически не обновлялось.
Сначала я пытаюсь найти счет-фактуру на основе RefNumber, и если он нашел счет-фактуру, я пытаюсь заменить статьи затрат, а затем вызываю метод обновления, подобный этому existingInvoice.Update();
Вот мой пример кода:
public static List<Invoice> FindInvoice(string refNumber)
{
var invoicesSearch = new Objsearch
{
QueryType = ObjsearchQueryTypes.qtInvoiceSearch,
RuntimeLicense = "MYLICENSEKEY",
QBConnectionString = "MYCONNECTIONSTRINGTOREMOTECONNECTOR",
SearchCriteria = new SearchCriteria
{
RefNumberContains = refNumber
},
};
invoicesSearch.Search();
var qbInvoiceList = invoicesSearch.Results.ToList();
var invoiceObjList = new List<Invoice>();
foreach (var inv in qbInvoiceList)
{
var newInv = new Invoice();
newInv.QBResponseAggregate = inv.Aggregate;
invoiceObjList.Add(newInv);
}
return invoiceObjList.FirstOrDefault();
}
public static void PutInvoice(Invoice invoice)
{
var existingInvoice = FindInvoice(invoice.RefNumber);
if (existingInvoice != null)
{
existingInvoice.LineItems.Clear();
existingInvoice.LineItems.AddRange(invoice.LineItems);
existingInvoice.QBConnectionString = "MYCONNECTIONSTRINGTOREMOTECONNECTOR";
existingInvoice.RuntimeLicense = RuntimeLicense;
existingInvoice.QBXMLVersion = "12.0";
existingInvoice.Update(); //this line
}
}
1 ответ
Решение
Хорошо, проблема заключалась в том, что я устанавливал QBXMLVersion
последнее дело перед обновлением.
Для того, чтобы Update()
для успешной обработки QBXMLVersion
нужно установить первым делом.
Вот обновленный рабочий пример:
public static void PutInvoice(Invoice invoice)
{
var existingInvoice = FindInvoice(invoice.RefNumber);
if (existingInvoice != null)
{
existingInvoice.QBXMLVersion = "12.0";
existingInvoice.RuntimeLicense = "MyRuntimeLicenseKey";
existingInvoice.QBConnectionString = "MYCONNECTIONSTRINGTOREMOTECONNECTOR";
existingInvoice.LineItems.Clear();
existingInvoice.LineItems.AddRange(invoice.LineItems);
existingInvoice.Update();
}
}