考经分享 考试指南 常见问题 考试报名 每日一练 CPA《审计》 CPA《会计》 CPA《经济法》 CPA《税法》 高频考点 《公司战略与风险管理》 《财务成本管理》 通知公告 考试大纲 CPA中心
?葡萄有限责任公司是一家销售机械设备的企业,以湖北区域为主要市场。本次主要针对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 ...
日期 <- 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-01-04 | 湖北省黄冈市 | 王五 | 自滚车床02 | 5 |
2019-01-04 | 湖北省黄冈市 | 刘一 | 吊机01 | 1 |
2019-01-05 | 湖北省宜昌市 | 孙二 | 吊机03 | 2 |
2019-01-06 | 湖北省仙桃市 | 王五 | 吊机03 | 2 |
2019-01-07 | 湖北省武汉市 | 孙二 | 吊机02 | 2 |
2019-01-07 | 湖北省宜昌市 | 朱八 | 吊机04 | 1 |
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")
日期 | 省市 | 姓名 | 商品 | 销售.台 | 单价 | sale |
---|---|---|---|---|---|---|
2019-01-04 | 湖北省黄冈市 | 王五 | 自滚车床02 | 5 | 88000 | 440000 |
2019-01-04 | 湖北省黄冈市 | 刘一 | 吊机01 | 1 | 77000 | 77000 |
2019-01-05 | 湖北省宜昌市 | 孙二 | 吊机03 | 2 | 120000 | 240000 |
2019-01-06 | 湖北省仙桃市 | 王五 | 吊机03 | 2 | 120000 | 240000 |
2019-01-07 | 湖北省武汉市 | 孙二 | 吊机02 | 2 | 97000 | 194000 |
2019-01-07 | 湖北省宜昌市 | 朱八 | 吊机04 | 1 | 150000 | 150000 |
#计算速算扣除数(向量的方法)
所得额级差 <- 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")
级数 | 应纳所得税额 | 税率 | 速算扣除数 |
---|---|---|---|
1 | 0 | 0.03 | 0 |
2 | 36000 | 0.10 | 2520 |
3 | 144000 | 0.20 | 16920 |
4 | 300000 | 0.25 | 31920 |
5 | 420000 | 0.30 | 52920 |
6 | 660000 | 0.35 | 85920 |
7 | 960000 | 0.45 | 181920 |
销售提成表 <- 销售提成表 %>%
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")
档次 | 完成率 | 加成比率 | 提成率 | 销售额级差.1 | 销售额级差.2 | 销售额级差.3 | 速算扣除数.1 | 速算扣除数.2 | 速算扣除数.3 |
---|---|---|---|---|---|---|---|---|---|
1 | 0.0 | 0.010 | 0.010 | 0 | 0 | 0 | 0 | 0 | 0 |
2 | 1.0 | 0.005 | 0.015 | 1500000 | 1200000 | 1000000 | 7500 | 6000 | 5000 |
3 | 1.1 | 0.008 | 0.023 | 150000 | 120000 | 100000 | 20700 | 16560 | 13800 |
4 | 1.3 | 0.010 | 0.033 | 300000 | 240000 | 200000 | 40200 | 32160 | 26800 |
5 | 1.6 | 0.012 | 0.045 | 450000 | 360000 | 300000 | 69000 | 55200 | 46000 |
扣除数层级 <- 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")
Month | 姓名 | subTotal | 等级 | 职务 | 任务数 | Performance | 扣除数档次 | 提成金额 |
---|---|---|---|---|---|---|---|---|
Apr | 刘一 | 264000 | 2 | 销售经理 | 1200000 | 0.2200000 | 1 | 2640 |
Apr | 孙二 | 1802000 | 2 | 销售经理 | 1200000 | 1.5016667 | 4 | 27306 |
Apr | 张三 | 1525000 | 3 | 销售人员 | 1000000 | 1.5250000 | 4 | 23525 |
Apr | 朱八 | 652000 | 1 | 高级销售经理 | 1500000 | 0.4346667 | 1 | 6520 |
Apr | 李四 | 696000 | 3 | 销售人员 | 1000000 | 0.6960000 | 1 | 6960 |
Apr | 王五 | 1644000 | 3 | 销售人员 | 1000000 | 1.6440000 | 5 | 27980 |
税率层级 <- 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")
Month | 姓名 | subTotal | 等级 | 职务 | 任务数 | Performance | 扣除数档次 | 提成金额 | 速算扣除数档次 | 应纳税额 |
---|---|---|---|---|---|---|---|---|---|---|
Apr | 刘一 | 264000 | 2 | 销售经理 | 1200000 | 0.2200000 | 1 | 2640 | 1 | 79.20 |
Apr | 孙二 | 1802000 | 2 | 销售经理 | 1200000 | 1.5016667 | 4 | 27306 | 1 | 819.18 |
Apr | 张三 | 1525000 | 3 | 销售人员 | 1000000 | 1.5250000 | 4 | 23525 | 1 | 705.75 |
Apr | 朱八 | 652000 | 1 | 高级销售经理 | 1500000 | 0.4346667 | 1 | 6520 | 1 | 195.60 |
Apr | 李四 | 696000 | 3 | 销售人员 | 1000000 | 0.6960000 | 1 | 6960 | 1 | 208.80 |
Apr | 王五 | 1644000 | 3 | 销售人员 | 1000000 | 1.6440000 | 5 | 27980 | 1 | 839.40 |
© 2019-2021 All rights reserved. 北京转创国际管理咨询有限公司 京ICP备19055770号-1
Beijing TransVenture International Management Consulting Co., Ltd.
地址:佛山市金融高新区京华广场
北京市大兴区新源大街25号院恒大未来城7号楼1102室
深圳市福田区华能大厦
深圳市南山区高新科技园南区R2-B栋4楼12室
梅州市丰顺县留隍镇新兴路881号
汕头市金平区华坞村七巷三楼
长沙市芙蓉区韶山北路139号文化大厦
欢迎来到本网站,请问有什么可以帮您?
稍后再说 现在咨询