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