Exemplo n.º 1
0
        private void TryRefillfromWarehouse(string Product, string Quantity, int DestinationWarehouseID, int OrderID, string ClientName, string Adress)
        {
            using (var context = new WMSEntities())
            {
                using (var dbContextTransaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        int quantity = Int32.Parse(Quantity);
                        var result   = (from p in context.Products
                                        where p.ProductName.Equals(Product) && p.UnitsInStock >= quantity
                                        select new
                        {
                            SourceWarehouseID = p.WarehouseID,
                            units = p.UnitsInStock,
                            prodID = p.ProductID,
                            rowID = p.RowID,
                            price = p.UnitPrice
                        });

                        if (!string.IsNullOrWhiteSpace(result.ToString()))
                        {
                            if (result.Count() != 0)
                            {
                                var rez = result.ToList();

                                DialogResult dr = MessageBox.Show(String.Format("Do you want to refill warehouse {0} from warehouse {1} with product ->{2}, units->{3}?", DestinationWarehouseID, rez[0].SourceWarehouseID, Product, Quantity), "The Question",
                                                                  MessageBoxButtons.YesNo,
                                                                  MessageBoxIcon.Question,
                                                                  MessageBoxDefaultButton.Button1);


                                switch (dr)
                                {
                                case DialogResult.Yes:
                                {
                                    int sourceID;
                                    Int32.TryParse(rez[0].SourceWarehouseID.ToString(), out sourceID);
                                    float price  = float.Parse(rez[0].price.ToString());
                                    Form  refill = new RefillForm(sourceID, DestinationWarehouseID, Product, Quantity, false);
                                    refill.ShowDialog();
                                    context.RefillFromWarehouse(rez[0].SourceWarehouseID, DestinationWarehouseID, quantity, Product);
                                    refill.Close();
                                    //          Form BarCodeCheck = new BarCodeCheck(rez[0].prodID);
                                    //        BarCodeCheck.Show();
                                    MessageBox.Show("The refill is done! Order is ready to be processed! ");
                                    Form fr = new ProcessingOrder(OrderID.ToString(), ClientName, Adress, Product, quantity, rez[0].rowID, price);
                                    fr.Show();
                                    context.UpdateDB(Product, quantity, DestinationWarehouseID);
                                    context.SaveChanges();
                                    context.MarkProcessed(OrderID, rez[0].prodID);

                                    context.SaveChanges();
                                    dbContextTransaction.Commit();

                                    break;
                                };

                                case DialogResult.No:
                                {
                                    break;
                                };
                                }
                            }
                            else
                            {
                                var rez = (from p in context.Products
                                           where p.ProductName.Equals(Product)
                                           select new
                                {
                                    prodID = p.ProductID,
                                    rowID = p.RowID,
                                    Price = p.UnitPrice
                                }).ToList();

                                Form refill = new RefillForm(0, DestinationWarehouseID, Product, Quantity, false);
                                refill.ShowDialog();
                                // Form BarCodeCheck = new BarCodeCheck(rez[0].prodID);
                                //BarCodeCheck.Show();
                                context.RefillFromWarehouse(0, DestinationWarehouseID, quantity, Product);
                                context.SaveChanges();
                                refill.Close();
                                MessageBox.Show("The refill is done! Order is ready to be processed! ");
                                float price = float.Parse(rez[0].Price.ToString());
                                Form  fr    = new ProcessingOrder(OrderID.ToString(), ClientName, Adress, Product, quantity, rez[0].rowID, price);
                                fr.Show();
                                context.MarkProcessed(OrderID, rez[0].prodID);
                                context.SaveChanges();
                                context.UpdateDB(Product, quantity, DestinationWarehouseID);
                                context.SaveChanges();
                                dbContextTransaction.Commit();
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString());
                        dbContextTransaction.Rollback();
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void btnProcessOrder_Click(object sender, EventArgs e)
        {
            try {
                if (gvUnproccOrders.SelectedCells.Count == 0)
                {
                    throw new Exception("No orders to process!");
                }
                if (gvUnproccOrders.SelectedCells.Count < 2)
                {
                    throw new Exception("Select the entire row!");
                }
                string SearchValue = "";
                string OrderID     = "";
                foreach (DataGridViewRow row in gvUnproccOrders.SelectedRows)
                {
                    OrderID     = row.Cells[0].Value.ToString();
                    SearchValue = OrderID;
                }

                int rowIndex = -1;
                foreach (DataGridViewRow row in gvUnproccOrders.Rows)
                {
                    if (row.Cells[0].Value.ToString().Equals(SearchValue))
                    {
                        rowIndex = row.Index;
                        gvUnproccOrders.Rows[rowIndex].Selected = true;
                        string ClientName  = row.Cells[1].Value.ToString();
                        string Adress      = row.Cells[2].Value.ToString();
                        string Product     = row.Cells[3].Value.ToString();
                        string Quantity    = row.Cells[4].Value.ToString();
                        string WarehouseID = row.Cells[5].Value.ToString();

                        using (var context = new WMSEntities())
                        {
                            using (var dbContextTransaction = context.Database.BeginTransaction())
                            {
                                try
                                {
                                    var prodID = (from p in context.Products
                                                  where p.ProductName.Equals(Product)
                                                  select p).First().ProductID;


                                    int warehouseID   = Int32.Parse(WarehouseID);
                                    var WarehouseName = (from c in context.Warehouses
                                                         where c.WarehouseID.Equals(warehouseID)
                                                         select c).First().Address;
                                    var check = (from p in context.Products
                                                 where p.ProductName.Equals(Product) && p.WarehouseID.Equals(warehouseID)
                                                 select p).FirstOrDefault();

                                    if (check != null)
                                    {
                                        if (!string.IsNullOrWhiteSpace(check.ToString()))
                                        {
                                            var unitsInStock = (from p in context.Products
                                                                where p.ProductName.Equals(Product) && p.WarehouseID.Equals(warehouseID)
                                                                select p).FirstOrDefault().UnitsInStock;
                                            if (unitsInStock < Int32.Parse(Quantity))
                                            {
                                                MessageBox.Show(String.Format("Unfortunately, warehouse {0} do not have {1} units of {2}. Trying to refill from other warehouses...", WarehouseID, Quantity, Product));
                                                int orderID = Int32.Parse(OrderID);
                                                TryRefillfromWarehouse(Product, Quantity, warehouseID, orderID, ClientName, Adress);
                                            }
                                            else
                                            {
                                                var rez = (from p in context.Products
                                                           where p.ProductName.Equals(Product)
                                                           select new
                                                {
                                                    rowID = p.RowID,
                                                    Price = p.UnitPrice,
                                                    prodID = p.ProductID
                                                }).ToList();

                                                int   quantity       = Int32.Parse(Quantity);
                                                float price          = float.Parse(rez[0].Price.ToString());
                                                Form  processingForm = new ProcessingOrder(OrderID, ClientName, Adress, Product, quantity, rez[0].rowID, price);
                                                processingForm.Show();
                                                int units   = Int32.Parse(Quantity);
                                                int orderID = Int32.Parse(OrderID);
                                                context.UpdateDB(Product, units, warehouseID);
                                                context.SaveChanges();
                                                context.MarkProcessed(orderID, prodID);
                                                context.SaveChanges();
                                                dbContextTransaction.Commit();
                                            }
                                        }
                                    }
                                    else
                                    {
                                        int orderID = Int32.Parse(OrderID);
                                        MessageBox.Show(String.Format("Unfortunately, {0} warehouse do not have {1} units of {2}. Trying to refill from other warehouses...", WarehouseName, Quantity, Product));
                                        TryRefillfromWarehouse(Product, Quantity, warehouseID, orderID, ClientName, Adress);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(ex.Message.ToString());
                                    dbContextTransaction.Rollback();
                                }
                            }
                        }
                    }
                }

                this.Close();
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }