管理培训搜索
18318889481

财会
| 中国注册会计师

考经分享 考试指南 常见问题 考试报名 每日一练 CPA《审计》 CPA《会计》 CPA《经济法》 CPA《税法》 高频考点 《公司战略与风险管理》 《财务成本管理》 通知公告 考试大纲 CPA中心

| AIA
| 会计实务

成本会计 核算会计 会计准则 会计报表 会计培训 会计分录 专家问答 会计基础 中小企业 票据管理 会计入门与出纳实操 会计实务 出纳人员 现金

| 财务经理人

管理会计师 管理会计 成本管理 政府会计 《公共会计师》 研发会计 财会智能 酒店财务 《财务与会计》 财务管理 高效财务报表阅读 高新企业账务处理 专业问答 国际会计

| 初级会计师

考试报名 考经分享 常见问题 考试指南 每日一练 初级会计实务 经济法基础 考试大纲 直播动态 会计实务 成绩查询

| 税务实务

考试指南 常见问题 考试动态 考经分享 个人所得税 企业所得税 企业税务筹划 税务稽查风险防范与应对 税务申报 税收政策 汇算清缴 税收实务 税收监管 财税技巧 税务管理师 企业所得税汇算清缴 土地增值税清缴 研发费用加计扣除 税务筹划1

| 中级会计师

报名考试 考经分享 常见问题 考试指南 中级会计实务 每日一练 考试大纲 财务管理 试题中心 经济法 直播动态 专业问答 宣传册

| 中国会计智库

《税法一》 《税法二》 中国注会 精准财务报表分析

| CFO成长营

审计实务 企业股权设计 智能审计师 税务风控师 审计项目经理速成特训营 管理实务

| 会计学苑

ICPA IPA 会计学苑 管理会计师 薪税师资讯 大数据与会计

| R语言:销售业绩与个人所得税计算当前您所在的位置:首页 > 财会 > 财务经理人 > 财会智能

一、业务背景

?葡萄有限责任公司是一家销售机械设备的企业,以湖北区域为主要市场。本次主要针对8位销售人员2019年的销售情况进行销售业绩的与个人所得税的计算。

二、员工等级表、业绩任务表、商品价格表、销售提成表、个人所得税税率表

职位等级表 <- data.frame(等级 = c(1,2,3),
                     职务 = c("高级销售经理", "销售经理", "销售人员"))

员工等级表 <- data.frame(姓名 = c("刘一", "孙二", "张三", "李四", "王五", "赵六", "邓七", "朱八"),
                     等级 = c(2, 2, 3, 3, 3, 3, 3, 1),
                     stringsAsFactors = FALSE)
str(员工等级表)
## 'data.frame':    8 obs. of  2 variables:
##  $ 姓名: chr  "刘一" "孙二" "张三" "李四" ...
##  $ 等级: num  2 2 3 3 3 3 3 1
业绩任务表 <- data.frame(等级 = c(1,2,3),
                     任务数 = c(1500000L, 1200000L, 1000000L),
                     stringsAsFactors = FALSE)

商品价格表 <- data.frame(商品 = c("车床01", "车床02", "吊机01", "吊机02", "吊机03", "吊机04", "进升车床01", "自滚车床01", "自滚车床02"),
                     单价 = c(48000, 53000, 77000, 97000, 120000, 150000, 23000, 46000, 88000),
                     stringsAsFactors = FALSE)
str(商品价格表)
## 'data.frame':    9 obs. of  2 variables:
##  $ 商品: chr  "车床01" "车床02" "吊机01" "吊机02" ...
##  $ 单价: num  48000 53000 77000 97000 120000 150000 23000 46000 88000
销售提成表 <- data.frame(档次 = c(1, 2, 3, 4, 5),
                     完成率 = c(0, 100, 110, 130, 160)*0.01,
                     加成比率 = c(1, 0.5, 0.8, 1, 1.2)*0.01,
                     stringsAsFactors = FALSE)
