Example #1
0
        /// <summary>
        /// hàm thực hiện việc thêm phiếu nhập kho thuốc
        /// </summary>
        private void ThemPhieuthanhly()
        {
            TPhieuNhapxuatthuoc objPhieuNhap = CreatePhieuNhapKho();

            ActionResult actionResult = new XuatThuoc().ThemPhieuXuatKho(objPhieuNhap, CreateArrPhieuChiTiet());

            switch (actionResult)
            {
            case ActionResult.Success:
                txtIDPhieuNhapKho.Text = Utility.sDbnull(objPhieuNhap.IdPhieu);
                txtMaPhieu.Text        = Utility.sDbnull(objPhieuNhap.MaPhieu);
                TPhieuNhapxuatthuoc objPhieu = TPhieuNhapxuatthuoc.FetchByID(Utility.Int32Dbnull(txtIDPhieuNhapKho.Text));
                DataRow             newDr    = p_mDataPhieuNhapKho.NewRow();
                Utility.FromObjectToDatarow(objPhieu, ref newDr);
                TDmucKho objKho = TDmucKho.FetchByID(Utility.Int32Dbnull(cboKhohuy.SelectedValue, -1));
                if (objKho != null)
                {
                    newDr["ten_khoxuat"] = Utility.sDbnull(objKho.TenKho);
                }
                p_mDataPhieuNhapKho.Rows.Add(newDr);
                Utility.GonewRowJanus(grdList, TPhieuNhapxuatthuoc.Columns.IdPhieu, Utility.sDbnull(txtIDPhieuNhapKho.Text));
                //Utility.ShowMsg("Bạn thêm mới phiếu chuyển kho thành công", "Thông báo");
                m_enAction = 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;
            }
        }
        private void cmdHuychuyenkho_Click(object sender, EventArgs e)
        {
            try
            {
                cmdHuychuyenkho.Enabled = false;
                Utility.SetMsg(uiStatusBar2.Panels["MSG"], "", false);
                if (Utility.AcceptQuestion("Bạn có chắc chắn muốn hủy xác nhận phiếu chuyển kho đang chọn hay không?", "Thông báo", true))
                {
                    int    IdPhieu = Utility.Int32Dbnull(grdList.GetValue(TPhieuNhapxuatthuoc.Columns.IdPhieu), -1);
                    string khoxuat = Utility.sDbnull(grdList.CurrentRow.Cells["ten_khoxuat"].Value, "");
                    string khonhap = Utility.sDbnull(grdList.CurrentRow.Cells["ten_khonhap"].Value, "");
                    TPhieuNhapxuatthuoc objTPhieuNhapxuatthuoc = TPhieuNhapxuatthuoc.FetchByID(IdPhieu);
                    if (objTPhieuNhapxuatthuoc != null)
                    {
                        if (Utility.ByteDbnull(objTPhieuNhapxuatthuoc.TrangThai, 0) == 0)
                        {
                            return;
                        }
                        string       errMsg       = "";
                        ActionResult actionResult =
                            new XuatThuoc().HuyXacNhanPhieuXuatKho(objTPhieuNhapxuatthuoc, ref errMsg);
                        switch (actionResult)
                        {
                        case ActionResult.Success:
                            Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Bạn thực hiện hủy xác nhận phiếu chuyển kho thành công", false);
                            grdList.CurrentRow.BeginEdit();
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.TrangThai].Value    = 0;
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NgayXacnhan].Value  = DBNull.Value;
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NguoiXacnhan].Value = DBNull.Value;
                            grdList.CurrentRow.EndEdit();
                            THU_VIEN_CHUNG.Log(this.Name, globalVariables.UserName,
                                               string.Format(
                                                   "Xóa phiếu chuyển kho với số phiếu là :{0} - Từ kho {1} đến kho {2}",
                                                   id_PhieuNhap, khoxuat, khonhap), action.Update);
                            break;

                        case ActionResult.Exceed:
                            Utility.ShowMsg("" + ten_kieuthuoc_vt + " nhập từ phiếu này đã được sử dụng hết nên bạn không thể hủy xác nhận phiếu\n" + errMsg, "Thông báo lỗi", MessageBoxIcon.Error);
                            break;

                        case ActionResult.NotEnoughDrugInStock:
                            Utility.ShowMsg("" + ten_kieuthuoc_vt + " nhập từ phiếu này đã gần hết nên bạn không thể hủy xác nhận phiếu\n" + errMsg, "Thông báo lỗi", MessageBoxIcon.Error);
                            break;

                        case ActionResult.Error:
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utility.CatchException(ex);
            }
            finally
            {
                ModifyCommand();
            }
        }
