项目简介

这是一个给经济城做的项目,经济城是干什么的呢?它是一个政府管理、服务,催生企业成长的综合性实体机构。政府下来一个政策,通过经济城响应到各个企业。
这次的项目围绕着区政府鼓励企业创业,经济城积极响应招商,承诺凡是入驻经济城的企业,企业缴税达到一定额度,经济城按约定的比例进行返税。这里的税有四种:增值税,企业所得税,
个人所得税,印花税。
打个比方:A公司和经济城约定:2020年,A公司缴纳的增值税若大于10万,返税比例为10%;若大于20万,返税比例20%。一共可以设置5个额度image.png
2020年年底结算时:

  1. A公司在2020年若缴纳增值税15万,满足额度一不满足额度二,返增值税比例使用额度一的比例,经济城给A公司返10%,150000*10%=15000元。
  2. A公司在2020年若缴纳增值税30万,满足额度一满足额度二,返增值税比例使用额度二的比例,经济城给A公司返20%,300000*20%=60000元。
  3. A公司在2020年若缴纳增值税不足10万,经济城不返税。

故经济城迫切地需要一个能管理每一家企业返税的系统,我们的项目应运而生。

需求背景

为了让大家快速理解我们遇到的问题,我会讲一下我们的需求背景。系统里有一个【财务管理页面】,该页面统计每个季度返给企业多少钱,也就是按当初约定的比例的返税额。这个词叫做【奖励金】,奖励金由四个维度组成:
奖励金 = (增值税 - 增值税查补)+(企业所得税 - 企业所得税查补)+(个人所得税 - 个人所得税查补)+(印花税 - 印花税查补)

image.png
image.png
两个地方的值需要保持同步,很明显两个地方的数据计算方式不同,全年计算中的值会把负值计算在内,在表格里负值会当做0来处理。现在需要让表格里的奖励金以全年查看里的值为准,负值不能当做0来处理。
有同学应该会跟我有一样的疑问:怎么缴的税还能是负的,税务局还能给你发钱不成?我告诉大家确实有可能是负值,但是这种情况比较少。B企业在2020年一季度交了10000万元企业所得税,刚好碰上疫情,政府补贴企业的政策发布:所有企业在2020年第一季度只需要缴纳企业所得税的50%。于是政府会将B公司多缴的50%在2020年第二季度返还给B公司,B公司在第二季度的企业所得税就是-5000了。解释了负值产生的原因后问题来了:
如果B企业在2020年第一季度缴纳的10000元符合了经济城的返税条件比方说10%给企业返了1000元。到了第二季度这10000块还给企业了,B企业第一季度的1000块要不要还给经济城呢?之前的规定是负值通通按照0来处理,就是说第一季度的1000块你企业不用再还给我经济城啦。如今2021年疫情又卷土重来,导致经济城业务受到影响,之前那1000块你B企业得还给我经济城,也就是本文的需求:负值不能按照0结算。

寻找并解决问题

寻找表格中的数据源

后台用的是nodeJS写的,我需要定位问题,找到对应的逻辑并修改。我是从router顺藤摸瓜找到相应代码
表格里的数据是从/financeManage/show这个接口获取的。我们查看route文件夹下,查找他的路由文件,在financeManage.js找到了/financeManage/show这个接口
image.png

紧接着在controller文件夹下financeManage.js中show方法,查看他的返回值。
image.pngimage.png
看了一下关键代码发现它的返回值是从数据库里取出来的,说明我们要找到数据库里的值是什么时候在哪里怎么修改的
image.png

数据在哪里update

经测试,表格里的奖励金在比例设置完成后会发生变化,我们就从比例设置这个接口作为切入点,看看这个接口在调用完成期间做了什么。/ratio/addOrEdit
老规矩,先找路由,再去控制器层找addOrEdit方法。
image.png
找到重点代码如下:对一到四季度的税收信息使用了updateMsg方法
image.png
在服务层找到这个方法
image.png
这个方法里关键的代码就是这一行,把参数给了内部的getAllRewardradio方法
image.png
最关键的来了,整理一下思路
image.png
image.png

修改为
image.png
回到页面一看,表格里的数值已经和全年查看里的同步了!