str(销售提成表)
## 'data.frame':    5 obs. of  3 variables:
##  $ 档次    : num  1 2 3 4 5
##  $ 完成率  : num  0 1 1.1 1.3 1.6
##  $ 加成比率: num  0.01 0.005 0.008 0.01 0.012
个人所得税税率表 <- data.frame(级数 = c(1:7),
                        应纳所得税额 = c(0, 36000, 144000, 300000, 420000, 660000, 960000),
                        税率 = c(3,10,20,25,30,35,45)*0.01,
                        速算扣除数 = c(0,2520,16920,31920,52920,85920,181920),
                        stringsAsFactors = FALSE
                        )
str(个人所得税税率表)
## 'data.frame':    7 obs. of  4 variables:
##  $ 级数        : int  1 2 3 4 5 6 7
##  $ 应纳所得税额: num  0 36000 144000 300000 420000 660000 960000
##  $ 税率        : num  0.03 0.1 0.2 0.25 0.3 0.35 0.45
##  $ 速算扣除数  : num  0 2520 16920 31920 52920 ...

三、随机生成500条日销售明细

日期 <- seq.Date(from = as.Date("20190101", format = "%Y%m%d"),
              by = "day",
              length.out = 365) %>%
 sample(500, replace = TRUE) %>%
 sort()
str(日期)
##  Date[1:500], format: "2019-01-04" "2019-01-04" "2019-01-05" "2019-01-06" "2019-01-07" ...
省市 <- c("湖北省武汉市", "湖北省潜江市", "湖北省天门市", "湖北省仙桃市", "湖北省十堰市", "湖北省恩施市", "湖北省黄冈市", "湖北省襄樊市", "湖北省黄冈市", "湖北省宜昌市") %>%
 sample(500, replace = TRUE)
str(省市)
##  chr [1:500] "湖北省黄冈市" "湖北省黄冈市" "湖北省宜昌市" ...
销售明细表 <- data.frame(日期,
                     省市,
                     姓名 = sample(员工等级表$姓名, 500, replace = TRUE),
                     商品 = sample(商品价格表$商品, 500, replace = TRUE),
                     销售.台 = sample(c(1:5), 500, replace = TRUE),
                     stringsAsFactors = FALSE)
str(销售明细表)
## 'data.frame':    500 obs. of  5 variables:
##  $ 日期   : Date, format: "2019-01-04" "2019-01-04" ...
##  $ 省市   : chr  "湖北省黄冈市" "湖北省黄冈市" "湖北省宜昌市" "湖北省仙桃市" ...
##  $ 姓名   : chr  "王五" "刘一" "孙二" "王五" ...
##  $ 商品   : chr  "自滚车床02" "吊机01" "吊机03" "吊机03" ...
##  $ 销售.台: int  5 1 2 2 2 1 4 3 4 2 ...
knitr::kable(head(销售明细表), align = "c", caption = "?葡萄公司2019年销售明细表")
?葡萄公司2019年销售明细表
日期省市姓名商品销售.台
2019-01-04湖北省黄冈市王五自滚车床025
2019-01-04湖北省黄冈市刘一吊机011
2019-01-05湖北省宜昌市孙二吊机032
2019-01-06湖北省仙桃市王五吊机032
2019-01-07湖北省武汉市孙二吊机022
2019-01-07湖北省宜昌市朱八吊机041

四、计算销售金额明细

salesVolume <- 销售明细表 %>%
 left_join(商品价格表, by = "商品") %>%
 mutate(sale = 销售.台*单价)#添加新变量
