/// <summary>
        /// let common expense add to department expense
        /// 00120000:department expense
        /// </summary>
        /// <param name="budget_DeptExpense"></param>
        private void updateDeptExpense(Budget_DeptExpense budget_DeptExpense)
        {
            List <Budget_DeptExpense> _Budget_DeptExpenseList = new List <Budget_DeptExpense>();
            Budget_DeptExpense        _Budget_DeptExpense     = new Budget_DeptExpense();

            if (this._budget_DeptExpenseService.GetAll().Where(x => x.Factory == budget_DeptExpense.Factory && x.DepartmentId == budget_DeptExpense.DepartmentId && x.CostCode == budget_DeptExpense.CostCode && x.ItemId_CostCommon == "00120000").ToList().Count > 0)
            {
                _Budget_DeptExpenseList = this._budget_DeptExpenseService.GetAll().Where(x => x.Factory == budget_DeptExpense.Factory && x.DepartmentId == budget_DeptExpense.DepartmentId && x.CostCode == budget_DeptExpense.CostCode && x.ItemId_CostCommon == "00120000").ToList();
                foreach (Budget_DeptExpense c in _Budget_DeptExpenseList)
                {
                    c.YTD += budget_DeptExpense.YTD;
                    c.Jan += budget_DeptExpense.Jan;
                    c.Feb += budget_DeptExpense.Feb;
                    c.Mar += budget_DeptExpense.Mar;
                    c.Apr += budget_DeptExpense.Apr;
                    c.May += budget_DeptExpense.May;
                    c.Jun += budget_DeptExpense.Jun;
                    c.Jul += budget_DeptExpense.Jul;
                    c.Aug += budget_DeptExpense.Aug;
                    c.Sep += budget_DeptExpense.Sep;
                    c.Oct += budget_DeptExpense.Oct;
                    c.Nov += budget_DeptExpense.Nov;
                    c.Dec += budget_DeptExpense.Dec;
                    c.Date = (DateTime.Now.Year + 1).ToString();
                    this._budget_DeptExpenseService.Update(c);
                }
            }
        }
 public void Update(Budget_DeptExpense instance)
 {
     if (instance == null)
     {
         throw new ArgumentNullException();
     }
     this._repository.Update(instance);
 }
 public string Create(Budget_DeptExpense instance)
 {
     if (instance == null)
     {
         throw new ArgumentNullException();
     }
     return(this._repository.Create(instance));
 }
예제 #4
0
        /// <summary>
        /// group by traveling budget by costcode culumn and sum amount by every month culumn
        /// set into deptexpense list and return
        /// </summary>
        /// <param name="budget_TravelingList"></param>
        private List <Budget_DeptExpense> setDeptExpense(List <Budget_Traveling> budget_TravelingList)
        {
            List <Budget_DeptExpense> _Budget_DeptExpenseList = new List <Budget_DeptExpense>();
            var results = budget_TravelingList.Join(this._budget_CostTravelingMappingService.GetAll(),
                                                    TravelingList => TravelingList.ItemId_TravelingType,
                                                    CostTravelingMapping => CostTravelingMapping.ItemId_TravelingType,
                                                    (TravelingList, CostTravelingMapping) => new
            {
                TravelingList,
                CostTravelingMapping
            }).GroupBy(x => new { x.CostTravelingMapping.CostCode }).Select(x => new
            {
                CostCode = x.Key.CostCode,
                Jan      = x.Sum(y => y.TravelingList.Jan),
                Feb      = x.Sum(y => y.TravelingList.Feb),
                Mar      = x.Sum(y => y.TravelingList.Mar),
                Apr      = x.Sum(y => y.TravelingList.Apr),
                May      = x.Sum(y => y.TravelingList.May),
                Jun      = x.Sum(y => y.TravelingList.Jun),
                Jul      = x.Sum(y => y.TravelingList.Jul),
                Aug      = x.Sum(y => y.TravelingList.Aug),
                Sep      = x.Sum(y => y.TravelingList.Sep),
                Oct      = x.Sum(y => y.TravelingList.Oct),
                Nov      = x.Sum(y => y.TravelingList.Nov),
                Dec      = x.Sum(y => y.TravelingList.Dec)
            }).ToList();

            foreach (var r in results)
            {
                Budget_DeptExpense _Budget_DeptExpense = new Budget_DeptExpense();
                _Budget_DeptExpense.CostCode          = r.CostCode;
                _Budget_DeptExpense.Jan               = r.Jan;
                _Budget_DeptExpense.Feb               = r.Feb;
                _Budget_DeptExpense.Mar               = r.Mar;
                _Budget_DeptExpense.Apr               = r.Apr;
                _Budget_DeptExpense.May               = r.May;
                _Budget_DeptExpense.Jun               = r.Jun;
                _Budget_DeptExpense.Jul               = r.Jul;
                _Budget_DeptExpense.Aug               = r.Aug;
                _Budget_DeptExpense.Sep               = r.Sep;
                _Budget_DeptExpense.Oct               = r.Oct;
                _Budget_DeptExpense.Nov               = r.Nov;
                _Budget_DeptExpense.Dec               = r.Dec;
                _Budget_DeptExpense.Date              = (DateTime.Now.Year + 1).ToString();
                _Budget_DeptExpense.DepartmentId      = base.DepartmentId;
                _Budget_DeptExpense.Factory           = base.Factory;
                _Budget_DeptExpense.Version           = base.Version;
                _Budget_DeptExpense.ItemId_CostCommon = "00120000";
                _Budget_DeptExpenseList.Add(_Budget_DeptExpense);
            }
            return(_Budget_DeptExpenseList);
        }
        /// <summary>
        /// p.s mapping name maybe need to change
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public override Budget Parse(string filePath)
        {
            Budget                    _Budget                 = new Budget();
            List <Budget_Cost>        _Budget_Cost            = this._budget_CostService.GetAll().ToList();
            List <Budget_DeptExpense> _Budget_DeptExpenseList = new List <Budget_DeptExpense>();
            IQueryable <DeptExpense>  _DeptExpenseList;
            List <Budget_DeptExpense> _Budget_DeptExpenseList_Common = new List <Budget_DeptExpense>();

            LinqToExcel.ExcelQueryFactory _Excel = new LinqToExcel.ExcelQueryFactory(filePath);
            _Excel.AddMapping <DeptExpense>(d => d.ItemId_CostElement, "CostCode");
            _Excel.AddMapping <DeptExpense>(d => d.YTD, "YTD");
            _Excel.AddMapping <DeptExpense>(d => d.Jan, "Jan");
            _Excel.AddMapping <DeptExpense>(d => d.Feb, "Feb");
            _Excel.AddMapping <DeptExpense>(d => d.Mar, "Mar");
            _Excel.AddMapping <DeptExpense>(d => d.Apr, "Apr");
            _Excel.AddMapping <DeptExpense>(d => d.May, "May");
            _Excel.AddMapping <DeptExpense>(d => d.Jun, "Jun");
            _Excel.AddMapping <DeptExpense>(d => d.Jul, "Jul");
            _Excel.AddMapping <DeptExpense>(d => d.Aug, "Aug");
            _Excel.AddMapping <DeptExpense>(d => d.Sep, "Sep");
            _Excel.AddMapping <DeptExpense>(d => d.Oct, "Oct");
            _Excel.AddMapping <DeptExpense>(d => d.Nov, "Nov");
            _Excel.AddMapping <DeptExpense>(d => d.Dec, "Dec");
            if (base.CommonBudget)
            {
                _Excel.AddMapping <DeptExpense>(d => d.Factory, "Factory");
                _Excel.AddMapping <DeptExpense>(d => d.DepartmentId, "DepartmentId");
            }
            // every time get first sheet data
            _DeptExpenseList = from x in _Excel.Worksheet <DeptExpense>("Upload")
                               select x;
            int _Start = 2;

            foreach (DeptExpense c in _DeptExpenseList)
            {
                if (_Start == 2 || _Start == 3 || c.ItemId_CostElement == null)
                {
                    _Start++;
                    continue;
                }
                try
                {
                    Budget_DeptExpense _Budget_DeptExpense = new Budget_DeptExpense();
                    _Budget_DeptExpense.CostCode     = c.ItemId_CostElement;
                    _Budget_DeptExpense.YTD          = this._commonFileService.GetExcelMinusNumber(c.YTD);
                    _Budget_DeptExpense.Jan          = this._commonFileService.GetExcelMinusNumber(c.Jan);
                    _Budget_DeptExpense.Feb          = this._commonFileService.GetExcelMinusNumber(c.Feb);
                    _Budget_DeptExpense.Mar          = this._commonFileService.GetExcelMinusNumber(c.Mar);
                    _Budget_DeptExpense.Apr          = this._commonFileService.GetExcelMinusNumber(c.Apr);
                    _Budget_DeptExpense.May          = this._commonFileService.GetExcelMinusNumber(c.May);
                    _Budget_DeptExpense.Jun          = this._commonFileService.GetExcelMinusNumber(c.Jun);
                    _Budget_DeptExpense.Jul          = this._commonFileService.GetExcelMinusNumber(c.Jul);
                    _Budget_DeptExpense.Aug          = this._commonFileService.GetExcelMinusNumber(c.Aug);
                    _Budget_DeptExpense.Sep          = this._commonFileService.GetExcelMinusNumber(c.Sep);
                    _Budget_DeptExpense.Oct          = this._commonFileService.GetExcelMinusNumber(c.Oct);
                    _Budget_DeptExpense.Nov          = this._commonFileService.GetExcelMinusNumber(c.Nov);
                    _Budget_DeptExpense.Dec          = this._commonFileService.GetExcelMinusNumber(c.Dec);
                    _Budget_DeptExpense.Date         = (DateTime.Now.Year + 1).ToString();
                    _Budget_DeptExpense.DepartmentId = base.CommonBudget ? c.DepartmentId : base.DepartmentId;
                    _Budget_DeptExpense.Factory      = base.CommonBudget ? c.Factory : base.Factory;
                    _Budget_DeptExpense.Version      = base.Version;
                    //00120000:部門費用
                    _Budget_DeptExpense.ItemId_CostCommon = base.CommonBudget ? base.ItemId_CostCommon : "00120000";
                    _Budget_DeptExpenseList.Add(_Budget_DeptExpense);
                    //6136010000:訓練費
                    if (c.ItemId_CostElement == "6136010000" && base.CommonBudget)
                    {
                        _Budget_DeptExpenseList_Common.Add(_Budget_DeptExpense);
                    }
                }
                catch (Exception ex)
                {
                    string _c = JsonConvert.SerializeObject(c);
                    this.ListError.Add(" row : " + _Start.ToString() + " , row data has error format:" + ex.Message + "\r\n data:" + _c);
                }
                _Start++;
            }
            if (this.ListError.Count == 0)
            {
                foreach (Budget_DeptExpense budget_DeptExpense in _Budget_DeptExpenseList_Common)
                {
                    updateDeptExpense(budget_DeptExpense);
                }
            }
            _Budget.DeptExpense = _Budget_DeptExpenseList;
            return(_Budget);
        }