packages feed

bookkeeping-jp 0.1.0.1 → 0.1.1.0

raw patch · 2 files changed

+67/−1 lines, 2 filesdep +mono-traversabledep +textdep +timePVP ok

version bump matches the API change (PVP)

Dependencies added: mono-traversable, text, time

API changes (from Hackage documentation)

+ Business.Bookkeeping.JP.Csv: fromTransactions :: Transactions -> Text

Files

bookkeeping-jp.cabal view
@@ -1,5 +1,5 @@ name:                bookkeeping-jp-version:             0.1.0.1+version:             0.1.1.0 synopsis:            Helper functions for Japanese bookkeeping. description:     Helper functions of [bookkeeping module](https://github.com/arowM/haskell-bookkeeping#readme) for Japanese bookkeeping.@@ -17,10 +17,16 @@ library   hs-source-dirs:      src   exposed-modules:     Business.Bookkeeping.JP.SelfEmployed+                     , Business.Bookkeeping.JP.Csv   build-depends:       base >= 4.9 && < 4.10                      , bookkeeping >= 0.2 && < 0.3+                     , mono-traversable+                     , text+                     , time   default-language:    Haskell2010   default-extensions:  OverloadedStrings+                     , RecordWildCards+  other-extensions:    NoImplicitPrelude  test-suite bookkeeping-jp-test   type:                exitcode-stdio-1.0
+ src/Business/Bookkeeping/JP/Csv.hs view
@@ -0,0 +1,60 @@+{- |+Module      :  Business.Bookkeeping.JP.Csv++Copyright   :  Kadzuya Okamoto 2017+License     :  MIT++Stability   :  experimental+Portability :  unknown++This module exports functions to produce CSV-formatted texts for Japanese people.+-}+{-# LANGUAGE NoImplicitPrelude #-}++module Business.Bookkeeping.JP.Csv+  ( fromTransactions+  ) where++import Business.Bookkeeping+import Data.MonoTraversable.Unprefixed (intercalate)+import Data.Semigroup ((<>))+import Data.Sequences (pack, unlines)+import Data.Text (Text)+import Data.Time.Format (defaultTimeLocale, formatTime)+import Prelude hiding (unlines)++{-| Produce CSV-formatted texts from `Transactions` value.+-}+fromTransactions :: Transactions -> Text+fromTransactions =+  unlines . (transactionHeader:) . fmap transactionBody . zip [1..] . runTransactions++transactionBody :: (Int, Transaction) -> Text+transactionBody (n, Transaction {..}) =+  intercalate ","+    [ tshow n+    , tshow $ formatTime defaultTimeLocale "%Y/%m/%d" tDay+    , formatText . unCategoryName . cName . unDebitCategory $ tDebit+    , formatText . unCategoryName . cName . unCreditCategory $ tCredit+    , formatText . unDescription $ tDescription+    , formatText . unSubDescription $ tSubDescription+    , tshow $ unAmount tAmount+    ]++formatText :: Text -> Text+formatText = (<> "\"") . ("\"" <>)++transactionHeader :: Text+transactionHeader =+  intercalate ","+    [ formatText "取引No"+    , formatText "取引日"+    , formatText "借方勘定科目"+    , formatText "貸方勘定科目"+    , formatText "摘要"+    , formatText "細目"+    , formatText "貸借金額"+    ]++tshow :: Show a => a -> Text+tshow = pack . show