//-----------------------------------------------------------------------------------------------------
        private void frmDisSupplierOrder_Load(object sender, EventArgs e)
        {
            PartList  = new BindingList <PartsInTheOrder>();
            PartList2 = new BindingList <PartsInTheOrder2>();

            ordId = Convert.ToInt32(drOrders.ItemArray[0]);
            ClassLibrary.CustomerOrderDetails orderdetails = new ClassLibrary.CustomerOrderDetails();

            //display all products in the order
            orderdetails.OrderId            = ordId;
            dtOrderdetail                   = orderdetails.GetOrderDetailsByOrderId().Tables[0];
            dataGridViewProducts.DataSource = dtOrderdetail;
            dataGridViewProducts.Columns["PRODUCT_price"].DefaultCellStyle.Format = "c";

            //display all parts in an order
            ClassLibrary.CustomerOrder cusOrder = new ClassLibrary.CustomerOrder();

            cusOrder.Id = ordId;
            dtParts     = cusOrder.GetAllPartsByOrderId().Tables[0];

            ClassLibrary.BuildOfMaterial bom = new ClassLibrary.BuildOfMaterial();
            DataTable thisTable = new DataTable();

            foreach (DataRow row in dtOrderdetail.Rows)
            {
                bom.ProductId = Convert.ToInt32(row.ItemArray[0]);
                thisTable     = bom.GetAllPartsByProductId().Tables[0];

                foreach (DataRow row2 in thisTable.Rows)
                {
                    PartList.Add(new PartsInTheOrder
                    {
                        ProductName     = Convert.ToString(row.ItemArray[1]),
                        PartID          = Convert.ToString(row2.ItemArray[2]),
                        PartName        = Convert.ToString(row2.ItemArray[0]),
                        PartQuantity    = Convert.ToString(row2.ItemArray[1]),
                        productQuantity = Convert.ToString(row.ItemArray[2]),
                        totalQuantity   =
                            Convert.ToString(Convert.ToInt32(row.ItemArray[2]) * Convert.ToInt32(row2.ItemArray[1])),
                    });
                }

                //an empty row
                PartList.Add(new PartsInTheOrder
                {
                    ProductName = "",
                });
            }

            //dataGridViewParts.DataSource = PartList;

            //display parts2 list
            DisplayOrderParts();
        }
        //-----------------------------------------------------------------------------------------------------
        private void btnSaveToDatabase_Click(object sender, EventArgs e)
        {
            try
            {
                ClassLibrary.CustomerOrder        customerorder = new ClassLibrary.CustomerOrder();
                ClassLibrary.SupplierPart         supplierpart  = new ClassLibrary.SupplierPart();
                ClassLibrary.SupplierOrder        sorder        = new ClassLibrary.SupplierOrder();
                ClassLibrary.SupplierOrderDetails sorderdetail  = new ClassLibrary.SupplierOrderDetails();

                if (CheckSuppliersExists(supplierpart) == true)
                {
                    //update customer order status to 'sent to suppliers'
                    customerorder.Id     = ordId;
                    customerorder.Status = "Sent To Suppliers";
                    customerorder.UpdateOrderStatus();

                    //add sorder
                    sorder.OrderId    = ordId;
                    sorder.OrderDate  = DateTime.Today;
                    sorder.Status     = "";
                    sorder.TotalPrice = totalOrderPrice;
                    int lastInsertId = sorder.Add();

                    foreach (PartsInTheOrder2 item in partList2)
                    {
                        //supplierpart.PartId = item.PartID;
                        //supplierpart.SupplierId = item.SupplierID;
                        //DataTable thisTable = supplierpart.GetSupplierPartsId().Tables[0];
                        //int supplierpartId = (int)thisTable.Rows[0].ItemArray[0];

                        //add sorder details

                        sorderdetail.PartId     = item.PartID;
                        sorderdetail.SupplierId = item.SupplierID;

                        sorderdetail.SorderId = lastInsertId;
                        sorderdetail.Price    =
                            item.PartQuantity * Convert.ToDecimal(item.SupplierPrice.Replace("$", ""));
                        sorderdetail.Quantity     = item.PartQuantity;
                        sorderdetail.DateDelivery = DateTime.MinValue;
                        sorderdetail.Add();
                    }
                    MessageBox.Show("an order has been made successfully!",
                                    "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    formDisOrder.DisplayAllOrders();
                    Close();
                }
            }
            catch (Exception ex) { }
        }