Ejemplo n.º 1
0
        public override DataSet GetData(List <reportParm> parms)
        {
            //報表資料
            List <DepositReportESTATEData> ReportDataList = new List <DepositReportESTATEData>();
            var    resultsTable  = new DataSet();
            var    ReportData    = new DepositReportESTATEData();
            string vdept         = parms.Where(x => x.key == "vdept").FirstOrDefault()?.value ?? string.Empty;
            string vsect         = parms.Where(x => x.key == "vsect").FirstOrDefault()?.value ?? string.Empty;
            string BOOK_NO       = parms.Where(x => x.key == "vBook_No").FirstOrDefault()?.value ?? string.Empty;
            string JobProject    = parms.Where(x => x.key == "vJobProject").FirstOrDefault()?.value ?? string.Empty;
            string APLY_DT_From  = parms.Where(x => x.key == "APLY_DT_From").FirstOrDefault()?.value ?? string.Empty; //庫存日期
            string APLY_ODT_From = parms.Where(x => x.key == "APLY_ODT_From").FirstOrDefault()?.value ?? string.Empty;
            string APLY_ODT_To   = parms.Where(x => x.key == "APLY_ODT_To").FirstOrDefault()?.value ?? string.Empty;

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _APLY_DT       = TypeTransfer.stringToDateTime(APLY_DT_From).DateToLatestTime();
                var _APLY_DT_Date  = _APLY_DT.Date;
                var dtn            = DateTime.Now.Date;
                var _APLY_ODT_From = TypeTransfer.stringToDateTimeN(APLY_ODT_From);
                var _APLY_ODT_To   = TypeTransfer.stringToDateTimeN(APLY_ODT_To).DateToLatestTime();

                int TOTAL = 0;
                INVENTORY_STATUSs.AddRange(new List <string>()
                {
                    ((int)AccessInventoryType._5).ToString(),    //預約取出,計庫存
                    ((int)AccessInventoryType._6).ToString(),    //已被取出,計庫存
                    ((int)AccessInventoryType._9).ToString()
                });                                              //預約存入,計庫存
                var _IRE = db.ITEM_REAL_ESTATE.AsNoTracking().ToList();

                _IRE = db.ITEM_REAL_ESTATE.AsNoTracking()//判斷是否在庫
                       .Where(x => INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS), _APLY_DT_Date == dtn)
                       .Where(x =>
                              (INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS) && x.PUT_DATE <= _APLY_DT) // 在庫 且 存入日期 <= 庫存日期
                              ||
                              (x.INVENTORY_STATUS == INVENTORY_STATUSg &&
                               x.PUT_DATE <= _APLY_DT &&
                               _APLY_DT < x.GET_DATE), //存入日期 <= 庫存日期 且 庫存日期 < 取出日期
                              _APLY_DT_Date != dtn)
                       .Where(x => x.CHARGE_DEPT == vdept, vdept != "All")
                       .Where(x => x.CHARGE_SECT == vsect, vsect != "All")
                       .Where(x => x.GROUP_NO.ToString() == BOOK_NO, BOOK_NO != "All")
                       .Where(x => x.PUT_DATE >= _APLY_ODT_From, _APLY_ODT_From != null)
                       .Where(x => x.PUT_DATE <= _APLY_ODT_To, _APLY_ODT_To != null).ToList();

                var depts = new List <VW_OA_DEPT>();
                var types = new List <SYS_CODE>();
                var book  = new List <ITEM_BOOK>();
                using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities())
                {
                    depts = dbINTRA.VW_OA_DEPT.AsNoTracking().Where(x => x.DPT_CD != null).ToList();
                }
                types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE != null && x.CODE_TYPE == "ESTATE_TYPE").ToList();
                book  = db.ITEM_BOOK.AsNoTracking().Where(x => x.GROUP_NO.ToString() != null).ToList();
                _IRE.ForEach(x =>
                {
                    x.ESTATE_FORM_NO = types.FirstOrDefault(y => y.CODE_VALUE == x.ESTATE_FORM_NO)?.CODE;
                });
                foreach (var ESTATEdata in _IRE.OrderBy(x => x.GROUP_NO).ThenBy(x => x.PUT_DATE).ThenBy(x => x.ESTATE_FORM_NO).ThenBy(x => x.ESTATE_DATE).ThenBy(x => x.OWNERSHIP_CERT_NO))
                {
                    TOTAL++;
                    var _CHARGE_DEPT = getEmpName(depts, ESTATEdata.CHARGE_DEPT);
                    var _CHARGE_SECT = getEmpName(depts, ESTATEdata.CHARGE_SECT)?.Replace(_CHARGE_DEPT, "")?.Trim();
                    ReportData = new DepositReportESTATEData()
                    {
                        ROW               = TOTAL,
                        PUT_DATE          = ESTATEdata.PUT_DATE.dateTimeToStr(),
                        ESTATE_FORM_NO    = types.FirstOrDefault(x => x.CODE == ESTATEdata.ESTATE_FORM_NO)?.CODE_VALUE,
                        ESTATE_DATE       = ESTATEdata.ESTATE_DATE.dateTimeToStr(),
                        OWNERSHIP_CERT_NO = ESTATEdata.OWNERSHIP_CERT_NO,
                        LAND_BUILDING_NO  = ESTATEdata.LAND_BUILDING_NO,
                        HOUSE_NO          = ESTATEdata.HOUSE_NO,
                        ESTATE_SEQ        = ESTATEdata.ESTATE_SEQ,
                        BOOK_NO_DETAIL    = ESTATEdata.GROUP_NO.ToString(),
                        BUILDING_NAME     = getBuildName(book, ESTATEdata.GROUP_NO.ToString()),
                        LOCATED           = getLocated(book, ESTATEdata.GROUP_NO.ToString()),
                        CHARGE_DEPT       = _CHARGE_DEPT,
                        CHARGE_SECT       = _CHARGE_SECT,
                        CHARGE_DEPT_ID    = ESTATEdata.CHARGE_DEPT,
                        CHARGE_SECT_ID    = ESTATEdata.CHARGE_SECT,
                        MEMO              = ESTATEdata.MEMO,
                    };
                    ReportDataList.Add(ReportData);
                }
            }
            resultsTable.Tables.Add(ReportDataList.ToDataTable());
            return(resultsTable);
        }
