Example #1
0
        public ActionResult ThanhtoanDonthuoctaiquay(KcbThanhtoan objThanhtoan, KcbDanhsachBenhnhan objBenhnhan,List< KcbThanhtoanChitiet> objArrPaymentDetail, ref int id_thanhtoan, long IdHdonLog, bool Layhoadondo)
        {
            decimal PtramBHYT = 0;
            ///tổng tiền hiện tại truyền vào của lần payment đang thực hiện
            decimal v_dblTongtienDCT = 0;
            ///tổng tiền đã thanh toán
            decimal v_TotalPaymentDetail = 0;
            try
            {
                using (var scope = new TransactionScope())
                {
                    using (var dbscope = new SharedDbConnectionScope())
                    {
                        ///lấy tổng số Payment của mang truyền vào của pay ment hiện tại
                        v_dblTongtienDCT = TongtienKhongTutuc(objArrPaymentDetail);
                        KcbThanhtoanCollection paymentCollection =
                            new KcbThanhtoanController()
                            .FetchByQuery(
                                KcbThanhtoan.CreateQuery()
                                .AddWhere
                                //(KcbThanhtoan.Columns.MaLuotkham, Comparison.Equals, objLuotkham.MaLuotkham).AND
                                (KcbThanhtoan.Columns.IdBenhnhan, Comparison.Equals, objBenhnhan.IdBenhnhan)
                                .AND(KcbThanhtoan.Columns.TrangThai, Comparison.Equals, 0)
                                .AND(KcbThanhtoan.Columns.KieuThanhtoan, Comparison.Equals, 0)
                                .AND(KcbThanhtoan.Columns.TrangThai, Comparison.Equals, 0));
                        //Lấy tổng tiền của các lần thanh toán trước
                        int id_donthuoc = -1;
                        foreach (KcbThanhtoan Payment in paymentCollection)
                        {
                            KcbThanhtoanChitietCollection paymentDetailCollection = new Select().From(KcbThanhtoanChitiet.Schema)
                                .Where(KcbThanhtoanChitiet.Columns.IdThanhtoan).IsEqualTo(Payment.IdThanhtoan)
                                .And(KcbThanhtoanChitiet.Columns.TrangthaiHuy).IsEqualTo(0).ExecuteAsCollection
                                <KcbThanhtoanChitietCollection>();

                            foreach (KcbThanhtoanChitiet paymentDetail in paymentDetailCollection)
                            {
                                if (id_donthuoc == -1) id_donthuoc = paymentDetail.IdPhieu;
                                if (paymentDetail.TuTuc == 0)
                                    v_TotalPaymentDetail += Utility.Int32Dbnull(paymentDetail.SoLuong) *
                                                            Utility.DecimaltoDbnull(paymentDetail.DonGia);

                            }
                        }

                        //LayThongtinPtramBHYT(v_dblTongtienDCT + v_TotalPaymentDetail, objLuotkham, ref PtramBHYT);
                        objThanhtoan.MaThanhtoan = THU_VIEN_CHUNG.TaoMathanhtoan(Convert.ToDateTime(objThanhtoan.NgayThanhtoan));
                        objThanhtoan.IsNew = true;
                        objThanhtoan.Save();
                        if (id_donthuoc == -1) id_donthuoc = objArrPaymentDetail[0].IdPhieu;
                        KcbDonthuoc objDonthuoc = KcbDonthuoc.FetchByID(id_donthuoc);
                        KcbDonthuocChitietCollection lstChitiet = new Select().From(KcbDonthuoc.Schema).Where(KcbDonthuoc.Columns.IdDonthuoc).IsEqualTo(id_donthuoc).ExecuteAsCollection<KcbDonthuocChitietCollection>();
                        ActionResult actionResult = ActionResult.Success;
                        if (objDonthuoc != null && lstChitiet.Count>0)
                        {
                            if (!XuatThuoc.InValiKiemTraDonThuoc(lstChitiet,(byte)0)) return ActionResult.NotEnoughDrugInStock;
                            actionResult = new XuatThuoc().LinhThuocBenhNhan(id_donthuoc, Utility.Int16Dbnull(lstChitiet[0].IdKho, 0), globalVariables.SysDate);
                            switch (actionResult)
                            {
                                case ActionResult.Success:

                                    break;
                                case ActionResult.Error:
                                    return actionResult;
                            }
                        }
                        //Tính lại Bnhan chi trả và BHYT chi trả
                        //objArrPaymentDetail = THU_VIEN_CHUNG.TinhPhamTramBHYT(objArrPaymentDetail, PtramBHYT);
                        decimal TT_BN = 0m;
                        decimal TT_BHYT = 0m;
                        decimal TT_Chietkhau_Chitiet = 0m;
                        foreach (KcbThanhtoanChitiet objThanhtoanDetail in objArrPaymentDetail)
                        {
                            TT_BN += (objThanhtoanDetail.BnhanChitra + objThanhtoanDetail.PhuThu) * objThanhtoanDetail.SoLuong;
                            TT_BHYT += objThanhtoanDetail.BhytChitra * objThanhtoanDetail.SoLuong;
                            TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objThanhtoanDetail.TienChietkhau, 0);
                            objThanhtoanDetail.IdThanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1);
                            objThanhtoanDetail.IsNew = true;
                            objThanhtoanDetail.Save();
                            UpdatePaymentStatus(objThanhtoan, objThanhtoanDetail);
                        }

                        #region Hoadondo

                        if (Layhoadondo)
                        {
                            int record = -1;
                            if (IdHdonLog > 0)
                            {
                                record =
                                    new Delete().From(HoadonLog.Schema)
                                        .Where(HoadonLog.Columns.IdHdonLog)
                                        .IsEqualTo(IdHdonLog)
                                        .Execute();
                                if (record <= 0)
                                {
                                    Utility.ShowMsg("Có lỗi trong quá trình xóa thông tin serie hóa đơn đã hủy để cấp lại cho lần thanh toán này.");
                                    return ActionResult.Error;
                                }
                            }
                            var obj = new HoadonLog();
                            obj.IdThanhtoan = objThanhtoan.IdThanhtoan;
                            obj.TongTien = objThanhtoan.TongTien - Utility.DecimaltoDbnull(objThanhtoan.TongtienChietkhau, 0);
                            obj.IdBenhnhan = objThanhtoan.IdBenhnhan;
                            obj.MaLuotkham = objThanhtoan.MaLuotkham;
                            obj.MauHoadon = objThanhtoan.MauHoadon;
                            obj.KiHieu = objThanhtoan.KiHieu;
                            obj.IdCapphat = objThanhtoan.IdCapphat.Value;
                            obj.MaQuyen = objThanhtoan.MaQuyen;
                            obj.Serie = objThanhtoan.Serie;
                            obj.MaNhanvien = globalVariables.UserName;
                            obj.MaLydo = "0";
                            obj.NgayIn = globalVariables.SysDate;
                            obj.TrangThai = 0;
                            obj.IsNew = true;
                            obj.Save();
                            IdHdonLog = obj.IdHdonLog;//Để update lại vào bảng thanh toán
                            new Update(HoadonCapphat.Schema).Set(HoadonCapphat.Columns.SerieHientai)
                                .EqualTo(objThanhtoan.Serie)
                                .Set(HoadonCapphat.Columns.TrangThai).EqualTo(1)
                                .Where(HoadonCapphat.Columns.IdCapphat).IsEqualTo(obj.IdCapphat)
                                .Execute();
                        }
                        #endregion
                        KcbPhieuthu objPhieuthu = new KcbPhieuthu();
                        objPhieuthu.IdBenhnhan = objThanhtoan.IdBenhnhan;
                        objPhieuthu.MaLuotkham = objThanhtoan.MaLuotkham;
                        objPhieuthu.IdThanhtoan = objThanhtoan.IdThanhtoan;
                        objPhieuthu.MaPhieuthu = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, 0);
                        objPhieuthu.SoluongChungtugoc = 1;
                        objPhieuthu.LoaiPhieuthu = Convert.ToByte(0);
                        objPhieuthu.NgayThuchien = globalVariables.SysDate;
                        objPhieuthu.SoTien = TT_BN - TT_Chietkhau_Chitiet;
                        objPhieuthu.SotienGoc = TT_BN;
                        objPhieuthu.MaLydoChietkhau = objThanhtoan.MaLydoChietkhau;
                        objPhieuthu.TienChietkhauchitiet = TT_Chietkhau_Chitiet;
                        objPhieuthu.TienChietkhau = objThanhtoan.TongtienChietkhau;
                        objPhieuthu.TienChietkhauhoadon = objPhieuthu.TienChietkhau - objPhieuthu.TienChietkhauchitiet;
                        objPhieuthu.NguoiNop = globalVariables.UserName;
                        objPhieuthu.TaikhoanCo = "";
                        objPhieuthu.TaikhoanNo = "";
                        objPhieuthu.LydoNop = "Thu tiền bệnh nhân";
                        objPhieuthu.IdKhoaThuchien = globalVariables.idKhoatheoMay;
                        objPhieuthu.IdNhanvien = globalVariables.gv_intIDNhanvien;
                        objPhieuthu.IsNew = true;
                        objPhieuthu.Save();

                        new Update(KcbThanhtoan.Schema)
                        .Set(KcbThanhtoan.Columns.TongTien).EqualTo(TT_BHYT + TT_BN)
                        .Set(KcbThanhtoan.Columns.BnhanChitra).EqualTo(TT_BN)
                        .Set(KcbThanhtoan.Columns.BhytChitra).EqualTo(TT_BHYT)
                        .Set(KcbThanhtoan.Columns.IdHdonLog).EqualTo(IdHdonLog)
                        .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objThanhtoan.IdThanhtoan).Execute();
                    }
                    scope.Complete();
                    id_thanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1);
                    return ActionResult.Success;
                }
            }
            catch (Exception ex)
            {
                log.Error("Loi thuc hien thanh toan:" + ex.ToString());
                return ActionResult.Error;
            }
        }
