-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A module for bookkeeping by double entry.
--   
--   A module for bookkeeping by double entry. This module provides a way
--   to do bookkeeping programmatically.
@package bookkeeping
@version 0.2.1.4


-- | This module exports core functions and types for bookkeeping.
module Business.Bookkeeping

-- | A pretty printer for <a>Transactions</a>.
--   
--   <pre>
--   &gt;&gt;&gt; ppr sample
--   tDay: 2015-01-01
--   tDescription: Constant expenses
--   tSubDescription: Mobile phone
--   tDebit: Communication (Expenses)
--   tCredit: Deposit (Assets)
--   tAmount: 3000
--   
--   tDay: 2015-01-03
--   tDescription: Mail a contract
--   tSubDescription: Stamp
--   tDebit: Communication (Expenses)
--   tCredit: Deposit (Assets)
--   tAmount: 50
--   
--   tDay: 2015-01-03
--   tDescription: Mail a contract
--   tSubDescription: Envelope
--   tDebit: Office supplies (Expenses)
--   tCredit: Deposit (Assets)
--   tAmount: 100
--   
--   tDay: 2015-02-01
--   tDescription: Constant expenses
--   tSubDescription: Mobile phone
--   tDebit: Communication (Expenses)
--   tCredit: Deposit (Assets)
--   tAmount: 3000
--   </pre>
ppr :: Transactions -> IO ()

-- | Convert from <a>YearTransactions</a> to <a>Transactions</a>.
year :: Year -> YearTransactions -> Transactions

-- | Convert from <a>MonthTransactions</a> to <a>YearTransactions</a>.
month :: Month -> MonthTransactions -> YearTransactions

-- | Convert from <a>DateTransactions</a> to <a>MonthTransactions</a>.
activity :: Date -> Description -> DateTransactions -> MonthTransactions
dateTrans :: DebitCategory -> CreditCategory -> SubDescription -> Amount -> DateTransactions

-- | Take list of <a>Transaction</a> out from <a>Transactions</a>.
runTransactions :: Transactions -> [Transaction]

-- | A type for handling <a>Transaction</a> values.
type Transactions = Trans Transaction
type YearTransactions = Trans (Year -> Transaction)
type MonthTransactions = Trans (Month -> Year -> Transaction)
type DateTransactions = Trans (Date -> Description -> Month -> Year -> Transaction)

-- | A type representing a transaction.
data Transaction
Transaction :: Day -> Description -> SubDescription -> DebitCategory -> CreditCategory -> Amount -> Transaction
[tDay] :: Transaction -> Day
[tDescription] :: Transaction -> Description
[tSubDescription] :: Transaction -> SubDescription
[tDebit] :: Transaction -> DebitCategory
[tCredit] :: Transaction -> CreditCategory
[tAmount] :: Transaction -> Amount
newtype Year
Year :: Integer -> Year
[unYear] :: Year -> Integer
newtype Month
Month :: Int -> Month
[unMonth] :: Month -> Int
newtype Date
Date :: Int -> Date
[unDate] :: Date -> Int
newtype Description
Description :: Text -> Description
[unDescription] :: Description -> Text
newtype SubDescription
SubDescription :: Text -> SubDescription
[unSubDescription] :: SubDescription -> Text
newtype Amount
Amount :: Int -> Amount
[unAmount] :: Amount -> Int

