Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
            }
        }