Ejemplo n.º 1
0
        /// <summary>
        /// 使用 申請單號 抓取資料
        /// </summary>
        /// <param name="aplyNo">單號</param>
        /// <returns></returns>
        public List <CAViewModel> GetDataByAplyNo(string aplyNo)
        {
            var result = new List <CAViewModel>();

            //result.
            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _TAR = db.TREA_APLY_REC.AsNoTracking()
                           .FirstOrDefault(x => x.APLY_NO == aplyNo);
                if (_TAR != null)
                {
                    //使用單號去其他存取項目檔抓取物品編號
                    var OIAs = db.OTHER_ITEM_APLY.AsNoTracking()
                               .Where(x => x.APLY_NO == _TAR.APLY_NO).Select(x => x.ITEM_ID).ToList();
                    //使用物品編號去電子憑證庫存資料檔抓取資料
                    var details = db.ITEM_CA.AsNoTracking()
                                  .Where(x => OIAs.Contains(x.ITEM_ID)).ToList();
                    if (details.Any())
                    {
                        var  _code_type       = Ref.SysCodeType.INVENTORY_TYPE.ToString(); //庫存狀態
                        var  _Inventory_types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == _code_type).ToList();
                        bool _accessStatus    = (_TAR.APLY_STATUS == Ref.AccessProjectFormStatus.E01.ToString()) && (_TAR.ACCESS_TYPE == Ref.AccessProjectTradeType.P.ToString());
                        result = GetDetailModel(details, _Inventory_types, _accessStatus).ToList();
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 取得查詢結果資料
        /// </summary>
        /// <param name="vCreate_Date_From">入庫日期(起)</param>
        /// <param name="vCreate_Date_To">入庫日期(迄)</param>
        /// <param name="vTrea_Register_Id">金庫登記簿單號</param>
        /// <returns></returns>
        public List <TreasuryRegisterSearch> GetSearchList(string vCreate_Date_From, string vCreate_Date_To, string vTrea_Register_Id)
        {
            var      result = new List <TreasuryRegisterSearch>();
            DateTime DateFrom, DateTo;

            DateTime.TryParse(vCreate_Date_From, out DateFrom);
            if (DateTime.TryParse(vCreate_Date_To, out DateTo))
            {
                DateTo = DateTo.DateToLatestTime();
            }
            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _Open_Trea_Type = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE").ToList();
                var _Regi_Status    = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "FORM_STATUS").ToList();

                result = GetSearchModel(db.TREA_OPEN_REC.AsNoTracking()
                                        .Where(x => x.CREATE_DT >= DateFrom, !vCreate_Date_From.IsNullOrWhiteSpace())
                                        .Where(x => x.CREATE_DT <= DateTo, !vCreate_Date_To.IsNullOrWhiteSpace())
                                        .Where(x => x.TREA_REGISTER_ID == vTrea_Register_Id, !vTrea_Register_Id.IsNullOrWhiteSpace())
                                        .AsEnumerable()
                                        , _Open_Trea_Type, _Regi_Status).ToList();
            }

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 作廢
        /// </summary>
        /// <param name="db">Entity</param>
        /// <param name="aply_No">作廢單號</param>
        /// <param name="access_Type">取出或存入</param>
        /// <param name="logStr">log 字串</param>
        /// <param name="dt">更新時間</param>
        /// <returns></returns>
        public Tuple <bool, string> ObSolete(TreasuryDBEntities db, string aply_No, string access_Type, string logStr, DateTime dt)
        {
            var itemIds = db.OTHER_ITEM_APLY.AsNoTracking().Where(x => x.APLY_NO == aply_No).Select(x => x.ITEM_ID).ToList();

            if (access_Type == Ref.AccessProjectTradeType.G.ToString()) //取出狀態電子憑證庫存資料檔要復原
            {
                foreach (var item in db.ITEM_CA.Where(x => itemIds.Contains(x.ITEM_ID)))
                {
                    item.INVENTORY_STATUS = "1"; //復原為在庫
                    item.LAST_UPDATE_DT   = dt;
                    logStr += item.modelToString(logStr);
                }
                return(new Tuple <bool, string>(true, logStr));
            }
            else //存入狀態改為已取消
            {
                foreach (var item in db.ITEM_CA.Where(x => itemIds.Contains(x.ITEM_ID)))
                {
                    item.INVENTORY_STATUS = "7"; //改為已取消
                    item.LAST_UPDATE_DT   = dt;
                    logStr += item.modelToString(logStr);
                }
                return(new Tuple <bool, string>(true, logStr));
            }
        }
Ejemplo n.º 4
0
        protected void SetDetail(string vTreaRegisterId, string vUser_Id)
        {
            _REC = new REC();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                //取得開庫紀錄檔
                var _TOR = db.TREA_OPEN_REC.AsNoTracking()
                           .FirstOrDefault(x => x.TREA_REGISTER_ID == vTreaRegisterId);

                //金庫管理者
                var UserData = new V_EMPLY2();
                using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities())
                {
                    UserData = dbINTRA.V_EMPLY2.AsNoTracking().FirstOrDefault(x => x.USR_ID == vUser_Id);
                }

                //開庫類型
                var OpenTreaType = db.SYS_CODE.AsNoTracking()
                                   .Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE").ToList();

                if (_TOR != null)
                {
                    _REC.SYS_DATE         = DateTime.Now.ToString("yyyy/MM/dd");
                    _REC.TREA_REGISTER_ID = _TOR.TREA_REGISTER_ID;
                    _REC.USER_NAME        = UserData.EMP_NAME;
                    _REC.ACTUAL_PUT_TIME  = string.IsNullOrEmpty(_TOR.ACTUAL_PUT_TIME.ToString()) ? null : DateTime.Parse(_TOR.ACTUAL_PUT_TIME.ToString()).ToString("HH:mm");
                    _REC.ACTUAL_GET_TIME  = string.IsNullOrEmpty(_TOR.ACTUAL_GET_TIME.ToString()) ? null : DateTime.Parse(_TOR.ACTUAL_GET_TIME.ToString()).ToString("HH:mm");
                    _REC.OPEN_TREA_TYPE   = OpenTreaType.FirstOrDefault(x => x.CODE == _TOR.OPEN_TREA_TYPE).CODE_VALUE;
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 金庫登記簿
        /// </summary>
        /// <returns></returns>
        public TreaOpenRec GetTreaOpenRec()
        {
            var result = new TreaOpenRec();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var Regi_Status   = Ref.AccessProjectFormStatus.C02.ToString();
                var OTD           = DateTime.Now.ToString("yyyy-MM-dd");
                var OTT           = DateTime.Now.ToString("HH:mm");
                var _OpenTreaType = db.SYS_CODE.AsNoTracking()
                                    .Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE");

                result = db.TREA_OPEN_REC.AsNoTracking()
                         .Where(x => x.REGI_STATUS == Regi_Status && x.APPR_STATUS != "4")
                         .AsEnumerable()
                         .Select(x => new TreaOpenRec()
                {
                    vTreaRegisterId   = x.TREA_REGISTER_ID,
                    vOpenTreaTypeName = _OpenTreaType.FirstOrDefault(y => y.CODE == x.OPEN_TREA_TYPE)?.CODE_VALUE
                }).FirstOrDefault();
            }

            //無符合開庫資料
            if (result == null)
            {
                result = new TreaOpenRec()
                {
                    vTreaRegisterId = "", vOpenTreaTypeName = ""
                };
            }

            return(result);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 查詢資料By內文編號
        /// </summary>
        /// <param name="MAIL_CONTENT_ID"></param>
        /// <returns></returns>
        public ITinItem GetUpdateData(string MAIL_CONTENT_ID)
        {
            TreasuryMailContentUpdateViewModel result = new TreasuryMailContentUpdateViewModel();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var emps = GetEmps();

                var _CODE_FUNC = db.CODE_FUNC.AsNoTracking().ToList();

                var _sysCodes = db.SYS_CODE.AsNoTracking().ToList();

                var _Is_Disabled = _sysCodes
                                   .Where(x => x.CODE_TYPE == "IS_DISABLED").ToList();
                var _DATA_STATUS = _sysCodes
                                   .Where(x => x.CODE_TYPE == "DATA_STATUS").ToList();

                var data = db.MAIL_CONTENT.AsNoTracking()
                           .FirstOrDefault(x => x.MAIL_CONTENT_ID == MAIL_CONTENT_ID);
                if (data != null)
                {
                    result.vMAIL_CONTENT_ID = data.MAIL_CONTENT_ID;
                    result.vIS_DISABLED     = data.IS_DISABLED;
                    result.vMAIL_SUBJECT    = data.MAIL_SUBJECT;
                    result.vMAIL_CONTENT    = data.MAIL_CONTENT1;
                    result.vLAST_UPDATE_DT  = data.LAST_UPDATE_DT;
                    result.subData          = GetReceiveData(data.MAIL_CONTENT_ID);
                }
            }

            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// get SysCode
        /// </summary>
        /// <param name="codeType"></param>
        /// <param name="isAll"></param>
        /// <returns></returns>
        public List <SelectOption> GetSysCode(string codeType, bool isAll = false)
        {
            var result = new List <SelectOption>();

            if (codeType.IsNullOrWhiteSpace())
            {
                return(result);
            }
            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                if (isAll)
                {
                    result.Add(new SelectOption()
                    {
                        Text = "All", Value = "All"
                    });
                }

                result.AddRange(db.SYS_CODE.AsNoTracking()
                                .Where(x => x.CODE_TYPE == codeType)
                                .OrderBy(x => x.ISORTBY)
                                .AsEnumerable()
                                .Select(x => new SelectOption()
                {
                    Text  = x.CODE_VALUE,
                    Value = x.CODE
                }).ToList());
            }
            return(result);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 取得明細資料
        /// </summary>
        /// <param name="vTrea_Register_Id">金庫登記簿單號</param>
        /// <returns></returns>
        public List <TreasuryRegisterDetail> GetDetailList(string vTrea_Register_Id)
        {
            var result = new List <TreasuryRegisterDetail>();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _Item_Desc   = db.TREA_ITEM.AsNoTracking().ToList();
                var _Access_Type = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "ACCESS_TYPE").ToList();
                //取得入庫類型為2的印章內容
                var _Trea_Item       = db.TREA_ITEM.AsNoTracking().Where(x => x.ITEM_OP_TYPE == "2").Select(x => x.ITEM_ID).ToList();
                var _Trea_Aply_Rec   = db.TREA_APLY_REC.AsNoTracking().Where(x => _Trea_Item.Contains(x.ITEM_ID)).Select(x => x.APLY_NO).ToList();
                var _Other_Item_Aply = db.OTHER_ITEM_APLY.AsNoTracking().Where(x => _Trea_Aply_Rec.Contains(x.APLY_NO)).ToList();
                var _Seal_Desc       = _Other_Item_Aply.Join(db.ITEM_SEAL.AsNoTracking(),
                                                             OIA => OIA.ITEM_ID,
                                                             IS => IS.ITEM_ID,
                                                             (OIA, IS) => new BeforeOpenTreasurySeal
                {
                    vAply_No   = OIA.APLY_NO,
                    vItem_Id   = OIA.ITEM_ID,
                    vSeal_Desc = IS.SEAL_DESC
                }).ToList();
                var _Confirm = GetEmps();
                result = GetDetailModel(db.TREA_APLY_REC.AsNoTracking()
                                        .Where(x => x.TREA_REGISTER_ID == vTrea_Register_Id)
                                        .AsEnumerable(), _Item_Desc, _Access_Type, _Seal_Desc, _Confirm).ToList();
            }

            return(result);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 畫面初始
        /// </summary>
        /// <returns></returns>
        public Tuple <List <SelectOption>, List <SelectOption> > FirstDropDown()
        {
            List <SelectOption> CHARGE_DEPT = new List <SelectOption>();
            List <SelectOption> TREA_ITEM   = new List <SelectOption>();

            using (DB_INTRAEntities dbIntra = new DB_INTRAEntities())
            {
                var _VW_OA_DEPT = dbIntra.VW_OA_DEPT.AsNoTracking();
                var _Dpt_types  = new List <string>()
                {
                    "03", "02"
                };
                CHARGE_DEPT = _VW_OA_DEPT.Where(x => _Dpt_types.Contains(x.Dpt_type))
                              .AsEnumerable()
                              .Select(x => new SelectOption()
                {
                    Value = x.DPT_CD?.Trim(),
                    Text  = x.DPT_NAME?.Trim()
                }).ToList();
            }
            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                TREA_ITEM = db.TREA_ITEM.AsNoTracking()
                                                                                       //.Where(x => x.DAILY_FLAG == "N")
                            .Where(x => x.IS_DISABLED == "N" && x.ITEM_OP_TYPE == "3") //「入庫作業類型=3」且啟用中的存取項目
                            .OrderBy(x => x.ITEM_ID)
                            .AsEnumerable()
                            .Select(x => new SelectOption()
                {
                    Value = x.ITEM_ID,
                    Text  = x.ITEM_DESC
                }).ToList();
            }
            return(new Tuple <List <SelectOption>, List <SelectOption> >(CHARGE_DEPT, TREA_ITEM));
        }
