From cf36a1510f532b5a421896463ab9d4a98b6fd30e Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 18 Apr 2011 11:34:13 -0700 Subject: [PATCH] When the Sku for an item no longer exists, do not show links to it. Check for bad skus in Transaction/www_viewItem. Provide variables to not show links when the skus do not exist. Handle existing links better by not returning the user to the home page, but to the transaction. Fixes bug #12107. --- docs/changelog/7.x.x.txt | 1 + docs/templates.txt | 5 +++ ...llateral-items_email-receipt-default.wgpkg | Bin 0 -> 1678 bytes ...al-items_my-purchases-detail-default.wgpkg | Bin 0 -> 2830 bytes lib/WebGUI/Help/Shop.pm | 3 ++ lib/WebGUI/Shop/Transaction.pm | 39 +++++++++++++----- lib/WebGUI/i18n/English/Shop.pm | 12 ++++++ 7 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 docs/upgrades/packages-7.10.14/shopping-cart-collateral-items_email-receipt-default.wgpkg create mode 100644 docs/upgrades/packages-7.10.14/shopping-cart-collateral-items_my-purchases-detail-default.wgpkg diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index a1294896f..ee5c090d1 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -13,6 +13,7 @@ - fixed #12103: PayPalStd driver fails occasionally - rfe #12105: Make shortcuts related for export purposes - rfe #12108: Mail to Group preference field + - fixed #12107: Viewing an individual transaction item fails 7.10.13 - added #12079: Carousel Auto Play diff --git a/docs/templates.txt b/docs/templates.txt index 5b42ed00d..faf97a9b6 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -1,6 +1,11 @@ This is a running list of template changes made during upgrades. If you have copied the default templates, you will need to apply these changes manually to your copies. +7.10.14 + * My Purchases Detail (Default) - shopping-cart-collateral-items/my-purchases-detail-default + * Email Receipt (Default) - shopping-cart-collateral-items/email-receipt-default + Added code to prevent links to items with bad skus to both templates. + 7.10.13 * Cart (Default) - default-shopping-cart-template In 7.10.7, hardcoded JavaScript was removed from the Cart code and migrated to the Cart template. The list of Javascript and files which are needed is below. Please add it to the Attachments or Extra Head Tags for any customized Cart templates. diff --git a/docs/upgrades/packages-7.10.14/shopping-cart-collateral-items_email-receipt-default.wgpkg b/docs/upgrades/packages-7.10.14/shopping-cart-collateral-items_email-receipt-default.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..1e15616b34ab973fd01f91c2e09b90f2e455b990 GIT binary patch literal 1678 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 literal 0 HcmV?d00001 diff --git a/lib/WebGUI/Help/Shop.pm b/lib/WebGUI/Help/Shop.pm index 9151f1ca4..94649fb1b 100644 --- a/lib/WebGUI/Help/Shop.pm +++ b/lib/WebGUI/Help/Shop.pm @@ -740,6 +740,9 @@ our $HELP = { { name => 'viewItemUrl', }, + { + name => 'hasSku', + }, { name => 'price', description => 'price help', diff --git a/lib/WebGUI/Shop/Transaction.pm b/lib/WebGUI/Shop/Transaction.pm index 4e089ae3d..3b228bfe0 100644 --- a/lib/WebGUI/Shop/Transaction.pm +++ b/lib/WebGUI/Shop/Transaction.pm @@ -463,11 +463,16 @@ sub getTransactionVars { # Post purchase actions my $actionsLoop = []; - my $actions = $item->getSku->getPostPurchaseActions( $item ); - for my $label ( keys %{$actions} ) { - push @{$actionsLoop}, { - label => $label, - url => $actions->{$label}, + my $sku = eval { $item->getSku }; + my $has_sku = 0; + if (! WebGUI::Error->caught) { + my $actions = $sku->getPostPurchaseActions( $item ); + $has_sku = 1; + for my $label ( keys %{$actions} ) { + push @{$actionsLoop}, { + label => $label, + url => $actions->{$label}, + } } } @@ -485,7 +490,8 @@ sub getTransactionVars { %{$item->get}, %taxVars, viewItemUrl => $url->page('shop=transaction;method=viewItem;transactionId='.$self->getId.';itemId='.$item->getId, 1), - price => sprintf("%.2f", $item->get('price')), + hasSku => $hasSku, + price => sprintf( "%.2f", $item->get('price') ), pricePlusTax => sprintf( "%.2f", $price + $taxAmount ), extendedPrice => sprintf( "%.2f", $quantity * $price ), extendedPricePlusTax => sprintf( "%.2f", $quantity * ( $price + $taxAmount ) ), @@ -1187,6 +1193,8 @@ sub www_view { }; foreach my $item (@{$transaction->getItems}) { + eval { $item->getSku; }; + my $sku_exists = !WebGUI::Error->caught; $output .= WebGUI::Form::formHeader($session) .WebGUI::Form::hidden($session, {name=>"shop",value=>"transaction"}) .WebGUI::Form::hidden($session, {name=>"method",value=>"updateItem"}) @@ -1194,9 +1202,15 @@ sub www_view { .WebGUI::Form::hidden($session, {name=>"itemId",value=>$item->getId}) .q{ - }.$item->get('lastUpdated').q{ - }.$item->get('configuredTitle').q{ - }.$transaction->formatCurrency($item->get('price')).q{ + }.$item->get('lastUpdated').qq{\n}. + ( + $sku_exists + ? q{}.$item->get('configuredTitle').qq{\n} + : q{}.$item->get('configuredTitle').q{
}.$i18n->get('item sku deleted').qq{\n} + + ) + . q{}.$transaction->formatCurrency($item->get('price')).q{ }.$item->get('quantity').q{ }; if ($item->get('shippingAddressId') eq $transaction->get('shippingAddressId')) { @@ -1273,7 +1287,12 @@ sub www_viewItem { $session->errorHandler->error("Can't get item ".$session->form->get("itemId")); return $class->www_view($session); } - return $item->getSku->www_view; + my $sku = eval { $item->getSku }; + if (WebGUI::Error->caught()) { + $session->errorHandler->error("Can't get sku for ".$session->form->get("itemId")); + return $class->www_view($session); + } + return $sku->www_view; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/i18n/English/Shop.pm b/lib/WebGUI/i18n/English/Shop.pm index 18f13bda9..3a373fbe1 100644 --- a/lib/WebGUI/i18n/English/Shop.pm +++ b/lib/WebGUI/i18n/English/Shop.pm @@ -1324,6 +1324,12 @@ our $I18N = { context => q|Template variable for email receipt template|, }, + 'hasSku' => { + message => q|A boolean which is true if the Asset that this item refers to is still in WebGUI. If this variable is false, then viewItemUrl should not be used.|, + lastUpdated => 1213135218, + context => q|Template variable for email receipt template|, + }, + 'price help' => { message => q|The price of this item, formatted to two decimal places.|, lastUpdated => 1213135218, @@ -2013,6 +2019,12 @@ our $I18N = { context => q|Template variable help| }, + 'item sku deleted' => { + message => q|The Asset for this item cannot be instanced.|, + lastUpdated => 0, + context => q|Template variable help| + }, + }; 1;