From 9ae0b2a42e2399a139c62c35b0a8f18d6e41cd19 Mon Sep 17 00:00:00 2001 From: mDeflotte Date: Thu, 10 May 2012 14:37:14 +0000 Subject: [PATCH] [*] FO : #PSCFV-1463 & #PSCFV-1258 - Gift products and standard products are now displayed on seperate lines git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@15177 b9a71923-0436-4b27-9f14-aed3839534dd --- classes/Cart.php | 38 ++++++++++++++++++- modules/blockcart/translations/fr.php | 2 +- themes/default/css/global.css | 8 ++++ themes/default/lang/fr.php | 2 + themes/default/shopping-cart-product-line.tpl | 15 +++++--- themes/default/shopping-cart.tpl | 15 +++++++- 6 files changed, 69 insertions(+), 11 deletions(-) diff --git a/classes/Cart.php b/classes/Cart.php index cfa1ff5af..92a366e38 100644 --- a/classes/Cart.php +++ b/classes/Cart.php @@ -2619,6 +2619,39 @@ class CartCore extends ObjectModel if ($total_tax < 0) $total_tax = 0; + + $currency = new Currency($this->id_currency); + + $products = $this->getProducts(false); + $gift_products = array(); + $cart_rules = $this->getCartRules(); + foreach ($cart_rules as &$cart_rule) + { + if ($cart_rule['gift_product']) + { + foreach ($products as $key => &$product) + if (empty($product['gift']) && $product['id_product'] == $cart_rule['gift_product'] && $product['id_product_attribute'] == $cart_rule['gift_product_attribute']) + { + // Update product quantity and price + $product['total_wt'] = Tools::ps_round($product['total_wt'] - $product['price_wt'], (int)$currency->decimals * _PS_PRICE_DISPLAY_PRECISION_); + $product['total'] = Tools::ps_round($product['total'] - $product['price'], (int)$currency->decimals * _PS_PRICE_DISPLAY_PRECISION_); + $product['cart_quantity']--; + + if (!$product['cart_quantity']) + unset($products[$key]); + + // Add a new product line + $free_product = $product; + $free_product['cart_quantity'] = 1; + $free_product['price'] = $product['price']; + $free_product['price_wt'] = $product['price_wt']; + $free_product['total_wt'] = $product['price_wt']; + $free_product['total'] = $product['price']; + $free_product['gift'] = true; + $gift_products[] = $free_product; + } + } + } return array( 'delivery' => $delivery, @@ -2626,8 +2659,9 @@ class CartCore extends ObjectModel 'invoice' => $invoice, 'invoice_state' => State::getNameById($invoice->id_state), 'formattedAddresses' => $formatted_addresses, - 'products' => $this->getProducts(false), - 'discounts' => $this->getCartRules(), + 'products' => array_values($products), + 'gift_products' => $gift_products, + 'discounts' => $cart_rules, 'is_virtual_cart' => (int)$this->isVirtualCart(), 'total_discounts' => $this->getOrderTotal(true, Cart::ONLY_DISCOUNTS), 'total_discounts_tax_exc' => $this->getOrderTotal(false, Cart::ONLY_DISCOUNTS), diff --git a/modules/blockcart/translations/fr.php b/modules/blockcart/translations/fr.php index 5632a5b23..da69856ff 100644 --- a/modules/blockcart/translations/fr.php +++ b/modules/blockcart/translations/fr.php @@ -16,7 +16,7 @@ $_MODULE['<{blockcart}prestashop>blockcart_c9cc8cce247e49bae79f15173ce97354'] = $_MODULE['<{blockcart}prestashop>blockcart_20351b3328c35ab617549920f5cb4939'] = 'Personnalisation '; $_MODULE['<{blockcart}prestashop>blockcart_ed6e9a09a111035684bb23682561e12d'] = 'supprimer cet article du panier'; $_MODULE['<{blockcart}prestashop>blockcart_c6995d6cc084c192bc2e742f052a5c74'] = 'Livraison gratuite !'; -$_MODULE['<{blockcart}prestashop>blockcart_e7a6ca4e744870d455a57b644f696457'] = 'Gratuite !'; +$_MODULE['<{blockcart}prestashop>blockcart_e7a6ca4e744870d455a57b644f696457'] = 'Gratuit !'; $_MODULE['<{blockcart}prestashop>blockcart_f2a6c498fb90ee345d997f888fce3b18'] = 'Supprimer'; $_MODULE['<{blockcart}prestashop>blockcart_a85eba4c6c699122b2bb1387ea4813ad'] = 'Panier'; $_MODULE['<{blockcart}prestashop>blockcart_86024cad1e83101d97359d7351051156'] = 'articles'; diff --git a/themes/default/css/global.css b/themes/default/css/global.css index e5551c057..96023ca0b 100644 --- a/themes/default/css/global.css +++ b/themes/default/css/global.css @@ -842,6 +842,14 @@ table#cart_summary .cart_total_price .total_price_container { text-align: center; } +table#cart_summary .gift-icon { + color: white; + background: #0088CC; + line-height: 20px; + padding: 2px 5px; + border-radius: 5px; +} + /* step 2 - authentification ******************************************************************* */ #create-account_form, #authentication #login_form { clear: none; diff --git a/themes/default/lang/fr.php b/themes/default/lang/fr.php index cce4f2d6e..9d7c63ae7 100644 --- a/themes/default/lang/fr.php +++ b/themes/default/lang/fr.php @@ -346,6 +346,7 @@ $_LANG['order-carrier_6f05787682585c32498e88bcd2ea88fc'] = 'Méthodes de livrais $_LANG['order-carrier_86024cad1e83101d97359d7351051156'] = 'produits'; $_LANG['order-carrier_8fb37535c12fbe2899ab442ec474c157'] = 'Choisissez une option de livraison'; $_LANG['order-carrier_935b611697305cd981f442cfede10094'] = 'Choisissez une option de livraison pour l\'adresse : '; +$_LANG['order-carrier_a6cc8cbe3fa07d0fca172c36a603332c'] = 'Aucun transporteur disponible pour l\'adresse \"%s\".'; $_LANG['order-carrier_ad88a6c9e8c880f23639321d78ec859d'] = 'J\'ai lu les conditions générales de vente et j\'y adhère sans réserve.'; $_LANG['order-carrier_b1992d8f7c58180c1ebd461b7d502423'] = 'Le meilleur prix'; $_LANG['order-carrier_b4e59f3a4554655a099738382ebedbff'] = 'Vous pouvez ajouter un message d\'accompagnement à votre commande.'; @@ -703,6 +704,7 @@ $_LANG['search_e59894bdfd0b523f5036ff21fa905474'] = 'Veuillez saisir un mot-clé $_LANG['search_e9cbf16b6f16ee339f45a841b915c47c'] = 'Retour à la page précédente'; $_LANG['shopping-cart-product-line_1d9baf077ee87921f57a8fe42d510b65'] = 'Enlever'; $_LANG['shopping-cart-product-line_851d9bc346dfba1530e6ad49b554d9e2'] = 'Vous devez avoir acheté au moins '; +$_LANG['shopping-cart-product-line_a59ba454f256953d318ac200a50d67d1'] = 'Offert !'; $_LANG['shopping-cart-product-line_e8c8981687ec92e377b6231fc7ff0c9a'] = ' de ce produit.'; $_LANG['shopping-cart-product-line_ec211f7c20af43e742bf2570c3cb84f9'] = 'Ajouter'; $_LANG['shopping-cart-product-line_f2a6c498fb90ee345d997f888fce3b18'] = 'Supprimer'; diff --git a/themes/default/shopping-cart-product-line.tpl b/themes/default/shopping-cart-product-line.tpl index f7f95b1a7..a0654af34 100644 --- a/themes/default/shopping-cart-product-line.tpl +++ b/themes/default/shopping-cart-product-line.tpl @@ -24,17 +24,20 @@ * International Registered Trademark & Property of PrestaShop SA *} - + {$product.name|escape:'htmlall':'UTF-8'}
{$product.name|escape:'htmlall':'UTF-8'}
{if isset($product.attributes) && $product.attributes}{$product.attributes|escape:'htmlall':'UTF-8'}{/if} + {if !empty($product.gift)} +
{l s='Gift!'} + {/if} {if $product.reference}{$product.reference|escape:'htmlall':'UTF-8'}{else}--{/if} - + {if isset($product.is_discounted) && $product.is_discounted} {convertPrice price=$product.price_without_specific_price}
{/if} @@ -48,7 +51,7 @@ {if isset($cannotModify) AND $cannotModify == 1} - {if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count} + {if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count} {else} {$product.cart_quantity-$quantityDisplayed} {/if} @@ -77,7 +80,7 @@ {/if} - + {if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)} {if !$priceDisplay}{displayPrice price=$product.total_customization_wt}{else}{displayPrice price=$product.total_customization}{/if} {else} @@ -86,10 +89,10 @@ - {if !isset($customizedDatas.$productId.$productAttributeId) OR $quantityDisplayed > 0} + {if (!isset($customizedDatas.$productId.$productAttributeId) OR $quantityDisplayed) > 0 && empty($product.gift)} {/if} - + diff --git a/themes/default/shopping-cart.tpl b/themes/default/shopping-cart.tpl index 5b8254931..83c31f2ea 100644 --- a/themes/default/shopping-cart.tpl +++ b/themes/default/shopping-cart.tpl @@ -223,7 +223,7 @@ {assign var='productAttributeId' value=$product.id_product_attribute} {assign var='quantityDisplayed' value=0} {assign var='odd' value=$product@iteration%2} - {assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId)} + {assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId) || count($gift_products)} {* Display the product line *} {include file="./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first} {* Then the customized datas ones*} @@ -293,6 +293,17 @@ {if $product.quantity-$quantityDisplayed > 0}{include file="./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}{/if} {/if} {/foreach} + {assign var='last_was_odd' value=$product@iteration%2} + {foreach $gift_products 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+$last_was_odd)%2} + {assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId)} + {assign var='cannotModify' value=1} + {* Display the gift product line *} + {include file="./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first} + {/foreach} {if sizeof($discounts)} @@ -307,7 +318,7 @@ {if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if} - {l s='Delete'} + {if strlen($discount.code)}{l s='Delete'}{/if} {/foreach}