public frmDanhSachPhieuNhap(string maphieu)
        {
            InitializeComponent();
            phieuNhap = new clsPhieuNhapKho();
            //Init cls Button
            PanelButton = new clsPanelButton();
            frmAction = new FormActionDelegate(FormAction);
            PanelButton.setDelegateFormAction(frmAction);
            // btnXoa.Enabled = false;
            //btnXemChiTiet.Enabled = false;

            //enumButton dùng định danh button
            PanelButton.AddButton(enumButton.LamMoi, ref btnLamMoi);
            PanelButton.AddButton(enumButton.Dong, ref btnDong);
            PanelButton.ResetButton();
            this.maphieu = maphieu;
        }
        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (txtMaPhieuNhap.Text.Trim() == "")
            {
                MessageBox.Show("Mã phiếu bắt buộc nhập!");
                return;
            }
            if (cbKhoNhan.Text == "" )
            {
                MessageBox.Show("Chưa nhập kho hoặc mã phiếu");
                return;
            }

            DatabaseHelper help = new DatabaseHelper();
            help.ConnectDatabase();
            //switch (staTus)
            switch (PanelButton.getClickStatus())
            {

                #region "Thêm"
                case enumButton2.Them:
                    using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                    {
                        try
                        {

                            clsPhieuNhapKho phieunhap = new clsPhieuNhapKho();
                            phieunhap.Ma_phieu_nhap = txtMaPhieuNhap.Text;
                            if (!phieunhap.CheckTonTaiSoDK(txtMaPhieuNhap.Text))
                            {

                                phieunhap.Kho_nhan = cbKhoNhan.Text;
                                phieunhap.Kho_xuat_ra = txtXuatTaiKho.Text;
                                phieunhap.Da_phan_kho = false;

                                  phieunhap.ID_Loai_Phieu_Nhap = null;
                                phieunhap.Ma_phieu_nhap = txtMaPhieuNhap.Text;
                                phieunhap.Dia_chi = txtDiaChi.Text;
                                phieunhap.Ly_do = txtLyDo.Text;
                                phieunhap.Ngay_lap = dtNgayNhap.Value;
                                phieunhap.Cong_trinh = txtCongTrinh.Text;
                                phieunhap.Da_phan_kho = false;
                                phieunhap.ID_khoNhan = (int)cbKhoNhan.SelectedValue;
                                if (rdoKNMN.Checked == true)
                                    phieunhap.isKNMN = true;
                                if (rdoKNTN.Checked == true)
                                    phieunhap.isKNTN = true;
                                if (rdoKCTN.Checked == true)
                                    phieunhap.isKCTN = true;
                                if (rdoKCMuonNo.Checked == true)
                                    phieunhap.isKCMN = true;

                                phieunhap.isNhapNgoai = true;
                                phieunhap.Ten_kho_muon = cbKhoNgoai.Text;
                                if (phieunhap.Insert(help) == 1)
                                {

                                    //DataTable chiTietPhieuNhap = new clsChi_Tiet_Phieu_Nhap_Vat_Tu().GetAll(phieuNhap.ID_phieu_nhap);
                                    for (int i = 0; i < dataTable1.Rows.Count; i++)
                                    {
                                        clsChi_Tiet_Phieu_Nhap_Vat_Tu chitiet = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();
                                        //    chitiet.ID_chi_tiet_phieu_nhap = int.Parse(gridMaster.Rows[i].Cells["ID_chi_tiet_phieu_nhap"].ToString());
                                        chitiet.Ma_phieu_nhap = (txtMaPhieuNhap.Text);
                                        chitiet.ID_Don_vi_tinh = int.Parse(dataTable1.Rows[i]["ID_Don_vi_tinh"].ToString());
                                        chitiet.Ma_vat_tu = (dataTable1.Rows[i]["Ma_vat_tu"].ToString());
                                        chitiet.ID_Chat_luong = int.Parse(dataTable1.Rows[i]["ID_Chat_luong"].ToString());
                                        // chitiet.So_luong_yeu_cau = decimal.Parse(dataTable1.Rows[i]["So_luong_yeu_cau"].ToString());
                                        chitiet.So_luong_thuc_lanh = decimal.Parse(dataTable1.Rows[i]["so_luong_thuc_lanh"].ToString());
                                        chitiet.Don_gia = decimal.Parse(dataTable1.Rows[i]["Don_gia"].ToString());
                                        chitiet.Thanh_tien = decimal.Parse(dataTable1.Rows[i]["Thanh_tien"].ToString());
                                        chitiet.Da_duyet = false;
                                        if (chitiet.Insert(help) == 0)
                                            dbcxtransaction.Rollback();

                                    }

                                    dbcxtransaction.Commit();

                                    PanelButton.ResetClickStatus();

                                    //setInputComponentStatus(true);
                                    enableInputForm();

                                    PanelButton.ResetButton();
                                    frmDanhSachPhieuNhap dspn = new frmDanhSachPhieuNhap(txtMaPhieuNhap.Text);
                                    dspn.Show();

                                }
                                else
                                    dbcxtransaction.Rollback();

                            }
                            else
                            {
                                MessageBox.Show("mã phiếu nhập này đã tồn tại trong csdl!");
                                button2_Click(this, EventArgs.Empty);
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
                            dbcxtransaction.Rollback();
                        }
                    }
                    break;
                #endregion
                #region "Sua"
                case enumButton2.Sua:
                    {
                        using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                        {
                            try
                            {
                                clsPhieuNhapKho phieunhap = new clsPhieuNhapKho();
                                phieunhap.Ma_phieu_nhap = txtMaPhieuNhap.Text;
                                {

                                    // phieunhap.

                                    //  phieunhap.ID_Loai_Phieu_Nhap = Int32.Parse(cbLoaiPhieuNhan.SelectedValue.ToString());
                                    phieunhap.Ma_phieu_nhap = txtMaPhieuNhap.Text;
                                    phieunhap.Dia_chi = txtDiaChi.Text;
                                    phieunhap.Ly_do = txtLyDo.Text;
                                    phieunhap.Ngay_lap = dtNgayNhap.Value;
                                    //     phieunhap.So_hoa_don = txtSoHD.Text;
                                    phieunhap.Cong_trinh = txtCongTrinh.Text;

                                    //if (rdoKNMN.Checked == true)
                                    //    phieunhap.isChoMuonNgoai = true;

                                    if (rdoKNMN.Checked == true)
                                        phieunhap.isKNMN = true;
                                    if (rdoKNTN.Checked == true)
                                        phieunhap.isKNTN = true;
                                    if (rdoKCTN.Checked == true)
                                        phieunhap.isKCTN = true;
                                    if (rdoKCMuonNo.Checked == true)
                                        phieunhap.isKCMN = true;

                                    phieunhap.isNhapNgoai = true;
                                    //if (isLoaiPhieu == "TN")
                                    //    phieunhap.isTraNo = true;
                                    //  phieunhap.isGoiDau = chbNGD.Checked;
                                    phieunhap.ID_khoNhan = (int)cbKhoNhan.SelectedValue;
                                    DataTable temp = phieunhap.GetThongTinPhieuMuonNo(phieunhap.Ma_phieu_nhap);
                                    Phieu_Nhap_Kho nk = new Phieu_Nhap_Kho();

                                    nk.Ma_phieu_nhap = phieunhap.Ma_phieu_nhap;
                                    nk.ID_phieu_nhap = int.Parse(temp.Rows[0]["ID_phieu_nhap"].ToString());

                                    nk.Cong_trinh = phieunhap.Cong_trinh;
                                    nk.Da_phan_kho = phieunhap.Da_phan_kho;
                                    nk.Dia_Chi = phieunhap.Dia_chi;
                                    nk.ID_Loai_Phieu_Nhap = phieunhap.ID_Loai_Phieu_Nhap;
                                    nk.Kho_nhan = phieunhap.Kho_nhan;
                                    nk.ID_kho = phieunhap.ID_khoNhan;
                                    nk.Kho_xuat_ra = phieunhap.Kho_xuat_ra;
                                  //  nk.isKNTN = phieunhap.isTraNo;
                                    nk.isToTrinh = phieunhap.isToTrinh;
                                    nk.Ly_do = phieunhap.Ly_do;
                                    nk.Ngay_lap = phieunhap.Ngay_lap;
                                    nk.So_hoa_don = phieunhap.So_hoa_don;
                                    nk.isKNMN = phieunhap.isKNMN;
                                    nk.isKNTN = phieunhap.isKNTN;
                                    nk.isKCTN = phieunhap.isKCTN;
                                    nk.isKCMN = phieunhap.isKCMN;
                                    nk.isNVMN = phieunhap.isNVMN;

                                    nk.isNhapNgoai = true;

                                    if (phieunhap.Update(nk) == 1)
                                    {

                                        clsChi_Tiet_Phieu_Nhap_Vat_Tu pn = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();
                                        pn.Ma_phieu_nhap = phieunhap.Ma_phieu_nhap;

                                        pn.remove(pn.Ma_phieu_nhap);
                                        for (int i = 0; i < dataTable1.Rows.Count; i++)
                                        {

                                            clsChi_Tiet_Phieu_Nhap_Vat_Tu chitiet = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();
                                            chitiet.Ma_phieu_nhap = (txtMaPhieuNhap.Text);
                                            chitiet.ID_Don_vi_tinh = int.Parse(dataTable1.Rows[i]["ID_Don_vi_tinh"].ToString());
                                            chitiet.Ma_vat_tu = (dataTable1.Rows[i]["Ma_vat_tu"].ToString());
                                            chitiet.ID_Chat_luong = int.Parse(dataTable1.Rows[i]["ID_Chat_luong"].ToString());
                                            chitiet.So_luong_thuc_lanh = decimal.Parse(dataTable1.Rows[i]["so_luong_thuc_lanh"].ToString());
                                            chitiet.Don_gia = decimal.Parse(dataTable1.Rows[i]["Don_gia"].ToString());
                                            chitiet.Thanh_tien = decimal.Parse(dataTable1.Rows[i]["Thanh_tien"].ToString());
                                            chitiet.Da_duyet = false;
                                            chitiet.ID_Chat_luong = int.Parse(cbChatLuong.SelectedValue.ToString());
                                            if (chitiet.Insert(help) == 0)
                                                dbcxtransaction.Rollback();

                                        }

                                        dbcxtransaction.Commit();

                                        PanelButton.ResetClickStatus();

                                        //setInputComponentStatus(true);
                                        enableInputForm();

                                        PanelButton.ResetButton();
                                    }
                                    else
                                        dbcxtransaction.Rollback();
                                }
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
                                dbcxtransaction.Rollback();
                            }
                        }
                        this.ds.LoadData();
                        break;
                    }
                #endregion

            }
        }
        public frmMuonTraNo(enumStatus status, clsPhieuNhapKho phieunhap)
        {
            try
            {
                InitializeComponent();

                InitFormComponent();

                //this.staTus = status;
                PanelButton.setClickStatus((enumButton2)status);

                //if (status == enumStatus.Sua || status == enumStatus.Xoa)
                if (PanelButton.isClickSua() || PanelButton.isClickXoa())
                {
                    this.phieuNhapKho = phieunhap;

                    DataTable chiTietPhieuNhap = (DataTable)new clsChi_Tiet_Phieu_Nhap_Vat_Tu().GetAll(phieunhap.Ma_phieu_nhap);
                    gridMaster.DataSource = chiTietPhieuNhap;
                    //chitiet.get
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
            }
        }
        /// <summary>
        /// To-Do LIST
        /// [ ] Vấn đề 1: Lấy DataTable chi tiết phiếu nhập (by mã phiếu nhập) --> fill vào grid
        /// [ ] Vấn đề 2: Lấy thông tin Phiếu (by Ma Phieu Nhap) --> Check tồn tại --> Set to FRM
        /// [ ] 
        /// [ ] 
        /// [ ] 
        /// </summary>
        /// <param name="Ma_Phieu_Nhap">The ma_ phieu_ nhap.</param>
        private bool setFormData_By_MaPhieuNhap(string Ma_Phieu_Nhap)
        {
            clsPhieuNhapKho PhieuNhap = new clsPhieuNhapKho();

            if (PhieuNhap.CheckTonTaiSoDK(Ma_Phieu_Nhap))
            {
                //fill vào FRM
                DataTable tb = PhieuNhap.GetAll(Ma_Phieu_Nhap);

                //cbKhoNhap.SelectedValue = tb.Rows[0]["ID_kho"].ToString();
                txtMaPhieuNhap.Text = Ma_Phieu_Nhap;
                dtNgayNhap.Text = string.Format("{0:dd/MM/yyyy}", tb.Rows[0]["Ngay_lap"]);

                txtLyDo.Text = tb.Rows[0]["Ly_do"].ToString();
                txtCongTrinh.Text = tb.Rows[0]["cong_trinh"].ToString();
                txtDiaChi.Text = tb.Rows[0]["Dia_chi"].ToString();

                //Fill vào grid
                //DataTable chiTietPhieuNhap = new clsChi_Tiet_Phieu_Nhap_Vat_Tu().GetAll(Ma_Phieu_Nhap);

                //dataTable1 = chiTietPhieuNhap;
                //gridMaster.DataSource = dataTable1;

                //clsChi_Tiet_Phieu_Nhap_Vat_Tu chitiet = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();

                DataTable vChiTiet = (DataTable)new clsChi_Tiet_Phieu_Nhap_Vat_Tu().GetAll(Ma_Phieu_Nhap);

                for (int i = 0; i < vChiTiet.Rows.Count; i++)
                {
                    DataRow dr = dataTable1.NewRow();

                    dr["ma_vat_tu"] = vChiTiet.Rows[i]["ma_vat_tu"].ToString();
                    dr["Ten_vat_tu"] = vChiTiet.Rows[i]["Ten_vat_tu"].ToString();
                    dr["Ten_Don_vi_tinh"] = vChiTiet.Rows[i]["ten_don_vi_tinh"].ToString();
                    dr["ID_Don_vi_tinh"] = vChiTiet.Rows[i]["ID_don_vi_tinh"].ToString();
                    dr["chat_luong"] = vChiTiet.Rows[i]["chat_luong"].ToString();
                    dr["so_luong_yeu_cau"] = vChiTiet.Rows[i]["so_luong_yeu_cau"].ToString();
                    dr["so_luong_thuc_lanh"] = vChiTiet.Rows[i]["so_luong_thuc_lanh"].ToString();
                    dr["don_gia"] = vChiTiet.Rows[i]["don_gia"].ToString();
                    dr["Thanh_tien"] = vChiTiet.Rows[i]["thanh_tien"].ToString(); // int.Parse(vChiTiet.Rows[i]["don_gia"].ToString()) * int.Parse(vChiTiet.Rows[i]["so_luong_thuc_lanh"].ToString());

                    dataTable1.Rows.Add(dr);
                }
                return true;
            }
            else
                return false;
        }
        private bool initEdit()
        {
            try
            {

                clsPhieuNhapKho clsNhap = new clsPhieuNhapKho();

                clsNhap.Ma_phieu_nhap = txtMaPhieuNhap.Text;

                if (clsNhap.CheckTonTaiSoDK(txtMaPhieuNhap.Text) == true)
                {

                    DataTable tb = clsNhap.GetAllPhieuNo(txtMaPhieuNhap.Text.Trim());
                    // dtNgayNhap.Text = tb.Rows[0]["Ngay_nhap"].ToString();
                    dtNgayNhap.CustomFormat = "dd-MM-yyyy";
                    dtNgayNhap.Value = Convert.ToDateTime(tb.Rows[0]["Ngay_lap"].ToString());
                   // dtNgayNhap.Text = string.Format("{0:dd/MM/yyyy}", tb.Rows[0]["Ngay_lap"]);

                    txtLyDo.Text = tb.Rows[0]["Ly_do"].ToString();
                 //   txtXuatTaiKho.Text = tb.Rows[0]["ID_kho"].ToString();
                    txtCongTrinh.Text = tb.Rows[0]["cong_trinh"].ToString();
                    cbKhoNhan.Text = tb.Rows[0]["Ten_kho"].ToString();
                    txtDiaChi.Text = tb.Rows[0]["Dia_chi"].ToString();
                 //   cbLoaiPhieuNhan.SelectedValue = tb.Rows[0]["ID_Loai_Phieu_Nhap"].ToString();
                 //   chbNGD.Checked =bool.Parse( tb.Rows[0]["isGoiDau"].ToString());
                    cbKhoNgoai.Text = tb.Rows[0]["Ten_kho_muon"].ToString();
                    rdoKCMuonNo.Checked =bool.Parse( tb.Rows[0]["isKCMN"].ToString());
                    rdoKCTN.Checked = bool.Parse(tb.Rows[0]["isKCTN"].ToString());
                    rdoKNMN.Checked = bool.Parse(tb.Rows[0]["isKNMN"].ToString());
                    rdoKNTN.Checked = bool.Parse(tb.Rows[0]["isKNTN"].ToString());

                    clsChi_Tiet_Phieu_Nhap_Vat_Tu chitiet = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();
                    DataTable vChiTiet = (DataTable)chitiet.GetAll(txtMaPhieuNhap.Text);
                    for (int i = 0; i < vChiTiet.Rows.Count; i++)
                    {
                        //  dataTable1.Rows[i]["Ma_phieu_nhap"] = vChiTiet.Rows[i]["ma_phieu_nhap"].ToString();

                        DataRow dr = dataTable1.NewRow();
                        //dr["Ma_vat_tu"] = vChiTiet.Rows[i]["ma_phieu_nhap"].ToString();
                        dr["ma_vat_tu"] = vChiTiet.Rows[i]["ma_vat_tu"].ToString();
                        dr["Ten_vat_tu"] = vChiTiet.Rows[i]["Ten_vat_tu"].ToString();
                        //  dr["don_vi_tinh"] = vChiTiet.Rows[i]["don_vi_tinh"].ToString() ;
                        dr["chat_luong"] = vChiTiet.Rows[i]["chat_luong"].ToString();
                        dr["ID_chat_luong"] = vChiTiet.Rows[i]["ID_chat_luong"].ToString();
                        dr["so_luong_thuc_lanh"] = vChiTiet.Rows[i]["so_luong_thuc_lanh"].ToString();
                        dr["don_gia"] = vChiTiet.Rows[i]["don_gia"].ToString();
                        dr["Thanh_tien"] = vChiTiet.Rows[i]["thanh_tien"].ToString();// int.Parse(vChiTiet.Rows[i]["don_gia"].ToString()) * int.Parse(vChiTiet.Rows[i]["so_luong_thuc_lanh"].ToString());
                        dr["Ten_Don_vi_tinh"] = vChiTiet.Rows[i]["ten_don_vi_tinh"].ToString();
                        dr["ID_Don_vi_tinh"] = vChiTiet.Rows[i]["ID_don_vi_tinh"].ToString();

                        dataTable1.Rows.Add(dr);
                    }
                    if (clsChi_Tiet_Phieu_Nhap_Vat_Tu.KTVTChuaDuyet(clsNhap.Ma_phieu_nhap) == true)

                    {
                        //khong cho sua thong tin tren luoi
                        disableInputForm();
                        MessageBox.Show("Phiếu nhập này chứa vật tư đã phân vào kho, không thể chỉnh sữa thông tin.");
                        return false;

                    }

                    //MessageBox.Show("Tồn tại mã phiếu nhập trong csdl");

                    return true;
                }
                else
                {
                    //MessageBox.Show("Chưa Tồn tại mã phiếu nhập trong csdl");

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
            }
            return false;
        }
        private void Xoa()
        {
            DialogResult dialogResult = MessageBox.Show("Bạn có chắc chắn muốn xóa phiếu nhập này không", "Cảnh báo", MessageBoxButtons.YesNo);
            if (dialogResult == DialogResult.Yes)
            {
                // clsChi_Tiet_Phieu_Nhap_Vat_Tu pnvt = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();
                //do something
                Int32 selectedRowCount = gridDanhSachPhieuNhap.CurrentCell.RowIndex;
                string maphieu = (gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Ma_phieu"].Value.ToString());
                clsPhieuNhapKho pnk = new clsPhieuNhapKho();
                if (pnk.Delete(maphieu) == 1)
                {
                    MessageBox.Show("Bạn đã xóa thành công!");
                    LoadData();
                }

            }
        }
        /// <summary>
        /// hàm này tiến hành cập nhật lại CSDL rất lớn liên quang 5000 dòng
        /// 
        /// </summary>
        public void ChuyenDoi()
        {
            DatabaseHelper help = new DatabaseHelper();
            help.ConnectDatabase();
            // insert
            using (var dbcxtransaction = help.ent.Database.BeginTransaction())
            {
                try
                {
                    for (int i = 0; i < tb.Rows.Count - 1; i++)
                    {
                        string Ma_phieu_nhap = tb.Rows[i]["column1"].ToString();
                        DateTime Ngay_lap = DateTime.Parse(tb.Rows[i]["column2"].ToString());
                        string Kho_nhan = tb.Rows[i]["column3"].ToString();
                        string Ly_do = tb.Rows[i]["column4"].ToString();
                        string Ma_vat_tu = tb.Rows[i]["column5"].ToString();
                        string Ten_vat_tu = tb.Rows[i]["column6"].ToString();
                        string Chat_luong = tb.Rows[i]["column7"].ToString();
                        string DVT = tb.Rows[i]["column8"].ToString();
                        string So_luong_thuc_lanh = tb.Rows[i]["column9"].ToString();
                        string Don_gia = tb.Rows[i]["column10"].ToString();
                        string Thanh_tien = tb.Rows[i]["column11"].ToString();
                        clsPhieuNhapKho pnk = new clsPhieuNhapKho();
                        if (pnk.CheckTonTaiSoDK(Ma_phieu_nhap, help) == false)
                        {
                            pnk.Ma_phieu_nhap = Ma_phieu_nhap;
                            pnk.isGoiDau = rdoPhieuGoiDau.Checked;
                            pnk.isCanTru = false;
                            pnk.Ngay_lap = Ngay_lap;
                            pnk.Kho_nhan = Kho_nhan;
                            pnk.Ly_do = Ly_do;
                            clsLoaiPhieuNhap LPN = new clsLoaiPhieuNhap();
                            LPN.Ma_LPN = Loai_PN;
                            pnk.ID_Loai_Phieu_Nhap = LPN.GetFirst(help);
                            pnk.ID_khoNhan = idkho;
                            if ( pnk.Insert(help) == 0)
                            {
                                dbcxtransaction.Rollback();
                                MessageBox.Show("insert thất bại tại dòng !" + i);
                                return;
                            }

                        }

                        clsChi_Tiet_Phieu_Nhap_Vat_Tu ctpn = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();
                        ctpn.Ma_vat_tu = Ma_vat_tu;
                        ctpn.Ma_phieu_nhap = Ma_phieu_nhap;
                        ctpn.ID_Chat_luong = Chat_luong.Contains("mới") ? 1 : 2;
                        //kiểm tra xem vật tư đã có trong csdl chưa nếu chưa thêm vào
                        clsDM_DonViTinh DMDVT = new clsDM_DonViTinh();
                        if (ctpn.CheckTonTaiSoDK(help) == false)
                        {

                            DMDVT.Ten_don_vi_tinh = DVT;
                            if (DMDVT.hasDuplicateRow(help) == false)
                            {
                                //nếu chưa có thì insert dòng mới
                                DMDVT.Insert(help);
                            }
                            //tiến hành insert 5000 dòng dữ liệu từ phiếu nhập
                        }
                        ctpn.ID_Don_vi_tinh = DMDVT.getMATuTen(DVT, help);
                        //kiểm tra mã vật tư đã tồn tại chưa trong CSDL
                        clsDMVatTu vt = new clsDMVatTu();
                        vt.Ma_vat_tu = Ma_vat_tu;
                        vt.Ten_vat_tu = Ten_vat_tu;
                        vt.ID_Don_vi_tinh = ctpn.ID_Don_vi_tinh;
                        if (vt.KiemTraTrungMa(help) == false)
                        {
                            vt.Insert(help);
                        }
                        ctpn.So_luong_thuc_lanh = decimal.Parse(So_luong_thuc_lanh);
                        ctpn.Insert(help);
                        backgroundWorker1.ReportProgress(i);
                    }
                    dbcxtransaction.Commit();
                    backgroundWorker1.ReportProgress(0);
                    MessageBox.Show("Thêm thành công!");
                }
                catch (Exception ex)
                {
                    dbcxtransaction.Rollback();  // Get stack trace for the exception with source file information
                    MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
                    return;

                }

            }
        }
        private void btnCanTru_Click(object sender, EventArgs e)
        {
            Phieu_Nhap_Kho phieunhapno = clsPhieuNhapKho.GetPhieuNhap(cbbPhieuNo.Text);
            if (phieunhapno.Da_phan_kho == false)
            {
                MessageBox.Show("Phiếu nợ này chưa được xác nhận, vui lòng xác nhận phiếu nợ trước khi cấn trừ!");
                return;
            }
            DatabaseHelper help = new DatabaseHelper();
            help.ConnectDatabase();
            using (var dbcxtransaction = help.ent.Database.BeginTransaction())
            {
                try
                {
                    {
                        for (int i = 0; i < dtPhieuNhapNo.Rows.Count; i++)
                        {
                            #region"Tra no"
                            int id_no = int.Parse(dtPhieuNhapNo.Rows[i]["ID_chi_tiet_phieu_nhap_vat_tu"].ToString());
                            decimal soluongno = decimal.Parse(dtPhieuNhapNo.Rows[i]["so_luong_thuc_lanh"].ToString());
                            if (soluongno > 0)
                            {
                                string mavtno = dtPhieuNhapNo.Rows[i]["Ma_vat_tu"].ToString();
                                for (int j = 0; j < dtPhieuNhap.Rows.Count; j++)
                                {
                                    int id_tra = int.Parse(dtPhieuNhap.Rows[j]["ID_chi_tiet_phieu_nhap_vat_tu"].ToString());
                                    string mavt = dtPhieuNhap.Rows[j]["Ma_vat_tu"].ToString();
                                    if (mavt.Equals(mavtno))
                                    {
                                        decimal soluongnhap = decimal.Parse(dtPhieuNhap.Rows[j]["so_luong_thuc_lanh"].ToString());
                                        decimal soluongcantru = soluongnhap - soluongno;
                                        decimal soluongtru = 0;
                                        if (soluongcantru >= 0)
                                        {//trả nợ hết
                                            soluongtru = soluongno;
                                            soluongnhap = soluongnhap - soluongno;
                                            soluongno = 0;

                                        }
                                        else
                                        {
                                            soluongtru = soluongnhap;
                                            // khi số lượng mượn > sl nhập
                                            soluongno = soluongno - soluongnhap;
                                            soluongnhap = 0;
                                        }
                                        //cập nhật lại datatable
                                        dtPhieuNhap.Rows[j]["so_luong_thuc_lanh"] = soluongnhap;
                                        dtPhieuNhapNo.Rows[i]["so_luong_thuc_lanh"] = soluongno;
                                        clsCanTruNoNhapNgoai cantru = new clsCanTruNoNhapNgoai();
                                        cantru.Ma_phieu_nhap = txtMaPhieuNhap.Text;
                                        cantru.Ma_phieu_nhap_no = cbbPhieuNo.Text;
                                        cantru.So_luong_can_tru = soluongtru;
                                        cantru.Id_chat_luong = int.Parse(dtPhieuNhap.Rows[j]["ID_chat_luong"].ToString());
                                        cantru.Ma_vat_tu = mavt;
                                        int iD = cantru.CheckTonTaiSoDK();
                                        if (iD != -1)
                                        {
                                            cantru.ID = iD;
                                            // cập nhật lại số lượng nhập o phieu nhập
                                            Chi_Tiet_Phieu_Nhap_Vat_Tu pn = clsChi_Tiet_Phieu_Nhap_Vat_Tu.getChitiet(id_tra);
                                            pn.So_luong_thuc_lanh = soluongnhap;
                                            Chi_Tiet_Phieu_Nhap_Vat_Tu pnn = clsChi_Tiet_Phieu_Nhap_Vat_Tu.getChitiet(id_no);
                                            //cập nhật lại số lượng nợ của phiếu nợ
                                            pnn.So_luong_thuc_lanh = 0;
                                            if (cantru.Update(help) == 0 || clsChi_Tiet_Phieu_Nhap_Vat_Tu.Update(help, pnn) == 0 || clsChi_Tiet_Phieu_Nhap_Vat_Tu.Update(help, pn) == 0)
                                            {
                                                dbcxtransaction.Rollback();
                                                MessageBox.Show("Thực hiện bù trừ thất bại!");
                                                return;
                                            }
                                            // nếu trùng thì update
                                        }
                                        else
                                        {
                                            //cập nhật số lượng phiếu nợ
                                            Chi_Tiet_Phieu_Nhap_Vat_Tu pnn = clsChi_Tiet_Phieu_Nhap_Vat_Tu.getChitiet(id_no);
                                            pnn.So_luong_thuc_lanh = soluongno;

                                            Chi_Tiet_Phieu_Nhap_Vat_Tu pn = clsChi_Tiet_Phieu_Nhap_Vat_Tu.getChitiet(id_tra);
                                            //cập nhật lại số lượng nợ của phiếu nợ
                                            pn.So_luong_thuc_lanh = soluongnhap;

                                            if (cantru.Insert(help) == 0 || clsChi_Tiet_Phieu_Nhap_Vat_Tu.Update(help, pnn) == 0 ||
                                                clsChi_Tiet_Phieu_Nhap_Vat_Tu.Update(help, pn) == 0

                                                )
                                            {
                                                dbcxtransaction.Rollback();
                                                MessageBox.Show("Thực hiện bù trừ thất bại!");
                                                return;
                                            }
                                        }
                                    }
                                }
                            }
                            #endregion
                        }

                        for (int i = 0; i < dtPhieuNhapNo.Rows.Count; i++)
                        {
                            int id_no = int.Parse(dtPhieuNhapNo.Rows[i]["ID_chi_tiet_phieu_nhap_vat_tu"].ToString());
                            decimal soluongno = decimal.Parse(dtPhieuNhapNo.Rows[i]["so_luong_thuc_lanh"].ToString());
                            if (soluongno > 0)
                            {

                                dbcxtransaction.Commit();
                                return;
                            }
                        }
                        phieunhapno.isDaTraNo = true;
                        clsPhieuNhapKho pnk = new clsPhieuNhapKho();
                        if (pnk.Update(phieunhapno) == 0)
                            dbcxtransaction.Rollback();
                        dbcxtransaction.Commit();
                        MessageBox.Show("Cấn trừ thành công!");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
                    dbcxtransaction.Rollback();
                }
            }
        }
        private void btnLuu_Click(object sender, EventArgs e)
        {
            string maphieu = txtMaPhieuNhap.Text;
            clsPhieuNhapKho pnk = new clsPhieuNhapKho();
            DatabaseHelper help = new DatabaseHelper();
            help.ConnectDatabase();
            using (var dbcxtransaction = help.ent.Database.BeginTransaction())
            {
                Phieu_Nhap_Kho pn = clsPhieuNhapKho.GetPhieuNhap(help, maphieu);
                if (pn.isCanTru == true)
                {
                    pn.isCanTru = false;
                    if (pnk.Update(help, pn) == 1)
                    {
                        dbcxtransaction.Commit();
                        MessageBox.Show("Chuyển đổi thành công trạng thái phiếu! Bây giờ có thể xác nhận phiếu nhập này");
                        dspn.LoadData();

                    }
                    else
                        dbcxtransaction.Rollback();
                }
            }
        }
        private void btnDuyet_Click(object sender, EventArgs e)
        {
            dspn.LoadInitGridMaster();

            string maphieu = txtMaPhieuNhap.Text;
            clsPhieuNhapKho pn = new clsPhieuNhapKho();
            int idphieu = pn.GetIDPhieu(maphieu);
            PhieuNhap pnk = new PhieuNhap();
            pnk.Insert(idphieu);
            dspn.LoadData();
            this.Close();
        }