ActionResult Kiemtrasoluongthuoctrongkho(TPhieuCapphatChitiet pres, int ID_KHO) { int id_thuoc = pres.IdThuoc; DmucThuoc _drug = new Select().From(DmucThuoc.Schema).Where(DmucThuoc.IdThuocColumn).IsEqualTo(id_thuoc).ExecuteSingle <DmucThuoc>(); if (_drug == null) { return(ActionResult.UNKNOW); } string Drug_name = _drug.TenThuoc; int so_luong = pres.SoLuong; int SoLuongTon = CommonLoadDuoc.SoLuongTonTrongKho(pres.IdDonthuoc, ID_KHO, id_thuoc, (int)pres.IdThuockho.Value, 1, (byte)1); if (SoLuongTon < so_luong) { Utility.ShowMsg(string.Format("Bạn không thể xác nhận đơn thuốc,Vì thuốc :{0} số lượng tồn hiện tại trong kho({1}) không đủ cấp cho số lượng yêu cầu({2})\n Mời bạn xem lại số lượng", Drug_name, SoLuongTon.ToString(), so_luong.ToString())); return(ActionResult.NotEnoughDrugInStock); } return(ActionResult.Success); }
private bool InValiKiemTraDonThuoc() { try { if (!radChuaXacNhan.Checked && !grdPres.GetDataRows().Any()) { return(false); } string idLoaidoituongKcb = Utility.GetValueFromGridColumn(grdPres, "id_loaidoituong_kcb"); string inphieuDct = Utility.sDbnull(grdPres.GetValue("id_phieu_dct"), "0"); string dathanhtoan = Utility.GetValueFromGridColumn(grdPres, "dathanhtoan"); long presId = Utility.Int32Dbnull(grdPres.GetValue(KcbDonthuoc.Columns.IdDonthuoc)); string tenBenhnhan = Utility.sDbnull(grdPres.GetValue(KcbDanhsachBenhnhan.Columns.TenBenhnhan)); SqlQuery sqlkt = new Select().From(TPhieuXuatthuocBenhnhan.Schema).Where(TPhieuXuatthuocBenhnhan.Columns.IdDonthuoc).IsEqualTo(presId); SqlQuery sqlktdonthuoc = new Select().From(KcbDonthuoc.Schema).Where(KcbDonthuoc.Columns.IdDonthuoc).IsEqualTo(presId); if (sqlktdonthuoc.GetRecordCount() <= 0) { Utility.ShowMsg(string.Format("Đơn thuốc của bệnh nhân {0} không tồn tại nữa! Bạn cần tìm kiếm lại thông tin đơn thuốc", tenBenhnhan)); log.Trace(string.Format("Đơn thuốc của bệnh nhân {0} không tồn tại nữa! Bạn cần tìm kiếm lại thông tin đơn thuốc", tenBenhnhan)); return(false); } if (sqlkt.GetRecordCount() > 0) { Utility.ShowMsg(string.Format("Đơn thuốc của bệnh nhân {0} đã được cấp phát!", tenBenhnhan)); log.Trace(string.Format("Đơn thuốc của bệnh nhân {0} đã được cấp phát!", tenBenhnhan)); return(false); } if (idLoaidoituongKcb == "1") { if (dathanhtoan == "0") { Utility.ShowMsg( string.Format( "Đối tượng bệnh nhân Dịch vụ đang chọn chưa thanh toán đơn thuốc nên bạn không thể thực hiện cấp phát." + "\nĐề nghị bệnh nhân đi nộp tiền thanh toán trước khi quay lại lĩnh thuốc")); return(false); } } else { if (inphieuDct == "0") { Utility.ShowMsg(string.Format("Đối tượng bệnh nhân BHYT đang chọn chưa in phôi BHYT nên bạn không thể thực hiện cấp phát thuốc." + "\nĐề nghị bệnh nhân đến quầy thanh toán in phôi BHYT trước khi quay lại lĩnh thuốc")); return(false); } } foreach (DataRow dr in _mDtDataPresDetail.Rows) { long idDonthuoc = Utility.Int32Dbnull(dr[KcbDonthuocChitiet.Columns.IdDonthuoc]); int idThuoc = Utility.Int32Dbnull(dr[KcbDonthuocChitiet.Columns.IdThuoc]); string drugName = Utility.sDbnull(dr["tenthuoc_bietduoc"]); int idKho = Utility.Int32Dbnull(dr[KcbDonthuocChitiet.Columns.IdKho]); int idThuockho = Utility.Int32Dbnull(dr[KcbDonthuocChitiet.Columns.IdThuockho]); decimal soLuong = Utility.DecimaltoDbnull(dr[KcbDonthuocChitiet.Columns.SoLuong]); decimal soLuongTon = CommonLoadDuoc.SoLuongTonTrongKho(idDonthuoc, idKho, idThuoc, idThuockho, 0, (byte)0);//Ko cần kiểm tra chờ xác nhận if (soLuongTon < soLuong) { Utility.ShowMsg(string.Format("Bạn không thể xác nhận đơn thuốc, Vì thuốc :{0} số lượng tồn hiện tại trong kho không đủ\n Mời bạn xem lại số lượng", drugName)); Utility.GonewRowJanus(grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, idThuoc.ToString()); return(false); } } return(true); } catch { return(false); } }
private void AddPreDetail() { try { string errMsg = string.Empty; string errMsg_temp = string.Empty; log.Trace("Get thong tin cac doi tuong can de luu don thuoc"); if (objDKho == null) { return; } if (objLuotkham == null) { return; } log.Trace( "Bat dau them chi tiet don thuoc......................................................................................."); foreach (GridEXRow _row in grdPresDetail.GetCheckedRows()) { if (Utility.Int32Dbnull(objDKho.KtraTon) == 1) { decimal num = CommonLoadDuoc.SoLuongTonTrongKho(-1L, Utility.Int32Dbnull(idkhosaochep), Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1), Utility.Int64Dbnull(_row.Cells["id_thuockho"].Value, -1), Utility.Int32Dbnull( THU_VIEN_CHUNG.Laygiatrithamsohethong("KIEMTRATHUOC_CHOXACNHAN", "1", false), 1), Utility.ByteDbnull(objLuotkham.Noitru, 0)); log.Trace("1. Lay xong so luong ton kho ke don"); if (Utility.DecimaltoDbnull(_row.Cells["so_luong"].Value, 0) > num) { Utility.ShowMsg( string.Format( "Số lượng " + (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") + " cấp phát {0} vượt quá số lượng " + (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") + " trong kho {1}.\nCó thể trong lúc bạn chọn " + (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") + " chưa kịp đưa vào đơn, các Bác sĩ khác hoặc Dược sĩ đã kê hoặc cấp phát mất một lượng " + (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") + " so với thời điểm bạn chọn.\nMời bạn liên hệ phòng Dược kiểm tra lại", Utility.sDbnull(_row.Cells["so_luong"].Value), num), "Cảnh báo", MessageBoxIcon.Hand); bool selected = _row.Selected; return; } } DataTable listdata = new XuatThuoc().GetObjThuocKhoCollection( Utility.Int32Dbnull(idkhosaochep, 0), Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1), Utility.Int32Dbnull(_row.Cells["id_thuockho"].Value, -1), (decimal)Utility.DecimaltoDbnull(_row.Cells["so_luong"].Value, 0), Utility.ByteDbnull(objLuotkham.IdLoaidoituongKcb, 0), Utility.ByteDbnull(objLuotkham.DungTuyen, 0), (byte)objLuotkham.Noitru); var list2 = new List <KcbDonthuocChitiet>(); foreach (DataRow thuockho in listdata.Rows) { decimal _soluong = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.SoLuong], 0); if (_soluong > 0) { DataRow[] rowArray = m_dtDonthuocChitiet.Select(TThuockho.Columns.IdThuockho + "=" + Utility.sDbnull( thuockho[TThuockho.Columns.IdThuockho]) + " AND tu_tuc=" + (0)); if (rowArray.Length > 0) { rowArray[0][KcbDonthuocChitiet.Columns.SoLuong] = Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) + _soluong; rowArray[0]["TT_KHONG_PHUTHU"] = Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]); rowArray[0]["TT"] = Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu])); rowArray[0]["TT_BHYT"] = Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BhytChitra]); rowArray[0]["TT_BN"] = Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull( rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0) + Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0)); rowArray[0]["TT_PHUTHU"] = Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0); rowArray[0]["TT_BN_KHONG_PHUTHU"] = Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull( rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0); AddtoView(rowArray[0], _soluong); list2.Add(getNewItem(rowArray[0])); } else { DataRow row = m_dtDonthuocChitiet.NewRow(); row[DmucThuoc.Columns.TenThuoc] = Utility.sDbnull(_row.Cells["ten_thuoc"].Value, ""); row[KcbDonthuocChitiet.Columns.SoLuong] = _soluong; row[KcbDonthuocChitiet.Columns.PhuThu] = Utility.DecimaltoDbnull(thuockho["phu_thu"], 0); ; // !this.Giathuoc_quanhe ? 0M : Utility.DecimaltoDbnull(this.txtSurcharge.Text, 0); row[KcbDonthuocChitiet.Columns.PhuthuDungtuyen] = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.PhuthuDungtuyen], 0); row[KcbDonthuocChitiet.Columns.PhuthuTraituyen] = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.PhuthuTraituyen], 0); row[KcbDonthuocChitiet.Columns.IdThuoc] = Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1); row[KcbDonthuocChitiet.Columns.IdDonthuoc] = IdDonthuoc; row["IsNew"] = 1; row[KcbDonthuocChitiet.Columns.MadoituongGia] = Utility.sDbnull(_row.Cells["madoituong_gia"].Value, ""); row[KcbDonthuocChitiet.Columns.IdThuockho] = Utility.Int64Dbnull(thuockho[TThuockho.Columns.IdThuockho], -1); row[KcbDonthuocChitiet.Columns.GiaNhap] = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaNhap], 0); row[KcbDonthuocChitiet.Columns.GiaBan] = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBan], 0); row[KcbDonthuocChitiet.Columns.GiaBhyt] = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBhyt], 0); row[KcbDonthuocChitiet.Columns.Vat] = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.Vat], 0); row[KcbDonthuocChitiet.Columns.SoLo] = Utility.sDbnull(thuockho[TThuockho.Columns.SoLo], ""); row[KcbDonthuocChitiet.Columns.SoDky] = Utility.sDbnull(thuockho[TThuockho.Columns.SoDky], ""); row[KcbDonthuocChitiet.Columns.SoQdinhthau] = Utility.sDbnull(thuockho[TThuockho.Columns.SoQdinhthau], ""); row[KcbDonthuocChitiet.Columns.MaNhacungcap] = Utility.sDbnull(thuockho[TThuockho.Columns.MaNhacungcap], ""); row["ten_donvitinh"] = Utility.sDbnull(_row.Cells["ten_donvitinh"].Value, ""); row["sNgay_hethan"] = Utility.sDbnull(thuockho["sNgay_hethan"], ""); row["sNgay_nhap"] = Utility.sDbnull(thuockho["sNgay_nhap"], ""); row[KcbDonthuocChitiet.Columns.NgayHethan] = thuockho[TThuockho.Columns.NgayHethan]; row[KcbDonthuocChitiet.Columns.NgayNhap] = thuockho[TThuockho.Columns.NgayNhap]; row[KcbDonthuocChitiet.Columns.IdKho] = Utility.Int32Dbnull(idkhosaochep, -1); row[TDmucKho.Columns.TenKho] = Utility.sDbnull(objDKho.TenKho, -1); row[KcbDonthuocChitiet.Columns.DonviTinh] = Utility.sDbnull(_row.Cells["ten_donvitinh"].Value, ""); row[DmucThuoc.Columns.HoatChat] = Utility.sDbnull(_row.Cells["hoat_chat"].Value, ""); row[KcbDonthuocChitiet.Columns.ChidanThem] = Utility.sDbnull(_row.Cells["chidan_them"].Value, ""); row[KcbDonthuocChitiet.Columns.MotaThem] = Utility.sDbnull(_row.Cells["mota_them_chitiet"].Value, ""); row["mota_them_chitiet"] = Utility.sDbnull(_row.Cells["mota_them_chitiet"].Value, ""); row[KcbDonthuocChitiet.Columns.CachDung] = Utility.sDbnull(_row.Cells["cach_dung"].Value, ""); row[KcbDonthuocChitiet.Columns.SoluongDung] = Utility.sDbnull(_row.Cells["soluong_dung"].Value, ""); row[KcbDonthuocChitiet.Columns.SolanDung] = Utility.sDbnull(_row.Cells["solan_dung"].Value, ""); row["ma_loaithuoc"] = Utility.sDbnull(_row.Cells["ma_loaithuoc"].Value, ""); row["ten_loaithuoc"] = Utility.sDbnull(_row.Cells["ten_loaithuoc"].Value, ""); row[KcbDonthuocChitiet.Columns.TrangthaiThanhtoan] = 0; row[KcbDonthuocChitiet.Columns.SttIn] = GetMaxSTT(m_dtDonthuocChitiet); row[KcbDonthuocChitiet.Columns.TuTuc] = 0; row[KcbDonthuocChitiet.Columns.DonGia] = Utility.DecimaltoDbnull(thuockho["GIA_BAN"], 0); // (this.APDUNG_GIATHUOC_DOITUONG || this.Giathuoc_quanhe) ? // (Utility.DecimaltoDbnull(this.txtPrice.Text, 0)) : // (this.objLuotkham.IdLoaidoituongKcb== 1 ? //Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBan],0) : Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBhyt],0)); row[KcbDonthuocChitiet.Columns.PtramBhyt] = objLuotkham.PtramBhyt; row[KcbDonthuocChitiet.Columns.PtramBhytGoc] = objLuotkham.PtramBhytGoc; row[KcbDonthuocChitiet.Columns.MaDoituongKcb] = objLuotkham.MaDoituongKcb; row[KcbDonthuocChitiet.Columns.KieuBiendong] = thuockho["kieubiendong"]; if (em_CallAction == CallAction.FromMenu) { if (tu_tuc == 0) { decimal BHCT = 0m; if (objLuotkham.DungTuyen == 1) { BHCT = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100); } else { if (objLuotkham.TrangthaiNoitru <= 0) { BHCT = Utility.DecimaltoDbnull( row[KcbDonthuocChitiet.Columns.DonGia], 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100); } else //Nội trú cần tính=đơn giá * % đầu thẻ * % tuyến { BHCT = Utility.DecimaltoDbnull( row[KcbDonthuocChitiet.Columns.DonGia], 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhytGoc, 0) / 100) * (_bhytPtramTraituyennoitru / 100); } } // decimal num2 = (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0) * Utility.DecimaltoDbnull(this.objLuotkham.PtramBhyt, 0)) / 100M; decimal num3 = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0) - BHCT; row[KcbDonthuocChitiet.Columns.BhytChitra] = BHCT; row[KcbDonthuocChitiet.Columns.BnhanChitra] = num3; } else { row[KcbDonthuocChitiet.Columns.PtramBhyt] = 0; row[KcbDonthuocChitiet.Columns.BhytChitra] = 0; row[KcbDonthuocChitiet.Columns.BnhanChitra] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0); } } row["TT_KHONG_PHUTHU"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]); row["TT"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu])); row["TT_BHYT"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull( row[KcbDonthuocChitiet.Columns.BhytChitra]); row["TT_BN"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * (Utility.DecimaltoDbnull( row[KcbDonthuocChitiet.Columns.BnhanChitra], 0) + Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu], 0)); row["TT_PHUTHU"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull( row[KcbDonthuocChitiet.Columns.PhuThu], 0); row["TT_BN_KHONG_PHUTHU"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) * Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0); errMsg_temp = KiemtraCamchidinhchungphieu( Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.IdThuoc], 0), Utility.sDbnull(row[DmucThuoc.Columns.TenThuoc], "")); log.Trace("3. Đã kiểm tra xong cấm chỉ định chung đơn thuốc"); if (errMsg_temp != string.Empty) { errMsg += errMsg_temp; } else { m_dtDonthuocChitiet.Rows.Add(row); AddtoView(row, _soluong); list2.Add(getNewItem(row)); } } } } if (errMsg != string.Empty) { if (errMsg.Contains("Single-Service:")) { Utility.ShowMsg( "Thuốc sau được đánh dấu không được phép kê chung đơn bất kỳ Thuốc nào. Đề nghị bạn kiểm tra lại:\n" + Utility.DoTrim(errMsg.Replace("Single-Service:", ""))); } else { Utility.ShowMsg( "Các cặp Thuốc sau đã được thiết lập chống kê chung đơn. Đề nghị bạn kiểm tra lại:\n" + errMsg); } } else { //PerformAction(list2.ToArray()); // Utility.GotoNewRowJanus(grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, Utility.sDbnull(_row.Cells["id_thuoc"].Value, -1)); } } } catch (Exception ex) { Utility.ShowMsg("Lỗi:" + ex.Message); } finally { log.Trace( "KẾT THÚC THÊM CHI TIẾT THUỐC......................................................................................."); } }