protected void btnDelete_OnClick(object sender, EventArgs e)
    {
        var dtItemAdjustmentDetail = new ItemAdjustmentDetail()
        {
            ItemAdjustmentId = lblItemAdjustmentId.zToInt(),
        }.Select();

        foreach (DataRow drItemAdjustmentDetail in dtItemAdjustmentDetail.Rows)
        {
            CU.AdjustStockDelete(drItemAdjustmentDetail[CS.ItemAdjustmentDetailId].zToInt().Value);
        }

        new ItemAdjustment()
        {
            ItemAdjustmentId = lblItemAdjustmentId.zToInt(),
        }.Delete();
        CU.ZMessage(eMsgType.Success, string.Empty, "Adjustment Delete Successfully.");
        LoadItemAdjustmentGrid(ePageIndex.Custom);
    }
    private bool ManageAdjustmentDetail(int?PK, eRepeaterOperation RepeaterOperation)
    {
        #region Check Same Product

        var lstCheckProductId = new List <int>();
        if (RepeaterOperation == eRepeaterOperation.Validate)
        {
            foreach (RepeaterItem Item in rptAdjustmentDetail.Items)
            {
                var ddlProduct = Item.FindControl("ddlProduct") as DropDownList;
                if (ddlProduct.zIsSelect())
                {
                    if (lstCheckProductId.Contains(ddlProduct.zToInt().Value))
                    {
                        ddlProduct.Focus();
                        CU.ZMessage(eMsgType.Error, string.Empty, "This Product is Repeat in Same Adjustment Please Marge Same Product.");
                        return(false);
                    }

                    lstCheckProductId.Add(ddlProduct.zToInt().Value);
                }
            }
        }

        #endregion

        var lstAdjProduct          = new List <AdjProduct>();
        var dtItemAdjustmentDetail = new DataTable();

        int ItemAdjustmentId = lblItemAdjustmentId.zToInt().HasValue ? lblItemAdjustmentId.zToInt().Value : 0;

        if (RepeaterOperation == eRepeaterOperation.Save)
        {
            dtItemAdjustmentDetail = new ItemAdjustmentDetail()
            {
                ItemAdjustmentId = ItemAdjustmentId,
            }.Select();
        }

        if (RepeaterOperation == eRepeaterOperation.Select)
        {
            #region Get Data From DB

            dtItemAdjustmentDetail = new ItemAdjustmentDetail()
            {
                ItemAdjustmentId = ItemAdjustmentId,
            }.Select();
            var dtItemAdjustmentDetailProduct = dtItemAdjustmentDetail.DefaultView.ToTable(true, CS.ProductId);

            var lstProductId = new List <int>();
            foreach (DataRow drItemAdjustmentDetailProduct in dtItemAdjustmentDetailProduct.Rows)
            {
                lstProductId.Add(drItemAdjustmentDetailProduct[CS.ProductId].zToInt().Value);
            }

            var dtItem = new Query()
            {
                ProductIdIn = CU.GetParaIn(lstProductId, true)
            }.Select(eSP.qry_Item);

            foreach (DataRow drItemAdjustmentDetailProduct in dtItemAdjustmentDetailProduct.Rows)
            {
                var lstAdjProductItem = new List <AdjProductItem>();
                foreach (DataRow drItem in dtItem.Select(CS.ProductId + "=" + drItemAdjustmentDetailProduct[CS.ProductId].zToInt()))
                {
                    int?    ItemAdjustmentDetailId = null;
                    decimal?Quantity = null, Rate = null;
                    var     drItemAdjustmentDetailtem = dtItemAdjustmentDetail.Select(CS.ProductId + "=" + drItemAdjustmentDetailProduct[CS.ProductId].zToInt() + " AND " + CS.ItemId + "=" + drItem[CS.ItemId].zToInt());
                    if (drItemAdjustmentDetailtem.Length > 0)
                    {
                        ItemAdjustmentDetailId = drItemAdjustmentDetailtem[0][CS.ItemAdjustmentDetailId].zToInt();
                        Quantity = drItemAdjustmentDetailtem[0][CS.Quantity].zToDecimal();
                        Rate     = drItemAdjustmentDetailtem[0][CS.Rate].zToDecimal();
                    }

                    lstAdjProductItem.Add(new AdjProductItem()
                    {
                        ItemAdjustmentDetailId = ItemAdjustmentDetailId,
                        ItemId   = drItem[CS.ItemId].zToInt().Value,
                        ItemName = drItem[CS.ItemName].ToString(),
                        Quantity = Quantity,
                        Rate     = Rate,
                    });
                }

                lstAdjProduct.Add(new AdjProduct()
                {
                    ProductId         = drItemAdjustmentDetailProduct[CS.ProductId].zToInt().Value,
                    lstAdjProductItem = lstAdjProductItem,
                });
            }

            #endregion
        }
        else
        {
            #region Manage Data

            foreach (RepeaterItem Item in rptAdjustmentDetail.Items)
            {
                var lblPK = Item.FindControl("lblPK") as Label;

                if (RepeaterOperation == eRepeaterOperation.Remove && PK == lblPK.zToInt())
                {
                    continue;
                }

                var ddlProduct = Item.FindControl("ddlProduct") as DropDownList;

                var rptAdjustmentItemDetail = Item.FindControl("rptAdjustmentItemDetail") as Repeater;

                if (RepeaterOperation == eRepeaterOperation.Add || RepeaterOperation == eRepeaterOperation.Refresh ||
                    RepeaterOperation == eRepeaterOperation.Remove)
                {
                    #region Get Old Data

                    #region Product Item

                    var lstAdjProductItem = new List <AdjProductItem>();
                    foreach (RepeaterItem ItemAdjustmentItemDetail in rptAdjustmentItemDetail.Items)
                    {
                        var lblItemId   = ItemAdjustmentItemDetail.FindControl("lblItemId") as Label;
                        var lblItemName = ItemAdjustmentItemDetail.FindControl("lblItemName") as Label;
                        var txtQuantity = ItemAdjustmentItemDetail.FindControl("txtQuantity") as TextBox;
                        var txtRate     = ItemAdjustmentItemDetail.FindControl("txtRate") as TextBox;

                        lstAdjProductItem.Add(new AdjProductItem()
                        {
                            ItemId   = lblItemId.zToInt().Value,
                            ItemName = lblItemName.Text,
                            Quantity = txtQuantity.zToDecimal(),
                            Rate     = txtRate.zToDecimal(),
                        });
                    }

                    #endregion

                    lstAdjProduct.Add(new AdjProduct()
                    {
                        ProductId         = ddlProduct.zToInt().Value,
                        lstAdjProductItem = lstAdjProductItem
                    });

                    #endregion
                }
                else if (RepeaterOperation == eRepeaterOperation.Validate)
                {
                    #region Validate

                    //if (ddlProduct.zIsSelect())
                    //{
                    //    foreach (RepeaterItem ItemAdjustmentItemDetail in rptAdjustmentItemDetail.Items)
                    //    {
                    //        var txtQuantity = ItemAdjustmentItemDetail.FindControl("txtQuantity") as TextBox;
                    //        var txtRate = ItemAdjustmentItemDetail.FindControl("txtRate") as TextBox;

                    //        if (!txtQuantity.zIsDecimal(true))
                    //        {
                    //            txtQuantity.Focus();
                    //            CU.ZMessage(eMsgType.Error, string.Empty, "Please Enter Quantity");
                    //            return false;
                    //        }
                    //    }
                    //}

                    #endregion
                }
                else if (RepeaterOperation == eRepeaterOperation.Save)
                {
                    #region Save Data

                    if (ddlProduct.zIsSelect())
                    {
                        foreach (RepeaterItem ItemAdjustmentItemDetail in rptAdjustmentItemDetail.Items)
                        {
                            var lblItemAdjustmentDetailId = ItemAdjustmentItemDetail.FindControl("lblItemAdjustmentDetailId") as Label;
                            var lblItemId   = ItemAdjustmentItemDetail.FindControl("lblItemId") as Label;
                            var lblItemName = ItemAdjustmentItemDetail.FindControl("lblItemName") as Label;
                            var txtQuantity = ItemAdjustmentItemDetail.FindControl("txtQuantity") as TextBox;
                            var txtRate     = ItemAdjustmentItemDetail.FindControl("txtRate") as TextBox;

                            if (txtQuantity.zIsDecimal(true))
                            {
                                var objItemAdjustmentDetail = new ItemAdjustmentDetail()
                                {
                                    ItemAdjustmentDetailId = lblItemAdjustmentDetailId.zToInt(),
                                    ItemAdjustmentId       = lblItemAdjustmentId.zToInt(),
                                    ProductId = ddlProduct.zToInt(),
                                    ItemId    = lblItemId.zToInt(),
                                    Quantity  = txtQuantity.zToDecimal(),
                                    Rate      = txtRate.zToDecimal(),
                                };

                                CU.AdjustStock(objItemAdjustmentDetail, true);
                                if (objItemAdjustmentDetail.ItemAdjustmentDetailId.HasValue && objItemAdjustmentDetail.ItemAdjustmentDetailId > 0)
                                {
                                    var drItemAdjustmentDetail = dtItemAdjustmentDetail.Select(CS.ItemAdjustmentDetailId + "=" + objItemAdjustmentDetail.ItemAdjustmentDetailId);
                                    if (drItemAdjustmentDetail.Length > 0)
                                    {
                                        dtItemAdjustmentDetail.Rows.Remove(drItemAdjustmentDetail[0]);
                                    }
                                }
                            }
                        }
                    }

                    #endregion
                }
            }

            #endregion
        }

        if (RepeaterOperation == eRepeaterOperation.Add || RepeaterOperation == eRepeaterOperation.Refresh ||
            RepeaterOperation == eRepeaterOperation.Remove || RepeaterOperation == eRepeaterOperation.Select)
        {
            #region Manage And Bind Data

            if (RepeaterOperation == eRepeaterOperation.Add || lstAdjProduct.Count == 0)
            {
                for (int i = 0; i < 5; i++)
                {
                    lstAdjProduct.Add(new AdjProduct()
                    {
                    });
                }
            }

            dtProduct = new Query()
            {
                eStatus = (int)eStatus.Active, OrganizationId = lblOrganizationId.zToInt()
            }.Select(eSP.qry_Product);
            var drProduct = dtProduct.NewRow();
            drProduct[CS.ProductId]   = "0";
            drProduct[CS.ProductCode] = "-- Select Product --";
            dtProduct.Rows.InsertAt(drProduct, 0);

            rptAdjustmentDetail.DataSource = lstAdjProduct;
            rptAdjustmentDetail.DataBind();

            #endregion
        }
        else if (RepeaterOperation == eRepeaterOperation.Save)
        {
            #region Save Data

            foreach (DataRow drItemAdjustmentDetail in dtItemAdjustmentDetail.Rows)
            {
                CU.AdjustStockDelete(drItemAdjustmentDetail[CS.ItemAdjustmentDetailId].zToInt().Value);
            }

            #endregion
        }

        return(true);
    }