str(salesVolume)
## 'data.frame':    500 obs. of  7 variables:
##  $ 日期   : Date, format: "2019-01-04" "2019-01-04" ...
##  $ 省市   : chr  "湖北省黄冈市" "湖北省黄冈市" "湖北省宜昌市" "湖北省仙桃市" ...
##  $ 姓名   : chr  "王五" "刘一" "孙二" "王五" ...
##  $ 商品   : chr  "自滚车床02" "吊机01" "吊机03" "吊机03" ...
##  $ 销售.台: int  5 1 2 2 2 1 4 3 4 2 ...
##  $ 单价   : num  88000 77000 120000 120000 97000 150000 53000 120000 46000 88000 ...
##  $ sale   : num  440000 77000 240000 240000 194000 150000 212000 360000 184000 176000 ...
knitr::kable(head(salesVolume), align = "c", caption = "?GrapeS Co., Ltd. 2019 Sales Details")
?GrapeS Co., Ltd. 2019 Sales Details
日期省市姓名商品销售.台单价sale
2019-01-04湖北省黄冈市王五自滚车床02588000440000
2019-01-04湖北省黄冈市刘一吊机0117700077000
2019-01-05湖北省宜昌市孙二吊机032120000240000
2019-01-06湖北省仙桃市王五吊机032120000240000
2019-01-07湖北省武汉市孙二吊机02297000194000
2019-01-07湖北省宜昌市朱八吊机041150000150000

五、计算个人所得税速算扣除数

#计算速算扣除数(向量的方法)
所得额级差 <- c()#不同级数所得额之间的差额
for (i in 1:(length(个人所得税税率表$级数)-1)) {
 所得额级差[i] <- 个人所得税税率表$应纳所得税额[i+1] - 个人所得税税率表$应纳所得税额[i]
}
速算扣除数级差 <- c()
for (i in 1:(length(个人所得税税率表$税率)-1)) {
 速算扣除数级差[i] <- sum((个人所得税税率表$税率[i+1]-个人所得税税率表$税率[1:i])*所得额级差[1:i])
}
速算扣除数 <- append(速算扣除数级差,0,0)
Month <- salesVolume %>%
 select(Month = 日期) %>%
 format(format="%b")
salesTotal <- salesVolume %>%
 data.frame(Month, stringsAsFactors = FALSE) %>%
 group_by(Month, 姓名) %>%
 summarise(subTotal = sum(sale)) %>%
 left_join(员工等级表, by="姓名") %>%
 left_join(职位等级表, by="等级") %>%
 left_join(业绩任务表, by="等级") %>%
 mutate(Performance = (subTotal/任务数))
knitr::kable(个人所得税税率表,  align = "c", caption = "?GrapeS Co., Ltd. 2019 Table of income tax rates")
?GrapeS Co., Ltd. 2019 Table of income tax rates
级数应纳所得税额税率速算扣除数
100.030
2360000.102520
31440000.2016920
43000000.2531920
54200000.3052920
66600000.3585920
79600000.45181920

六、用计算所得税速算扣除数的方法计算提成扣除数

销售提成表 <- 销售提成表 %>%
 mutate(提成率 = cumsum(加成比率))
#计算速算扣除数(向量的方法)
销售额级差 <- c()#不同级数所得额之间的差额
for (i in 1:(length(销售提成表$档次)-1)) {
 销售额级差[i] <- (销售提成表$完成率[i+1] - 销售提成表$完成率[i])
}
销售额级差1 = 销售额级差*业绩任务表$任务数[1]
销售额级差2 = 销售额级差*业绩任务表$任务数[2]
销售额级差3 = 销售额级差*业绩任务表$任务数[3]
销售提成表 <- mutate(销售提成表,
                    销售额级差.1 = append(销售额级差1, 0, 0),
                    销售额级差.2 = append(销售额级差2, 0, 0),
                    销售额级差.3 = append(销售额级差3, 0, 0))

销售速算扣除数级差1 <- c()
for (i in 1:(length(销售提成表$档次)-1)) {
 销售速算扣除数级差1[i] <- sum((销售提成表$提成率[i+1]-销售提成表$提成率[1:i])*销售额级差1[1:i])
}
速算扣除数1 <- append(销售速算扣除数级差1,0,0)

销售速算扣除数级差2 <- c()
for (i in 1:(length(销售提成表$档次)-1)) {
 销售速算扣除数级差2[i] <- sum((销售提成表$提成率[i+1]-销售提成表$提成率[1:i])*销售额级差2[1:i])
}
速算扣除数2 <- append(销售速算扣除数级差2,0,0)

