Esempio n. 1
0
        public ActionResult View(string AplyNo, TreasuryAccessViewModel data, Ref.OpenPartialViewType type)
        {
            ViewBag.OPVT             = type;
            ViewBag.dBILL_Check_Type = new SelectList(Bill.GetCheckType(), "Value", "Text");
            var ibs = Bill.GetIssuing_Bank();

            ViewBag.dBILL_Issuing_Bank = new SelectList(ibs, "Value", "Text");
            var _dActType = GetActType(type, AplyNo);   //畫面是否可以CRUD

            if (AplyNo.IsNullOrWhiteSpace())
            {
                ViewBag.dAccess = null;
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, data);
                ResetBillViewModel(data.vAccessType);
            }
            else
            {
                var viewModel = TreasuryAccess.GetTreasuryAccessViewModel(AplyNo);
                ViewBag.dAccess = viewModel.vAccessType;
                if (viewModel.vAccessType == Ref.AccessProjectTradeType.G.ToString())
                {
                    _dActType = false; //空白票據 取出預設只能檢視
                }
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, viewModel);
                ResetBillViewModel(viewModel.vAccessType, AplyNo);
            }
            ViewBag.dActType = _dActType;
            return(PartialView());
        }
Esempio n. 2
0
        public ActionResult View(string AplyNo, TreasuryAccessViewModel data, Ref.OpenPartialViewType type)
        {
            ViewBag.OPVT = type;
            var _dActType = GetActType(type, AplyNo);

            ViewBag.MarginpType   = new SelectList(Marginp.GetMarginp_Take_Of_Type(), "Value", "Text");
            ViewBag.MarginpItem   = new SelectList(Marginp.GetMarginpItem(), "Value", "Text");
            ViewBag.CustodianFlag = AccountController.CustodianFlag;
            if (AplyNo.IsNullOrWhiteSpace())
            {
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, data);
                resetMarginpViewModel(data.vAccessType);
            }
            else
            {
                ViewBag.dAccess = TreasuryAccess.GetAccessType(AplyNo);
                var viewModel = TreasuryAccess.GetTreasuryAccessViewModel(AplyNo);
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, viewModel);
                resetMarginpViewModel(viewModel.vAccessType, AplyNo, _dActType);
            }
            ViewBag.dActType = _dActType;
            return(PartialView());
        }
Esempio n. 3
0
        public JsonResult UpdateAplyNo(TreasuryAccessViewModel data)
        {
            var cdata = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessSearchUpdateViewData);

            if (AccountController.CustodianFlag)
            {
                cdata.vAccessReason       = data.vAccessReason;
                cdata.vExpectedAccessDate = data.vExpectedAccessDate;
                cdata.vAplyUnit           = data.vAplyUnit;
                cdata.vAplyUid            = data.vAplyUid;
            }
            else
            {
                cdata.vAccessReason       = data.vAccessReason;
                cdata.vExpectedAccessDate = data.vExpectedAccessDate;
            }
            var searchData = (TreasuryAccessSearchViewModel)Cache.Get(CacheList.TreasuryAccessSearchData);
            var result     = TreasuryAccess.updateAplyNo(cdata, AccountController.CustodianFlag, searchData);

            if (result.RETURN_FLAG)
            {
                var data1 = TreasuryAccess.GetByAplyNo(cdata.vAplyNo);
                Cache.Invalidate(CacheList.TreasuryAccessSearchUpdateViewData);
                Cache.Set(CacheList.TreasuryAccessSearchUpdateViewData, data1);
                var data2 = TreasuryAccess.GetTreasuryAccessViewModel(cdata.vAplyNo);
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, data2);
                Cache.Invalidate(CacheList.TreasuryAccessSearchDetailViewData);
                Cache.Set(CacheList.TreasuryAccessSearchDetailViewData, result.Datas);
            }
            return(Json(result));
        }
Esempio n. 4
0
        public JsonResult GetItemBook(int groupNo, string aplyNo)
        {
            MSGReturnModel <StockDetailViewModel> result = new MSGReturnModel <StockDetailViewModel>();

            result.RETURN_FLAG = false;
            result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            if (groupNo == 0 && Cache.IsSet(CacheList.StockMainData))
            {
                var data = (StockDetailViewModel)Cache.Get(CacheList.StockMainData);
                result.RETURN_FLAG = true;
            }
            else if (groupNo == -1)
            {
                Cache.Invalidate(CacheList.StockMainData);
                Cache.Set(CacheList.StockMainData, new List <StockDetailViewModel>());
                result.RETURN_FLAG = false;
            }
            else
            {
                if (Cache.IsSet(CacheList.TreasuryAccessViewData))
                {
                    TreasuryAccessViewModel viewdata = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                    var _data = Stock.GetDataByGroupNo(groupNo, viewdata.vAplyUnit, aplyNo);
                    Cache.Invalidate(CacheList.StockMainData);
                    Cache.Invalidate(CacheList.StockTempData);
                    Cache.Set(CacheList.StockMainData, _data);
                    Cache.Set(CacheList.StockTempData, new List <StockDetailViewModel>());
                    result.RETURN_FLAG = true;
                }
            }
            return(Json(result));
        }
Esempio n. 5
0
        public JsonResult ApplyTempData(EstateModel model)
        {
            MSGReturnModel <IEnumerable <ITreaItem> > result = new MSGReturnModel <IEnumerable <ITreaItem> >();

            result.RETURN_FLAG = false;
            var _detail = (List <SealViewModel>)Cache.Get(CacheList.SEALData);

            if (!_detail.Any())
            {
                result.DESCRIPTION = "無申請任何資料";
            }
            else if (Cache.IsSet(CacheList.TreasuryAccessViewData))
            {
                TreasuryAccessViewModel data = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                var _data = (List <SealViewModel>)Cache.Get(CacheList.SEALData);
                if (data.vAccessType == Ref.AccessProjectTradeType.G.ToString() && !_data.Any(x => x.vtakeoutFlag))
                {
                    result.DESCRIPTION = "無申請任何資料";
                }
                else
                {
                    result = Seal.ApplyAudit(_data, data);
                    if (result.RETURN_FLAG && !data.vAplyNo.IsNullOrWhiteSpace())
                    {
                        new TreasuryAccessController().ResetSearchData();
                    }
                }
            }
            else
            {
                result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            }
            return(Json(result));
        }
