コード例 #1
0
        /// <summary>
        /// 解释并计算
        /// </summary>
        /// <param name="individualIncomeTax"></param>
        /// <param name="employeeSalaryHistoryList">发薪历史,为去年全年的历史从1月到12月</param>
        /// <param name="salaryEndDateMonth">发薪月份,如发薪时间2009-1-21-2009-2-20 此时为2</param>
        public void CalculateItemList(IndividualIncomeTax individualIncomeTax, List <EmployeeSalaryHistory> employeeSalaryHistoryList, int salaryEndDateMonth)
        {
            if (_AccountSetItems == null)
            {
                return;
            }
            List <ExpressionItem> expressionItems =
                TurnExpressionItem.TurnToExpressionItemList(ParameterNameTitle, _AccountSetItems,
                                                            TurnExpressionItem.Operation.Calculate);
            CalculateExpressionItemList calculateExpressionItemList =
                new CalculateExpressionItemList(expressionItems, ParameterNameTitle);

            calculateExpressionItemList.IsSalaryEndDateMonthEquelFunction += new IsSalaryEndDateMonthEquelFunction(salaryEndDateMonth).doFunction;
            calculateExpressionItemList.DoubleSalaryFunction          += new DoubleSalaryFunction(employeeSalaryHistoryList).doFunction;
            calculateExpressionItemList.ForeignTaxFunction            += new ForeignTaxFunction(individualIncomeTax).doFunction;
            calculateExpressionItemList.AnnualBonusForeignTaxFunction += new AnnualBonusForeignTaxFunction(individualIncomeTax).doFunction;
            calculateExpressionItemList.TaxFunction            += new TaxFunction(individualIncomeTax).doFunction;
            calculateExpressionItemList.TaxWithPointFunction   += new TaxWithPointFunction(individualIncomeTax).doFunction;
            calculateExpressionItemList.AnnualBonusTaxFunction += new AnnualBonusTaxFunction(individualIncomeTax).doFunction;
            calculateExpressionItemList.CalculateExpressionResult();
            TurnExpressionItem.TurnBackAccountSetItemList(expressionItems, _AccountSetItems);
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        public decimal Calculate(int accountid, DateTime start, DateTime end, string formula)
        {
            GetBindField            getBindField       = new GetBindField();
            BindItemValueCollection collection         = getBindField.BindItemValueCollection(accountid, start, end);
            List <ExpressionItem>   expressionItemList = new List <ExpressionItem>();

            expressionItemList.Add(new ExpressionItem(AssessBindItemEnum.ImposibleID, formula, EnumDataType.Number));
            foreach (BindItemValue item in collection.BindItemValueList)
            {
                if (item.BindItemEnum.Id == BindItemEnum.ShiJia.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.ShiJia.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.BingJia.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.BingJia.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.ChanQianJia.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.ChanQianJia.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.BuRuJia.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.BuRuJia.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.ChanJia.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.ChanJia.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.BeLate.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.BeLate.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.LeaveEarly.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.LeaveEarly.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.Absenteeism.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.Absenteeism.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.WorkAge.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.WorkAge.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.OnDutyDays.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.OnDutyDays.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.ExpectedOnDutyDays.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.ExpectOnDutyDays.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.PuTongOverTime.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.PuTongOverTime.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.ShuangXiuOverTime.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.ShuangXiuOverTime.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.JieRiOverTime.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.JieRiOverTime.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                else if (item.BindItemEnum.Id == BindItemEnum.OutCityDays.Id)
                {
                    expressionItemList.Add(
                        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.OutCityDays.ID), item.Value.ToString(),
                                           EnumDataType.Number));
                }
                //else if (item.BindItemEnum.Id == BindItemEnum.NotEntryDays.Id)
                //{
                //    expressionItemList.Add(
                //        new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.NotEntryDays.ID), item.Value.ToString(),
                //                           EnumDataType.Number));
                //}
                //else if (item.BindItemEnum.Id == BindItemEnum.DimissionDays.Id)
                //{
                //    expressionItemList.Add(
                //       new ExpressionItem(string.Format("A{0}", AssessBindItemEnum.DimissionDays.ID), item.Value.ToString(),
                //                          EnumDataType.Number));
                //}
            }
            CalculateExpressionItemList cal = new CalculateExpressionItemList(expressionItemList, "A");

            cal.CalculateExpressionResult();
            foreach (ExpressionItem item in expressionItemList)
            {
                if (item.Parameter == AssessBindItemEnum.ImposibleID)
                {
                    return(Convert.ToDecimal(item.Result));
                }
            }
            return(0);
        }