Ejemplo n.º 2
0
        public override DataSet GetData(List <reportParm> parms)
        {
            //報表資料
            List <DepositReportSealData> ReportDataList = new List <DepositReportSealData>();
            var    resultsTable  = new DataSet();
            var    ReportData    = new DepositReportSealData();
            string vdept         = parms.Where(x => x.key == "vdept").FirstOrDefault()?.value ?? string.Empty;
            string vsect         = parms.Where(x => x.key == "vsect").FirstOrDefault()?.value ?? string.Empty;
            string JobProject    = parms.Where(x => x.key == "vJobProject").FirstOrDefault()?.value ?? string.Empty;
            string APLY_DT_From  = parms.Where(x => x.key == "APLY_DT_From").FirstOrDefault()?.value ?? string.Empty; //庫存日期
            string APLY_ODT_From = parms.Where(x => x.key == "APLY_ODT_From").FirstOrDefault()?.value ?? string.Empty;
            string APLY_ODT_To   = parms.Where(x => x.key == "APLY_ODT_To").FirstOrDefault()?.value ?? string.Empty;

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _APLY_DT       = TypeTransfer.stringToDateTime(APLY_DT_From).DateToLatestTime();
                var _APLY_DT_Date  = _APLY_DT.Date;
                var dtn            = DateTime.Now.Date;
                var _APLY_ODT_From = TypeTransfer.stringToDateTimeN(APLY_ODT_From);
                var _APLY_ODT_To   = TypeTransfer.stringToDateTimeN(APLY_ODT_To).DateToLatestTime();

                int TOTAL = 0;
                INVENTORY_STATUSs.AddRange(new List <string>()
                {
                    ((int)AccessInventoryType._5).ToString(), //預約取出,計庫存
                    ((int)AccessInventoryType._6).ToString(), //已被取出,計庫存
                    ((int)AccessInventoryType._9).ToString()
                });                                           //預約存入,計庫存
                //預約取出 , 用印  , 存入用印
                var _IS = db.ITEM_SEAL.AsNoTracking()         //判斷是否在庫
                          .Where(x => INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS), _APLY_DT_Date == dtn)
                          .Where(x =>
                                 (INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS) && x.PUT_DATE_ACCESS <= _APLY_DT) // 在庫 且 存入日期 <= 庫存日期  //(18/12/27 update x.PUT_DATE => x.PUT_DATE_ACCESS)
                                 ||
                                 (x.INVENTORY_STATUS == INVENTORY_STATUSg &&
                                  x.PUT_DATE_ACCESS <= _APLY_DT && //(18 / 12 / 27 update x.PUT_DATE => x.PUT_DATE_ACCESS)
                                  _APLY_DT < x.GET_DATE),          //存入日期 <= 庫存日期 且 庫存日期 < 取出日期
                                 _APLY_DT_Date != dtn)
                          .Where(x => x.CHARGE_DEPT == vdept, vdept != "All")
                          .Where(x => x.CHARGE_SECT == vsect, vsect != "All")
                          .Where(x => x.PUT_DATE_ACCESS >= _APLY_ODT_From, _APLY_ODT_From != null) //(18 / 12 / 27 update x.PUT_DATE => x.PUT_DATE_ACCESS)
                          .Where(x => x.PUT_DATE_ACCESS <= _APLY_ODT_To, _APLY_ODT_To != null)     //(18 / 12 / 27 update x.PUT_DATE => x.PUT_DATE_ACCESS)
                          .Where(x => x.TREA_ITEM_NAME == JobProject).ToList();

                var depts = new List <VW_OA_DEPT>();
                //var types = new List<SYS_CODE>();
                using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities())
                {
                    depts = dbINTRA.VW_OA_DEPT.AsNoTracking().Where(x => x.DPT_CD != null).ToList();
                }

                //types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE !=null).ToList();

                foreach (var Sealdata in _IS.OrderBy(x => x.PUT_DATE_ACCESS).ThenByDescending(x => x.LAST_UPDATE_DT) /*.ThenBy(x=>x.CHARGE_DEPT).ThenBy(x=>x.CHARGE_SECT)*/)
                {
                    TOTAL++;
                    var _CHARGE_DEPT = getEmpName(depts, Sealdata.CHARGE_DEPT);
                    var _CHARGE_SECT = getEmpName(depts, Sealdata.CHARGE_SECT)?.Replace(_CHARGE_DEPT, "")?.Trim();
                    ReportData = new DepositReportSealData()
                    {
                        ROW            = TOTAL,
                        PUT_DATE       = Sealdata.PUT_DATE_ACCESS.dateTimeToStr(),
                        CHARGE_DEPT    = _CHARGE_DEPT,
                        CHARGE_SECT    = _CHARGE_SECT,
                        SEAL_DESC      = Sealdata.SEAL_DESC,
                        MEMO           = Sealdata.MEMO,
                        CHARGE_DEPT_ID = Sealdata.CHARGE_DEPT,
                        CHARGE_SECT_ID = Sealdata.CHARGE_SECT
                    };
                    ReportDataList.Add(ReportData);
                }
            }
            resultsTable.Tables.Add(ReportDataList.ToDataTable());
            return(resultsTable);
        }
