protected void PlaceOrder_Click(object sender, EventArgs e) { PurchasingController sysmgr = new PurchasingController(); List <PurchaseOrder> savelist = new List <PurchaseOrder>(); loadPOGridView(savelist); calculatePOValue(); InfoToSave infoToSave = new InfoToSave { EmployeeID = int.Parse(UsersList.SelectedValue), VendorID = int.Parse(VendorList.SelectedValue), Comments = Comments.Text, Subtotal = decimal.Parse(Subtotal.Text), Tax = decimal.Parse(Tax.Text) }; MessageUserControl.TryRun(() => { sysmgr.PlacePO(savelist, infoToSave); }, "Placing Order", "The purchase order has been placed."); if (UsersList.SelectedValue != "0") { Cancel_Click(sender, e); } }
public void PlacePO(List <PurchaseOrder> po, InfoToSave infolist) { using (var context = new RaceContext()) { var results = po.Select(x => x); if (results.Count() == 0) { errors.Add("The purchase order is empty. There is no purchase order to place."); } if (infolist.EmployeeID == 0) { errors.Add("Select an employee."); } if (infolist.VendorID == 0) { errors.Add("Select a vendor."); } if (errors.Count > 0) { throw new BusinessRuleException("Placing Purchase Order", errors); } Order oldorder = null; oldorder = context.Orders.Where(x => x.VendorID == infolist.VendorID && x.OrderNumber == null && x.OrderDate == null) .Select(x => x).FirstOrDefault(); if (oldorder != null) { foreach (var row in context.OrderDetails) { if (row.OrderID == oldorder.OrderID) { context.OrderDetails.Remove(row); } } context.Orders.Remove(oldorder); } int?neworderno = context.Orders.Where(x => x.OrderNumber != null).Select(x => x.OrderNumber).Max(); neworderno++; Order neworder = new Order { OrderNumber = neworderno, OrderDate = DateTime.Now, EmployeeID = infolist.EmployeeID, VendorID = infolist.VendorID, Comment = infolist.Comments, SubTotal = infolist.Subtotal, TaxGST = infolist.Tax }; context.Orders.Add(neworder); foreach (var row in po) { context.OrderDetails.Add(new OrderDetail { ProductID = row.ProductID, Quantity = row.OrderQty, OrderUnitSize = row.UnitSize, Cost = row.UnitCost }); } Product item = null; foreach (var row in po) { item = context.Products .Where(p => p.ProductID == row.ProductID) .Select(od => od).FirstOrDefault(); if (item != null) { item.QuantityOnOrder += row.OrderQty * row.UnitSize; context.Entry(item).Property(x => x.QuantityOnOrder).IsModified = true; } } context.SaveChanges(); } }
public void SavePO(List <PurchaseOrder> po, InfoToSave infolist) { using (var context = new RaceContext()) { var results = po.Select(x => x); if (results.Count() == 0) { errors.Add("The purchase order is empty. There is nothing to save."); } if (infolist.EmployeeID == 0) { errors.Add("Select an employee."); } if (infolist.VendorID == 0) { errors.Add("Select a vendor."); } if (errors.Count > 0) { throw new BusinessRuleException("Saving Purchase Order", errors); } Order oldorder = null; oldorder = context.Orders.Where(x => x.VendorID == infolist.VendorID && x.OrderNumber == null && x.OrderDate == null) .Select(x => x).FirstOrDefault(); if (oldorder != null) { foreach (var row in context.OrderDetails) { if (row.OrderID == oldorder.OrderID) { context.OrderDetails.Remove(row); } } context.Orders.Remove(oldorder); } Order neworder = new Order { EmployeeID = infolist.EmployeeID, VendorID = infolist.VendorID, Comment = infolist.Comments, SubTotal = infolist.Subtotal, TaxGST = infolist.Tax }; context.Orders.Add(neworder); foreach (var row in po) { context.OrderDetails.Add(new OrderDetail { ProductID = row.ProductID, Quantity = row.OrderQty, OrderUnitSize = row.UnitSize, Cost = row.UnitCost }); } context.SaveChanges(); } }