public int CheckTruNo(string maphieu)
 {
     clsCanTruNoNhapNgoai truno = new clsCanTruNoNhapNgoai();
     return truno.CheckTonTaiSoDK(maphieu);
 }
        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();
                }
            }
        }