Ejemplo n.º 10
0
        public static Tuple <TreasuryDBEntities, string> AddToContext <T>(TreasuryDBEntities context,
                                                                          T entity, int count, int commitCount, bool recreateContext) where T : class
        {
            context.Set <T>().Add(entity);

            string msg = string.Empty;

            if (count % commitCount == 0)
            {
                var validateMessage = context.GetValidationErrors().getValidateString();
                if (validateMessage.Any())
                {
                    msg = validateMessage;
                }
                else
                {
                    context.SaveChanges();
                }
                if (recreateContext)
                {
                    context.Dispose();
                    context = new TreasuryDBEntities();
                    context.Configuration.AutoDetectChangesEnabled = false;
                    context.Configuration.ValidateOnSaveEnabled    = false;
                }
            }

            return(new Tuple <TreasuryDBEntities, string>(context, msg));
        }
Ejemplo n.º 11
0
 /// <summary>
 /// 庫存異動資料-覆核
 /// </summary>
 /// <param name="db">Entities</param>
 /// <param name="itemIDs">覆核的申請單號</param>
 /// <param name="logStr">log</param>
 /// <param name="dt">執行時間</param>
 /// <returns></returns>
 public Tuple <bool, string> CDCApproved(TreasuryDBEntities db, List <string> itemIDs, string logStr, DateTime dt)
 {
     foreach (var itemID in itemIDs)
     {
         var _Bill = db.ITEM_BLANK_NOTE.FirstOrDefault(x => x.ITEM_ID == itemID);
         if (_Bill != null)
         {
             _Bill.INVENTORY_STATUS   = "1"; //在庫
             _Bill.ISSUING_BANK       = GetNewValue(_Bill.ISSUING_BANK, _Bill.ISSUING_BANK_AFT);
             _Bill.ISSUING_BANK_AFT   = null;
             _Bill.CHECK_TYPE         = GetNewValue(_Bill.CHECK_TYPE, _Bill.CHECK_TYPE_AFT);
             _Bill.CHECK_TYPE_AFT     = null;
             _Bill.CHECK_NO_TRACK     = GetNewValue(_Bill.CHECK_NO_TRACK, _Bill.CHECK_NO_TRACK_AFT);
             _Bill.CHECK_NO_TRACK_AFT = null;
             _Bill.CHECK_NO_B         = GetNewValue(_Bill.CHECK_NO_B, _Bill.CHECK_NO_B_AFT);
             _Bill.CHECK_NO_B_AFT     = null;
             _Bill.CHECK_NO_E         = GetNewValue(_Bill.CHECK_NO_E, _Bill.CHECK_NO_E_AFT);
             _Bill.CHECK_NO_E_AFT     = null;
             _Bill.LAST_UPDATE_DT     = dt;
             logStr += _Bill.modelToString(logStr);
         }
         else
         {
             return(new Tuple <bool, string>(false, logStr));
         }
     }
     return(new Tuple <bool, string>(true, logStr));
 }