销售速算扣除数级差3 <- c()
for (i in 1:(length(销售提成表$档次)-1)) {
 销售速算扣除数级差3[i] <- sum((销售提成表$提成率[i+1]-销售提成表$提成率[1:i])*销售额级差3[1:i])
}
速算扣除数3 <- append(销售速算扣除数级差3,0,0)
销售提成表 <- mutate(销售提成表,
                    速算扣除数.1 = 速算扣除数1,
                    速算扣除数.2 = 速算扣除数2,
                    速算扣除数.3 = 速算扣除数3)
knitr::kable(销售提成表, align = "c", caption = "?GrapeS Co., Ltd. 2019 Sales commission table")
?GrapeS Co., Ltd. 2019 Sales commission table
档次完成率加成比率提成率销售额级差.1销售额级差.2销售额级差.3速算扣除数.1速算扣除数.2速算扣除数.3
10.00.0100.010000000
21.00.0050.015150000012000001000000750060005000
31.10.0080.023150000120000100000207001656013800
41.30.0100.033300000240000200000402003216026800
51.60.0120.045450000360000300000690005520046000

七、计算销售提成额

扣除数层级 <- c()
for (i in 1:length(salesTotal$Performance)) {
 扣除数层级[i] <- 销售提成表$完成率[max(which(salesTotal$Performance[[i]]>销售提成表$完成率))]
}
扣除数档次 <- c()
for (i in 1:length(salesTotal$Performance)) {
 扣除数档次[i] <- which(销售提成表$完成率 == 扣除数层级[i])
}
salesTotal1 <- data.frame(salesTotal)
salesTotal1 <- mutate(salesTotal1, 扣除数档次)
适用提成率 <- c()
for (i in 1:length(salesTotal$Performance)) {
 适用提成率[i] <- 销售提成表$提成率[salesTotal1$扣除数档次[i]]
}

适用扣除数 <- c()
for (i in 1:length(salesTotal$Performance)) {
 if (salesTotal1$等级[i]==1) {
   适用扣除数[i] <- 销售提成表$速算扣除数.1[salesTotal1$扣除数档次[i]]
 }else{
   if (salesTotal1$等级[i]==2) {
   适用扣除数[i] <- 销售提成表$速算扣除数.2[salesTotal1$扣除数档次[i]]
   }else{
   if (salesTotal1$等级[i]==3) {
   适用扣除数[i] <- 销售提成表$速算扣除数.3[salesTotal1$扣除数档次[i]]
   }
 }
 }
}
提成金额 <- salesTotal1$subTotal*适用提成率-适用扣除数
salesTotal2 <- mutate(salesTotal1, 提成金额)
knitr::kable(head(salesTotal2), align = "c", caption = "?GrapeS Co., Ltd. 2019 Sales commission table 1")
?GrapeS Co., Ltd. 2019 Sales commission table 1
Month姓名subTotal等级职务任务数Performance扣除数档次提成金额
Apr刘一2640002销售经理12000000.220000012640
Apr孙二18020002销售经理12000001.5016667427306
Apr张三15250003销售人员10000001.5250000423525
Apr朱八6520001高级销售经理15000000.434666716520
Apr李四6960003销售人员10000000.696000016960
Apr王五16440003销售人员10000001.6440000527980

八、计算个人所得税额

