예제 #1
0
        public static Result DeleteXuatKhoCappCuu(List <string> keys)
        {
            Result     result = new Result();
            MMOverride db     = null;

            try
            {
                db = new MMOverride();
                using (TransactionScope t = new TransactionScope(TransactionScopeOption.RequiresNew))
                {
                    DateTime dt   = DateTime.Now;
                    string   desc = string.Empty;
                    foreach (string key in keys)
                    {
                        XuatKhoCapCuu xuatKhoCapCuu = db.XuatKhoCapCuus.SingleOrDefault <XuatKhoCapCuu>(x => x.XuatKhoCapCuuGUID.ToString() == key);
                        if (xuatKhoCapCuu != null)
                        {
                            Status status = (Status)xuatKhoCapCuu.Status;
                            xuatKhoCapCuu.DeletedDate = DateTime.Now;
                            xuatKhoCapCuu.DeletedBy   = Guid.Parse(Global.UserGUID);
                            xuatKhoCapCuu.Status      = (byte)Status.Deactived;

                            if (status == (byte)Status.Actived)
                            {
                                //Update số lượng xuất
                                int soLuong           = xuatKhoCapCuu.SoLuong;
                                var nhapKhoCapCuuList = from l in db.NhapKhoCapCuus
                                                        where l.Status == (byte)Status.Actived &&
                                                        l.KhoCapCuuGUID == xuatKhoCapCuu.KhoCapCuuGUID &&
                                                        new DateTime(l.NgayHetHan.Value.Year, l.NgayHetHan.Value.Month, l.NgayHetHan.Value.Day) > dt &&
                                                        l.SoLuongXuat > 0
                                                        orderby new DateTime(l.NgayHetHan.Value.Year, l.NgayHetHan.Value.Month, l.NgayHetHan.Value.Day) ascending,
                                    l.NgayNhap ascending
                                select l;

                                if (nhapKhoCapCuuList != null)
                                {
                                    foreach (var nk in nhapKhoCapCuuList)
                                    {
                                        if (soLuong > 0)
                                        {
                                            if (nk.SoLuongXuat >= soLuong)
                                            {
                                                nk.SoLuongXuat -= soLuong;
                                                soLuong         = 0;
                                                db.SubmitChanges();
                                                break;
                                            }
                                            else
                                            {
                                                soLuong       -= nk.SoLuongXuat;
                                                nk.SoLuongXuat = 0;
                                                db.SubmitChanges();
                                            }
                                        }
                                    }
                                }
                            }

                            desc += string.Format("- GUID: '{0}', Ngày xuất: '{1}', Tên cấp cứu: '{2}', SL xuất: '{3}'\n",
                                                  xuatKhoCapCuu.XuatKhoCapCuuGUID.ToString(), xuatKhoCapCuu.NgayXuat.ToString("dd/MM/yyyy HH:mm:ss"),
                                                  xuatKhoCapCuu.KhoCapCuu.TenCapCuu, xuatKhoCapCuu.SoLuong);
                        }
                    }

                    //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 xuất kho cấp cứu";
                    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);
        }
예제 #2
0
        public static Result InsertXuatKhoCapCuu(XuatKhoCapCuu xuatKhoCapCuu)
        {
            Result     result = new Result();
            MMOverride db     = null;

            try
            {
                db = new MMOverride();
                string   desc = string.Empty;
                DateTime dt   = DateTime.Now;

                using (TransactionScope tnx = new TransactionScope(TransactionScopeOption.RequiresNew))
                {
                    //Insert
                    if (xuatKhoCapCuu.XuatKhoCapCuuGUID == null || xuatKhoCapCuu.XuatKhoCapCuuGUID == Guid.Empty)
                    {
                        xuatKhoCapCuu.XuatKhoCapCuuGUID = Guid.NewGuid();
                        db.XuatKhoCapCuus.InsertOnSubmit(xuatKhoCapCuu);
                        db.SubmitChanges();

                        //Update số lượng xuất
                        int soLuong           = xuatKhoCapCuu.SoLuong;
                        var nhapKhoCapCuuList = from l in db.NhapKhoCapCuus
                                                where l.Status == (byte)Status.Actived &&
                                                l.KhoCapCuuGUID == xuatKhoCapCuu.KhoCapCuuGUID &&
                                                new DateTime(l.NgayHetHan.Value.Year, l.NgayHetHan.Value.Month, l.NgayHetHan.Value.Day) > dt &&
                                                l.SoLuongNhap * l.SoLuongQuiDoi - l.SoLuongXuat > 0
                                                orderby new DateTime(l.NgayHetHan.Value.Year, l.NgayHetHan.Value.Month, l.NgayHetHan.Value.Day) ascending,
                            l.NgayNhap ascending
                        select l;

                        if (nhapKhoCapCuuList != null)
                        {
                            foreach (var lt in nhapKhoCapCuuList)
                            {
                                if (soLuong > 0)
                                {
                                    int soLuongTon = lt.SoLuongNhap * lt.SoLuongQuiDoi - lt.SoLuongXuat;
                                    if (soLuongTon >= soLuong)
                                    {
                                        lt.SoLuongXuat += soLuong;
                                        soLuong         = 0;
                                        db.SubmitChanges();
                                        break;
                                    }
                                    else
                                    {
                                        lt.SoLuongXuat += soLuongTon;
                                        soLuong        -= soLuongTon;
                                        db.SubmitChanges();
                                    }
                                }
                            }
                        }

                        //Tracking
                        desc += string.Format("- GUID: '{0}', Ngày xuất: '{1}', Tên cấp cứu: '{2}', SL xuất: '{3}'",
                                              xuatKhoCapCuu.XuatKhoCapCuuGUID.ToString(), xuatKhoCapCuu.NgayXuat.ToString("dd/MM/yyyy HH:mm:ss"),
                                              xuatKhoCapCuu.KhoCapCuu.TenCapCuu, xuatKhoCapCuu.SoLuong);

                        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 xuất kho cấp cứu";
                        tk.Description  = desc;
                        tk.TrackingType = (byte)TrackingType.None;
                        tk.ComputerName = Utility.GetDNSHostName();
                        db.Trackings.InsertOnSubmit(tk);

                        db.SubmitChanges();
                    }
                    //else //Update
                    //{
                    //    XuatKhoCapCuu xk = db.XuatKhoCapCuus.SingleOrDefault<XuatKhoCapCuu>(x => x.XuatKhoCapCuuGUID == xuatKhoCapCuu.XuatKhoCapCuuGUID);
                    //    if (xk != null)
                    //    {
                    //        int soLuongXuatCu = xk.SoLuong;
                    //        xk.KhoCapCuuGUID = xuatKhoCapCuu.KhoCapCuuGUID;
                    //        xk.NgayXuat = xuatKhoCapCuu.NgayXuat;
                    //        xk.SoLuong = xuatKhoCapCuu.SoLuong;
                    //        xk.GiaXuat = xuatKhoCapCuu.GiaXuat;
                    //        xk.Note = xuatKhoCapCuu.Note;
                    //        xk.CreatedDate = xuatKhoCapCuu.CreatedDate;
                    //        xk.CreatedBy = xuatKhoCapCuu.CreatedBy;
                    //        xk.UpdatedDate = xuatKhoCapCuu.UpdatedDate;
                    //        xk.UpdatedBy = xuatKhoCapCuu.UpdatedBy;
                    //        xk.DeletedDate = xuatKhoCapCuu.DeletedDate;
                    //        xk.DeletedBy = xuatKhoCapCuu.DeletedBy;
                    //        xk.Status = xuatKhoCapCuu.Status;
                    //        db.SubmitChanges();



                    //        Tracking
                    //        desc += string.Format("- GUID: '{0}', Ngày xuất: '{1}', Tên cấp cứu: '{2}', SL xuất: cũ: '{3}' - mới: '{4}'",
                    //                xk.XuatKhoCapCuuGUID.ToString(), xk.NgayXuat.ToString("dd/MM/yyyy HH:mm:ss"), xk.KhoCapCuu.TenCapCuu,
                    //                soLuongXuatCu, xk.SoLuong);

                    //        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 xuất kho cấp cứu";
                    //        tk.Description = desc;
                    //        tk.TrackingType = (byte)TrackingType.None;
                    //        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);
        }