Не удается обновить 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(); 
    }
}
Другие вопросы по тегам