public async Task <IActionResult> GetSource(int id) { var source = await _context.Sources.FirstOrDefaultAsync(s => s.SourceId == id); var targetDocumentSettings = await _context.TargetDocumentsSettings.FirstOrDefaultAsync(t => t.SourceId == source.SourceId); if (targetDocumentSettings == null) { targetDocumentSettings = new TargetDocumentSettings(); } var vatRegisters = await _context.VatRegisters.Where(v => v.TargetDocumentSettingsId == targetDocumentSettings.TargetDocumentSettingsId).ToListAsync(); if (vatRegisters == null) { vatRegisters = new List <VatRegister>(); } var accountingRecords = await _context.AccountingRecords.Where(a => a.SourceId == source.SourceId).ToListAsync(); if (accountingRecords == null) { accountingRecords = new List <AccountingRecord>(); } return(new JsonResult(new { Source = source, TargetDocumentSettings = targetDocumentSettings, })); }
public async Task <WebAppMessage> UpdateSource(SourceAggregate sourceAggregate) { var message = new WebAppMessage { IsError = false, MessageText = "" }; try { using (var dbContextTransaction = await _context.Database.BeginTransactionAsync()) { var source = await _context.Sources.FirstOrDefaultAsync(s => s.SourceId == sourceAggregate.Source.SourceId); if (source == null) { throw new Exception("Nie znaleziono danych do aktualizacji"); } var accountingRecords = await _context.AccountingRecords.Where(a => a.SourceId == sourceAggregate.Source.SourceId).ToListAsync(); if (accountingRecords != null) { accountingRecords.Clear(); await _context.SaveChangesAsync(); } source.TargetId = sourceAggregate.Source.TargetId; source.Description = sourceAggregate.Source.Description; source.Code = sourceAggregate.Source.Code; source.Type = sourceAggregate.Source.Type; source.Address = sourceAggregate.Source.Address; source.DbName = sourceAggregate.Source.DbName; source.Username = sourceAggregate.Source.Username; source.Password = sourceAggregate.Source.Password; source.AccountingRecords = sourceAggregate.Source.AccountingRecords; await _context.SaveChangesAsync(); var targetDocumentSettings = await _context.TargetDocumentsSettings.FirstOrDefaultAsync(t => t.SourceId == source.SourceId); if (targetDocumentSettings == null) { targetDocumentSettings = new TargetDocumentSettings { SourceId = source.SourceId, DocumentShortcut = sourceAggregate.TargetDocumentSettings.DocumentShortcut, VatRegisterId = sourceAggregate.TargetDocumentSettings.VatRegisterId, VatRegisters = (sourceAggregate.TargetDocumentSettings.VatRegisters != null && sourceAggregate.TargetDocumentSettings.VatRegisters.Count > 0) ? sourceAggregate.TargetDocumentSettings.VatRegisters : null }; await _context.AddAsync(targetDocumentSettings); await _context.SaveChangesAsync(); } var vatRegisters = await _context.VatRegisters.Where(v => v.TargetDocumentSettingsId == targetDocumentSettings.TargetDocumentSettingsId).ToListAsync(); if (vatRegisters != null && sourceAggregate.TargetDocumentSettings.VatRegisters != null && sourceAggregate.TargetDocumentSettings.VatRegisters.Count > 0) { vatRegisters.Clear(); await _context.SaveChangesAsync(); } targetDocumentSettings.DocumentShortcut = sourceAggregate.TargetDocumentSettings.DocumentShortcut; targetDocumentSettings.VatRegisterId = sourceAggregate.TargetDocumentSettings.VatRegisterId; if (sourceAggregate.TargetDocumentSettings.VatRegisters != null && sourceAggregate.TargetDocumentSettings.VatRegisters.Count > 0) { targetDocumentSettings.VatRegisters = sourceAggregate.TargetDocumentSettings.VatRegisters; } await _context.SaveChangesAsync(); await dbContextTransaction.CommitAsync(); } } catch (Exception ex) { message.IsError = true; message.MessageText = ex.InnerException != null ? ex.InnerException.Message : ex.Message; } return(message); }
public async Task <C21DocumentAggregate> PrepareDocumentAggregate( List <AccountingRecord> accountingRecords, TargetDocumentSettings targetDocumentSettings, List <Contractor> contractors, List <DocumentVat> allDocumentVats, List <VatRegister> vatRegisters, C21DocumentService c21DocumentService, Document document, Source source) { C21DocumentAggregate c21DocumentAggregate = new C21DocumentAggregate(); var documentVats = allDocumentVats.Where(v => v.DocumentId == document.DocumentId).ToList(); if (accountingRecords == null) { c21DocumentAggregate.IsPrepared = false; c21DocumentAggregate.Messages.Add(new KeyValuePair <string, string>("Zapisy księgowe", "Brak konfiguracji zapisów księgowych")); return(c21DocumentAggregate); } if (targetDocumentSettings == null) { c21DocumentAggregate.IsPrepared = false; c21DocumentAggregate.Messages.Add(new KeyValuePair <string, string>("Konfiguracja dokumentu", $"Nie skonfigurowano typu dokumentu dla tego źródła danych: {source.Description}")); return(c21DocumentAggregate); } var c21documentId = 1000;//await c21DocumentService.GetNextDocumentId(1000); var year = await c21DocumentService.GetYearId(document.SaleDate); if (year == null) { Console.WriteLine($"Brak roku w FK dla dokumentu z tego okresu."); } var docTypDef = await c21DocumentService.GetDocumentDefinition(targetDocumentSettings.DocumentShortcut, year.rokId); if (docTypDef == null) { Console.WriteLine($"Brak definicji dokumentu w FK dla dokumentu z tego okresu. ({document.DocumentNumber})"); } var vatRegisterDef = await c21DocumentService.GetVatRegistersDefs(docTypDef.rejestr); var contractor = contractors.FirstOrDefault(c => c.ContractorId == document.ContractorId); if (year != null && contractor != null && vatRegisterDef != null) { var street = !string.IsNullOrEmpty(contractor.Street) ? contractor.Street.Replace("UL. ", "").Replace("ul. ", "") : ""; c21DocumentAggregate.Document = new C21Document { id = c21documentId, rokId = year.rokId, skrot = targetDocumentSettings.DocumentShortcut, kontrahent = contractor.ContractorErpPosition, nazwa = document.DocumentNumber, tresc = document.DocumentNumber, datawpr = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day), datadok = document.DocumentDate, dataOper = document.SaleDate, kwota = Convert.ToDouble(document.Gross), sygnatura = string.Empty, kontoplatnosci = string.Empty, atrJpkV7 = document.JpkV7, DaneKh = 0, //contractor.ContractorErpPosition == null ? 1 : 0, kh_nazwa = string.IsNullOrEmpty(contractor.Name) ? "" : contractor.Name.Length <= 150 ? contractor.Name : contractor.Name.Substring(0, 150), kh_ulica = string.IsNullOrEmpty(street) ? "" : street.Length <= 50 ? street : street.Substring(0, 50), kh_dom = contractor.EstateNumber, kh_lokal = contractor.QuartersNumber, kh_nip = contractor.VatId, kh_kodPocztowy = FvpWebAppUtils.TruncateToLength(contractor.PostalCode, 10), kh_miejscowosc = string.IsNullOrEmpty(contractor.City) ? "" : contractor.City.Length <= 50 ? contractor.City : contractor.City.Substring(0, 50), kh_kraj = contractor.CountryCode }; var nextAccountingRecordId = 1000; foreach (var accountingRecord in accountingRecords) { if (GetRecordAmmount(document, accountingRecord) != 0) { c21DocumentAggregate.AccountingRecords.Add(new C21AccountingRecord { id = nextAccountingRecordId, dokId = c21documentId, pozycja = 0, rozbicie = (short)(accountingRecord.RecordOrder - 1), strona = !string.IsNullOrEmpty(accountingRecord.Debit) ? (short)0 : (short)1, kwota = GetRecordAmmount(document, accountingRecord), opis = document.DocumentNumber, synt = GetAccountPart(accountingRecord.Account, 0), poz1 = GetAccountPart(accountingRecord.Account, 1), poz2 = GetAccountPart(accountingRecord.Account, 2), poz3 = GetAccountPart(accountingRecord.Account, 3), poz4 = GetAccountPart(accountingRecord.Account, 4), poz5 = GetAccountPart(accountingRecord.Account, 5), }); } nextAccountingRecordId++; } var nextVatRegisterId = 1000; foreach (var documentVat in documentVats) { var vatRegister = GetVatRegisterIdForVat(GetVatValue(documentVat), vatRegisters); c21DocumentAggregate.VatRegisters.Add(new C21VatRegister { id = nextVatRegisterId, dokId = c21documentId, rejId = vatRegister > 0 ? vatRegister : vatRegisterDef.id, okres = document.SaleDate, Oczek = 0, abc = vatRegisterDef.defAbc, nienaliczany = 0, stawka = GetVatValue(documentVat), netto = Convert.ToDouble(documentVat.NetAmount), brutto = Convert.ToDouble(documentVat.GrossAmount), vat = Convert.ToDouble(documentVat.VatAmount), atrJpkV7 = documentVat.VatTags }); nextVatRegisterId++; } } c21DocumentAggregate.IsPrepared = true; return(c21DocumentAggregate); }