diff --git a/plugins/vat b/plugins/vat new file mode 100644 index 0000000..7ac339a --- /dev/null +++ b/plugins/vat @@ -0,0 +1,27 @@ +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"); + } + } +}