Example #2
0
 public ActionResult HuyThongTinLanThanhToan_Donthuoctaiquay(int id_thanhtoan, KcbLuotkham objLuotkham, string lydohuy, int IdHdonLog, bool HuyBienlai)
 {
     try
     {
         decimal v_TotalPaymentDetail = 0;
         decimal v_DiscountRate = 0;
         using (var scope = new TransactionScope())
         {
             using (var dbscope = new SharedDbConnectionScope())
             {
                 if (IdHdonLog > 0)
                     if (HuyBienlai)
                         new Update(HoadonLog.Schema).Set(HoadonLog.Columns.TrangThai).EqualTo(1)
                             .Where(HoadonLog.Columns.IdHdonLog).IsEqualTo(IdHdonLog).Execute();
                     else
                         new Delete().From(HoadonLog.Schema)
                             .Where(HoadonLog.Columns.IdHdonLog).IsEqualTo(IdHdonLog).Execute();
                 SqlQuery sqlQuery =
                     new Select().From(KcbThanhtoanChitiet.Schema).Where(KcbThanhtoanChitiet.Columns.IdThanhtoan).IsEqualTo(
                         id_thanhtoan);
                 KcbThanhtoanChitietCollection arrPaymentDetails = sqlQuery.ExecuteAsCollection<KcbThanhtoanChitietCollection>();
                 KcbThanhtoan objThanhtoan = KcbThanhtoan.FetchByID(id_thanhtoan);
                 int id_donthuoc = -1;
                 if (arrPaymentDetails.Count > 0) id_donthuoc = arrPaymentDetails[0].IdPhieu;
                 if (objThanhtoan != null)
                     HUYTHONGTIN_THANHTOAN(arrPaymentDetails, objThanhtoan);
                 KcbDonthuoc objDonthuoc = KcbDonthuoc.FetchByID(id_donthuoc);
                 KcbDonthuocChitietCollection lstChitiet = new Select().From(KcbDonthuoc.Schema).Where(KcbDonthuoc.Columns.IdDonthuoc).IsEqualTo(id_donthuoc).ExecuteAsCollection<KcbDonthuocChitietCollection>();
                 ActionResult actionResult = ActionResult.Success;
                 if (objDonthuoc != null && lstChitiet.Count > 0)
                 {
                    actionResult= new XuatThuoc().HuyXacNhanDonThuocBN(id_donthuoc, Utility.Int16Dbnull(lstChitiet[0].IdKho, 0),DateTime.Now,lydohuy);
                     switch (actionResult)
                     {
                         case ActionResult.Success:
                             break;
                         case ActionResult.Error:
                             return actionResult;
                     }
                 }
                 KcbThanhtoan.Delete(id_thanhtoan);
             }
             scope.Complete();
             return ActionResult.Success;
         }
     }
     catch (Exception exception)
     {
         log.Error("Loi trong qua trinh huy thong tin {0}", exception.ToString());
         return ActionResult.Error;
     }
 }
        private void AddPreDetail()
        {
            try
            {
                 string errMsg = string.Empty;
                string errMsg_temp = string.Empty;
                this.setMsg(this.lblMsg, "", false);
                this.tu_tuc = this.chkTutuc.Checked ? 1 : 0;
                if (objDKho == null)
                {
                    this.setMsg(this.lblMsg, "Bạn cần chọn kho thuốc trước khi chọn thuốc kê đơn", true);
                    cboStock.Focus();
                    return;
                }
                else if (Utility.Int32Dbnull(this.txtDrugID.Text) < 0)
                {
                    this.txtdrug.Focus();
                    this.txtdrug.SelectAll();
                    return;
                }
                else if ((noitru==0 && Utility.DecimaltoDbnull(this.txtSoluong.Text,0) <= 0)||(noitru==1 && Utility.DecimaltoDbnull(this.txtSoluong.Text,0) <= 0 && Utility.Int32Dbnull(txtDonvichiaBut.Text,0)<=0))
                {
                    this.setMsg(this.lblMsg, "Số lượng "+(KIEU_THUOC_VT == "THUOC" ?"thuốc":"vật tư") +" phải lớn hơn 0", true);
                    this.txtSoluong.Focus();
                    return;
                }
                else if (Utility.Int32Dbnull(this.txtGioihanke.Text, -1) > 0 && Utility.DecimaltoDbnull(this.txtSoluong.Text, 0) > Utility.Int32Dbnull(this.txtGioihanke.Text, -1))
                {
                    this.setMsg(this.lblMsg, "Thuốc đã đặt giới hạn kê tối đa 1 lần nhỏ hơn hoặc bằng " + Utility.Int32Dbnull(this.txtGioihanke.Text, 0).ToString()+" "+txtDonViDung.Text, true);
                    this.txtSoluong.Focus();
                    return;
                }
                else
                {
                    if (Utility.Int32Dbnull(objDKho.KtraTon) == 1)
                    {
                        int num = CommonLoadDuoc.SoLuongTonTrongKho(-1L, Utility.Int32Dbnull(this.cboStock.SelectedValue), Utility.Int32Dbnull(this.txtDrugID.Text, -1), txtdrug.GridView ? this.id_thuockho : (long)this.txtdrug.id_thuockho, new int?(Utility.Int32Dbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("KIEMTRATHUOC_CHOXACNHAN", "1", false), 1)), Utility.ByteDbnull(objLuotkham.Noitru, 0));
                        if (Utility.DecimaltoDbnull(this.txtSoluong.Text,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", this.txtSoluong.Text, num.ToString()), "Cảnh báo", MessageBoxIcon.Hand);
                            this.txtSoluong.Focus();
                            return;
                        }
                    }
                    if (!m_dtDonthuocChitiet.Columns.Contains("sngayhen_muiketiep")) m_dtDonthuocChitiet.Columns.Add(new DataColumn("sngayhen_muiketiep", typeof(string)));
                    DataTable listdata = new XuatThuoc().GetObjThuocKhoCollection(Utility.Int32Dbnull(this.cboStock.SelectedValue, 0), Utility.Int32Dbnull(this.txtDrugID.Text, -1), txtdrug.GridView ? this.id_thuockho : this.txtdrug.id_thuockho, (int)Utility.DecimaltoDbnull(this.txtSoluong.Text, 0), Utility.ByteDbnull(this.objLuotkham.IdLoaidoituongKcb.Value, 0), Utility.ByteDbnull(this.objLuotkham.DungTuyen.Value, 0), (byte)noitru);
                    List<KcbDonthuocChitiet> list2 = new List<KcbDonthuocChitiet>();
                    foreach (DataRow thuockho in listdata.Rows)
                    {
                        int _soluong=Utility.Int32Dbnull(thuockho[TThuockho.Columns.SoLuong],0);
                        if (_soluong > 0)
                        {
                            DataRow[] rowArray = this.m_dtDonthuocChitiet.Select(TThuockho.Columns.IdThuockho + "=" +Utility.sDbnull( thuockho[TThuockho.Columns.IdThuockho]));
                            if (rowArray.Length > 0)
                            {
                                rowArray[0][KcbDonthuocChitiet.Columns.SoLuong] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) + _soluong;
                                rowArray[0]["TT_KHONG_PHUTHU"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]);
                                rowArray[0]["TT"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu]));
                                rowArray[0]["TT_BHYT"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BhytChitra]);
                                rowArray[0]["TT_BN"] = Utility.Int32Dbnull(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.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0);
                                rowArray[0]["TT_BN_KHONG_PHUTHU"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0);
                                this.AddtoView(rowArray[0],_soluong);
                                list2.Add(this.getNewItem(rowArray[0]));
                            }
                            else
                            {
                                byte? nullable;
                                DataRow row = this.m_dtDonthuocChitiet.NewRow();
                                row[DmucThuoc.Columns.TenThuoc] = Utility.sDbnull(this.txtDrug_Name.Text, "");
                                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(this.txtDrugID.Text, -1);
                                row[KcbDonthuocChitiet.Columns.IdDonthuoc] = this.IdDonthuoc;
                                row["IsNew"] = 1;
                                row[KcbDonthuocChitiet.Columns.MadoituongGia] = madoituong_gia;
                                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.MaNhacungcap] = Utility.sDbnull(thuockho[TThuockho.Columns.MaNhacungcap],"");
                                row["ten_donvitinh"] = this.txtDonViDung.Text;
                                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(this.cboStock.SelectedValue, -1);
                                row[TDmucKho.Columns.TenKho] = Utility.sDbnull(this.cboStock.Text, -1);
                                row[KcbDonthuocChitiet.Columns.DonviTinh] = this.txtDonViDung.Text;
                                row[DmucThuoc.Columns.HoatChat] = this.txtBietduoc.Text;
                                row[KcbDonthuocChitiet.Columns.ChidanThem] = this.txtChiDanThem.Text;
                                row[KcbDonthuocChitiet.Columns.MotaThem] = Utility.sDbnull(this.txtChiDanDungThuoc.Text);
                                row["mota_them_chitiet"] = Utility.sDbnull(this.txtChiDanDungThuoc.Text);
                                row[KcbDonthuocChitiet.Columns.CachDung] = Utility.sDbnull(this.txtCachDung.Text);
                                row[KcbDonthuocChitiet.Columns.SoluongDung] = Utility.sDbnull(this.txtSoLuongDung.Text);
                                row[KcbDonthuocChitiet.Columns.SolanDung] = Utility.sDbnull(this.txtSolan.Text);
                                row["ma_loaithuoc"] = this.txtdrugtypeCode.Text;
                                row[KcbDonthuocChitiet.Columns.TrangthaiThanhtoan] = 0;
                                row[KcbDonthuocChitiet.Columns.SttIn] = this.GetMaxSTT(this.m_dtDonthuocChitiet);
                                row[KcbDonthuocChitiet.Columns.TuTuc] = this.chkTutuc.Checked ? 1 : this.tu_tuc;
                                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] = this.objLuotkham.PtramBhyt;
                                row[KcbDonthuocChitiet.Columns.PtramBhytGoc] = this.objLuotkham.PtramBhytGoc;
                                row[KcbDonthuocChitiet.Columns.MaDoituongKcb] = this.MaDoiTuong;
                                row[KcbDonthuocChitiet.Columns.KieuBiendong] = thuockho["kieubiendong"];

                                row[KcbDonthuocChitiet.Columns.NguoiTiem] = Utility.Int16Dbnull(txtNguoitiem.MyID,-1);
                                row[KcbDonthuocChitiet.Columns.LydoTiemchung] = txtLydotiem.myCode;
                                row[KcbDonthuocChitiet.Columns.MuiThu] = Utility.Int16Dbnull(txtMuithu.Text, 1);
                                row[KcbDonthuocChitiet.Columns.VitriTiem] = Utility.sDbnull(txtVitritiem.Tag, txtVitritiem.Text);
                                if (chkHennhaclai.Checked)
                                {
                                    row["hen_nhaclai"] = dtpHennhaclai.Text;
                                    row[KcbDonthuocChitiet.Columns.NgayhenMuiketiep] = dtpHennhaclai.Value;
                                }
                                else
                                {
                                    row["hen_nhaclai"] = "Không hẹn";
                                    row[KcbDonthuocChitiet.Columns.NgayhenMuiketiep] = DBNull.Value;
                                }
                                row[KcbDonthuocChitiet.Columns.LydoTiemchung] = txtLydotiem.Text;
                                if (this.em_CallAction == CallAction.FromMenu)
                                {
                                    if (this.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) * (BHYT_PTRAM_TRAITUYENNOITRU / 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.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]);
                                row["TT"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu]));
                                row["TT_BHYT"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BhytChitra]);
                                row["TT_BN"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0));
                                row["TT_PHUTHU"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0);
                                row["TT_BN_KHONG_PHUTHU"] = Utility.Int32Dbnull(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], ""));
                                if (errMsg_temp != string.Empty)
                                {
                                    errMsg += errMsg_temp;
                                }
                                else
                                {
                                    this.m_dtDonthuocChitiet.Rows.Add(row);
                                    this.AddtoView(row, _soluong);
                                    list2.Add(this.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
                    {
                        this.PerformAction(list2.ToArray());
                        Utility.GotoNewRowJanus(this.grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, this.txtDrugID.Text);
                        this.UpdateDataWhenChanged();

                    }
                    this.ClearControl();
                    this.txtdrug.Focus();
                    this.txtdrug.SelectAll();
                    this.m_dtDanhmucthuoc.DefaultView.RowFilter = "1=2";
                    this.m_dtDanhmucthuoc.AcceptChanges();
                }
            }
            catch (Exception ex)
            {
                Utility.CatchException(ex);
            }
        }
        private void AddQuantity(int id_thuoc, int id_thuockho, int newQuantity)
        {
            try
            {
                this.tu_tuc = this.chkTutuc.Checked ? 1 : 0;
                this.setMsg(this.lblMsg, "", false);
                if (Utility.Int32Dbnull(objDKho.KtraTon) == 1)
                {
                    int num = CommonLoadDuoc.SoLuongTonTrongKho(-1L, Utility.Int32Dbnull(this.cboStock.SelectedValue), id_thuoc, (long)id_thuockho, new int?(Utility.Int32Dbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("KIEMTRATHUOC_CHOXACNHAN", "1", false), 1)),Utility.ByteDbnull( objLuotkham.Noitru,0));
                    if (newQuantity > num)
                    {
                        Utility.ShowMsg("Số lượng "+(KIEU_THUOC_VT == "THUOC" ?"thuốc":"vật tư") +" cấp phát vượt quá số lượng "+(KIEU_THUOC_VT == "THUOC" ?"thuốc":"vật tư") +" trong kho. Mời bạn kiểm tra lại", "Cảnh báo", MessageBoxIcon.Hand);
                        this.txtSoluong.Focus();
                        return;
                    }
                }
                DataTable listdata = new XuatThuoc().GetObjThuocKhoCollection(Utility.Int32Dbnull(this.cboStock.SelectedValue, 0), id_thuoc, id_thuockho, newQuantity,Utility.ByteDbnull(this.objLuotkham.IdLoaidoituongKcb.Value, 0), Utility.ByteDbnull(this.objLuotkham.DungTuyen.Value, 0), (byte)noitru);
                List<KcbDonthuocChitiet> list2 = new List<KcbDonthuocChitiet>();
                foreach (DataRow thuockho in listdata.Rows)
                {
                    int _soluong = Utility.Int32Dbnull(thuockho[TThuockho.Columns.SoLuong], 0);
                    if (_soluong > 0)
                    {
                        DataRow[] rowArray = this.m_dtDonthuocChitiet.Select(TThuockho.Columns.IdThuockho + "=" + Utility.sDbnull( thuockho[TThuockho.Columns.IdThuockho]));
                        if (rowArray.Length > 0)
                        {
                            rowArray[0][KcbDonthuocChitiet.Columns.SoLuong] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) + _soluong;
                            newQuantity -= _soluong;
                            rowArray[0]["TT_KHONG_PHUTHU"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]);
                            rowArray[0]["TT"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu]));
                            rowArray[0]["TT_BHYT"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BhytChitra]);
                            rowArray[0]["TT_BN"] = Utility.Int32Dbnull(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.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0);
                            rowArray[0]["TT_BN_KHONG_PHUTHU"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0);
                            this.AddtoView(rowArray[0], _soluong);
                            list2.Add(this.getNewItem(rowArray[0]));
                        }
                        else
                        {
                            byte? nullable;
                            DataRow row = this.m_dtDonthuocChitiet.NewRow();
                            string donviTinh = "";
                            string chidanThem = "";
                            string motaThem = "";
                            string cachDung = "";
                            string soluongDung = "";
                            string solanDung = "";
                            string tenthuoc = "";
                            string str8 = "";
                            string hoatchat = "";
                            this.getInfor(id_thuoc, ref tenthuoc, ref str8, ref hoatchat, ref donviTinh, ref chidanThem, ref motaThem, ref cachDung, ref soluongDung, ref solanDung);
                            this.txtDrugID.Text = id_thuoc.ToString();
                            this.txtDrugID_TextChanged(this.txtDrugID, new EventArgs());
                            row[DmucThuoc.Columns.TenThuoc] = Utility.sDbnull(this.txtDrug_Name.Text, "");
                            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] = id_thuoc;
                            row[KcbDonthuocChitiet.Columns.IdDonthuoc] = this.IdDonthuoc;
                            row["IsNew"] = 1;
                            row[KcbDonthuocChitiet.Columns.MadoituongGia] = madoituong_gia;
                            row[KcbDonthuocChitiet.Columns.IdThuockho] = Utility.Int64Dbnull( thuockho[TThuockho.Columns.IdThuockho],0);
                            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.MaNhacungcap] =Utility.sDbnull( thuockho[TThuockho.Columns.MaNhacungcap],"");
                            row["ten_donvitinh"] = this.txtDonViDung.Text;
                            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(this.cboStock.SelectedValue, -1);
                            row[TDmucKho.Columns.TenKho] = Utility.sDbnull(this.cboStock.Text, -1);
                            row[KcbDonthuocChitiet.Columns.DonviTinh] = donviTinh;
                            row[DmucThuoc.Columns.HoatChat] = hoatchat;
                            row[KcbDonthuocChitiet.Columns.ChidanThem] = chidanThem;
                            row["mota_them_chitiet"] = chidanThem;
                            row[KcbDonthuocChitiet.Columns.MotaThem] = motaThem;
                            row[KcbDonthuocChitiet.Columns.CachDung] = cachDung;
                            row[KcbDonthuocChitiet.Columns.SoluongDung] = soluongDung;
                            row[KcbDonthuocChitiet.Columns.SolanDung] = solanDung;
                            row["ma_loaithuoc"] = this.txtdrugtypeCode.Text;
                            row[KcbDonthuocChitiet.Columns.TrangthaiThanhtoan] = 0;
                            row[KcbDonthuocChitiet.Columns.SttIn] = this.GetMaxSTT(this.m_dtDonthuocChitiet);
                            row[KcbDonthuocChitiet.Columns.TuTuc] = this.chkTutuc.Checked ? 1 : this.tu_tuc;
                            row[KcbDonthuocChitiet.Columns.DonGia] = Utility.DecimaltoDbnull(thuockho["GIA_BAN"], 0); ;// (this.APDUNG_GIATHUOC_DOITUONG || this.Giathuoc_quanhe) ? new decimal?(Utility.DecimaltoDbnull(this.txtPrice.Text, 0)) : ((((nullable = this.objLuotkham.IdLoaidoituongKcb).GetValueOrDefault() == 1) && nullable.HasValue) ? new decimal?(Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBan], 0)) : Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBhyt], 0));
                            row[KcbDonthuocChitiet.Columns.PtramBhyt] = this.objLuotkham.PtramBhyt;
                            row[KcbDonthuocChitiet.Columns.PtramBhytGoc] = this.objLuotkham.PtramBhytGoc;
                            row[KcbDonthuocChitiet.Columns.MaDoituongKcb] = this.MaDoiTuong;
                            row[KcbDonthuocChitiet.Columns.KieuBiendong] = thuockho["kieubiendong"];
                            if (this.em_CallAction == CallAction.FromMenu)
                            {
                                if (this.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) * (BHYT_PTRAM_TRAITUYENNOITRU / 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.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]);
                            row["TT"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu]));
                            row["TT_BHYT"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BhytChitra]);
                            row["TT_BN"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0));
                            row["TT_PHUTHU"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0);
                            row["TT_BN_KHONG_PHUTHU"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0);
                            this.m_dtDonthuocChitiet.Rows.Add(row);
                            int num4 = newQuantity - _soluong;
                            this.AddtoView(row, (num4 > 0) ? _soluong : newQuantity);
                            list2.Add(this.getNewItem(row));
                        }
                    }
                }
                this.PerformAction(list2.ToArray());
                Utility.GotoNewRowJanus(this.grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, this.txtDrugID.Text);
                this.UpdateDataWhenChanged();
                this.ClearControl();
                this.txtdrug.Focus();
                this.txtdrug.SelectAll();
                this.m_dtDanhmucthuoc.DefaultView.RowFilter = "1=2";
                this.m_dtDanhmucthuoc.AcceptChanges();
            }
            catch (Exception ex)
            {
                Utility.CatchException(ex);
            }
        }
        /// <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;
            }
        }
 /// <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 (PropertyLib._HisDuocProperties.KieuDuyetDonThuoc == "DONTHUOC")
         {
             if (!InValiHuyDonthuoc()) return;
         }
         int Pres_ID = Utility.Int32Dbnull(grdPres.GetValue(TPrescription.Columns.PresId), -1);
         TPrescription objPrescription = TPrescription.FetchByID(Pres_ID);
         dtNgayPhatThuoc.Value = BusinessHelper.GetSysDateTime();
         ActionResult actionResult =
             new XuatThuoc().HuyXacNhanDonThuocBN(objPrescription, CreatePresDetail());
         switch (actionResult)
         {
             case ActionResult.Success:
                 UpdateHuyHasConfirm();
                 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;
         }
     }
 }
        /// <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;
            //if(Utility.AcceptQuestion("Bạn có muốn thực hiện việc xác nhận lĩnh thuốc cho bệnh nhân không\n Nếu bạn xác nhận thuốc sẽ trừ vào kho mà bạn đang chọn","thông báo",true))
            //{
                long Pres_ID = Utility.Int64Dbnull(grdPres.GetValue(KcbDonthuoc.Columns.IdDonthuoc), -1);
                ActionResult actionResult =
                    new XuatThuoc().LinhThuocBenhNhan(Pres_ID,Utility.Int16Dbnull(cboKho.SelectedValue,0),  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.Error:
                        Utility.SetMsg(uiStatusBar2.Panels[1], "Lỗi trong quá trình phát thuốc cho bệnh nhân", true);
                        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ó 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)
                    {
                        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 cmdHuychuyenkho_Click(object sender, EventArgs e)
        {
            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(""+KIEU_THUOC_VT=="VT"?"Vật tư":"Thuốc" +" 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(""+KIEU_THUOC_VT=="VT"?"Vật tư":"Thuốc" +" 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;
                    }
                }

            }
            ModifyCommand();
        }
        /// <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);
                    dtNgayPhatThuoc.Value = globalVariables.SysDate;
                    ActionResult actionResult =
                        new XuatThuoc().HuyXacNhanDonThuocBN(Pres_ID, Utility.Int16Dbnull(cboKho.SelectedValue, 0), _NhaplydoHuy.ngay_thuchien, _NhaplydoHuy.ten);
                    switch (actionResult)
                    {
                        case ActionResult.Success:
                            UpdateHuyHasConfirm();
                            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;
                    }
                }
            }
        }
 private void cmdXoaPhieuNhap_Click(object sender, EventArgs e)
 {
     if (!InValiXoaThongTin()) return;
     if (Utility.AcceptQuestion("Bạn có muốn xóa thông tin đơn thuốc đang chọn\n Nếu bạn chọn đơn thuốc sẽ xóa toàn bộ", "Thông báo", true))
     {
         Pres_ID = Utility.Int32Dbnull(grdPres.GetValue(TPrescription.Columns.PresId));
         ActionResult actionResult =
            new XuatThuoc().XoaThongTinThongTinDonThuoc(Pres_ID);
         switch (actionResult)
         {
             case ActionResult.Success:
                 grdPres.CurrentRow.BeginEdit();
                 grdPres.CurrentRow.Delete();
                 grdPres.CurrentRow.EndEdit();
                 grdPres.UpdateData();
                 m_dtDataDonThuoc.AcceptChanges();
                 Utility.ShowMsg("Bạn xóa toàn bộ thông tin  đơn thuốc thành công", "Thông báo", MessageBoxIcon.Information);
                 ModifyCommnad();
                 break;
             case ActionResult.Error:
                 Utility.ShowMsg("Có lỗi trong quá trình xóa thông tin đơn thuốc", "Thông báo", MessageBoxIcon.Error);
                 break;
         }
     }
 }
        /// <summary>
        /// hàm thực hiện việc xóa thông tin đơn thuốc chi tiét
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdXoaChiTietThuoc_Click(object sender, EventArgs e)
        {
            if (!InValiXoaChiTiet())return;
            if(Utility.AcceptQuestion("Bạn có muốn thực hiện xóa thông tin chi tiết của đơn thuốc","Thông báo xóa",true))
            {
                 Pres_ID = Utility.Int32Dbnull(grdPres.GetValue(TPrescription.Columns.PresId));
                var query = from donthuoc in grdPresDetail.GetDataRows()
                            let y = donthuoc.Cells[TPrescriptionDetail.Columns.PresDetailId].Value
                            select y;
                ArrayList arrayList=new ArrayList();
                Array array = query.ToArray();
                arrayList.AddRange(array);
                ActionResult actionResult =
                    new XuatThuoc().XoaThongTinChiTietDonThuoc(arrayList,
                                                                                                        Pres_ID);
                switch (actionResult)
                {
                    case ActionResult.Success:
                        foreach (Janus.Windows.GridEX.GridEXRow gridExRow in grdPresDetail.GetCheckedRows())
                        {
                            gridExRow.Delete();
                            grdPresDetail.UpdateData();
                            m_dtDataPresDetail.AcceptChanges();
                        }

                        Utility.ShowMsg("Bạn xóa thông tin chi tiết đơn thuốc thành công","Thông báo",MessageBoxIcon.Information);
                        ModifyCommnad();
                        break;
                    case ActionResult.Error:
                        Utility.ShowMsg("Có lỗi trong quá trình xóa thông tin chi tiết","Thông báo",MessageBoxIcon.Error);
                        break;
                }
            }
        }
        /// <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(lblmsg, "", false);
            if (PropertyLib._HisDuocProperties.KieuDuyetDonThuoc == "DONTHUOC")
            {
                if (!InValiDonthuoc()) return;
            }

            if (!InValiKiemTraDonThuoc()) return;
            //if(Utility.AcceptQuestion("Bạn có muốn thực hiện việc xác nhận lĩnh thuốc cho bệnh nhân không\n Nếu bạn xác nhận thuốc sẽ trừ vào kho mà bạn đang chọn","thông báo",true))
            //{
                int Pres_ID = Utility.Int32Dbnull(grdPres.GetValue(TPrescription.Columns.PresId), -1);
                TPrescription objPrescription = TPrescription.FetchByID(Pres_ID);
                DPhieuXuatBnhan objXuatBnhan = CreatePhieuXuatBenhNhan(objPrescription);
                dtNgayPhatThuoc.Value = BusinessHelper.GetSysDateTime();
                objXuatBnhan.NgayXuatBn = dtNgayPhatThuoc.Value;
                ActionResult actionResult =
                    new XuatThuoc().LinhThuocBenhNhan(objPrescription,CreatePresDetail(),
                                                                                               objXuatBnhan);
                switch (actionResult)
                {
                    case ActionResult.Success:
                        UpdateHasConfirm();
                        Utility.SetMsg(lblmsg, "Bạn thực hiện việc phát thuốc thành công",false);
                        break;
                    case ActionResult.Error:
                        Utility.SetMsg(lblmsg, "Lỗi trong quá trình phát thuốc cho bệnh nhân", true);
                        break;
                }
            //}
        }
        private void AddPreDetail()
        {
            try
            {
                string errMsg = string.Empty;
                string errMsg_temp = string.Empty;
                this.setMsg(this.lblMsg, "", false);
                this.tu_tuc = this.chkTutuc.Checked ? 1 : 0;
                if (Utility.Int32Dbnull(this.txtDrugID.Text) < 0)
                {
                    this.txtdrug.Focus();
                    this.txtdrug.SelectAll();
                }
                else if (Utility.DecimaltoDbnull(this.txtSoluong.Text) <= 0)
                {
                    this.setMsg(this.lblMsg, "Số lượng thuốc phải lớn hơn 0", true);
                    this.txtSoluong.Focus();
                }
                else
                {
                    if (CommonLoadDuoc.IsKiemTraTonKho(Utility.Int32Dbnull(this.cboStock.SelectedValue, 0)))
                    {
                        int num = CommonLoadDuoc.SoLuongTonTrongKho(-1L, Utility.Int32Dbnull(this.cboStock.SelectedValue), Utility.Int32Dbnull(this.txtDrugID.Text, -1), txtdrug.GridView ? this.id_thuockho : (long)this.txtdrug.id_thuockho, new int?(Utility.Int32Dbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("KIEMTRATHUOC_CHOXACNHAN", "1", false), 1)),(byte)0);
                        if (Utility.DecimaltoDbnull(this.txtSoluong.Text, 0) > num)
                        {
                            Utility.ShowMsg(string.Format("Số lượng thuốc cấp phát {0} vượt quá số lượng thuốc trong kho {1}.\nCó thể trong lúc bạn chọn thuốc 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 thuốc 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", this.txtSoluong.Text, num.ToString()), "Cảnh báo", MessageBoxIcon.Hand);
                            this.txtSoluong.Focus();
                            return;
                        }
                    }
                    DataTable listdata = new XuatThuoc().GetObjThuocKhoCollection(Utility.Int32Dbnull(this.cboStock.SelectedValue, 0), Utility.Int32Dbnull(this.txtDrugID.Text, -1), txtdrug.GridView ? this.id_thuockho : this.txtdrug.id_thuockho, (int)Utility.DecimaltoDbnull(this.txtSoluong.Text, 0), (byte)1, (byte)0, (byte)0);
                    List<KcbDonthuocChitiet> list2 = new List<KcbDonthuocChitiet>();
                    foreach (DataRow thuockho in listdata.Rows)
                    {
                        int _soluong = Utility.Int32Dbnull(thuockho[TThuockho.Columns.SoLuong], 0);
                        if (_soluong > 0)
                        {
                            DataRow[] rowArray = this.m_dtDonthuocChitiet.Select(TThuockho.Columns.IdThuockho + "=" + Utility.sDbnull(thuockho[TThuockho.Columns.IdThuockho]));
                            if (rowArray.Length > 0)
                            {
                                rowArray[0][KcbDonthuocChitiet.Columns.SoLuong] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) + _soluong;
                                rowArray[0]["TT_KHONG_PHUTHU"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]);
                                rowArray[0]["TT"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu]));
                                rowArray[0]["TT_BHYT"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BhytChitra]);
                                rowArray[0]["TT_BN"] = Utility.Int32Dbnull(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.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0);
                                rowArray[0]["TT_BN_KHONG_PHUTHU"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0);
                                this.AddtoView(rowArray[0], _soluong);
                                list2.Add(this.getNewItem(rowArray[0]));
                            }
                            else
                            {
                                byte? nullable;
                                DataRow row = this.m_dtDonthuocChitiet.NewRow();
                                row[DmucThuoc.Columns.TenThuoc] = Utility.sDbnull(this.txtDrug_Name.Text, "");
                                row[KcbDonthuocChitiet.Columns.SoLuong] = _soluong;
                                row[KcbDonthuocChitiet.Columns.PhuThu] = 0;// !this.Giathuoc_quanhe ? 0M : Utility.DecimaltoDbnull(this.txtSurcharge.Text, 0);
                                row[KcbDonthuocChitiet.Columns.IdThuoc] = Utility.Int32Dbnull(this.txtDrugID.Text, -1);
                                row[KcbDonthuocChitiet.Columns.IdDonthuoc] = this.IdDonthuoc;
                                row["IsNew"] = 1;
                                row[KcbDonthuocChitiet.Columns.IdThuockho] = Utility.Int64Dbnull(thuockho[TThuockho.Columns.IdThuockho], 0);
                                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.MaNhacungcap] = Utility.sDbnull(thuockho[TThuockho.Columns.MaNhacungcap], "");
                                row["ten_donvitinh"] = this.txtDonViDung.Text;
                                row["sNgay_hethan"] = Utility.sDbnull(thuockho["sNgay_hethan"]);
                                row[KcbDonthuocChitiet.Columns.NgayHethan] = thuockho[TThuockho.Columns.NgayHethan];
                                row[KcbDonthuocChitiet.Columns.IdKho] = Utility.Int32Dbnull(this.cboStock.SelectedValue, -1);
                                row[TDmucKho.Columns.TenKho] = Utility.sDbnull(this.cboStock.Text, -1);
                                row[KcbDonthuocChitiet.Columns.DonviTinh] = this.txtDonViDung.Text;
                                row[DmucThuoc.Columns.HoatChat] = this.txtBietduoc.Text;
                                row[KcbDonthuocChitiet.Columns.ChidanThem] = this.txtChiDanThem.Text;
                                row[KcbDonthuocChitiet.Columns.MotaThem] = Utility.sDbnull(this.txtChiDanThem.Text);
                                row["mota_them_chitiet"] = Utility.sDbnull(this.txtChiDanDungThuoc.Text);
                                row[KcbDonthuocChitiet.Columns.CachDung] = Utility.sDbnull(this.txtCachDung.Text);
                                row[KcbDonthuocChitiet.Columns.SoluongDung] = Utility.sDbnull(this.txtSoLuongDung.Text);
                                row[KcbDonthuocChitiet.Columns.SolanDung] = Utility.sDbnull(this.txtSolan.Text);
                                row["ma_loaithuoc"] = this.txtdrugtypeCode.Text;
                                row[KcbDonthuocChitiet.Columns.TrangthaiThanhtoan] = 0;
                                row[KcbDonthuocChitiet.Columns.SttIn] = this.GetMaxSTT(this.m_dtDonthuocChitiet);
                                row[KcbDonthuocChitiet.Columns.TuTuc] = 0;
                                row[KcbDonthuocChitiet.Columns.DonGia] = (this.APDUNG_GIATHUOC_DOITUONG || this.Giathuoc_quanhe) ? Utility.DecimaltoDbnull(this.txtPrice.Text, 0) : Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBan], 0);
                                row[KcbDonthuocChitiet.Columns.PtramBhyt] = 0;
                                row[KcbDonthuocChitiet.Columns.MaDoituongKcb] = "DV";

                                row[KcbDonthuocChitiet.Columns.PtramBhyt] = 0;
                                row[KcbDonthuocChitiet.Columns.BhytChitra] = 0;
                                row[KcbDonthuocChitiet.Columns.BnhanChitra] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0);
                                row[KcbDonthuocChitiet.Columns.KieuBiendong] = thuockho["kieubiendong"];

                                row["TT_KHONG_PHUTHU"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]);
                                row["TT"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu]));
                                row["TT_BHYT"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BhytChitra]);
                                row["TT_BN"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0));
                                row["TT_PHUTHU"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0);
                                row["TT_BN_KHONG_PHUTHU"] = Utility.Int32Dbnull(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], ""));
                                if (errMsg_temp != string.Empty)
                                {
                                    errMsg += errMsg_temp;
                                }
                                else
                                {
                                    this.m_dtDonthuocChitiet.Rows.Add(row);
                                    this.AddtoView(row, _soluong);
                                    list2.Add(this.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
                    {
                        //this.PerformAction(list2.ToArray());
                        Utility.GotoNewRowJanus(this.grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, this.txtDrugID.Text);
                        this.UpdateDataWhenChanged();

                    }
                    this.ClearControl();
                    this.txtdrug.Focus();
                    this.txtdrug.SelectAll();
                    this.m_dtDanhmucthuoc.DefaultView.RowFilter = "1=2";
                    this.m_dtDanhmucthuoc.AcceptChanges();
                }
            }
            catch (Exception exception)
            {
                if (globalVariables.IsAdmin)
                {
                    Utility.ShowMsg(exception.ToString());
                }
            }
        }