Esempio n. 6
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));
        }
Esempio n. 7
0
        public ActionResult View(string AplyNo, TreasuryAccessViewModel data, Ref.OpenPartialViewType type)
        {
            ViewBag.OPVT             = type;
            ViewBag.dStock_Area_Type = new SelectList(Stock.GetAreaType(), "Value", "Text");
            ViewBag.dStock_Type      = new SelectList(Stock.GetStockType(), "Value", "Text");
            ViewBag.CustodianFlag    = AccountController.CustodianFlag;

            var _dActType = GetActType(type, AplyNo);

            if (AplyNo.IsNullOrWhiteSpace())
            {
                if (data.vAccessType == Ref.AccessProjectTradeType.P.ToString())
                {
                    ViewBag.dStock_Name = new SelectList(Stock.GetStockName(), "Value", "Text");
                }
                else if (data.vAccessType == Ref.AccessProjectTradeType.G.ToString())
                {
                    ViewBag.dStock_Name = new SelectList(Stock.GetStockName(data.vAplyUnit), "Value", "Text");
                }

                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, data);
                resetStockViewModel();
            }
            else
            {
                ViewBag.dAccess = TreasuryAccess.GetAccessType(AplyNo);

                var viewModel = TreasuryAccess.GetTreasuryAccessViewModel(AplyNo);
                if (viewModel.vAccessType == Ref.AccessProjectTradeType.P.ToString())
                {
                    ViewBag.dStock_Name = new SelectList(Stock.GetStockName(), "Value", "Text");
                }
                else if (viewModel.vAccessType == Ref.AccessProjectTradeType.G.ToString() && _dActType)
                {
                    ViewBag.dStock_Name = new SelectList(Stock.GetStockName(viewModel.vAplyUnit, AplyNo), "Value", "Text");
                }
                else if (viewModel.vAccessType == Ref.AccessProjectTradeType.G.ToString() && !_dActType)
                {
                    ViewBag.dStock_Name = new SelectList(Stock.GetStockName(viewModel.vAplyUnit), "Value", "Text");
                }
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, viewModel);
                resetStockViewModel(AplyNo);
                var _data = (StockViewModel)Cache.Get(CacheList.StockData);
                ViewBag.group = _data.vStockDate.GroupNo;
            }

            ViewBag.dActType = _dActType;

            return(PartialView());
        }
Esempio n. 8
0
        public ActionResult View(string AplyNo, TreasuryAccessViewModel data, Ref.OpenPartialViewType type)
        {
            ViewBag.OPVT           = type;
            ViewBag.ESTATE_From_No = new SelectList(Estate.GetEstateFromNo(), "Value", "Text");
            ViewBag.CustodianFlag  = AccountController.CustodianFlag;
            var _dActType = GetActType(type, AplyNo);

            if (AplyNo.IsNullOrWhiteSpace())
            {
                if (data.vAccessType == Ref.AccessProjectTradeType.P.ToString())
                {
                    ViewBag.ESTATE_Book_No       = new SelectList(Estate.GetBookNo(), "Value", "Text");
                    ViewBag.ESTATE_Building_Name = new SelectList(Estate.GetBuildName(), "Value", "Text");
                }
                else if (data.vAccessType == Ref.AccessProjectTradeType.G.ToString())
                {
                    ViewBag.ESTATE_Book_No       = new SelectList(Estate.GetBookNo(data.vAplyUnit), "Value", "Text");
                    ViewBag.ESTATE_Building_Name = new SelectList(Estate.GetBuildName(data.vAplyUnit), "Value", "Text");
                }
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, data);
                ResetEstateViewModel();
            }
            else
            {
                var viewModel = TreasuryAccess.GetTreasuryAccessViewModel(AplyNo);
                ViewBag.dAccess = viewModel.vAccessType;
                if (viewModel.vAccessType == Ref.AccessProjectTradeType.P.ToString())
                {
                    ViewBag.ESTATE_Book_No       = new SelectList(Estate.GetBookNo(), "Value", "Text");
                    ViewBag.ESTATE_Building_Name = new SelectList(Estate.GetBuildName(), "Value", "Text");
                }
                else if (viewModel.vAccessType == Ref.AccessProjectTradeType.G.ToString() && _dActType)
                {
                    ViewBag.ESTATE_Book_No       = new SelectList(Estate.GetBookNo(viewModel.vAplyUnit, AplyNo), "Value", "Text");
                    ViewBag.ESTATE_Building_Name = new SelectList(Estate.GetBuildName(viewModel.vAplyUnit, AplyNo), "Value", "Text");
                }
                else if (viewModel.vAccessType == Ref.AccessProjectTradeType.G.ToString() && !_dActType)
                {
                    ViewBag.ESTATE_Book_No       = new SelectList(Estate.GetBookNo(viewModel.vAplyUnit), "Value", "Text");
                    ViewBag.ESTATE_Building_Name = new SelectList(Estate.GetBuildName(viewModel.vAplyUnit), "Value", "Text");
                }
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, viewModel);
                ResetEstateViewModel(AplyNo, _dActType);
                var _data = (EstateViewModel)Cache.Get(CacheList.ESTATEAllData);
                ViewBag.group = _data.vGroupNo;
            }
            ViewBag.dActType = _dActType;
            return(PartialView());
        }