Ejemplo n.º 3
0
        public override DataSet GetData(List <reportParm> parms)
        {
            //報表資料
            List <DepositReportCAData> ReportDataList = new List <DepositReportCAData>();
            var    resultsTable  = new DataSet();
            var    ReportData    = new DepositReportCAData();
            string vdept         = parms.Where(x => x.key == "vdept").FirstOrDefault()?.value ?? string.Empty;
            string vsect         = parms.Where(x => x.key == "vsect").FirstOrDefault()?.value ?? string.Empty;
            string JobProject    = parms.Where(x => x.key == "vJobProject").FirstOrDefault()?.value ?? string.Empty;
            string APLY_DT_From  = parms.Where(x => x.key == "APLY_DT_From").FirstOrDefault()?.value ?? string.Empty; //庫存日期
            string APLY_ODT_From = parms.Where(x => x.key == "APLY_ODT_From").FirstOrDefault()?.value ?? string.Empty;
            string APLY_ODT_To   = parms.Where(x => x.key == "APLY_ODT_To").FirstOrDefault()?.value ?? string.Empty;

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _APLY_DT       = TypeTransfer.stringToDateTime(APLY_DT_From).DateToLatestTime();
                var _APLY_DT_Date  = _APLY_DT.Date;
                var dtn            = DateTime.Now.Date;
                var _APLY_ODT_From = TypeTransfer.stringToDateTimeN(APLY_ODT_From);
                var _APLY_ODT_To   = TypeTransfer.stringToDateTimeN(APLY_ODT_To).DateToLatestTime();
                int TOTAL          = 0;
                INVENTORY_STATUSs.AddRange(new List <string>()
                {
                    ((int)AccessInventoryType._5).ToString(), //預約取出,計庫存
                    ((int)AccessInventoryType._6).ToString(), //已被取出,計庫存
                    ((int)AccessInventoryType._9).ToString()
                });                                           //預約存入,計庫存
                var _IC = db.ITEM_CA.AsNoTracking()           //判斷是否在庫
                          .Where(x => INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS), _APLY_DT_Date == dtn)
                          .Where(x =>
                                 (INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS) && x.PUT_DATE <= _APLY_DT) // 在庫 且 存入日期 <= 庫存日期
                                 ||
                                 (x.INVENTORY_STATUS == INVENTORY_STATUSg &&
                                  x.PUT_DATE <= _APLY_DT &&
                                  _APLY_DT < x.GET_DATE), //存入日期 <= 庫存日期 且 庫存日期 < 取出日期
                                 _APLY_DT_Date != dtn)
                          .Where(x => x.CHARGE_DEPT == vdept, vdept != "All")
                          .Where(x => x.CHARGE_SECT == vsect, vsect != "All")
                          .Where(x => x.PUT_DATE >= _APLY_ODT_From, _APLY_ODT_From != null)
                          .Where(x => x.PUT_DATE <= _APLY_ODT_To, _APLY_ODT_To != null)
                          .ToList();

                var depts = new List <VW_OA_DEPT>();
                var types = new List <SYS_CODE>();
                using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities())
                {
                    depts = dbINTRA.VW_OA_DEPT.AsNoTracking().Where(x => x.DPT_CD != null).ToList();
                }
                types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE != null).ToList();
                foreach (var CAdata in _IC /*.OrderBy(x => x.PUT_DATE).ThenBy(x=>x.CHARGE_DEPT)*/.OrderBy(x => x.CHARGE_DEPT).ThenBy(x => x.CHARGE_SECT).ThenBy(x => x.CA_USE).ThenBy(x => x.CA_DESC).ThenBy(x => x.BANK).ThenBy(x => x.CA_NUMBER))
                {
                    TOTAL++;
                    var _CHARGE_DEPT = getEmpName(depts, CAdata.CHARGE_DEPT);
                    var _CHARGE_SECT = getEmpName(depts, CAdata.CHARGE_SECT)?.Replace(_CHARGE_DEPT, "")?.Trim();
                    ReportData = new DepositReportCAData()
                    {
                        ROW            = TOTAL,
                        PUT_DATE       = CAdata.PUT_DATE.dateTimeToStr(),
                        CHARGE_DEPT    = _CHARGE_DEPT,
                        CHARGE_SECT    = _CHARGE_SECT,
                        CA_DESC        = getCAdesc(types, CAdata.CA_DESC),
                        CA_USE         = getCAuse(types, CAdata.CA_USE),
                        BANK           = CAdata.BANK,
                        CA_NUMBER      = CAdata.CA_NUMBER,
                        MEMO           = CAdata.MEMO,
                        CHARGE_DEPT_ID = CAdata.CHARGE_DEPT,
                        CHARGE_SECT_ID = CAdata.CHARGE_SECT
                    };
                    ReportDataList.Add(ReportData);
                }
            }
            resultsTable.Tables.Add(ReportDataList.ToDataTable());
            return(resultsTable);
        }
