diff --git a/plugins/stock b/plugins/stock new file mode 100644 index 0000000..5e4fa8f --- /dev/null +++ b/plugins/stock @@ -0,0 +1,28 @@ +#!perl + +sub command { NEXT } + +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 $!; +} diff --git a/revbank.plugins b/revbank.plugins index 9b405a5..813a137 100644 --- a/revbank.plugins +++ b/revbank.plugins @@ -10,6 +10,7 @@ undo give take #nyan # fun, but not compatible with dumb terminals +#stock # Then, plugins that apply heuristics