Esempio n. 9
0
        public JsonResult ApplyTempData()
        {
            MSGReturnModel <IEnumerable <ITreaItem> > result = new MSGReturnModel <IEnumerable <ITreaItem> >();

            if (Cache.IsSet(CacheList.TreasuryAccessViewData) && Cache.IsSet(CacheList.MargingData))
            {
                TreasuryAccessViewModel data = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                data.vCreateUid = AccountController.CurrentUserId;
                var _data = (List <MargingpViewModel>)Cache.Get(CacheList.MargingData);

                if (AccountController.CustodianFlag) //保管科
                {
                    if (_data.Any(x => x.vBook_No.IsNullOrWhiteSpace()))
                    {
                        result.RETURN_FLAG = false;
                        result.DESCRIPTION = Ref.MessageType.book_No_Error.GetDescription();
                        return(Json(result));
                    }
                }

                //取出勾選判斷
                if (data.vAccessType == Ref.AccessProjectTradeType.G.ToString())
                {
                    //判斷至少勾選一筆資料
                    var vDetail = ((List <MargingpViewModel>)Cache.Get(CacheList.MargingData)).Where(x => x.vTakeoutFlag == true).ToList();
                    if (!vDetail.Any())
                    {
                        _data = new List <MargingpViewModel>();
                    }
                }

                result = Marging.ApplyAudit(_data, data);
                if (result.RETURN_FLAG && !data.vAplyNo.IsNullOrWhiteSpace())
                {
                    new TreasuryAccessController().ResetSearchData();
                }
            }
            else
            {
                result.RETURN_FLAG = false;
                result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            }
            return(Json(result));
        }
Esempio n. 10
0
        public JsonResult ApplyTempData(ItemBookStock vStockDate, ItemBookStockModel vStockModel, string AccessType)
        {
            MSGReturnModel <IEnumerable <ITreaItem> > result = new MSGReturnModel <IEnumerable <ITreaItem> >();

            if (Cache.IsSet(CacheList.TreasuryAccessViewData) && Cache.IsSet(CacheList.StockData))
            {
                TreasuryAccessViewModel data = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                var _data = (StockViewModel)Cache.Get(CacheList.StockData);
                _data.vStockDate  = vStockDate;
                _data.vStockModel = vStockModel;
                if (AccessType == Ref.AccessProjectTradeType.P.ToString())
                {
                    _data.vDetail = (List <StockDetailViewModel>)Cache.Get(CacheList.StockTempData);
                }
                if (AccessType == Ref.AccessProjectTradeType.G.ToString())
                {
                    //判斷至少勾選一筆資料
                    var vDetail = ((List <StockDetailViewModel>)Cache.Get(CacheList.StockMainData)).Where(x => x.vTakeoutFlag == true).ToList();

                    if (vDetail.Any())
                    {
                        _data.vDetail = (List <StockDetailViewModel>)Cache.Get(CacheList.StockMainData);
                    }
                    else
                    {
                        _data.vDetail = new List <StockDetailViewModel>();
                    }
                }

                List <StockViewModel> _datas = new List <StockViewModel>();
                _datas.Add(_data);
                result = Stock.ApplyAudit(_datas, data);
                if (result.RETURN_FLAG && !data.vAplyNo.IsNullOrWhiteSpace())
                {
                    new TreasuryAccessController().ResetSearchData();
                }
            }
            else
            {
                result.RETURN_FLAG = false;
                result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            }
            return(Json(result));
        }
Esempio n. 11
0
        public JsonResult ApplyTempData(string AplyNo)
        {
            MSGReturnModel <IEnumerable <ITreaItem> > result = new MSGReturnModel <IEnumerable <ITreaItem> >();

            if (Cache.IsSet(CacheList.TreasuryAccessViewData) && Cache.IsSet(CacheList.BILLTempData))
            {
                TreasuryAccessViewModel data = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                result = Bill.ApplyAudit((List <BillViewModel>)Cache.Get(CacheList.BILLTempData), data);
                if (result.RETURN_FLAG && !data.vAplyNo.IsNullOrWhiteSpace())
                {
                    new TreasuryAccessController().ResetSearchData();
                }
            }
            else
            {
                result.RETURN_FLAG = false;
                result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            }
            return(Json(result));
        }
Esempio n. 12
0
        public JsonResult GetItemBook(int groupNo, bool accessType, string aplyNo)
        {
            MSGReturnModel <EstateModel> result = new MSGReturnModel <EstateModel>();

            result.RETURN_FLAG = false;
            result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            if (groupNo == 0 && Cache.IsSet(CacheList.ESTATEAllData)) //單純檢視畫面
            {
                var data = (EstateViewModel)Cache.Get(CacheList.ESTATEAllData);
                result.RETURN_FLAG = true;
                result.Datas       = data.vItem_Book;
            }
            else if (groupNo == -1) //大樓名稱選擇為第一項(空白),需清除明細資料
            {
                Cache.Invalidate(CacheList.ESTATEData);
                Cache.Set(CacheList.ESTATEData, new List <EstateDetailViewModel>());
                result.RETURN_FLAG = false;
            }
            else
            {
                if (Cache.IsSet(CacheList.TreasuryAccessViewData) && !accessType) //取出狀態
                {
                    TreasuryAccessViewModel viewdata = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                    var _data = Estate.GetDataByGroupNo(groupNo, viewdata.vAplyUnit, aplyNo);
                    Cache.Invalidate(CacheList.ESTATEData);
                    Cache.Set(CacheList.ESTATEData, _data);
                }
                var data = Estate.GetItemBook(groupNo);
                if (Cache.IsSet(CacheList.ESTATEAllData) && !data.BOOK_NO.IsNullOrWhiteSpace())
                {
                    var vdata = (EstateViewModel)Cache.Get(CacheList.ESTATEAllData);
                    vdata.vItem_Book = data;
                    Cache.Invalidate(CacheList.ESTATEAllData);
                    Cache.Set(CacheList.ESTATEAllData, vdata);
                    result.RETURN_FLAG = true;
                    result.Datas       = data;
                }
            }
            return(Json(result));
        }
