private void cmdXoaPhieuNhap_Click(object sender, EventArgs e)
        {
            Utility.SetMsg(uiStatusBar2.Panels["MSG"], "",false);
            if (!IsValid4UpdateDeleteXoa()) return;
            int IDPhieuNhap = Utility.Int32Dbnull(grdList.GetValue(TPhieutrathuocKholeVekhochan.Columns.IdPhieu), -1);
            if (Utility.AcceptQuestion(string.Format("Bạn có muốn xóa phiếu trả thuốc đang chọn hay không?", IDPhieuNhap), "Thông báo", true))
            {

                ActionResult actionResult = new PhieuTraLai().XoaPhieuNhapTraKho(IDPhieuNhap);
                switch (actionResult)
                {
                    case ActionResult.Success:
                        grdList.CurrentRow.Delete();
                        grdList.UpdateData();
                        m_dtDataNhapTraKho.AcceptChanges();
                        Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Xóa phiếu trả thuốc thành công", false);
                        break;
                    case ActionResult.Error:
                        break;
                }

            }
            ModifyCommand();
        }
        /// <summary>
        /// hàm thực hiện việc xác nhạn thông tin 
        /// trừ vào kho khi xác nhận
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdXacNhan_Click(object sender, EventArgs e)
        {
            try
            {
                cmdXacNhan.Enabled = false;
                Utility.SetMsg(uiStatusBar2.Panels["MSG"], "", false);
                if (Utility.AcceptQuestion("Bạn có muốn xác nhận phieus trả thuốc từ kho lẻ về kho chẵn?\nSau khi trả, thuốc sẽ bị trừ khỏi kho lẻ(kho xuất) và cộng vào kho chẵn(kho nhập)", "Thông báo", true))
                {
                    int IDPhieuNhap = Utility.Int32Dbnull(grdList.GetValue(TPhieutrathuocKholeVekhochan.Columns.IdPhieu), -1);
                    TPhieutrathuocKholeVekhochan objDPhieuNhap = TPhieutrathuocKholeVekhochan.FetchByID(IDPhieuNhap);
                    if (objDPhieuNhap != null)
                    {
                        DateTime _ngayxacnhan = globalVariables.SysDate;
                        if (THU_VIEN_CHUNG.Laygiatrithamsohethong("THUOC_HIENTHI_NGAYXACNHAN", "0", false) == "1")
                        {
                            frm_ChonngayXacnhan _ChonngayXacnhan = new frm_ChonngayXacnhan();
                            _ChonngayXacnhan.pdt_InputDate = objDPhieuNhap.NgayTra.Value;
                            _ChonngayXacnhan.ShowDialog();
                            if (_ChonngayXacnhan.b_Cancel)
                                return;
                            else
                                _ngayxacnhan = _ChonngayXacnhan.pdt_InputDate;
                        }
                        ActionResult actionResult =
                            new PhieuTraLai().XacNhanTraLaiKhoLeVeKhoChan(objDPhieuNhap, _ngayxacnhan);
                        switch (actionResult)
                        {
                            case ActionResult.Success:
                                Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Trả thuốc từ kho lẻ về kho chẵn thành công", false);
                                grdList.CurrentRow.BeginEdit();
                                grdList.CurrentRow.Cells[TPhieutrathuocKholeVekhochan.Columns.TrangThai].Value = 1;
                                grdList.CurrentRow.Cells[TPhieutrathuocKholeVekhochan.Columns.NgayXacnhan].Value = _ngayxacnhan;
                                grdList.CurrentRow.Cells[TPhieutrathuocKholeVekhochan.Columns.NguoiXacnhan].Value = globalVariables.UserName;
                                grdList.CurrentRow.EndEdit();
                                break;
                            case ActionResult.Error:
                                break;
                        }
                    }
                }

            }
            catch (Exception)
            {
            }
            finally
            {
                ModifyCommand();
            }
        }
        private void UpdatePhieuXuatKho()
        {
            TPhieutrathuocKholeVekhochan objPhieuNhap = CreatePhieuNhapKho();

            ActionResult actionResult = new PhieuTraLai().UpdatePhieuTraLaiKho(objPhieuNhap, CreateArrPhieuChiTiet());
            switch (actionResult)
            {
                case ActionResult.Success:
                    TPhieutrathuocKholeVekhochan objDPhieuNhap = TPhieutrathuocKholeVekhochan.FetchByID(Utility.Int32Dbnull(txtIDPhieuNhapKho.Text));
                    DataRow[] arrDr =
                        p_dtPhieuNhapTra.Select(string.Format("{0}={1}", TPhieutrathuocKholeVekhochan.Columns.IdPhieu,
                                                                 Utility.Int32Dbnull(txtIDPhieuNhapKho.Text)));
                    if (arrDr.GetLength(0) > 0)
                    {
                        arrDr[0].Delete();
                    }
                    DataRow newDr = p_dtPhieuNhapTra.NewRow();
                    Utility.FromObjectToDatarow(objDPhieuNhap, ref newDr);
                    TDmucKho objKho = TDmucKho.FetchByID(Utility.Int32Dbnull(cboKhoLinh.SelectedValue, -1));
                    if (objKho != null)
                        newDr["ten_khonhap"] = Utility.sDbnull(objKho.TenKho);
                    objKho = TDmucKho.FetchByID(Utility.Int32Dbnull(cboKhoTra.SelectedValue, -1));
                    if (objKho != null)
                        newDr["ten_khoxuat"] = Utility.sDbnull(objKho.TenKho);
                    p_dtPhieuNhapTra.Rows.Add(newDr);
                    Utility.GonewRowJanus(grdList, TPhieutrathuocKholeVekhochan.Columns.IdPhieu, Utility.sDbnull(txtIDPhieuNhapKho.Text));
                    Utility.ShowMsg("Bạn sửa  phiếu thành công", "Thông báo");
                    em_Action = action.Insert;
                    this.Close();
                    b_Cancel = true;
                    break;
                case ActionResult.Error:
                    Utility.ShowMsg("Lỗi trong quá trình sửa phiếu", "Thông báo lỗi", MessageBoxIcon.Error);
                    break;
            }
        }
        private void cmdHuyTralai_Click(object sender, EventArgs e)
        {
            try
            {
                cmdHuyTralai.Enabled = false;
                Utility.SetMsg(uiStatusBar2.Panels["MSG"], "", false);
                if (Utility.AcceptQuestion("Bạn có muốn hủy trả thuốc từ kho lẻ về kho chẵn?\nSau khi hủy, thuốc được cộng lại kho lẻ(kho xuất) và trừ khỏi kho chẵn(kho nhập)?", "Thông báo", true))
                {
                    int IDPhieuNhaptra = Utility.Int32Dbnull(grdList.GetValue(TPhieutrathuocKholeVekhochan.Columns.IdPhieu), -1);
                    TPhieutrathuocKholeVekhochan objTPhieutrathuocKholeVekhochan = TPhieutrathuocKholeVekhochan.FetchByID(IDPhieuNhaptra);
                    if (objTPhieutrathuocKholeVekhochan != null)
                    {
                        ActionResult actionResult =
                            new PhieuTraLai().HuyXacNhanPhieuTralaiKho(objTPhieutrathuocKholeVekhochan);
                        switch (actionResult)
                        {
                            case ActionResult.Success:
                                Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Hủy trả thuốc từ kho lẻ về kho chẵn thành công", false);
                                grdList.CurrentRow.BeginEdit();
                                grdList.CurrentRow.Cells[TPhieutrathuocKholeVekhochan.Columns.TrangThai].Value = 0;
                                grdList.CurrentRow.Cells[TPhieutrathuocKholeVekhochan.Columns.NgayXacnhan].Value = DBNull.Value;
                                grdList.CurrentRow.Cells[TPhieutrathuocKholeVekhochan.Columns.NguoiXacnhan].Value = DBNull.Value;
                                grdList.CurrentRow.EndEdit();
                                break;
                            case ActionResult.Exceed:
                                Utility.ShowMsg("Thuốc trong kho nhận đã được sử dụng hết nên bạn không thể hủy phiếu trả", "Thông báo lỗi", MessageBoxIcon.Error);
                                break;
                            case ActionResult.NotEnoughDrugInStock:
                                Utility.ShowMsg("Thuốc trong kho nhận(chẵn) đã được sử dụng nên không đủ số lượng để hoàn trả lại kho xuất(lẻ)", "Thông báo lỗi", MessageBoxIcon.Error);
                                break;
                            case ActionResult.Error:
                                break;
                        }
                    }

                }

            }
            catch (Exception)
            {
            }
            finally
            {
                ModifyCommand();
            }
        }
        /// <summary>
        /// hàm thực hiện việc thêm phiếu nhập kho thuốc
        /// </summary>
        private void ThemPhieuXuatKho()
        {
            TPhieutrathuocKholeVekhochan objPhieuNhap = CreatePhieuNhapKho();

            ActionResult actionResult = new PhieuTraLai().ThemPhieuTraLaiKho
                (objPhieuNhap, CreateArrPhieuChiTiet());
            switch (actionResult)
            {
                case ActionResult.Success:
                    txtIDPhieuNhapKho.Text = Utility.sDbnull(objPhieuNhap.IdPhieu);
                    txtMaPhieu.Text = Utility.sDbnull(objPhieuNhap.MaPhieu);
                    TPhieutrathuocKholeVekhochan objDPhieuNhap = TPhieutrathuocKholeVekhochan.FetchByID(Utility.Int32Dbnull(txtIDPhieuNhapKho.Text));
                    DataRow newDr = p_dtPhieuNhapTra.NewRow();
                    Utility.FromObjectToDatarow(objDPhieuNhap, ref newDr);
                    TDmucKho objKho = TDmucKho.FetchByID(Utility.Int32Dbnull(cboKhoLinh.SelectedValue, -1));
                    if (objKho != null)
                        newDr["ten_khonhap"] = Utility.sDbnull(objKho.TenKho);
                    objKho = TDmucKho.FetchByID(Utility.Int32Dbnull(cboKhoTra.SelectedValue, -1));
                    if (objKho != null)
                        newDr["ten_khoxuat"] = Utility.sDbnull(objKho.TenKho);
                    DmucNhanvien objStaff = DmucNhanvien.FetchByID(Utility.Int32Dbnull(cboNhanVien.SelectedValue));
                    if(objStaff!=null)
                    {
                        newDr["ten_nhanvien"] = Utility.sDbnull(objStaff.TenNhanvien);
                    }
                    p_dtPhieuNhapTra.Rows.Add(newDr);
                    grdList.UpdateData();
                    //Utility.ShowMsg("Bạn thêm mới phiếu thành công", "Thông báo");
                    Utility.GonewRowJanus(grdList, TPhieutrathuocKholeVekhochan.Columns.IdPhieu, Utility.sDbnull(txtIDPhieuNhapKho.Text));
                    em_Action = action.Insert;
                    b_Cancel = true;
                    this.Close();
                    break;
                case ActionResult.Error:
                    Utility.ShowMsg("Lỗi trong quá trình thêm phiếu", "Thông báo lỗi", MessageBoxIcon.Error);
                    break;
            }
        }