-- | A type representing an accounts title.
data Category
Category :: CategoryName -> CategoryType -> Category
[cName] :: Category -> CategoryName
[cType] :: Category -> CategoryType
newtype CategoryName
CategoryName :: Text -> CategoryName
[unCategoryName] :: CategoryName -> Text
data CategoryType
Assets :: CategoryType
Liabilities :: CategoryType
Stock :: CategoryType
Revenue :: CategoryType
Expenses :: CategoryType
newtype DebitCategory
DebitCategory :: Category -> DebitCategory
[unDebitCategory] :: DebitCategory -> Category
newtype CreditCategory
CreditCategory :: Category -> CreditCategory
[unCreditCategory] :: CreditCategory -> Category
instance GHC.Classes.Eq Business.Bookkeeping.Transaction
instance GHC.Classes.Ord Business.Bookkeeping.Transaction
instance GHC.Read.Read Business.Bookkeeping.Transaction
instance GHC.Show.Show Business.Bookkeeping.Transaction
instance GHC.Classes.Eq Business.Bookkeeping.DebitCategory
instance GHC.Classes.Ord Business.Bookkeeping.DebitCategory
instance GHC.Read.Read Business.Bookkeeping.DebitCategory
instance GHC.Show.Show Business.Bookkeeping.DebitCategory
instance GHC.Classes.Eq Business.Bookkeeping.CreditCategory
instance GHC.Classes.Ord Business.Bookkeeping.CreditCategory
instance GHC.Read.Read Business.Bookkeeping.CreditCategory
instance GHC.Show.Show Business.Bookkeeping.CreditCategory
instance GHC.Classes.Eq Business.Bookkeeping.Category
instance GHC.Classes.Ord Business.Bookkeeping.Category
instance GHC.Read.Read Business.Bookkeeping.Category
instance GHC.Show.Show Business.Bookkeeping.Category
instance GHC.Enum.Enum Business.Bookkeeping.CategoryType
instance GHC.Classes.Eq Business.Bookkeeping.CategoryType
instance GHC.Classes.Ord Business.Bookkeeping.CategoryType
instance GHC.Read.Read Business.Bookkeeping.CategoryType
instance GHC.Show.Show Business.Bookkeeping.CategoryType
instance GHC.Classes.Eq Business.Bookkeeping.CategoryName
instance GHC.Classes.Ord Business.Bookkeeping.CategoryName
instance GHC.Read.Read Business.Bookkeeping.CategoryName
instance GHC.Show.Show Business.Bookkeeping.CategoryName
instance GHC.Num.Num Business.Bookkeeping.Amount
instance GHC.Classes.Eq Business.Bookkeeping.Amount
instance GHC.Classes.Ord Business.Bookkeeping.Amount
instance GHC.Read.Read Business.Bookkeeping.Amount
instance GHC.Show.Show Business.Bookkeeping.Amount
instance GHC.Classes.Eq Business.Bookkeeping.SubDescription
instance GHC.Classes.Ord Business.Bookkeeping.SubDescription
instance GHC.Read.Read Business.Bookkeeping.SubDescription
instance GHC.Show.Show Business.Bookkeeping.SubDescription
instance GHC.Classes.Eq Business.Bookkeeping.Description
instance GHC.Classes.Ord Business.Bookkeeping.Description
instance GHC.Read.Read Business.Bookkeeping.Description
instance GHC.Show.Show Business.Bookkeeping.Description
instance GHC.Enum.Enum Business.Bookkeeping.Date
instance GHC.Num.Num Business.Bookkeeping.Date
instance GHC.Classes.Eq Business.Bookkeeping.Date
instance GHC.Classes.Ord Business.Bookkeeping.Date
instance GHC.Read.Read Business.Bookkeeping.Date
instance GHC.Show.Show Business.Bookkeeping.Date
instance GHC.Enum.Enum Business.Bookkeeping.Month
instance GHC.Num.Num Business.Bookkeeping.Month
instance GHC.Classes.Eq Business.Bookkeeping.Month
instance GHC.Classes.Ord Business.Bookkeeping.Month
instance GHC.Read.Read Business.Bookkeeping.Month
instance GHC.Show.Show Business.Bookkeeping.Month
instance GHC.Enum.Enum Business.Bookkeeping.Year
instance GHC.Num.Num Business.Bookkeeping.Year
instance GHC.Classes.Eq Business.Bookkeeping.Year
instance GHC.Classes.Ord Business.Bookkeeping.Year
instance GHC.Read.Read Business.Bookkeeping.Year
instance GHC.Show.Show Business.Bookkeeping.Year
instance Data.String.IsString Business.Bookkeeping.CategoryName
instance Data.String.IsString Business.Bookkeeping.SubDescription
instance GHC.Base.Monoid Business.Bookkeeping.SubDescription
instance Data.String.IsString Business.Bookkeeping.Description
instance GHC.Base.Monoid Business.Bookkeeping.Description
