/// <summary>
 ///  ///
 ///cap nhat lai trang thai phieu nhap o dong ma phieu va ma vat tu
 ///them 1 dong vao bang chi tiet ton kho 
 ///cap nhat lai ton kho theo dung vat tu co ma vat tu do + them vat tu da nhap vao 
 ///
 /// </summary>
 public void Action()
 {
     clsXuLyDuLieuChung dc = new clsXuLyDuLieuChung();
     DateTime ngayNhap = dtNgayNhap.Value;
     if (dc.InsertTonKho(mavattu, idKho, soluong, maphieu, ngayNhap,id_chatluong) == 1)
     {
         MessageBox.Show("Bạn đã thêm thành công vật tư vào kho ");
         f.init();
         this.Close();
     }
 }
        private void InProgress()
        {
            if (chbChonTatCa.Checked == false)
            {
                try
                {
                    Int32 selectedRowCount = gridDanhSachPhieuNhap.CurrentCell.RowIndex;
                    DataGridViewRow SelectedRow = gridDanhSachPhieuNhap.Rows[selectedRowCount];
                    string mavt = SelectedRow.Cells["Ma_vat_tu"].Value.ToString();
                    string maphieu = SelectedRow.Cells["Ma_phieu_nhap"].Value.ToString();
                    if (cbKhoNhanVatTu.Text == "")
                    {
                        MessageBox.Show("Bạn chưa chọn kho để phân vật tư");
                        return;
                    }

                    //  string soluong = SelectedRow.Cells["So_luong"].Value.ToString();
                    string tenvt = SelectedRow.Cells["Ten_vat_tu"].Value.ToString();
                    string tenkho = cbKhoNhanVatTu.Text;
                    decimal soluong = decimal.Parse(SelectedRow.Cells["So_luong_thuc_lanh"].Value.ToString());
                    //  string mavt = SelectedRow.Cells["Ma_vat_tu"].Value.ToString();
                    int idcl = int.Parse(SelectedRow.Cells["ID_chat_luong"].Value.ToString());
                    frmChiTietNhanVatTu ob = new frmChiTietNhanVatTu(this, maphieu, mavt, idKho, soluong, tenvt, tenkho, idcl);

                    ob.Show(); //show child
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else
            {

                //txtRunning.Visible = true;
                //progressAll.Visible = true;
                DatabaseHelper help = new DatabaseHelper();
                help.ConnectDatabase();
                using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                {

                    for (int i = 0; i < gridDanhSachPhieuNhap.Rows.Count; i++)
                    {
                        string mavt = gridDanhSachPhieuNhap.Rows[i].Cells["Ma_vat_tu"].Value.ToString();
                        string maphieu = gridDanhSachPhieuNhap.Rows[i].Cells["Ma_phieu_nhap"].Value.ToString();

                        string tenvt = gridDanhSachPhieuNhap.Rows[i].Cells["Ten_vat_tu"].Value.ToString();
                       // string tenkho = cbKhoNhanVatTu.Text;
                        decimal soluong = decimal.Parse(gridDanhSachPhieuNhap.Rows[i].Cells["So_luong_thuc_lanh"].Value.ToString());
                        int idcl = int.Parse(gridDanhSachPhieuNhap.Rows[i].Cells["ID_chat_luong"].Value.ToString());

                        clsXuLyDuLieuChung dc = new clsXuLyDuLieuChung();
                        DateTime ngayNhap = DateTime.Now;
                        try
                        {
                            if (dc.InsertTonKho(help, mavt, idKho, soluong, maphieu, ngayNhap, idcl,true) == 0)
                            {
                                dbcxtransaction.Rollback();
                                MessageBox.Show("Thêm thất bại tại dòng " + i);
                                return;
                            }
                        }
                        catch (Exception ex)
                        {
                            dbcxtransaction.Rollback();
                            MessageBox.Show("Thêm thất bại tại dòng " + i);
                            return;
                        }
                        //dbcxtransaction.Commit();
                        backgroundWorker1.ReportProgress(i);

                    }
                    dbcxtransaction.Commit();
                }

            }
        }
        public void XuLy()
        {
            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;
                //}

                //neu phieu nhap la XD thi co cac truong hop sau
                // kiem ttra xem danh sach vat tu trong danh sach phieu nhap la nhap ngoai va no la nhap tu to trinh hoac MN ko ?
                // neu trong to tinh co vat tu trung voi vat tu phieu nhap
                // thi nguoi dung tien hanh chuyen qua man hinh tra no
                DatabaseHelper help = new DatabaseHelper();
                help.ConnectDatabase();

                // lấy tất cả danh sách các vật tư có mã phiếu nhập đó
                DataTable tb = new clsChi_Tiet_Phieu_Nhap_Vat_Tu().GetAll(maphieu);

                //nếu phiếu này là cấn trừ
                //hiển thị form cấn trừ nợ cho vật tư
                // bool? isCanTru = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isCanTru"].Value.ToString());
                try
                {
                    bool? isCanTru = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isCanTru"].Value.ToString());
                    if (isCanTru == true)
                    {
                        MessageBox.Show("Phiếu này đang ở trạng thái chưa bù trừ nợ, vui lòng thực hiện chức năng bù trừ nợ trước! ");
                        return;
                    }
                }
                catch (Exception ex) { }
                try
                {
                    bool? isNhapNgoai = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isNhapNgoai"].Value.ToString());
                    bool? isChoMuonNo = null;
                    try
                    {
                        isChoMuonNo = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isChoMuonNgoai"].Value.ToString());
                    }
                    catch (Exception ex)
                    {

                    }
                    if (isNhapNgoai == true && isChoMuonNo == true)
                    {
                        using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                        {
                            for (int i = 0; i < tb.Rows.Count; i++)
                            {
                                clsXuLyDuLieuChung dc = new clsXuLyDuLieuChung();
                                string mavattu = tb.Rows[i]["ma_vat_tu"].ToString();
                                decimal soluong = decimal.Parse(tb.Rows[i]["so_luong_thuc_lanh"].ToString());
                                int id_chat_luong = int.Parse(tb.Rows[i]["Id_chat_luong"].ToString());
                                DateTime ngayNhap = DateTime.Now;
                                if (dc.InsertTonKho(help, mavattu, idKho, soluong, maphieu, ngayNhap, id_chat_luong, false) == 0)
                                {
                                    dbcxtransaction.Rollback();
                                }

                            }
                            MessageBox.Show("Bạn đã xác nhận thành công ");
                            dbcxtransaction.Commit();
                            LoadData();
                            return;
                        }
                    }
                    else
                        if (isNhapNgoai == true)
                        {
                            using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                            {
                                for (int i = 0; i < tb.Rows.Count; i++)
                                {
                                    clsXuLyDuLieuChung dc = new clsXuLyDuLieuChung();
                                    string mavattu = tb.Rows[i]["ma_vat_tu"].ToString();
                                    decimal soluong = decimal.Parse(tb.Rows[i]["so_luong_thuc_lanh"].ToString());
                                    int id_chat_luong = int.Parse(tb.Rows[i]["Id_chat_luong"].ToString());
                                    DateTime ngayNhap = DateTime.Now;
                                    if (dc.InsertTonKho(help, mavattu, idKho, soluong, maphieu, ngayNhap, id_chat_luong, true) == 0)
                                    {
                                        dbcxtransaction.Rollback();
                                    }

                                }
                                MessageBox.Show("Bạn đã xác nhận thành công ");
                                dbcxtransaction.Commit();
                                LoadData();
                            }
                            return;
                        }
                }
                catch (Exception ex) { }

                int? ID_loai_phieu_nhap = int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_loai_phieu_nhap"].Value.ToString());
                clsLoaiPhieuNhap LPN = new clsLoaiPhieuNhap();
                LPN.ID_LPN = (int)ID_loai_phieu_nhap;
                string TenLPN = LPN.getTenLPN((int)ID_loai_phieu_nhap);
                using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                {
                    for (int i = 0; i < tb.Rows.Count; i++)
                    {
                        //duyệt qua từng dòng insert chi tiết phiếu nhập vào
                        clsXuLyDuLieuChung dc = new clsXuLyDuLieuChung();
                        string mavattu = tb.Rows[i]["ma_vat_tu"].ToString();
                        // số lượng hoàn nhập hay số lượng lãnh vật tư tùy vào ID loai phieu
                        decimal soluong = decimal.Parse(tb.Rows[i]["so_luong_thuc_lanh"].ToString());
                        int id_chat_luong = int.Parse(tb.Rows[i]["Id_chat_luong"].ToString());
                        DateTime ngayNhap = DateTime.Now;
                        try
                        {
                            bool isGoiDau = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isGoiDau"].Value.ToString());
                            if (isGoiDau == true)
                            {
                                clsVatTuGoiDauKy gdk = new clsVatTuGoiDauKy();
                                gdk.ID_chat_luong = id_chat_luong;
                                gdk.Ma_vat_tu = mavattu;
                                gdk.So_Luong = soluong;
                                gdk.ID_kho = idKho;
                                if (gdk.CheckTonTaiSoDK() == true)
                                {
                                    //nếu có cập nhật lại gối đầu
                                    DataTable temp = gdk.GetAll();
                                    decimal sl = decimal.Parse(temp.Rows[0]["So_luong"].ToString());
                                    gdk.ID_VT_Goi_Dau = int.Parse(temp.Rows[0]["ID_VT_Goi_Dau"].ToString());
                                    gdk.So_Luong = gdk.So_Luong + sl;
                                    gdk.Update();
                                }
                                //nếu chưa tồn tại tiến hành insert dòng mới
                                else

                                    if (gdk.Insert() == 0)
                                    {
                                        MessageBox.Show("Đã có lỗi xãy ra !");
                                        return;
                                    }

                            }
                            // nếu mã phiếu hoàn nhập thì trừ trong gói đầu nếu có phiếu hoàn nhập mà chưa có gói đầu thì vô lý
                            if (TenLPN.Contains("T"))
                            {
                                clsVatTuGoiDauKy gdk = new clsVatTuGoiDauKy();

                                gdk.ID_chat_luong = id_chat_luong;
                                gdk.Ma_vat_tu = mavattu;

                                gdk.ID_kho = idKho;
                                DataTable temp = gdk.GetAll();
                                //số lượng gối đầu
                                if (temp.Rows.Count == 0)//chưa có
                                {
                                    MessageBox.Show("Vật tư này chưa có trong danh sách vật tư gối đầu, không thể hoàn nhập được");
                                    return;
                                }
                                decimal soluonght = decimal.Parse(temp.Rows[0]["So_luong"].ToString());
                                soluonght = soluonght - soluong;
                                gdk.So_Luong = soluonght;
                                gdk.ID_VT_Goi_Dau = int.Parse(temp.Rows[0]["ID_VT_Goi_Dau"].ToString());
                                if (gdk.Update() == 0)
                                {
                                    MessageBox.Show("Đã có lỗi xãy ra trong quá trình cập nhật số lượng đầu kỳ!");
                                    return;
                                }
                                //sau đó trừ vào kho, thẻ kho

                                //    MessageBox.Show("Hoàn nhập thành công!");
                                //    return;

                            }
                        }
                        catch (Exception ex) { }

                        if (TenLPN.Contains("X") == true)
                        {

                            if (dc.InsertTonKho(help, mavattu, idKho, soluong, maphieu, ngayNhap, id_chat_luong, true) == 0)
                            {
                                dbcxtransaction.Rollback();
                            }

                        }
                        else
                        {
                            //CO MA PHIEU TD

                            //PHIEU TRU KHO
                            if (dc.InsertTonKho(help, mavattu, idKho, soluong, maphieu, ngayNhap, id_chat_luong, false) == 0)
                            {
                                dbcxtransaction.Rollback();
                            }

                        }
                    }
                    dbcxtransaction.Commit();
                    MessageBox.Show("Bạn đã thêm thành công !");
                }

                LoadData();

            }
            catch (Exception ex)
            {
                MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
            }
        }