Попытка создать запись в онлайн-журнале Quickbooks с помощью Devart dotConnect для Quickbooks

#json #entity-framework #quickbooks #devart

#json #entity-framework #quickbooks #devart

Вопрос:

Я использую утилиту dotConnect для Quickbooks от Devart для создания некоторых общих записей журнала в Quickbooks Online с использованием C # и Entity Framework. (dotConnect для Quickbooks — версия 1.10, а Entity Framework — версия 6)

Я нашел статью на форуме Devart: ссылка на форум, в которой говорилось, что это не обычная прогулка Entity Framework в парке.

Служба поддержки предложила OP собрать запись в формате Json и назначить ее JournalEntry.Свойство строки.

Когда я делаю это, выдается ошибка: «Не удается преобразовать объект типа ‘Newtonsoft.Json.Linq.g’ в тип ‘Newtonsoft.Json.Linq.o'»

при нажатии на …Метод SaveChanegs(). Запрос Google на эту ошибку ничего не дал. Кто-нибудь сталкивался с этим раньше?

До сих пор я пытался:

  • использование массива объектов, а не списка объектов
  • использование сериализатора Json от Microsoft

Спасибо!

Вот код: «‘

             QuickbooksEntities contextQuickbooks = new QuickbooksEntities();
            JournalEntry je = new JournalEntry();

            //Query to the the QBO Account objects for our known AcctNum values
            Account creditAccount = contextQuickbooks.Accounts.Where(x => x.AcctNum == "4060-1").FirstOrDefault();
            Account debitAccount = contextQuickbooks.Accounts.Where(x => x.AcctNum == "1111").FirstOrDefault();

            // Build the credit and debit objects
            JournalEntryLineItem creditLine = new JournalEntryLineItem();
            creditLine.LineId = "0";
            creditLine.JournalEntryLineDetail_AccountRefId = creditAccount.Id;
            creditLine.JournalEntryLineDetail_AccountRefName = creditAccount.Name;
            creditLine.JournalEntryLineDetail_PostingType = "Credit";
            creditLine.DetailType = "JournalEntryLineDetail";
            creditLine.Amount = (decimal)3;
            
            JournalEntryLineItem debitLine = new JournalEntryLineItem();
            debitLine.LineId = "1";
            debitLine.JournalEntryLineDetail_AccountRefId = debitAccount.Id;
            debitLine.JournalEntryLineDetail_AccountRefName = debitAccount.Name;
            debitLine.JournalEntryLineDetail_PostingType = "Debit";
            debitLine.DetailType = "JournalEntryLineDetail";
            debitLine.Amount = (decimal)3;


            // Add the line items to a list
            List<JournalEntryLineItem> lines = new List<JournalEntryLineItem>();
            lines.Add(creditLine);
            lines.Add(debitLine);
            // Convert the list of line item objects to json
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(lines);

            //JournalEntry journalEntry = new JournalEntry();
            je.TxnDate = DateTime.Now.Date;
            je.CurrencyRefId = "USD";

            // Pass the json string to the JournalEntry.Line property
            je.Line = json;
            
            // The Entity Framework magic
            contextQuickbooks.JournalEntries.Add(je);
            contextQuickbooks.SaveChanges();
  

»’

Ответ №1:

Ошибка с сериализацией пустых значений поля LinkedTxn в объекте JournalEntryLineItem исправлена в dotConnect для QuickBooks версии v1.10.1351.

JSON (Newtonsoft.Сериализации Json, Microsoft.Text.Json) и YAML (YamlDotNet) поддерживаются в EF Core (через шаблон EF Core) и EF6 (через шаблон DbContext) в версии v1.10.1375.

Обратитесь к https://www.devart.com/dotconnect/quickbooks/revision_history.html.