41 lines
1 KiB
Perl
41 lines
1 KiB
Perl
#!perl
|
|
|
|
# This is basically like 'withdraw', but for non-cash (e.g. iban)
|
|
|
|
my @TAB;
|
|
|
|
sub command :Tab(undeposit) ($self, $cart, $command, @) {
|
|
$command eq 'undeposit' or return NEXT;
|
|
|
|
warn "\n\n\n";
|
|
warn "\e[1mNote: this function is for internal use by board members ONLY.\e[0m\n";
|
|
warn "\n\n\n";
|
|
warn "Enter 'abort' to abort.\n";
|
|
|
|
@TAB = grep /^[-+]deposit/, RevBank::Users::names
|
|
or return REJECT, "No contras available.";
|
|
print "Available contras:\n", map " $_\n", sort(@TAB);
|
|
|
|
return "Contra", \&contra;
|
|
}
|
|
|
|
sub tab { @TAB }
|
|
|
|
sub contra :Tab(&tab) ($self, $cart, $arg, @) {
|
|
return REJECT, "Invalid contra." unless grep $_ eq $arg, @TAB;
|
|
|
|
$self->{contra} = $arg;
|
|
|
|
return "Amount to withdraw", \&amount;
|
|
}
|
|
|
|
sub amount($self, $cart, $arg, @) {
|
|
my $amount = parse_amount($arg);
|
|
defined $amount or return REJECT, "Invalid amount";
|
|
|
|
$cart
|
|
->add(-$amount, "Undeposit", { is_withdrawal => 1 })
|
|
->add_contra($self->{contra}, +$amount, "Undeposited by \$you");
|
|
|
|
return ACCEPT;
|
|
}
|