Ejemplo n.º 12
0
 /// <summary>
 /// 金庫進出管理作業-駁回
 /// </summary>
 /// <param name="db">Entities</param>
 /// <param name="aplyNos">駁回的申請單號</param>
 /// <param name="logStr">log</param>
 /// <param name="dt">執行時間</param>
 /// <param name="userId">覆核人ID</param>
 /// <param name="desc">覆核意見</param>
 /// <returns></returns>
 public Tuple <bool, string> TinReject(TreasuryDBEntities db, List <string> aplyNos, string logStr, DateTime dt, string userId, string desc)
 {
     foreach (var aplyNo in aplyNos)
     {
         foreach (var MTH in db.MAIL_TIME_HIS.Where(x => x.APLY_NO == aplyNo))
         {
             MTH.APPR_UID    = userId;
             MTH.APPR_DATE   = dt;
             MTH.APPR_STATUS = "3"; //退回
             if (!desc.IsNullOrWhiteSpace())
             {
                 MTH.APPR_DESC = desc;
             }
             logStr += MTH.modelToString(logStr);
             if (!MTH.MAIL_TIME_ID.IsNullOrWhiteSpace())
             {
                 var MT = db.MAIL_TIME.First(x => x.MAIL_TIME_ID == MTH.MAIL_TIME_ID);
                 MT.FREEZE_DT   = null;
                 MT.FREEZE_UID  = null;
                 MT.APPR_UID    = userId;
                 MT.APPR_DT     = dt;
                 MT.DATA_STATUS = "1"; //可異動
                 logStr        += MT.modelToString(logStr);
             }
         }
     }
     return(new Tuple <bool, string>(true, logStr));
 }
