revbank/plugins/skim
2022-06-11 21:16:47 +02:00

34 lines
1.1 KiB
Perl

#!perl
# Note: this plugin only makes sense if you have proper cashbox tracking,
# which requires the "deposit_methods" plugin for differentiating between
# bank transfers and cash deposits.
#
# If you ONLY allow cash deposits, and are not using the "deposit_methods"
# plugin, you could alternatively hack the "deposit" plugin to use the "-cash"
# contra instead of the "-deposits/other" contra.
sub command :Tab(skim,unskim) ($self, $cart, $command, @) {
$command eq 'skim' or $command eq 'unskim' or return NEXT;
$self->{command} = $command;
call_hooks("cash");
return "Amount to $command", \&amount;
}
sub amount($self, $cart, $arg, @) {
warn "Use 'unskim' to return (part of) a previously skimmed amount.\n"
if $arg =~ /^-/;
my $amount = parse_amount($arg) or return REJECT, "Invalid amount";
$amount = -$amount if $self->{command} eq 'unskim';
my $entry = $cart
->add(0, "Skimmed $amount", { is_withdrawal => 1 })
->add_contra("-cash", +$amount, "Skimmed by \$you")
->add_contra("-cash/skimmed", -$amount, "Skimmed by \$you");
return ACCEPT;
}