Ejemplo n.º 4
0
        public override DataSet GetData(List <reportParm> parms)
        {
            //報表資料
            List <DepositReportMargingData> ReportDataList = new List <DepositReportMargingData>();
            var    resultsTable  = new DataSet();
            var    ReportData    = new DepositReportMargingData();
            string vdept         = parms.Where(x => x.key == "vdept").FirstOrDefault()?.value ?? string.Empty;
            string vsect         = parms.Where(x => x.key == "vsect").FirstOrDefault()?.value ?? string.Empty;
            string JobProject    = parms.Where(x => x.key == "vJobProject").FirstOrDefault()?.value ?? string.Empty;
            string APLY_DT_From  = parms.Where(x => x.key == "APLY_DT_From").FirstOrDefault()?.value ?? string.Empty; //庫存日期
            string APLY_ODT_From = parms.Where(x => x.key == "APLY_ODT_From").FirstOrDefault()?.value ?? string.Empty;
            string APLY_ODT_To   = parms.Where(x => x.key == "APLY_ODT_To").FirstOrDefault()?.value ?? string.Empty;

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _APLY_DT       = TypeTransfer.stringToDateTime(APLY_DT_From).DateToLatestTime();
                var _APLY_DT_Date  = _APLY_DT.Date;
                var dtn            = DateTime.Now.Date;
                var _APLY_ODT_From = TypeTransfer.stringToDateTimeN(APLY_ODT_From);
                var _APLY_ODT_To   = TypeTransfer.stringToDateTimeN(APLY_ODT_To).DateToLatestTime();

                INVENTORY_STATUSs.AddRange(new List <string>()
                {
                    ((int)AccessInventoryType._5).ToString(),    //預約取出,計庫存
                    ((int)AccessInventoryType._6).ToString(),    //已被取出,計庫存
                    ((int)AccessInventoryType._9).ToString()
                });                                              //預約存入,計庫存

                var _IRD = db.ITEM_REFUNDABLE_DEP.AsNoTracking() //判斷是否在庫
                           .Where(x => INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS), _APLY_DT_Date == dtn)
                           .Where(x =>
                                  (INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS) && x.PUT_DATE <= _APLY_DT) // 在庫 且 存入日期 <= 庫存日期
                                  ||
                                  (x.INVENTORY_STATUS == INVENTORY_STATUSg &&
                                   x.PUT_DATE <= _APLY_DT &&
                                   _APLY_DT < x.GET_DATE), //存入日期 <= 庫存日期 且 庫存日期 < 取出日期
                                  _APLY_DT_Date != dtn)
                           .Where(x => x.CHARGE_DEPT == vdept, vdept != "All")
                           .Where(x => x.CHARGE_SECT == vsect, vsect != "All")
                           .Where(x => x.PUT_DATE >= _APLY_ODT_From, _APLY_ODT_From != null)
                           .Where(x => x.PUT_DATE <= _APLY_ODT_To, _APLY_ODT_To != null)
                           .ToList();

                var depts = new List <VW_OA_DEPT>();
                var types = new List <SYS_CODE>();
                using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities())
                {
                    depts = dbINTRA.VW_OA_DEPT.AsNoTracking().Where(x => x.DPT_CD != null).ToList();
                }

                types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE != null).ToList();

                foreach (var Stockdata in _IRD.OrderBy(x => x.MARGIN_DEP_TYPE).ThenBy(x => x.ITEM_ID).ThenBy(x => x.BOOK_NO).ThenBy(x => x.PUT_DATE).ThenBy(x => x.CHARGE_DEPT).ThenBy(x => x.CHARGE_SECT))
                {
                    var _CHARGE_DEPT = getEmpName(depts, Stockdata.CHARGE_DEPT);
                    var _CHARGE_SECT = !_CHARGE_DEPT.IsNullOrWhiteSpace() ? getEmpName(depts, Stockdata.CHARGE_SECT)?.Replace(_CHARGE_DEPT, "")?.Trim() : null;
                    ReportData = new DepositReportMargingData()
                    {
                        MARGIN_DEP_TYPE = getMDTtype(types, Stockdata.MARGIN_DEP_TYPE),
                        ITEM_ID         = Stockdata.ITEM_ID,
                        BOOK_NO         = Stockdata.BOOK_NO,
                        PUT_DATE        = Stockdata.PUT_DATE.dateTimeToStr(),
                        CHARGE_DEPT     = _CHARGE_DEPT,
                        CHARGE_SECT     = !_CHARGE_SECT.IsNullOrWhiteSpace() ? _CHARGE_SECT : null,
                        TRAD_PARTNERS   = Stockdata.TRAD_PARTNERS,
                        AMOUNT          = Stockdata.AMOUNT,
                        WORKPLACE_CODE  = Stockdata.WORKPLACE_CODE,
                        DESCRIPTION     = Stockdata.DESCRIPTION,
                        MEMO            = Stockdata.MEMO,
                        CHARGE_DEPT_ID  = Stockdata.CHARGE_DEPT,
                        CHARGE_SECT_ID  = Stockdata.CHARGE_SECT
                    };
                    ReportDataList.Add(ReportData);
                }
            }
            resultsTable.Tables.Add(ReportDataList.ToDataTable());
            return(resultsTable);
        }
