From 6633d173accecfa351f106bd7d9638ac31ab0576 Mon Sep 17 00:00:00 2001 From: Matthew Wilson Date: Tue, 9 May 2006 00:06:58 +0000 Subject: [PATCH] add a way for item plugins to modify line item amounts. --- lib/WebGUI/Operation/Commerce.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/WebGUI/Operation/Commerce.pm b/lib/WebGUI/Operation/Commerce.pm index 02ccb4257..07f74bfe5 100644 --- a/lib/WebGUI/Operation/Commerce.pm +++ b/lib/WebGUI/Operation/Commerce.pm @@ -374,8 +374,6 @@ sub www_checkoutSubmit { map {push(@transactions, {recurring => 1, items => [$_]})} @$recurring; push(@transactions, {recurring => 0, items => [@$normal]}) if (@$normal); - $shoppingCart->empty; - foreach $currentPurchase (@transactions) { $amount = 0; $var = {}; @@ -391,8 +389,12 @@ sub www_checkoutSubmit { $transaction = WebGUI::Commerce::Transaction->new($session, 'new'); foreach (@{$currentPurchase->{items}}) { - $transaction->addItem($_->{item}, $_->{quantity}); - $amount += ($_->{item}->price * $_->{quantity}); + $transaction->addItem($_->{item}, $_->{quantity}); + # use the item plugin's lineItem method for price override + # situations. + $amount += ($_->{item}->{priceLineItem}) + ?($_->{item}->priceLineItem($_->{quantity},$shoppingCart)) + :($_->{item}->price * $_->{quantity}); $var->{purchaseDescription} .= $_->{quantity}.' x '.$_->{item}->name.'
'; } $transaction->shippingCost($shippingCost); @@ -451,6 +453,8 @@ sub www_checkoutSubmit { push(@resultLoop, $var); } + $shoppingCart->empty; + $param{title} = $i18n->get('transaction error title'); $param{statusExplanation} = $i18n->get('status codes information'); $param{resultLoop} = \@resultLoop;