-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.lisp
122 lines (87 loc) · 4.65 KB
/
main.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
;; namespace 근로소득-2022
(defun get-비과세소득 (plist)
(+ (getf plist :식비)
(getf plist :자기차량운전보조금)
(getf plist :연구보조금)
(getf plist :육아수당)))
(defun get-근로소득공제 (총급여액)
(min
(truncate
(cond ((<= 총급여액 5000000) (* 총급여액 0.7))
((<= 총급여액 15000000) (+ 3500000 (* (- 총급여액 5000000) 0.4)))
((<= 총급여액 45000000) (+ 7500000 (* (- 총급여액 15000000) 0.15)))
((<= 총급여액 100000000) (+ 12000000 (* (- 총급여액 45000000) 0.05)))
(t (+ 14750000 (* (- 총급여액 100000000) 0.02)))))
20000000))
(defun get-인적공제 (plist)
(* (getf plist :부양가족수) 1500000))
(defun get-연금보험료공제 (plist)
0)
(defun get-특별소득공제 (plist)
0)
(defun get-기타-소득공제 (plist)
(+ (getf plist :개인연금저축)
(getf plist :소상공인공제부금)
(getf plist :우리사주조합출연금)
(getf plist :중소기업창투조합출자)
(getf plist :엔젤투자)
(getf plist :고용유지중소기업)
(getf plist :장기집합투자증권저축)))
;;
(defun get-총급여액 (연간근로소득 비과세소득)
(- 연간근로소득 비과세소득))
(defun get-근로소득금액 (총급여액 근로소득공제)
(- 총급여액 근로소득공제))
(defun get-차감소득금액 (근로소득금액 인적공제 연금보험료공제 특별소득공제)
(- 근로소득금액 인적공제 연금보험료공제 특별소득공제))
(defun get-과세표준 (차감소득금액 그-밖의-소득공제 소득공제-종합한도초과액)
(+ (- 차감소득금액 그-밖의-소득공제) 소득공제-종합한도초과액))
(defun get-산출세액 (과세표준)
(truncate
(cond ((<= 과세표준 12000000) (* 과세표준 0.06))
((<= 과세표준 46000000) (+ 720000 (* (- 과세표준 12000000) 0.15)))
((<= 과세표준 88000000) (+ 5820000 (* (- 과세표준 46000000) 0.24)))
((<= 과세표준 150000000) (+ 15900000 (* (- 과세표준 88000000) 0.35)))
((<= 과세표준 300000000) (+ 37600000 (* (- 과세표준 150000000) 0.38)))
((<= 과세표준 500000000) (+ 94600000 (* (- 과세표준 300000000) 0.40)))
((<= 과세표준 100000000) (+ 174600000 (* (- 과세표준 500000000) 0.42)))
(t (+ 38460 (* (- 과세표준 100000000) 0.45))))))
(defun get-결정세액 (산출세액 세액감면 세액공제)
(- 산출세액 세액감면 세액공제))
(defun get-차감납부-환급세액 (결정세액 기납부세액 납부특례세액)
(- 결정세액 기납부세액 납부특례세액))
(defun calc-labor-tax (data)
(let* ((연간근로소득 (getf data :연간근로소득))
(세액감면 0)
(세액공제 0)
(소득공제-종합한도초과액 0)
(비과세소득 (get-비과세소득 (getf data :비과세소득)))
(총급여액 (get-총급여액 연간근로소득 비과세소득))
(근로소득공제 (get-근로소득공제 총급여액))
(근로소득금액 (get-근로소득금액 총급여액 근로소득공제))
(인적공제 (get-인적공제 (getf data :인적공제)))
(연금보험료공제 (get-연금보험료공제 (getf data :연금보험료공제)))
(특별소득공제 (get-특별소득공제 (getf data :특별소득공제)))
(차감소득금액 (get-차감소득금액 근로소득금액 인적공제 연금보험료공제 특별소득공제))
(기타-소득공제 (get-기타-소득공제 (getf data :기타소득공제)))
(과세표준 (max (truncate (* 연간근로소득 0.5))
(get-과세표준 차감소득금액 기타-소득공제 소득공제-종합한도초과액)))
(산출세액 (get-산출세액 과세표준))
(결정세액 (get-결정세액 산출세액 세액감면 세액공제)))
결정세액))
(defun create-default-data ()
'(:연간근로소득 0
:비과세소득 (:식비 0
:자기차량운전보조금 0
:연구보조금 0
:육아수당 0)
:인적공제 (:부양가족수 1)
:연금보험료공제 ()
:특별소득공제 ()
:기타소득공제 (:개인연금저축 0
:소상공인공제부금 0
:우리사주조합출연금 0
:중소기업창투조합출자 0
:엔젤투자 0
:고용유지중소기업 0
:장기집합투자증권저축 0)))