税率层级 <- c()
for (i in 1:length(salesTotal2$Performance)) {
 税率层级[i] <- 个人所得税税率表$应纳所得税额[max(which(salesTotal2$提成金额[i]>个人所得税税率表$应纳所得税额))]
}
速算扣除数档次 <- c()
for (i in 1:length(salesTotal2$Performance)) {
 速算扣除数档次[i] <- which(个人所得税税率表$应纳所得税额 == 税率层级[i])
}
salesTotal3 <- data.frame(salesTotal2)
salesTotal3 <- mutate(salesTotal3, 速算扣除数档次)
适用税率 <- c()
for (i in 1:length(salesTotal3$Performance)) {
 适用税率[i] <- 个人所得税税率表$税率[salesTotal3$速算扣除数档次[i]]
}
个税适用扣除数 <- c()
for (i in 1:length(salesTotal3$Performance)) {
 个税适用扣除数[i] <- 个人所得税税率表$速算扣除数[salesTotal3$速算扣除数档次[i]]
}
应纳税额 <- salesTotal3$提成金额*适用税率-个税适用扣除数
salesTotal4 <- mutate(salesTotal3, 应纳税额)
knitr::kable(head(salesTotal4), align = "c", caption = "?GrapeS Co., Ltd. 2019 Personal income tax payable")
?GrapeS Co., Ltd. 2019 Personal income tax payable
Month姓名subTotal等级职务任务数Performance扣除数档次提成金额速算扣除数档次应纳税额
Apr刘一2640002销售经理12000000.220000012640179.20
Apr孙二18020002销售经理12000001.50166674273061819.18
Apr张三15250003销售人员10000001.52500004235251705.75
Apr朱八6520001高级销售经理15000000.4346667165201195.60
Apr李四6960003销售人员10000000.6960000169601208.80
Apr王五16440003销售人员10000001.64400005279801839.40


课程
财会类
税务类
金融类
经管类
认证类
学历类
建工类
健康类
专家
政府专家
财税名家
高校教授
文化传媒
金融科技
金融电子化
企业管理
财政金融
生物医药
诺贝尔奖得主
合规法律
科学技术
银行智库
财会
中国注册会计师
AIA
会计实务
财务经理人
初级会计师
税务实务
中级会计师
中国会计智库
CFO成长营
会计学苑
建工
二级造价工程师
建筑工程资讯
二级建造师
一级造价工程师
监理工程师
消防设施操作员
产教融合
建工学苑
一级建造师
安全工程师
消防工程师
造价工程事务所
BIM工程师
经管
转创人力
中级经济师
二级人力资源管理师
三级人力资源师
人力资源管理师
碳排放管理师
期刊中心
教材参考
军队文职人员
产教融合
劳动关系协调员
初、中级经济考试
企业合规师
初级经济师
企业人力资源管理师
职业指导师
教育
英语学习考试
专升本
成人高等教育
自考中国
自学考试研究所
普通专升本
小自考中心
高等继续教育学院
中外教育
智库与社会服务
高等职业本科
金融
证券从业
基金从业
金融智库
银行从业
转创博学
ICCM
项目
高管培训
国际学历
财经证书
专项课程
企业内训
教育技术产品
高校学科建设服务
教学资源开发
国际合作服务
产业服务
国内院校
海外院校
海外留学
合作院校
观点
政治经济
IT&财务融合
高校教授
文化传媒
金融科技
金融电子化
企业管理
财政金融
生物医药
诺贝尔奖
合规法律
科学技术
银行智库
商业产经
医卫
医卫健康
主管药师
保育员
药卫学苑
心理咨询师
家庭照护员
养老护理员
健康管理师
公共营养师
执业药师
育婴师(员)
主管护师
护士执业
医院招聘
IT
网络安全管理师
系统集成项目管理工程师
金融科技师
网络工程师
计算机学苑
计算机应用水平考试
电子商务平台
计算机技术与软件专业技术资格(水平)考试
信息系统项目管理师
信息系统监理师
信息处理技术员
考研
考研资讯
信息中心
专业硕士
考研公共课
同等学力申硕中心
复试调剂
研究生工作
考研中国
硕士入学考试
考研直播动态
教师
高中教师
考试动态
直播动态
考试报名
教育智库
幼儿教师
小学教师
初中教师
教师中国
教师招聘
中小学教师资格考试
普通话测试
教师企业
校长领导力
社工
社会工作者
技能中国
智库与社会服务
初级社会工作者
中级社会工作者
报考动态
社会工作事务所
职称评审
家庭教育指导师
转创网校APP
18318889481
在线QQ
在线留言
返回首页
返回顶部
留言板
发送