Merged branch master into master

This commit is contained in:
Alexandre Simonet 2016-04-05 10:29:58 +02:00
commit 37ed7b336e
48 changed files with 1929 additions and 1155 deletions

View File

@ -0,0 +1,134 @@
<?php
if (!defined('_CAN_LOAD_FILES_'))
exit;
include_once(dirname(__FILE__) . '/classes/AdvRea.php');
class AdvReassurance extends Module
{
public function __construct()
{
$this->name = 'advreassurance';
$this->tab = 'front_office_features';
$this->version = '1.0';
$this->author = 'Antadis';
$this->need_instance = 0;
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Reassurance avancé');
$this->description = $this->l('Gestion des blocks reassurance');
}
public function install()
{
$sql = array();
$sql[] =
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advreassurance` (
`id_reassurance` int(10) unsigned NOT NULL auto_increment,
`position` INT(11) UNSIGNED NOT NULL default 0,
`active` INT(11) UNSIGNED NOT NULL default 1,
PRIMARY KEY (`id_reassurance`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
$sql[] =
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advreassurance_lang` (
`id_reassurance` int(10) unsigned NOT NULL,
`id_lang` int(10) unsigned NOT NULL,
`title` varchar(255) NOT NULL,
`subtitle` varchar(255) NOT NULL,
`url` varchar(255),
PRIMARY KEY (`id_reassurance`,`id_lang`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
$sql[] =
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advreassurance_shop` (
`id_reassurance` int(10) unsigned NOT NULL auto_increment,
`id_shop` int(10) unsigned NOT NULL,
PRIMARY KEY (`id_reassurance`, `id_shop`)
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
foreach ($sql as $_sql) {
Db::getInstance()->Execute($_sql);
}
$tab = new Tab();
$tab->class_name = 'AdminAdvReassurance';
$tab->id_parent = Tab::getCurrentParentId();
$tab->module = $this->name;
$languages = Language::getLanguages();
foreach ($languages as $language) {
$tab->name[$language['id_lang']] = 'Reassurance';
}
$img_dir = _PS_IMG_DIR_ . 'reassurance';
$folder = is_dir($img_dir);
if (!$folder)
{
$folder = mkdir($img_dir, 0755, true);
}
return parent::install() && $tab->add() && $this->registerHook('displayReassurance') && $this->registerHook('actionRefreshReassurance') && $folder;
}
public function uninstall()
{
$sql = 'DROP TABLE IF EXISTS
`' . _DB_PREFIX_ . 'advreassurance_lang`,
`' . _DB_PREFIX_ . 'advreassurance_shop`,
`' . _DB_PREFIX_ . 'advreassurance`
';
Db::getInstance()->Execute($sql);
$idTab = Tab::getIdFromClassName('AdminAdvReassurance');
if ($idTab) {
$tab = new Tab($idTab);
$tab->delete();
}
return parent::uninstall();
}
public function assignBlocks()
{
$blocks = AdvRea::getBlocks();
if (!$blocks)
{
return false;
}
$this->smarty->assign('blocks', $blocks);
}
public function hookDisplayReassurance($params)
{
if (!$this->isCached('advreassurance.tpl', $this->getCacheId()))
{
$this->assignBlocks();
}
return $this->display(__FILE__, 'advreassurance.tpl', $this->getCacheId());
}
public function hookDisplayReassuranceBottom($params)
{
if (!$this->isCached('advreassurance-bottom.tpl', $this->getCacheId()))
{
$this->assignBlocks();
}
return $this->display(__FILE__, 'advreassurance-bottom.tpl', $this->getCacheId());
}
public function hookActionRefreshReassurance()
{
$this->_clearCache('advreassurance');
}
}

View File

@ -0,0 +1,133 @@
<?php
class AdvRea extends ObjectModel {
public $id_reassurance;
public $position;
public $active;
public $title;
public $subtitle;
public $url;
public static $definition = array(
'table' => 'advreassurance',
'primary' => 'id_reassurance',
'multilang' => TRUE,
'fields' => array(
'id_reassurance' => array('type' => self::TYPE_INT, 'validate' => 'isInt'),
'position' => array('type' => self::TYPE_INT, 'validate' => 'isInt'),
'active' => array('type' => self::TYPE_INT, 'validate' => 'isInt'),
// Lang fields
'title' => array('type' => self::TYPE_STRING, 'lang' => TRUE, 'validate' => 'isGenericName', 'size' => 255),
'subtitle' => array('type' => self::TYPE_STRING, 'lang' => TRUE, 'validate' => 'isGenericName', 'size' => 255),
'url' => array('type' => self::TYPE_STRING, 'lang' => TRUE, 'validate' => 'isUrl', 'size' => 255)
)
);
public function __construct($id = NULL, $id_lang = NULL, $id_shop = NULL) {
parent::__construct($id, $id_lang, $id_shop);
$this->image_dir = _PS_IMG_DIR_ . 'reassurance/';
}
public function add($null_values = false, $autodate = true)
{
$result = parent::add($null_values, $autodate);
Hook::exec('actionRefreshReassurance');
return $result;
}
public function update($null_values = FALSE) {
$result = parent::update($null_values);
Hook::exec('actionRefreshReassurance');
return $result;
}
public function delete($null_values = FALSE) {
$result = parent::delete($null_values);
Hook::exec('actionRefreshReassurance');
return $result;
}
public static function getBlocks()
{
$context = Context::getContext();
$reassurances = Db::getInstance()->executeS('
SELECT *
FROM `'._DB_PREFIX_.'advreassurance` adv
JOIN `'._DB_PREFIX_.'advreassurance_lang` advl ON adv.`id_reassurance` = advl.`id_reassurance` AND id_lang = '. (int)$context->language->id . '
WHERE adv.`active` = 1
ORDER BY `position` ASC
');
return $reassurances;
}
public function cleanPositions(){
return Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'advreassurance`
SET `position`= `position` - 1
WHERE `id_reassurance` = '.(int)$this->id_reassurance.'
AND `position` > '.(int)$this->position);
}
public function updatePosition($way, $position)
{
$sql = 'SELECT `position`, `id_reassurance`
FROM `'._DB_PREFIX_.'advreassurance`
ORDER BY `position` ASC';
if (!$res = Db::getInstance()->executeS($sql))
return false;
foreach ($res as $row)
if ((int)$row['id_reassurance'] == (int)$this->id_reassurance)
$moved_row = $row;
if (!isset($moved_row) || !isset($position))
return false;
// < and > statements rather than BETWEEN operator
// since BETWEEN is treated differently according to databases
$res = Db::getInstance()->execute('
UPDATE `'._DB_PREFIX_.'advreassurance`
SET `position`= `position` '.($way ? '- 1' : '+ 1').'
AND `position`
'.($way
? '> '.(int)$moved_row['position'].' AND `position` <= '.(int)$position
: '< '.(int)$moved_row['position'].' AND `position` >= '.(int)$position)
)
&& Db::getInstance()->execute('
UPDATE `'._DB_PREFIX_.'advreassurance`
SET `position` = '.(int)$position.'
WHERE `id_reassurance`='.(int)$moved_row['id_reassurance']
);
$this->refreshPositions();
Hook::exec('actionRefreshReassurance');
return $res;
}
public function refreshPositions(){
$sql = 'SELECT `id_reassurance`
FROM `'._DB_PREFIX_.'advreassurance`
ORDER BY `position` ASC';
if (!$blocks = Db::getInstance()->executeS($sql))
return false;
$pos=0;
foreach ($blocks as $block) {
Db::getInstance()->execute('
UPDATE `'._DB_PREFIX_.'advreassurance`
SET `position` = '.(int)$pos.'
WHERE `id_reassurance`='.(int)$block['id_reassurance']);
$pos++;
}
}
}

View File

@ -0,0 +1,243 @@
<?php
include_once dirname(__FILE__).'/../../classes/AdvRea.php';
class AdminAdvReassuranceController extends ModuleAdminController {
public function __construct() {
$this->table = 'advreassurance';
$this->className = 'AdvRea';
$this->identifier = 'id_reassurance';
$this->lang = TRUE;
$this->deleted = FALSE;
$this->bootstrap = TRUE;
$this->fieldImageSettings = array(
'name' => 'image',
'dir' => 'reassurance'
);
$this->position_identifier = 'id_reassurance';
$this->_defaultOrderBy = 'position';
parent::__construct();
$this->actions = array('edit', 'delete');
$this->fields_list = array(
'id_reassurance' => array(
'title' => 'ID',
'width' => 25
),
'image' => array(
'title' => $this->module->l('Image'),
'image' => $this->fieldImageSettings['dir'],
'width' => 75
),
'title' => array(
'title' => $this->module->l('Titre'),
),
'subtitle' => array(
'title' => $this->module->l('Sout-titre'),
),
'url' => array(
'title' => $this->module->l('Url'),
'width' => 45,
),
'position' => array(
'title' => $this->l('Position'),
'align' => 'center',
'position' => 'position',
'filter_key' => 'a!position'
)
);
if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL){
$this->_join .= 'JOIN `'._DB_PREFIX_.'advreassurance_shop` as ashop ON a.`id_reassurance` = ashop.`id_reassurance` AND ashop.`id_shop` IN ('.implode(', ', Shop::getContextListShopID()).') ';
$this->_group .= 'GROUP BY ashop.`id_reassurance`';
}
}
public function initPageHeaderToolbar() {
parent::initPageHeaderToolbar();
if ($this->display != 'edit' && $this->display != 'add') {
$this->page_header_toolbar_btn['new_link'] = array(
'href' => self::$currentIndex.'&id_parent='.(int)Tools::getValue('id_reassurance').'&addadvreassurance&token='.$this->token,
'desc' => $this->l('Ajouter un nouveau block', NULL, NULL, FALSE),
'icon' => 'process-icon-new'
);
}
}
public function renderView() {
return $this->renderList();
}
public function renderForm() {
$this->fields_form = array(
'tinymce' => TRUE,
'legend' => array(
'title' => $this->className,
),
'submit' => array(
'name' => 'submitAdvReassurancer',
'title' => $this->l('Save'),
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Titre'),
'name' => 'title',
'lang' => TRUE,
),
array(
'type' => 'text',
'label' => $this->l('Sous-titre'),
'name' => 'subtitle',
'lang' => TRUE,
),
array(
'type' => 'text',
'label' => $this->l('Lien'),
'name' => 'url',
'lang' => TRUE
),
array(
'type' => 'switch',
'label' => $this->l('Activé'),
'name' => 'active',
'required' => FALSE,
'is_bool' => TRUE,
'default' => 1,
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Enabled')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('Disabled')
)
),
),
array(
'type' => 'shop',
'label' => $this->l('Shop'),
'form_group_class' => 'fieldhide input_association',
'name' => 'checkBoxShopAsso_advreassurance'
)
)
);
$obj = $this->loadObject(TRUE);
$image = FALSE;
$image_url = '';
$image_size = '';
if($obj)
{
$image = _PS_IMG_DIR_ . 'reassurance/' . $obj->id.'.jpg';
$image_url = ImageManager::thumbnail($image, $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, TRUE, TRUE);
$image_size = file_exists($image) ? filesize($image) / 1000 : FALSE;
}
$this->fields_form['input'][] = array(
'type' => 'file',
'label' => $this->l('Image'),
'name' => 'image',
'display_image' => TRUE,
'lang' => TRUE,
'image' => $image_url,
'size' => $image_size,
'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->object->id.'&token='.$this->token.'&deleteImage=1'
);
return parent::renderForm();
}
protected function copyFromPost(&$object, $table) {
parent::copyFromPost($object, $table);
if(Shop::isFeatureActive())
{
$object->id_shop_list = array();
foreach (Tools::getValue('checkBoxShopAsso_advreassurance') as $id_shop => $value)
$object->id_shop_list[] = $id_shop;
}
}
public function postProcess() {
if (Tools::getValue('deleteImage')) {
$this->processForceDeleteImage();
$this->refreshPreview();
}
return parent::postProcess();
}
public function processForceDeleteImage() {
$link = $this->loadObject(TRUE);
if (Validate::isLoadedObject($link))
{
$link->deleteImage(TRUE);
}
}
protected function postImage($id) {
$ret = parent::postImage($id);
$this->refreshPreview();
if (isset($_FILES) && count($_FILES) && $_FILES['image']['name'] != NULL && !empty($this->object->id) )
{
return TRUE;
}
return TRUE;
}
public function refreshPreview()
{
$current_preview = _PS_TMP_IMG_DIR_.'advreassurance_mini_'.$this->object->id_reassurance.'_'.$this->context->shop->id.'.jpg';
if (file_exists($current_preview)) {
unlink($current_preview);
}
}
public function ajaxProcessUpdatePositions()
{
$way = (int)(Tools::getValue('way'));
$id = (int)(Tools::getValue('id'));
$positions = Tools::getValue('slide');
$obj = 'advreassurance';
if (is_array($positions)){
foreach ($positions as $position => $value)
{
$pos = explode('_', $value);
if (isset($pos[2]) && (int)$pos[2] === $id)
{
$menu_obj = new AdvRea((int)$pos[2]);
if (Validate::isLoadedObject($menu_obj))
if (isset($position) && $menu_obj->updatePosition($way, $position))
{
echo 'ok position '.(int)$position.' for '.$obj.' '.(int)$pos[2]."\r\n";
}
else
echo '{"hasError" : true, "errors" : "Can not update '.$obj.' '.(int)$id.' to position '.(int)$position.' "}';
else
echo '{"hasError" : true, "errors" : "This '.$obj.' ('.(int)$id.') cannot be loaded"}';
break;
}
}
}
}
}

View File

@ -0,0 +1,35 @@
<?php
/*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2014 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -0,0 +1,3 @@
<!-- Block Advmenu module -->
<!-- /Block Advmenu module -->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,52 @@
*CRITICAL* 2016/04/04 - 10:42:46: File name: ErpProductCombination.php - Line No: 293
Message: HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Mon, 04 Apr 2016 08:47:09 GMT
Content-Type: text/xml
Content-Length: 325
Connection: close
<?xml version='1.0'?>
<methodResponse>
<fault>
<value><struct>
<member>
<name>faultCode</name>
<value><string>warning -- Attention !
La quantité ne peut pas être négative.</string></value>
</member>
<member>
<name>faultString</name>
<value><string></string></value>
</member>
</struct></value>
</fault>
</methodResponse>
*CRITICAL* 2016/04/04 - 10:42:47: File name: ErpProductCombination.php - Line No: 293
Message: HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Mon, 04 Apr 2016 08:47:09 GMT
Content-Type: text/xml
Content-Length: 325
Connection: close
<?xml version='1.0'?>
<methodResponse>
<fault>
<value><struct>
<member>
<name>faultCode</name>
<value><string>warning -- Attention !
La quantité ne peut pas être négative.</string></value>
</member>
<member>
<name>faultString</name>
<value><string></string></value>
</member>
</struct></value>
</fault>
</methodResponse>

265
override/classes/Cart.php Normal file
View File

@ -0,0 +1,265 @@
<?php
class Cart extends CartCore
{
public function getProducts($refresh = false, $id_product = false, $id_country = null)
{
if (!$this->id) {
return array();
}
// Product cache must be strictly compared to NULL, or else an empty cart will add dozens of queries
if ($this->_products !== null && !$refresh) {
// Return product row with specified ID if it exists
if (is_int($id_product)) {
foreach ($this->_products as $product) {
if ($product['id_product'] == $id_product) {
return array($product);
}
}
return array();
}
return $this->_products;
}
// Build query
$sql = new DbQuery();
// Build SELECT
$sql->select('cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, pl.`name`, p.`is_virtual`,
pl.`description_short`, pl.`available_now`, pl.`available_later`, product_shop.`id_category_default`, p.`id_supplier`,
p.`id_manufacturer`, p.`nb_per_box`, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`,
product_shop.`available_for_order`, product_shop.`price`, product_shop.`active`, product_shop.`unity`, product_shop.`unit_price_ratio`,
stock.`quantity` AS quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, p.`weight`,
p.`date_add`, p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category,
CONCAT(LPAD(cp.`id_product`, 10, 0), LPAD(IFNULL(cp.`id_product_attribute`, 0), 10, 0), IFNULL(cp.`id_address_delivery`, 0)) AS unique_id, cp.id_address_delivery,
product_shop.advanced_stock_management, ps.product_supplier_reference supplier_reference');
// Build FROM
$sql->from('cart_product', 'cp');
// Build JOIN
$sql->leftJoin('product', 'p', 'p.`id_product` = cp.`id_product`');
$sql->innerJoin('product_shop', 'product_shop', '(product_shop.`id_shop` = cp.`id_shop` AND product_shop.`id_product` = p.`id_product`)');
$sql->leftJoin('product_lang', 'pl', '
p.`id_product` = pl.`id_product`
AND pl.`id_lang` = '.(int)$this->id_lang.Shop::addSqlRestrictionOnLang('pl', 'cp.id_shop')
);
$sql->leftJoin('category_lang', 'cl', '
product_shop.`id_category_default` = cl.`id_category`
AND cl.`id_lang` = '.(int)$this->id_lang.Shop::addSqlRestrictionOnLang('cl', 'cp.id_shop')
);
$sql->leftJoin('product_supplier', 'ps', 'ps.`id_product` = cp.`id_product` AND ps.`id_product_attribute` = cp.`id_product_attribute` AND ps.`id_supplier` = p.`id_supplier`');
// @todo test if everything is ok, then refactorise call of this method
$sql->join(Product::sqlStock('cp', 'cp'));
// Build WHERE clauses
$sql->where('cp.`id_cart` = '.(int)$this->id);
if ($id_product) {
$sql->where('cp.`id_product` = '.(int)$id_product);
}
$sql->where('p.`id_product` IS NOT NULL');
// Build ORDER BY
$sql->orderBy('cp.`date_add`, cp.`id_product`, cp.`id_product_attribute` ASC');
if (Customization::isFeatureActive()) {
$sql->select('cu.`id_customization`, cu.`quantity` AS customization_quantity');
$sql->leftJoin('customization', 'cu',
'p.`id_product` = cu.`id_product` AND cp.`id_product_attribute` = cu.`id_product_attribute` AND cu.`id_cart` = '.(int)$this->id);
$sql->groupBy('cp.`id_product_attribute`, cp.`id_product`, cp.`id_shop`');
} else {
$sql->select('NULL AS customization_quantity, NULL AS id_customization');
}
if (Combination::isFeatureActive()) {
$sql->select('
product_attribute_shop.`price` AS price_attribute, product_attribute_shop.`ecotax` AS ecotax_attr,
IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference,
(p.`weight`+ pa.`weight`) weight_attribute,
IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13,
IF (IFNULL(pa.`upc`, \'\') = \'\', p.`upc`, pa.`upc`) AS upc,
IFNULL(product_attribute_shop.`minimal_quantity`, product_shop.`minimal_quantity`) as minimal_quantity,
IF(product_attribute_shop.wholesale_price > 0, product_attribute_shop.wholesale_price, product_shop.`wholesale_price`) wholesale_price
');
$sql->leftJoin('product_attribute', 'pa', 'pa.`id_product_attribute` = cp.`id_product_attribute`');
$sql->leftJoin('product_attribute_shop', 'product_attribute_shop', '(product_attribute_shop.`id_shop` = cp.`id_shop` AND product_attribute_shop.`id_product_attribute` = pa.`id_product_attribute`)');
} else {
$sql->select(
'p.`reference` AS reference, p.`ean13`,
p.`upc` AS upc, product_shop.`minimal_quantity` AS minimal_quantity, product_shop.`wholesale_price` wholesale_price'
);
}
$sql->select('image_shop.`id_image` id_image, il.`legend`');
$sql->leftJoin('image_shop', 'image_shop', 'image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$this->id_shop);
$sql->leftJoin('image_lang', 'il', 'il.`id_image` = image_shop.`id_image` AND il.`id_lang` = '.(int)$this->id_lang);
$result = Db::getInstance()->executeS($sql);
// Reset the cache before the following return, or else an empty cart will add dozens of queries
$products_ids = array();
$pa_ids = array();
if ($result) {
foreach ($result as $key => $row) {
$products_ids[] = $row['id_product'];
$pa_ids[] = $row['id_product_attribute'];
$specific_price = SpecificPrice::getSpecificPrice($row['id_product'], $this->id_shop, $this->id_currency, $id_country, $this->id_shop_group, $row['cart_quantity'], $row['id_product_attribute'], $this->id_customer, $this->id);
if ($specific_price) {
$reduction_type_row = array('reduction_type' => $specific_price['reduction_type']);
} else {
$reduction_type_row = array('reduction_type' => 0);
}
$result[$key] = array_merge($row, $reduction_type_row);
}
}
// Thus you can avoid one query per product, because there will be only one query for all the products of the cart
Product::cacheProductsFeatures($products_ids);
Cart::cacheSomeAttributesLists($pa_ids, $this->id_lang);
$this->_products = array();
if (empty($result)) {
return array();
}
$ecotax_rate = (float)Tax::getProductEcotaxRate($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')});
$apply_eco_tax = Product::$_taxCalculationMethod == PS_TAX_INC && (int)Configuration::get('PS_TAX');
$cart_shop_context = Context::getContext()->cloneContext();
foreach ($result as &$row) {
if (isset($row['ecotax_attr']) && $row['ecotax_attr'] > 0) {
$row['ecotax'] = (float)$row['ecotax_attr'];
}
$row['stock_quantity'] = (int)$row['quantity'];
// for compatibility with 1.2 themes
$row['quantity'] = (int)$row['cart_quantity'];
if (isset($row['id_product_attribute']) && (int)$row['id_product_attribute'] && isset($row['weight_attribute'])) {
$row['weight'] = (float)$row['weight_attribute'];
}
if (Configuration::get('PS_TAX_ADDRESS_TYPE') == 'id_address_invoice') {
$address_id = (int)$this->id_address_invoice;
} else {
$address_id = (int)$row['id_address_delivery'];
}
if (!Address::addressExists($address_id)) {
$address_id = null;
}
if ($cart_shop_context->shop->id != $row['id_shop']) {
$cart_shop_context->shop = new Shop((int)$row['id_shop']);
}
$address = Address::initialize($address_id, true);
$id_tax_rules_group = Product::getIdTaxRulesGroupByIdProduct((int)$row['id_product'], $cart_shop_context);
$tax_calculator = TaxManagerFactory::getManager($address, $id_tax_rules_group)->getTaxCalculator();
$row['price_without_reduction'] = Product::getPriceStatic(
(int)$row['id_product'],
true,
isset($row['id_product_attribute']) ? (int)$row['id_product_attribute'] : null,
6,
null,
false,
false,
$row['cart_quantity'],
false,
(int)$this->id_customer ? (int)$this->id_customer : null,
(int)$this->id,
$address_id,
$specific_price_output,
true,
true,
$cart_shop_context
);
$row['price_with_reduction'] = Product::getPriceStatic(
(int)$row['id_product'],
true,
isset($row['id_product_attribute']) ? (int)$row['id_product_attribute'] : null,
6,
null,
false,
true,
$row['cart_quantity'],
false,
(int)$this->id_customer ? (int)$this->id_customer : null,
(int)$this->id,
$address_id,
$specific_price_output,
true,
true,
$cart_shop_context
);
$row['price'] = $row['price_with_reduction_without_tax'] = Product::getPriceStatic(
(int)$row['id_product'],
false,
isset($row['id_product_attribute']) ? (int)$row['id_product_attribute'] : null,
6,
null,
false,
true,
$row['cart_quantity'],
false,
(int)$this->id_customer ? (int)$this->id_customer : null,
(int)$this->id,
$address_id,
$specific_price_output,
true,
true,
$cart_shop_context
);
switch (Configuration::get('PS_ROUND_TYPE')) {
case Order::ROUND_TOTAL:
$row['total'] = $row['price_with_reduction_without_tax'] * (int)$row['cart_quantity'];
$row['total_wt'] = $row['price_with_reduction'] * (int)$row['cart_quantity'];
break;
case Order::ROUND_LINE:
$row['total'] = Tools::ps_round($row['price_with_reduction_without_tax'] * (int)$row['cart_quantity'], _PS_PRICE_COMPUTE_PRECISION_);
$row['total_wt'] = Tools::ps_round($row['price_with_reduction'] * (int)$row['cart_quantity'], _PS_PRICE_COMPUTE_PRECISION_);
break;
case Order::ROUND_ITEM:
default:
$row['total'] = Tools::ps_round($row['price_with_reduction_without_tax'], _PS_PRICE_COMPUTE_PRECISION_) * (int)$row['cart_quantity'];
$row['total_wt'] = Tools::ps_round($row['price_with_reduction'], _PS_PRICE_COMPUTE_PRECISION_) * (int)$row['cart_quantity'];
break;
}
$row['price_wt'] = $row['price_with_reduction'];
$row['description_short'] = Tools::nl2br($row['description_short']);
// check if a image associated with the attribute exists
if ($row['id_product_attribute']) {
$row2 = Image::getBestImageAttribute($row['id_shop'], $this->id_lang, $row['id_product'], $row['id_product_attribute']);
if ($row2) {
$row = array_merge($row, $row2);
}
}
$row['reduction_applies'] = ($specific_price_output && (float)$specific_price_output['reduction']);
$row['quantity_discount_applies'] = ($specific_price_output && $row['cart_quantity'] >= (int)$specific_price_output['from_quantity']);
$row['id_image'] = Product::defineProductImage($row, $this->id_lang);
$row['allow_oosp'] = Product::isAvailableWhenOutOfStock($row['out_of_stock']);
$row['features'] = Product::getFeaturesStatic((int)$row['id_product']);
if (array_key_exists($row['id_product_attribute'].'-'.$this->id_lang, self::$_attributesLists)) {
$row = array_merge($row, self::$_attributesLists[$row['id_product_attribute'].'-'.$this->id_lang]);
}
$row = Product::getTaxesInformations($row, $cart_shop_context);
$this->_products[] = $row;
}
return $this->_products;
}
}

View File

@ -310,4 +310,84 @@ class AuthController extends AuthControllerCore
$this->context->smarty->assign('account_error', $this->errors);
}
}
protected function processSubmitLogin()
{
Hook::exec('actionBeforeAuthentication');
$passwd = trim(Tools::getValue('passwd'));
$_POST['passwd'] = null;
$email = trim(Tools::getValue('email'));
if (empty($email)) {
$this->errors[] = Tools::displayError('An email address required.');
} elseif (!Validate::isEmail($email)) {
$this->errors[] = Tools::displayError('Invalid email address.');
} elseif (empty($passwd)) {
$this->errors[] = Tools::displayError('Password is required.');
} elseif (!Validate::isPasswd($passwd)) {
$this->errors[] = Tools::displayError('Invalid password.');
} else {
$customer = new Customer();
$authentication = $customer->getByEmail(trim($email), trim($passwd));
if (isset($authentication->active) && !$authentication->active) {
$this->errors[] = Tools::displayError('Your account isn\'t available at this time, please contact us');
} elseif (!$authentication || !$customer->id) {
$this->errors[] = Tools::displayError('Authentication failed.');
} else {
$this->context->cookie->id_compare = isset($this->context->cookie->id_compare) ? $this->context->cookie->id_compare: CompareProduct::getIdCompareByIdCustomer($customer->id);
$this->context->cookie->id_customer = (int)($customer->id);
$this->context->cookie->customer_lastname = $customer->lastname;
$this->context->cookie->customer_firstname = $customer->firstname;
$this->context->cookie->logged = 1;
$customer->logged = 1;
$this->context->cookie->is_guest = $customer->isGuest();
$this->context->cookie->passwd = $customer->passwd;
$this->context->cookie->email = $customer->email;
// Add customer to the context
$this->context->customer = $customer;
if (Configuration::get('PS_CART_FOLLOWING') && (empty($this->context->cookie->id_cart) || Cart::getNbProducts($this->context->cookie->id_cart) == 0) && $id_cart = (int)Cart::lastNoneOrderedCart($this->context->customer->id)) {
$this->context->cart = new Cart($id_cart);
} else {
$id_carrier = (int)$this->context->cart->id_carrier;
$this->context->cart->id_carrier = 0;
$this->context->cart->setDeliveryOption(null);
$this->context->cart->id_address_delivery = (int)Address::getFirstCustomerAddressId((int)($customer->id));
$this->context->cart->id_address_invoice = (int)Address::getFirstCustomerAddressId((int)($customer->id));
}
$this->context->cart->id_customer = (int)$customer->id;
$this->context->cart->secure_key = $customer->secure_key;
if ($this->ajax && isset($id_carrier) && $id_carrier && Configuration::get('PS_ORDER_PROCESS_TYPE')) {
$delivery_option = array($this->context->cart->id_address_delivery => $id_carrier.',');
$this->context->cart->setDeliveryOption($delivery_option);
}
$this->context->cart->save();
$this->context->cookie->id_cart = (int)$this->context->cart->id;
$this->context->cookie->write();
$this->context->cart->autosetProductAddress();
Hook::exec('actionAuthentication', array('customer' => $this->context->customer));
// Login information have changed, so we check if the cart rules still apply
CartRule::autoRemoveFromCart($this->context);
CartRule::autoAddToCart($this->context);
if (!$this->ajax) {
Tools::redirect($this->context->link->getCategoryLink(IndexController::CATEGORY));
}
}
}
if ($this->ajax) {
$return = array(
'hasError' => !empty($this->errors),
'errors' => $this->errors,
'token' => Tools::getToken(false)
);
$this->ajaxDie(Tools::jsonEncode($return));
} else {
$this->context->smarty->assign('authentification_error', $this->errors);
}
}
}

View File

@ -2,6 +2,13 @@
class CategoryController extends CategoryControllerCore
{
public function init()
{
$this->addJS(_THEME_JS_DIR_.'tools/flexslider.js');
parent::init();
}
public function initContent()
{
if($this->category->id == Category::CATEGORY_COLLECTION)

View File

@ -13,6 +13,12 @@ class OrderConfirmationController extends OrderConfirmationControllerCore
$summary = $cart->getSummaryDetails();
$productNumber = 0;
foreach($summary['products'] as $product)
{
$productNumber += $product['cart_quantity'];
}
$this->context->smarty->assign(
array(
'customer' => $customer,
@ -25,7 +31,10 @@ class OrderConfirmationController extends OrderConfirmationControllerCore
'gift_products' => $summary['gift_products'],
'noDeleteButton' => true,
'productNumber' => $productNumber,
'total_products' => $summary['total_products'],
'total_products_wt' => $summary['total_products_wt'],
'total_shipping' => $summary['total_shipping'],
'total_shipping_tax_exc' => $summary['total_shipping_tax_exc'],
'total_price' => $summary['total_price'],
'voucherAllowed' => false,

View File

@ -18,6 +18,12 @@ class ParentOrderController extends ParentOrderControllerCore
protected function _assignSummaryInformations()
{
if(Tools::getIsset('emptyCart'))
{
$this->context->cart->delete();
Tools::redirect($this->context->link->getPageLink('order'));
}
$summary = $this->context->cart->getSummaryDetails();
$customizedDatas = Product::getAllCustomizedDatas($this->context->cart->id);
@ -69,12 +75,6 @@ class ParentOrderController extends ParentOrderControllerCore
$product['is_discounted'] = $product['price_without_specific_price'] != $product['price_wt'];
}
$summary['nbProducts'] = 0;
foreach ($summary['products'] as $product)
{
$summary['nbProducts'] += (int)$product['cart_quantity'];
}
// Get available cart rules and unset the cart rules already in the cart
$available_cart_rules = CartRule::getCustomerCartRules($this->context->language->id, (isset($this->context->customer->id) ? $this->context->customer->id : 0), true, true, true, $this->context->cart);
$cart_cart_rules = $this->context->cart->getCartRules();
@ -122,6 +122,7 @@ class ParentOrderController extends ParentOrderControllerCore
'HOOK_SHOPPING_CART_EXTRA' => Hook::exec('displayShoppingCart', $summary),
'DISPLAY_CART_SUMMARY_STOCK_INFO' => Hook::exec('displayCartSummaryStockInfo', $summary)
));
}
}

View File

@ -13,18 +13,17 @@
{foreach $option_list as $key => $option}
<div class="delivery-option clearfix delivery-{$key|replace:',':''} radio-box">
<div class="inner">
<div class="lg2 xs3 xxs2 radio-button valign-middle">
<div class="sm3 xs3 xxs2 radio-button valign-middle">
<input id="delivery_option_{$id_address|intval}_{$option@index}" class="custom-input inline delivery_option_radio" type="radio" name="delivery_option[{$id_address|intval}]" data-key="{$key}" data-id_address="{$id_address|intval}" value="{$key}"{if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key} checked="checked"{/if} />
{foreach $option.carrier_list as $carrier}
{if $carrier.logo}
<img class="hidden-xs hidden-xxs" src="{$carrier.logo|escape:'htmlall':'UTF-8'}" alt="{$carrier.instance->name|escape:'htmlall':'UTF-8'}"/>
{/if}
{/foreach}
<input id="delivery_option_{$id_address|intval}_{$option@index}" class="custom-input inline delivery_option_radio" type="radio" name="delivery_option[{$id_address|intval}]" data-key="{$key}" data-id_address="{$id_address|intval}" value="{$key}"{if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key} checked="checked"{/if} />
</div>
<div class="lg8 xs6 xxs5 desc">
<div class="sm7 xs6 xxs5 desc">
<span class="carrier-name">{$carrier.instance->name|escape:'htmlall':'UTF-8'}</span>
{if isset($carrier.instance->delay[$cookie->id_lang])}
{$carrier.instance->delay[$cookie->id_lang]|escape:'htmlall':'UTF-8'}
{/if}

File diff suppressed because it is too large Load Diff

View File

@ -185,12 +185,37 @@ a { color: #363842 }
-webkit-transition: all 0.3s ease 0s;
-moz-transition: all 0.3s ease 0s
}
.btn:before {
background: #f9e48f;
background: -webkit-linear-gradient(top, #f9e48f, #bfa56d);
background: -o-linear-gradient(top, #f9e48f, #bfa56d);
background: -moz-linear-gradient(top, #f9e48f, #bfa56d);
background: linear-gradient(to top, #f9e48f, #bfa56d);
bottom: 0;
border-radius: 2px;
content: "";
display: block;
left: 0;
opacity: 0;
position: absolute;
right: 0;
top: 0;
transition: all 0.3s ease 0s;
-webkit-transition: all 0.3s ease 0s;
-moz-transition: all 0.3s ease 0s
z-index: 2;
}
.btn span {
position: relative;
z-index: 3;
}
button.btn { padding-top: 7px; padding-bottom: 7px }
.btn:hover { color: #000; }
.btn.btn2 { background: #1c1d22; border-color: #1c1d22; }
.btn.btn2:hover { background: none; color: #1c1d22; }
.btn:hover:before { opacity: 1 }
.btn:hover span { color: #000; }
.btn.btn2 { background: #202020; border-color: #1c1d22; color: #fff }
.btn.btn2:hover { background: #444; color: #fff; }
.btn.btn2:hover:before { display: none; }
.btn.btn-full-width { width: 100%; }
/* Positionnement des icones */
@ -265,31 +290,18 @@ header.page-heading.order-process { padding: 15px 0 0 0; }
text-transform: uppercase;
}
header.page-heading.order-process h1 { margin-bottom: 50px }
@media (max-width: 991px) {
}
@media (max-width: 767px) {
}
/*************************************************************************************************************
************************************ BREADCRUMBS **************************************
**************************************************************************************************************/
#breadcrumbs {
}
#breadcrumbs .crumb {
header.page-heading.account .short-desc {
color: #fff;
font-size: 13px;
margin-top: 15px;
}
#breadcrumbs .crumb span.navigation-pipe {
}
#breadcrumbs .crumb a {
}
#breadcrumbs .crumb span a,
#breadcrumbs .crumb span span {
}
@media (max-width: 1320px) {
header.page-heading.account .short-desc { margin-top: 35px; text-align: center; }
}
@media (max-width: 991px) {
header.page-heading { padding: 50px 0; }
}
/*************************************************************************************************************
@ -297,28 +309,31 @@ header.page-heading.order-process { padding: 15px 0 0 0; }
**************************************************************************************************************/
.block { margin-bottom: 30px }
.box {
color: #000;
font-size: 14px;
margin-bottom: 30px;
position: relative;
}
.box > .inner {
background: #1f1f1f;
padding: 50px 100px;
text-align: center;
background: #fff;
background: -webkit-linear-gradient(top, #f4f4f4, #fff);
background: -o-linear-gradient(top, #f4f4f4, #fff);
background: -moz-linear-gradient(top, #f4f4f4, #fff);
background: linear-gradient(to top, #f4f4f4, #fff);
border: 3px solid #f4f4f4;
height: 100%;
padding: 25px;
}
.box .title {
color: #fff;
background: url('../img/shadow.png') no-repeat center bottom;
color: #000;
display: block;
font-family: "DancingScript";
font-size: 26px;
}
.box .title:after {
background: #fff;
content: "";
display: block;
height: 1px;
margin: 20px auto;
width: 35px;
font-family: "ITCAvantGarde";
font-size: 14px;
margin-bottom: 15px;
padding: 10px 0 30px 0;
text-transform: uppercase;
text-align: center;
}
.box .box-footer {
margin-top: 15px;
@ -525,6 +540,7 @@ header.page-heading.order-process { padding: 15px 0 0 0; }
line-height: 40px;
width: 20%;
}
.product-ctn .product-combinations ul .hover .inner button[disabled] { opacity: 0.5; }
.product-ctn .product-combinations ul .hover .inner .value-container button.in-cart,
.product-ctn .product-combinations ul .hover .inner .value-container button:hover { background: #e0c980; color: #202020 }
.product-ctn .product-combinations ul .hover .inner .value-container button.in-cart:first-child { background: #3c3c3c; color: #fff }
@ -566,147 +582,29 @@ header.page-heading.order-process { padding: 15px 0 0 0; }
top: 0;
}
@media (max-width: 1199px) {
@media (max-width: 1320px) {
.product-ctn .add-to-cart-pane { padding-top: 10px }
}
@media (max-width: 767px) {
.product-ctn .product-img-ctn { text-align: center }
.product-ctn .product-infos { padding: 15px }
.product-ctn .product-infos .product-name::after { margin: 10px 0 0 0 }
.product-ctn .product-infos .product-name a { height: auto; }
.product-ctn .product-infos .product-details .product-stock { margin:15px 0 0 0; position: static; }
@media (max-width: 991px) {
.product-ctn .product-combinations ul { padding: 20px 10px; text-align: center; }
.product-ctn .product-combinations ul .hover { top: 55px; }
.product-ctn .product-combinations li { display: inline-block; float: none; padding: 0 10px }
.product-ctn .product-combinations li > .inner { height: 35px; width: 35px; }
.product-ctn .product-combinations li > .inner .nb { height: 30px; line-height: 25px; width: 35px }
.product-ctn .product-combinations .alt li .hover { margin: 0 0 0 -27px; }
.product-ctn .product-combinations .alt li .hover .inner::before { left: 25px; }
.product-ctn .product-combinations .alt li + li .hover { margin: 0 0 0 -65px; }
.product-ctn .product-combinations .alt li + li .hover .inner::before { left: 65px }
.product-ctn .product-combinations .alt li + li + li .hover { margin: 0 0 0 -111px; }
.product-ctn .product-combinations .alt li + li + li .hover .inner::before { left: 110px; }
.product-ctn .product-combinations .alt li + li + li + li .hover { margin: 0 0 0 -140px; }
.product-ctn .product-combinations .alt li + li + li + li .hover .inner::before { left: 140px; }
.product-ctn .product-combinations .alt li + li + li + li + li .hover { margin: 0 0 0 -157px; }
.product-ctn .product-combinations .alt li + li + li + li + li .hover .inner::before { left: 155px; }
.product-ctn .product-combinations .alt li + li + li + li + li + li .hover { margin: 0 0 0 -193px; }
.product-ctn .product-combinations .alt li + li + li + li + li + li .hover .inner::before { left: 195px; }
}
@media (max-width: 580px) {
}
@media (max-width: 500px) {
}
/*************************************************************************************************************
************************************* PAGINATION ****************************************
**************************************************************************************************************/
#pagination {
display: block;
padding: 20px 0;
}
#pagination .pagination_previous {
color: #93959e;
font-size: 13px;
}
#pagination .pagination_previous > * {
background: #fff;
float: left;
padding: 10px 12px 10px 30px;
position: relative;
}
#pagination .pagination_previous > a { color: #333; }
#pagination .pagination_previous > * i {
position: absolute;
left: 10px;
}
#pagination .pagination_next {
color: #93959e;
font-size: 13px;
}
#pagination .pagination_next > * {
background: #fff;
float: right;
padding: 10px 30px 10px 12px;
position: relative;
}
#pagination .pagination_next > a { color: #333; }
#pagination .pagination_next > * i {
position: absolute;
right: 0px;
}
#pagination ul {
font-family: "OpenSans";
font-size: 13px;
font-weight: normal;
text-align: center;
}
#pagination ul li {
display: inline-block;
margin: 0 5px;
}
#pagination ul li a, #pagination ul li:hover a { text-decoration: none; }
#pagination ul li.active span span, #pagination ul li:hover a span { background: #2b2d36; border-color: #ed7b03; color: #fff }
#pagination ul li > a span, #pagination ul li > span span {
background: #fff;
color: #2b2d36;
display: block;
height: 100%;
padding: 10px 12px;
text-align: center;
}
#pagination ul li.active span { color: #2b2d36 }
/*************************************************************************************************************
************************************** POPOVER ******************************************
**************************************************************************************************************/
.popover {
border-radius: 0;
box-shadow: none;
padding: 0;
position: relative;
}
.popover i {
color: #5f616a;
margin-left: 5px;
padding-right: 0;
}
.popover .popover-content {
background: #fff;
bottom: 30px;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
color: #5f616a;
left: 50%;
font-size: 13px;
font-style: italic;
padding: 10px;
position: absolute;
opacity: 0;
transform: translateX(-50%);
-webkit-transform: translateX(-50%);
-moz-transform: translateX(-50%);
transition: all 0.3s ease 0s;
-webkit-transition: all 0.3s ease 0s;
-moz-transition: all 0.3s ease 0s;
max-width: 200px;
z-index: -1;
}
.popover-content:before {
background: #fff;
bottom: -8px;
content: "";
left: 50%;
margin: 0 0 0 -8px;
position: absolute;
height: 16px;
width: 16px;
transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-web-transform: rotate(-45deg);
z-index: -1;
}
.popover:hover .popover-content { opacity: 1; z-index: 3; }
.popover .popover-title {
background: #fff;
border: 0;
font-size: 18px;
font-weight: 700;
margin: 0 0 0 0;
text-transform: uppercase;
}
.popover li {
cursor: pointer;
}
/*************************************************************************************************************
************************************** FANCYBOX *****************************************
@ -766,22 +664,6 @@ body .fancybox-overlay {
.fancybox-overlay .fancybox-close { right: 0 !important }
}
/*************************************************************************************************************
************************************ LIGHTGALLERY ***************************************
**************************************************************************************************************/
.lg-backdrop { background-color: #fff }
.lg-toolbar { background-color: #363842; font-family: 'Oswald' }
.lg-actions .lg-next, .lg-actions .lg-prev {
background: #363842;
margin-top: -30px;
padding: 20px 10px;
}
.lg-sub-html { font-family: 'Oswald' }
.lg-outer .lg-thumb-outer { background-color: #363842 }
.lg-outer .lg-thumb-item { background: #fff; border-radius: 0; }
.lg-outer .lg-thumb-item.active, .lg-outer .lg-thumb-item:hover { border-color: #f25f0f }
.lg-outer .lg-thumb-item img { max-width: 100%; }
/*************************************************************************************************************
*************************************** ALERT *******************************************
**************************************************************************************************************/
@ -848,7 +730,7 @@ body .fancybox-overlay {
@media (max-width: 991px) {
.table-div .table-row { display: block; padding: 15px; }
.table-div .table-row > div { border: 0; font-size: 14px; padding: 0; }
.table-div .table-row strong { color: #f25f0f; display: block; font-size: 14px; font-weight: normal; margin: 10px 0 0 0; text-transform: uppercase; }
.table-div .table-row strong { color: #202020; display: block; font-size: 14px; font-family: 'ITCAvantGarde'; font-weight: normal; margin: 10px 0 0 0; text-transform: uppercase; }
.table-div .table-row .table-hide-info { max-height: 200px }
}
@media (max-width: 767px) {
@ -874,38 +756,38 @@ body .fancybox-overlay {
display: none;
}
.custom-select > span:before {
background-position: left -272px;
background-position: left -38px;
content: "";
height: 48px;
height: 38px;
left: 0;
position: absolute;
width: 5px;
z-index: 2;
}
.custom-select > span.open:before { background-position: left -145px }
.custom-select > span.open:before { background-position: left -147px }
.custom-select > span {
background-position: right -224px;
color: #363842;
background-position: right 0px;
color: #000;
cursor: pointer;
display: block;
font-size: 14px;
height: 48px;
line-height: 48px;
font-size: 13px;
height: 38px;
line-height: 38px;
overflow: hidden;
padding: 0 45px 0 15px;
padding: 0 45px 0 20px;
position: relative;
text-align: left;
text-overflow: ellipsis;
width: 100%;
white-space: nowrap;
z-index: 1;
}
.custom-select.disabled > span { cursor: not-allowed }
.custom-select > span.open { background-position: right -114px; color: #fff }
.custom-select > span.open { background-position: right -105px; color: #000 }
.custom-select > ul {
background: #fff;
border: 1px solid #dbdbdb;
display: none;
font-family: 'Oswald';
margin: -1px 0 0 0;
max-height: 300px;
overflow-y: auto;
@ -919,11 +801,13 @@ body .fancybox-overlay {
.custom-select > ul.open { display: block }
.custom-select > ul li {
color: #333;
font-size: 12px;
cursor: pointer;
padding: 8px 10px;
padding: 12px 10px;
text-align: left;
}
.custom-select > ul li:hover,
.custom-select > ul li.selected { background-color: #ddd }
.custom-select > ul li.selected { background-color: #f4f4f4 }
.custom-select > ul li input {
height: 30px;
width: 100%;
@ -952,9 +836,9 @@ body .fancybox-overlay {
/* Block */
.custom-checkbox:after {
background-color: #f1f1f1;
background-position: 20px -351px;
border: 2px solid #67686d;
background-color: #fff;
background-position: 0px -200px;
border: 1px solid #dbdbdb;
content: "";
cursor: pointer;
display: block;
@ -972,7 +856,7 @@ body .fancybox-overlay {
/* Inline */
.custom-checkbox.inline:before {
background-color: #fff;
background-position: 20px -351px;
background-position: 0px -200px;
border: 1px solid #dbdbdb;
content: "";
cursor: pointer;
@ -990,7 +874,7 @@ body .fancybox-overlay {
.custom-checkbox.inline:after { display: none }
.custom-checkbox.checked:before,
.custom-checkbox.checked:after,
.custom-checkbox.inline.checked:before { background-position: -14px -351px; }
.custom-checkbox.inline.checked:before { background-position: -9px -255px }
/* CustomRadio */
.custom-radio {
@ -1009,8 +893,8 @@ body .fancybox-overlay {
}
.custom-radio:before {
background-color: #f1f1f1;
background-position: 20px -351px;
border: 2px solid #cdced4;
background-position: -65px -255px;
border: 1px solid #cdced4;
border-radius: 50%;
content: "";
cursor: pointer;
@ -1026,7 +910,7 @@ body .fancybox-overlay {
}
.custom-radio.inline label { margin-bottom: 0; max-width: 75%; padding-left: 10px; }
.custom-radio.checked:before,
.custom-radio.inline.checked:before { background-position: -70px -351px; border-color: #67686d }
.custom-radio.inline.checked:before { background-position: -65px -224px }
.radio-box {
cursor: pointer;
}

View File

@ -854,7 +854,7 @@ button, input, textarea {
}
}
@media (min-width: 992px) and (max-width: 1199px) {
@media (min-width: 992px) and (max-width: 1320px) {
.hidden-md, .md-hidden {
display: none !important;
}
@ -901,7 +901,7 @@ button, input, textarea {
}
}
@media (min-width: 1200px) {
@media (min-width: 1321px) {
.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12,
.lg1, .lg2, .lg3, .lg4, .lg5, .lg6, .lg7, .lg8, .lg9, .lg10, .lg11, .lg12 {
float: left;

View File

@ -1,7 +1,11 @@
{if !isset($content_only) || !$content_only}
<footer id="footer">
</footer>
{if $page_name != 'category' && $page_name != 'index'}
<footer id="footer">
<div class="ctn">
{hook h='displayReassurance'}
</div>
</footer>
{/if}
{hook h='endBody'}
{/if}

View File

@ -19,9 +19,7 @@
<div class="ctn account">
<div class="row">
{include file="$tpl_dir./menu-account.tpl" active='history'}
<div class="md9">
<div class="md12">
<div class="box">
<div class="inner">
<h2 class="title">{l s='Your orders'}</h2>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -799,12 +799,12 @@ function updateCartSummary(json)
if (typeof(product_list[i].customizationQuantityTotal) !== 'undefined' && product_list[i].customizationQuantityTotal > 0)
{
$('#total_product_price_' + key_for_blockcart).html(formatCurrency(product_customization_total, currencyFormat, currencySign, currencyBlank));
$('#total_product_price_' + key_for_blockcart + ' .value').html(formatCurrency(product_customization_total, currencyFormat, currencySign, currencyBlank));
$('#cart_block_product_' + key_for_blockcart + ' .price').html(formatCurrency(product_customization_total, currencyFormat, currencySign, currencyBlank));
}
else
{
$('#total_product_price_' + key_for_blockcart).html(formatCurrency(product_total, currencyFormat, currencySign, currencyBlank));
$('#total_product_price_' + key_for_blockcart + ' .value').html(formatCurrency(product_total, currencyFormat, currencySign, currencyBlank));
$('#cart_block_product_' + key_for_blockcart + ' .price').html(formatCurrency(product_total, currencyFormat, currencySign, currencyBlank));
}
@ -819,21 +819,23 @@ function updateCartSummary(json)
if (typeof(product_list[i].customizationQuantityTotal) !== 'undefined' && product_list[i].customizationQuantityTotal > 0)
$('#cart_quantity_custom_' + key_for_blockcart).html(product_list[i].customizationQuantityTotal);
nbrProducts += parseInt(product_list[i].quantity);
if(product_list[i].price_with_reduction != product_list[i].price_without_reduction)
{
$('#product_price_' + key_for_blockcart + ' .old-price').show();
$('#product_price_' + key_for_blockcart + ' .price').html(formatCurrency(product_list[i].price_with_reduction, currencyFormat, currencySign, currencyBlank));
$('#product_price_' + key_for_blockcart + ' .price').html(formatCurrency(product_list[i].price_with_reduction_without_tax, currencyFormat, currencySign, currencyBlank));
$('#product_price_' + key_for_blockcart + ' .old-price span').html(formatCurrency(product_list[i].price_without_reduction, currencyFormat, currencySign, currencyBlank));
}
else
{
$('#product_price_' + key_for_blockcart + ' .price').html(formatCurrency(product_list[i].price_with_reduction, currencyFormat, currencySign, currencyBlank));
$('#product_price_' + key_for_blockcart + ' .price').html(formatCurrency(product_list[i].price_with_reduction_without_tax, currencyFormat, currencySign, currencyBlank));
$('#product_price_' + key_for_blockcart + ' .old-price').hide();
}
}
$('.nb-total-boxes').html(nbrProducts);
$('.nb-total-bottles').html(nbrProducts*12);
// Update discounts
var discount_count = 0;
for(var e in json.discounts)
@ -912,11 +914,13 @@ function updateCartSummary(json)
{
$('#total_product').html(formatCurrency(json.total_products, currencyFormat, currencySign, currencyBlank));
$('#total_price').html(formatCurrency(json.total_price_without_tax, currencyFormat, currencySign, currencyBlank));
$('.nb-total-price').html(formatCurrency(json.total_price_without_tax, currencyFormat, currencySign, currencyBlank));
}
else
{
$('#total_product').html(formatCurrency(json.total_products_wt, currencyFormat, currencySign, currencyBlank));
$('#total_price').html(formatCurrency(json.total_price, currencyFormat, currencySign, currencyBlank));
$('.nb-total-price').html(formatCurrency(json.total_price, currencyFormat, currencySign, currencyBlank));
}
$('.price.ajax_cart_total').html(formatCurrency(json.total_price, currencyFormat, currencySign, currencyBlank));

View File

@ -249,17 +249,13 @@ $_LANG['order-address_da9d6ec2998a07c31ec9eb93c9f254ed'] = 'Votre adresse de fac
$_LANG['order-address_dd1f775e443ff3b9a89270713580a51b'] = 'Précédent';
$_LANG['order-address_ec211f7c20af43e742bf2570c3cb84f9'] = 'Ajouter';
$_LANG['order-address_f5bf48aa40cad7891eb709fcf1fde128'] = 'produit';
$_LANG['order-carrier_06933067aafd48425d67bcb01bba5cb6'] = 'Mettre à jour';
$_LANG['order-carrier_284b47b0bb63ae2df3b29f0e691d6fcf'] = 'Adresses';
$_LANG['order-carrier_390b4c95516a4b7faf97389ca46fc0c7'] = 'Utiliser la même adresse pour la facturation';
$_LANG['order-carrier_86024cad1e83101d97359d7351051156'] = 'produits';
$_LANG['order-carrier_a40cab5994f36d4c48103a22ca082e8f'] = 'Votre panier';
$_LANG['order-carrier_a4d3b161ce1309df1c4e25df28694b7b'] = 'ENVOYER';
$_LANG['order-carrier_b15e1100a6196acba01ef7aaa5b2a9e5'] = 'Ajouter une nouvelle adresse';
$_LANG['order-carrier_c20905e8fdd34a1bf81984e597436134'] = 'Continuer mes achats';
$_LANG['order-carrier_c9cc8cce247e49bae79f15173ce97354'] = 'Valider';
$_LANG['order-carrier_dd1f775e443ff3b9a89270713580a51b'] = 'Précédent';
$_LANG['order-carrier_ec211f7c20af43e742bf2570c3cb84f9'] = 'Ajouter';
$_LANG['order-carrier_f5bf48aa40cad7891eb709fcf1fde128'] = 'produit';
$_LANG['order-confirmation_241cc604e9c62701f4bc4a2e1848ec13'] = 'Voir l\'historique de vos commandes';
$_LANG['order-confirmation_4082ea29b4f196c4f60533500139725a'] = 'Suivre ma commande';
@ -410,7 +406,6 @@ $_LANG['order-opc_ea295188b69aa5e04810abcc38b2b2be'] = 'a été sélectionné';
$_LANG['order-opc_fe816ec4b30c11a39edfd8b0a4cfab49'] = 'erreur(s)';
$_LANG['order-payment_0eede552438475bdfe820c13f24c9399'] = 'Total TTC';
$_LANG['order-payment_3e306e2f574624a078025f742ff19f5f'] = 'Récapitulatif';
$_LANG['order-payment_4b78ac8eb158840e9638a3aeb26c4a9d'] = 'TVA';
$_LANG['order-payment_4fec535a4ddb75ad13046ad36094817f'] = 'Lire les Conditions générales de vente';
$_LANG['order-payment_7822369c3be561f920630115c0e28d54'] = 'Veuillez choisir un moyen de paiement.';
$_LANG['order-payment_7e0bf6d67701868aac3116ade8fea957'] = 'Valider ma commande';
@ -420,8 +415,6 @@ $_LANG['order-payment_a40cab5994f36d4c48103a22ca082e8f'] = 'Votre panier';
$_LANG['order-payment_a517c010c3051188c5155feeb04b2ff5'] = 'Merci d\'accepter les conditions générales de vente avant de confirmer votre commande';
$_LANG['order-payment_aaffa9bb2d08e8f918adb99903eb5caa'] = 'Récapitulatif & paiement';
$_LANG['order-payment_ad88a6c9e8c880f23639321d78ec859d'] = 'J\'ai lu les conditions générales de vente et j\'y adhère sans réserve. ';
$_LANG['order-payment_c20905e8fdd34a1bf81984e597436134'] = 'Continuer mes achats';
$_LANG['order-payment_dd1f775e443ff3b9a89270713580a51b'] = 'Précédent';
$_LANG['order-payment_de84190fb08e897e80d684034820286d'] = 'Commande avec obligation de paiement.';
$_LANG['order-payment_e4045598261988d9988c594243a9434d'] = 'Conditions générales de vente';
$_LANG['order-payment_e747da89afc98485bb90928d397e9821'] = 'Choisissez votre méthode de paiement';
@ -460,7 +453,6 @@ $_LANG['order-slip_d1a365ea7809ae5831c6d9f86886630c'] = 'Avoirs';
$_LANG['order-slip_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'Mon compte';
$_LANG['order-slip_e28cc69f9aa3068eddb76dd508b11da2'] = 'n°%s';
$_LANG['order-steps_065ab3a28ca4f16f55f103adc7d0226f'] = 'Livraison';
$_LANG['order-steps_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Identification';
$_LANG['order-steps_dae3b417a0fc4a49e851ce55d6d49551'] = 'Récapitulatif';
$_LANG['order-steps_f4d1ea475eaa85102e2b4e6d95da84bd'] = 'Paiement';
$_LANG['pagination_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Suivant';
@ -527,35 +519,43 @@ $_LANG['search_a09e4037d02313230a191007246e1694'] = '%d résultats ont été tro
$_LANG['shopping-cart-product-line_1d9baf077ee87921f57a8fe42d510b65'] = 'Soustraire';
$_LANG['shopping-cart-product-line_3601146c4e948c32b6424d2c0a7f0118'] = 'Prix';
$_LANG['shopping-cart-product-line_37a868bc6fa2df59fe98f6b8fbe2f270'] = 'd\'éco-participation';
$_LANG['shopping-cart-product-line_529ec26c6d82166df35771b810336f84'] = 'bouteilles';
$_LANG['shopping-cart-product-line_54d3b260d7e0e3377ff04b75bf564982'] = 'Dont';
$_LANG['shopping-cart-product-line_60ba37d72bc66daf8018cf689467238e'] = 'boites de';
$_LANG['shopping-cart-product-line_694e8d1f2ee056f98ee488bdc4982d73'] = 'Quantité';
$_LANG['shopping-cart-product-line_69d08bd5f8cf4e228930935c3f13e42f'] = 'En stock';
$_LANG['shopping-cart-product-line_6c957f72dc8cdacc75762f2cbdcdfaf2'] = 'Prix unitaire';
$_LANG['shopping-cart-product-line_9a9a97ca85af73f90515e72745f730f0'] = 'au lieu de';
$_LANG['shopping-cart-product-line_a59ba454f256953d318ac200a50d67d1'] = 'Offert !';
$_LANG['shopping-cart-product-line_b55197a49e8c4cd8c314bc2aa39d6feb'] = 'Hors stock';
$_LANG['shopping-cart-product-line_cd6aaf6d8287fd5a49122d36f0ff7024'] = 'Livraison différée';
$_LANG['shopping-cart-product-line_deb10517653c255364175796ace3553f'] = 'Produit';
$_LANG['shopping-cart-product-line_e716b72edf18038c04664e9b21569177'] = 'Vous devez avoir acheté au moins %d de ce produit.';
$_LANG['shopping-cart-product-line_ec211f7c20af43e742bf2570c3cb84f9'] = 'Ajouter';
$_LANG['shopping-cart-product-line_f2a6c498fb90ee345d997f888fce3b18'] = 'Supprimer';
$_LANG['shopping-cart_03ab340b3f99e03cff9e84314ead38c0'] = 'Quantité';
$_LANG['shopping-cart_042fc2839f45ea5207494ec3005f1aab'] = 'Vous avez un bon de réduction ?';
$_LANG['shopping-cart_0743a4c9b7922a0a2589d0d74c5ea231'] = 'Nombre total de boites';
$_LANG['shopping-cart_12a7a93d72ded50311b52c7d0a853e3c'] = 'Profitez de nos offres exclusives :';
$_LANG['shopping-cart_16f6c60cf0b840982bc1f595ac1641cb'] = 'Indiquez votre code';
$_LANG['shopping-cart_27ce7f8b5623b2e2df568d64cf051607'] = 'Stock';
$_LANG['shopping-cart_300225ee958b6350abc51805dab83c24'] = 'Continuer mes achats';
$_LANG['shopping-cart_30efeba472c0bc4d0747d0109948a714'] = 'Envoyer les produits disponibles en premier.';
$_LANG['shopping-cart_6c957f72dc8cdacc75762f2cbdcdfaf2'] = 'Prix unitaire';
$_LANG['shopping-cart_7494b947fb8d75b27f502865f1c0a45d'] = 'Valider';
$_LANG['shopping-cart_7e0bf6d67701868aac3116ade8fea957'] = 'Finaliser ma commande';
$_LANG['shopping-cart_8598ad4c32c2b992dda9fc8af53c0c03'] = 'Total produits TTC :';
$_LANG['shopping-cart_8075b1ab2d632743beeb6c5ce77a2c9c'] = 'Total produit HT';
$_LANG['shopping-cart_86024cad1e83101d97359d7351051156'] = 'produits';
$_LANG['shopping-cart_879f6b8877752685a966564d072f498f'] = 'Votre panier est vide';
$_LANG['shopping-cart_88b1b598df916ded43ff4abb0935ed7e'] = 'Détails du panier';
$_LANG['shopping-cart_96b0141273eabab320119c467cdcaf17'] = 'Total';
$_LANG['shopping-cart_97d3a45dcedf7f8483bdbf936047ff7e'] = 'Vider mon panier';
$_LANG['shopping-cart_a40cab5994f36d4c48103a22ca082e8f'] = 'Votre panier';
$_LANG['shopping-cart_deb10517653c255364175796ace3553f'] = 'Produit';
$_LANG['shopping-cart_e0aa021e21dddbd6d8cecec71e9cf564'] = 'ok';
$_LANG['shopping-cart_dfa7a51e61bf9fd7e5fe14e4861e759d'] = 'Nicotine';
$_LANG['shopping-cart_e93f43fa527c3534aeca987091d6c049'] = 'Total frais de port (TTC)';
$_LANG['shopping-cart_ebaee01719541f61281c16ba22ebbfde'] = 'Total TTC :';
$_LANG['shopping-cart_ecba3578d8cd65126d4a47c76b3c9c2d'] = 'Livraison gratuite !';
$_LANG['shopping-cart_f246a17c095de09e043cc1cb917481da'] = 'Total frais de port (HT)';
$_LANG['shopping-cart_f246a17c095de09e043cc1cb917481da'] = 'Total frais de port HT';
$_LANG['shopping-cart_f2a6c498fb90ee345d997f888fce3b18'] = 'Supprimer';
$_LANG['shopping-cart_f4e8b53a114e5a17d051ab84d326cae5'] = 'Total frais de port';
$_LANG['shopping-cart_f5bf48aa40cad7891eb709fcf1fde128'] = 'produit';

View File

@ -0,0 +1,16 @@
<!-- Block Advmenu module -->
{if $blocks}
<ul class="row">
{foreach from=$blocks item=block key=key}
<li class="md3 sm6 xs6 xxs6">
<span class="title">{$block.title}</span>
<span class="subtitle">{$block.subtitle}</span>
</li>
{/foreach}
<li class="md3 sm6 xs6 xxs6">
<span class="title hidden-lg hidden-md hidden-sm">{l s='Reviews' mod='advreassurance'}</span>
<img src="{$base_dir}img/verified-reviews.png" alt="">
</li>
</ul>
{/if}
<!-- /Block Advmenu module -->

View File

@ -0,0 +1,12 @@
<!-- Block Advmenu module -->
{if $blocks}
<ul class="row">
{foreach from=$blocks item=block key=key}
<li class="md4 sm4">
<span class="title">{$block.title}</span>
<span class="subtitle">{$block.subtitle}</span>
</li>
{/foreach}
</ul>
{/if}
<!-- /Block Advmenu module -->

View File

@ -0,0 +1,5 @@
<?php
global $_MODULE;
$_MODULE = array();
$_MODULE['<{advreassurance}pierimport>advreassurance-bottom_34e80a799d144cfe4af46815e103f017'] = 'Avis client';

View File

@ -2,54 +2,54 @@
global $_MODULE;
$_MODULE = array();
$_MODULE['<{bankwire}fanavenue>bankwire_05adcee99142c1a60fb38bb1330bbbc1'] = 'Virement bancaire';
$_MODULE['<{bankwire}fanavenue>bankwire_a246a8e9907530c4c36b8b4c37bbc823'] = 'Accepter les paiements par virement.';
$_MODULE['<{bankwire}fanavenue>bankwire_cbe0a99684b145e77f3e14174ac212e3'] = 'Êtes-vous certain de vouloir effacer vos données ?';
$_MODULE['<{bankwire}fanavenue>bankwire_0ea0227283d959415eda0cfa31d9f718'] = 'Le titulaire du compte et les informations bancaires doivent être configurés.';
$_MODULE['<{bankwire}fanavenue>bankwire_a02758d758e8bec77a33d7f392eb3f8a'] = 'Aucune devise disponible pour ce module';
$_MODULE['<{bankwire}fanavenue>bankwire_bfa43217dfe8261ee7cb040339085677'] = 'Les détails du compte sont requis';
$_MODULE['<{bankwire}fanavenue>bankwire_ccab155f173ac76f79eb192703f86b18'] = 'Le titulaire du compte est requis.';
$_MODULE['<{bankwire}fanavenue>bankwire_c888438d14855d7d96a2724ee9c306bd'] = 'Mise à jour réussie';
$_MODULE['<{bankwire}fanavenue>bankwire_4ffaad55a1d22c453e7c9bad67b0598f'] = 'Payer par virement bancaire';
$_MODULE['<{bankwire}fanavenue>bankwire_5dd532f0a63d89c5af0243b74732f63c'] = 'Coordonnées';
$_MODULE['<{bankwire}fanavenue>bankwire_857216dd1b374de9bf54068fcd78a8f3'] = 'Titulaire';
$_MODULE['<{bankwire}fanavenue>bankwire_3ec365dd533ddb7ef3d1c111186ce872'] = 'Détails';
$_MODULE['<{bankwire}fanavenue>bankwire_6b154cafbab54ba3a1e76a78c290c02a'] = 'Comme le code banque, l\'IBAN ou encore le BIC.';
$_MODULE['<{bankwire}fanavenue>bankwire_f9a1a1bb716cbae0503d351ea2af4b34'] = 'Adresse de la banque';
$_MODULE['<{bankwire}fanavenue>bankwire_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer';
$_MODULE['<{bankwire}fanavenue>validation_e2b7dec8fa4b498156dfee6e4c84b156'] = 'Cette méthode de paiement n\'est pas disponible.';
$_MODULE['<{bankwire}fanavenue>payment_execution_644818852b4dd8cf9da73543e30f045a'] = 'Retour à la commande';
$_MODULE['<{bankwire}fanavenue>payment_execution_6ff063fbc860a79759a7369ac32cee22'] = 'Processus de commande';
$_MODULE['<{bankwire}fanavenue>payment_execution_511e8b930b4d3d6002984c0373eb6d4b'] = 'Paiement par virement bancaire';
$_MODULE['<{bankwire}fanavenue>payment_execution_f1d3b424cd68795ecaa552883759aceb'] = 'Récapitulatif de commande';
$_MODULE['<{bankwire}fanavenue>payment_execution_879f6b8877752685a966564d072f498f'] = 'Votre panier est vide';
$_MODULE['<{bankwire}fanavenue>payment_execution_05adcee99142c1a60fb38bb1330bbbc1'] = 'Virement bancaire';
$_MODULE['<{bankwire}fanavenue>payment_execution_afda466128ee0594745d9f8152699b74'] = 'Vous avez choisi de régler par virement bancaire.';
$_MODULE['<{bankwire}fanavenue>payment_execution_c884ed19483d45970c5bf23a681e2dd2'] = 'Voici un bref récapitulatif de votre commande :';
$_MODULE['<{bankwire}fanavenue>payment_execution_e2867a925cba382f1436d1834bb52a1c'] = 'Le montant total de votre commande s\'élève à';
$_MODULE['<{bankwire}fanavenue>payment_execution_1f87346a16cf80c372065de3c54c86d9'] = 'TTC';
$_MODULE['<{bankwire}fanavenue>payment_execution_b28be4c423d93e02081f4e79fe2434e8'] = 'Nous acceptons plusieurs devises pour votre virement.';
$_MODULE['<{bankwire}fanavenue>payment_execution_a7a08622ee5c8019b57354b99b7693b2'] = 'Merci de choisir parmi les suivantes :';
$_MODULE['<{bankwire}fanavenue>payment_execution_a854d894458d66d92cabf0411c499ef4'] = 'Nous acceptons la devise suivante pour votre paiement :';
$_MODULE['<{bankwire}fanavenue>payment_execution_3dd021316505c0204989f984246c6ff1'] = 'Nos coordonnées bancaires seront affichées sur la page suivante.';
$_MODULE['<{bankwire}fanavenue>payment_execution_edd87c9059d88fea45c0bd6384ce92b9'] = 'Veuillez confirmer votre commande en cliquant sur « Je confirme ma commande ».';
$_MODULE['<{bankwire}fanavenue>payment_execution_46b9e3665f187c739c55983f757ccda0'] = 'Je confirme ma commande';
$_MODULE['<{bankwire}fanavenue>payment_execution_569fd05bdafa1712c4f6be5b153b8418'] = 'Autres moyens de paiement';
$_MODULE['<{bankwire}fanavenue>infos_c1be305030739396775edaca9813f77d'] = 'Ce module vous permet d\'accepter les paiements par virement bancaire.';
$_MODULE['<{bankwire}fanavenue>infos_60742d06006fde3043c77e6549d71a99'] = 'Si le client choisit ce mode de paiement, la commande passera à l\'état \"Paiement en attente\".';
$_MODULE['<{bankwire}fanavenue>infos_5fb4bbf993c23848433caf58e6b2816d'] = 'Par conséquent, vous devez confirmer manuellement la commande dès que vous recevrez le virement.';
$_MODULE['<{bankwire}fanavenue>payment_return_88526efe38fd18179a127024aba8c1d7'] = 'Votre commande sur %s a bien été enregistrée.';
$_MODULE['<{bankwire}fanavenue>payment_return_1f8cdc30326f1f930b0c87b25fdac965'] = 'Veuillez nous envoyer un virement bancaire avec :';
$_MODULE['<{bankwire}fanavenue>payment_return_b2f40690858b404ed10e62bdf422c704'] = 'Montant';
$_MODULE['<{bankwire}fanavenue>payment_return_5ca0b1b910f393ed1f9f6fa99e414255'] = 'à l\'ordre de';
$_MODULE['<{bankwire}fanavenue>payment_return_d717aa33e18263b8405ba00e94353cdc'] = 'suivant ces détails';
$_MODULE['<{bankwire}fanavenue>payment_return_984482eb9ff11e6310fef641d2268a2a'] = 'à cette banque';
$_MODULE['<{bankwire}fanavenue>payment_return_bb4ec5aac6864a05fcc220cccd8e82f9'] = 'N\'oubliez pas d\'indiquer votre numéro de commande %d dans l\'objet de votre virement.';
$_MODULE['<{bankwire}fanavenue>payment_return_1faa25b80a8d31e5ef25a78d3336606d'] = 'N\'oubliez pas d\'indiquer votre référence de commande %s dans le sujet de votre virement.';
$_MODULE['<{bankwire}fanavenue>payment_return_19c419a8a4f1cd621853376a930a2e24'] = 'Un e-mail contenant ces informations vous a été envoyé.';
$_MODULE['<{bankwire}fanavenue>payment_return_b9a1cae09e5754424e33764777cfcaa0'] = 'Votre commande sera expédiée dès réception de votre virement.';
$_MODULE['<{bankwire}fanavenue>payment_return_ca7e41a658753c87973936d7ce2429a8'] = 'Pour toute question ou information complémentaire, veuillez contacter notre';
$_MODULE['<{bankwire}fanavenue>payment_return_66fcf4c223bbf4c7c886d4784e1f62e4'] = 'service client';
$_MODULE['<{bankwire}fanavenue>payment_return_d15feee53d81ea16269e54d4784fa123'] = 'Nous avons rencontré un problème avec votre commande. Nous vous invitons à prendre contact avec notre';
$_MODULE['<{bankwire}fanavenue>payment_5e1695822fc5af98f6b749ea3cbc9b4c'] = 'Payer par virement bancaire';
$_MODULE['<{bankwire}fanavenue>payment_4e1fb9f4b46556d64db55d50629ee301'] = '(le traitement de la commande sera plus long)';
$_MODULE['<{bankwire}roykin>bankwire_05adcee99142c1a60fb38bb1330bbbc1'] = 'Virement bancaire';
$_MODULE['<{bankwire}roykin>bankwire_a246a8e9907530c4c36b8b4c37bbc823'] = 'Accepter les paiements par virement.';
$_MODULE['<{bankwire}roykin>bankwire_cbe0a99684b145e77f3e14174ac212e3'] = 'Êtes-vous certain de vouloir effacer vos données ?';
$_MODULE['<{bankwire}roykin>bankwire_0ea0227283d959415eda0cfa31d9f718'] = 'Le titulaire du compte et les informations bancaires doivent être configurés.';
$_MODULE['<{bankwire}roykin>bankwire_a02758d758e8bec77a33d7f392eb3f8a'] = 'Aucune devise disponible pour ce module';
$_MODULE['<{bankwire}roykin>bankwire_bfa43217dfe8261ee7cb040339085677'] = 'Les détails du compte sont requis';
$_MODULE['<{bankwire}roykin>bankwire_ccab155f173ac76f79eb192703f86b18'] = 'Le titulaire du compte est requis.';
$_MODULE['<{bankwire}roykin>bankwire_c888438d14855d7d96a2724ee9c306bd'] = 'Mise à jour réussie';
$_MODULE['<{bankwire}roykin>bankwire_4ffaad55a1d22c453e7c9bad67b0598f'] = 'Payer par virement bancaire';
$_MODULE['<{bankwire}roykin>bankwire_5dd532f0a63d89c5af0243b74732f63c'] = 'Coordonnées';
$_MODULE['<{bankwire}roykin>bankwire_857216dd1b374de9bf54068fcd78a8f3'] = 'Titulaire';
$_MODULE['<{bankwire}roykin>bankwire_3ec365dd533ddb7ef3d1c111186ce872'] = 'Détails';
$_MODULE['<{bankwire}roykin>bankwire_6b154cafbab54ba3a1e76a78c290c02a'] = 'Comme le code banque, l\'IBAN ou encore le BIC.';
$_MODULE['<{bankwire}roykin>bankwire_f9a1a1bb716cbae0503d351ea2af4b34'] = 'Adresse de la banque';
$_MODULE['<{bankwire}roykin>bankwire_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer';
$_MODULE['<{bankwire}roykin>validation_e2b7dec8fa4b498156dfee6e4c84b156'] = 'Cette méthode de paiement n\'est pas disponible.';
$_MODULE['<{bankwire}roykin>payment_execution_644818852b4dd8cf9da73543e30f045a'] = 'Retour à la commande';
$_MODULE['<{bankwire}roykin>payment_execution_6ff063fbc860a79759a7369ac32cee22'] = 'Processus de commande';
$_MODULE['<{bankwire}roykin>payment_execution_511e8b930b4d3d6002984c0373eb6d4b'] = 'Paiement par virement bancaire';
$_MODULE['<{bankwire}roykin>payment_execution_f1d3b424cd68795ecaa552883759aceb'] = 'Récapitulatif de commande';
$_MODULE['<{bankwire}roykin>payment_execution_879f6b8877752685a966564d072f498f'] = 'Votre panier est vide';
$_MODULE['<{bankwire}roykin>payment_execution_05adcee99142c1a60fb38bb1330bbbc1'] = 'Virement bancaire';
$_MODULE['<{bankwire}roykin>payment_execution_afda466128ee0594745d9f8152699b74'] = 'Vous avez choisi de régler par virement bancaire.';
$_MODULE['<{bankwire}roykin>payment_execution_c884ed19483d45970c5bf23a681e2dd2'] = 'Voici un bref récapitulatif de votre commande :';
$_MODULE['<{bankwire}roykin>payment_execution_e2867a925cba382f1436d1834bb52a1c'] = 'Le montant total de votre commande s\'élève à';
$_MODULE['<{bankwire}roykin>payment_execution_1f87346a16cf80c372065de3c54c86d9'] = 'TTC';
$_MODULE['<{bankwire}roykin>payment_execution_b28be4c423d93e02081f4e79fe2434e8'] = 'Nous acceptons plusieurs devises pour votre virement.';
$_MODULE['<{bankwire}roykin>payment_execution_a7a08622ee5c8019b57354b99b7693b2'] = 'Merci de choisir parmi les suivantes :';
$_MODULE['<{bankwire}roykin>payment_execution_a854d894458d66d92cabf0411c499ef4'] = 'Nous acceptons la devise suivante pour votre paiement :';
$_MODULE['<{bankwire}roykin>payment_execution_3dd021316505c0204989f984246c6ff1'] = 'Nos coordonnées bancaires seront affichées sur la page suivante.';
$_MODULE['<{bankwire}roykin>payment_execution_edd87c9059d88fea45c0bd6384ce92b9'] = 'Veuillez confirmer votre commande en cliquant sur « Je confirme ma commande ».';
$_MODULE['<{bankwire}roykin>payment_execution_46b9e3665f187c739c55983f757ccda0'] = 'Je confirme ma commande';
$_MODULE['<{bankwire}roykin>payment_execution_569fd05bdafa1712c4f6be5b153b8418'] = 'Autres moyens de paiement';
$_MODULE['<{bankwire}roykin>infos_c1be305030739396775edaca9813f77d'] = 'Ce module vous permet d\'accepter les paiements par virement bancaire.';
$_MODULE['<{bankwire}roykin>infos_60742d06006fde3043c77e6549d71a99'] = 'Si le client choisit ce mode de paiement, la commande passera à l\'état \"Paiement en attente\".';
$_MODULE['<{bankwire}roykin>infos_5fb4bbf993c23848433caf58e6b2816d'] = 'Par conséquent, vous devez confirmer manuellement la commande dès que vous recevrez le virement.';
$_MODULE['<{bankwire}roykin>payment_5e1695822fc5af98f6b749ea3cbc9b4c'] = 'Payer par virement bancaire';
$_MODULE['<{bankwire}roykin>payment_4e1fb9f4b46556d64db55d50629ee301'] = '(le traitement de la commande sera plus long)';
$_MODULE['<{bankwire}roykin>payment_return_88526efe38fd18179a127024aba8c1d7'] = 'Votre commande sur %s a bien été enregistrée.';
$_MODULE['<{bankwire}roykin>payment_return_1f8cdc30326f1f930b0c87b25fdac965'] = 'Veuillez nous envoyer un virement bancaire avec :';
$_MODULE['<{bankwire}roykin>payment_return_b2f40690858b404ed10e62bdf422c704'] = 'Montant';
$_MODULE['<{bankwire}roykin>payment_return_5ca0b1b910f393ed1f9f6fa99e414255'] = 'à l\'ordre de';
$_MODULE['<{bankwire}roykin>payment_return_d717aa33e18263b8405ba00e94353cdc'] = 'suivant ces détails';
$_MODULE['<{bankwire}roykin>payment_return_984482eb9ff11e6310fef641d2268a2a'] = 'à cette banque';
$_MODULE['<{bankwire}roykin>payment_return_bb4ec5aac6864a05fcc220cccd8e82f9'] = 'N\'oubliez pas d\'indiquer votre numéro de commande %d dans l\'objet de votre virement.';
$_MODULE['<{bankwire}roykin>payment_return_1faa25b80a8d31e5ef25a78d3336606d'] = 'N\'oubliez pas d\'indiquer votre référence de commande %s dans le sujet de votre virement.';
$_MODULE['<{bankwire}roykin>payment_return_19c419a8a4f1cd621853376a930a2e24'] = 'Un e-mail contenant ces informations vous a été envoyé.';
$_MODULE['<{bankwire}roykin>payment_return_b9a1cae09e5754424e33764777cfcaa0'] = 'Votre commande sera expédiée dès réception de votre virement.';
$_MODULE['<{bankwire}roykin>payment_return_ca7e41a658753c87973936d7ce2429a8'] = 'Pour toute question ou information complémentaire, veuillez contacter notre';
$_MODULE['<{bankwire}roykin>payment_return_66fcf4c223bbf4c7c886d4784e1f62e4'] = 'service client';
$_MODULE['<{bankwire}roykin>payment_return_d15feee53d81ea16269e54d4784fa123'] = 'Nous avons rencontré un problème avec votre commande. Nous vous invitons à prendre contact avec notre';

View File

@ -1,15 +1,14 @@
<div class="paiement-module radio-box">
<div class="shadow"></div>
<div class="inner valign-middle">
<div class="sm2">
<div class="sm1">
<div class="rounded-radio">
<input class="custom-input inline" type="radio" value="{$link->getModuleLink('bankwire', 'payment')|escape:'html':'UTF-8'}" name="paiement-method" />
</div>
</div>
<div class="sm4">
<img src="{$base_dir}img/payments/virement_bancaire.jpg" alt="" />
<div class="sm2">
<img src="{$base_dir}img/payments/logo-virement.png" alt="" />
</div>
<div class="sm6">
<div class="sm9">
{l s='Pay by bank wire' mod='bankwire'}
</div>
</div>

View File

@ -1,17 +1,19 @@
<!-- MODULE Block cart -->
<div class="shopping-cart-footer ctn animated-full">
<div class="row valign-middle">
<span class="header-title md4">{l s='Cart summary' mod='blockcart'}</span>
<div class="md3 resume">
<span class="header-title lg4 md3 sm12">{l s='Cart summary' mod='blockcart'}</span>
<div class="lg3 md4 sm5 resume">
<span class="title">{l s='Number of boxes' mod='blockcart'}</span>
<span class="nb-total-boxes">{$nb_total_products}</span> {l s='boxe(s), or' mod='blockcart'} <span class="nb-total-bottles">{$nb_total_products*12}</span> {l s='bottle(s)' mod='blockcart'}
</div>
<div class="md2 price">
<div class="md2 sm3 price">
<span class="title">{l s='Total' mod='blockcart'}</span>
<span class="nb-total-price">{$total}</span>
</div>
<div class="md3">
<a class="btn pull-right" href="{$link->getPageLink("$order_process", true)|escape:'html'}" title="{l s='View my shopping cart' mod='blockcart'}" rel="nofollow">{l s='Checkout' mod='blockcart'}</a>
<div class="md3 sm4">
<a class="btn pull-right" href="{$link->getPageLink("$order_process", true)|escape:'html'}" title="{l s='View my shopping cart' mod='blockcart'}" rel="nofollow">
<span>{l s='Checkout' mod='blockcart'}</span>
</a>
</div>
</div>
</div>

View File

@ -9,7 +9,7 @@
</li>
<li>
<a href="{$link->getPageLink('index', true, NULL, 'mylogout')|escape:'html'}" title="{l s='Logout'}">
<span>{l s='Logout'}</span>
<span>{l s='Logout' mod='blockmyaccount'}</span>
</a>
</li>
</ul>

View File

@ -12,3 +12,4 @@ $_MODULE['<{blockmyaccount}roykin>blockmyaccount_e45be0a0d4a0b62b15694c1a631e6e6
$_MODULE['<{blockmyaccount}roykin>blockmyaccount_63b1ba91576576e6cf2da6fab7617e58'] = 'Mes informations personnelles';
$_MODULE['<{blockmyaccount}roykin>blockmyaccount_95d2137c196c7f84df5753ed78f18332'] = 'Mes bons de réduction';
$_MODULE['<{blockmyaccount}roykin>blockmyaccount_c87aacf5673fada1108c9f809d354311'] = 'Déconnexion';
$_MODULE['<{blockmyaccount}roykin>blockmyaccount_0323de4f66a1700e2173e9bcdce02715'] = 'Deconnexion';

View File

@ -8,3 +8,4 @@ $_MODULE['<{blocksearch}roykin>blocksearch_be305c865235f417d9b4d22fcdf9f1c5'] =
$_MODULE['<{blocksearch}roykin>blocksearch_13348442cc6a27032d2b4aa28b75a5d3'] = 'Rechercher';
$_MODULE['<{blocksearch}roykin>blocksearch_ce1b00a24b52e74de46971b174d2aaa6'] = 'Rechercher un produit';
$_MODULE['<{blocksearch}roykin>blocksearch_5f075ae3e1f9d0382bb8c4632991f96f'] = 'Go';
$_MODULE['<{blocksearch}roykin>blocksearch-top_2e6811823e15e32cb509c2ca22d89d19'] = 'Entrez votre recherche';

View File

@ -1,15 +1,14 @@
<div class="paiement-module radio-box">
<div class="shadow"></div>
<div class="inner valign-middle">
<div class="sm2">
<div class="sm1">
<div class="rounded-radio">
<input class="custom-input inline" type="radio" value="{$link->getModuleLink('cheque', 'payment', [], true)|escape:'html':'UTF-8'}" name="paiement-method" />
</div>
</div>
<div class="sm4">
<img src="{$base_dir}img/payments/paiement_cheque.jpg" alt="" />
<div class="sm2">
<img src="{$base_dir}img/payments/logo-cheque.png" alt="" />
</div>
<div class="sm6">
<div class="sm9">
{l s='Pay by check' mod='cheque'}
</div>
</div>

View File

@ -54,7 +54,9 @@
</li>
</ul>
<p class="box-footer" id="cart_navigation">
<input type="submit" value="{l s='I confirm my order' mod='cheque'}" class="btn"/>
<button type="submit" class="btn">
<span>{l s='I confirm my order' mod='cheque'}</span>
</button>
<a href="{$link->getPageLink('order', true, NULL, "step=3")|escape:'html'}" class="btn btn2">
<span>{l s='Other payment methods' mod='cheque'}</span>
</a>

View File

@ -13,104 +13,82 @@
<!-- Choix des adresses -->
<div class="addresses-list row">
<div class="offset-lg1 lg10 md12">
<div class="offset-lg2 lg8 md12">
<div class="row">
<!-- Adresse de livraison -->
<div class="xs12 sm6 box"{if $cart->isVirtualCart()} style="display:none;"{/if}>
<div class="inner">
<h2 class="title">{l s ='Votre adresse de livraison'}</h2>
<div class="box-content">
<div id="address_delivery_form">
<select name="id_address_delivery" id="id_address_delivery" class="custom-input address_select form-control">
{foreach from=$addresses key=k item=address}
<option value="{$address.id_address|intval}"{if $address.id_address == $cart->id_address_delivery} selected="selected"{/if}>
{$address.alias|escape:'html':'UTF-8'}
</option>
{/foreach}
</select>
</div>
<div class="flex-ctn">
<!-- Adresse de livraison -->
<div class="xs12 sm6 box"{if $cart->isVirtualCart()} style="display:none;"{/if}>
<div class="inner">
<h2 class="title">{l s ='Votre adresse de livraison'}</h2>
<div class="box-content">
<div id="address_delivery_form">
<select name="id_address_delivery" id="id_address_delivery" class="custom-input address_select form-control">
{foreach from=$addresses key=k item=address}
<option value="{$address.id_address|intval}"{if $address.id_address == $cart->id_address_delivery} selected="selected"{/if}>
{$address.alias|escape:'html':'UTF-8'}
</option>
{/foreach}
</select>
</div>
<!-- Détails -->
<ul class="address item" id="address_delivery">
</ul>
<!-- Détails -->
<ul class="address item" id="address_delivery">
</ul>
</div>
</div>
</div>
</div>
<!-- Adresse de facturation -->
<div class="xs12 sm6 box">
<div class="inner">
<h2 class="title">{l s ='Votre adresse de facturation'}</h2>
<div class="box-content">
<p class="addressesAreEquals clearfix"{if $cart->isVirtualCart()} style="display:none;"{/if}>
<input type="checkbox" name="same" id="addressesAreEquals" class="custom-input inline" value="1"{if $cart->id_address_invoice == $cart->id_address_delivery || $addresses|@count == 1} checked="checked"{/if} />
<label for="addressesAreEquals">{l s='Use the delivery address as the billing address.'}</label>
</p>
<div id="address_invoice_form">
{if $addresses|@count > 1}
<select name="id_address_invoice" id="id_address_invoice" class="custom-input address_select form-control">
{section loop=$addresses step=-1 name=address}
<option value="{$addresses[address].id_address|intval}"{if $addresses[address].id_address == $cart->id_address_invoice && $cart->id_address_delivery != $cart->id_address_invoice} selected="selected"{/if}>
{$addresses[address].alias|escape:'html':'UTF-8'}
</option>
{/section}
</select>
{else}
{l s='Vous n\'avez qu\'une adresse disponible dans votre compte.'}
<a href="{$link->getPageLink('address', true, NULL, "back={$back_order_page}?step=1&select_address=1{if $back}&mod={$back}{/if}")|escape:'html':'UTF-8'}" title="{l s='Add'}" class="add-address">
{l s='Ajouter une adresse'}
</a>
{/if}
<!-- Adresse de facturation -->
<div class="xs12 sm6 box">
<div class="inner">
<h2 class="title">{l s ='Votre adresse de facturation'}</h2>
<div class="box-content">
<!-- Détails -->
<ul class="address alternate_item{if $cart->isVirtualCart()} full_width{/if}" id="address_invoice">
</ul>
</div>
<!-- Détails -->
<ul class="address alternate_item{if $cart->isVirtualCart()} full_width{/if}" id="address_invoice">
</ul>
</div>
</div>
</div>
</div>
<!-- Transporteurs -->
<div class="carriers-list">
<div class="inner">
<h2 class="title">{l s ='Choisissez votre méthode de livraison'}</h2>
<div id="order_carrier_contaier">
{include file="$tpl_dir./ajax-order-carrier.tpl"}
</div>
</div>
</div>
<div class="message">
<h2>{l s='Leave a message'}</h2>
<div>
<p>{l s='If you would like to add a comment about your order, please write it in the field below.'}</p>
<textarea class="form-control" name="message" id="message">{strip}
{if isset($oldMessage)}{$oldMessage|escape:'html':'UTF-8'}{/if}
{/strip}</textarea>
</div>
</div>
<div class="hidden">
<input type="hidden" class="hidden" name="step" value="3" />
<input type="hidden" name="back" value="{$back}" />
</div>
<!-- Boutons de navigation -->
<p class="cart_navigation">
<button type="submit" name="processCarrier" class="btn pull-right">
<span>{l s='Save'}</span>
</button>
<a href="{$link->getPageLink($back_order_page, true, NULL, "{if $back}back={$back}{/if}")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn2">
<span>{l s='Continue Shopping'}</span>
</a>
</p>
</div>
</div>
<p class="address_add">
<a href="{$link->getPageLink('address', true, NULL, "back={$back_order_page}?step=1{if $back}&mod={$back}{/if}")|escape:'html':'UTF-8'}" title="{l s='Add'}" class="btn icon-left">
<i class="icon icon-plus"></i>
<span>{l s='Add a new address'}</span>
</a>
</p>
<!-- Transporteurs -->
<div class="box">
<div class="inner">
<h2 class="title">{l s ='Choisissez votre méthode de livraison'}</h2>
<div class="box-content">
<div id="order_carrier_contaier">
{include file="$tpl_dir./ajax-order-carrier.tpl"}
</div>
</div>
</div>
</div>
<div class="hidden">
<input type="hidden" class="hidden" name="step" value="3" />
<input type="hidden" name="back" value="{$back}" />
</div>
<!-- Boutons de navigation -->
<p class="cart_navigation">
<button type="submit" name="processCarrier" class="btn icon-right pull-right">
<i class="icon icon-arrow-right"></i>
<span>{l s='Save'}</span>
</button>
<a href="{$link->getPageLink($back_order_page, true, NULL, "{if $back}back={$back}{/if}")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn2 icon-left">
<i class="icon icon-arrow-left"></i>
<span>{l s='Continue Shopping'}</span>
</a>
</p>
</form>
</div>
</section>
@ -137,6 +115,5 @@
{addJsDef addressUrlAdd=$smarty.capture.addressUrlAdd}
{addJsDef formatedAddressFieldsValuesList=$formatedAddressFieldsValuesList}
{addJsDef opc=$opc|boolval}
{capture}<a class="link" href="{$smarty.capture.addressUrlAdd}" title="{l s='Update' js=1}">{l s='Update' js=1}</a>{/capture}
{addJsDefL name=liUpdate}{$smarty.capture.default|@addcslashes:'\''}{/addJsDefL}
{addJsDefL name=liUpdate}{/addJsDefL}
{/strip}

View File

@ -29,14 +29,12 @@
<p>{l s='Your order ID is:'} <span class="bold">{$id_order_formatted}</span> . {l s='Your order ID has been sent via email.'}</p>
<p class="cart_navigation exclusive">
<a class="btn" href="{$link->getPageLink('guest-tracking', true, NULL, "id_order={$reference_order|urlencode}&email={$email|urlencode}")|escape:'html':'UTF-8'}" title="{l s='Follow my order'}">
<i class="icon icon-arrow-left icon-left"></i>
<span>{l s='Follow my order'}</span>
</a>
</p>
{else}
<p class="cart_navigation exclusive">
<a class="btn icon-left" href="{$link->getPageLink('history', true)|escape:'html':'UTF-8'}" title="{l s='Go to your order history page'}">
<i class="icon icon-arrow-left"></i>
<a class="btn" href="{$link->getPageLink('history', true)|escape:'html':'UTF-8'}" title="{l s='Go to your order history page'}">
<span>{l s='View your order history'}</span>
</a>
</p>

View File

@ -30,8 +30,8 @@
</ul>
{if $invoice AND $invoiceAllowed}
<div class="pdf">
<a target="_blank" href="{$link->getPageLink('pdf-invoice', true)}?id_order={$order->id|intval}{if $is_guest}&amp;secure_key={$order->secure_key|escape:'html':'UTF-8'}{/if}">
<i class="icon icon-pdf"></i><span>{l s='Download your invoice as a PDF file.'}</span>
<a class="btn" target="_blank" href="{$link->getPageLink('pdf-invoice', true)}?id_order={$order->id|intval}{if $is_guest}&amp;secure_key={$order->secure_key|escape:'html':'UTF-8'}{/if}">
<span>{l s='Download your invoice as a PDF file.'}</span>
</a>
</div>
{/if}
@ -53,12 +53,10 @@
<div class="ctn account">
<div class="row">
{include file="$tpl_dir./menu-account.tpl" active='history'}
<div class="md9">
<div class="md12">
{if isset($order)}
<div class="box">
<div class="box offset-lg2 lg8 m12 clear">
<div class="inner">
<h2 class="title">{l s='Informations sur votre commande'}</h2>
<div class="box-content">
@ -69,7 +67,7 @@
<div class="md4 sm4 hidden-xs hidden-xxs">{l s='Date'}</div>
<div class="md4 sm4 hidden-xs hidden-xxs">{l s='Status'}</div>
<div class="hidden-md hidden-lg sm12 xs12 xxs12">{l s='Status'}</div>
<div class="hidden-sm hidden-md hidden-lg sm12 xs12 xxs12">{l s='Status'}</div>
</div>
{foreach from=$order_history item=state name="orderStates"}
<div class="table-row row{$smarty.foreach.orderStates.index % 2}">
@ -121,63 +119,64 @@
</div>
<!-- Adresses -->
<div class="addresses row clear">
<div class="md6">
<div class="box">
<div class="inner">
<h2 class="title">{l s='Shipping address'}</h2>
<div class="box-content">
<ul>
{foreach from=$dlv_adr_fields name=dlv_loop item=field_item}
{if $field_item eq "company" && isset($address_delivery->company)}
<li class="address_company">{$address_delivery->company|escape:'html':'UTF-8'}</li>
{elseif $field_item eq "address2" && $address_delivery->address2}
<li class="address_address2">{$address_delivery->address2|escape:'html':'UTF-8'}</li>
{elseif $field_item eq "phone_mobile" && $address_delivery->phone_mobile}
<li class="address_phone_mobile">{$address_delivery->phone_mobile|escape:'html':'UTF-8'}</li>
{else}
{assign var=address_words value=" "|explode:$field_item}
<li>
{foreach from=$address_words item=word_item name="word_loop"}{if !$smarty.foreach.word_loop.first} {/if}
<span class="address_{$word_item|replace:',':''}">
{$deliveryAddressFormatedValues[$word_item|replace:',':'']|escape:'html':'UTF-8'}
</span>
{/foreach}
</li>
{/if}
{/foreach}
</ul>
<div class="offset-lg2 lg8 m12">
<div class="addresses row clear">
<div class="md6 sm6">
<div class="box">
<div class="inner">
<h2 class="title">{l s='Shipping address'}</h2>
<div class="box-content">
<ul>
{foreach from=$dlv_adr_fields name=dlv_loop item=field_item}
{if $field_item eq "company" && isset($address_delivery->company)}
<li class="address_company">{$address_delivery->company|escape:'html':'UTF-8'}</li>
{elseif $field_item eq "address2" && $address_delivery->address2}
<li class="address_address2">{$address_delivery->address2|escape:'html':'UTF-8'}</li>
{elseif $field_item eq "phone_mobile" && $address_delivery->phone_mobile}
<li class="address_phone_mobile">{$address_delivery->phone_mobile|escape:'html':'UTF-8'}</li>
{else}
{assign var=address_words value=" "|explode:$field_item}
<li>
{foreach from=$address_words item=word_item name="word_loop"}{if !$smarty.foreach.word_loop.first} {/if}
<span class="address_{$word_item|replace:',':''}">
{$deliveryAddressFormatedValues[$word_item|replace:',':'']|escape:'html':'UTF-8'}
</span>
{/foreach}
</li>
{/if}
{/foreach}
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="md6">
<div class="box">
<div class="shadow"></div>
<div class="inner">
<h2 class="title">{l s='Invoice address'}</h2>
<div class="box-content">
<ul>
{foreach from=$inv_adr_fields name=inv_loop item=field_item}
{if $field_item eq "company" && isset($address_invoice->company)}
<li class="address_company">{$address_invoice->company|escape:'html':'UTF-8'}</li>
{elseif $field_item eq "address2" && $address_invoice->address2}
<li class="address_address2">{$address_invoice->address2|escape:'html':'UTF-8'}</li>
{elseif $field_item eq "phone_mobile" && $address_invoice->phone_mobile}
<li class="address_phone_mobile">{$address_invoice->phone_mobile|escape:'html':'UTF-8'}</li>
{else}
{assign var=address_words value=" "|explode:$field_item}
<li>
{foreach from=$address_words item=word_item name="word_loop"}{if !$smarty.foreach.word_loop.first} {/if}
<span class="address_{$word_item|replace:',':''}">
{$invoiceAddressFormatedValues[$word_item|replace:',':'']|escape:'html':'UTF-8'}
</span>
{/foreach}
</li>
{/if}
{/foreach}
</ul>
<div class="md6 sm6">
<div class="box">
<div class="inner">
<h2 class="title">{l s='Invoice address'}</h2>
<div class="box-content">
<ul>
{foreach from=$inv_adr_fields name=inv_loop item=field_item}
{if $field_item eq "company" && isset($address_invoice->company)}
<li class="address_company">{$address_invoice->company|escape:'html':'UTF-8'}</li>
{elseif $field_item eq "address2" && $address_invoice->address2}
<li class="address_address2">{$address_invoice->address2|escape:'html':'UTF-8'}</li>
{elseif $field_item eq "phone_mobile" && $address_invoice->phone_mobile}
<li class="address_phone_mobile">{$address_invoice->phone_mobile|escape:'html':'UTF-8'}</li>
{else}
{assign var=address_words value=" "|explode:$field_item}
<li>
{foreach from=$address_words item=word_item name="word_loop"}{if !$smarty.foreach.word_loop.first} {/if}
<span class="address_{$word_item|replace:',':''}">
{$invoiceAddressFormatedValues[$word_item|replace:',':'']|escape:'html':'UTF-8'}
</span>
{/foreach}
</li>
{/if}
{/foreach}
</ul>
</div>
</div>
</div>
</div>
@ -312,7 +311,7 @@
{convertPriceWithCurrency price=$product.unit_price_tax_excl currency=$currency}
{/if}
</div>
<div class="md{if $return_allowed}2{else}3{/if} sm12 xs12 xxs12 text-right">
<div class="md{if $return_allowed}2{else}3{/if} sm12 xs12 xxs12 product-price text-right">
<strong>{l s='Total price'} : </strong>
{if $group_use_tax}
{convertPriceWithCurrency price=$product.total_price_tax_incl currency=$currency}
@ -348,20 +347,20 @@
{/foreach}
<div class="table-row">
<div class="offset-md6 md4 sm4 xs7 xxs7">
<div class="offset-md5 md4 sm4 xs7 xxs7">
{l s='Items'}
</div>
<div class="md2 sm8 xs5 xxs5 text-right">
<div class="md3 sm8 xs5 xxs5 text-right">
{displayWtPriceWithCurrency price=$order->getTotalProductsWithTaxes() currency=$currency}
</div>
</div>
{if $order->total_discounts > 0}
<div class="table-row">
<div class="offset-md6 md4 sm4 xs7 xxs7">
<div class="offset-md5 md4 sm4 xs7 xxs7">
{l s='Total vouchers'}
</div>
<div class="md2 sm8 xs5 xxs5 text-right">
<div class="md3 sm8 xs5 xxs5 text-right">
- {displayWtPriceWithCurrency price=$order->total_discounts currency=$currency convert=1}
</div>
</div>
@ -369,29 +368,29 @@
{if $order->total_wrapping > 0}
<div class="table-row">
<div class="offset-md6 md4 sm4 xs7 xxs7">
<div class="offset-md5 md4 sm4 xs7 xxs7">
{l s='Total gift wrapping cost'}
</div>
<div class="md2 sm8 xs5 xxs5 text-right">
<div class="md3 sm8 xs5 xxs5 text-right">
{displayWtPriceWithCurrency price=$order->total_wrapping currency=$currency}
</div>
</div>
{/if}
<div class="table-row">
<div class="offset-md6 md4 sm4 xs7 xxs7">
<div class="offset-md5 md4 sm4 xs7 xxs7">
{l s='Shipping & handling'}
</div>
<div class="md2 sm8 xs5 xxs5 text-right">
<div class="md3 sm8 xs5 xxs5 text-right">
{displayWtPriceWithCurrency price=$order->total_shipping currency=$currency}
</div>
</div>
<div class="table-row">
<div class="offset-md6 md4 sm4 xs4 xxs4 total">
<div class="offset-md5 md4 sm4 xs4 xxs4 total">
{l s='Total'}
</div>
<div class="md2 sm8 xs8 xxs8 text-right price">
<div class="md3 sm8 xs8 xxs8 text-right price">
{displayWtPriceWithCurrency price=$order->total_paid currency=$currency}
</div>
</div>
@ -401,24 +400,26 @@
</div>
{if $return_allowed}
<div class="returns box clear">
<div class="inner">
<h2 class="title">{l s='Merchandise return'}</h2>
<div class="box-content">
<p>
{l s='If you wish to return one or more products, please mark the corresponding boxes and provide an explanation for the return. When complete, click the button below.'}
</p>
<div>
<label>{l s='Your message'} :</label>
<p class="form-group">
<textarea class="form-control" rows="8" name="returnText"></textarea>
</p>
<p class="box-footer">
<button type="submit" name="submitReturnMerchandise" class="btn btn2 pull-right">
<span>{l s='Make an RMA slip'}</span>
</button>
<input type="hidden" class="hidden" value="{$order->id|intval}" name="id_order" />
<div class="box offset-lg2 lg8 m12 clear">
<div class="returns box clear">
<div class="inner">
<h2 class="title">{l s='Merchandise return'}</h2>
<div class="box-content">
<p>
{l s='If you wish to return one or more products, please mark the corresponding boxes and provide an explanation for the return. When complete, click the button below.'}
</p>
<div>
<label>{l s='Your message'} :</label>
<p class="form-group">
<textarea class="form-control" rows="8" name="returnText"></textarea>
</p>
<p class="box-footer">
<button type="submit" name="submitReturnMerchandise" class="btn btn2 pull-right">
<span>{l s='Make an RMA slip'}</span>
</button>
<input type="hidden" class="hidden" value="{$order->id|intval}" name="id_order" />
</p>
</div>
</div>
</div>
</div>
@ -427,45 +428,45 @@
</form>
{if count($messages)}
<div class="returns box clear">
<div class="inner">
<h2 class="title">{l s='Messages'}</h2>
<div class="box-content">
<div class="table-div message">
<div class="table-head">
<div class="md4 hidden-sm hidden-xs hidden-xxs">{l s='From'}</div>
<div class="md8">{l s='Message'}</div>
</div>
{foreach from=$messages item=message name="messageList"}
<div class="table-row">
<div class="md4">
<strong>{l s='De'}</strong>
<span class="bold">
{if isset($message.elastname) && $message.elastname}
{$message.efirstname|escape:'html':'UTF-8'} {$message.elastname|escape:'html':'UTF-8'}
{elseif $message.clastname}
{$message.cfirstname|escape:'html':'UTF-8'} {$message.clastname|escape:'html':'UTF-8'}
{else}
{$shop_name|escape:'html':'UTF-8'}
{/if}
</span>
<br />
{dateFormat date=$message.date_add full=1}
</div>
<div class="md4">
<strong>{l s='Détail'}</strong>
{$message.message|escape:'html':'UTF-8'|nl2br}
</div>
<div class="box offset-lg2 lg8 m12 clear">
<div class="returns box clear">
<div class="inner">
<h2 class="title">{l s='Messages'}</h2>
<div class="box-content">
<div class="table-div message">
<div class="table-head">
<div class="md4 sm4 hidden-xs hidden-xxs">{l s='From'}</div>
<div class="md8 sm8">{l s='Message'}</div>
</div>
{/foreach}
{foreach from=$messages item=message name="messageList"}
<div class="table-row">
<div class="md4 sm4">
<span class="bold">
{if isset($message.elastname) && $message.elastname}
{$message.efirstname|escape:'html':'UTF-8'} {$message.elastname|escape:'html':'UTF-8'}
{elseif $message.clastname}
{$message.cfirstname|escape:'html':'UTF-8'} {$message.clastname|escape:'html':'UTF-8'}
{else}
{$shop_name|escape:'html':'UTF-8'}
{/if}
</span>
<br />
{dateFormat date=$message.date_add full=1}
</div>
<div class="md4 sm8">
{$message.message|escape:'html':'UTF-8'|nl2br}
</div>
</div>
{/foreach}
</div>
</div>
</div>
</div>
</div>
{/if}
<div class="box clear">
<div class="box offset-lg2 lg8 m12 clear">
<div class="inner">
<form action="{$link->getPageLink('order-detail', true)|escape:'html':'UTF-8'}" method="post" class="" id="sendOrderMessage">
<h2 class="title">{l s='Add a message'}</h2>

View File

@ -15,70 +15,52 @@
<div class="order-paiement ctn">
<div class="row">
<div class="md8 sm12">
<div class="box">
<div class="inner">
<h2 class="title">{l s='Please choose your payment method'}</h2>
<div class="box-content">
<div class="paiement clearfix">
{if $HOOK_PAYMENT}
{$HOOK_PAYMENT}
{else}
<p class="alert alert-warning">{l s='No payment modules have been installed.'}</p>
{/if}
</div>
<div class="lg8 md7 sm12">
<div class="paiement-list">
<h2 class="title clearfix"><span class="offset-md3 md9">{l s='Please choose your payment method'}</span></h2>
<div class="box-content">
<div class="paiement clearfix">
{if $HOOK_PAYMENT}
{$HOOK_PAYMENT}
{else}
<p class="alert alert-warning">{l s='No payment modules have been installed.'}</p>
{/if}
</div>
</div>
</div>
<!-- CGV -->
<div class="box">
<div class="inner">
<h3 class="title">{l s='Terms of service'}</h3>
<div class="box-content cgv">
<p class="checkbox clearfix">
<div class="cgv">
<h3 class="title clearfix"><span class="offset-md3 md9">{l s='Terms of service'}</h3>
<div class="box-content ">
<div class="checkbox row">
<div class="md3 sm1">
<input type="checkbox" name="cgv" id="cgv" class="custom-input inline" value="1" />
</div>
<div class="md9 sm11">
<label for="cgv">
{l s='I agree to the terms of service and will adhere to them unconditionally.'}<br />
<a href="{$link_conditions|escape:'html':'UTF-8'}?content_only=1" class="iframe" rel="nofollow">({l s='Read the terms of service'})</a>
<a href="{$link_conditions|escape:'html':'UTF-8'}?content_only=1" class="iframe" rel="nofollow">{l s='Read the terms of service'}</a>
</label>
</p>
</div>
</div>
<div class="validate-payment row">
<div class="offset-md3 md6">
<button type="submit" name="processAddress" class="btn">
<span>{l s='Proceed to checkout'}</span>
</button>
<span>{l s='Order with obligation to pay.'}</span>
</div>
</div>
</div>
</div>
</div>
<div class="md4 resume hidden-sm hidden-xs block">
<div class="inner clearfix">
<div class="resume-cart">
<h3>{l s='Cart resume'}</h3>
<div class="resume-products">
{foreach from=$products item=product name=productLoop}
<div class="product clearfix">
<div class="product-name row">
<span class="md8 xs8 xxs8">
{$product.cart_quantity} x {$product.name}
{if isset($product.attributes_small)}
<span class="product-attributes clearfix">
<span class="taille">{$product.attributes_small}</span>
</span>
{/if}
</span>
<span class="md4 xs4 xxs4">
{displayPrice price=$product.price_wt}<br />
<span class="barre">
{if ($product.price_without_specific_price) && $product.price_without_specific_price > $product.price_wt}
{displayPrice price=$product.price_without_specific_price}
{/if}
</span>
</span>
</div>
</div>
{/foreach}
</div>
<div class="resume-price clearfix">
<div class="lg4 md5 resume hidden-sm hidden-xs block">
<div class="resume-cart box">
<div class="inner">
<h3 class="title">{l s='Cart resume'}</h3>
<div class="resume-price box-content clearfix">
{if count($discounts)}
{foreach from=$discounts item=discount name=discountLoop}
<div class="discount row">
@ -102,34 +84,15 @@
<span class="md6 xs6 xxs6">{l s='Total shipping'} :</span>
<span class="md6 xs6 xxs6">{displayPrice price=$shippingCost}</span>
</div>
<div class="taxes row">
<span class="md6 xs6 xxs6">{l s='Tax'} :</span>
<span class="md6 xs6 xxs6">{displayPrice price=$total_tax}</span>
</div>
<div class="price row">
<span class="md6 xs6 xxs6">{l s='Total price'} :</span>
<span class="md6 xs6 xxs6">{displayPrice price=$total_price}</span>
<span class="md4 xs6 xxs6">{l s='Total price'} :</span>
<span class="md8 xs6 xxs6">{displayPrice price=$total_price}</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cart_navigation clear">
<div>
<span>{l s='Order with obligation to pay.'}</span>
<button type="submit" name="processAddress" class="btn icon-right">
<i class="icon icon-arrow-right"></i>
<span>{l s='Proceed to checkout'}</span>
</button>
</div>
<a href="{$link->getPageLink('order', true, NULL, "step=0")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn2 icon-left">
<i class="icon icon-arrow-left"></i>
<span>{l s='Continue Shopping'}</span>
</a>
</div>
</div>
</div>
</section>
</main>
@ -144,7 +107,7 @@
$inputCgv = $('.cgv input');
$checkedCgv = $inputCgv.is(':checked') ? true : false;
$buttonSubmit = $('.cart_navigation button');
$buttonSubmit = $('.validate-payment button');
$inputCgv.on('change', function() {
$checkedCgv = $(this).is(':checked') ? true : false;
@ -171,7 +134,6 @@
else
{
$form = $input.parent().prev('div.hidden').children('form');
$form.submit();
}
});

View File

@ -8,7 +8,7 @@
{/if}
<!-- Steps -->
<ul class="step clearfix" id="order_step">
<li class="xs3 col-xxs-3 {if $current_step=='summary'}step_current {elseif $current_step=='login'}step_done_last step_done{else}{if $current_step=='payment' || $current_step=='shipping' || $current_step=='address' || $current_step=='login'}step_done{else}step_todo{/if}{/if} first">
<li class="{if $current_step=='summary'}step_current {elseif $current_step=='login'}step_done_last step_done{else}{if $current_step=='payment' || $current_step=='shipping' || $current_step=='address' || $current_step=='login'}step_done{else}step_todo{/if}{/if} first">
{if $current_step=='payment' || $current_step=='shipping' || $current_step=='address' || $current_step=='login'}
<a href="{$link->getPageLink('order', true)}">
<span>01.</span> <span class="hidden-xs hidden-xxs">{l s='My cart'}</span>
@ -17,7 +17,7 @@
<span>01.</span> <span class="hidden-xs hidden-xxs">{l s='My cart'}</span>
{/if}
</li>
<li class="xs3 col-xxs-3 {if $current_step=='address'}step_current{elseif $current_step=='shipping'}step_done step_done_last{else}{if $current_step=='payment' || $current_step=='shipping'}step_done{else}step_todo{/if}{/if} third">
<li class="{if $current_step=='address'}step_current{elseif $current_step=='shipping'}step_done step_done_last{else}{if $current_step=='payment' || $current_step=='shipping'}step_done{else}step_todo{/if}{/if} third">
{if $current_step=='payment'}
<a href="{$link->getPageLink('order', true, NULL, "{$smarty.capture.url_back}&step=1")|escape:'html':'UTF-8'}">
<span>02.</span> <span class="hidden-xs hidden-xxs">{l s='Delivery'}</span>
@ -26,7 +26,7 @@
<span>02.</span> <span class="hidden-xs hidden-xxs">{l s='Delivery'}</span>
{/if}
</li>
<li id="step_end" class="xs3 col-xxs-3 {if $current_step=='payment'}step_current{else}step_todo{/if} last">
<li id="step_end" class="{if $current_step=='payment'}step_current{else}step_todo{/if} last">
<span>03.</span> <span class="hidden-xs hidden-xxs">{l s='Confirmation'}</span>
</li>
</ul>

View File

@ -1,4 +1,4 @@
<ul class="color_to_pick_list row">
<ul class="color_to_pick_list row valign-middle {if $colors_list|count > 3}alt{/if}">
{foreach from=$colors_list item=color key=key}
<!-- On récupère la quantité ajoutée par décli -->
@ -11,7 +11,7 @@
{assign var=quantity value='+'}
{/if}
<li class="md2{if $key !== false} filled{/if}">
<li class="md2 sm2{if $key !== false} filled{/if}">
<span class="title">{$color.name}</span>
<div class="inner" style="background: {$color.color}">
<span class="nb">{$quantity}</span>
@ -29,7 +29,7 @@
<span class="title-custom-qty">{l s='Fill your desire number of boxes'}</span>
<div class="custom-qty">
<input placeholder="{l s='24, 48, ...'}" type="text" value="" name="qty" />
<button type="button" class="custom-qty-btn btn">{l s='Ok'}</button>
<button type="button" class="custom-qty-btn btn"><span>{l s='Ok'}</span></button>
</div>
</div>
</div>

View File

@ -8,14 +8,17 @@
{foreach from=$products item=product name=products key=key}
{if $smarty.foreach.products.first && $category->hasBanner}
<div class="img-cat lg4 md4 sm4 xs6 xxs12"><img src="{$base_dir}img/c/banners/{$category->id}.jpg" alt="" /></div>
<div class="img-cat lg4 md6 sm6 xs6 xxs12"><img src="{$base_dir}img/c/banners/{$category->id}.jpg" alt="" /></div>
{/if}
{if $product.unit_price_ratio > 0}
{math equation="price / ratio" price=$product.price_tax_exc ratio=round($product.unit_price_ratio) assign=unitPrice}
{/if}
{math equation="price / ratio" price=$product.price ratio=round($product.unit_price_ratio) assign=unitPrice}
<div class="product-ctn cols animated-full lg{if isset($nbProduct)}{12/$nbProduct}{else}3{/if} md4 sm4 xs6 col-xxs-12{if $key%2} alt{/if}" itemscope itemtype="http://schema.org/Product">
<div class="product-ctn cols animated-full lg{if isset($nbProduct)}{12/$nbProduct}{else}3{/if} md6 sm6 xs6 col-xxs-12{if $key%2} alt{/if}" itemscope itemtype="http://schema.org/Product">
<div class="inner">
<div class="product-infos clearfix">
<div class="product-img-ctn md6">
<div class="product-img-ctn md6 sm5">
<!-- Image -->
<a class="product-img" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url">
<img class="img-responsive" src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{$product.name|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="image" />
@ -23,7 +26,7 @@
</div>
<!-- Infos produits -->
<div class="md6 lg-pl0">
<div class="md6 sm7 lg-pl0 md-pl0 sm-pl0">
<h5 class="product-name" itemprop="name">{$product.name|truncate:60:'...'|escape:'html':'UTF-8'}</h5>
<span class="product-packing">{l s='Sale by box of'} <span>{$product.nb_per_box}</span> {l s='bottles'}</span>
<div class="product-details">
@ -34,8 +37,10 @@
{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
<meta itemprop="price" content="{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}" />
{/if}
<span class="unit-price">{convertPrice price=$unitPrice} <span class="packing">/{$product.unity}</span></span>
{if isset($unitPrice)}
<span class="unit-price">{convertPrice price=$unitPrice} <span class="packing">/{$product.unity}</span></span>
{/if}
{foreach from=$product.features item=feature}
{if $feature.id_feature == 8}

View File

@ -1,27 +1,24 @@
<div id="product_{$product.id_product}_{$product.id_product_attribute}_{if $quantityDisplayed > 0}nocustom{else}0{/if}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}" class="table-row product-row">
<div class="inner valign-middle">
<div class="md1 xs3 image">
<a href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}">
<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'medium_default')|escape:'html':'UTF-8'}" alt="{$product.name|escape:'html':'UTF-8'}" />
</a>
<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'medium_default')|escape:'html':'UTF-8'}" alt="{$product.name|escape:'html':'UTF-8'}" />
</div>
<div class="md2 xs9 product-infos">
<strong>{l s='Product'} : </strong>
<a class="product-name" href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}">
{$product.name|escape:'html':'UTF-8'}
</a>
<span class="packing">{l s='Boxes of '}{l s='bottles'}
<span class="product-name">{$product.name|escape:'html':'UTF-8'}</span>
<span class="packing">{l s='Boxes of '} {$product.nb_per_box} {l s='bottles'}
</div>
<div class="product-combination md1 text-center">
<div class="product-combination md1 lg-text-center md-text-center">
{if isset($product.attributes_small) && $product.attributes_small}
<strong>{l s='Nicotine'} : </strong>
<a class="product-attributes" href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}">
{$product.attributes_small|escape:'html':'UTF-8'}
</a>
{/if}
</div>
<div id="product_price_{$product.id_product}_{$product.id_product_attribute}{if $quantityDisplayed > 0}_nocustom{/if}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}" class="md2 xs9 text-right">
<div id="product_price_{$product.id_product}_{$product.id_product_attribute}{if $quantityDisplayed > 0}_nocustom{/if}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}" class="md2 xs9 lg-text-right md-text-right">
<strong>{l s='Unit price'} : </strong>
{if !$priceDisplay}
<span class="price">{convertPrice price=$product.price_wt}</span>
@ -42,7 +39,7 @@
{/if}
</div>
<div class="md2 xs9 qty text-center">
<div class="md2 xs9 qty lg-text-center md-text-center">
<strong>{l s='Quantity'} : </strong>
{if isset($cannotModify) AND $cannotModify == 1 || isset($recap) AND $recap == 1}
<span>
@ -80,7 +77,7 @@
{/if}
</div>
<div class="product-stock md2 xs9 text-center">
<div class="product-stock md2 xs9 lg-text-center md-text-center">
{if $product.quantity_available < $product.cart_quantity}
{if isset($product.allow_oosp) && $product.allow_oosp}
{if isset($product.available_later) && $product.available_later}

View File

@ -7,29 +7,25 @@
{include file="$tpl_dir./page-heading.tpl" title=$smarty.capture.title type='order-process' currentStep='summary'}
<div id="shopping-cart">
<div id="shopping-cart"{if isset($empty)} class="empty"{/if}>
<!-- Panier vide -->
{if isset($empty)}
<div class="ctn">
{if !isset($recap)}<div class="ctn">{/if}
<p class="alert alert-warning">{l s='Your shopping cart is empty.'}</p>
<p class="cart_navigation">
<a
href="{if (isset($smarty.server.HTTP_REFERER) && strstr($smarty.server.HTTP_REFERER, 'order.php')) || isset($smarty.server.HTTP_REFERER) && strstr($smarty.server.HTTP_REFERER, 'order-opc') || !isset($smarty.server.HTTP_REFERER)}{$link->getPageLink('index')}{else}{$smarty.server.HTTP_REFERER|escape:'html':'UTF-8'|secureReferrer}{/if}"
class="continue btn btn2 icon-right"
title="{l s='Continue shopping'}">
<i class="icon icon-arrow-right"></i>
<a href="{$link->getPageLink(index)}" class="continue btn btn2" title="{l s='Continue shopping'}">
<span>{l s='Continue shopping'}</span>
</a>
</p>
</div>
{if !isset($recap)}</div>{/if}
{/if}
{/if}
{if !isset($empty)}
<div id="shopping-cart-products" class="table-div cart order-detail-content">
<div class="table-head clearfix">
<div class="ctn">
{if !isset($recap)}<div class="ctn">{/if}
<div class="offset-md1 md2 hidden-sm hidden-xs hidden-xxs">{l s='Product'}</div>
<div class="md1 hidden-sm hidden-xs hidden-xxs text-center">{l s='Nicotine'}</div>
<div class="md2 hidden-sm hidden-xs hidden-xxs text-right">{l s='Unit price'}</div>
@ -37,29 +33,25 @@
<div class="md2 hidden-sm hidden-xs hidden-xxs text-center">{l s='Stock'}</div>
<div class="md2 hidden-sm hidden-xs hidden-xxs text-right head-total">{l s='Total'}</div>
<div class="sm12 xs12 hidden-lg hidden-md">{l s='Orders details'}</div>
</div>
{if !isset($recap)}</div>{/if}
</div>
<div class="products">
<div class="ctn">
{if !isset($recap)}<div class="ctn">{/if}
<p style="display:none" id="emptyCartWarning" class="alert alert-warning">{l s='Your shopping cart is empty.'}</p>
{assign var='total_discounts_num' value="{if $total_discounts != 0}1{else}0{/if}"}
{assign var='use_show_taxes' value="{if $use_taxes && $show_taxes}2{else}0{/if}"}
{assign var='total_wrapping_taxes_num' value="{if $total_wrapping != 0}1{else}0{/if}"}
{assign var='odd' value=0}
{assign var='have_non_virtual_products' value=false}
{assign var='hasGuarentee' value=false}
<!-- Ligne(s) de produit -->
{foreach $products as $product}
{if $product.is_virtual == 0}
{assign var='have_non_virtual_products' value=true}
{/if}
{if $product.id_category_default == 8}
{assign var='hasGuarentee' value=true}
{/if}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
@ -84,17 +76,17 @@
{foreach $gift_products as $product}
{include file="$tpl_dir./shopping-cart-product-line.tpl" product=$product}
{/foreach}
</div>
{if !isset($recap)}</div>{/if}
</div>
</div>
<div class="ctn">
{if !isset($recap)}<div class="ctn">{/if}
<div id="shopping-cart-calcul" class="table-row row block">
{if $voucherAllowed}
<div class="lg5 md5">
<div class="lg5 md5">
{if $voucherAllowed}
{if $displayVouchers}
<div class="box">
<div class="lg12 md12 inner">
<div class="featured-voucher">
<div class="inner">
<p class="title" class="lg12 md12 title-offers">{l s='Take advantage of our exclusive offers:'}</p>
<div id="display_cart_vouchers">
{foreach $displayVouchers as $voucher}
@ -116,20 +108,24 @@
</div>
{/if}
<form action="{$link->getPageLink('order', true)}" method="post" id="voucher" class="form-inline">
<label>{l s='You have a voucher ?'}</label>
<label><span>{l s='You have a voucher ?'}</span></label>
<div class="inner">
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" placeholder="{l s='Enter your code'}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="btn"><span>{l s='OK'}</span></button>
<button type="submit" name="submitAddDiscount" class="btn"><span>{l s='Valider'}</span></button>
</div>
</form>
</div>
{/if}
</div>
{/if}
{/if}
{if !isset($recap)}
<a href="{$link->getPageLink('index')}" class="continue btn btn2 hidden-sm hidden-xs hidden-xxs" title="{l s='Continue shopping'}">
<span>{l s='Continue shopping'}</span>
</a>
{/if}
</div>
<div class="offset-lg1 lg6 md6 prices">
<div class="offset-lg2 lg5 md7 prices">
<div class="inner">
{if sizeof($discounts)}
<div class="line code-promo">
@ -137,10 +133,9 @@
<div class="md6">
{$discount.name}
</div>
<div class="md6">
<div class="md6 delete">
{if strlen($discount.code)}
<a href="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}?deleteDiscount={$discount.id_discount}" class="price_discount_delete" title="{l s='Delete'}">
<i class="icon icon-trash"></i>
</a>
{/if}
<span>{if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if}</span>
@ -151,12 +146,12 @@
<div class="line">
<div class="md6 sm6 xs6 xxs6">{l s='Total number of boxes'}</div>
<div class="nb-total-boxes md6 sm6 xs6 xxs6">{Context::getContext()->cart->nbProducts()}</div>
<div class="nb-total-boxes md6 sm6 xs6 xxs6"><span class="nb-total-boxes">{$productNumber}</span></div>
</div>
<div class="line">
<div class="md6 sm6 xs6 xxs6">{l s='Total price with taxes'}</div>
<div id="total_tax" class="md6 sm6 xs6 xxs6">{displayPrice price=$total_products_wt}</div>
<div class="md6 sm6 xs6 xxs6">{l s='Total products HT'}</div>
<div id="total_tax" class="md6 sm6 xs6 xxs6">{displayPrice price=$total_products}</div>
</div>
{if $total_shipping_tax_exc <= 0 && !isset($virtualCart)}
@ -185,36 +180,30 @@
{/if}
{/if}
{if $priceDisplay}
<div class="line">
<div class="label-total-price md6 sm6 xs6 xxs5">{l s='Total products HT'}</div>
<div id="total_price" class="md6 sm6 xs6 xxs7">{displayPrice price=$total_price_without_tax}</div>
</div>
{else}
<div class="line">
<div class="label-total-price md6 sm6 xs6 xxs5">{l s='Total products (tax incl.)'}</div>
<div id="total_price" class="md6 sm6 xs6 xxs7">{displayPrice price=$total_price}</div>
</div>
<div class="line total_price">
<div class="label-total-price md6 sm6 xs6 xxs5">{l s='Total products (tax incl.)'}</div>
<div id="total_price" class="md6 sm6 xs6 xxs7">{displayPrice price=$total_price}</div>
</div>
{if !isset($recap)}
<p class="cart_navigation clearfix">
{if !$opc}
<a href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&amp;back={$back}')|escape:'html':'UTF-8'}{else}{$link->getPageLink('order', true, NULL, 'step=1')|escape:'html':'UTF-8'}{/if}" class="btn standard-checkout" title="{l s='Proceed to checkout'}">
<span>{l s='Proceed to checkout'}</span>
</a>
{/if}
<a href="{$link->getPageLink('index')}" class="continue btn btn2 hidden-lg hidden-md" title="{l s='Continue shopping'}">
<span>{l s='Continue shopping'}</span>
</a>
<a href="{$link->getPageLink('order', true, NULL, 'emptyCart=1')|escape:'html':'UTF-8'}" class="empty-cart btn btn2" title="{l s='Continue shopping'}">
<span>{l s='Empty my cart'}</span>
</a>
</p>
{/if}
</div>
</div>
</div>
{if !isset($recap)}
<p class="cart_navigation clearfix">
{if !$opc}
<a href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&amp;back={$back}')|escape:'html':'UTF-8'}{else}{$link->getPageLink('order', true, NULL, 'step=1')|escape:'html':'UTF-8'}{/if}" class="btn icon-right standard-checkout" title="{l s='Proceed to checkout'}">
<i class="icon icon-arrow-right"></i>
<span>{l s='Proceed to checkout'}</span>
</a>
{/if}
<a href="{$link->getPageLink('index')}" class="continue btn btn2 icon-left" title="{l s='Continue shopping'}">
<i class="icon icon-arrow-left"></i>
<span>{l s='Continue shopping'}</span>
</a>
</p>
{/if}
</div>
{if !isset($recap)}</div>{/if}
{if $show_option_allow_separate_package}
<p>