Esempio n. 13
0
        /// <summary>
        /// 查詢申請單紀錄資料by單號
        /// </summary>
        /// <param name="aplyNo"></param>
        /// <returns></returns>
        public TreasuryAccessViewModel GetByAplyNo(string aplyNo)
        {
            var result = new TreasuryAccessViewModel();
            var depts  = new List <VW_OA_DEPT>();
            var emps   = new List <V_EMPLY2>();

            using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities())
            {
                depts = dbINTRA.VW_OA_DEPT.AsNoTracking().ToList();
                emps  = dbINTRA.V_EMPLY2.AsNoTracking().ToList();
            }
            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var formStatus    = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "FORM_STATUS").ToList();
                var treaItemTypes = db.TREA_ITEM.AsNoTracking().Where(x => x.IS_DISABLED == "N" && x.ITEM_OP_TYPE == "3").ToList();
                var data          = db.TREA_APLY_REC.AsNoTracking().FirstOrDefault(x => x.APLY_NO == aplyNo);
                if (data != null)
                {
                    result.vAplyNo             = data.APLY_NO;
                    result.vItem               = treaItemTypes.FirstOrDefault(x => x.ITEM_ID == data.ITEM_ID)?.ITEM_DESC;
                    result.vAplyUnitNmae       = depts.FirstOrDefault(y => y.DPT_CD.Trim() == data.APLY_UNIT)?.DPT_NAME; //1904112 Bianco 改為顯示名子
                    result.vAplyUidName        = emps.FirstOrDefault(x => x.USR_ID == data.APLY_UID)?.EMP_NAME;          //1904112 Bianco 改為顯示名子
                    result.vAplyUnit           = data.APLY_UNIT;
                    result.vAplyUid            = data.APLY_UID;
                    result.vChargeUnit         = depts.FirstOrDefault(y => y.DPT_CD.Trim() == data.APLY_UNIT)?.DPT_NAME;
                    result.vAccessType         = data.ACCESS_TYPE == "P" ? "存入" : data.ACCESS_TYPE == "G" ? "取出" : ""; //存入(P) or 取出(G)
                    result.vExpectedAccessDate = TypeTransfer.dateTimeNToString(data.EXPECTED_ACCESS_DATE);
                    result.vCreateDt           = TypeTransfer.dateTimeNToString(data.CREATE_DT);
                    var _createEmp = emps.FirstOrDefault(x => x.USR_ID == data.CREATE_UID);
                    result.vCreateUnit     = depts.FirstOrDefault(y => y.DPT_CD.Trim() == _createEmp?.DPT_CD?.Trim())?.DPT_NAME;
                    result.vCreateUid      = _createEmp?.EMP_NAME;
                    result.vCreateUnit_Id  = data.CREATE_UNIT;
                    result.vCreateUid_Id   = data.CREATE_UID;
                    result.vAccessReason   = data.ACCESS_REASON;
                    result.vLastUpdateTime = data.LAST_UPDATE_DT;
                }
            }
            return(result);
        }
Esempio n. 14
0
        public ActionResult View(string AplyNo, TreasuryAccessViewModel data, Ref.OpenPartialViewType type)
        {
            ViewBag.OPVT = type;
            var _dActType = GetActType(type, AplyNo);

            if (AplyNo.IsNullOrWhiteSpace())
            {
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, data);
                resetSealViewModel(data.vAccessType);
            }
            else
            {
                ViewBag.dAccess = TreasuryAccess.GetAccessType(AplyNo);
                var viewModel = TreasuryAccess.GetTreasuryAccessViewModel(AplyNo);
                Cache.Invalidate(CacheList.TreasuryAccessViewData);
                Cache.Set(CacheList.TreasuryAccessViewData, viewModel);
                resetSealViewModel(viewModel.vAccessType, AplyNo, _dActType);
            }
            ViewBag.dActType = _dActType;
            return(PartialView());
        }
Esempio n. 15
0
        /// <summary>
        /// 使用單號抓取 申請表單資料
        /// </summary>
        /// <param name="aplyNo">單號</param>
        /// <returns></returns>
        public TreasuryAccessViewModel GetTreasuryAccessViewModel(string aplyNo)
        {
            var result = new TreasuryAccessViewModel();

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var TAR = db.TREA_APLY_REC.AsNoTracking()
                          .FirstOrDefault(x => x.APLY_NO == aplyNo);
                if (TAR != null)
                {
                    result.vAplyNo             = TAR.APLY_NO;
                    result.vAccessReason       = TAR.ACCESS_REASON;
                    result.vAccessType         = TAR.ACCESS_TYPE;
                    result.vAplyUid            = TAR.APLY_UID;
                    result.vAplyUnit           = TAR.APLY_UNIT;
                    result.vItem               = TAR.ITEM_ID;
                    result.vExpectedAccessDate = TAR.EXPECTED_ACCESS_DATE?.ToString("yyyy/MM/dd");
                    result.vCreateUid          = TAR.CREATE_UID;
                    result.vCreateUnit         = TAR.CREATE_UNIT;
                    result.vLastUpdateTime     = TAR.LAST_UPDATE_DT;
                }
            }
            return(result);
        }
