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 *} -