From 807d255b53c0f6b3d9074dcb0a076469b5a226d4 Mon Sep 17 00:00:00 2001 From: Juerd Waalboer Date: Sun, 17 Nov 2024 01:15:18 +0100 Subject: [PATCH] Expose deltas In preparation for future plugin --- lib/RevBank/Cart.pm | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/RevBank/Cart.pm b/lib/RevBank/Cart.pm index 25f1a26..7240413 100644 --- a/lib/RevBank/Cart.pm +++ b/lib/RevBank/Cart.pm @@ -84,6 +84,18 @@ sub prohibit_checkout($self, $bool, $reason) { } } +sub deltas($self, $user) { + my %deltas = ($user => RevBank::Amount->new(0)); + + for my $entry (@{ $self->{entries} }) { + $deltas{$_->{user}} += $_->{amount} * $entry->quantity + for $entry, $entry->contras; + } + + return \%deltas; +} + + sub checkout($self, $user) { if ($self->{prohibited}) { die RevBank::Cart::CheckoutProhibited->new( @@ -133,18 +145,13 @@ sub checkout($self, $user) { RevBank::Plugins::call_hooks("checkout", $self, $user, $transaction_id); - my %deltas = ($user => RevBank::Amount->new(0)); + my $deltas = $self->deltas($user); - for my $entry (@$entries) { - $deltas{$_->{user}} += $_->{amount} * $entry->quantity - for $entry, $entry->contras; - } - - for my $account (reverse sort keys %deltas) { + for my $account (reverse sort keys %$deltas) { # The reverse sort is a lazy way to make the "-" accounts come last, # which looks nicer with the "cash" plugin. - RevBank::Users::update($account, $deltas{$account}, $transaction_id) - if $deltas{$account} != 0; + RevBank::Users::update($account, $deltas->{$account}, $transaction_id) + if $deltas->{$account} != 0; } RevBank::Plugins::call_hooks("checkout_done", $self, $user, $transaction_id);