今年疫情復工後,財務小姐姐給咱們普及了2020年新個稅的算法。。html
聽完以後的感受就是:恩,原來是這麼回事!python
雖然是個小工薪階級,可是對於扣多少稅仍是很關心的。因而拿起筆算了算2月份的個稅,產生了另一個感受:頭疼,暈!算法
每月都要這麼算一算,估計要崩潰了。ide
因而,決定利用python語言,用一次腦子寫個小腳本算稅,之後只要填數據就好啦!ui
在寫腳本以前,得整明白腳本要處理哪些邏輯。spa
那麼,就得好好了解了解2020年新個稅方案。3d
按照財務小姐姐的普及,方案以下:excel
1)個稅起徵點調到5000;code
2)累積預扣法:orm
稅 = 計稅總額 * 扣除比例 - 累積已扣稅 - 速算扣除數
||
累積收入 - 累積扣除的(五險一金 + 5000 + 專項附加 + 其它)
累積收入:含獎金、年終獎等。
3)扣除比例的多少,由2)中的計稅總額來決定,具體以下表:
有點兒小複雜,舉2個例子來講明:
從以上新個稅的收法來看,咱們須要分爲5部分:
1)每月的收入 - 累加
2)每月的扣除 - 累加
3)扣除比例的計算
4)累積到本月爲止的扣稅總額
5)扣稅額 = (累加收 - 累加扣除)*扣除比例 - 累積扣稅 - 速算扣除數
以每個月收入1萬元爲例:
累積收入、累積已扣稅:
1 #*******************************累積收入+累積已扣稅*************************************** 2 def get_all_income_deducted_by_months(sh,m): 3 """ 4 sh: excel的表單對象 5 m: 月份。好比當前月份爲3月。那麼 m=3. 6 通常公司都是,當月發放上一個月的薪資。3月份 要計算髮放2月份工資時, 7 總收入 = 1月 + 2月的薪資 + 其它收入 。 8 總扣稅 = 1月已扣稅 9 """ 10 income = 0 # 總收入金額 11 tax_deducted = 0 # 已扣稅金額 12 for index in range(3,2+(m-1)+1): 13 salary = sh.cell(row=2,column=index).value 14 print("獲取第{}列 第{}個月 的薪資: {}".format(index, index-2,salary)) 15 income += salary # 收入累加 16 tax = sh.cell(row=3, column=index).value 17 print("獲取第{}列 第{}個月 的已扣稅: {}".format(index, index - 2, tax)) 18 tax_deducted += tax 19 20 # 加上其它收入 21 other_income = sh.cell(row=2,column=15).value 22 print("其它收入爲:{}".format(other_income)) 23 income += other_income 24 print("加上 {}月 爲止的總收入爲:{}".format(m,income)) 25 print("到目前爲止的總扣稅爲:{}".format(tax_deducted)) 26 return income,tax_deducted
累積的總扣除項:
1 #*******************************扣除項*************************************** 2 def get_total_deduction(sh,m): 3 """ 4 sh: excel的表單對象 5 m: 月份。好比當前月份爲3月。那麼 m=3. 6 3月份計算 包含2月在內的扣除項: 7 總扣除 = 公積金 * 2 + 社保 *2 + 專項扣除項 * 2 + 5000 * 2 8 """ 9 # 各項扣除金額(含公積金&社保&附加項) 10 provident_fund = sh.cell(row=5,column=3).value # 公積金 11 social_security = sh.cell(row=5,column=4).value # 社保 12 additional_item = sh.cell(row=5,column=5).value # 附加項 13 # 總扣除的金額 14 total_deduction = (provident_fund + social_security + additional_item + 5000)*(m-1) 15 print("總扣除金額爲:{}".format(total_deduction)) 16 return total_deduction
1 if __name__ == '__main__': 2 # 打開計稅excel表 3 wb = load_workbook("data.xlsx") 4 sh = wb["Sheet1"] 5 # 獲取當前月份 6 m = datetime.datetime.now().month 7 # 獲取總收入、獲取總的扣稅額 - 到目前爲止 8 income, tax_deducted= get_all_income_deducted_by_months(sh,m) 9 # 獲取總扣除項 10 total_deduction = get_total_deduction(sh,m) 11 # 計稅總額 = 總收入 - 總扣除項 12 cur_income = income - total_deduction 13 print("當前計稅金額 = {}(總收入) - {}(總扣除項):{}".format(income,total_deduction,cur_income)) 14 # 最終要扣稅 --- 計算公式 15 # 稅 = 計稅總額 * 扣除比例 - 累積已扣稅 - 速算扣除數 16 tax_money = 0 17 if 0<= cur_income <= 36000: 18 tax_money = cur_income * 0.03 - tax_deducted 19 elif 36000 < cur_income <= 144000: 20 tax_money = cur_income * 0.1 - tax_deducted - 2520 21 elif 144000 < cur_income <= 300000: 22 tax_money = cur_income * 0.2 - tax_deducted -16920 23 elif 300000 < cur_income <= 420000: 24 tax_money = cur_income * 0.25 - tax_deducted - 31920 25 elif 420000 < cur_income <= 660000: 26 tax_money = cur_income * 0.3 - tax_deducted - 52920 27 elif 660000 < cur_income <= 960000: 28 tax_money = cur_income * 0.35 - tax_deducted - 85920 29 elif 960000 < cur_income: 30 tax_money = cur_income * 0.45 - tax_deducted - 181920 31 32 print("{}月最終的扣稅人民幣爲:{}".format(m-1,tax_money)) 33 34 # 將扣稅額寫入對應的月份 35 sh.cell(row=3,column=m+1).value = tax_money 36 wb.save("data.xlsx")
如今是3月份,那麼若是收入是每個月10000,2月份的扣稅金額爲:
下一個月的時候,只要再運行一下這個腳本,就能夠獲得3月份的扣稅額哦!!
固然,你也能夠一口氣把這一年的都算完。
固然,有些小夥伴每個月的收入並非固定的,有些小夥伴還有一些額外的收入。
均可以在此基礎上根據我的狀況作調整哦!!
原文出處:https://www.cnblogs.com/Simple-Small/p/12426260.html