Ejemplo n.º 5
0
        public override DataSet GetData(List <reportParm> parms)
        {
            //報表資料
            List <DepositReportITEMIMPData> ReportDataList = new List <DepositReportITEMIMPData>();
            var    resultsTable  = new DataSet();
            var    ReportData    = new DepositReportITEMIMPData();
            string vdept         = parms.Where(x => x.key == "vdept").FirstOrDefault()?.value ?? string.Empty;
            string vsect         = parms.Where(x => x.key == "vsect").FirstOrDefault()?.value ?? string.Empty;
            string JobProject    = parms.Where(x => x.key == "vJobProject").FirstOrDefault()?.value ?? string.Empty;
            string APLY_DT_From  = parms.Where(x => x.key == "APLY_DT_From").FirstOrDefault()?.value ?? string.Empty; //庫存日期
            string APLY_ODT_From = parms.Where(x => x.key == "APLY_ODT_From").FirstOrDefault()?.value ?? string.Empty;
            string APLY_ODT_To   = parms.Where(x => x.key == "APLY_ODT_To").FirstOrDefault()?.value ?? string.Empty;

            using (TreasuryDBEntities db = new TreasuryDBEntities())
            {
                var _APLY_DT       = TypeTransfer.stringToDateTime(APLY_DT_From).DateToLatestTime();
                var _APLY_DT_Date  = _APLY_DT.Date;
                var dtn            = DateTime.Now.Date;
                var _APLY_ODT_From = TypeTransfer.stringToDateTimeN(APLY_ODT_From);
                var _APLY_ODT_To   = TypeTransfer.stringToDateTimeN(APLY_ODT_To).DateToLatestTime();

                //int TOTAL= 0;
                INVENTORY_STATUSs.AddRange(new List <string>()
                {
                    ((int)AccessInventoryType._5).ToString(), //預約取出,計庫存
                    ((int)AccessInventoryType._6).ToString(), //已被取出,計庫存
                    ((int)AccessInventoryType._9).ToString()
                });                                           //預約存入,計庫存
                var _II = db.ITEM_IMPO.AsNoTracking()         //判斷是否在庫
                          .Where(x => INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS), _APLY_DT_Date == dtn)
                          .Where(x =>
                                 (INVENTORY_STATUSs.Contains(x.INVENTORY_STATUS) && x.PUT_DATE <= _APLY_DT) // 在庫 且 存入日期 <= 庫存日期
                                 ||
                                 (x.INVENTORY_STATUS == INVENTORY_STATUSg &&
                                  x.PUT_DATE <= _APLY_DT &&
                                  _APLY_DT < x.GET_DATE), //存入日期 <= 庫存日期 且 庫存日期 < 取出日期
                                 _APLY_DT_Date != dtn)
                          .Where(x => x.CHARGE_DEPT == vdept, vdept != "All")
                          .Where(x => x.CHARGE_SECT == vsect, vsect != "All")
                          .Where(x => x.PUT_DATE >= _APLY_ODT_From, _APLY_ODT_From != null)
                          .Where(x => x.PUT_DATE <= _APLY_ODT_To, _APLY_ODT_To != null)
                          .ToList();

                var depts = new List <VW_OA_DEPT>();
                var types = new List <SYS_CODE>();
                using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities())
                {
                    depts = dbINTRA.VW_OA_DEPT.AsNoTracking().Where(x => x.DPT_CD != null).ToList();
                }

                types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE != null).ToList();

                if (_APLY_DT_Date != dtn)
                {
                    List <string> Item_IDs = _II.Select(x => x.ITEM_ID_FROM == null ? x.ITEM_ID : x.ITEM_ID_FROM).Distinct().ToList();

                    List <ITEM_IMPO> ITEM_IMPOs = db.ITEM_IMPO.AsNoTracking().Where(x => Item_IDs.Contains(x.ITEM_ID)).ToList();

                    List <ITEM_IMPO> GetITEM_IMPOs = db.ITEM_IMPO.AsNoTracking()
                                                     .Where(x => x.ITEM_ID_FROM != null && Item_IDs.Contains(x.ITEM_ID_FROM) && _APLY_DT > x.GET_DATE).ToList();
                    //取出日 < 庫存日,之前取出

                    foreach (var item in ITEM_IMPOs)
                    {
                        var _CHARGE_DEPT = getEmpName(depts, item.CHARGE_DEPT);
                        var _CHARGE_SECT = getEmpName(depts, item.CHARGE_SECT)?.Replace(_CHARGE_DEPT, "")?.Trim();
                        ReportData = new DepositReportITEMIMPData()
                        {
                            ITEM_ID              = item.ITEM_ID,
                            PUT_DATE             = item.PUT_DATE.dateTimeToStr(),
                            CHARGE_DEPT          = _CHARGE_DEPT,
                            CHARGE_SECT          = _CHARGE_SECT,
                            ITEM_NAME            = item.ITEM_NAME,
                            QUANTITY             = GetQUANTITY(item, GetITEM_IMPOs),
                            AMOUNT               = item.AMOUNT,
                            EXPECTED_ACCESS_DATE = item.EXPECTED_ACCESS_DATE.dateTimeToStr(),
                            DESCRIPTION          = item.DESCRIPTION,
                            MEMO           = item.MEMO,
                            CHARGE_DEPT_ID = item.CHARGE_DEPT,
                            CHARGE_SECT_ID = item.CHARGE_SECT
                        };
                        ReportDataList.Add(ReportData);
                    }
                }
                else
                {
                    foreach (var item in _II)
                    {
                        var _CHARGE_DEPT = getEmpName(depts, item.CHARGE_DEPT);
                        var _CHARGE_SECT = getEmpName(depts, item.CHARGE_SECT)?.Replace(_CHARGE_DEPT, "")?.Trim();
                        ReportData = new DepositReportITEMIMPData()
                        {
                            ITEM_ID              = item.ITEM_ID,
                            PUT_DATE             = item.PUT_DATE.dateTimeToStr(),
                            CHARGE_DEPT          = _CHARGE_DEPT,
                            CHARGE_SECT          = _CHARGE_SECT,
                            ITEM_NAME            = item.ITEM_NAME,
                            QUANTITY             = item.REMAINING,
                            AMOUNT               = item.AMOUNT,
                            EXPECTED_ACCESS_DATE = item.EXPECTED_ACCESS_DATE.dateTimeToStr(),
                            DESCRIPTION          = item.DESCRIPTION,
                            MEMO           = item.MEMO,
                            CHARGE_DEPT_ID = item.CHARGE_DEPT,
                            CHARGE_SECT_ID = item.CHARGE_SECT
                        };
                        ReportDataList.Add(ReportData);
                    }
                }
            }
            resultsTable.Tables.Add(ReportDataList
                                    .OrderBy(x => x.ITEM_ID)
                                    .ThenBy(x => x.PUT_DATE)
                                    .ThenBy(x => x.CHARGE_DEPT_ID)
                                    .ThenBy(x => x.CHARGE_SECT_ID)
                                    .ToList().ToDataTable());
            return(resultsTable);
        }