public async Task AddGoodsReceivedNote(AddGoodsReceivedNote model) { await RunTaskInTransaction(async() => { var note = new Data_Access_Layer.GoodsReceivedNote { DocumentId = model.DocumentId, IssueDate = model.IssueDate, ReceiveDate = model.ReceiveDate, InvoiceId = model.InvoiceId }; await GoodsReceivedNoteRepository.Add(note); var invoiceEntries = EntryRepository.GetForInvoice(model.InvoiceId); foreach (var noteEntry in model.NoteEntry) { var productEntity = await ProductRepository.Find(noteEntry.Name); Data_Access_Layer.ProductDetail productDetail = null; var entry = invoiceEntries .FirstOrDefault(ie => ie.Name == noteEntry.Name); if (productEntity == null) { var product = new Data_Access_Layer.Product { Name = entry.Name, Price = entry.Price, VAT = entry.VAT }; await ProductRepository.Add(product); productDetail = new Data_Access_Layer.ProductDetail { LocationId = noteEntry.Location.Id, ProductId = product.Id, Count = entry.Count, }; await ProductDetailsRepository.Add(productDetail); continue; } var productDetails = ProductDetailsRepository .GetForProduct(productEntity.Id) .FirstOrDefault(pd => pd.LocationId == noteEntry.Location.Id); productDetails.Count += entry.Count; ProductDetailsRepository.Update(productDetails); } return(string.Empty); }); }
public async Task <IActionResult> AddGoodsReceivedNote([FromBody] AddGoodsReceivedNote model) { await _unitOfWork.AddGoodsReceivedNote(model); return(Ok()); }