Copyright | Kadzuya Okamoto 2017 |
---|---|
License | MIT |
Stability | experimental |
Portability | unknown |
Safe Haskell | None |
Language | Haskell2010 |
This module exports core functions and types for payroll books.
- data Person = Person {}
- data Payment = Payment {
- _賃金計算期間 :: (Year, Month)
- _労働日数 :: Int
- _労働時間数 :: Hours
- _休日労働時間数 :: Hours
- _早出残業時間数 :: Hours
- _深夜労働時間数 :: Hours
- _課税支給額 :: Amount
- _非課税支給額 :: CreditCategory -> DateTransactions
- _控除社会保険料 :: DebitCategory -> Amount -> DateTransactions
- _所得税額 :: DebitCategory -> Amount -> DateTransactions
- _その他控除 :: DebitCategory -> DateTransactions
- type Payments = [((Month, Date), Payment)]
- data Hours
- ppr :: Person -> Year -> IO ()
- toBookkeeping :: Person -> Year -> DebitCategory -> CreditCategory -> Transactions
- _年度内課税支給金額 :: Person -> Year -> Amount
- _年度内社会保険控除額 :: Person -> Year -> Amount
- _年度内所得税控除額 :: Person -> Year -> Amount
Usage examples
>>>
import Business.Bookkeeping hiding (ppr)
>>>
:{
let taroYamada :: Person taroYamada = Person { name = "山田 太郎" , sex = "男" , payments = \y -> case y of 2017 -> [ ( (1, 10) , Payment { _賃金計算期間 = (2016, 12) , _労働日数 = 13 , _労働時間数 = 13 * 5 , _休日労働時間数 = 0 , _早出残業時間数 = 0 , _深夜労働時間数 = 0 , _課税支給額 = 250000 , _控除社会保険料 = \debit amount -> do dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "健康保険料(社員負担分)" $ if (200000 < amount && amount < 300000) then 15000 else error "undefined 健康保険料" dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "厚生年金(社員負担分)" $ if (200000 < amount && amount < 300000) then 20000 else error "undefined 厚生年金" dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "雇用保険料(社員負担分)" $ if (200000 < amount && amount < 300000) then 1000 else error "undefined 雇用保険料" , _所得税額 = \debit amount -> dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "源泉所得税" $ if (200000 < amount && amount < 250000) then 5000 else error $ "undefined 所得税額 for " <> show amount , _非課税支給額 = \credit -> do dateTrans (DebitCategory $ Category "旅費・交通費" Expenses) credit "立替交通費" 3000 , _その他控除 = \debit -> dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "親睦会費" 5000 } ) , ( (2, 10) , Payment { _賃金計算期間 = (2017, 1) , _労働日数 = 12 , _労働時間数 = 12 * 5 , _休日労働時間数 = 0 , _早出残業時間数 = 0 , _深夜労働時間数 = 0 , _課税支給額 = 250000 , _控除社会保険料 = \debit amount -> do dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "健康保険料(社員負担分)" $ if (200000 < amount && amount < 300000) then 15000 else error "undefined 健康保険料" dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "厚生年金(社員負担分)" $ if (200000 < amount && amount < 300000) then 20000 else error "undefined 厚生年金" dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "雇用保険料(社員負担分)" $ if (200000 < amount && amount < 300000) then 1000 else error "undefined 雇用保険料" , _所得税額 = \debit amount -> dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "源泉所得税" $ if (200000 < amount && amount < 250000) then 5000 else error $ "undefined 所得税額2 for " <> show amount , _非課税支給額 = \credit -> do dateTrans (DebitCategory $ Category "旅費・交通費" Expenses) credit "立替交通費" 4000 , _その他控除 = \debit -> dateTrans debit (CreditCategory $ Category "預り金" Liabilities) "親睦会費" 5000 } ) ] _ -> [] } :}
Types
Main data type to represent payroll books for a person.
Payment | |
|
Pretty printers
ppr :: Person -> Year -> IO () Source #
A pretty printer for payroll books.
>>>
ppr taroYamada 2017
氏名: 山田 太郎 性別: 男 == 2017年支給分 == 支給日: 1月10日 賃金計算期間: 2016年12月 労働日数: 13日 労働時間数: 65時間 休日労働時間数: 0時間 早出残業時間数: 0時間 深夜労働時間数: 0時間 課税支給額: 250000円 控除社会保険料: 36000円 社会保険料等控除の金額: 214000円 所得税額: 5000円 非課税支給額: 3000円 その他控除: 5000円 --> 実支払額: 207000円 支給日: 2月10日 賃金計算期間: 2017年1月 労働日数: 12日 労働時間数: 60時間 休日労働時間数: 0時間 早出残業時間数: 0時間 深夜労働時間数: 0時間 課税支給額: 250000円 控除社会保険料: 36000円 社会保険料等控除の金額: 214000円 所得税額: 5000円 非課税支給額: 4000円 その他控除: 5000円 --> 実支払額: 208000円
Converters
toBookkeeping :: Person -> Year -> DebitCategory -> CreditCategory -> Transactions Source #
>>>
:{
Business.Bookkeeping.ppr $ toBookkeeping taroYamada 2017 (DebitCategory $ Category "給与手当" Expenses) (CreditCategory $ Category "普通預金" Liabilities) :} tDay: 2017-01-10 tDescription: 12月度 tSubDescription: 立替交通費 tDebit: 旅費・交通費 (Expenses) tCredit: 普通預金 (Liabilities) tAmount: 3000 tDay: 2017-01-10 tDescription: 12月度 tSubDescription: 健康保険料(社員負担分) tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 15000 tDay: 2017-01-10 tDescription: 12月度 tSubDescription: 厚生年金(社員負担分) tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 20000 tDay: 2017-01-10 tDescription: 12月度 tSubDescription: 雇用保険料(社員負担分) tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 1000 tDay: 2017-01-10 tDescription: 12月度 tSubDescription: 源泉所得税 tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 5000 tDay: 2017-01-10 tDescription: 12月度 tSubDescription: 親睦会費 tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 5000 tDay: 2017-01-10 tDescription: 12月度 tSubDescription: 給与支払い tDebit: 給与手当 (Expenses) tCredit: 普通預金 (Liabilities) tAmount: 207000 tDay: 2017-02-10 tDescription: 1月度 tSubDescription: 立替交通費 tDebit: 旅費・交通費 (Expenses) tCredit: 普通預金 (Liabilities) tAmount: 4000 tDay: 2017-02-10 tDescription: 1月度 tSubDescription: 健康保険料(社員負担分) tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 15000 tDay: 2017-02-10 tDescription: 1月度 tSubDescription: 厚生年金(社員負担分) tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 20000 tDay: 2017-02-10 tDescription: 1月度 tSubDescription: 雇用保険料(社員負担分) tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 1000 tDay: 2017-02-10 tDescription: 1月度 tSubDescription: 源泉所得税 tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 5000 tDay: 2017-02-10 tDescription: 1月度 tSubDescription: 親睦会費 tDebit: 給与手当 (Expenses) tCredit: 預り金 (Liabilities) tAmount: 5000 tDay: 2017-02-10 tDescription: 1月度 tSubDescription: 給与支払い tDebit: 給与手当 (Expenses) tCredit: 普通預金 (Liabilities) tAmount: 208000
Convenient functions for 年末調整
_年度内課税支給金額 :: Person -> Year -> Amount Source #
対象年度内の課税支給額総計
>>>
_年度内課税支給金額 taroYamada 2017
Amount {unAmount = 500000}