Ejemplo n.º 13
0
        /// <summary>
        /// 金庫進出管理作業-覆核
        /// </summary>
        /// <param name="db">Entities</param>
        /// <param name="aplyNos">覆核的申請單號</param>
        /// <param name="logStr">log</param>
        /// <param name="dt">執行時間</param>
        /// <param name="userId">覆核人ID</param>
        /// <returns></returns>
        public Tuple <bool, string> TinApproved(TreasuryDBEntities db, List <string> aplyNos, string logStr, DateTime dt, string userId)
        {
            foreach (var aplyNo in aplyNos)
            {
                foreach (var MTH in db.MAIL_TIME_HIS.Where(x => x.APLY_NO == aplyNo))
                {
                    MTH.APPR_UID    = userId;
                    MTH.APPR_DATE   = dt;
                    MTH.APPR_STATUS = "2"; //覆核完成
                    logStr         += MTH.modelToString(logStr);
                    var _MAIL_CONTENT_ID = string.Empty;

                    var MT = db.MAIL_TIME.First(x => x.MAIL_TIME_ID == MTH.MAIL_TIME_ID);
                    MT.FREEZE_DT       = null;
                    MT.FREEZE_UID      = null;
                    MT.APPR_UID        = userId;
                    MT.APPR_DT         = dt;
                    MT.DATA_STATUS     = "1"; //可異動
                    MT.FUNC_ID         = MTH.FUNC_ID;
                    MT.SEND_TIME       = MTH.SEND_TIME;
                    MT.INTERVAL_MIN    = MTH.INTERVAL_MIN;
                    MT.TREA_OPEN_TIME  = MTH.TREA_OPEN_TIME;
                    MT.EXEC_TIME_B     = MTH.EXEC_TIME_B;
                    MT.EXEC_TIME_E     = MTH.EXEC_TIME_E;
                    MT.MAIL_CONTENT_ID = MTH.MAIL_CONTENT_ID;
                    MT.MEMO            = MTH.MEMO;
                    MT.IS_DISABLED     = MTH.IS_DISABLED;
                    logStr            += MT.modelToString(logStr);
                }
            }
            return(new Tuple <bool, string>(true, logStr));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 抓取庫存明細資料
        /// </summary>
        /// <param name="vAplyUnit">申請部門</param>
        /// <param name="inventoryStatus">庫存狀態</param>
        /// <param name="aplyNo">申請單號</param>
        /// <returns></returns>
        public IEnumerable <ITreaItem> GetDayData(string vAplyUnit = null, string inventoryStatus = null, string aplyNo = null)
        {
            var result = new List <BillViewModel>();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                if (!aplyNo.IsNullOrWhiteSpace())
                {
                    var _TAR = db.TREA_APLY_REC.AsNoTracking()
                               .FirstOrDefault(x => x.APLY_NO == aplyNo);
                    if (_TAR != null)
                    {
                        vAplyUnit = _TAR.APLY_UNIT;
                    }
                }
                var dept             = intra.getDept(vAplyUnit); //抓取單位
                var _code_type       = Ref.SysCodeType.INVENTORY_TYPE.ToString();
                var _Inventory_types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == _code_type).ToList();
                result.AddRange(db.ITEM_BLANK_NOTE.AsNoTracking()
                                .Where(x => x.INVENTORY_STATUS == "1")                                                                                                                          //庫存資料表只抓庫存 其他由申請紀錄檔 抓取
                                .Where(x => x.CHARGE_DEPT == dept.UP_DPT_CD.Trim() && x.CHARGE_SECT == dept.DPT_CD.Trim(), !dept.Dpt_type.IsNullOrWhiteSpace() && dept.Dpt_type.Trim() == "04") //單位為科
                                .Where(x => x.CHARGE_DEPT == dept.DPT_CD.Trim(), !dept.Dpt_type.IsNullOrWhiteSpace() && dept.Dpt_type.Trim() == "03")                                           //單位為部
                                .AsEnumerable()
                                .Select(x => ItemBlankNoteToBillViewModel(x, _Inventory_types)));
            }

            if (inventoryStatus != "1") //排除只抓庫存其他都需要申請紀錄檔
            {
                result.AddRange(getTreaAplyRec(vAplyUnit));
            }

            return(result);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 取得已入庫確認資料
        /// </summary>
        /// <param name="TreaRegisterId">金庫登記簿單號</param>
        /// <returns></returns>
        public List <BeforeOpenTreasuryViewModel> GetStorageList(string TreaRegisterId)
        {
            var result      = new List <BeforeOpenTreasuryViewModel>();
            var Aply_Status = Ref.AccessProjectFormStatus.C02.ToString();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _Item_Desc   = db.TREA_ITEM.AsNoTracking().ToList();
                var _Access_Type = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "ACCESS_TYPE").ToList();
                //取得入庫類型為2的印章內容
                var _Trea_Item       = db.TREA_ITEM.AsNoTracking().Where(x => x.ITEM_OP_TYPE == "2").Select(x => x.ITEM_ID).ToList();
                var _Trea_Aply_Rec   = db.TREA_APLY_REC.AsNoTracking().Where(x => _Trea_Item.Contains(x.ITEM_ID)).Select(x => x.APLY_NO).ToList();
                var _Other_Item_Aply = db.OTHER_ITEM_APLY.AsNoTracking().Where(x => _Trea_Aply_Rec.Contains(x.APLY_NO)).ToList();
                var _Seal_Desc       = _Other_Item_Aply.Join(db.ITEM_SEAL.AsNoTracking(),
                                                             OIA => OIA.ITEM_ID,
                                                             IS => IS.ITEM_ID,
                                                             (OIA, IS) => new BeforeOpenTreasurySeal
                {
                    vAply_No   = OIA.APLY_NO,
                    vItem_Id   = OIA.ITEM_ID,
                    vSeal_Desc = IS.SEAL_DESC
                }).ToList();
                var _Confirm = GetEmps();
                result = GetStorageModel(db.TREA_APLY_REC.AsNoTracking()
                                         .Where(x => x.CONFIRM_UID != null)
                                         .Where(x => x.APLY_STATUS == Aply_Status)
                                         .Where(x => x.TREA_REGISTER_ID == TreaRegisterId)
                                         .AsEnumerable(), _Item_Desc, _Access_Type, _Seal_Desc, _Confirm).ToList();
                result.AddRange(GetRoutineList(TreaRegisterId));
            }

            return(result);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 明細資料(空白票據)
        /// </summary>
        /// <param name="aplyNo"></param>
        /// <returns></returns>
        public IEnumerable <ITreaItem> GetTempData(string aplyNo)
        {
            var result = new List <BillViewModel>();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var sys_codes        = db.SYS_CODE.AsNoTracking().ToList();
                var _code            = "3";                                                                            //預約存入 , 4=> 預約取出
                var _Inventory_types = sys_codes
                                       .Where(x => x.CODE_TYPE == Ref.SysCodeType.INVENTORY_TYPE.ToString()).ToList(); //抓庫存狀態設定
                var _TAR = db.TREA_APLY_REC.AsNoTracking()
                           .FirstOrDefault(x => x.APLY_NO == aplyNo);
                if (_TAR != null)
                {
                    _code = _TAR.ACCESS_TYPE == Ref.AccessProjectTradeType.P.ToString() ? "3" :
                            _TAR.ACCESS_TYPE == Ref.AccessProjectTradeType.G.ToString() ? "4" : "3";
                }
                result = db.BLANK_NOTE_APLY.AsNoTracking()
                         .Where(x => x.APLY_NO == aplyNo)
                         .OrderBy(x => x.ISSUING_BANK)
                         .ThenBy(x => x.CHECK_TYPE)
                         .ThenBy(x => x.CHECK_NO_TRACK)
                         .AsEnumerable()
                         .Select((x, y) => BlankNoteAplyToBillViewModel(x, _code, y, _Inventory_types, true)).ToList();
            }

            return(result);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 抓取申請紀錄檔
        /// </summary>
        /// <param name="vAplyUnit"></param>
        /// <returns></returns>
        private List <BillViewModel> getTreaAplyRec(string vAplyUnit)
        {
            var result = new List <BillViewModel>();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var nonShowStatus = new List <string>()
                {
                    Ref.AccessProjectFormStatus.E01.ToString(),
                    Ref.AccessProjectFormStatus.E02.ToString(), //申請人刪除狀態 (等同庫存有需排除)
                    Ref.AccessProjectFormStatus.E03.ToString(),
                };
                var sys_codes        = db.SYS_CODE.AsNoTracking().ToList();
                var _Inventory_types = sys_codes
                                       .Where(x => x.CODE_TYPE == Ref.SysCodeType.INVENTORY_TYPE.ToString()).ToList();
                db.TREA_APLY_REC.AsNoTracking()
                .Where(x => !nonShowStatus.Contains(x.APLY_STATUS))     //要確認是否須排除不能顯示的
                .Where(x => x.APLY_UNIT == vAplyUnit).ToList()
                .ForEach(x =>
                {
                    var _accessType = x.ACCESS_TYPE;           //P(存入) , G(取出)
                    var code        = _accessType == "P" ? "3" //預約存入
                        : _accessType == "G" ? "4"             //預約取出
                        : "";
                    result.AddRange(db.BLANK_NOTE_APLY.AsNoTracking()
                                    .Where(y => y.APLY_NO == x.APLY_NO)
                                    .AsEnumerable()
                                    .Select((a, b) => BlankNoteAplyToBillViewModel(a, code, b, _Inventory_types, false)));
                });
            }
            return(result);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 修改申請單記錄檔
        /// </summary>
        /// <param name="data">修改資料</param>
        /// <param name="custodianFlag">是否為保管科</param>
        /// <param name="searchData">申請表單查詢顯示區塊ViewModel</param>
        /// <param name="userId">userId</param>
        /// <returns></returns>
        public MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> > updateAplyNo(TreasuryAccessViewModel data, bool custodianFlag, TreasuryAccessApprSearchViewModel searchData, string userId)
        {
            MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> > result = new MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> >();

            result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription();
            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var updateData = db.TREA_APLY_REC.FirstOrDefault(x => x.APLY_NO == data.vAplyNo);
                if (updateData != null)
                {
                    if (updateData.LAST_UPDATE_DT > data.vLastUpdateTime)
                    {
                        return(result);
                    }
                    updateData.LAST_UPDATE_UID      = userId;
                    updateData.ACCESS_REASON        = data.vAccessReason;
                    updateData.EXPECTED_ACCESS_DATE = TypeTransfer.stringToDateTimeN(data.vExpectedAccessDate);
                    updateData.LAST_UPDATE_DT       = DateTime.Now;
                    try
                    {
                        db.SaveChanges();
                        result.DESCRIPTION = Ref.MessageType.update_Success.GetDescription();
                        result.RETURN_FLAG = true;
                        result.Datas       = GetCustodySearchDetail(searchData);
                    }
                    catch (DbUpdateException ex)
                    {
                        result.DESCRIPTION = ex.exceptionMessage();
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 19
0
 /// <summary>
 /// 庫存異動資料-覆核
 /// </summary>
 /// <param name="db">Entities</param>
 /// <param name="itemIDs">覆核的申請單號</param>
 /// <param name="logStr">log</param>
 /// <param name="dt">執行時間</param>
 /// <returns></returns>
 public Tuple <bool, string> CDCApproved(TreasuryDBEntities db, List <string> itemIDs, string logStr, DateTime dt)
 {
     foreach (var itemID in itemIDs)
     {
         var _CA = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == itemID);
         if (_CA != null)
         {
             _CA.INVENTORY_STATUS = "1"; //在庫
             _CA.CA_USE           = GetNewValue(_CA.CA_USE, _CA.CA_USE_AFT);
             _CA.CA_USE_AFT       = null;
             _CA.CA_DESC          = GetNewValue(_CA.CA_DESC, _CA.CA_DESC_AFT);
             _CA.CA_DESC_AFT      = null;
             _CA.BANK             = GetNewValue(_CA.BANK, _CA.BANK_AFT);
             _CA.BANK_AFT         = null;
             _CA.CA_NUMBER        = GetNewValue(_CA.CA_NUMBER, _CA.CA_NUMBER_AFT);
             _CA.CA_NUMBER_AFT    = null;
             _CA.MEMO             = GetNewValue(_CA.MEMO, _CA.MEMO_AFT);
             _CA.MEMO_AFT         = null;
             _CA.LAST_UPDATE_DT   = dt;
             logStr = _CA.modelToString(logStr);
         }
         else
         {
             return(new Tuple <bool, string>(false, logStr));
         }
     }
     return(new Tuple <bool, string>(true, logStr));
 }
Ejemplo n.º 20
0
        public override DataSet GetData(List <reportParm> parms)
        {
            var resultsTable = new DataSet();

            List <BillReportModel> reportDatas = new List <BillReportModel>();

            var    _Parameters = new List <SqlParameter>();
            string aply_No     = parms.Where(x => x.key == "aply_No").FirstOrDefault()?.value ?? string.Empty;

            SetDetail(aply_No);

            var Bill           = new Bill();
            var billController = new BillController();

            var _data  = (List <BillViewModel>)Bill.GetTempData(aply_No);
            var _data2 = (List <BillViewModel>)Bill.GetDayData(null, null, aply_No);

            var tempData = billController.SetBillViewRowNum(_data);
            var dayData  = billController.SetBillTakeOutViewModelGroup(_data2);

            var checkTypes = new List <SYS_CODE>();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                checkTypes = db.SYS_CODE.AsNoTracking()
                             .Where(x => x.CODE_TYPE == "CHECK_TYPE").ToList();
            }

            reportDatas.AddRange(tempData.Select(x => new BillReportModel()
            {
                ROW            = x.vRowNum,
                TYPE           = "1",
                ISSUING_BANK   = x.vIssuingBank,
                CHECK_TYPE     = checkTypes.FirstOrDefault(y => y.CODE == x.vCheckType)?.CODE_VALUE ?? x.vCheckType,
                CHECK_NO_TRACK = x.vCheckNoTrack,
                CHECK_NO_B     = x.vCheckNoB,
                CHECK_NO_E     = x.vCheckNoE,
                Total          = TypeTransfer.stringToInt(x.vCheckTotalNum) == 0 ? TypeTransfer.stringToInt(x.vTakeOutTotalNum) : TypeTransfer.stringToInt(x.vCheckTotalNum),
                ReMainTotalNum = TypeTransfer.stringToInt(x.vReMainTotalNum)
            }));
            reportDatas.AddRange(dayData.Select(x => new BillReportModel()
            {
                ROW            = x.vRowNum,
                TYPE           = "2",
                Status         = x.vStatus,
                ISSUING_BANK   = x.vIssuingBank,
                CHECK_TYPE     = checkTypes.FirstOrDefault(y => y.CODE == x.vCheckType)?.CODE_VALUE ?? x.vCheckType,
                CHECK_NO_TRACK = x.vCheckNoTrack,
                CHECK_NO_B     = x.vCheckNoB,
                CHECK_NO_E     = x.vCheckNoE,
                Total          = TypeTransfer.stringToInt(x.vCheckTotalNum),
                ReMainTotalNum = TypeTransfer.stringToInt(x.vReMainTotalNum)
            }));

            resultsTable.Tables.Add(reportDatas.ToDataTable());

            SetExtensionParm();
            return(resultsTable);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// 查詢
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public List <SpecifiedTimeTreasurySearchDetailViewModel> GetSearchDetail(SpecifiedTimeTreasurySearchViewModel data)
        {
            List <SpecifiedTimeTreasurySearchDetailViewModel> result = new List <SpecifiedTimeTreasurySearchDetailViewModel>();

            if (!data.vAPLY_DT_S.Any() || !data.vAPLY_DT_E.Any()) // 無查詢日期
            {
                return(result);
            }
            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                DateTime?_vAPLY_DT_S = TypeTransfer.stringToDateTimeN(data.vAPLY_DT_S);
                DateTime?_vAPLY_DT_E = TypeTransfer.stringToDateTimeN(data.vAPLY_DT_E).DateToLatestTime();

                List <string> notShowList = new List <string>();
                notShowList.Add("D1001");
                notShowList.Add("D1002");
                notShowList.Add("D1003");

                var _data = db.TREA_OPEN_REC.AsNoTracking()
                            .Where(x => x.OPEN_TREA_TYPE == "2")                                                                    //開庫類型: 2.指定時間開庫
                            .Where(x => x.CREATE_DT >= _vAPLY_DT_S, _vAPLY_DT_S != null)                                            //申請日期(起)
                            .Where(x => x.CREATE_DT <= _vAPLY_DT_E, _vAPLY_DT_E != null)                                            //申請日期(迄)
                            .Where(x => x.TREA_REGISTER_ID == data.vTREA_REGISTER_ID, !data.vTREA_REGISTER_ID.IsNullOrWhiteSpace()) //工作單號
                            .OrderBy(x => x.CREATE_DT);

                var _item = db.TREA_ITEM.AsNoTracking()
                            .Select(x => new { x.ITEM_ID, x.ITEM_DESC }).ToList();

                var _query =
                    _data.Join(db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "APPR_STATUS"),
                               x => x.APPR_STATUS, z => z.CODE, (x, z) => new { open = x, sysCode = z })
                    .AsEnumerable()
                    .Select((x, index) => new SpecifiedTimeTreasurySearchDetailViewModel()
                {
                    vINDEX            = (index + 1).ToString(),
                    vCREATE_DT        = x.open.CREATE_DT?.ToString("yyyy/MM/dd"),
                    vTREA_REGISTER_ID = x.open.TREA_REGISTER_ID,
                    vAPLY_STATUS      = x.sysCode.CODE_VALUE,
                    vOPEN_TREA_REASON = "取" +
                                        string.Join("及", x.open.OPEN_TREA_REASON.Split(';').ToList()
                                                    .Where(z => !notShowList.Contains(z))
                                                    .Select(z => _item.FirstOrDefault(y => y.ITEM_ID == z)?.ITEM_DESC)
                                                    .Where(z => z != null)
                                                    ),
                    vOPEN_TREA_TIME      = x.open.OPEN_TREA_TIME,
                    vMEMO                = x.open.MEMO,
                    vOPEN_TREA_DATE      = x.open.OPEN_TREA_DATE.ToString("yyyy/MM/dd"),
                    vOPEN_TREA_REASON_ID = x.open.OPEN_TREA_REASON,
                    vEXEC_TIME_B         = x.open.EXEC_TIME_B,
                    vEXEC_TIME_E         = x.open.EXEC_TIME_E,
                    vCREATE_UID          = x.open.CREATE_UID,
                    vAPLY_STATUS_ID      = x.open.APPR_STATUS,
                    vAPPR_UID            = x.open.APPR_UID
                });

                result.AddRange(_query);
            }
            return(result);
        }
