// Fix bug with cart, multishipping and gift product
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@15625 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
+3
-2
@@ -2629,7 +2629,7 @@ class CartCore extends ObjectModel
|
||||
*
|
||||
* @return array Cart details
|
||||
*/
|
||||
public function getSummaryDetails($id_lang = null)
|
||||
public function getSummaryDetails($id_lang = null, $refresh = false)
|
||||
{
|
||||
$context = Context::getContext();
|
||||
if (!$id_lang)
|
||||
@@ -2649,7 +2649,7 @@ class CartCore extends ObjectModel
|
||||
|
||||
$currency = new Currency($this->id_currency);
|
||||
|
||||
$products = $this->getProducts(false);
|
||||
$products = $this->getProducts($refresh);
|
||||
$gift_products = array();
|
||||
$cart_rules = $this->getCartRules();
|
||||
$total_shipping = $this->getTotalShippingCost();
|
||||
@@ -2723,6 +2723,7 @@ class CartCore extends ObjectModel
|
||||
'formattedAddresses' => $formatted_addresses,
|
||||
'products' => array_values($products),
|
||||
'gift_products' => $gift_products,
|
||||
//'products_raw' => $this->getProducts(false),
|
||||
'discounts' => $cart_rules,
|
||||
'is_virtual_cart' => (int)$this->isVirtualCart(),
|
||||
'total_discounts' => $total_discounts,
|
||||
|
||||
@@ -300,7 +300,7 @@ class CartControllerCore extends FrontController
|
||||
|
||||
Cart::addExtraCarriers($result);
|
||||
}
|
||||
$result['summary'] = $this->context->cart->getSummaryDetails();
|
||||
$result['summary'] = $this->context->cart->getSummaryDetails(null, true);
|
||||
$result['customizedDatas'] = Product::getAllCustomizedDatas($this->context->cart->id, null, true);
|
||||
$result['HOOK_SHOPPING_CART'] = Hook::exec('displayShoppingCartFooter', $result['summary']);
|
||||
$result['HOOK_SHOPPING_CART_EXTRA'] = Hook::exec('displayShoppingCart', $result['summary']);
|
||||
|
||||
@@ -523,6 +523,7 @@ function updateCartSummary(json)
|
||||
if (typeof json == 'undefined')
|
||||
return;
|
||||
|
||||
$('.cart_quantity_input').val(0);
|
||||
for (i=0;i<json.products.length;i++)
|
||||
{
|
||||
// if reduction, we need to show it in the cart by showing the initial price above the current one
|
||||
@@ -570,6 +571,7 @@ function updateCartSummary(json)
|
||||
}
|
||||
else
|
||||
{
|
||||
// @todo Check if the next line needs to be removed or not
|
||||
//$('input[name=quantity_'+json.products[i].id_product+'_'+json.products[i].id_product_attribute+'_'+json.products[i].id_customization+'_'+json.products[i].id_address_delivery+']')
|
||||
// .val(json.products[i].cart_quantity);
|
||||
$('#cart_quantity_custom_'+json.products[i].id_product+'_'+json.products[i].id_product_attribute+'_'+json.products[i].id_address_delivery)
|
||||
@@ -583,6 +585,20 @@ function updateCartSummary(json)
|
||||
$('#cart_quantity_down_'+json.products[i].id_product+'_'+json.products[i].id_product_attribute+Number(json.products[i].id_customization)+'_'+json.products[i].id_address_delivery).fadeTo('slow',1);
|
||||
|
||||
}
|
||||
|
||||
// Update gift product quantity
|
||||
for (i=0;i<json.gift_products.length;i++)
|
||||
{
|
||||
if(json.gift_products[i].id_customization == null)
|
||||
{
|
||||
$('.multishipping-cart input[name=quantity_'+json.gift_products[i].id_product+'_'+json.gift_products[i].id_product_attribute+'_0_'+json.gift_products[i].id_address_delivery+']').val(
|
||||
parseInt($('#.multishipping-cart input[name=quantity_'+json.gift_products[i].id_product+'_'+json.gift_products[i].id_product_attribute+'_0_'+json.gift_products[i].id_address_delivery+']').val()) + parseInt(json.gift_products[i].cart_quantity)
|
||||
);
|
||||
$('.multishipping-cart input[name=quantity_'+json.gift_products[i].id_product+'_'+json.gift_products[i].id_product_attribute+'_0_'+json.gift_products[i].id_address_delivery+'_hidden]').val(
|
||||
parseInt($('.multishipping-cart input[name=quantity_'+json.gift_products[i].id_product+'_'+json.gift_products[i].id_product_attribute+'_0_'+json.gift_products[i].id_address_delivery+']').val()) + parseInt(json.gift_products[i].cart_quantity)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Update discounts
|
||||
if (json.discounts.length == 0)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
ShipToAnOtherAddress = '{l s='Ship to multiple addresses' js=1}';
|
||||
</script>
|
||||
<div id="order-detail-content" class="table_block">
|
||||
<table id="cart_summary" class="std">
|
||||
<table id="cart_summary" class="std multishipping-cart">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="cart_product first_item">{l s='Product'}</th>
|
||||
@@ -42,64 +42,13 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$product_list item=product name=productLoop}
|
||||
{foreach $product_list as $product}
|
||||
{assign var='productId' value=$product.id_product}
|
||||
{assign var='productAttributeId' value=$product.id_product_attribute}
|
||||
{assign var='quantityDisplayed' value=0}
|
||||
{assign var='odd' value=$product@iteration%2}
|
||||
{* Display the product line *}
|
||||
{include file="$tpl_dir./order-address-product-line.tpl" productLast=$smarty.foreach.productLoop.last productFirst=$smarty.foreach.productLoop.first}
|
||||
{* Then the customized datas ones*}
|
||||
{if isset($customizedDatas.$productId.$productAttributeId)}
|
||||
{foreach from=$customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] key='id_customization' item='customization'}
|
||||
<tr id="product_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" class="product_{$product.id_product}_{$product.id_product_attribute}_0_{$product.id_address_delivery|intval} alternate_item cart_item">
|
||||
<td colspan="4">
|
||||
{foreach from=$customization.datas key='type' item='datas'}
|
||||
{if $type == $CUSTOMIZE_FILE}
|
||||
<div class="customizationUploaded">
|
||||
<ul class="customizationUploaded">
|
||||
{foreach from=$datas item='picture'}<li><img src="{$pic_dir}{$picture.value}_small" alt="" class="customizationUploaded" /></li>{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{elseif $type == $CUSTOMIZE_TEXTFIELD}
|
||||
<ul class="typedText">
|
||||
{foreach from=$datas item='textField' name='typedText'}<li>{if $textField.name}{$textField.name}{l s=':'}{else}{l s='Text #%s:' sprintf=$smarty.foreach.typedText.index+1}{/if} {$textField.value}</li>{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</td>
|
||||
<td class="cart_quantity">
|
||||
{if isset($cannotModify) AND $cannotModify == 1}
|
||||
<span style="float:left">{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count}{else}{$product.cart_quantity-$quantityDisplayed}{/if}</span>
|
||||
{else}
|
||||
<div style="float:right">
|
||||
<a rel="nofollow" class="cart_quantity_delete" id="{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "delete&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_customization={$id_customization}&id_address_delivery={$product.id_address_delivery}&token={$token_cart}")}"><img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" title="{l s='Delete this customization'}" width="11" height="13" class="icon" /></a>
|
||||
</div>
|
||||
<div id="cart_quantity_button" class="cart_quantity_button" style="float:left">
|
||||
<a rel="nofollow" class="cart_quantity_up" id="cart_quantity_up_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "add&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_address_delivery={$product.id_address_delivery}&id_customization={$id_customization}&token={$token_cart}")}" title="{l s='Add'}"><img src="{$img_dir}icon/quantity_up.gif" alt="{l s='Add'}" width="14" height="9" /></a><br />
|
||||
{if $product.minimal_quantity < ($customization.quantity -$quantityDisplayed) OR $product.minimal_quantity <= 1}
|
||||
<a rel="nofollow" class="cart_quantity_down" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "add&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_address_delivery={$product.id_address_delivery}&id_customization={$id_customization}&op=down&token={$token_cart}")}" title="{l s='Subtract'}">
|
||||
<img src="{$img_dir}icon/quantity_down.gif" alt="{l s='Subtract'}" width="14" height="9" />
|
||||
</a>
|
||||
{else}
|
||||
<a class="cart_quantity_down" style="opacity: 0.3;" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" href="#" title="{l s='Subtract'}">
|
||||
<img src="{$img_dir}icon/quantity_down.gif" alt="{l s='Subtract'}" width="14" height="9" />
|
||||
</a>
|
||||
{/if}
|
||||
</div>
|
||||
<input type="hidden" value="{$customization.quantity}" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}_hidden"/>
|
||||
<input size="2" type="text" value="{$customization.quantity}" class="cart_quantity_input" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}"/>
|
||||
{/if}
|
||||
</td>
|
||||
<td class="cart_total"></td>
|
||||
</tr>
|
||||
{assign var='quantityDisplayed' value=$quantityDisplayed+$customization.quantity}
|
||||
{/foreach}
|
||||
{* If it exists also some uncustomized products *}
|
||||
{if $product.quantity-$quantityDisplayed > 0}
|
||||
{include file="$tpl_dir./order-address-product-line.tpl" productLast=$smarty.foreach.productLoop.last productFirst=$smarty.foreach.productLoop.first}
|
||||
{/if}
|
||||
|
||||
{/if}
|
||||
{include file="$tpl_dir./order-address-product-line.tpl" productLast=$product@last productFirst=$product@first}
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
<tr id="product_{$product.id_product}_{$product.id_product_attribute}_0_{$product.id_address_delivery|intval}" class="{if $productLast}last_item{elseif $productFirst}first_item{/if} {if isset($customizedDatas.$productId.$productAttributeId) AND $quantityDisplayed == 0}alternate_item{/if} cart_item">
|
||||
<tr id="product_{$product.id_product}_{$product.id_product_attribute}_0_{$product.id_address_delivery|intval}" class="{if $productLast}last_item{elseif $productFirst}first_item{/if} {if isset($customizedDatas.$productId.$productAttributeId) AND $quantityDisplayed == 0}alternate_item{/if} cart_item {if $odd}odd{else}even{/if}">
|
||||
<td class="cart_product">
|
||||
<a href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category)|escape:'htmlall':'UTF-8'}"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'small')}" alt="{$product.name|escape:'htmlall':'UTF-8'}" {if isset($smallSize)}width="{$smallSize.width}" height="{$smallSize.height}" {/if} /></a>
|
||||
</td>
|
||||
@@ -36,7 +36,6 @@
|
||||
{if isset($cannotModify) AND $cannotModify == 1}
|
||||
<span style="float:left">{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count}{else}{$product.cart_quantity-$quantityDisplayed}{/if}</span>
|
||||
{else}
|
||||
{if isset($customizedDatas.$productId.$productAttributeId) AND $quantityDisplayed == 0}<span id="cart_quantity_custom_{$product.id_product}_{$product.id_product_attribute}_{$product.id_address_delivery|intval}" >{$product.customizationQuantityTotal}</span>{/if}
|
||||
{if !isset($customizedDatas.$productId.$productAttributeId) OR $quantityDisplayed > 0}
|
||||
<div id="cart_quantity_button" class="cart_quantity_button" style="float:left;">
|
||||
<a rel="nofollow" class="cart_quantity_up" id="cart_quantity_up_{$product.id_product}_{$product.id_product_attribute}_0_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "add&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_address_delivery={$product.id_address_delivery|intval}&token={$token_cart}")}" title="{l s='Add'}"><img src="{$img_dir}icon/quantity_up.gif" alt="{l s='Add'}" width="14" height="9" /></a><br />
|
||||
@@ -79,8 +78,5 @@
|
||||
</form>
|
||||
</td>
|
||||
<td class="cart_delete">
|
||||
{if !isset($customizedDatas.$productId.$productAttributeId) OR $quantityDisplayed > 0}
|
||||
<a rel="nofollow" class="cart_quantity_delete" id="{$product.id_product}_{$product.id_product_attribute}_0_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "delete&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_address_delivery={$product.id_address_delivery|intval}&token={$token_cart}")}" title="{l s='Delete'}">{l s='Delete'}</a>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
@@ -236,7 +236,7 @@
|
||||
{* Then the customized datas ones*}
|
||||
{if isset($customizedDatas.$productId.$productAttributeId)}
|
||||
{foreach $customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] as $id_customization=>$customization}
|
||||
<tr id="product_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" class="product_customization_for_{$product.id_product}_{$product.id_product_attribute}_{$product.id_address_delivery|intval} {if $odd}odd{else}even{/if} customization alternate_item {if $product@last && $customization@last}last_item{/if}">
|
||||
<tr id="product_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" class="product_customization_for_{$product.id_product}_{$product.id_product_attribute}_{$product.id_address_delivery|intval} {if $odd}odd{else}even{/if} customization alternate_item {if $product@last && $customization@last && !count($gift_products)}last_item{/if}">
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
{foreach $customization.datas as $type=>$custom_data}
|
||||
|
||||
Reference in New Issue
Block a user