Example #1
0
        public IActionResult AddPurchaseItem(int purchaseOrderId, int vendorId)
        {
            var model = new AddPurchaseItemsInputModel
            {
                PurchaseOrderId = purchaseOrderId,
                VendorId        = vendorId,
            };

            return(this.View(model));
        }
Example #2
0
        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);
            }
        }