private void btnAdd_Click(object sender, EventArgs e)
        {
            //Move to top later
            if (!((PanelButton.getClickStatus() == enumButton2.Them) || (PanelButton.getClickStatus() == enumButton2.Sua) || (PanelButton.getClickStatus() == enumButton2.BaoGiuLai) || (PanelButton.getClickStatus() == enumButton2.BaoHoanNhap)))
            {
                return;
            }

            if (chkboxXacNhanXuat.Checked == false)
            {
                if (check_cbKho() == false || check_cbVT() == false || checkSoLuongXuat() == false)
                {
                    return;
                }
            }
            else
            {
                if (checkSoLuongHNGL() == false)
                {
                    return;
                }
            }
            clsDM_Kho kho = new clsDM_Kho();
            bool isKhoNgoai = kho.GetDataARow(int.Parse( cbKhoXuat.SelectedValue.ToString() ));
            if (isKhoNgoai == true)
            {
                int id = cbMuonVTTaiKho.SelectedValue == null ? 0 : int.Parse(cbMuonVTTaiKho.SelectedValue.ToString());
                bool isKhoMuon = kho.GetDataARow(id);
                if (isKhoMuon == true)
                {
                    MessageBox.Show("Không thể mượn kho khác khi đang chọn kho ngoài để xuất");
                    return;
                }
            }
            //Kiem tra row trùng lập, chưa giải quyết phần thiếu vật tư, xin thêm
            //---------- TEST
            //DataRow dr = dataTableChiTietPhieuXuatTam.NewRow();

            //dr["Ma_vat_tu"] = "17190010";
            //dr["Ten_vat_tu"] = "Thuốc hàn (Cadweld)";
            //dr["ID_kho"] = "0";
            //dr["Ten_kho"] = "Kho 1";
            //dr["So_luong"] = "20";
            //dr["So_luong_de_nghi"] = "10";
            //dr["So_luong_thuc_xuat"] = "10";
            //dr["Da_duyet_xuat_vat_tu"] = "true";
            //dr["So_luong_hoan_nhap"] = "0";
            //dr["So_luong_giu_lai"] = "0";
            //dr["Da_duyet_hoan_nhap_giu_lai"] = "false";
            //dr["So_luong_su_dung"] = "0";

            //dataTableChiTietPhieuXuatTam.Rows.Add(dr);
            //-------

            int ID_Kho = getIDKho();

            //Tạm thời vật tư a trong kho x ko dc add quá 2 lần. --> chưa giải quyết phần thiếu vật tư, xin thêm
            //data.Select(string.Format("Ma_vat_tu='{0}'", selectedRow.Cells["_Ma_vat_tu"].Value.ToString()));
            //DataRow[] chkMaVatTu = dataTableChiTietPhieuXuatTam.Select("Ma_vat_tu = \'" + cbMaVatTu.Text.Trim() + "\' AND ID_kho = \'" + ID_Kho + "\'");
            //DataRow[] chkMaVatTu = gridChiTietPhieuXuatTam.Select Select(string.Format("ID_kho = '{0}' AND Ma_vat_tu='{1}' AND Id_chat_luong = '{2}' AND Da_duyet_xuat_vat_tu='FALSE'", ID_Kho, cbMaVatTu.Text.Trim(), cbChatLuong.SelectedValue.ToString()));

            DataRow[] chkMaVatTu = dataTableChiTietPhieuXuatTam.Select(string.Format("ID_kho = '{0}' AND Ma_vat_tu='{1}' AND Id_chat_luong = '{2}' AND Da_duyet_xuat_vat_tu='FALSE'", ID_Kho, cbMaVatTu.Text.Trim(), cbChatLuong.SelectedValue.ToString()));

            if (chkMaVatTu.Length != 0)
            {
                //int index = dataTableChiTietPhieuXuatTam.Rows.IndexOf(chkMaVatTu[0]);
                //MessageBox.Show("Vật tư bạn chọn đã tồn tại! Bạn có thể sửa lại!"); //Ten_vat_tu
                DialogResult dialogResult = MessageBox.Show(string.Format("Vật tư mã = '{0}' đã tồn tại!\nBạn có muốn sửa lại không?", cbMaVatTu.Text), "Cảnh báo", MessageBoxButtons.YesNo);
                if (dialogResult == DialogResult.Yes)
                {
                    for (int i = 0; i < gridChiTietPhieuXuatTam.Rows.Count; i++)
                    {
                        DataGridViewRow tmp_row = gridChiTietPhieuXuatTam.Rows[i];
                        if (Int32.Parse(tmp_row.Cells["_ID_kho"].Value.ToString()) == ID_Kho && tmp_row.Cells["_Ma_vat_tu"].Value.ToString() == cbMaVatTu.Text.Trim() && Int32.Parse(tmp_row.Cells["_Id_chat_luong"].Value.ToString()) == Int32.Parse(cbChatLuong.SelectedValue.ToString()) && bool.Parse(tmp_row.Cells["_Da_duyet_xuat_vat_tu"].Value.ToString()) == false)
                        {
                            //gridChiTietPhieuXuatTam.Rows[i].Selected = true;

                            //col = 1, row = i
                            gridChiTietPhieuXuatTam.CurrentCell = gridChiTietPhieuXuatTam[1, i];
                            ResetGridInputForm();
                            btnEdit_Click(btnEditRowInGrid, EventArgs.Empty);
                            break;
                        }
                        else
                        {
                            //gridChiTietPhieuXuatTam.Rows[i].Selected = false;
                        }
                    }
                }
                else if (dialogResult == DialogResult.No)
                {
                    //do something else
                    ResetGridInputForm();
                }

                return;
            }

            DataRow dr = dataTableChiTietPhieuXuatTam.NewRow();
            dr["ID_chi_tiet_phieu_xuat_tam"] = curGridRow_ID;
            dr["Ma_vat_tu"] = cbMaVatTu.Text;
            dr["Ten_vat_tu"] = cbTenVatTu.Text;
            dr["ID_kho"] = ID_Kho;
            dr["Ten_kho"] = getTenKho();
            dr["Ten_don_vi_tinh"] = txtDVT.Text;
            dr["Id_chat_luong"] = Int32.Parse(cbChatLuong.SelectedValue.ToString());
            dr["Loai_chat_luong"] = cbChatLuong.Text;

            //Chưa setup func, và có lẽ ko cần thiết
            //dr["So_luong"] = "0";

            dr["So_luong_dang_giu"] = txtSLDangGiu.Text;
            dr["ID_No_vat_tu"] = curGridRow_ID_No_vat_tu;

            dr["So_luong_de_nghi"] = txtSLDN.Text;
            dr["So_luong_thuc_xuat"] = txtSLTX.Text;
            dr["Da_duyet_xuat_vat_tu"] = chkboxXacNhanXuat.Checked;

            //Chưa cho sửa
            dr["So_luong_hoan_nhap"] = txtSLHN.Text;
            dr["So_luong_giu_lai"] = txtSLGL.Text;
            dr["Da_duyet_hoan_nhap"] = chkboxXacNhanHoanNhap.Checked;
            dr["Da_duyet_giu_lai"] = chkboxXacNhanGiuLai.Checked;

            //not use
            //dr["So_luong_su_dung"] = "0";

            dataTableChiTietPhieuXuatTam.Rows.Add(dr);

            //if (Double.Parse(txtSLDangGiu.Text) > 0)
            //{
            //    init_cbMaVatTu();
            //    init_cbTenVatTu();
            //}

            ResetGridInputForm();

            //Khi đã add data của kho xuất rồi, thì đó là kho xuất chính, ko thể thay đổi nữa.
            //cbKhoXuat.Enabled = false;
            setup_cbKhoXuat();

            // gridMaster.SelectedRows.
        }
        private void XuLyNhap_Phieu()
        {
            try
            {
                Int32 selectedRowCount = gridDanhSachPhieuNhap.CurrentCell.RowIndex;
                string maphieu = gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Ma_phieu"].Value.ToString();
                int idKho = int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_kho"].Value.ToString());

                bool Da_phan_kho = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Da_phan_kho"].Value.ToString());

                if (Da_phan_kho == true)
                {
                    MessageBox.Show("Phiếu này đã duyệt và phân kho ");
                    return;
                }

                int idphieu = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_phieu_nhap"].Value.ToString()) ? -1 : int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_phieu_nhap"].Value.ToString());
                int idloaiphieu = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["id_loai_phieu_nhap"].Value.ToString()) ? -1 : int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["id_loai_phieu_nhap"].Value.ToString());
                bool isgoidau = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isgoidau"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isgoidau"].Value.ToString());
                bool isKNMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNMN"].Value.ToString());
                bool isToTrinh = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isToTrinh"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isToTrinh"].Value.ToString());
                bool isKNTN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNTN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNTN"].Value.ToString());
                bool isKCMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCMN"].Value.ToString());
                bool isKCTN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCTN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCTN"].Value.ToString());
                bool isNVMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isNVMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isNVMN"].Value.ToString());

                int ID_Kho = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_kho"].Value.ToString()) ? 0 : int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_kho"].Value.ToString());

                bool isKhoNgoai =  new clsDM_Kho().GetDataARow(ID_Kho);

                if (isKhoNgoai == true)
                {
                    if (idloaiphieu != -1)
                    {
                        clsLoaiPhieuNhap lpn = new clsLoaiPhieuNhap();
                        if (lpn.getTenLPN(idloaiphieu).Equals("XD"))
                        {
                            KhoNgoai pn = new KhoNgoai();

                            if (pn.Insert(idphieu) == 1)
                            {
                                MessageBox.Show("Đã xác nhận thành công!"); return;

                            }
                        }
                    }

                }
                if (isNVMN == true)
                {
                    KhoNgoai pn = new KhoNgoai();

                    if (pn.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }
                }
                if (isToTrinh == true)
                {
                    BienBanToTrinh BBTT = new BienBanToTrinh();
                    if (BBTT.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;
                    }
                }
                if (isgoidau == true)
                {
                    GoiDau gd = new GoiDau();
                    if (gd.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }
                }
                if (CheckPhieuNo() == true)
                    return;
                if (isKCMN == true)
                {
                    DiMuonNo KCMN = new DiMuonNo();
                    if (KCMN.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }

                }
                if (isKCTN == true)
                {
                    DiTraNo KCTN = new DiTraNo();
                    if (KCTN.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }

                }
                if (isKNTN == true)
                {
                    KhoKhacTraNo gd = new KhoKhacTraNo();
                    if (gd.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }
                }
                if (isKNMN == true)
                {
                    PhieuKhoKhacMuon gd = new PhieuKhoKhacMuon();
                    if (gd.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }
                }
                if (isgoidau == true)
                {
                    GoiDau gd = new GoiDau();
                    if (gd.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }

                }

                if (idloaiphieu != -1)
                {
                    clsLoaiPhieuNhap lpn = new clsLoaiPhieuNhap();
                    if (lpn.getTenLPN(idloaiphieu).Equals("XD"))
                    {
                        PhieuNhap pn = new PhieuNhap();

                        if (pn.Insert(idphieu) == 1)
                        {
                            MessageBox.Show("Đã xác nhận thành công!"); return;

                        }
                    }
                    if (lpn.getTenLPN(idloaiphieu).Equals("TD"))
                    {
                        PhieuHoanNhap phn = new PhieuHoanNhap();
                        if (phn.Insert(idphieu) == 1)
                        {
                            MessageBox.Show("Đã xác nhận thành công!"); return;

                        }
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
            }
        }
        /// <summary>
        /// Kho mượn vt ko được trùng với kho xuất
        /// </summary>
        private void init_cbMuonVTTaiKho()
        {
            clsDM_Kho DMKho = new clsDM_Kho();

            cbMuonVTTaiKho.DataSource = DMKho.getAll_TenKho();
            cbMuonVTTaiKho.ValueMember = "ID_kho";
            cbMuonVTTaiKho.DisplayMember = "Ten_kho";

            cbMuonVTTaiKho.SelectedIndex = -1;
        }