NAME
App::HomeBank2Ledger::Ledger - Ledger data representation
VERSION
version 0.010
SYNOPSIS
my $ledger = App::HomeBank2Ledger::Ledger->new;
$ledger->add_payees("Ann's Antiques", "Missy Automative");
for my $payee (@{$ledger->payees}) {
print "Payee: $payee\n";
}
DESCRIPTION
This class provides a unified in-memory representation of a ledger, including associated metadata.
Here is a specification for the substructures:
account
This is a fully-qualified account name. Names may contain colons for representing a hierarchy of accounts. Examples:
"Assets:Bank:Chase1234"
"Liabilities:Credit Card:Capital One"
commodity
This is a hashref like this:
{
symbol => '$', # required
iso => 'USD', # optional
name => 'US Dollar', # optional
format => '$1000.00', # optional
}
payee
This is just a string with the name of a "payee" or memo/description/narration.
tag
This is just a string with the text of a tag.
transaction
This is a hashref like this:
{
date => '2019-06-12', # required
aux_date => '2019-06-13', # optional
status => 'cleared', # optional; can be "cleared" or "pending"
code => '1234', # optional
payee => 'Malcolm Reynolds', # required
note => 'Medical supplies', # optional
postings => [ # required
{
account => 'Some Account', # required
amount => '16.25', # required for at least n-1 postings
commodity => {
symbol => '$',
format => '$1,000.00',
iso => 'USD',
name => 'US Dollar',
syprf => 1,
dchar => '.',
gchar => ',',
frac => 2,
},
payee => 'Somebody', # optional
note => 'Whatever', # optional
status => 'pending', # optional; can be "cleared" or "pending"
tags => [qw(niska train-job)],
lot => { # optional
date => '2019-01-28',
price => {
amount => '15.00',
commodity => { ... },
},
},
cost => { # optional
amount => '10.00',
commodity => { ... },
},
},
...
],
}
ATTRIBUTES
accounts
Get an arrayref of accounts.
commodities
Get an arrayref of commodities.
payees
Get an arrayref of payees.
tags
Get an arrayref of tags.
transactions
Get an arrayref of transactions.
METHODS
new
$ledger = App::HomeBank2Ledger::Ledger->new(%ledger_data);
Construct a new ledger instance.
add_accounts
Add accounts.
add_commodities
Add commodities.
add_payees
Add payees.
add_tags
Add tags.
add_transactions
Add transactions.
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/chazmcgarvey/homebank2ledger/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
Charles McGarvey <chazmcgarvey@brokenzipper.com>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2019 by Charles McGarvey.
This is free software, licensed under:
The MIT (X11) License