Esempio n. 16
0
        /// <summary>
        /// 修改申請單記錄檔
        /// </summary>
        /// <param name="data">修改資料</param>
        /// <param name="custodianFlag">是否為保管科</param>
        /// <param name="searchData">申請表單查詢顯示區塊ViewModel</param>
        /// <returns></returns>
        public MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> > updateAplyNo(TreasuryAccessViewModel data, bool custodianFlag, TreasuryAccessSearchViewModel searchData)
        {
            MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> > result = new MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> >();

            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);
                    }
                    if (custodianFlag)
                    {
                        updateData.APLY_UNIT = data.vAplyUnit;
                        updateData.APLY_UID  = data.vAplyUid;
                    }
                    updateData.ACCESS_REASON        = data.vAccessReason;
                    updateData.EXPECTED_ACCESS_DATE = TypeTransfer.stringToDateTimeN(data.vExpectedAccessDate);
                    updateData.LAST_UPDATE_UID      = AccountController.CurrentUserId;
                    updateData.LAST_UPDATE_DT       = DateTime.Now;
                    try
                    {
                        db.SaveChanges();
                        result.DESCRIPTION = Ref.MessageType.update_Success.GetDescription();
                        result.RETURN_FLAG = true;
                        result.Datas       = GetSearchDetail(searchData);
                    }
                    catch (DbUpdateException ex)
                    {
                        result.DESCRIPTION = ex.exceptionMessage();
                    }
                }
            }
            return(result);
        }
Esempio n. 17
0
        /// <summary>
        /// 申請覆核動作
        /// </summary>
        /// <param name="insertDatas"></param>
        /// <param name="taData"></param>
        /// <returns></returns>
        public MSGReturnModel <IEnumerable <ITreaItem> > ApplyAudit(IEnumerable <ITreaItem> insertDatas, TreasuryAccessViewModel taData)
        {
            var result = new MSGReturnModel <IEnumerable <ITreaItem> >();

            result.RETURN_FLAG = false;
            DateTime dt = DateTime.Now;

            try
            {
                if (insertDatas != null)
                {
                    //取得流水號
                    SysSeqDao sysSeqDao = new SysSeqDao();
                    String    qPreCode  = DateUtil.getCurChtDateTime().Split(' ')[0];
                    var       datas     = (List <BillViewModel>)insertDatas;
                    string    logStr    = string.Empty;       //log
                    var       item_Seq  = "E2";               //空白票卷流水號開頭編碼
                    if (!taData.vAplyNo.IsNullOrWhiteSpace()) //修改已存在申請單
                    {
                        if (datas.Any())
                        {
                            using (TreasuryDBEntities db = new TreasuryDBEntities())
                            {
                                var _APLY_STATUS = Ref.AccessProjectFormStatus.A01.ToString(); //表單申請

                                #region 申請單紀錄檔
                                var _TAR = db.TREA_APLY_REC.First(x => x.APLY_NO == taData.vAplyNo);
                                if (CustodyAppr.Contains(_TAR.APLY_STATUS))
                                {
                                    _APLY_STATUS     = CustodyConfirmStatus;
                                    _TAR.CUSTODY_UID = AccountController.CurrentUserId; //保管單位直接帶使用者
                                    _TAR.CUSTODY_DT  = dt;
                                }
                                else
                                {
                                    if (_TAR.APLY_STATUS != _APLY_STATUS)                          //申請紀錄檔狀態不是在表單申請狀態
                                    {
                                        _APLY_STATUS = Ref.AccessProjectFormStatus.A05.ToString(); //為重新申請案例
                                    }
                                }
                                _TAR.APLY_STATUS    = _APLY_STATUS;
                                _TAR.LAST_UPDATE_DT = dt;
                                logStr += _TAR.modelToString(logStr);
                                #endregion

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

                                #region 空白票據申請資料檔
                                List <BLANK_NOTE_APLY> updates = new List <BLANK_NOTE_APLY>();
                                List <BLANK_NOTE_APLY> inserts = new List <BLANK_NOTE_APLY>();

                                foreach (var item in datas)
                                {
                                    if (item.vItemId.StartsWith(item_Seq)) // 舊有資料
                                    {
                                        var _BNA = db.BLANK_NOTE_APLY.First(
                                            x => x.ITEM_ID == item.vItemId &&
                                            x.APLY_NO == taData.vAplyNo);
                                        _BNA.CHECK_TYPE     = item.vCheckType;
                                        _BNA.ISSUING_BANK   = item.vIssuingBank;
                                        _BNA.CHECK_NO_TRACK = item.vCheckNoTrack;
                                        _BNA.CHECK_NO_B     = item.vCheckNoB;
                                        _BNA.CHECK_NO_E     = item.vCheckNoE;
                                        updates.Add(_BNA);
                                        logStr += _BNA.modelToString(logStr);
                                    }
                                    else
                                    {
                                        var item_id = sysSeqDao.qrySeqNo(item_Seq, string.Empty).ToString().PadLeft(8, '0');
                                        var _BNA    = new BLANK_NOTE_APLY()
                                        {
                                            APLY_NO        = _TAR.APLY_NO,
                                            ITEM_ID        = $@"{item_Seq}{item_id}",
                                            CHECK_TYPE     = item.vCheckType,
                                            ISSUING_BANK   = item.vIssuingBank,
                                            CHECK_NO_TRACK = item.vCheckNoTrack,
                                            CHECK_NO_B     = item.vCheckNoB,
                                            CHECK_NO_E     = item.vCheckNoE
                                        };
                                        inserts.Add(_BNA);
                                        logStr += _BNA.modelToString(logStr);
                                    }
                                }

                                var ups = updates.Select(x => x.ITEM_ID).ToList();

                                db.BLANK_NOTE_APLY.RemoveRange(
                                    db.BLANK_NOTE_APLY.Where(x => x.APLY_NO == taData.vAplyNo && !ups.Contains(x.ITEM_ID)).ToList());
                                db.BLANK_NOTE_APLY.AddRange(inserts);

                                #endregion

                                #region Save Db

                                var validateMessage = db.GetValidationErrors().getValidateString();
                                if (validateMessage.Any())
                                {
                                    result.DESCRIPTION = validateMessage;
                                }
                                else
                                {
                                    try
                                    {
                                        db.SaveChanges();

                                        #region LOG
                                        //新增LOG
                                        Log log = new Log();
                                        log.CFUNCTION = "申請覆核-修改空白票據";
                                        log.CACTION   = "U";
                                        log.CCONTENT  = logStr;
                                        LogDao.Insert(log, _TAR.CREATE_UID);
                                        #endregion

                                        result.RETURN_FLAG = true;
                                        result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_TAR.APLY_NO}");
                                    }
                                    catch (DbUpdateException ex)
                                    {
                                        result.DESCRIPTION = ex.exceptionMessage();
                                    }
                                }
                                #endregion
                            }
                        }
                        else
                        {
                            result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription();
                        }
                    }
                    else //新增申請單
                    {
                        //取出只抓狀態為預約取出的資料
                        if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString())
                        {
                            datas = datas.Where(x => x.vStatus == Ref.AccessInventoryType._4.GetDescription()).ToList();
                        }
                        if (datas.Any())
                        {
                            using (TreasuryDBEntities db = new TreasuryDBEntities())
                            {
                                #region 申請單紀錄檔 & 申請單歷程檔

                                var data = SaveTREA_APLY_REC(db, taData, logStr, dt);

                                logStr = data.Item2;

                                #endregion

                                string _ITEM_BLANK_NOTE_ITEM_ID = null; //紀錄空白票據申請資料檔 對應空白票據庫存資料檔 物品編號

                                bool _changFlag = false;
                                datas.ForEach(x =>
                                {
                                    #region 取出時要把空白票據資料 做切段動作
                                    if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString()) //取出時要把空白票據資料 做切段動作
                                    {
                                        var _blank_Note = db.ITEM_BLANK_NOTE.FirstOrDefault(y => y.ITEM_ID == x.vItemId);
                                        if (_blank_Note != null)
                                        {
                                            if (_blank_Note.LAST_UPDATE_DT > x.vLast_Update_Time || _blank_Note.INVENTORY_STATUS != "1")
                                            {
                                                _changFlag = true;
                                            }
                                            else
                                            {
                                                _ITEM_BLANK_NOTE_ITEM_ID = _blank_Note.ITEM_ID;
                                                //全部取出
                                                if (x.vTakeOutE == _blank_Note.CHECK_NO_E)
                                                {
                                                    _blank_Note.INVENTORY_STATUS = "4"; //預約取出
                                                }
                                                //分段取出
                                                else
                                                {
                                                    _blank_Note.CHECK_NO_B = (TypeTransfer.stringToInt(x.vTakeOutE) + 1).ToString().PadLeft(7, '0');
                                                }
                                                _blank_Note.LAST_UPDATE_DT = dt;
                                            }
                                        }
                                        else
                                        {
                                            _changFlag = true;
                                        }
                                    }
                                    #endregion

                                    #region 空白票據申請資料檔
                                    var item_id = sysSeqDao.qrySeqNo(item_Seq, string.Empty).ToString().PadLeft(8, '0');
                                    var _BNA    = new BLANK_NOTE_APLY()
                                    {
                                        APLY_NO                 = data.Item1,
                                        ITEM_ID                 = $@"{item_Seq}{item_id}",
                                        CHECK_TYPE              = x.vCheckType,
                                        ISSUING_BANK            = x.vIssuingBank,
                                        CHECK_NO_TRACK          = x.vCheckNoTrack,
                                        CHECK_NO_B              = x.vCheckNoB,
                                        CHECK_NO_E              = taData.vAccessType == Ref.AccessProjectTradeType.P.ToString() ? x.vCheckNoE : x.vTakeOutE,
                                        ITEM_BLANK_NOTE_ITEM_ID = _ITEM_BLANK_NOTE_ITEM_ID
                                    };
                                    db.BLANK_NOTE_APLY.Add(_BNA);
                                    logStr += _BNA.modelToString(logStr);
                                    #endregion
                                });
                                if (_changFlag)
                                {
                                    result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription();
                                    return(result);
                                }
                                #region Save Db

                                var validateMessage = db.GetValidationErrors().getValidateString();
                                if (validateMessage.Any())
                                {
                                    result.DESCRIPTION = validateMessage;
                                }
                                else
                                {
                                    try
                                    {
                                        db.SaveChanges();

                                        #region LOG
                                        //新增LOG
                                        Log log = new Log();
                                        log.CFUNCTION = "申請覆核-新增空白票據";
                                        log.CACTION   = "A";
                                        log.CCONTENT  = logStr;
                                        LogDao.Insert(log, taData.vCreateUid);
                                        #endregion

                                        result.RETURN_FLAG = true;
                                        result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{data.Item1}");
                                    }
                                    catch (DbUpdateException ex)
                                    {
                                        result.DESCRIPTION = ex.exceptionMessage();
                                    }
                                }
                                #endregion
                            }
                        }
                        else
                        {
                            result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription();
                        }
                    }
                }
                else
                {
                    result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription();
                }
            }
            catch (Exception ex)
            {
                result.DESCRIPTION = ex.exceptionMessage();
            }

            return(result);
        }
