public OperationResult Insert(TaxBaseEveryMonthVM model) { try { TaxBaseEveryMonth taxBaseEveryMonth = _TaxBaseEveryMonthRepository.Entities.FirstOrDefault(c => c.CertificateID.ToLower() == model.CertificateID.Trim().ToLower()); if (taxBaseEveryMonth != null) { return(new OperationResult(OperationResultType.Warning, "数据库中已经存在相同的基本工资信息,请修改后重新提交!")); } if (model.Name == null || model.Name.Trim() == "") { return(new OperationResult(OperationResultType.Warning, "姓名不能为空,请修改后重新提交!")); } var entity = new TaxBaseEveryMonth { Period = model.Period, Name = model.Name, CertificateType = model.CertificateType, CertificateID = model.CertificateID, InitialEaring = model.InitialEaring, TaxFreeIncome = model.TaxFreeIncome, EndowmentInsurance = model.EndowmentInsurance, UnemployedInsurance = model.UnemployedInsurance, MedicalInsurance = model.MedicalInsurance, OccupationalAnnuity = model.OccupationalAnnuity, HousingFund = model.HousingFund, //TaxFree = model.TaxFree, AmountDeducted = model.AmountDeducted, InitialTaxPayable = model.InitialTaxPayable, //InitialTax = model.InitialTax, SpecialDeduction = model.SpecialDeduction, CutTax = model.CutTax, //TotalIncome = model.TotalIncome, TotalSalaryIncomeBeforeTax = model.TotalSalaryIncomeBeforeTax, TotalLaborIncomeBeforeTax = model.TotalLaborIncomeBeforeTax, TotalTax = model.TotalTax, TotalTemp = model.TotalTemp, LastMonths = model.LastMonths, //PersonType = model.PersonType, //Title = model.Title, UpdateDate = DateTime.Now }; _TaxBaseEveryMonthRepository.Insert(entity); return(new OperationResult(OperationResultType.Success, "新增数据成功!")); } catch { return(new OperationResult(OperationResultType.Error, "新增数据失败,数据库插入数据时发生了错误!")); } }
public OperationResult Delete(TaxBaseEveryMonth model) { try { model.UpdateDate = DateTime.Now; _TaxBaseEveryMonthRepository.Delete(model); return(new OperationResult(OperationResultType.Success, "更新数据成功!")); } catch { return(new OperationResult(OperationResultType.Error, "更新数据失败!")); } }
public OperationResult Update(TaxBaseEveryMonthVM model) { try { TaxBaseEveryMonth taxBaseEveryMonth = _TaxBaseEveryMonthRepository.Entities.FirstOrDefault(c => c.CertificateID.ToLower() == model.CertificateID.Trim().ToLower()); if (taxBaseEveryMonth == null) { throw new Exception(); } taxBaseEveryMonth.Period = model.Period; taxBaseEveryMonth.Name = model.Name; taxBaseEveryMonth.CertificateType = model.CertificateType; taxBaseEveryMonth.CertificateID = model.CertificateID; taxBaseEveryMonth.InitialEaring = model.InitialEaring; taxBaseEveryMonth.TaxFreeIncome = model.TaxFreeIncome; taxBaseEveryMonth.EndowmentInsurance = model.EndowmentInsurance; taxBaseEveryMonth.MedicalInsurance = model.MedicalInsurance; taxBaseEveryMonth.UnemployedInsurance = model.UnemployedInsurance; taxBaseEveryMonth.HousingFund = model.HousingFund; taxBaseEveryMonth.OccupationalAnnuity = model.OccupationalAnnuity; //taxBaseEveryMonth.InitialTax = model.InitialTax; taxBaseEveryMonth.InitialTaxPayable = model.InitialTaxPayable; taxBaseEveryMonth.AmountDeducted = model.AmountDeducted; //taxBaseByMonth.PersonType = model.PersonType; // taxBaseEveryMonth.TaxFree = model.TaxFree; taxBaseEveryMonth.SpecialDeduction = model.SpecialDeduction; taxBaseEveryMonth.CutTax = model.CutTax; // taxBaseEveryMonth.TotalIncome = model.TotalIncome; taxBaseEveryMonth.TotalTax = model.TotalTax; taxBaseEveryMonth.TotalSalaryIncomeBeforeTax = model.TotalSalaryIncomeBeforeTax; taxBaseEveryMonth.TotalLaborIncomeBeforeTax = model.TotalLaborIncomeBeforeTax; taxBaseEveryMonth.TotalTemp = model.TotalTemp; taxBaseEveryMonth.LastMonths = model.LastMonths; //taxBaseByMonth.Title = model.Title; taxBaseEveryMonth.UpdateDate = DateTime.Now; _TaxBaseEveryMonthRepository.Update(taxBaseEveryMonth); return(new OperationResult(OperationResultType.Success, "更新数据成功!")); } catch { return(new OperationResult(OperationResultType.Error, "更新数据失败!")); } }
public OperationResult Import(String fileName, Service.Excel.ImportData importData) { try { var columns = importData == null ? null : importData.Columns; var maps = ImportUtil.GetColumns(columns, new TaxBaseEveryMonth()); var items = ExcelService.GetObjects(fileName, columns); if (importData != null) { int num = 1; foreach (var item in items) { TaxBaseEveryMonth record = new TaxBaseEveryMonth(); List <ImportFeedBack> errors = ImportUtil.ValidateImportRecord(item, num++, maps, ref record); if (errors.Count > 0) { return(new OperationResult(OperationResultType.Error, "导入数据失败", ImportUtil.ParseToHtml(errors))); } //插入或更新数据 _TaxBaseEveryMonthRepository.InsertOrUpdate(record); } } return(new OperationResult(OperationResultType.Success, "导入数据成功!")); } catch (Exception ex) { _log.Error(ex); ImportFeedBack feedBack = new ImportFeedBack(); feedBack.ExceptionType = "未知错误"; feedBack.ExceptionContent.Add(ex.Message); List <ImportFeedBack> erros = new List <ImportFeedBack>(); return(new OperationResult(OperationResultType.Error, "导入数据失败!", ImportUtil.ParseToHtml(new List <ImportFeedBack>() { feedBack }))); } }
public void InsertOrUpdate(TaxBaseEveryMonth record) { this._TaxBaseEveryMonthRepository.InsertOrUpdate(record); }
public TaxBaseEveryMonth GetExistRecord(String period_year, String certificateID) { TaxBaseEveryMonth taxBaseEveryMonth = _TaxBaseEveryMonthRepository.GetExistRecord(period_year, certificateID); return(taxBaseEveryMonth); }
// POST: /BasicDataManagement/WageBaseTable/AddToYearBaseTable/ public ActionResult AddToYearBaseTable() { var result = this._taxBaseByMonthService.TaxBaseByMonths.ToList(); String period = _taxBaseByMonthService.TaxBaseByMonths.First().Period; String period_year = period.Split('-')[0]; //get year String period_month = period.Split('-')[1]; //get month TaxBaseEveryMonth taxBaseEveryMonth = new TaxBaseEveryMonth(); foreach (var model in result) { double monthIncome = _taxPerOrderService.GetPayTaxAmount(model.CertificateID, "含税"); double monthIncomeAfter = _taxPerOrderService.GetPayTaxAmount(model.CertificateID, "不含税"); double monthTax = _taxPerOrderService.GetDeductTaxSum(model.CertificateID); ; //检查年度累计底表中是否已存在该人员在该年度的记录,若存在,则进行数据累计,若不存在,则新增 var taxBaseEveryMonth_exsit = _taxBaseEveryMonthService.GetExistRecord(period_year, model.CertificateID); if (taxBaseEveryMonth_exsit != null) { /* * taxBaseEveryMonth.CertificateID = model.CertificateID; * taxBaseEveryMonth.CertificateType = model.CertificateType; * taxBaseEveryMonth.Name = model.Name; * taxBaseEveryMonth.Period = period_year; * taxBaseEveryMonth.InitialEaring = model.InitialEaring + taxBaseEveryMonth_exsit.InitialEaring; * taxBaseEveryMonth.TaxFreeIncome = model.TaxFreeIncome + taxBaseEveryMonth_exsit.TaxFreeIncome; * taxBaseEveryMonth.EndowmentInsurance = model.EndowmentInsurance + taxBaseEveryMonth_exsit.EndowmentInsurance; * taxBaseEveryMonth.UnemployedInsurance = model.UnemployedInsurance + taxBaseEveryMonth_exsit.UnemployedInsurance; * taxBaseEveryMonth.MedicalInsurance = model.MedicalInsurance + taxBaseEveryMonth_exsit.MedicalInsurance; * taxBaseEveryMonth.OccupationalAnnuity = model.OccupationalAnnuity + taxBaseEveryMonth_exsit.OccupationalAnnuity; * taxBaseEveryMonth.HousingFund = model.HousingFund + taxBaseEveryMonth_exsit.HousingFund; * taxBaseEveryMonth.AmountDeducted = model.AmountDeducted + taxBaseEveryMonth_exsit.AmountDeducted; * taxBaseEveryMonth.SpecialDeduction = model.SpecialDeduction + taxBaseEveryMonth_exsit.SpecialDeduction; * taxBaseEveryMonth.TotalTax = model.InitialTax + monthTax + taxBaseEveryMonth_exsit.TotalTax; * taxBaseEveryMonth.TotalSalaryIncomeBeforeTax = model.InitialEaring + taxBaseEveryMonth_exsit.TotalSalaryIncomeBeforeTax; * taxBaseEveryMonth.TotalLaborIncomeBeforeTax = monthIncome + taxBaseEveryMonth_exsit.TotalLaborIncomeBeforeTax; * taxBaseEveryMonth.InitialTaxPayable = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TaxFreeIncome - taxBaseEveryMonth.EndowmentInsurance - taxBaseEveryMonth.UnemployedInsurance - taxBaseEveryMonth.MedicalInsurance - taxBaseEveryMonth.OccupationalAnnuity - taxBaseEveryMonth.HousingFund - taxBaseEveryMonth.AmountDeducted - taxBaseEveryMonth.SpecialDeduction; * taxBaseEveryMonth.TotalTemp = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TotalTax; * taxBaseEveryMonth.LastMonths = period_month; */ taxBaseEveryMonth.CertificateID = model.CertificateID; //保存证件号码 taxBaseEveryMonth.CertificateType = model.CertificateType; //保存证件类型 taxBaseEveryMonth.Name = model.Name; //保存人员姓名 taxBaseEveryMonth.Period = period_year; //保存年度,如2019 //新的年度累计表中的“年度累计税前收入”= 该用户 当月底表中的 “本期初始税前收入额“ + 系统中已存在的年度累计表中的“年度累计税前收入” + 当月下发的劳务费含税总和 taxBaseEveryMonth.InitialEaring = model.InitialEaring + taxBaseEveryMonth_exsit.InitialEaring + monthIncome; //新的年度累计表中的“年度累计免税收入”= 该用户 当月底表中的 “本期免税收入“ + 系统中已存在的年度累计表中的“年度累计免税收入” taxBaseEveryMonth.TaxFreeIncome = model.TaxFreeIncome + taxBaseEveryMonth_exsit.TaxFreeIncome; //新的年度累计表中的“年度累计养老保险”= 该用户 当月底表中的 “本期养老保险“ + 系统中已存在的年度累计表中的“年度累计养老保险” taxBaseEveryMonth.EndowmentInsurance = model.EndowmentInsurance + taxBaseEveryMonth_exsit.EndowmentInsurance; //新的年度累计表中的“年度累计失业保险”= 该用户 当月底表中的 “本期失业保险“ + 系统中已存在的年度累计表中的“年度累计失业保险” taxBaseEveryMonth.UnemployedInsurance = model.UnemployedInsurance + taxBaseEveryMonth_exsit.UnemployedInsurance; //新的年度累计表中的“年度累计医疗保险”= 该用户 当月底表中的 “本期医疗保险“ + 系统中已存在的年度累计表中的“年度累计医疗保险” taxBaseEveryMonth.MedicalInsurance = model.MedicalInsurance + taxBaseEveryMonth_exsit.MedicalInsurance; //新的年度累计表中的“年度累计职业年金”= 该用户 当月底表中的 “本期职业年金“ + 系统中已存在的年度累计表中的“年度累计职业年金” taxBaseEveryMonth.OccupationalAnnuity = model.OccupationalAnnuity + taxBaseEveryMonth_exsit.OccupationalAnnuity; //新的年度累计表中的“年度累计住房公积金”= 该用户 当月底表中的 “本期住房公积金“ + 系统中已存在的年度累计表中的“年度累计住房公积金” taxBaseEveryMonth.HousingFund = model.HousingFund + taxBaseEveryMonth_exsit.HousingFund; //新的年度累计表中的“年度累计基本扣除”= 该用户 当月底表中的 “本期基本扣除“ + 系统中已存在的年度累计表中的“年度累计基本扣除” taxBaseEveryMonth.AmountDeducted = model.AmountDeducted + taxBaseEveryMonth_exsit.AmountDeducted; //新的年度累计表中的“年度累计专项附加扣除”= 该用户 当月底表中的 “本期专项附加扣除“ + 系统中已存在的年度累计表中的“年度累计专项附加扣除” taxBaseEveryMonth.SpecialDeduction = model.SpecialDeduction + taxBaseEveryMonth_exsit.SpecialDeduction; //新的年度累计表中的“年度累计已扣缴税额”= 该用户 当月底表中的 “本期初始已扣缴税额“+ 当月下发的劳务费税总和+ 系统中已存在的年度累计表中的“年度累计已扣缴税额” taxBaseEveryMonth.TotalTax = model.InitialTax + monthTax + taxBaseEveryMonth_exsit.TotalTax; //新的年度累计表中的“年度累计工资税前收入额”= 该用户 当月底表中的 “本期初始税前收入额“ + 系统中已存在的年度累计表中的“年度累计工资税前收入额” taxBaseEveryMonth.TotalSalaryIncomeBeforeTax = model.InitialEaring + taxBaseEveryMonth_exsit.TotalSalaryIncomeBeforeTax; //新的年度累计表中的“年度累计劳务费税前收入额”= 该用户 当月下发的劳务费含税总和 + 系统中已存在的年度累计表中的“年度累计劳务费税前收入额” taxBaseEveryMonth.TotalLaborIncomeBeforeTax = monthIncome + taxBaseEveryMonth_exsit.TotalLaborIncomeBeforeTax; //新的年度累计表中的“年度累计应纳税所得额”= 更新后的年度累计表中的“年度累计税前收入”- 更新后的年度累计表中的“年度累计免税收入”- 更新后的年度累计表中的“年度累计养老保险”- 更新后的年度累计表中的“年度累计失业保险”- 更新后的年度累计表中的“年度累计医疗保险”- 更新后的年度累计表中的“年度累计职业年金”- 更新后的年度累计表中的“年度累计住房公积金”- 更新后的年度累计表中的“年度累计基本扣除”- 更新后的年度累计表中的“年度累计专项附加扣除” taxBaseEveryMonth.InitialTaxPayable = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TaxFreeIncome - taxBaseEveryMonth.EndowmentInsurance - taxBaseEveryMonth.UnemployedInsurance - taxBaseEveryMonth.MedicalInsurance - taxBaseEveryMonth.OccupationalAnnuity - taxBaseEveryMonth.HousingFund - taxBaseEveryMonth.AmountDeducted - taxBaseEveryMonth.SpecialDeduction; //年度累计减免税额 taxBaseEveryMonth.CutTax = model.CutTax + taxBaseEveryMonth_exsit.CutTax; //新的年度累计表中的“年度累计税后收入”= 更新后的年度累计表中的“年度累计税前收入”- 更新后的年度累计表中的“年度累计已扣缴税额” //new20200407 “年度累计税后收入” = 年度累计税前收入-年度累计已扣缴税额-年度累计减免税额 taxBaseEveryMonth.TotalTemp = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TotalTax - taxBaseEveryMonth.CutTax; //更新“当前已累计月数”,如07 taxBaseEveryMonth.LastMonths = period_month; } else { /* * taxBaseEveryMonth.CertificateID = model.CertificateID; * taxBaseEveryMonth.CertificateType = model.CertificateType; * taxBaseEveryMonth.Name = model.Name; * taxBaseEveryMonth.Period = period_year; * taxBaseEveryMonth.InitialEaring = model.InitialEaring; * taxBaseEveryMonth.TaxFreeIncome = model.TaxFreeIncome; * taxBaseEveryMonth.EndowmentInsurance = model.EndowmentInsurance; * taxBaseEveryMonth.UnemployedInsurance = model.UnemployedInsurance; * taxBaseEveryMonth.MedicalInsurance = model.MedicalInsurance; * taxBaseEveryMonth.OccupationalAnnuity = model.OccupationalAnnuity; * taxBaseEveryMonth.HousingFund = model.HousingFund; * taxBaseEveryMonth.AmountDeducted = model.AmountDeducted; * taxBaseEveryMonth.SpecialDeduction = model.SpecialDeduction; * taxBaseEveryMonth.TotalTax = model.InitialTax + monthTax; * taxBaseEveryMonth.TotalSalaryIncomeBeforeTax = model.InitialEaring; * taxBaseEveryMonth.TotalLaborIncomeBeforeTax = monthIncome; * taxBaseEveryMonth.InitialTaxPayable = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TaxFreeIncome - taxBaseEveryMonth.EndowmentInsurance - taxBaseEveryMonth.UnemployedInsurance - taxBaseEveryMonth.MedicalInsurance - taxBaseEveryMonth.OccupationalAnnuity - taxBaseEveryMonth.HousingFund - taxBaseEveryMonth.AmountDeducted - taxBaseEveryMonth.SpecialDeduction; * taxBaseEveryMonth.TotalTemp = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TotalTax; * taxBaseEveryMonth.LastMonths = period_month; */ //年度累计表中不存在该用户的情况(新人),将当月的数据累计到年度累计表中 taxBaseEveryMonth.CertificateID = model.CertificateID; taxBaseEveryMonth.CertificateType = model.CertificateType; taxBaseEveryMonth.Name = model.Name; taxBaseEveryMonth.Period = period_year; //新的年度累计表中的“年度累计税前收入”= 该用户 当月底表中的 “本期初始税前收入额“ + 当月下发的劳务费含税总和 taxBaseEveryMonth.InitialEaring = model.InitialEaring + monthIncome; //新的年度累计表中的“年度累计免税收入”= 该用户 当月底表中的 “本期免税收入“ taxBaseEveryMonth.TaxFreeIncome = model.TaxFreeIncome; //新的年度累计表中的“年度累计养老保险”= 该用户 当月底表中的 “本期养老保险“ taxBaseEveryMonth.EndowmentInsurance = model.EndowmentInsurance; //新的年度累计表中的“年度累计失业保险”= 该用户 当月底表中的 “本期失业保险“ taxBaseEveryMonth.UnemployedInsurance = model.UnemployedInsurance; //新的年度累计表中的“年度累计医疗保险”= 该用户 当月底表中的 “本期医疗保险“ taxBaseEveryMonth.MedicalInsurance = model.MedicalInsurance; //新的年度累计表中的“年度累计职业年金”= 该用户 当月底表中的 “本期职业年金“ taxBaseEveryMonth.OccupationalAnnuity = model.OccupationalAnnuity; //新的年度累计表中的“年度累计住房公积金”= 该用户 当月底表中的 “本期住房公积金“ taxBaseEveryMonth.HousingFund = model.HousingFund; //新的年度累计表中的“年度累计基本扣除”= 该用户 当月底表中的 “本期基本扣除“ taxBaseEveryMonth.AmountDeducted = model.AmountDeducted; //新的年度累计表中的“年度累计专项附加扣除”= 该用户 当月底表中的 “本期专项附加扣除“ taxBaseEveryMonth.SpecialDeduction = model.SpecialDeduction; //新的年度累计表中的“年度累计已扣缴税额”= 该用户 当月底表中的 “本期初始已扣缴税额“+ 当月下发的劳务费税总和 taxBaseEveryMonth.TotalTax = model.InitialTax + monthTax; //新的年度累计表中的“年度累计工资税前收入额”= 该用户 当月底表中的 “本期初始税前收入额“ taxBaseEveryMonth.TotalSalaryIncomeBeforeTax = model.InitialEaring; //新的年度累计表中的“年度累计劳务费税前收入额”= 该用户 当月下发的劳务费含税总和 taxBaseEveryMonth.TotalLaborIncomeBeforeTax = monthIncome; //新的年度累计表中的“年度累计应纳税所得额”= 更新后的年度累计表中的“年度累计税前收入”- 更新后的年度累计表中的“年度累计免税收入”- 更新后的年度累计表中的“年度累计养老保险”- 更新后的年度累计表中的“年度累计失业保险”- 更新后的年度累计表中的“年度累计医疗保险”- 更新后的年度累计表中的“年度累计职业年金”- 更新后的年度累计表中的“年度累计住房公积金”- 更新后的年度累计表中的“年度累计基本扣除”- 更新后的年度累计表中的“年度累计专项附加扣除” taxBaseEveryMonth.InitialTaxPayable = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TaxFreeIncome - taxBaseEveryMonth.EndowmentInsurance - taxBaseEveryMonth.UnemployedInsurance - taxBaseEveryMonth.MedicalInsurance - taxBaseEveryMonth.OccupationalAnnuity - taxBaseEveryMonth.HousingFund - taxBaseEveryMonth.AmountDeducted - taxBaseEveryMonth.SpecialDeduction; //年度累计减免税额 taxBaseEveryMonth.CutTax = model.CutTax; //新的年度累计表中的“年度累计税后收入”= 更新后的年度累计表中的“年度累计税前收入”- 更新后的年度累计表中的“年度累计已扣缴税额” //new20200407 “年度累计税后收入” = 年度累计税前收入-年度累计已扣缴税额-年度累计减免税额 taxBaseEveryMonth.TotalTemp = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TotalTax - taxBaseEveryMonth.CutTax; //更新“当前已累计月数”,如07 taxBaseEveryMonth.LastMonths = period_month; } try { _taxBaseEveryMonthService.InsertOrUpdate(taxBaseEveryMonth); // _taxBaseByMonthService.Delete(model); } catch (Exception ex) { return(null); } } return(Json(new { })); }
/* * public OperationResult Insert(TaxPerOrder model, bool isSave) * { * try * { * //TaxPerOrder taxPerOrder = _TaxPerOrderRepository.Entities.FirstOrDefault(c => c.SerialNumber == model.SerialNumber && c.SerialNumber == model.CertificateID.Trim()); * //if (taxPerOrder != null) * //{ * // return new OperationResult(OperationResultType.Warning, "数据库中已经存在相同的税单纪录,请修改后重新提交!"); * //} * //if (model.CertificateID == null || model.CertificateID.Trim() == "") * // return new OperationResult(OperationResultType.Warning, "证件号码不能为空,请修改后重新提交!"); * double tax = 0.0; //最终税额 * double amountX = 0.0; //最终税后数(不含税) * double amountY = 0.0; //最终税前数(含税) * //计算税金,并存储 * if (model.PersonType.Equals("所内")) * { * //按照工资进行算税 * //1.查询已发放总金额,查询已计税总额【Tax和】 * //double amount = GetPayTaxAmount(model.CertificateID, model.TaxOrNot); * //都按税前加和 * double amount = GetPayTaxAmount(model.CertificateID, model.TaxOrNot); * //double amount = 0.0; * double deductTaxSum = GetDeductTaxSum(model.CertificateID); * //double deductTaxSum = 0.0; * //2.从基本工资表TaxBaseByMonth中查询(初始应发工资-免税额-基本扣除) * double baseSalary = _TaxBaseByMonthRepository.GetBaseSalary(model.CertificateID); * //从基本工资表里读取税 * double baseTax = _TaxBaseByMonthRepository.GetBaseTax(model.CertificateID); * //double baseSalary = 4000; * //3.根据已发放总金额,判断算税公式 * //含税与不含税的税率区间不同,分开判断 * //含税公式:T=【Y+(初始应发工资-免税额-基本扣除数)】*税率-速算扣除数-初始表税-前几次税额总数 * * * //4.计算Tax(税额),AmountX(税后),AmountY(税前) * if (model.TaxOrNot.Equals("含税")) * { * double interval = model.Amount + amount + baseSalary; * if (interval <= 0) * { * tax = 0.0; * } * //不超过3000元,税率3%,速算扣除数0 * else if (interval > 0 && interval <= 3000) * { * tax = interval * 0.03 - deductTaxSum - baseTax; * } * //超过3000至12000元,税率10%,速算扣除数210 * else if (interval > 3000 && interval <= 12000) * { * tax = interval * 0.1 - 210 - deductTaxSum - baseTax; * } * //超过12000至25000元,税率20%,速算扣除数1410 * else if (interval > 12000 && interval <= 25000) * { * tax = interval * 0.2 - 1410 - deductTaxSum - baseTax; * } * //超过25000至35000元,税率25%,速算扣除数2660 * else if (interval > 25000 && interval <= 35000) * { * tax = interval * 0.25 - 2660 - deductTaxSum - baseTax; * } * //超过35000至55000元,税率30%,速算扣除数4410 * else if (interval > 35000 && interval <= 55000) * { * tax = interval * 0.3 - 4410 - deductTaxSum - baseTax; * } * //超过55000至80000元,税率35%,速算扣除数7160 * else if (interval > 55000 && interval <= 80000) * { * tax = interval * 0.35 - 7160 - deductTaxSum - baseTax; * } * //超过80000元,税率45%,速算扣除数15160 * else if (interval > 80000) * { * tax = interval * 0.45 - 15160 - deductTaxSum - baseTax; * } * amountX = model.Amount - tax; * amountY = model.Amount; * } * else if (model.TaxOrNot.Equals("不含税")) * { * double interval_1 = model.Amount + amount + baseSalary - baseTax; * double tax_1 = 0.0; * //first step * if (interval_1 <= 0) * { * tax_1 = 0.0; * } * * //不超过2910元,税率3%,速算扣除数0 * else if (interval_1 > 0 && interval_1 <= 2910) * { * * tax_1 = interval_1 / (1 - 0.03); * } * * //超过2910至11010元,税率10%,速算扣除数210 * else if (interval_1 > 2910 && interval_1 <= 11010) * { * tax_1 = (interval_1 - 210) / (1 - 0.1); * * } * * //超过11010至21410元,税率20%,速算扣除数1410 * else if (interval_1 > 11010 && interval_1 <= 21410) * { * tax_1 = (interval_1 - 1410) / (1 - 0.2); * * } * * //超过21410至28910元,税率25%,速算扣除数2660 * else if (interval_1 > 21410 && interval_1 <= 28910) * { * tax_1 = (interval_1 - 2660) / (1 - 0.25); * * } * * //超过28910至42910元,税率30%,速算扣除数4410 * else if (interval_1 > 28910 && interval_1 <= 42910) * { * tax_1 = (interval_1 - 4410) / (1 - 0.3); * * } * * //超过42910至59160元,税率35%,速算扣除数7160 * else if (interval_1 > 42910 && interval_1 <= 59160) * { * tax_1 = (interval_1 - 7160) / (1 - 0.35); * * } * * //超过59160元,税率45%,速算扣除数15160 * else if (interval_1 > 59160) * { * tax_1 = (interval_1 - 15160) / (1 - 0.45); * * } * * * //secend step * * if (tax_1 <= 0) * { * tax = 0.0; * } * //不超过3000元,税率3%,速算扣除数0 * else if (tax_1 > 0 && tax_1 <= 3000) * { * tax = tax_1 * 0.03 - baseTax - deductTaxSum; * } * //超过3000至12000元,税率10%,速算扣除数210 * else if (tax_1 > 3000 && tax_1 <= 12000) * { * tax = tax_1 * 0.1 - baseTax - 210 - deductTaxSum; * } * //超过12000至25000元,税率20%,速算扣除数1410 * else if (tax_1 > 12000 && tax_1 <= 25000) * { * tax = tax_1 * 0.2 - baseTax - 1410 - deductTaxSum; * } * //超过25000至35000元,税率25%,速算扣除数2660 * else if (tax_1 > 25000 && tax_1 <= 35000) * { * tax = tax_1 * 0.25 - baseTax - 2660 - deductTaxSum; * } * //超过35000至55000元,税率30%,速算扣除数4410 * else if (tax_1 > 35000 && tax_1 <= 55000) * { * tax = tax_1 * 0.3 - baseTax - 4410 - deductTaxSum; * } * //超过55000至80000元,税率35%,速算扣除数7160 * else if (tax_1 > 55000 && tax_1 <= 80000) * { * tax = tax_1 * 0.35 - baseTax - 7160 - deductTaxSum; * } * //超过80000元,税率45%,速算扣除数15160 * else if (tax_1 > 80000) * { * tax = tax_1 * 0.45 - baseTax - 15160 - deductTaxSum; * } * amountX = model.Amount; * amountY = model.Amount + tax; * } * } * else if (model.PersonType.Equals("所外")) * { * //按照劳务进行算税 * //1.查询已发放总金额 * double amount = GetPayTaxAmount(model.CertificateID, model.TaxOrNot); * // double amount = 0.0; * double deductTaxSum = GetDeductTaxSum(model.CertificateID); * // double deductTaxSum = 0.0; * //2.根据已发放总金额,判断算税公式 * double baseSalary = 800; * double interval = model.Amount + amount; * //3.计算Tax(税额),AmountX(税后),AmountY(税前) * if (model.TaxOrNot.Equals("含税")) * { * if (interval <= 800) * { * tax = 0.0; * } * //超过800至4000元,税率20%,速算扣除数0 * else if (interval > 800 && interval <= 4000) * { * tax = (interval - baseSalary) * 0.2 - deductTaxSum; * } * //超过4000至25000元,税率20%,速算扣除数0 * else if (interval > 4000 && interval <= 20000) * { * tax = (interval - interval * 0.2) * 0.2 - deductTaxSum; * } * //超过25000至62500元,税率30%,速算扣除数2000 * else if (interval > 20000 && interval <= 50000) * { * tax = (interval - interval * 0.2) * 0.3 - 2000 - deductTaxSum; * } * //超过62500元,税率40%,速算扣除数7000 * else if (interval > 50000) * { * tax = (interval - interval * 0.2) * 0.4 - 7000 - deductTaxSum; * } * amountX = model.Amount - tax; * amountY = model.Amount; * } * else if (model.TaxOrNot.Equals("不含税")) * { * if (interval <= 800) * { * tax = 0.0; * } * //超过800至4000元,税率20%,速算扣除数0 * else if (interval > 800 && interval <= 3360) * { * tax = ((interval - baseSalary) / (1 - 0.2)) * 0.2 - deductTaxSum; * } * //超过4000至25000元,税率20%,速算扣除数0 * else if (interval > 3360 && interval <= 21000) * { * tax = (interval * (1 - 0.2) * 0.2) / (1 - (1 - 0.2) * 0.2) - deductTaxSum; * } * //超过25000至62500元,税率30%,速算扣除数2000 * else if (interval > 21000 && interval <= 49500) * { * tax = (interval * (1 - 0.2) * 0.3 - 2000) / (1 - (1 - 0.2) * 0.3) - deductTaxSum; * } * //超过62500元,税率40%,速算扣除数7000 * else if (interval > 49500) * { * tax = (interval * (1 - 0.2) * 0.4 - 7000) / (1 - (1 - 0.2) * 0.4) - deductTaxSum; * } * amountX = model.Amount; * amountY = model.Amount + tax; * } * * } * * //5.存储该纪录 * var entity = new TaxPerOrder * { * SerialNumber = model.SerialNumber, * ProjectNumber = model.ProjectNumber, * TaskName = model.TaskName, * RefundType = model.RefundType, * ProjectDirector = model.ProjectDirector, * Name = model.Name, * Agent = model.Agent, * PersonType = model.PersonType, * CertificateType = model.CertificateType, * CertificateID = model.CertificateID, * Amount = model.Amount, * TaxOrNot = model.TaxOrNot, * Tax = tax, * Bank = model.Bank, * BankDetailName = model.BankDetailName, * AccountName = model.AccountName, * AccountNumber = model.AccountNumber, * PaymentType = model.PaymentType, * AmountY = amountY, * AmountX = amountX, * UpdateDate = DateTime.Now * }; * _TaxPerOrderRepository.Insert(entity, isSave); * * return new OperationResult(OperationResultType.Success, "新增数据成功!"); * } * catch (Exception ex) * { * return new OperationResult(OperationResultType.Error, "新增数据失败:" + ex.Message); * } * } * */ public OperationResult Insert(TaxPerOrder model, bool isSave) { try { //TaxPerOrder taxPerOrder = _TaxPerOrderRepository.Entities.FirstOrDefault(c => c.SerialNumber == model.SerialNumber && c.SerialNumber == model.CertificateID.Trim()); //if (taxPerOrder != null) //{ // return new OperationResult(OperationResultType.Warning, "数据库中已经存在相同的税单纪录,请修改后重新提交!"); //} //if (model.CertificateID == null || model.CertificateID.Trim() == "") // return new OperationResult(OperationResultType.Warning, "证件号码不能为空,请修改后重新提交!"); double tax = 0.0; //最终税额 double amountX = 0.0; //最终税后数(不含税) double amountY = 0.0; //最终税前数(含税) //计算税金,并存储 if (model.PersonType.Equals("所内")) { //按照工资进行算税 //2019.4.12 String period_year = DateTime.Now.Year.ToString(); TaxBaseEveryMonth taxBaseEveryMonth = _TaxBaseEveryMonthRepository.GetExistRecord(period_year, model.CertificateID); //含税 //本次劳务应纳税所得额taxableIncome=当次劳务税前收入额model.Amount //+本期应纳税所得额TaxBaseByMonth.InitialTaxPayable //+年度累计应纳税所得额TaxBaseEveryMonth.InitialTaxPayable //+本期已计算劳务税前收入总额GetPayTaxAmount(model.CertificateID, model.TaxOrNot)//含税 //第一步:本次劳务应纳税所得额taxableIncome=当次劳务税前收入额model.Amount //+本期已计算劳务税前收入总额GetPayTaxAmount(model.CertificateID, model.TaxOrNot)//含税 //+(本期初始税前收入额TaxBaseByMonth.InitialEaring—本期免税收入TaxFreeIncome //—本期养老保险—本期失业保险—本期医疗保险—本期职业年金—本期住房公积金 //—本期基本扣除—本期专项附加扣除)part1 //+(年度累计税前收入InitalEaring—年度累计免税收入TaxFreeIncome //—年度累计养老保险—年度累计失业保险—年度累计医疗保险—年度累计职业年金—年度累计住房公积金 //—年度累计基本扣除—年度累计专项附加扣除)part2 double part1 = _TaxBaseByMonthRepository.GetPart1(model.CertificateID); double part2 = 0.0; if (taxBaseEveryMonth != null) { part2 = taxBaseEveryMonth.InitialEaring - taxBaseEveryMonth.TaxFreeIncome - taxBaseEveryMonth.EndowmentInsurance - taxBaseEveryMonth.UnemployedInsurance - taxBaseEveryMonth.MedicalInsurance - taxBaseEveryMonth.OccupationalAnnuity - taxBaseEveryMonth.HousingFund - taxBaseEveryMonth.AmountDeducted - taxBaseEveryMonth.SpecialDeduction; } //1.查询本期已计算劳务含税/不含税收入总额 double amountTotal = GetPayTaxAmount(model.CertificateID, model.TaxOrNot); //2.本期应纳税所得额 double InitialTaxPayable = _TaxBaseByMonthRepository.GetInitialTaxPayable(model.CertificateID); //3.年度累计应纳税所得额 double InitialTaxPayableInYear = 0.0; //4.年度累计已扣缴税额 double TotalTaxInYear = 0.0; if (taxBaseEveryMonth != null) { InitialTaxPayableInYear = taxBaseEveryMonth.InitialTaxPayable; TotalTaxInYear = taxBaseEveryMonth.TotalTax; } //5.本期已计算劳务税额总额 double deductTaxSum = GetDeductTaxSum(model.CertificateID); //6.本期初始已扣缴税额 double InitialTax = _TaxBaseByMonthRepository.GetInitialTax(model.CertificateID); //7.本次劳务应纳税额tax=(本次应纳税所得额taxableIncome*税率 //-速算扣除数)-本期初始已扣缴税额TaxBaseByMonth.InitialTax //—年度累计已扣缴税额TaxBaseEveryMonth.TotalTax //—本期已计算劳务税额总额deductTaxSum //8.获取本期减免税额 double cutTax = _TaxBaseByMonthRepository.GetCutTax(model.CertificateID); double cutTaxTemp = cutTax; double yearCutTax = 0.0; if (taxBaseEveryMonth != null) { cutTaxTemp = cutTaxTemp + taxBaseEveryMonth.CutTax; yearCutTax = taxBaseEveryMonth.CutTax; } if (model.TaxOrNot.Equals("含税")) { double taxableIncome = model.Amount + part1 + part2 + amountTotal; //比较税率 //不超过36000元,税率3%,速算扣除数0 if (taxableIncome <= 36000) { tax = taxableIncome * 0.03 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过36000至144000元,税率10%,速算扣除数2520 else if (taxableIncome > 36000 && taxableIncome <= 144000) { tax = taxableIncome * 0.1 - 2520 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过144000至300000元,税率20%,速算扣除数16920 else if (taxableIncome > 144000 && taxableIncome <= 300000) { tax = taxableIncome * 0.2 - 16920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过300000至420000元,税率25%,速算扣除数31920 else if (taxableIncome > 300000 && taxableIncome <= 420000) { tax = taxableIncome * 0.25 - 31920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过420000至660000元,税率30%,速算扣除数52920 else if (taxableIncome > 420000 && taxableIncome <= 660000) { tax = taxableIncome * 0.3 - 52920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过660000至960000元,税率35%,速算扣除数85920 else if (taxableIncome > 660000 && taxableIncome <= 960000) { tax = taxableIncome * 0.35 - 85920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过960000元,税率45%,速算扣除数181920 else if (taxableIncome > 960000) { tax = taxableIncome * 0.45 - 181920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } if (tax < 0) { tax = 0.0; } amountX = model.Amount - tax; amountY = model.Amount; } else if (model.TaxOrNot.Equals("不含税")) { //【当次劳务税后收入额model.Amount+本期已计算劳务税后收入总额amountTotal //+(本期初始税后收入额—本期免税收入 —本期养老保险—本期失业保险 //—本期医疗保险—本期职业年金—本期住房公积金—本期基本扣除 //—本期专项附加扣除) //+(年度累计税后收入—年度累计免税收入—年度累计养老保险 //—年度累计失业保险—年度累计医疗保险—年度累计职业年金 // —年度累计住房公积金—年度累计基本扣除—年度累计专项附加扣除)】 //1.(本期初始税后收入额—本期免税收入 —本期养老保险—本期失业保险 //—本期医疗保险—本期职业年金—本期住房公积金—本期基本扣除 //—本期专项附加扣除) double withoutInsurance = _TaxBaseByMonthRepository.GetWithoutInsurance(model.CertificateID); //2.(年度累计税后收入—年度累计免税收入—年度累计养老保险 //—年度累计失业保险—年度累计医疗保险—年度累计职业年金 // —年度累计住房公积金—年度累计基本扣除—年度累计专项附加扣除) double withoutInsuranceInYear = 0.0; if (taxBaseEveryMonth != null) { withoutInsuranceInYear = taxBaseEveryMonth.TotalTemp - taxBaseEveryMonth.TaxFreeIncome - taxBaseEveryMonth.EndowmentInsurance - taxBaseEveryMonth.UnemployedInsurance - taxBaseEveryMonth.OccupationalAnnuity - taxBaseEveryMonth.HousingFund - taxBaseEveryMonth.MedicalInsurance - taxBaseEveryMonth.AmountDeducted - taxBaseEveryMonth.SpecialDeduction; } //3.中间对比不含税级距值 double interval_1 = model.Amount + amountTotal + withoutInsurance + withoutInsuranceInYear; //4.不含税级距值 //本次劳务应纳税所得额taxableIncome1={interval_1—累计速算扣除数}/(1-税率) double taxableIncome1 = 0.0; //不超过34920元,税率3%,速算扣除数0 if (interval_1 <= 34920) { taxableIncome1 = interval_1 / (1 - 0.03); } //超过34920至132120元,税率10%,速算扣除数2520 else if (interval_1 > 34920 && interval_1 <= 132120) { taxableIncome1 = (interval_1 - 2520) / (1 - 0.1); } //超过132120至256920元,税率20%,速算扣除数16920 else if (interval_1 > 132120 && interval_1 <= 256920) { taxableIncome1 = (interval_1 - 16920) / (1 - 0.2); } //超过21410至346920元,税率25%,速算扣除数31920 else if (interval_1 > 256920 && interval_1 <= 346920) { taxableIncome1 = (interval_1 - 31920) / (1 - 0.25); } //超过346920至514920元,税率30%,速算扣除数52920 else if (interval_1 > 346920 && interval_1 <= 514920) { taxableIncome1 = (interval_1 - 52920) / (1 - 0.3); } //超过514920至709920元,税率35%,速算扣除数85920 else if (interval_1 > 514920 && interval_1 <= 709920) { taxableIncome1 = (interval_1 - 85920) / (1 - 0.35); } //超过709920元,税率45%,速算扣除数181920 else if (interval_1 > 709920) { taxableIncome1 = (interval_1 - 181920) / (1 - 0.45); } //4.本次劳务应纳税额=(本次劳务应纳税所得额*税率—速算扣除数) //—本期初始已扣缴税额—年度累计已扣缴税额—本期已计算劳务税额总额 //5.第二次税率级距判断 //不超过36000元,税率3%,速算扣除数0 if (taxableIncome1 <= 36000) { tax = taxableIncome1 * 0.03 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过36000至144000元,税率10%,速算扣除数2520 else if (taxableIncome1 > 36000 && taxableIncome1 <= 144000) { tax = taxableIncome1 * 0.1 - 2520 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过144000至300000元,税率20%,速算扣除数16920 else if (taxableIncome1 > 144000 && taxableIncome1 <= 300000) { tax = taxableIncome1 * 0.2 - 16920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过300000至420000元,税率25%,速算扣除数31920 else if (taxableIncome1 > 300000 && taxableIncome1 <= 420000) { tax = taxableIncome1 * 0.25 - 31920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过420000至660000元,税率30%,速算扣除数52920 else if (taxableIncome1 > 420000 && taxableIncome1 <= 660000) { tax = taxableIncome1 * 0.3 - 52920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过660000至960000元,税率35%,速算扣除数85920 else if (taxableIncome1 > 660000 && taxableIncome1 <= 960000) { tax = taxableIncome1 * 0.35 - 85920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } //超过960000元,税率45%,速算扣除数181920 else if (taxableIncome1 > 960000) { tax = taxableIncome1 * 0.45 - 181920 - InitialTax - TotalTaxInYear - deductTaxSum - cutTaxTemp; } if (tax < 0) { tax = 0.0; } amountX = model.Amount; amountY = model.Amount + tax; } } else if (model.PersonType.Equals("所外")) { //按照劳务进行算税 //1.查询已发放总金额 double amount = GetPayTaxAmount(model.CertificateID, model.TaxOrNot); // double amount = 0.0; double deductTaxSum = GetDeductTaxSum(model.CertificateID); // double deductTaxSum = 0.0; //2.根据已发放总金额,判断算税公式 double baseSalary = 800; double interval = model.Amount + amount; //3.计算Tax(税额),AmountX(税后),AmountY(税前) if (model.TaxOrNot.Equals("含税")) { if (interval <= 800) { tax = 0.0; } //超过800至4000元,税率20%,速算扣除数0 else if (interval > 800 && interval <= 4000) { tax = (interval - baseSalary) * 0.2 - deductTaxSum; } //超过4000至25000元,税率20%,速算扣除数0 else if (interval > 4000 && interval <= 25000) { tax = (interval - interval * 0.2) * 0.2 - deductTaxSum; } //超过25000至62500元,税率30%,速算扣除数2000 else if (interval > 25000 && interval <= 62500) { tax = (interval - interval * 0.2) * 0.3 - 2000 - deductTaxSum; } //超过62500元,税率40%,速算扣除数7000 else if (interval > 62500) { tax = (interval - interval * 0.2) * 0.4 - 7000 - deductTaxSum; } amountX = model.Amount - tax; amountY = model.Amount; } else if (model.TaxOrNot.Equals("不含税")) { if (interval <= 800) { tax = 0.0; } //超过800至4000元,税率20%,速算扣除数0 else if (interval > 800 && interval <= 3360) { tax = ((interval - baseSalary) / (1 - 0.2)) * 0.2 - deductTaxSum; } //超过4000至25000元,税率20%,速算扣除数0 else if (interval > 3360 && interval <= 21000) { tax = (interval * (1 - 0.2) * 0.2) / (1 - (1 - 0.2) * 0.2) - deductTaxSum; } //超过25000至62500元,税率30%,速算扣除数2000 else if (interval > 21000 && interval <= 49500) { tax = (interval * (1 - 0.2) * 0.3 - 2000) / (1 - (1 - 0.2) * 0.3) - deductTaxSum; } //超过62500元,税率40%,速算扣除数7000 else if (interval > 49500) { tax = (interval * (1 - 0.2) * 0.4 - 7000) / (1 - (1 - 0.2) * 0.4) - deductTaxSum; } amountX = model.Amount; amountY = model.Amount + tax; } } //5.存储该纪录 var entity = new TaxPerOrder { SerialNumber = model.SerialNumber, ProjectNumber = model.ProjectNumber, TaskName = model.TaskName, RefundType = model.RefundType, ProjectDirector = model.ProjectDirector, Name = model.Name, Agent = model.Agent, PersonType = model.PersonType, CertificateType = model.CertificateType, CertificateID = model.CertificateID, Amount = model.Amount, TaxOrNot = model.TaxOrNot, Tax = tax, Bank = model.Bank, Tele = model.Tele, BankDetailName = model.BankDetailName, ProvinceCity = model.ProvinceCity, CityField = model.CityField, AccountName = model.AccountName, AccountNumber = model.AccountNumber, PaymentType = model.PaymentType, AmountY = amountY, AmountX = amountX, UpdateDate = DateTime.Now }; _TaxPerOrderRepository.Insert(entity, isSave); return(new OperationResult(OperationResultType.Success, "新增数据成功!")); } catch (Exception ex) { return(new OperationResult(OperationResultType.Error, "新增数据失败:" + ex.Message)); } }