public IActionResult AddPurchaseItem(int purchaseOrderId, int vendorId) { var model = new AddPurchaseItemsInputModel { PurchaseOrderId = purchaseOrderId, VendorId = vendorId, }; return(this.View(model)); }
public async Task <IActionResult> AddPurchaseItem(AddPurchaseItemsInputModel input) { if (!this.ModelState.IsValid) { return(this.View(input)); } await this.purchaseOrdersService.AddPurchaseItemAsync(input); return(this.RedirectToAction(nameof(this.PurchaseOrderDetails), new { id = input.PurchaseOrderId })); }
public async Task AddPurchaseItemAsync(AddPurchaseItemsInputModel input) { var po = this.context.PurchaseOrders.Include(x => x.PurchaseItems).FirstOrDefault(x => x.Id == input.PurchaseOrderId && x.PurchaseOrderStatus == PurchaseOrderStatus.Created); foreach (var item in input.PurchaseItems) { var purchaseItem = po.PurchaseItems.FirstOrDefault(x => x.ProductId == item.ProductId); if (purchaseItem == null) { purchaseItem = new PurchaseItem { ProductId = item.ProductId, Cost = item.Cost, PurchaseOrderId = input.PurchaseOrderId, }; this.context.Add(purchaseItem); } purchaseItem.Qty += item.Qty; var vendorProduct = this.context.VendorProducts.FirstOrDefault(x => x.ProductId == item.ProductId && x.VendorId == input.VendorId); if (vendorProduct == null) { vendorProduct = new VendorProduct { ProductId = item.ProductId, VendorId = po.VendorId, }; this.context.Add(vendorProduct); } vendorProduct.VendorCost = item.Cost; await this.context.SaveChangesAsync(); await this.RecalculatePurchaseOrderTotal(po.Id); } }