Esempio n. 18
0
        /// <summary>
        /// 申請覆核 電子憑證
        /// </summary>
        /// <param name="insertDatas">資料</param>
        /// <param name="taData">申請單資料</param>
        /// <returns></returns>
        public MSGReturnModel <IEnumerable <ITreaItem> > ApplyAudit(IEnumerable <ITreaItem> insertDatas, TreasuryAccessViewModel taData)
        {
            var result = new MSGReturnModel <IEnumerable <ITreaItem> >();

            result.RETURN_FLAG = false;
            DateTime dt = DateTime.Now;

            try
            {
                if (insertDatas != null)
                {
                    var datas = (List <CAViewModel>)insertDatas;
                    if (datas.Any())
                    {
                        using (TreasuryDBEntities db = new TreasuryDBEntities())
                        {
                            //取得流水號
                            SysSeqDao sysSeqDao = new SysSeqDao();
                            string    logStr    = string.Empty; //log
                            var       item_Seq  = "E5";         //電子憑證流水號開頭編碼

                            String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0];

                            var _TAR         = new TREA_APLY_REC();                        //申請單號
                            var _APLY_STATUS = Ref.AccessProjectFormStatus.A01.ToString(); //表單申請

                            if (!taData.vAplyNo.IsNullOrWhiteSpace())                      //修改已存在申請單
                            {
                                #region 申請單紀錄檔
                                _TAR = db.TREA_APLY_REC.First(x => x.APLY_NO == taData.vAplyNo);
                                if (CustodyAppr.Contains(_TAR.APLY_STATUS))
                                {
                                    _APLY_STATUS     = CustodyConfirmStatus;
                                    _TAR.CUSTODY_UID = AccountController.CurrentUserId; //保管單位直接帶使用者
                                    _TAR.CUSTODY_DT  = dt;
                                }
                                else
                                {
                                    if (_TAR.APLY_STATUS != _APLY_STATUS)                          //申請紀錄檔狀態不是在表單申請狀態
                                    {
                                        _APLY_STATUS = Ref.AccessProjectFormStatus.A05.ToString(); //為重新申請案例
                                    }
                                }
                                _TAR.APLY_STATUS    = _APLY_STATUS;
                                _TAR.LAST_UPDATE_DT = dt;

                                logStr += _TAR.modelToString(logStr);
                                #endregion

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

                                #region 電子憑證庫存資料檔

                                var            _dept         = intra.getDept_Sect(taData.vAplyUnit);
                                List <string>  oldItemIds    = db.OTHER_ITEM_APLY.Where(x => x.APLY_NO == taData.vAplyNo).Select(x => x.ITEM_ID).ToList(); //原有 itemId
                                List <string>  updateItemIds = new List <string>();                                                                        //更新 itemId
                                List <string>  cancelItemIds = new List <string>();                                                                        //取消 itemId
                                List <ITEM_CA> inserts       = new List <ITEM_CA>();                                                                       //新增資料

                                //抓取有修改註記的
                                foreach (var item in datas)
                                {
                                    var _IC_Item_Id = string.Empty;
                                    if (taData.vAccessType == Ref.AccessProjectTradeType.P.ToString()) //存入
                                    {
                                        //只抓取預約存入
                                        if (item.vStatus == Ref.AccessInventoryType._3.GetDescription())
                                        {
                                            var _IC = new ITEM_CA();

                                            if (item.vItemId.StartsWith(item_Seq)) //舊有資料
                                            {
                                                _IC = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == item.vItemId);
                                                if (_IC.LAST_UPDATE_DT > item.vLast_Update_Time)
                                                {
                                                    result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription();
                                                    return(result);
                                                }
                                                _IC.CA_DESC   = item.vCA_Desc;   //電子憑證品項
                                                _IC.CA_USE    = item.vCA_Use;    //電子憑證用途
                                                _IC.BANK      = item.vBank;      //銀行/廠商
                                                _IC.CA_NUMBER = item.vCA_Number; //電子憑證號碼
                                                _IC.MEMO      = item.vMemo;      //備註說明
                                                updateItemIds.Add(item.vItemId);
                                                logStr += _IC.modelToString(logStr);
                                            }
                                            else
                                            {
                                                var item_id = sysSeqDao.qrySeqNo(item_Seq, string.Empty).ToString().PadLeft(8, '0');
                                                _IC = new ITEM_CA()
                                                {
                                                    ITEM_ID          = $@"{item_Seq}{item_id}", //物品編號
                                                    INVENTORY_STATUS = "3",                     //預約存入
                                                    CA_DESC          = item.vCA_Desc,           //電子憑證品項
                                                    CA_USE           = item.vCA_Use,            //電子憑證用途
                                                    BANK             = item.vBank,              //銀行/廠商
                                                    CA_NUMBER        = item.vCA_Number,         //電子憑證號碼
                                                    MEMO             = item.vMemo,              //備註說明
                                                    APLY_DEPT        = _dept.Item1,             //申請人部門
                                                    APLY_SECT        = _dept.Item2,             //申請人科別
                                                    APLY_UID         = taData.vAplyUid,         //申請人
                                                    CHARGE_DEPT      = _dept.Item1,             //權責部門
                                                    CHARGE_SECT      = _dept.Item2,             //權責科別
                                                                                                //PUT_DATE = dt, //存入日期時間
                                                    LAST_UPDATE_DT = dt,                        //最後修改時間
                                                };
                                                _IC_Item_Id = _IC.ITEM_ID;
                                                inserts.Add(_IC);
                                                logStr += _IC.modelToString(logStr);
                                            }
                                        }
                                    }
                                    else if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString() && (_APLY_STATUS != CustodyConfirmStatus))//取出
                                    {
                                        var _IC = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == item.vItemId);
                                        if (_IC.LAST_UPDATE_DT > item.vLast_Update_Time)
                                        {
                                            result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription();
                                            return(result);
                                        }
                                        //預約取出
                                        if (item.vtakeoutFlag)
                                        {
                                            if (_IC.INVENTORY_STATUS == "1") //原先為在庫
                                            {
                                                _IC.INVENTORY_STATUS = "4";  //預約取出
                                                _IC.LAST_UPDATE_DT   = dt;   //最後修改時間
                                                updateItemIds.Add(_IC.ITEM_ID);
                                            }
                                            else if (_IC.INVENTORY_STATUS == "4") //原先為預約取出
                                            {
                                                updateItemIds.Add(_IC.ITEM_ID);
                                            }
                                        }
                                        else
                                        {
                                            if (_IC.INVENTORY_STATUS == "4") //原先為在庫
                                            {
                                                _IC.INVENTORY_STATUS = "1";  //預約取出
                                                _IC.LAST_UPDATE_DT   = dt;   //最後修改時間
                                            }
                                        }
                                    }
                                }

                                if (taData.vAccessType == Ref.AccessProjectTradeType.P.ToString()) //存入
                                {
                                    var delItemId = oldItemIds.Where(x => !updateItemIds.Contains(x)).ToList();
                                    db.OTHER_ITEM_APLY.RemoveRange(db.OTHER_ITEM_APLY.Where(x => x.APLY_NO == taData.vAplyNo && delItemId.Contains(x.ITEM_ID)).ToList());
                                    db.ITEM_CA.RemoveRange(db.ITEM_CA.Where(x => delItemId.Contains(x.ITEM_ID)).ToList());
                                    db.OTHER_ITEM_APLY.AddRange(inserts.Select(x => new OTHER_ITEM_APLY()
                                    {
                                        APLY_NO = taData.vAplyNo,
                                        ITEM_ID = x.ITEM_ID
                                    }));
                                    db.ITEM_CA.AddRange(inserts);
                                }
                                else if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString() && (_APLY_STATUS != CustodyConfirmStatus))//取出
                                {
                                    db.OTHER_ITEM_APLY.RemoveRange(db.OTHER_ITEM_APLY.Where(x => x.APLY_NO == taData.vAplyNo).ToList());
                                    db.OTHER_ITEM_APLY.AddRange(updateItemIds.Select(x => new OTHER_ITEM_APLY()
                                    {
                                        APLY_NO = taData.vAplyNo,
                                        ITEM_ID = x
                                    }));
                                }
                                #endregion
                            }
                            else
                            {
                                #region 申請單紀錄檔 & 申請單歷程檔

                                var data = SaveTREA_APLY_REC(db, taData, logStr, dt);
                                _TAR.APLY_NO = data.Item1;
                                logStr       = data.Item2;

                                #endregion

                                #region 電子憑證庫存資料檔
                                var _dept = intra.getDept_Sect(taData.vAplyUnit);
                                //抓取有修改註記的
                                foreach (var item in datas)
                                {
                                    var _IC_Item_Id = string.Empty;
                                    if (taData.vAccessType == Ref.AccessProjectTradeType.P.ToString()) //存入
                                    {
                                        //只抓取預約存入
                                        if (item.vStatus == Ref.AccessInventoryType._3.GetDescription())
                                        {
                                            var item_id = sysSeqDao.qrySeqNo(item_Seq, string.Empty).ToString().PadLeft(8, '0');
                                            var _IC     = new ITEM_CA()
                                            {
                                                ITEM_ID          = $@"{item_Seq}{item_id}", //物品編號
                                                INVENTORY_STATUS = "3",                     //預約存入
                                                CA_DESC          = item.vCA_Desc,           //電子憑證品項
                                                CA_USE           = item.vCA_Use,            //電子憑證用途
                                                BANK             = item.vBank,              //銀行/廠商
                                                CA_NUMBER        = item.vCA_Number,         //電子憑證號碼
                                                MEMO             = item.vMemo,              //備註說明
                                                APLY_DEPT        = _dept.Item1,             //申請人部門
                                                APLY_SECT        = _dept.Item2,             //申請人科別
                                                APLY_UID         = taData.vAplyUid,         //申請人
                                                CHARGE_DEPT      = _dept.Item1,             //權責部門
                                                CHARGE_SECT      = _dept.Item2,             //權責科別
                                                                                            //PUT_DATE = dt, //存入日期時間
                                                LAST_UPDATE_DT = dt,                        //最後修改時間
                                            };
                                            _IC_Item_Id = _IC.ITEM_ID;
                                            db.ITEM_CA.Add(_IC);
                                            logStr += _IC.modelToString(logStr);
                                        }
                                    }
                                    else if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString())//取出
                                    {
                                        //只抓取預約取出
                                        if (item.vStatus == Ref.AccessInventoryType._4.GetDescription())
                                        {
                                            var _IC = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == item.vItemId);
                                            _IC_Item_Id = _IC.ITEM_ID;
                                            if (_IC.LAST_UPDATE_DT > item.vLast_Update_Time)
                                            {
                                                result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription();
                                                return(result);
                                            }
                                            _IC.INVENTORY_STATUS = "4"; //預約取出
                                                                        //_IRE.GET_DATE = dt; //取出日期時間
                                            _IC.LAST_UPDATE_DT = dt;    //最後修改時間
                                        }
                                    }


                                    #region 其它存取項目申請資料檔
                                    if (!_IC_Item_Id.IsNullOrWhiteSpace())
                                    {
                                        db.OTHER_ITEM_APLY.Add(
                                            new OTHER_ITEM_APLY()
                                        {
                                            APLY_NO = _TAR.APLY_NO,
                                            ITEM_ID = _IC_Item_Id
                                        });
                                    }
                                    #endregion
                                }
                                #endregion
                            }

                            #region Save Db
                            var validateMessage = db.GetValidationErrors().getValidateString();
                            if (validateMessage.Any())
                            {
                                result.DESCRIPTION = validateMessage;
                            }
                            else
                            {
                                try
                                {
                                    db.SaveChanges();

                                    #region LOG
                                    //新增LOG
                                    Log log = new Log();
                                    log.CFUNCTION = "申請覆核-新增電子憑證";
                                    log.CACTION   = "A";
                                    log.CCONTENT  = logStr;
                                    LogDao.Insert(log, taData.vCreateUid);
                                    #endregion

                                    result.RETURN_FLAG = true;
                                    result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_TAR.APLY_NO}");
                                }
                                catch (DbUpdateException ex)
                                {
                                    result.DESCRIPTION = ex.exceptionMessage();
                                }
                            }
                            #endregion
                        }
                    }
                    else
                    {
                        result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription();
                    }
                }
                else
                {
                    result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription();
                }
            }
            catch (Exception ex)
            {
                result.DESCRIPTION = ex.exceptionMessage();
            }

            return(result);
        }