Ejemplo n.º 22
0
        public List <AlreadyConfirmedSearchDetailViewModel> GetSearchDetail(AlreadyConfirmedSearchViewModel searchData)
        {
            List <AlreadyConfirmedSearchDetailViewModel> result = new List <AlreadyConfirmedSearchDetailViewModel>();

            if (searchData.vDT_From.IsNullOrWhiteSpace() || searchData.vDT_To.IsNullOrWhiteSpace()) // 無查詢日期
            {
                return(result);
            }

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                DateTime?     _vDT_From     = TypeTransfer.stringToDateTimeN(searchData.vDT_From);
                DateTime?     _vDT_To       = TypeTransfer.stringToDateTimeN(searchData.vDT_To).DateToLatestTime();
                List <string> register_List = new List <string>();

                var emps                     = GetEmps();
                var _TREA_OPEN_REC           = db.TREA_OPEN_REC.AsNoTracking();
                var _TREA_APLY_REC           = db.TREA_APLY_REC.AsNoTracking().AsQueryable();
                var _SYS_CODE_OPEN_TREA_TYPE = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE").ToList();
                var _SYS_CODE_ACCESS_TYPE    = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "ACCESS_TYPE").ToList();
                var _TREA_ITEM               = db.TREA_ITEM.AsNoTracking();
                var _ITEM_SEAL               = db.ITEM_SEAL.AsNoTracking();
                var _OTHER_ITEM_APLY         = db.OTHER_ITEM_APLY.AsNoTracking();

                if (_TREA_OPEN_REC.Where(x => x.OPEN_TREA_TYPE == searchData.vOPEN_TREA_TYPE, !searchData.vOPEN_TREA_TYPE.IsNullOrWhiteSpace()).ToList().Any())
                {
                    register_List.AddRange(_TREA_OPEN_REC.Where(x => x.OPEN_TREA_TYPE == searchData.vOPEN_TREA_TYPE, !searchData.vOPEN_TREA_TYPE.IsNullOrWhiteSpace()).Select(x => x.TREA_REGISTER_ID).ToList());
                }

                _TREA_APLY_REC = _TREA_APLY_REC
                                 .Where(x => x.CONFIRM_DT >= _vDT_From, _vDT_From != null)
                                 .Where(x => x.CONFIRM_DT <= _vDT_To, _vDT_To != null)
                                 .Where(x => register_List.Contains(x.TREA_REGISTER_ID), register_List.Any())
                                 .Where(x => x.TREA_REGISTER_ID == searchData.vTREA_REGISTER_ID, !searchData.vTREA_REGISTER_ID.IsNullOrWhiteSpace())
                                 .Where(x => x.CONFIRM_UID == searchData.vConfirm_Id, !searchData.vConfirm_Id.IsNullOrWhiteSpace())
                                 .Where(x => x.CONFIRM_UID != null && x.CONFIRM_UID != "");
                //.Where(x => !x.CONFIRM_UID.IsNullOrWhiteSpace());

                result = _TREA_APLY_REC.AsEnumerable()
                         .Select(x => new AlreadyConfirmedSearchDetailViewModel()
                {
                    vACTUAL_PUT_TIME  = _TREA_OPEN_REC.FirstOrDefault(y => y.TREA_REGISTER_ID == x.TREA_REGISTER_ID)?.ACTUAL_PUT_TIME.dateTimeToStr(),
                    vTREA_REGISTER_ID = x.TREA_REGISTER_ID,
                    vOPEN_TREA_TYPE   = _SYS_CODE_OPEN_TREA_TYPE.FirstOrDefault(y => y.CODE == _TREA_OPEN_REC.FirstOrDefault(z => z.TREA_REGISTER_ID == x.TREA_REGISTER_ID)?.OPEN_TREA_TYPE)?.CODE_VALUE,
                    //vConfirm_Id = string.Format("{0}-{1}", !x.TREA_REGISTER_ID.IsNullOrWhiteSpace() ? x.ACTUAL_ACCESS_UID : x.CONFIRM_UID, !x.TREA_REGISTER_ID.IsNullOrWhiteSpace() ? GetUserInfo(x.ACTUAL_ACCESS_UID).EMP_Name : GetUserInfo(x.CONFIRM_UID).EMP_Name),
                    vConfirm_Id    = $@"{x.CONFIRM_UID}-{emps.FirstOrDefault(y => y.USR_ID == x.CONFIRM_UID)?.EMP_NAME?.Trim()}",
                    vITEM_DESC     = _TREA_ITEM.FirstOrDefault(y => y.ITEM_ID == x.ITEM_ID)?.ITEM_DESC,
                    vSEAL_DESC     = _TREA_ITEM.FirstOrDefault(y => y.ITEM_ID == x.ITEM_ID)?.ITEM_OP_TYPE == "2" ? _ITEM_SEAL.FirstOrDefault(z => z.ITEM_ID == _OTHER_ITEM_APLY.FirstOrDefault(a => a.APLY_NO == x.APLY_NO).ITEM_ID)?.SEAL_DESC: null,
                    vACCESS_TYPE   = _TREA_ITEM.FirstOrDefault(y => y.ITEM_ID == x.ITEM_ID)?.ITEM_OP_TYPE == "2" ? _SYS_CODE_ACCESS_TYPE.FirstOrDefault(z => z.CODE == x.ACCESS_TYPE)?.CODE_VALUE : null,
                    vAPLY_NO       = x.APLY_NO,
                    vACCESS_REASON = x.ACCESS_REASON,
                    hITEM_ID       = x.ITEM_ID,
                    hITEM_OP_TYPE  = _TREA_ITEM.FirstOrDefault(y => y.ITEM_ID == x.ITEM_ID)?.ITEM_OP_TYPE
                }).ToList();
            }
            return(result);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 共用存檔 申請單紀錄檔 回傳參數1 (APLY_NO) 回傳參數2 (log訊息)
        /// </summary>
        /// <param name="db">Entity</param>
        /// <param name="taData">viewModel</param>
        /// <param name="logStr">紀錄訊息</param>
        /// <param name="dt">修改時間</param>
        /// <returns></returns>
        protected Tuple <string, string> SaveTREA_APLY_REC(TreasuryDBEntities db, TreasuryAccessViewModel taData, string logStr, DateTime dt)
        {
            //取得流水號
            SysSeqDao sysSeqDao = new SysSeqDao();
            String    qPreCode  = DateUtil.getCurChtDateTime().Split(' ')[0];
            var       cId       = sysSeqDao.qrySeqNo("G6", qPreCode).ToString().PadLeft(3, '0');

            if (logStr.IsNullOrWhiteSpace())
            {
                logStr = string.Empty;
            }

            #region 申請單紀錄檔
            var _TAR = new TREA_APLY_REC()
            {
                APLY_NO              = $@"G6{qPreCode}{cId}",                                      //申請單號 G6+系統日期YYYMMDD(民國年)+3碼流水號
                APLY_FROM            = Ref.AccessProjectStartupType.M.ToString(),                  //人工
                ITEM_ID              = taData.vItem,                                               //申請項目
                ACCESS_TYPE          = taData.vAccessType,                                         //存入(P) or 取出(G)
                ACCESS_REASON        = taData.vAccessReason,                                       //申請原因
                APLY_STATUS          = Ref.AccessProjectFormStatus.A01.ToString(),                 //表單申請
                EXPECTED_ACCESS_DATE = TypeTransfer.stringToDateTimeN(taData.vExpectedAccessDate), //預計存取日期
                APLY_UNIT            = taData.vAplyUnit,                                           //申請單位
                APLY_UID             = taData.vAplyUid,                                            //申請人
                APLY_DT              = dt,
                CREATE_UNIT          = taData.vCreateUnit,                                         //新增單位
                CREATE_UID           = taData.vCreateUid,                                          //新增人
                CREATE_DT            = dt,
                LAST_UPDATE_UID      = taData.vCreateUid,
                LAST_UPDATE_DT       = dt
            };
            if (taData.vAplyUid != taData.vCreateUid) //當申請人不是新增人(代表為保管單位代申請)
            {
                _TAR.CUSTODY_UID = taData.vCreateUid; //保管單位直接帶 新增人
                _TAR.CUSTODY_DT  = dt;
            }
            logStr += _TAR.modelToString(logStr);
            db.TREA_APLY_REC.Add(_TAR);
            #endregion

            #region 申請單歷程檔
            var _ARH = new APLY_REC_HIS()
            {
                APLY_NO     = _TAR.APLY_NO,
                APLY_STATUS = _TAR.APLY_STATUS,
                PROC_DT     = dt,
                PROC_UID    = _TAR.CREATE_UID
            };
            logStr += _ARH.modelToString(logStr);
            db.APLY_REC_HIS.Add(_ARH);
            #endregion

            return(new Tuple <string, string>(_TAR.APLY_NO, logStr));
        }
