NAME

Finance::Bookkeeping::Account - debit/credit account balances correctly

SYNOPSIS

package MyCreditAccount;
use Moose;
with 'Finance::Bookkeeping::Account' => { nb => 'credit'}; # consuming class declars it's normal balance (nb) is credit or debit

package MyDebitAccount;
use Moose;
with 'Finance::Bookkeeping::Account' => { nb => 'debit'}; # consuming class declars it's normal balance (nb) is credit or debit

package MyCheckbook;
use Moose;
with ('Finance::Bookkeeping::Account' => {
  nb => 'debit',
	-alias => {
		 debit => 'deposit',
		 credit => 'withdraw'
		 },
	-excludes => ['debit', 'credit'],
	}
);

package main;

my $cr = CreditAccount->new;
$cr->credit(50);
$cr->debit(20);
say $cr->balance; # 30


my $dr = DebitAccount->new;
$dr->debit(10);
$dr->credit(5);
$dr->credit(50);
say $dr->balance; # -45

my $bankaccount = MyCheckbook->new;
$bankaccount->deposit(10);
$bankaccount->withdraw(5);
say $bankaccount->balance; # 5

DESCRIPTION

Finance::Bookkeeping::Account is a parameterized role to create accounts that debit and credit correctly depending on account type.

API

debit

nb = debit, this increases the balance. nb = credit, this decreases the balance.

credit

nb = credit, this increases the balance. nb = debit, this decreases the balance.

AUTHOR

Jesse Shy <jshy@cpan.org>

COPYRIGHT

Copyright 2013- Jesse Shy

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO