From bdb17778753c5102fbb06f8dc83533936b801086 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 29 Apr 2010 12:22:18 -0700 Subject: [PATCH] Checking out when shipping is not required works. --- lib/WebGUI/Shop/Cart.pm | 58 +++++++++++++++------------------- lib/WebGUI/Shop/Transaction.pm | 38 +++++++++++++--------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/lib/WebGUI/Shop/Cart.pm b/lib/WebGUI/Shop/Cart.pm index 298d23f99..8d8244da5 100644 --- a/lib/WebGUI/Shop/Cart.pm +++ b/lib/WebGUI/Shop/Cart.pm @@ -545,15 +545,27 @@ sub readyForCheckout { } # Check if the shipping address is set and correct + my $shipAddress = eval{$self->getShippingAddress}; + if (WebGUI::Error->caught) { + $self->error('no shipping address'); + return 0; + } + + if (my @missingFields = $book->missingFields($shipAddress->get)) { + $self->error($missingFields[0]); + return 0; + } + if ($self->requiresShipping) { - my $shipAddress = eval{$self->getShippingAddress}; - if (WebGUI::Error->caught) { - $self->error('no shipping address'); + ##Must have a configured shipping id. + if (! $self->get('shipperId')) { + $self->error('no shipping method set'); return 0; } - if (my @missingFields = $book->missingFields($shipAddress->get)) { - $self->error($missingFields[0]); + my $shipper = eval { WebGUI::Shop::ShipDriver->new($session, $self->get('shipperId'))}; + if (my $e = WebGUI::Error->caught) { + $self->error($e->error); return 0; } } @@ -576,18 +588,6 @@ sub readyForCheckout { return 0; } - ##Must have a configured shipping id. - if (! $self->get('shipperId')) { - $self->error('no shipping method set'); - return 0; - } - - my $shipper = eval { WebGUI::Shop::ShipDriver->new($session, $self->get('shipperId'))}; - if (my $e = WebGUI::Error->caught) { - $self->error($e->error); - return 0; - } - ##Must have a configured payment method. if (! $self->get('gatewayId')) { $self->error('no payment gateway set'); @@ -727,19 +727,16 @@ sub updateFromForm { my $billingAddressId = $form->process('billingAddressId'); if ($billingAddressId eq 'new_address' && ! @missingBillingFields) { ##Add a new address - $self->session->log->warn('add a new address'); my $newAddress = $book->addAddress(\%billingData); $cartProperties->{billingAddressId} = $newAddress->get('addressId'); } elsif ($billingAddressId eq 'update_address' && $self->get('billingAddressId') && ! @missingBillingFields) { - $self->session->log->warn('update this address: '.$billingAddressId); ##User updated the current address my $address = $self->getBillingAddress(); $address->update(\%billingData); } elsif ($billingAddressId ne 'new_address' && $billingAddressId) { ##User changed the address selector to another address field - $self->session->log->warn('change address to: '.$billingAddressId); $cartProperties->{billingAddressId} = $billingAddressId; } elsif (@missingBillingFields) { @@ -911,13 +908,15 @@ sub www_update { my $self = shift; my $session = $self->session; $self->updateFromForm; - $session->log->warn('checkout form: '. $session->form->get('checkout')); - if ($session->form->get('checkout') && $self->readyForCheckout()) { - my $gateway = WebGUI::Shop::Pay->new($session)->getPaymentGateway($self->get('gatewayId')); - return $gateway->www_getCredentials; + if ($session->form->get('checkout')) { + if (! $self->requiresShipping && ! $self->get('shippingAddressId')) { + $self->update({shippingAddressId => $self->get('billingAddressId')}); + } + if ($self->readyForCheckout()) { + my $gateway = WebGUI::Shop::Pay->new($session)->getPaymentGateway($self->get('gatewayId')); + return $gateway->www_getCredentials; + } } - $session->log->warn('checkout form: '. $session->form->get('checkout')); - $session->log->warn('ready for checkout: '. $self->readyForCheckout()); return $self->www_view; } @@ -989,7 +988,6 @@ sub www_view { push(@items, \%properties); } - #$session->log->warn('below item loop'); my %var = ( %{$self->get}, @@ -1014,7 +1012,6 @@ sub www_view { $var{shippableItemsInCart} = $self->requiresShipping; if ($var{shippableItemsInCart}) { - #$session->log->warn('shipping required'); my $ship = WebGUI::Shop::Ship->new($self->session); my $options = $ship->getOptions($self); my $numberOfOptions = scalar keys %{ $options }; @@ -1057,14 +1054,12 @@ sub www_view { else { $var{shippingPrice} = $var{tax} = $self->formatCurrency(0); } - #$session->log->warn('current user is visitor'); # Tax variables #Address form variables $var{userIsVisitor} = $session->user->isVisitor; if ($var{userIsVisitor}) { - #$session->log->warn('current user is visitor'); $var{loginFormHeader} = WebGUI::Form::formHeader($session, {action => $session->url->page}) . WebGUI::Form::hidden($session,{ name => 'op', value => 'auth'}) . WebGUI::Form::hidden($session,{ name => 'method', value => 'login'}) @@ -1077,7 +1072,6 @@ sub www_view { $var{loginFormFooter} = WebGUI::Form::formFooter($session) } else { - #$session->log->warn('current user is okay'); ##Address form variables my $addressBook = $self->getAddressBook; my $addresses = $addressBook->getAddresses; @@ -1131,7 +1125,6 @@ sub www_view { options => \%paymentOptions, value => $self->get('gatewayId') || $form->get('gatewayId') || '', }); - #$session->log->warn('below payment block'); # POS variables $var{isCashier} = WebGUI::Shop::Admin->new($session)->isCashier; @@ -1141,7 +1134,6 @@ sub www_view { my $posUser = $self->getPosUser; $var{posUsername} = $posUser->username; $var{posUserId} = $posUser->userId; - #$session->log->warn('below POS'); # calculate price adjusted for in-store credit $var{totalPrice} = $var{subtotalPrice} + $var{shippingPrice} + $var{tax}; diff --git a/lib/WebGUI/Shop/Transaction.pm b/lib/WebGUI/Shop/Transaction.pm index f78e4a5cf..ba35875b3 100644 --- a/lib/WebGUI/Shop/Transaction.pm +++ b/lib/WebGUI/Shop/Transaction.pm @@ -745,17 +745,6 @@ sub update { if (exists $newProperties->{cart}) { my $cart = $newProperties->{cart}; $newProperties->{taxes} = $cart->calculateTaxes; - my $shippingAddress = $cart->getShippingAddress; - $newProperties->{shippingAddressId} = $shippingAddress->getId; - $newProperties->{shippingAddressName} = $shippingAddress->get('firstName') . " " . $shippingAddress->get('lastName'); - $newProperties->{shippingAddress1} = $shippingAddress->get('address1'); - $newProperties->{shippingAddress2} = $shippingAddress->get('address2'); - $newProperties->{shippingAddress3} = $shippingAddress->get('address3'); - $newProperties->{shippingCity} = $shippingAddress->get('city'); - $newProperties->{shippingState} = $shippingAddress->get('state'); - $newProperties->{shippingCountry} = $shippingAddress->get('country'); - $newProperties->{shippingCode} = $shippingAddress->get('code'); - $newProperties->{shippingPhoneNumber} = $shippingAddress->get('phoneNumber'); my $billingAddress = $cart->getBillingAddress; $newProperties->{paymentAddressId} = $billingAddress->getId; @@ -769,10 +758,29 @@ sub update { $newProperties->{paymentCode} = $billingAddress->get('code'); $newProperties->{paymentPhoneNumber} = $billingAddress->get('phoneNumber'); - my $shipper = $cart->getShipper; - $newProperties->{shippingDriverId} = $shipper->getId; - $newProperties->{shippingDriverLabel} = $shipper->get('label'); - $newProperties->{shippingPrice} = $shipper->calculate($cart); + my $shippingAddress = $cart->getShippingAddress; + $newProperties->{shippingAddressId} = $shippingAddress->getId; + $newProperties->{shippingAddressName} = $shippingAddress->get('firstName') . " " . $shippingAddress->get('lastName'); + $newProperties->{shippingAddress1} = $shippingAddress->get('address1'); + $newProperties->{shippingAddress2} = $shippingAddress->get('address2'); + $newProperties->{shippingAddress3} = $shippingAddress->get('address3'); + $newProperties->{shippingCity} = $shippingAddress->get('city'); + $newProperties->{shippingState} = $shippingAddress->get('state'); + $newProperties->{shippingCountry} = $shippingAddress->get('country'); + $newProperties->{shippingCode} = $shippingAddress->get('code'); + $newProperties->{shippingPhoneNumber} = $shippingAddress->get('phoneNumber'); + + if ($cart->requiresShipping) { + my $shipper = $cart->getShipper; + $newProperties->{shippingDriverId} = $shipper->getId; + $newProperties->{shippingDriverLabel} = $shipper->get('label'); + $newProperties->{shippingPrice} = $shipper->calculate($cart); + } + else { + $newProperties->{shippingDriverLabel} = "NO SHIPPING"; + $newProperties->{shippingPrice} = 0; + } + $newProperties->{amount} = $cart->calculateTotal + $newProperties->{shopCreditDeduction}; $newProperties->{shopCreditDeduction} = $cart->calculateShopCreditDeduction($newProperties->{amount}); $newProperties->{amount} += $newProperties->{shopCreditDeduction};