Ejemplo n.º 24
0
 /// <summary>
 /// 作廢
 /// </summary>
 /// <param name="db">Entity</param>
 /// <param name="aply_No">作廢單號</param>
 /// <param name="access_Type">取出或存入</param>
 /// <param name="logStr">log 字串</param>
 /// <param name="dt">更新時間</param>
 /// <returns></returns>
 public Tuple <bool, string> ObSolete(TreasuryDBEntities db, string aply_No, string access_Type, string logStr, DateTime dt)
 {
     if (access_Type == Ref.AccessProjectTradeType.G.ToString()) //取出狀態資料要復原
     {
         return(Recover(db, aply_No, logStr, dt, false));
     }
     else
     {
         return(new Tuple <bool, string>(true, logStr));
     }
 }
Ejemplo n.º 25
0
        //取得項目順序最大值+1
        private int GetItem_Order(string vAccess_Type)
        {
            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var MaxItem_Order = db.DEP_CHK_ITEM.AsNoTracking()
                                    .Where(x => x.ACCESS_TYPE == vAccess_Type)
                                    .Max(x => x.ITEM_ORDER);

                return((int)(MaxItem_Order + 1));
            }
        }
Ejemplo n.º 26
0
 /// <summary>
 /// 刪除申請
 /// </summary>
 /// <param name="db">Entity</param>
 /// <param name="aply_No">作廢單號</param>
 /// <param name="access_Type">取出或存入</param>
 /// <param name="logStr">log 字串</param>
 /// <param name="dt">更新時間</param>
 /// <returns></returns>
 public Tuple <bool, string> CancelApply(TreasuryDBEntities db, string aply_No, string access_Type, string logStr, DateTime dt)
 {
     if (access_Type == Ref.AccessProjectTradeType.G.ToString()) //取出狀態資料要復原
     {
         return(Recover(db, aply_No, logStr, dt, true));
     }
     else
     {
         db.BLANK_NOTE_APLY.RemoveRange(db.BLANK_NOTE_APLY.Where(x => x.APLY_NO == aply_No));
         return(new Tuple <bool, string>(true, logStr));
     }
 }
