public static Result GetLoThuoc(string loThuocGUID) { Result result = new Result(); MMOverride db = null; try { db = new MMOverride(); LoThuoc loThuoc = db.LoThuocs.SingleOrDefault(l => l.LoThuocGUID.ToString() == loThuocGUID); result.QueryResult = loThuoc; } catch (System.Data.SqlClient.SqlException se) { result.Error.Code = (se.Message.IndexOf("Timeout expired") >= 0) ? ErrorCode.SQL_QUERY_TIMEOUT : ErrorCode.INVALID_SQL_STATEMENT; result.Error.Description = se.ToString(); } catch (Exception e) { result.Error.Code = ErrorCode.UNKNOWN_ERROR; result.Error.Description = e.ToString(); } finally { if (db != null) { db.Dispose(); db = null; } } return(result); }
public static Result CheckLoThuocExistCode(string loThuocGUID, string code) { Result result = new Result(); MMOverride db = null; try { db = new MMOverride(); LoThuoc lt = null; if (loThuocGUID == null || loThuocGUID == string.Empty) { lt = db.LoThuocs.SingleOrDefault <LoThuoc>(l => l.MaLoThuoc.ToLower() == code.ToLower()); } else { lt = db.LoThuocs.SingleOrDefault <LoThuoc>(l => l.MaLoThuoc.ToLower() == code.ToLower() && l.LoThuocGUID.ToString() != loThuocGUID); } if (lt == null) { result.Error.Code = ErrorCode.NOT_EXIST; } else { result.Error.Code = ErrorCode.EXIST; } } catch (System.Data.SqlClient.SqlException se) { result.Error.Code = (se.Message.IndexOf("Timeout expired") >= 0) ? ErrorCode.SQL_QUERY_TIMEOUT : ErrorCode.INVALID_SQL_STATEMENT; result.Error.Description = se.ToString(); } catch (Exception e) { result.Error.Code = ErrorCode.UNKNOWN_ERROR; result.Error.Description = e.ToString(); } finally { if (db != null) { db.Dispose(); db = null; } } return(result); }
public static Result GetGiaThuocNhap(string maThuocGUID) { Result result = new Result(); MMOverride db = null; try { db = new MMOverride(); LoThuoc loThuoc = (from l in db.LoThuocs where l.ThuocGUID.ToString() == maThuocGUID && l.Status == (byte)Status.Actived orderby l.CreatedDate descending select l).FirstOrDefault(); if (loThuoc != null) { result.QueryResult = loThuoc.GiaNhapQuiDoi; } else { result.QueryResult = 0; } } catch (System.Data.SqlClient.SqlException se) { result.Error.Code = (se.Message.IndexOf("Timeout expired") >= 0) ? ErrorCode.SQL_QUERY_TIMEOUT : ErrorCode.INVALID_SQL_STATEMENT; result.Error.Description = se.ToString(); } catch (Exception e) { result.Error.Code = ErrorCode.UNKNOWN_ERROR; result.Error.Description = e.ToString(); } finally { if (db != null) { db.Dispose(); db = null; } } return(result); }
public static Result GetNgayHetHanCuaThuoc(string thuocGUID) { Result result = new Result(); MMOverride db = null; try { DateTime dt = DateTime.Now; db = new MMOverride(); LoThuoc loThuoc = (from t in db.Thuocs join l in db.LoThuocs on t.ThuocGUID equals l.ThuocGUID where t.Status == (byte)Status.Actived && l.Status == (byte)Status.Actived && t.ThuocGUID.ToString() == thuocGUID orderby new DateTime(l.NgayHetHan.Year, l.NgayHetHan.Month, l.NgayHetHan.Day) descending, l.CreatedDate descending select l).FirstOrDefault <LoThuoc>(); if (loThuoc != null) { result.QueryResult = loThuoc.NgayHetHan; } } catch (System.Data.SqlClient.SqlException se) { result.Error.Code = (se.Message.IndexOf("Timeout expired") >= 0) ? ErrorCode.SQL_QUERY_TIMEOUT : ErrorCode.INVALID_SQL_STATEMENT; result.Error.Description = se.ToString(); } catch (Exception e) { result.Error.Code = ErrorCode.UNKNOWN_ERROR; result.Error.Description = e.ToString(); } finally { if (db != null) { db.Dispose(); db = null; } } return(result); }
public static Result DeleteHuyThuoc(List <string> keys) { Result result = new Result(); MMOverride db = null; try { db = new MMOverride(); OverrideTransactionScopeMaximumTimeout(new TimeSpan(1, 0, 0)); using (TransactionScope t = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 45, 0))) { string desc = string.Empty; foreach (string key in keys) { HuyThuoc huyThuoc = db.HuyThuocs.SingleOrDefault <HuyThuoc>(p => p.HuyThuocGUID.ToString() == key); if (huyThuoc != null) { Status status = (Status)huyThuoc.Status; huyThuoc.DeletedDate = DateTime.Now; huyThuoc.DeletedBy = Guid.Parse(Global.UserGUID); huyThuoc.Status = (byte)Status.Deactived; if (status == (byte)Status.Actived) { //Update So luong Lo thuoc var cthts = huyThuoc.ChiTietHuyThuocs; foreach (var ctht in cthts) { LoThuoc lt = (from l in db.LoThuocs where l.LoThuocGUID == ctht.LoThuocGUID select l).FirstOrDefault(); if (lt != null) { lt.SoLuongXuat -= ctht.SoLuong; db.SubmitChanges(); } else { Utility.WriteToTraceLog(string.Format("Không tồn tại lô thuốc: '{0}', ChiTietHuyThuocGUID: '{1}'", lt.LoThuocGUID.ToString(), ctht.ChiTietHuyThuocGUID.ToString())); } } } desc += string.Format("- GUID: '{0}', Mã thuốc: '{1}', Tên thuốc: '{2}', ĐVT: '{3}', Biệt dược: '{4}', Hàm lượng: '{5}', Hoạt chất: '{6}', Ngày hủy: '{7}', Số lượng: '{8}', Ghi chú: '{9}'\n", huyThuoc.HuyThuocGUID.ToString(), huyThuoc.Thuoc.MaThuoc, huyThuoc.Thuoc.TenThuoc, huyThuoc.Thuoc.DonViTinh, huyThuoc.Thuoc.BietDuoc, huyThuoc.Thuoc.HamLuong, huyThuoc.Thuoc.HoatChat, huyThuoc.NgayHuy.ToString("dd/MM/yyyy HH:mm:ss"), huyThuoc.SoLuong, huyThuoc.Note); } } //Tracking desc = desc.Substring(0, desc.Length - 1); Tracking tk = new Tracking(); tk.TrackingGUID = Guid.NewGuid(); tk.TrackingDate = DateTime.Now; tk.DocStaffGUID = Guid.Parse(Global.UserGUID); tk.ActionType = (byte)ActionType.Delete; tk.Action = "Xóa thông tin hủy thuốc"; tk.Description = desc; tk.TrackingType = (byte)TrackingType.None; tk.ComputerName = Utility.GetDNSHostName(); db.Trackings.InsertOnSubmit(tk); db.SubmitChanges(); t.Complete(); } } catch (System.Data.SqlClient.SqlException se) { result.Error.Code = (se.Message.IndexOf("Timeout expired") >= 0) ? ErrorCode.SQL_QUERY_TIMEOUT : ErrorCode.INVALID_SQL_STATEMENT; result.Error.Description = se.ToString(); } catch (Exception e) { result.Error.Code = ErrorCode.UNKNOWN_ERROR; result.Error.Description = e.ToString(); } finally { if (db != null) { db.Dispose(); db = null; } } return(result); }
public static Result InsertLoThuoc(LoThuoc loThuoc) { Result result = new Result(); MMOverride db = null; try { db = new MMOverride(); string desc = string.Empty; using (TransactionScope tnx = new TransactionScope(TransactionScopeOption.RequiresNew)) { //Insert if (loThuoc.LoThuocGUID == null || loThuoc.LoThuocGUID == Guid.Empty) { loThuoc.LoThuocGUID = Guid.NewGuid(); db.LoThuocs.InsertOnSubmit(loThuoc); db.SubmitChanges(); //Tracking desc += string.Format("- GUID: '{0}', Mã lô: '{1}', Tên lô: '{2}', Thuốc: '{3}', Số đăng ký: '{4}', Hãng SX: '{5}', Ngày SX: '{6}', Ngày hết hạn: '{7}', Nhà phân phối: '{8}', SL nhập: '{9}', ĐVT nhập: '{10}', Giá nhập: '{11}', SL qui đổi: '{12}', ĐVT qui đổi: '{13}', Giá nhập qui đổi: '{14}', SL xuất: '{15}', Ghi chú: '{16}'", loThuoc.LoThuocGUID.ToString(), loThuoc.MaLoThuoc, loThuoc.TenLoThuoc, loThuoc.Thuoc.TenThuoc, loThuoc.SoDangKy, loThuoc.HangSanXuat, loThuoc.NgaySanXuat.ToString("dd/MM/yyyy"), loThuoc.NgayHetHan.ToString("dd/MM/yyyy"), loThuoc.NhaPhanPhoi, loThuoc.SoLuongNhap, loThuoc.DonViTinhNhap, loThuoc.GiaNhap, loThuoc.SoLuongQuiDoi, loThuoc.DonViTinhQuiDoi, loThuoc.GiaNhapQuiDoi, loThuoc.SoLuongXuat, loThuoc.Note); Tracking tk = new Tracking(); tk.TrackingGUID = Guid.NewGuid(); tk.TrackingDate = DateTime.Now; tk.DocStaffGUID = Guid.Parse(Global.UserGUID); tk.ActionType = (byte)ActionType.Add; tk.Action = "Thêm thông tin lô thuốc"; tk.Description = desc; tk.TrackingType = (byte)TrackingType.Price; tk.ComputerName = Utility.GetDNSHostName(); db.Trackings.InsertOnSubmit(tk); db.SubmitChanges(); } else //Update { LoThuoc lt = db.LoThuocs.SingleOrDefault <LoThuoc>(l => l.LoThuocGUID.ToString() == loThuoc.LoThuocGUID.ToString()); if (lt != null) { double giaNhapCu = lt.GiaNhap; int soLuongNhapCu = lt.SoLuongNhap; double giaNhapQuiDoiCu = lt.GiaNhapQuiDoi; int soLuongQuiDoiCu = lt.SoLuongQuiDoi; lt.ThuocGUID = loThuoc.ThuocGUID; lt.MaLoThuoc = loThuoc.MaLoThuoc; lt.TenLoThuoc = loThuoc.TenLoThuoc; lt.SoDangKy = loThuoc.SoDangKy; lt.HangSanXuat = loThuoc.HangSanXuat; lt.NgaySanXuat = loThuoc.NgaySanXuat; lt.NgayHetHan = loThuoc.NgayHetHan; lt.NhaPhanPhoi = loThuoc.NhaPhanPhoi; lt.SoLuongNhap = loThuoc.SoLuongNhap; lt.DonViTinhNhap = loThuoc.DonViTinhNhap; lt.GiaNhap = loThuoc.GiaNhap; lt.SoLuongQuiDoi = loThuoc.SoLuongQuiDoi; lt.DonViTinhQuiDoi = loThuoc.DonViTinhQuiDoi; lt.GiaNhapQuiDoi = loThuoc.GiaNhapQuiDoi; lt.Note = loThuoc.Note; lt.CreatedDate = loThuoc.CreatedDate; lt.CreatedBy = loThuoc.CreatedBy; lt.UpdatedDate = loThuoc.UpdatedDate; lt.UpdatedBy = loThuoc.UpdatedBy; lt.DeletedDate = loThuoc.DeletedDate; lt.DeletedBy = loThuoc.DeletedBy; lt.Status = loThuoc.Status; lt.SystemDate = loThuoc.SystemDate; db.SubmitChanges(); //Tracking desc += string.Format("- GUID: '{0}', Mã lô: '{1}', Tên lô: '{2}', Thuốc: '{3}', Số đăng ký: '{4}', Hãng SX: '{5}', Ngày SX: '{6}', Ngày hết hạn: '{7}', Nhà phân phối: '{8}', SL nhập: cũ: '{9}' - mới: '{10}', ĐVT nhập: '{11}', Giá nhập: cũ: '{12}' - mới: '{13}', SL qui đổi: cũ: '{14}' - mới: '{15}', ĐVT qui đổi: '{16}', Giá nhập qui đổi: cũ: '{17}' - mới: '{18}', SL xuất: '{19}', Ghi chú: '{20}'", lt.LoThuocGUID.ToString(), lt.MaLoThuoc, lt.TenLoThuoc, lt.Thuoc.TenThuoc, lt.SoDangKy, lt.HangSanXuat, lt.NgaySanXuat.ToString("dd/MM/yyyy"), lt.NgayHetHan.ToString("dd/MM/yyyy"), lt.NhaPhanPhoi, soLuongNhapCu, lt.SoLuongNhap, lt.DonViTinhNhap, giaNhapCu, lt.GiaNhap, soLuongQuiDoiCu, lt.SoLuongQuiDoi, lt.DonViTinhQuiDoi, giaNhapQuiDoiCu, lt.GiaNhapQuiDoi, lt.SoLuongXuat, lt.Note); Tracking tk = new Tracking(); tk.TrackingGUID = Guid.NewGuid(); tk.TrackingDate = DateTime.Now; tk.DocStaffGUID = Guid.Parse(Global.UserGUID); tk.ActionType = (byte)ActionType.Edit; tk.Action = "Sửa thông tin lô thuốc"; tk.Description = desc; tk.TrackingType = (byte)TrackingType.Price; tk.ComputerName = Utility.GetDNSHostName(); db.Trackings.InsertOnSubmit(tk); db.SubmitChanges(); } } tnx.Complete(); } } catch (System.Data.SqlClient.SqlException se) { result.Error.Code = (se.Message.IndexOf("Timeout expired") >= 0) ? ErrorCode.SQL_QUERY_TIMEOUT : ErrorCode.INVALID_SQL_STATEMENT; result.Error.Description = se.ToString(); } catch (Exception e) { result.Error.Code = ErrorCode.UNKNOWN_ERROR; result.Error.Description = e.ToString(); } finally { if (db != null) { db.Dispose(); db = null; } } return(result); }
public static Result DeleteLoThuoc(List <string> loThuocKeys, List <string> noteList) { Result result = new Result(); MMOverride db = null; try { db = new MMOverride(); using (TransactionScope t = new TransactionScope(TransactionScopeOption.RequiresNew)) { string desc = string.Empty; int index = 0; foreach (string key in loThuocKeys) { LoThuoc loThuoc = db.LoThuocs.SingleOrDefault <LoThuoc>(l => l.LoThuocGUID.ToString() == key); if (loThuoc != null) { if (loThuoc.Note != null && loThuoc.Note.Trim() != string.Empty) { loThuoc.Note += string.Format("\r\nXóa {0}: {1}", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), noteList[index]); } else { loThuoc.Note = string.Format("Xóa {0}: {1}", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), noteList[index]); } loThuoc.DeletedDate = DateTime.Now; loThuoc.DeletedBy = Guid.Parse(Global.UserGUID); loThuoc.Status = (byte)Status.Deactived; desc += string.Format("- GUID: '{0}', Mã lô: '{1}', Tên lô: '{2}', Thuốc: '{3}', Số đăng ký: '{4}', Hãng SX: '{5}', Ngày SX: '{6}', Ngày hết hạn: '{7}', Nhà phân phối: '{8}', SL nhập: '{9}', ĐVT nhập: '{10}', Giá nhập: '{11}', SL qui đổi: '{12}', ĐVT qui đổi: '{13}', Giá nhập qui đổi: '{14}', SL xuất: '{15}', Ghi chú: '{16}'\n", loThuoc.LoThuocGUID.ToString(), loThuoc.MaLoThuoc, loThuoc.TenLoThuoc, loThuoc.Thuoc.TenThuoc, loThuoc.SoDangKy, loThuoc.HangSanXuat, loThuoc.NgaySanXuat.ToString("dd/MM/yyyy"), loThuoc.NgayHetHan.ToString("dd/MM/yyyy"), loThuoc.NhaPhanPhoi, loThuoc.SoLuongNhap, loThuoc.DonViTinhNhap, loThuoc.GiaNhap, loThuoc.SoLuongQuiDoi, loThuoc.DonViTinhQuiDoi, loThuoc.GiaNhapQuiDoi, loThuoc.SoLuongXuat, loThuoc.Note); } index++; } //Tracking desc = desc.Substring(0, desc.Length - 1); Tracking tk = new Tracking(); tk.TrackingGUID = Guid.NewGuid(); tk.TrackingDate = DateTime.Now; tk.DocStaffGUID = Guid.Parse(Global.UserGUID); tk.ActionType = (byte)ActionType.Delete; tk.Action = "Xóa thông tin lô thuốc"; tk.Description = desc; tk.TrackingType = (byte)TrackingType.Price; tk.ComputerName = Utility.GetDNSHostName(); db.Trackings.InsertOnSubmit(tk); db.SubmitChanges(); t.Complete(); } } catch (System.Data.SqlClient.SqlException se) { result.Error.Code = (se.Message.IndexOf("Timeout expired") >= 0) ? ErrorCode.SQL_QUERY_TIMEOUT : ErrorCode.INVALID_SQL_STATEMENT; result.Error.Description = se.ToString(); } catch (Exception e) { result.Error.Code = ErrorCode.UNKNOWN_ERROR; result.Error.Description = e.ToString(); } finally { if (db != null) { db.Dispose(); db = null; } } return(result); }
private void OnDeleteLoThuoc() { if (_dictLoThuoc == null) { return; } List <string> deletedLoThuocList = new List <string>(); List <DataRow> deletedRows = _dictLoThuoc.Values.ToList(); if (deletedRows.Count > 0) { foreach (DataRow row in deletedRows) { string key = row["LoThuocGUID"].ToString(); Result rs = LoThuocBus.GetLoThuoc(key); if (!rs.IsOK) { MsgBox.Show(Application.ProductName, rs.GetErrorAsString("LoThuocBus.GetLoThuoc"), IconType.Error); Utility.WriteToTraceLog(rs.GetErrorAsString("LoThuocBus.GetLoThuoc")); return; } LoThuoc lt = rs.QueryResult as LoThuoc; if (lt.SoLuongXuat > 0) { MsgBox.Show(Application.ProductName, string.Format("Lô thuốc: '{0}' này đã xuất rồi không thể xóa.", lt.TenLoThuoc), IconType.Information); return; } } if (MsgBox.Question(Application.ProductName, "Bạn có muốn xóa những lô thuốc mà bạn đã đánh dấu ?") == DialogResult.Yes) { List <string> noteList = new List <string>(); foreach (DataRow row in deletedRows) { string loThuocGUID = row["LoThuocGUID"].ToString(); string maLoThuoc = row["MaLoThuoc"].ToString(); dlgLyDoXoa dlg = new dlgLyDoXoa(maLoThuoc, 3); if (dlg.ShowDialog(this) == DialogResult.OK) { noteList.Add(dlg.Notes); deletedLoThuocList.Add(loThuocGUID); } } if (deletedLoThuocList.Count > 0) { Result result = LoThuocBus.DeleteLoThuoc(deletedLoThuocList, noteList); if (result.IsOK) { DataTable dt = dgLoThuoc.DataSource as DataTable; if (dt == null || dt.Rows.Count <= 0) { return; } foreach (string key in deletedLoThuocList) { DataRow[] rows = dt.Select(string.Format("LoThuocGUID='{0}'", key)); if (rows == null || rows.Length <= 0) { continue; } dt.Rows.Remove(rows[0]); _dictLoThuoc.Remove(key); rows = _dtTemp.Select(string.Format("LoThuocGUID='{0}'", key)); if (rows != null && rows.Length > 0) { _dtTemp.Rows.Remove(rows[0]); } } } else { MsgBox.Show(Application.ProductName, result.GetErrorAsString("LoThuocBus.DeleteLoThuoc"), IconType.Error); Utility.WriteToTraceLog(result.GetErrorAsString("LoThuocBus.DeleteLoThuoc")); } } } } else { MsgBox.Show(Application.ProductName, "Vui lòng đánh dấu những lô thuốc cần xóa.", IconType.Information); } }