Example #15
0
        public ActionResult XacnhanphieuCapphatNoitru(long ID_CAPPHAT,short ID_KHO,DateTime ngaythuchien)
        {
            ActionResult _result=ActionResult.Success;
            try
            {
                using (var Scope = new TransactionScope())
                {
                    using (var dbScope = new SharedDbConnectionScope())
                    {

                        DataTable _lstPres = SPs.ThuocLaydonthuocTrongphieucapphatNoitru(Utility.Int32Dbnull(ID_CAPPHAT)).GetDataSet().Tables[0];

                        //Xác nhận từng đơn thuốc nội trú
                        foreach (DataRow presRow in _lstPres.Rows)
                        {
                            //if (Utility.Int32Dbnull(presRow["Status"]) == 0)//Chưa được cấp phát
                            //{
                                KcbDonthuoc pres = KcbDonthuoc.FetchByID(Utility.Int32Dbnull(presRow[KcbDonthuoc.Columns.IdDonthuoc]));
                                //_result = Kiemtrasoluongthuoctrongkho(pres, ID_KHO);
                                //if (_result != ActionResult.Success) return _result;
                                ////Thực hiện cấp phát thuốc
                                TPhieuXuatthuocBenhnhan objXuatBnhan = CreatePhieuXuatBenhNhanNoitru(pres, ID_KHO, (int)ID_CAPPHAT);
                                objXuatBnhan.NgayXacnhan =  globalVariables.SysDate;
                                 _result =
                                    new XuatThuoc().Linhthuocnoitru(pres,objXuatBnhan, ID_KHO, ngaythuchien);
                                 if (_result != ActionResult.Success) return _result;
                            //}
                        }
                        //Cập nhật trạng thái cấp phát của phiếu đề nghị=1
                        new Update(TPhieuCapphatNoitru.Schema)
                            .Set(TPhieuCapphatNoitru.TrangThaiColumn.ColumnName).EqualTo(1)
                            .Set(TPhieuCapphatNoitru.IdKhoXuatColumn.ColumnName).EqualTo(ID_KHO)
                            .Set(TPhieuCapphatNoitru.IdNhanviencapphatColumn.ColumnName).EqualTo(globalVariablesPrivate.objNhanvien != null ? globalVariablesPrivate.objNhanvien.IdNhanvien : globalVariables.gv_intIDNhanvien)
                            .Set(TPhieuCapphatNoitru.NguoiXacnhanColumn.ColumnName).EqualTo(globalVariables.UserName)
                            .Set(TPhieuCapphatNoitru.NgayXacnhanColumn.ColumnName).EqualTo( globalVariables.SysDate)
                            .Where(TPhieuCapphatNoitru.IdCapphatColumn).IsEqualTo(ID_CAPPHAT).Execute();
                    }
                    Scope.Complete();
                    return ActionResult.Success;
                }
            }
            catch (Exception)
            {
                return ActionResult.Error;
            }
        }
 private void AddQuantity(int id_thuoc, int id_thuockho, int newQuantity)
 {
     try
     {
         this.tu_tuc = this.chkTutuc.Checked ? 1 : 0;
         this.setMsg(this.lblMsg, "", false);
         if (CommonLoadDuoc.IsKiemTraTonKho(Utility.Int32Dbnull(this.cboStock.SelectedValue, 0)))
         {
             int num = CommonLoadDuoc.SoLuongTonTrongKho(-1L, Utility.Int32Dbnull(this.cboStock.SelectedValue), id_thuoc, (long)id_thuockho, new int?(Utility.Int32Dbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("KIEMTRATHUOC_CHOXACNHAN", "1", false), 1)), (byte)0);
             if (newQuantity > num)
             {
                 Utility.ShowMsg("Số lượng thuốc cấp phát vượt quá số lượng thuốc trong kho. Mời bạn kiểm tra lại", "Cảnh báo", MessageBoxIcon.Hand);
                 this.txtSoluong.Focus();
                 return;
             }
         }
         DataTable listdata = new XuatThuoc().GetObjThuocKhoCollection(Utility.Int32Dbnull(this.cboStock.SelectedValue, 0), id_thuoc, id_thuockho, newQuantity, (byte)1, (byte)0, (byte)0);
         List<KcbDonthuocChitiet> list2 = new List<KcbDonthuocChitiet>();
         foreach (DataRow thuockho in listdata.Rows)
         {
             int _soluong = Utility.Int32Dbnull(thuockho[TThuockho.Columns.SoLuong], 0);
             if (_soluong > 0)
             {
                 DataRow[] rowArray = this.m_dtDonthuocChitiet.Select(TThuockho.Columns.IdThuockho + "=" + Utility.sDbnull(thuockho[TThuockho.Columns.IdThuockho]));
                 if (rowArray.Length > 0)
                 {
                     rowArray[0][KcbDonthuocChitiet.Columns.SoLuong] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) + _soluong;
                     newQuantity -= _soluong;
                     rowArray[0]["TT_KHONG_PHUTHU"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]);
                     rowArray[0]["TT"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu]));
                     rowArray[0]["TT_BHYT"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BhytChitra]);
                     rowArray[0]["TT_BN"] = Utility.Int32Dbnull(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.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0);
                     rowArray[0]["TT_BN_KHONG_PHUTHU"] = Utility.Int32Dbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0);
                     this.AddtoView(rowArray[0], _soluong);
                     list2.Add(this.getNewItem(rowArray[0]));
                 }
                 else
                 {
                     byte? nullable;
                     DataRow row = this.m_dtDonthuocChitiet.NewRow();
                     string donviTinh = "";
                     string chidanThem = "";
                     string motaThem = "";
                     string cachDung = "";
                     string soluongDung = "";
                     string solanDung = "";
                     string tenthuoc = "";
                     string str8 = "";
                     string hoatchat = "";
                     this.getInfor(id_thuoc, ref tenthuoc, ref str8, ref hoatchat, ref donviTinh, ref chidanThem, ref motaThem, ref cachDung, ref soluongDung, ref solanDung);
                     this.txtDrugID.Text = id_thuoc.ToString();
                     this.txtDrugID_TextChanged(this.txtDrugID, new EventArgs());
                     row[DmucThuoc.Columns.TenThuoc] = Utility.sDbnull(this.txtDrug_Name.Text, "");
                     row[KcbDonthuocChitiet.Columns.SoLuong] = _soluong;
                     row[KcbDonthuocChitiet.Columns.PhuThu] = 0;// !this.Giathuoc_quanhe ? 0M : Utility.DecimaltoDbnull(this.txtSurcharge.Text, 0);
                     row[KcbDonthuocChitiet.Columns.IdThuoc] = id_thuoc;
                     row[KcbDonthuocChitiet.Columns.IdDonthuoc] = this.IdDonthuoc;
                     row["IsNew"] = 1;
                     row[KcbDonthuocChitiet.Columns.IdThuockho] = Utility.Int64Dbnull(thuockho[TThuockho.Columns.IdThuockho], 0);
                     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.MaNhacungcap] = Utility.sDbnull(thuockho[TThuockho.Columns.MaNhacungcap], "");
                     row["ten_donvitinh"] = this.txtDonViDung.Text;
                     row["sNgay_hethan"] = Utility.sDbnull(thuockho["sNgay_hethan"]);
                     row[KcbDonthuocChitiet.Columns.NgayHethan] = thuockho[TThuockho.Columns.NgayHethan];
                     row[KcbDonthuocChitiet.Columns.IdKho] = Utility.Int32Dbnull(this.cboStock.SelectedValue, -1);
                     row[TDmucKho.Columns.TenKho] = Utility.sDbnull(this.cboStock.Text, -1);
                     row[KcbDonthuocChitiet.Columns.DonviTinh] = donviTinh;
                     row[DmucThuoc.Columns.HoatChat] = hoatchat;
                     row[KcbDonthuocChitiet.Columns.ChidanThem] = chidanThem;
                     row["mota_them_chitiet"] = chidanThem;
                     row[KcbDonthuocChitiet.Columns.MotaThem] = motaThem;
                     row[KcbDonthuocChitiet.Columns.CachDung] = cachDung;
                     row[KcbDonthuocChitiet.Columns.SoluongDung] = soluongDung;
                     row[KcbDonthuocChitiet.Columns.SolanDung] = solanDung;
                     row["ma_loaithuoc"] = this.txtdrugtypeCode.Text;
                     row[KcbDonthuocChitiet.Columns.TrangthaiThanhtoan] = 0;
                     row[KcbDonthuocChitiet.Columns.SttIn] = this.GetMaxSTT(this.m_dtDonthuocChitiet);
                     row[KcbDonthuocChitiet.Columns.TuTuc] = 0;
                     row[KcbDonthuocChitiet.Columns.DonGia] = (this.APDUNG_GIATHUOC_DOITUONG || this.Giathuoc_quanhe) ? Utility.DecimaltoDbnull(this.txtPrice.Text, 0) :Utility.DecimaltoDbnull( thuockho[TThuockho.Columns.GiaBan],0);
                     row[KcbDonthuocChitiet.Columns.PtramBhyt] = 0;
                     row[KcbDonthuocChitiet.Columns.MaDoituongKcb] = "DV";
                         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.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]);
                     row["TT"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu]));
                     row["TT_BHYT"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BhytChitra]);
                     row["TT_BN"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0));
                     row["TT_PHUTHU"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0);
                     row["TT_BN_KHONG_PHUTHU"] = Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0);
                     this.m_dtDonthuocChitiet.Rows.Add(row);
                     int num4 = newQuantity - _soluong;
                     this.AddtoView(row, (num4 > 0) ? _soluong : newQuantity);
                     list2.Add(this.getNewItem(row));
                 }
             }
         }
         //this.PerformAction(list2.ToArray());
         Utility.GotoNewRowJanus(this.grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, this.txtDrugID.Text);
         this.UpdateDataWhenChanged();
         this.ClearControl();
         this.txtdrug.Focus();
         this.txtdrug.SelectAll();
         this.m_dtDanhmucthuoc.DefaultView.RowFilter = "1=2";
         this.m_dtDanhmucthuoc.AcceptChanges();
     }
     catch (Exception exception)
     {
         if (globalVariables.IsAdmin)
         {
             Utility.ShowMsg(exception.ToString());
         }
     }
 }
        private void cmdHuychuyenkho_Click(object sender, EventArgs e)
        {
            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)
                {
                    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;
                    }
                }

            }
            ModifyCommand();
        }
        /// <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().XacNhanPhieuHuy_thanhly_thuoc(objTPhieuNhapxuatthuoc, _ngayxacnhan, ref errMsg);
                    switch (actionResult)
                    {
                        case ActionResult.Success:
                            Utility.SetMsg(uiStatusBar2.Panels["MSG"], "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 = 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ó thuốc trong kho thanh lý nên không thể xác nhận phiếu thanh lý\n" + errMsg, "Thông báo lỗi", MessageBoxIcon.Warning);
                            break;
                        case ActionResult.NotEnoughDrugInStock:
                            Utility.ShowMsg("Thuốc trong kho thanh lý không còn đủ số lượng nên không thể xác nhận phiếu thanh lý\n" + errMsg, "Thông báo lỗi", MessageBoxIcon.Warning);
                            break;
                        case ActionResult.Error:
                            break;
                    }
                }

            }
            catch (Exception)
            {

            }
            finally
            {
                ModifyCommand();
            }
        }
        /// <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)
        {
            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().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;
                }
            }

            ModifyCommand();
        }
        private void UpdatePhieuXuatKho()
        {
            TPhieuNhapxuatthuoc objPhieuNhap = CreatePhieuNhapKho();

            ActionResult actionResult = new XuatThuoc().UpdatePhieuXuatKho(objPhieuNhap, CreateArrPhieuChiTiet());
            switch (actionResult)
            {
                case ActionResult.Success:
                    TPhieuNhapxuatthuoc objPhieu = 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(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 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;
            }
        }
        /// <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;
            //if(Utility.AcceptQuestion("Bạn có muốn thực hiện việc xác nhận lĩnh thuốc cho bệnh nhân không\n Nếu bạn xác nhận thuốc sẽ trừ vào kho mà bạn đang chọn","thông báo",true))
            //{
                long Pres_ID = Utility.Int64Dbnull(grdPres.GetValue(KcbDonthuoc.Columns.IdDonthuoc), -1);
                Int16 stockID = Utility.Int16Dbnull(m_dtDataPresDetail.Rows[0][KcbDonthuocChitiet.Columns.IdKho]);
                ActionResult actionResult =
                    new XuatThuoc().LinhThuocBenhNhan(Pres_ID, 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;
                }
            //}
        }