
No hackerspace probably needs this, but I just realised that implementing VAT support would be very easy, so why not.
27 lines
703 B
Text
27 lines
703 B
Text
sub _read_vat {
|
|
my %vat;
|
|
for my $line (slurp "revbank.vat") {
|
|
my ($match, $vataccount, $pct) = split " ", $line;
|
|
$vat{$match} = { user => $vataccount, pct => $pct };
|
|
}
|
|
return \%vat;
|
|
}
|
|
|
|
sub hook_checkout_prepare($class, $cart, $username, $transaction_id, @) {
|
|
my $vat = _read_vat;
|
|
|
|
for my $entry ($cart->entries) {
|
|
my @contras = $entry->contras;
|
|
|
|
for my $contra ($entry->contras) {
|
|
my $vat = $vat->{ $contra->{user} } or next;
|
|
|
|
my $amount = RevBank::Amount->new(
|
|
$contra->{amount}->cents * $vat->{pct} / (100 + $vat->{pct})
|
|
);
|
|
|
|
$entry->add_contra($contra->{user}, -$amount, "$vat->{pct}% VAT");
|
|
$entry->add_contra($vat->{user}, +$amount, "$vat->{pct}% VAT");
|
|
}
|
|
}
|
|
}
|