Example #3
0
        /// <summary>
        /// hàm thực hiện việc cho phép chuyển thông tin xác nhận vào kho
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdNhapKho_Click(object sender, EventArgs e)
        {
            try
            {
                cmdNhapKho.Enabled = false;
                int IdPhieu = Utility.Int32Dbnull(grdList.GetValue(TPhieuNhapxuatthuoc.Columns.IdPhieu), -1);
                TPhieuNhapxuatthuoc objTPhieuNhapxuatthuoc = TPhieuNhapxuatthuoc.FetchByID(IdPhieu);
                if (objTPhieuNhapxuatthuoc != null)
                {
                    if (Utility.ByteDbnull(objTPhieuNhapxuatthuoc.TrangThai, 0) == 1)
                    {
                        return;
                    }
                    string   errMsg       = "";
                    DateTime _ngayxacnhan = globalVariables.SysDate;
                    if (THU_VIEN_CHUNG.Laygiatrithamsohethong("THUOC_HIENTHI_NGAYXACNHAN", "0", false) == "1")
                    {
                        frm_ChonngayXacnhan _ChonngayXacnhan = new frm_ChonngayXacnhan();
                        _ChonngayXacnhan.pdt_InputDate = objTPhieuNhapxuatthuoc.NgayHoadon;
                        _ChonngayXacnhan.ShowDialog();
                        if (_ChonngayXacnhan.b_Cancel)
                        {
                            return;
                        }
                        else
                        {
                            _ngayxacnhan = _ChonngayXacnhan.pdt_InputDate;
                        }
                    }
                    ActionResult actionResult =
                        new XuatThuoc().XacNhanPhieuHuy_thanhly_thuoc(objTPhieuNhapxuatthuoc, _ngayxacnhan, ref errMsg);
                    switch (actionResult)
                    {
                    case ActionResult.Success:
                        Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Xác nhận phiếu trả nhà cung cấp thành công", false);
                        grdList.CurrentRow.BeginEdit();
                        grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.TrangThai].Value    = 1;
                        grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NgayXacnhan].Value  = globalVariables.SysDate;
                        grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NguoiXacnhan].Value = globalVariables.UserName;
                        grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.TrangThai].Value    = 1;
                        grdList.CurrentRow.EndEdit();
                        break;

                    case ActionResult.Error:
                        Utility.ShowMsg("Lỗi khi xác nhận phiếu trả nhà cung cấp", "Thông báo lỗi", MessageBoxIcon.Error);
                        break;
                    }
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                ModifyCommand();
            }
        }
Example #4
0
        private void cmdHuychuyenkho_Click(object sender, EventArgs e)
        {
            try
            {
                cmdHuychuyenkho.Enabled = false;
                if (Utility.AcceptQuestion("Bạn có muốn hủy xác nhận phiếu trả nhà cung cấp đang chọn hay không?", "Thông báo", true))
                {
                    int IdPhieu = Utility.Int32Dbnull(grdList.GetValue(TPhieuNhapxuatthuoc.Columns.IdPhieu), -1);
                    TPhieuNhapxuatthuoc objTPhieuNhapxuatthuoc = TPhieuNhapxuatthuoc.FetchByID(IdPhieu);
                    if (objTPhieuNhapxuatthuoc != null)
                    {
                        if (Utility.ByteDbnull(objTPhieuNhapxuatthuoc.TrangThai, 0) == 0)
                        {
                            return;
                        }
                        string       ErrMsg       = "";
                        ActionResult actionResult =
                            new XuatThuoc().HuyXacNhanPhieuHuy_thanhly_Thuoc(objTPhieuNhapxuatthuoc, ref ErrMsg);
                        switch (actionResult)
                        {
                        case ActionResult.Success:
                            Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Hủy xác nhận phiếu trả thuốc thành công", false);
                            grdList.CurrentRow.BeginEdit();
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.TrangThai].Value    = 0;
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NgayXacnhan].Value  = DBNull.Value;
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NguoiXacnhan].Value = DBNull.Value;
                            grdList.CurrentRow.EndEdit();
                            break;

                        case ActionResult.Exceed:
                            Utility.ShowMsg("Thuốc nhập từ phiếu này đã đượ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 nhập từ phiếu này đã gần 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.Error:
                            Utility.ShowMsg("Lỗi trong quá trình hủy phiếu trả nhà cung cấp", "Thông báo lỗi", MessageBoxIcon.Error);
                            break;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                ModifyCommand();
            }
        }
Example #5
0
        /// <summary>
        /// hàm thực hiện việc hủy thông tin đơn thuốc
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdHuyDonThuoc_Click(object sender, EventArgs e)
        {
            if (Utility.AcceptQuestion("Bạn có muốn thực hiện hủy phát thuốc cho bệnh nhân \n Dữ liệu hủy sẽ được trả lại kho phát thuốc", "Thông báo", true))
            {
                if (!InValiHuyDonthuoc())
                {
                    return;
                }

                frm_NhaplydoHuy _NhaplydoHuy = new frm_NhaplydoHuy("LYDOHUYXACNHAN", "HỦY XÁC NHẬN ĐƠN THUỐC", "Chọn lý do hủy xác nhận trước khi thực hiện...", "Lý do hủy", "Ngày hủy");
                _NhaplydoHuy.ShowDialog();
                if (!_NhaplydoHuy.m_blnCancel)
                {
                    int   Pres_ID = Utility.Int32Dbnull(grdPres.GetValue(KcbDonthuoc.Columns.IdDonthuoc), -1);
                    Int16 stockID = Utility.Int16Dbnull(_mDtDataPresDetail.Rows[0][KcbDonthuocChitiet.Columns.IdKho]);
                    dtNgayPhatThuoc.Value = globalVariables.SysDate;
                    try
                    {
                        ActionResult actionResult =
                            new XuatThuoc().HuyXacNhanDonThuocBN(Pres_ID, stockID, _NhaplydoHuy.ngay_thuchien, _NhaplydoHuy.ten);
                        switch (actionResult)
                        {
                        case ActionResult.DataUsed:
                            Utility.ShowMsg("Một trong các thuốc bạn chọn đã được sử dụng nên bạn không thể thực hiện hủy xác nhận", "thông báo", MessageBoxIcon.Information);
                            break;

                        case ActionResult.Success:
                            UpdateHuyHasConfirm();
                            THU_VIEN_CHUNG.Log(this.Name, globalVariables.UserName,
                                               string.Format(
                                                   "Hủy phát thuốc của bệnh nhân có mã lần khám {0} và mã bệnh nhân là: {1}. Đơn thuốc {2} bởi {3}",
                                                   Utility.sDbnull(grdPres.CurrentRow.Cells["ma_luotkham"].Value),
                                                   Utility.sDbnull(grdPres.CurrentRow.Cells["id_benhnhan"].Value),
                                                   Utility.sDbnull(grdPres.CurrentRow.Cells["id_donthuoc"].Value),
                                                   globalVariables.UserName), action.Delete);
                            Utility.ShowMsg("Bạn thực hiện việc hủy phát thuốc thành công", "thông báo", MessageBoxIcon.Information);
                            break;

                        case ActionResult.Error:
                            Utility.ShowMsg("Lỗi trong quá trình hủy phát thuốc cho bệnh nhân", "Thông báo", MessageBoxIcon.Error);
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        Utility.ShowMsg("Lỗi trong quá trình hủy đơn thuốc" + ex.Message);
                    }
                }
            }
        }
        private void cmdHuychuyenkho_Click(object sender, EventArgs e)
        {
            try
            {
                cmdHuychuyenkho.Enabled = false;
                Utility.SetMsg(uiStatusBar2.Panels["MSG"], "", false);
                if (Utility.AcceptQuestion("Bạn có chắc chắn muốn hủy xác nhận phiếu chuyển kho đang chọn hay không?", "Thông báo", true))
                {
                    int IdPhieu = Utility.Int32Dbnull(grdList.GetValue(TPhieuNhapxuatthuoc.Columns.IdPhieu), -1);
                    TPhieuNhapxuatthuoc objTPhieuNhapxuatthuoc = TPhieuNhapxuatthuoc.FetchByID(IdPhieu);
                    if (objTPhieuNhapxuatthuoc != null)
                    {
                        string       errMsg       = "";
                        ActionResult actionResult =
                            new XuatThuoc().HuyXacNhanPhieuXuatKho(objTPhieuNhapxuatthuoc, ref errMsg);
                        switch (actionResult)
                        {
                        case ActionResult.Success:
                            Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Bạn thực hiện hủy xác nhận phiếu chuyển kho thành công", false);
                            grdList.CurrentRow.BeginEdit();
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.TrangThai].Value    = 0;
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NgayXacnhan].Value  = DBNull.Value;
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NguoiXacnhan].Value = DBNull.Value;
                            grdList.CurrentRow.EndEdit();
                            break;

                        case ActionResult.Exceed:
                            Utility.ShowMsg("" + ten_kieuthuoc_vt + " nhập từ phiếu này đã được sử dụng hết nên bạn không thể hủy xác nhận phiếu\n" + errMsg, "Thông báo lỗi", MessageBoxIcon.Error);
                            break;

                        case ActionResult.NotEnoughDrugInStock:
                            Utility.ShowMsg("" + ten_kieuthuoc_vt + " nhập từ phiếu này đã gần hết nên bạn không thể hủy xác nhận phiếu\n" + errMsg, "Thông báo lỗi", MessageBoxIcon.Error);
                            break;

                        case ActionResult.Error:
                            break;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                ModifyCommand();
            }
        }
        private void UpdatePhieuXuatKho()
        {
            TPhieuNhapxuatthuoc objPhieuNhap = CreatePhieuNhapKho();

            ActionResult actionResult = new XuatThuoc().UpdatePhieuXuatKho(objPhieuNhap, CreateArrPhieuChiTiet());

            switch (actionResult)
            {
            case ActionResult.Success:
                TPhieuNhapxuatthuoc objTPhieuNhapxuatthuoc = TPhieuNhapxuatthuoc.FetchByID(Utility.Int32Dbnull(txtIDPhieuNhapKho.Text));
                DataRow[]           arrDr =
                    p_mDataPhieuNhapKho.Select(string.Format("{0}={1}", TPhieuNhapxuatthuoc.Columns.IdPhieu,
                                                             Utility.Int32Dbnull(txtIDPhieuNhapKho.Text)));
                if (arrDr.GetLength(0) > 0)
                {
                    arrDr[0].Delete();
                }
                DataRow newDr = p_mDataPhieuNhapKho.NewRow();
                Utility.FromObjectToDatarow(objTPhieuNhapxuatthuoc, ref newDr);
                TDmucKho objKho = TDmucKho.FetchByID(Utility.Int32Dbnull(cboKhoNhap.SelectedValue, -1));
                if (objKho != null)
                {
                    newDr["TEN_KHO_NHAP"] = Utility.sDbnull(objKho.TenKho);
                }
                objKho = TDmucKho.FetchByID(Utility.Int32Dbnull(cboKhoXuat.SelectedValue, -1));
                if (objKho != null)
                {
                    newDr["TEN_KHO_XUAT"] = Utility.sDbnull(objKho.TenKho);
                }
                newDr["ID_KHOA_LINH"] = Utility.Int16Dbnull(cboKhoaTra.SelectedValue, 0);
                newDr["TEN_KHOA"]     = cboKhoaTra.Text;
                p_mDataPhieuNhapKho.Rows.Add(newDr);

                Utility.GonewRowJanus(grdList, TPhieuNhapxuatthuoc.Columns.IdPhieu, Utility.sDbnull(txtIDPhieuNhapKho.Text));
                Utility.ShowMsg("Bạn sửa  phiếu trả thành công", "Thông báo");
                m_enAction = action.Insert;

                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;
            }
        }
Example #8
0
        private void cmdHuychuyenkho_Click(object sender, EventArgs e)
        {
            try
            {
                cmdHuychuyenkho.Enabled = false;
                Utility.SetMsg(uiStatusBar2.Panels["MSG"], "", false);
                if (Utility.AcceptQuestion("Bạn có muốn hủy xác nhận phiếu thanh lý thuốc đang chọn này không?", "Thông báo", true))
                {
                    int IdPhieu = Utility.Int32Dbnull(grdList.GetValue(TPhieuNhapxuatthuoc.Columns.IdPhieu), -1);
                    TPhieuNhapxuatthuoc objTPhieuNhapxuatthuoc = TPhieuNhapxuatthuoc.FetchByID(IdPhieu);
                    if (objTPhieuNhapxuatthuoc != null)
                    {
                        if (Utility.ByteDbnull(objTPhieuNhapxuatthuoc.TrangThai, 0) == 0)
                        {
                            return;
                        }
                        string       errMsg       = "";
                        ActionResult actionResult =
                            new XuatThuoc().HuyXacNhanPhieuHuy_thanhly_Thuoc(objTPhieuNhapxuatthuoc, ref errMsg);
                        switch (actionResult)
                        {
                        case ActionResult.Success:
                            Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Bạn thực hiện hủy xác nhận phiếu thanh lý thuốc thành công", false);
                            grdList.CurrentRow.BeginEdit();
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.TrangThai].Value    = 0;
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NgayXacnhan].Value  = DBNull.Value;
                            grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NguoiXacnhan].Value = DBNull.Value;
                            grdList.CurrentRow.EndEdit();
                            break;

                        case ActionResult.Error:
                            break;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                ModifyCommand();
            }
        }
        private void UpdatePhieuXuatKho()
        {
            TPhieuNhapxuatthuoc objPhieuNhap = CreatePhieuNhapKho();

            ActionResult actionResult = new XuatThuoc().UpdatePhieuXuatKho(objPhieuNhap, CreateArrPhieuChiTiet());

            switch (actionResult)
            {
            case ActionResult.Success:
                TPhieuNhapxuatthuoc objTPhieuNhapxuatthuoc = TPhieuNhapxuatthuoc.FetchByID(Utility.Int32Dbnull(txtIDPhieuNhapKho.Text));
                DataRow[]           arrDr =
                    p_mDataPhieuNhapKho.Select(string.Format("{0}={1}", TPhieuNhapxuatthuoc.Columns.IdPhieu,
                                                             Utility.Int32Dbnull(txtIDPhieuNhapKho.Text)));
                if (arrDr.GetLength(0) > 0)
                {
                    arrDr[0].Delete();
                }
                DataRow newDr = p_mDataPhieuNhapKho.NewRow();
                Utility.FromObjectToDatarow(objTPhieuNhapxuatthuoc, ref newDr);
                DmucChung objNhaCC = THU_VIEN_CHUNG.LaydoituongDmucChung("NHACUNGCAP", txtNhacungcap.myCode);
                if (objNhaCC != null)
                {
                    newDr["ten_nhacungcap"] = Utility.sDbnull(objNhaCC.Ten);
                }
                TDmucKho objKho = TDmucKho.FetchByID(Utility.Int32Dbnull(cboKhoXuat.SelectedValue, -1));
                if (objKho != null)
                {
                    newDr["ten_khoxuat"] = Utility.sDbnull(objKho.TenKho);
                }
                p_mDataPhieuNhapKho.Rows.Add(newDr);

                Utility.GonewRowJanus(grdList, TPhieuNhapxuatthuoc.Columns.IdPhieu, Utility.sDbnull(txtIDPhieuNhapKho.Text));
                //Utility.ShowMsg("Bạn sửa  phiếu thành công", "Thông báo");
                m_enAction = 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;
            }
        }
Example #10
0
        /// <summary>
        /// hàm thực hiện việc cập nhập thông tin theo đơn thuốc
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdPhatThuoc_Click(object sender, EventArgs e)
        {
            Utility.SetMsg(uiStatusBar2.Panels[1], "", false);

            if (!InValiKiemTraDonThuoc())
            {
                return;
            }
            Utility.EnableButton(cmdPhatThuoc, false);
            cmdPhatThuoc.Cursor = Cursors.WaitCursor;
            long  presId  = Utility.Int64Dbnull(grdPres.GetValue(KcbDonthuoc.Columns.IdDonthuoc), -1);
            Int16 stockId = Utility.Int16Dbnull(_mDtDataPresDetail.Rows[0][KcbDonthuocChitiet.Columns.IdKho]);

            if (presId > 0 && stockId > 0)
            {
                try
                {
                    ActionResult actionResult = new XuatThuoc().LinhThuocBenhNhan(presId, stockId, dtNgayPhatThuoc.Value);
                    switch (actionResult)
                    {
                    case ActionResult.Success:
                        UpdateHasConfirm();
                        Utility.SetMsg(uiStatusBar2.Panels[1], "Bạn thực hiện việc phát thuốc thành công", false);
                        break;

                    case ActionResult.NotEnoughDrugInStock:
                        Utility.SetMsg(uiStatusBar2.Panels[1], "Thuốc không đủ cấp phát. Mời bạn kiểm tra lại", true);
                        break;

                    case ActionResult.Error:
                        Utility.SetMsg(uiStatusBar2.Panels[1], "Lỗi trong quá trình phát thuốc cho bệnh nhân", true);
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Utility.ShowMsg("Lỗi trong quá trình phát thuốc" + ex.Message);
                }
            }
            cmdPhatThuoc.Cursor = Cursors.Default;
        }
        /// <summary>
        /// hàm thực hiện việc cho phép chuyển thông tin xác nhận vào kho
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdNhapKho_Click(object sender, EventArgs e)
        {
            try
            {
                cmdNhapKho.Enabled = false;
                Utility.SetMsg(uiStatusBar2.Panels["MSG"], "", false);
                int IdPhieu = Utility.Int32Dbnull(grdList.GetValue(TPhieuNhapxuatthuoc.Columns.IdPhieu), -1);
                TPhieuNhapxuatthuoc objTPhieuNhapxuatthuoc = TPhieuNhapxuatthuoc.FetchByID(IdPhieu);
                if (objTPhieuNhapxuatthuoc != null)
                {
                    string   errMsg       = "";
                    DateTime _ngayxacnhan = globalVariables.SysDate;
                    if (THU_VIEN_CHUNG.Laygiatrithamsohethong("THUOC_HIENTHI_NGAYXACNHAN", "0", false) == "1")
                    {
                        frm_ChonngayXacnhan _ChonngayXacnhan = new frm_ChonngayXacnhan();
                        _ChonngayXacnhan.pdt_InputDate = objTPhieuNhapxuatthuoc.NgayHoadon;
                        _ChonngayXacnhan.ShowDialog();
                        if (_ChonngayXacnhan.b_Cancel)
                        {
                            return;
                        }
                        else
                        {
                            _ngayxacnhan = _ChonngayXacnhan.pdt_InputDate;
                        }
                    }
                    ActionResult actionResult =
                        new XuatThuoc().XacNhanPhieuXuatKho(objTPhieuNhapxuatthuoc, _ngayxacnhan, ref errMsg);
                    switch (actionResult)
                    {
                    case ActionResult.Success:
                        Utility.SetMsg(uiStatusBar2.Panels["MSG"], "Xác nhận phiếu chuyển kho thành công", false);
                        grdList.CurrentRow.BeginEdit();
                        grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.TrangThai].Value    = 1;
                        grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NgayXacnhan].Value  = _ngayxacnhan;
                        grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.NguoiXacnhan].Value = globalVariables.UserName;
                        grdList.CurrentRow.Cells[TPhieuNhapxuatthuoc.Columns.TrangThai].Value    = 1;
                        grdList.CurrentRow.EndEdit();
                        break;

                    case ActionResult.Exceed:
                        Utility.ShowMsg("Không có " + ten_kieuthuoc_vt + " trong kho xuất nên không thể xác nhận phiếu xuất\n" + errMsg, "Thông báo lỗi", MessageBoxIcon.Warning);
                        break;

                    case ActionResult.NotEnoughDrugInStock:
                        Utility.ShowMsg("" + ten_kieuthuoc_vt + " trong kho xuất không còn đủ số lượng nên không thể xác nhận phiếu xuất\n" + errMsg, "Thông báo lỗi", MessageBoxIcon.Warning);
                        break;

                    case ActionResult.Error:
                        break;
                    }
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                ModifyCommand();
            }
        }
        private void AddPreDetail()
        {
            try
            {
                string errMsg      = string.Empty;
                string errMsg_temp = string.Empty;
                log.Trace("Get thong tin cac doi tuong can de luu don thuoc");

                if (objDKho == null)
                {
                    return;
                }
                if (objLuotkham == null)
                {
                    return;
                }
                log.Trace(
                    "Bat dau them chi tiet don thuoc.......................................................................................");
                foreach (GridEXRow _row in grdPresDetail.GetCheckedRows())
                {
                    if (Utility.Int32Dbnull(objDKho.KtraTon) == 1)
                    {
                        decimal num = CommonLoadDuoc.SoLuongTonTrongKho(-1L,
                                                                        Utility.Int32Dbnull(idkhosaochep), Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1), Utility.Int64Dbnull(_row.Cells["id_thuockho"].Value, -1),
                                                                        Utility.Int32Dbnull(
                                                                            THU_VIEN_CHUNG.Laygiatrithamsohethong("KIEMTRATHUOC_CHOXACNHAN", "1", false), 1),
                                                                        Utility.ByteDbnull(objLuotkham.Noitru, 0));
                        log.Trace("1. Lay xong so luong ton kho ke don");
                        if (Utility.DecimaltoDbnull(_row.Cells["so_luong"].Value, 0) > num)
                        {
                            Utility.ShowMsg(
                                string.Format(
                                    "Số lượng " + (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") +
                                    " cấp phát {0} vượt quá số lượng " +
                                    (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") +
                                    " trong kho {1}.\nCó thể trong lúc bạn chọn " +
                                    (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") +
                                    " chưa kịp đưa vào đơn, các Bác sĩ khác hoặc Dược sĩ đã kê hoặc cấp phát mất một lượng " +
                                    (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") +
                                    " so với thời điểm bạn chọn.\nMời bạn liên hệ phòng Dược kiểm tra lại",
                                    Utility.sDbnull(_row.Cells["so_luong"].Value), num), "Cảnh báo", MessageBoxIcon.Hand);
                            bool selected = _row.Selected;
                            return;
                        }
                    }
                    DataTable listdata =
                        new XuatThuoc().GetObjThuocKhoCollection(
                            Utility.Int32Dbnull(idkhosaochep, 0),
                            Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1),
                            Utility.Int32Dbnull(_row.Cells["id_thuockho"].Value, -1),
                            (decimal)Utility.DecimaltoDbnull(_row.Cells["so_luong"].Value, 0),
                            Utility.ByteDbnull(objLuotkham.IdLoaidoituongKcb, 0),
                            Utility.ByteDbnull(objLuotkham.DungTuyen, 0), (byte)objLuotkham.Noitru);
                    var list2 = new List <KcbDonthuocChitiet>();
                    foreach (DataRow thuockho in listdata.Rows)
                    {
                        decimal _soluong = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.SoLuong], 0);
                        if (_soluong > 0)
                        {
                            DataRow[] rowArray =
                                m_dtDonthuocChitiet.Select(TThuockho.Columns.IdThuockho + "=" +
                                                           Utility.sDbnull(
                                                               thuockho[TThuockho.Columns.IdThuockho]) +
                                                           " AND tu_tuc=" + (0));
                            if (rowArray.Length > 0)
                            {
                                rowArray[0][KcbDonthuocChitiet.Columns.SoLuong] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) +
                                    _soluong;
                                rowArray[0]["TT_KHONG_PHUTHU"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]);
                                rowArray[0]["TT"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    (Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]) +
                                     Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu]));
                                rowArray[0]["TT_BHYT"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BhytChitra]);
                                rowArray[0]["TT_BN"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    (Utility.DecimaltoDbnull(
                                         rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0) +
                                     Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0));
                                rowArray[0]["TT_PHUTHU"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0);
                                rowArray[0]["TT_BN_KHONG_PHUTHU"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(
                                        rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0);
                                AddtoView(rowArray[0], _soluong);
                                list2.Add(getNewItem(rowArray[0]));
                            }
                            else
                            {
                                DataRow row = m_dtDonthuocChitiet.NewRow();
                                row[DmucThuoc.Columns.TenThuoc]         = Utility.sDbnull(_row.Cells["ten_thuoc"].Value, "");
                                row[KcbDonthuocChitiet.Columns.SoLuong] = _soluong;

                                row[KcbDonthuocChitiet.Columns.PhuThu] =
                                    Utility.DecimaltoDbnull(thuockho["phu_thu"], 0);
                                ;
                                // !this.Giathuoc_quanhe ? 0M : Utility.DecimaltoDbnull(this.txtSurcharge.Text, 0);
                                row[KcbDonthuocChitiet.Columns.PhuthuDungtuyen] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.PhuthuDungtuyen], 0);
                                row[KcbDonthuocChitiet.Columns.PhuthuTraituyen] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.PhuthuTraituyen], 0);

                                row[KcbDonthuocChitiet.Columns.IdThuoc] =
                                    Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1);
                                row[KcbDonthuocChitiet.Columns.IdDonthuoc] = IdDonthuoc;
                                row["IsNew"] = 1;
                                row[KcbDonthuocChitiet.Columns.MadoituongGia] = Utility.sDbnull(_row.Cells["madoituong_gia"].Value, "");
                                row[KcbDonthuocChitiet.Columns.IdThuockho]    =
                                    Utility.Int64Dbnull(thuockho[TThuockho.Columns.IdThuockho], -1);
                                row[KcbDonthuocChitiet.Columns.GiaNhap] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaNhap], 0);
                                row[KcbDonthuocChitiet.Columns.GiaBan] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBan], 0);
                                row[KcbDonthuocChitiet.Columns.GiaBhyt] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBhyt], 0);
                                row[KcbDonthuocChitiet.Columns.Vat] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.Vat], 0);
                                row[KcbDonthuocChitiet.Columns.SoLo] =
                                    Utility.sDbnull(thuockho[TThuockho.Columns.SoLo], "");
                                row[KcbDonthuocChitiet.Columns.SoDky] =
                                    Utility.sDbnull(thuockho[TThuockho.Columns.SoDky], "");
                                row[KcbDonthuocChitiet.Columns.SoQdinhthau] =
                                    Utility.sDbnull(thuockho[TThuockho.Columns.SoQdinhthau], "");
                                row[KcbDonthuocChitiet.Columns.MaNhacungcap] =
                                    Utility.sDbnull(thuockho[TThuockho.Columns.MaNhacungcap], "");
                                row["ten_donvitinh"] = Utility.sDbnull(_row.Cells["ten_donvitinh"].Value, "");
                                row["sNgay_hethan"]  = Utility.sDbnull(thuockho["sNgay_hethan"], "");
                                row["sNgay_nhap"]    = Utility.sDbnull(thuockho["sNgay_nhap"], "");
                                row[KcbDonthuocChitiet.Columns.NgayHethan] =
                                    thuockho[TThuockho.Columns.NgayHethan];
                                row[KcbDonthuocChitiet.Columns.NgayNhap] = thuockho[TThuockho.Columns.NgayNhap];
                                row[KcbDonthuocChitiet.Columns.IdKho]    =
                                    Utility.Int32Dbnull(idkhosaochep, -1);
                                row[TDmucKho.Columns.TenKho] = Utility.sDbnull(objDKho.TenKho, -1);
                                row[KcbDonthuocChitiet.Columns.DonviTinh]  = Utility.sDbnull(_row.Cells["ten_donvitinh"].Value, "");
                                row[DmucThuoc.Columns.HoatChat]            = Utility.sDbnull(_row.Cells["hoat_chat"].Value, "");
                                row[KcbDonthuocChitiet.Columns.ChidanThem] = Utility.sDbnull(_row.Cells["chidan_them"].Value, "");
                                row[KcbDonthuocChitiet.Columns.MotaThem]   = Utility.sDbnull(_row.Cells["mota_them_chitiet"].Value, "");
                                row["mota_them_chitiet"] = Utility.sDbnull(_row.Cells["mota_them_chitiet"].Value, "");
                                row[KcbDonthuocChitiet.Columns.CachDung]    = Utility.sDbnull(_row.Cells["cach_dung"].Value, "");
                                row[KcbDonthuocChitiet.Columns.SoluongDung] = Utility.sDbnull(_row.Cells["soluong_dung"].Value, "");
                                row[KcbDonthuocChitiet.Columns.SolanDung]   = Utility.sDbnull(_row.Cells["solan_dung"].Value, "");
                                row["ma_loaithuoc"]  = Utility.sDbnull(_row.Cells["ma_loaithuoc"].Value, "");
                                row["ten_loaithuoc"] = Utility.sDbnull(_row.Cells["ten_loaithuoc"].Value, "");
                                row[KcbDonthuocChitiet.Columns.TrangthaiThanhtoan] = 0;
                                row[KcbDonthuocChitiet.Columns.SttIn]  = GetMaxSTT(m_dtDonthuocChitiet);
                                row[KcbDonthuocChitiet.Columns.TuTuc]  = 0;
                                row[KcbDonthuocChitiet.Columns.DonGia] =
                                    Utility.DecimaltoDbnull(thuockho["GIA_BAN"], 0);
                                // (this.APDUNG_GIATHUOC_DOITUONG || this.Giathuoc_quanhe) ?
                                // (Utility.DecimaltoDbnull(this.txtPrice.Text, 0)) :
                                // (this.objLuotkham.IdLoaidoituongKcb== 1 ?
                                //Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBan],0) : Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBhyt],0));
                                row[KcbDonthuocChitiet.Columns.PtramBhyt]     = objLuotkham.PtramBhyt;
                                row[KcbDonthuocChitiet.Columns.PtramBhytGoc]  = objLuotkham.PtramBhytGoc;
                                row[KcbDonthuocChitiet.Columns.MaDoituongKcb] = objLuotkham.MaDoituongKcb;
                                row[KcbDonthuocChitiet.Columns.KieuBiendong]  = thuockho["kieubiendong"];
                                if (em_CallAction == CallAction.FromMenu)
                                {
                                    if (tu_tuc == 0)
                                    {
                                        decimal BHCT = 0m;
                                        if (objLuotkham.DungTuyen == 1)
                                        {
                                            BHCT =
                                                Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia],
                                                                        0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                                        }
                                        else
                                        {
                                            if (objLuotkham.TrangthaiNoitru <= 0)
                                            {
                                                BHCT =
                                                    Utility.DecimaltoDbnull(
                                                        row[KcbDonthuocChitiet.Columns.DonGia], 0) *
                                                    (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                                            }
                                            else //Nội trú cần tính=đơn giá * % đầu thẻ * % tuyến
                                            {
                                                BHCT =
                                                    Utility.DecimaltoDbnull(
                                                        row[KcbDonthuocChitiet.Columns.DonGia], 0) *
                                                    (Utility.DecimaltoDbnull(objLuotkham.PtramBhytGoc, 0) / 100) *
                                                    (_bhytPtramTraituyennoitru / 100);
                                            }
                                        }
                                        // decimal num2 = (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0) * Utility.DecimaltoDbnull(this.objLuotkham.PtramBhyt, 0)) / 100M;
                                        decimal num3 =
                                            Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0) -
                                            BHCT;
                                        row[KcbDonthuocChitiet.Columns.BhytChitra]  = BHCT;
                                        row[KcbDonthuocChitiet.Columns.BnhanChitra] = num3;
                                    }
                                    else
                                    {
                                        row[KcbDonthuocChitiet.Columns.PtramBhyt]   = 0;
                                        row[KcbDonthuocChitiet.Columns.BhytChitra]  = 0;
                                        row[KcbDonthuocChitiet.Columns.BnhanChitra] =
                                            Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0);
                                    }
                                }
                                row["TT_KHONG_PHUTHU"] =
                                    Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]);
                                row["TT"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                            (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]) +
                                             Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu]));
                                row["TT_BHYT"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                                 Utility.DecimaltoDbnull(
                                    row[KcbDonthuocChitiet.Columns.BhytChitra]);
                                row["TT_BN"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                               (Utility.DecimaltoDbnull(
                                                    row[KcbDonthuocChitiet.Columns.BnhanChitra], 0) +
                                                Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu],
                                                                        0));
                                row["TT_PHUTHU"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                                   Utility.DecimaltoDbnull(
                                    row[KcbDonthuocChitiet.Columns.PhuThu], 0);
                                row["TT_BN_KHONG_PHUTHU"] =
                                    Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0);

                                errMsg_temp =
                                    KiemtraCamchidinhchungphieu(
                                        Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.IdThuoc], 0),
                                        Utility.sDbnull(row[DmucThuoc.Columns.TenThuoc], ""));
                                log.Trace("3. Đã kiểm tra xong cấm chỉ định chung đơn thuốc");
                                if (errMsg_temp != string.Empty)
                                {
                                    errMsg += errMsg_temp;
                                }
                                else
                                {
                                    m_dtDonthuocChitiet.Rows.Add(row);
                                    AddtoView(row, _soluong);
                                    list2.Add(getNewItem(row));
                                }
                            }
                        }
                    }
                    if (errMsg != string.Empty)
                    {
                        if (errMsg.Contains("Single-Service:"))
                        {
                            Utility.ShowMsg(
                                "Thuốc sau được đánh dấu không được phép kê chung đơn bất kỳ Thuốc nào. Đề nghị bạn kiểm tra lại:\n" +
                                Utility.DoTrim(errMsg.Replace("Single-Service:", "")));
                        }
                        else
                        {
                            Utility.ShowMsg(
                                "Các cặp Thuốc sau đã được thiết lập chống kê chung đơn. Đề nghị bạn kiểm tra lại:\n" +
                                errMsg);
                        }
                    }
                    else
                    {
                        //PerformAction(list2.ToArray());
                        // Utility.GotoNewRowJanus(grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, Utility.sDbnull(_row.Cells["id_thuoc"].Value, -1));
                    }
                }
            }
            catch (Exception ex)
            {
                Utility.ShowMsg("Lỗi:" + ex.Message);
            }
            finally
            {
                log.Trace(
                    "KẾT THÚC THÊM CHI TIẾT THUỐC.......................................................................................");
            }
        }