Ejemplo n.º 27
0
        /// <summary>
        /// 取消申請
        /// </summary>
        /// <param name="AplyNo"></param>
        /// <param name="searchModel"></param>
        /// <param name="cUserId"></param>
        /// <returns></returns>
        public MSGReturnModel <string> ResetData(string AplyNo, ItemChargeUnitSearchViewModel searchModel, string cUserId)
        {
            MSGReturnModel <string> result = new MSGReturnModel <string>();
            DateTime dt = DateTime.Now;

            try
            {
                if (AplyNo != null)
                {
                    using (TreasuryDBEntities db = new TreasuryDBEntities())
                    {
                        var _ITEM_CHARGE_UNIT_HIS = db.ITEM_CHARGE_UNIT_HIS.FirstOrDefault(x => x.APLY_NO == AplyNo);

                        if (_ITEM_CHARGE_UNIT_HIS.APLY_UID == cUserId)
                        {
                            var _ITEM_CHARGE_UNIT = db.ITEM_CHARGE_UNIT.FirstOrDefault(x => x.CHARGE_UNIT_ID == _ITEM_CHARGE_UNIT_HIS.CHARGE_UNIT_ID);
                            switch (_ITEM_CHARGE_UNIT_HIS.EXEC_ACTION)
                            {
                            case "A":
                                _ITEM_CHARGE_UNIT_HIS.APPR_STATUS = "4";

                                db.ITEM_CHARGE_UNIT.Remove(_ITEM_CHARGE_UNIT);
                                break;

                            case "U":
                                _ITEM_CHARGE_UNIT_HIS.APPR_STATUS = "4";

                                _ITEM_CHARGE_UNIT.DATA_STATUS     = "1";
                                _ITEM_CHARGE_UNIT.LAST_UPDATE_DT  = dt;
                                _ITEM_CHARGE_UNIT.LAST_UPDATE_UID = cUserId;
                                _ITEM_CHARGE_UNIT.FREEZE_DT       = null;
                                _ITEM_CHARGE_UNIT.FREEZE_UID      = null;
                                break;
                            }
                        }
                        else
                        {
                            result.DESCRIPTION = "非申請者無法取消申請";
                        }
                    }
                }
                else
                {
                    result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription();
                }
            }
            catch (Exception ex)
            {
                result.DESCRIPTION = ex.exceptionMessage();
            }
            return(result);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// 查詢畫面資料
        /// </summary>
        /// <param name="vAplyUnit">申請單位</param>
        /// <param name="aplyNo">取出單號</param>
        /// <returns></returns>
        public List <CAViewModel> GetDbDataByUnit(string vAplyUnit = null, string aplyNo = null)
        {
            var result = new List <CAViewModel>();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var dept = intra.getDept(vAplyUnit); //抓取單位
                if (!vAplyUnit.IsNullOrWhiteSpace())
                {
                    result = db.ITEM_CA.AsNoTracking()
                             .Where(x => x.CHARGE_DEPT == dept.UP_DPT_CD.Trim() && x.CHARGE_SECT == dept.DPT_CD.Trim(), !dept.Dpt_type.IsNullOrWhiteSpace() && dept.Dpt_type.Trim() == "04") //單位為科
                             .Where(x => x.CHARGE_DEPT == dept.DPT_CD.Trim(), !dept.Dpt_type.IsNullOrWhiteSpace() && dept.Dpt_type.Trim() == "03")                                           //單位為部
                             .Where(x => x.INVENTORY_STATUS == "1")                                                                                                                          //庫存
                             .AsEnumerable()
                             .Select(x =>
                                     new CAViewModel()
                    {
                        vItemId           = x.ITEM_ID,
                        vStatus           = Ref.AccessInventoryType._1.GetDescription(),
                        vCA_Desc          = x.CA_DESC,
                        vCA_Use           = x.CA_USE,
                        vBank             = x.BANK,
                        vCA_Number        = x.CA_NUMBER,
                        vMemo             = x.MEMO,
                        vtakeoutFlag      = false,
                        vLast_Update_Time = x.LAST_UPDATE_DT
                    }).ToList();
                }
                if (!aplyNo.IsNullOrWhiteSpace())
                {
                    var itemIds = db.OTHER_ITEM_APLY.AsNoTracking()
                                  .Where(x => x.APLY_NO == aplyNo).Select(x => x.ITEM_ID).ToList();
                    result.AddRange(db.ITEM_CA.AsNoTracking().Where(
                                        x => itemIds.Contains(x.ITEM_ID)).AsEnumerable()
                                    .Select(x =>
                                            new CAViewModel()
                    {
                        vItemId           = x.ITEM_ID,
                        vStatus           = Ref.AccessInventoryType._4.GetDescription(),
                        vCA_Desc          = x.CA_DESC,
                        vCA_Use           = x.CA_USE,
                        vBank             = x.BANK,
                        vCA_Number        = x.CA_NUMBER,
                        vMemo             = x.MEMO,
                        vtakeoutFlag      = true,
                        vLast_Update_Time = x.LAST_UPDATE_DT
                    }));
                }
            }
            return(result);
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 檢查開庫紀錄檔是否有狀態不為E01的單號
        /// </summary>
        /// <returns></returns>
        public List <string> CheckRegisterId()
        {
            List <string> result = new List <string>();
            string        status = Ref.AccessProjectFormStatus.E01.ToString(); //已完成出入庫,通知申請人員

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _TREA_OPEN_REC = db.TREA_OPEN_REC.AsNoTracking();
                result = _TREA_OPEN_REC
                         .Where(x => x.REGI_STATUS != status && x.APPR_STATUS != "4")
                         .Select(x => x.TREA_REGISTER_ID).ToList();
            }
            return(result);
        }
