ochintin-daicho 0.1.0.3 → 0.2.0.0
raw patch · 2 files changed
+33/−34 lines, 2 filesdep +mono-traversabledep +transactiondep ~bookkeeping
Dependencies added: mono-traversable, transaction
Dependency ranges changed: bookkeeping
Files
- ochintin-daicho.cabal +4/−2
- src/Business/OchintinDaicho.hs +29/−32
ochintin-daicho.cabal view
@@ -1,5 +1,5 @@ name: ochintin-daicho-version: 0.1.0.3+version: 0.2.0.0 synopsis: A module to manage payroll books for Japanese companies. description: A module to manage payroll books for Japanese companies. This enable to export data to tax withholding book, etc...@@ -18,8 +18,10 @@ hs-source-dirs: src exposed-modules: Business.OchintinDaicho build-depends: base >= 4.9 && < 5- , bookkeeping >= 0.3.3 && < 0.5+ , bookkeeping >= 0.4 && < 0.5+ , mono-traversable >= 1.0.0.1 && < 1.1 , text >= 1.2 && < 1.3+ , transaction >= 0.1.1 && < 0.2 default-language: Haskell2010 ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates default-extensions: OverloadedStrings
src/Business/OchintinDaicho.hs view
@@ -19,8 +19,10 @@ -- * Usage examples -- $setup + -- * Constructors+ datePayment -- * Types- Person(..)+ , Person(..) , Payment(..) , Payments , Hours@@ -46,26 +48,22 @@ , DateTransactions , DebitCategory(..) , Month-#if MIN_VERSION_bookkeeping(0,4,0) , Journal-#else- , Transaction-#endif , Transactions , Year , activity , dateTrans , month- , runTransactions , tAmount , year )-import Control.Monad (forM_) import Data.Monoid ((<>)) import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.IO as T+import Data.MonoTraversable (oforM_, osum) import Data.String (IsString(..))+import Data.Transaction (Transaction, action, tMap) {- $setup@@ -77,9 +75,9 @@ { name = "山田 太郎" , sex = "男" , payments = \y -> case y of- 2017 ->- [ ( (1, 10)- , Payment+ 2017 -> do+ datePayment 1 10 $+ Payment { _賃金計算期間 = (2016, 12) , _労働日数 = 13 , _労働時間数 = 13 * 5@@ -125,9 +123,8 @@ "親睦会費" 5000 }- )- , ( (2, 10)- , Payment+ datePayment 2 10 $+ Payment { _賃金計算期間 = (2017, 1) , _労働日数 = 12 , _労働時間数 = 12 * 5@@ -173,10 +170,8 @@ "親睦会費" 5000 }- )- ] _ ->- []+ pure () } :} -}@@ -188,7 +183,7 @@ -} _年度内課税支給金額 :: Person -> Year -> Amount _年度内課税支給金額 Person {..} =- sum . map (_課税支給額 . snd) . payments+ osum . tMap (_課税支給額 . snd) . payments {-| 対象年度内の社会保険料等控除額総計 @@ -197,7 +192,7 @@ -} _年度内社会保険控除額 :: Person -> Year -> Amount _年度内社会保険控除額 Person {..} =- sum . map (_算出保険料 . snd) . payments+ osum . tMap (_算出保険料 . snd) . payments {-| 対象年度内の所得税控除額総計 @@ -206,7 +201,7 @@ -} _年度内所得税控除額 :: Person -> Year -> Amount _年度内所得税控除額 Person {..} =- sum . map (_算出所得税 . snd) . payments+ osum . tMap (_算出所得税 . snd) . payments {-| A pretty printer for payroll books. @@ -258,7 +253,7 @@ , "年支給分 ==" ] T.putStrLn ""- forM_ (payments y) $ \((m, d), payment@(Payment {..})) -> do+ oforM_ (payments y) $ \((m, d), payment@(Payment {..})) -> do let (targetYear, targetMonth) = _賃金計算期間 _算出保険料' = _算出保険料 payment@@ -392,7 +387,7 @@ toBookkeeping :: Person -> Year -> DebitCategory -> CreditCategory -> Transactions toBookkeeping Person {..} y debit credit = year y $- forM_ (payments y) $ \((m, d), payment@(Payment {..})) -> do+ oforM_ (payments y) $ \((m, d), payment@(Payment {..})) -> do let (_, targetMonth) = _賃金計算期間 _算出保険料' = _算出保険料 payment@@ -408,6 +403,9 @@ _その他控除 debit dateTrans debit credit "給与支払い" _実支払額' +datePayment :: Month -> Date -> Payment -> Payments+datePayment m d p =+ action ((m, d), p) {- ============== - Types@@ -423,7 +421,7 @@ {-| A type for handling `Payment` values. -}-type Payments = [((Month, Date), Payment)]+type Payments = Transaction ((Month, Date), Payment) data Payment = Payment { _賃金計算期間 :: (Year, Month)@@ -459,23 +457,22 @@ dummyCredit = CreditCategory $ Category "DUMMY!" Liabilities _算出保険料 :: Payment -> Amount-_算出保険料 Payment {..} = sum . map tAmount . runDummyActivity $ _控除社会保険料 dummyDebit _課税支給額+_算出保険料 Payment {..} = sumAmounts $ _控除社会保険料 dummyDebit _課税支給額 _算出所得税 :: Payment -> Amount-_算出所得税 payment@(Payment {..}) = sum . map tAmount . runDummyActivity $ _所得税額 dummyDebit (_課税支給額 - _算出保険料 payment)+_算出所得税 payment@(Payment {..}) = sumAmounts $ _所得税額 dummyDebit (_課税支給額 - _算出保険料 payment) _非課税支給額総計 :: Payment -> Amount-_非課税支給額総計 Payment {..} = sum . map tAmount . runDummyActivity $ _非課税支給額 dummyCredit+_非課税支給額総計 Payment {..} = sumAmounts $ _非課税支給額 dummyCredit _その他控除総計 :: Payment -> Amount-_その他控除総計 Payment {..} = sum . map tAmount . runDummyActivity $ _その他控除 dummyDebit+_その他控除総計 Payment {..} = sumAmounts $ _その他控除 dummyDebit _実支払額 :: Payment -> Amount _実支払額 payment@(Payment {..}) = _課税支給額 - _算出保険料 payment - _算出所得税 payment - _その他控除総計 payment + _非課税支給額総計 payment -#if MIN_VERSION_bookkeeping(0,4,0)-runDummyActivity :: DateTransactions -> [Journal]-#else-runDummyActivity :: DateTransactions -> [Transaction]-#endif-runDummyActivity = runTransactions . year 1 . month 1 . activity 1 ""+runDummyActivity :: DateTransactions -> Transaction Journal+runDummyActivity = year 1 . month 1 . activity 1 ""++sumAmounts :: DateTransactions -> Amount+sumAmounts = osum . tMap tAmount . runDummyActivity