private void gridPalletizedView_ShownEditor(object sender, EventArgs e)
        {
            DataRow dr = gridPalletizedView.GetFocusedDataRow();
            // check if the item is consolidable
            PalletLocation pll = new PalletLocation();

            DateTime? dt = null;
            if (dr["Expiry Date"] != DBNull.Value)
            {
                dt = Convert.ToDateTime(dr["Expiry Date"]);
            }
            pll.LoadConsolidationOption(Convert.ToInt32(dr["ID"]), dt, Convert.ToInt32(dr["BoxLevel"]),
                Convert.ToInt32(lkAccounts.EditValue));

            //DataRowView drv = pll.DefaultView.AddNew();
            //drv["Label"] = "New Pallet";
            //drv["ID"] = 0;

            GridView view = sender as GridView;
            if (view.FocusedColumn == columnPalletNumber)
            {
                try
                {
                    LookUpEdit lke = (LookUpEdit)view.ActiveEditor;
                    lke.EditValue = null;

                    lke.Properties.DataSource = pll.DefaultView;
                }
                catch
                {
                }
            }
        }
        private void PalletizeRecievedItems()
        {
            if (_dtPalletizedItemList == null)
            {
                _dtPalletizedItemList = _dtRecGrid.Clone();

                _dtPalletizedItemList.Columns.Add("PalletNumber");
                _dtPalletizedItemList.Columns.Add("Multiplier");
                _dtPalletizedItemList.Columns.Add("Volume");
                _dtPalletizedItemList.Columns.Add("BoxSizeDisplay");
                _dtPalletizedItemList.Columns.Add("Consolidate", typeof(bool));
                _dtPalletizedItemList.Columns.Add("CanConsolidate", typeof(bool));
                _dtPalletizedItemList.Columns.Add("PutAwayLocation", typeof(bool));
                _dtPalletizedItemList.Columns.Add("IsStoredInFreeStorageType", typeof(bool));
                _dtPalletizedItemList.Columns.Add("Index", typeof(int));
                //_dtPalletizedItemList.Columns.Add("GUID", typeof(string));

                _dtNonPalletizedItemList = _dtRecGrid.Clone();
                _dtNonPalletizedItemList.Columns.Add("Volume");
                _dtNonPalletizedItemList.Columns.Add("StorageTypeID");
                //_dtNonPalletizedItemList.Columns.Add("GUID", typeof(string));
                _dtNonPalletizedItemList.Columns.Add("Index", typeof(int));
                _dtNonPalletizedItemList.Columns.Add("Multiplier");
                _dtNonPalletizedItemList.Columns.Add("BoxSizeDisplay");

                // dtNonPalletizedItemList.Columns.Add("IsDamaged", typeof(bool));
            }
            else
            {
                _dtPalletizedItemList.Clear();
                _dtNonPalletizedItemList.Clear();
            }

            BLL.Item item = new Item();
            int lastPalletId = Pallet.GetLastPanelNumber();
            DateTime lastExpireDate = new DateTime();
            int previousProductId = 0;
            _dtRecGrid.DefaultView.Sort = "Ordering, ID, Expiry Date";
            int i = 0;
            DataRow r, rw;
            foreach (DataRowView drv in _dtRecGrid.DefaultView)
            {
                r = drv.Row;
                item.LoadByPrimaryKey(Convert.ToInt32(r["ID"]));
                int productID = 0;
                if (Convert.ToString(item.StorageTypeID) == StorageType.BulkStore &&
                    (r["IsDamaged"] != DBNull.Value && !Convert.ToBoolean(r["IsDamaged"])))
                {
                    DataTable dtbl = r["PC"] as DataTable;
                    foreach (DataRow rr in dtbl.Rows)
                    {
                        //if (Convert.ToInt32(rr["Qty"]) == 0)
                        //    continue;
                        _dtPalletizedItemList.ImportRow(r);
                        productID = Convert.ToInt32(r["ID"]);
                        rw = _dtPalletizedItemList.Rows[_dtPalletizedItemList.Rows.Count - 1];
                        rw["Pack Qty"] = rr["Qty"];
                        rw["BoxLevel"] = rr["BSize"];
                        rw["BoxSizeDisplay"] = rr["BoxSize"];
                        rw["Multiplier"] = rr["SKUM"];
                        int bs = Convert.ToInt32(rr["BSize"]);
                        // check if the item is consolidable
                        PalletLocation pll = new PalletLocation();
                        DateTime expiry = DateTime.MaxValue;

                        if (r["Expiry Date"] != DBNull.Value)
                        {
                            expiry = Convert.ToDateTime(r["Expiry Date"]);
                        }

                        pll.LoadConsolidationOption(productID, expiry, bs, Convert.ToInt32(lkAccounts.EditValue));
                        bool consolidate = false;
                        if (pll.RowCount > 0)
                        {
                            rw["CanConsolidate"] = true;
                            consolidate = true;
                        }
                        else
                        {
                            rw["CanConsolidate"] = false;
                        }
                        rw["Consolidate"] = false;

                        if (consolidate)
                        {

                        }
                        else if (r["Expiry Date"] != DBNull.Value && previousProductId == productID &&
                                 lastExpireDate.Subtract(Convert.ToDateTime(r["Expiry Date"])).Days == 0)
                        {
                            rw["PalletNumber"] = lastPalletId;
                        }
                        else
                        {
                            lastPalletId++;
                            rw["PalletNumber"] = lastPalletId;
                            lastExpireDate = DateTime.MaxValue;
                            if (r["Expiry Date"] != DBNull.Value)
                            {
                                lastExpireDate = Convert.ToDateTime(r["Expiry Date"]);
                            }
                            productID = Convert.ToInt32(r["ID"]);
                            previousProductId = productID;
                        }
                        rw["Index"] = i;
                    }
                }
                else
                {
                    // Put it in the putaway list

                    DataTable dtbl = r["PC"] as DataTable;
                    if (dtbl != null)
                    {
                        foreach (DataRow rr in dtbl.Rows)
                        {
                            if (Convert.ToInt32(rr["Qty"]) == 0)
                                continue;
                            _dtNonPalletizedItemList.ImportRow(r);
                            productID = Convert.ToInt32(r["ID"]);
                            rw = _dtNonPalletizedItemList.Rows[_dtNonPalletizedItemList.Rows.Count - 1];
                            rw["Pack Qty"] = rr["Qty"];
                            rw["BoxLevel"] = rr["BSize"];
                            rw["BoxSizeDisplay"] = rr["BoxSize"];
                            rw["Multiplier"] = rr["SKUM"];
                            rw["Index"] = i;
                        }
                    }

                }

                i++;
                previousProductId = Convert.ToInt32(r["ID"]);
                lastExpireDate = DateTime.MaxValue;
                if (r["Expiry Date"] != DBNull.Value)
                {
                    lastExpireDate = Convert.ToDateTime(r["Expiry Date"]);
                }
            }

            // now palletize the Damaged
            DataView dvShortage = grdViewShortageOrDamaged.DataSource as DataView;
            if (dvShortage != null && dvShortage.ToTable().Rows.Count > 0)
            {
                dvShortage.RowFilter = string.Format("[ShortageReasonID]={0}", ShortageReasons.Constants.DAMAGED);

                foreach (DataRow drDamages in dvShortage.ToTable().Rows)
                {
                    _dtNonPalletizedItemList.ImportRow(drDamages);
                    //productID = Convert.ToInt32(drDamages["ID"]);
                    rw = _dtNonPalletizedItemList.Rows[_dtNonPalletizedItemList.Rows.Count - 1];
                    rw["BoxLevel"] = 0;
                    rw["BoxSizeDisplay"] = 1;
                    BLL.ItemUnit iu = new ItemUnit();
                    iu.LoadByPrimaryKey(Convert.ToInt32(drDamages["UnitID"]));
                    rw["ID"] = iu.ItemID;
                    rw["Manufacturer"] = drDamages["Manufacturer"];
                    rw["Multiplier"] = iu.QtyPerUnit;
                    rw["IsDamaged"] = true;
                    rw["Index"] = i++;
                }
                dvShortage.RowFilter = null;
            }

            PalletizedGrid.DataSource = _dtPalletizedItemList;
            gridNonPalletized.DataSource = _dtNonPalletizedItemList;
            CalculateVolumes();
        }
        private void repoPalletNo_DoubleClick(object sender, EventArgs e)
        {
            DataRow dr = gridPalletizedView.GetFocusedDataRow();
            // check if the item is consolidable
            PalletLocation pll = new PalletLocation();
            pll.LoadConsolidationOption(Convert.ToInt32(dr["ID"]), Convert.ToDateTime(dr["Expiry Date"]),
                Convert.ToInt32(dr["BoxLevel"]), Convert.ToInt32(lkAccounts.EditValue));

            if (pll.RowCount > 0)
            {
                dr["PalletNumber"] = DBNull.Value;
                dr["CanConsolidate"] = true;
            }
            else
            {
                dr["CanConsolidate"] = false;
            }
            dr["Consolidate"] = false;
            dr.EndEdit();
            gridPalletizedView.RefreshData();
            //btnNextStep3.Focus();
        }
        private void btnConsolidate_Click(object sender, EventArgs e)
        {
            DataRow dr = gridPalletizedView.GetFocusedDataRow();
            dr.ClearErrors();
            //// check if the item is consolidable
            PalletLocation pll = new PalletLocation();
            DateTime? dt = null;
            if (dr["Expiry Date"] != DBNull.Value)
            {
                dt = Convert.ToDateTime(dr["Expiry Date"]);
            }
            pll.LoadConsolidationOption(Convert.ToInt32(dr["ID"]), dt, Convert.ToInt32(dr["BoxLevel"]),
                Convert.ToInt32(lkAccounts.EditValue));

            if (Convert.ToBoolean(dr["CanConsolidate"]))
            {

                dr["CanConsolidate"] = false;
                dr["Consolidate"] = false;
                dr.EndEdit();
            }
            else
            {
                if (pll.RowCount > 0)
                {
                    dr["PalletNumber"] = DBNull.Value;
                    dr["CanConsolidate"] = true;
                }
                else
                {
                    dr["CanConsolidate"] = false;
                }
                dr["Consolidate"] = false;
                dr.EndEdit();
            }
            gridPalletizedView.InvalidateRow(gridPalletizedView.FocusedRowHandle);
        }