Ejemplo n.º 30
0
        public Tuple <List <SelectOption>, List <SelectOption>, List <SelectOption> > GetFirstTimeData()
        {
            List <SelectOption> IsConfirmed_List    = new List <SelectOption>();
            List <SelectOption> OPEN_TREA_TYPE_List = new List <SelectOption>();
            List <SelectOption> Confirm_Id_List     = new List <SelectOption>();

            IsConfirmed_List.Add(new SelectOption()
            {
                Value = "Y", Text = "已確認"
            });
            IsConfirmed_List.Add(new SelectOption()
            {
                Value = "N", Text = "未確認"
            });
            try
            {
                using (TreasuryDBEntities db = new TreasuryDBEntities())
                {
                    var emps = GetEmps();
                    var _SYS_CODE_OPEN_TREA_TYPE = db.SYS_CODE.AsNoTracking();
                    var _TREA_APLY_REC           = db.TREA_APLY_REC.AsNoTracking();

                    //開庫類型
                    OPEN_TREA_TYPE_List = _SYS_CODE_OPEN_TREA_TYPE.Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE")
                                          .OrderBy(x => x.ISORTBY)
                                          .Select(x => new SelectOption()
                    {
                        Value = x.CODE,
                        Text  = x.CODE_VALUE
                    }).ToList();

                    //確認人員
                    Confirm_Id_List.AddRange(_TREA_APLY_REC
                                             .Where(x => x.CONFIRM_UID != null)
                                             .AsEnumerable()
                                             .Select(x => new SelectOption()
                    {
                        Value = x.CONFIRM_UID,
                        Text  = string.Format("{0}-{1}", x.CONFIRM_UID, emps.FirstOrDefault(y => y.USR_ID == x.CONFIRM_UID)?.EMP_NAME?.Trim())
                    }));
                    Confirm_Id_List = Confirm_Id_List.Distinct(new SelectOption_Comparer()).OrderBy(x => x.Value).ToList();
                }
            }
            catch (Exception ex)
            {
                var message = ex.exceptionMessage();
                throw ex;
            }
            return(new Tuple <List <SelectOption>, List <SelectOption>, List <SelectOption> >(IsConfirmed_List, OPEN_TREA_TYPE_List, Confirm_Id_List));
        }