#!perl HELP "cash" => "Checkout without a user account"; sub command :Tab(cash) { my ($self, $cart, $command) = @_; return NEXT if $command ne 'cash'; call_hooks("checkout", $cart, 'cash', 0); # Fake checkout $cart->empty; return ACCEPT; } sub hook_checkout { my ($class, $cart, $user, $transaction_id) = @_; # Hack42 for some reason used the dutch word in their revbank1 hack. my $filename = -e("revbank.voorraad") ? "revbank.voorraad" : "revbank.stock"; my @items = $cart->select_items('product_id') or return; my %stock = do { my $in; open($in, '<', $filename) ? map { split " ", $_, 2 } readline $in : () }; $stock{ $_->{product_id} }-- for @items; open my $out, '>', "$filename.$$" or warn "$filename.$$: $!"; printf {$out} "%-16s %+9d\n", $_, $stock{$_} for sort keys %stock; close $out or die "$filename.$$: $!"; rename "$filename.$$", $filename or die $!; }