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);
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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();
            }
        }