update example scripts in extra and rename them so they work as add-ons
This commit is contained in:
parent
61ff8b852a
commit
d1de9ba927
@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/env runhaskell
|
|
||||||
-- list the default journal's chart of accounts in --flat style
|
|
||||||
import Hledger
|
|
||||||
main = do
|
|
||||||
j <- myJournal
|
|
||||||
let l = journalToLedger nullfilterspec{empty=True} j
|
|
||||||
mapM_ putStrLn (accountnames l)
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
#!/usr/bin/env runhaskell
|
|
||||||
{-
|
|
||||||
Print an entry posting the total balance of the specified account and
|
|
||||||
subaccounts, or all accounts, from the default journal. Like ledger's
|
|
||||||
equity command. Useful when starting a new journal or closing the books.
|
|
||||||
|
|
||||||
Usage: equity.hs [ACCTPAT]
|
|
||||||
-}
|
|
||||||
import Hledger
|
|
||||||
import Hledger.Cli
|
|
||||||
import System.Environment
|
|
||||||
|
|
||||||
main = do
|
|
||||||
j <- myJournal
|
|
||||||
d <- getCurrentDay
|
|
||||||
args <- getArgs
|
|
||||||
let acctpat = head $ args ++ [""]
|
|
||||||
(acctbals,_) = balanceReport [Flat] (optsToFilterSpec [] [acctpat] d) j
|
|
||||||
txn = nulltransaction{
|
|
||||||
tdate=d,
|
|
||||||
tpostings=[nullposting{paccount=a,pamount=b} | (a,_,_,b) <- acctbals]
|
|
||||||
++ [nullposting{paccount="equity:opening balances",pamount=missingamt}]}
|
|
||||||
putStr $ show txn
|
|
||||||
9
extra/hledger-accountnames.hs
Executable file
9
extra/hledger-accountnames.hs
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env runhaskell
|
||||||
|
-- Show all account names used in the default journal.
|
||||||
|
|
||||||
|
import Hledger
|
||||||
|
|
||||||
|
main = do
|
||||||
|
j <- defaultJournal
|
||||||
|
let l = ledgerFromJournal Any j
|
||||||
|
mapM_ putStrLn $ ledgerAccountNames l
|
||||||
30
extra/hledger-equity.hs
Executable file
30
extra/hledger-equity.hs
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env runhaskell
|
||||||
|
{-
|
||||||
|
|
||||||
|
Like ledger's equity command, print a journal entry posting the total
|
||||||
|
balance of all accounts (or the specified account and its subaccounts)
|
||||||
|
in the default journal.
|
||||||
|
|
||||||
|
An entry like this is useful in the transition to a new journal file,
|
||||||
|
to zero out asset/liability balances in the old file and initialise
|
||||||
|
them in the new one. This way you get correct balances when reporting
|
||||||
|
on either file, and when including both files at once.
|
||||||
|
|
||||||
|
Usage: hledger-equity [ACCTPAT]
|
||||||
|
-}
|
||||||
|
import Hledger
|
||||||
|
import Hledger.Cli
|
||||||
|
import System.Environment
|
||||||
|
|
||||||
|
main = do
|
||||||
|
j <- defaultJournal
|
||||||
|
d <- getCurrentDay
|
||||||
|
args <- getArgs
|
||||||
|
let query = Or $ map Acct args
|
||||||
|
ropts = defreportopts{flat_=True}
|
||||||
|
(acctbals,_) = accountsReport ropts query j
|
||||||
|
balancingamt = negate $ sum $ map (\(_,_,_,b) -> b) acctbals
|
||||||
|
ps = [posting{paccount=a, pamount=b} | (a,_,_,b) <- acctbals]
|
||||||
|
++ [posting{paccount="equity:opening balances", pamount=balancingamt}]
|
||||||
|
txn = nulltransaction{tdate=d, tpostings=ps}
|
||||||
|
putStr $ showTransactionUnelided txn
|
||||||
24
extra/hledger-print-unique.hs
Executable file
24
extra/hledger-print-unique.hs
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env runhaskell
|
||||||
|
{-|
|
||||||
|
hledger-print-unique [-f JOURNALFILE | -f-]
|
||||||
|
|
||||||
|
Print only journal entries which are unique by description (or
|
||||||
|
something else). Reads the default or specified journal, or stdin.
|
||||||
|
|
||||||
|
|-}
|
||||||
|
|
||||||
|
import Data.List
|
||||||
|
import Data.Ord
|
||||||
|
import Hledger
|
||||||
|
import Hledger.Cli
|
||||||
|
import Hledger.Cli.Print (print')
|
||||||
|
|
||||||
|
main = do
|
||||||
|
opts <- getHledgerCliOpts []
|
||||||
|
withJournalDo opts $
|
||||||
|
\opts j@Journal{jtxns=ts} -> print' opts j{jtxns=uniquify ts}
|
||||||
|
where
|
||||||
|
uniquify = nubBy (\t1 t2 -> thingToCompare t1 == thingToCompare t2) . sortBy (comparing thingToCompare)
|
||||||
|
|
||||||
|
thingToCompare = tdescription
|
||||||
|
-- thingToCompare = tdate
|
||||||
@ -1,21 +0,0 @@
|
|||||||
#!/usr/bin/env runhaskell
|
|
||||||
{-|
|
|
||||||
Uniquify journal entries based on some id in the description. Reads the
|
|
||||||
default or specified journal, or stdin.
|
|
||||||
|
|
||||||
Usage: uniquify.hs [-f JOURNALFILE | -f-]
|
|
||||||
|-}
|
|
||||||
|
|
||||||
import Data.List
|
|
||||||
import Hledger
|
|
||||||
import Hledger.Cli
|
|
||||||
|
|
||||||
main = do
|
|
||||||
opts <- getHledgerOpts
|
|
||||||
withJournalDo opts uniquifyAndPrint
|
|
||||||
|
|
||||||
uniquifyAndPrint :: CliOpts -> Journal -> IO ()
|
|
||||||
uniquifyAndPrint opts j@Journal{jtxns=ts} = print' opts j{jtxns=uniquify ts}
|
|
||||||
where
|
|
||||||
uniquify = nubBy (\t1 t2 -> extractId (tdescription t1) == extractId (tdescription t2))
|
|
||||||
extractId desc = desc -- extract some part that's supposed to be unique
|
|
||||||
Loading…
Reference in New Issue
Block a user