#!perl use List::Util qw(any); HELP1 "deluser " => "Delete an account"; my $contra = "+donations"; sub command :Tab(deluser) ($self, $cart, $command, @) { $command eq 'deluser' or return NEXT; $cart->size and return REJECT, "Deluser is not available mid-transaction."; print( "\n", ">>> YOU ARE ABOUT TO FORFEIT YOUR BALANCE AND DELETE YOUR ACCOUNT! <<<\n", "\n", ); return "Type your name to finish", \&deluser_account; } sub deluser_account($self, $cart, $account, @) { my $amount = RevBank::Accounts::balance($account); return ABORT, "No such account: $account." if not defined $amount; return ABORT, "Can not delete an account with a negative balance." if ($amount < 0); $cart->{_deluser} = 1; $cart ->add(-$amount, "Forfeit remaining balance") ->add_contra($contra, +$amount, "Delete account \$you"); $cart->checkout($account); return ACCEPT; } sub hook_checkout_done($class, $cart, $account, $transaction_id, @) { return if not defined $cart->{_deluser}; RevBank::Accounts::delete($account); print "\nAccount $account deleted.\n"; }