This commit is contained in:
Vincent Augagneur
2013-12-06 10:17:12 +01:00
26 changed files with 2124 additions and 1682 deletions
@@ -94,7 +94,7 @@
{/if}
{/foreach}
<div class="panel-footer">
<button type="button" name="cancel" class="btn btn-default">
<button type="submit" name="cancel" class="btn btn-default">
<i class="icon-remove"></i>
{l s='Cancel'}
</button>
+8
View File
@@ -153,6 +153,10 @@ class CategoryCore extends ObjectModel
{
if (!isset($this->level_depth))
$this->level_depth = $this->calcLevelDepth();
if ($this->is_root_category)
$this->id_parent = (int)Configuration::get('PS_ROOT_CATEGORY');
$ret = parent::add($autodate, $null_values);
if (Tools::isSubmit('checkBoxShopAsso_category'))
foreach (Tools::getValue('checkBoxShopAsso_category') as $id_shop => $value)
@@ -185,6 +189,10 @@ class CategoryCore extends ObjectModel
{
if ($this->id_parent == $this->id)
throw new PrestaShopException('a category cannot be it\'s own parent');
if ($this->is_root_category)
$this->id_parent = (int)Configuration::get('PS_ROOT_CATEGORY');
// Update group selection
$this->updateGroup($this->groupBox);
$this->level_depth = $this->calcLevelDepth();
+2 -1
View File
@@ -314,7 +314,8 @@ class ConfigurationCore extends ObjectModel
$result = true;
foreach ($values as $lang => $value)
{
if ($value === Configuration::get($key, $lang, $id_shop_group, $id_shop))
$stored_value = Configuration::get($key, $lang, $id_shop_group, $id_shop);
if ((!is_numeric($value) && $value === $stored_value) || (is_numeric($value) && $value == $stored_value))
continue;
// If key already exists, update value
+20 -21
View File
@@ -421,28 +421,27 @@ class ToolsCore
if (is_object($currency) && $currency->id && !$currency->deleted && $currency->isAssociatedToShop())
$cookie->id_currency = (int)$currency->id;
}
if ((int)$cookie->id_currency)
{
$currency = Currency::getCurrencyInstance((int)$cookie->id_currency);
if (is_object($currency) && (int)$currency->id && (int)$currency->deleted != 1 && $currency->active)
if ($currency->isAssociatedToShop())
return $currency;
else
{
// get currency from context
$currency = Shop::getEntityIds('currency', Context::getContext()->shop->id);
if (isset($currency[0]) && $currency[0]['id_currency'])
{
$cookie->id_currency = $currency[0]['id_currency'];
return Currency::getCurrencyInstance((int)$cookie->id_currency);
}
}
}
$currency = Currency::getCurrencyInstance(Configuration::get('PS_CURRENCY_DEFAULT'));
if (is_object($currency) && $currency->id)
$cookie->id_currency = (int)$currency->id;
if ((int)$cookie->id_currency)
$currency = Currency::getCurrencyInstance((int)$cookie->id_currency);
if (is_object($currency) && (int)$currency->id && (int)$currency->deleted != 1 && $currency->active)
{
$cookie->id_currency = (int)$currency->id;
if ($currency->isAssociatedToShop())
return $currency;
else
{
// get currency from context
$currency = Shop::getEntityIds('currency', Context::getContext()->shop->id, true, true);
if (isset($currency[0]) && $currency[0]['id_currency'])
{
$cookie->id_currency = $currency[0]['id_currency'];
return Currency::getCurrencyInstance((int)$cookie->id_currency);
}
}
}
return $currency;
}
@@ -2679,7 +2678,7 @@ exit;
'iso_lang' => Tools::strtolower(isset($params['iso_lang']) ? $params['iso_lang'] : Context::getContext()->language->iso_code),
'iso_code' => Tools::strtolower(isset($params['iso_country']) ? $params['iso_country'] : Country::getIsoById(Configuration::get('PS_COUNTRY_DEFAULT'))),
'shop_url' => isset($params['shop_url']) ? $params['shop_url'] : Tools::getShopDomain(),
'mail' => isset($params['email']) ? $params['email'] : Configuration::get('email')
'mail' => isset($params['email']) ? $params['email'] : Configuration::get('PS_SHOP_EMAIL')
));
$protocols = array('https');
+195 -13
View File
@@ -145,7 +145,19 @@ class AdminImportControllerCore extends AdminController
'shop' => array(
'label' => $this->l('ID / Name of shop'),
'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.'),
)
),
'advanced_stock_management' => array(
'label' => $this->l('Advanced Stock Management'),
'help' => $this->l('Enable Advanced Stock Management on product (0 = No, 1 = Yes)')
),
'depends_on_stock' => array(
'label' => $this->l('Depends On Stock'),
'help' => $this->l('0 = Use quantity set in product, 1 = Use quantity from Warehouse')
),
'warehouse' => array(
'label' => $this->l('Warehouse'),
'help' => $this->l('ID of the warehouse to set as storeage')
),
);
self::$default_values = array(
@@ -160,6 +172,8 @@ class AdminImportControllerCore extends AdminController
'minimal_quantity' => 1,
'weight' => 0,
'default_on' => 0,
'advanced_stock_management' => 0,
'depends_on_stock' => 0,
);
break;
@@ -255,11 +269,22 @@ class AdminImportControllerCore extends AdminController
'uploadable_files' => array('label' => $this->l('Uploadable files (0 = No, 1 = Yes)')),
'text_fields' => array('label' => $this->l('Text fields (0 = No, 1 = Yes)')),
'out_of_stock' => array('label' => $this->l('Action when out of stock')),
'advanced_stock_management' => array('label' => $this->l('Advanced stock management')),
'shop' => array(
'label' => $this->l('ID / Name of shop'),
'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.'),
)
),
'advanced_stock_management' => array(
'label' => $this->l('Advanced Stock Management'),
'help' => $this->l('Enable Advanced Stock Management on product (0 = No, 1 = Yes)')
),
'depends_on_stock' => array(
'label' => $this->l('Depends On Stock'),
'help' => $this->l('0 = Use quantity set in product, 1 = Use quantity from Warehouse')
),
'warehouse' => array(
'label' => $this->l('Warehouse'),
'help' => $this->l('ID of the warehouse to set as storeage')
),
);
self::$default_values = array(
@@ -287,7 +312,8 @@ class AdminImportControllerCore extends AdminController
'uploadable_files' => 0,
'text_fields' => 0,
'out_of_stock' => '2',
'advanced_stock_management' => '0',
'advanced_stock_management' => 0,
'depends_on_stock' => 0,
);
break;
@@ -1694,15 +1720,91 @@ class AdminImportControllerCore extends AdminController
Feature::cleanPositions();
}
// stock available
if (Shop::isFeatureActive())
// set advanced stock managment
if (isset($product->advanced_stock_management))
{
foreach ($shops as $shop)
StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, (int)$shop);
if ($product->advanced_stock_management != 1 && $product->advanced_stock_management != 0)
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management has incorrect value. Not set for product %1$s '),$product->name[$default_language_id]);
elseif (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $product->advanced_stock_management == 1)
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management is not enabled, can not enable on product %1$s '),$product->name[$default_language_id]);
else
$product->setAdvancedStockManagement($product->advanced_stock_management);
// automaticly disable depends on stock, if a_s_m set to disabled
if (StockAvailable::dependsOnStock($product->id) == 1 && $product->advanced_stock_management == 0)
StockAvailable::setProductDependsOnStock($product->id, 0);
}
else
StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, $this->context->shop->id);
// Check if warehouse exists
if ($product->warehouse)
{
if (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'))
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management is not enabled, warehouse not set on product %1$s '),$product->name[$default_language_id]);
else
{
if (Warehouse::exists($product->warehouse))
{
// Get already associated warehouses
$associated_warehouses_collection = WarehouseProductLocation::getCollection($product->id);
// Delete any entry in warehouse for this product
foreach ($associated_warehouses_collection as $awc)
$awc->delete();
$warehouse_location_entity = new WarehouseProductLocation();
$warehouse_location_entity->id_product = $product->id;
$warehouse_location_entity->id_product_attribute = 0;
$warehouse_location_entity->id_warehouse = $product->warehouse;
if (WarehouseProductLocation::getProductLocation($product->id, 0, $product->warehouse) !== false)
$warehouse_location_entity->update();
else
$warehouse_location_entity->save();
StockAvailable::synchronize($product->id);
}
else
$this->warnings[] = sprintf(Tools::displayError('Warehouse did not exists, can not set on product %1$s '),$product->name[$default_language_id]);
}
}
// stock available
if (isset($product->depends_on_stock))
{
if ($product->depends_on_stock != 0 && $product->depends_on_stock != 1)
$this->warnings[] = sprintf(Tools::displayError('Incorrect value for depends on stock for product %1$s '),$product->name[$default_language_id]);
elseif ((!$product->advanced_stock_management || $product->advanced_stock_management == 0) && $product->depends_on_stock == 1)
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management not enabled, can not set depends on stock %1$s '),$product->name[$default_language_id]);
else
StockAvailable::setProductDependsOnStock($product->id, $product->depends_on_stock);
// This code allows us to set qty and disable depends on stock
if (isset($product->quantity) && $product->depends_on_stock == 0)
{
if (Shop::isFeatureActive())
foreach ($shops as $shop)
StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, (int)$shop);
else
StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, $this->context->shop->id);
}
// elseif enable depends on stock and quantity, add quantity to stock
elseif (isset($product->quantity) && $product->depends_on_stock == 1)
{
// add stock
$stock_manager = StockManagerFactory::getManager();
$price = str_replace(',', '.', $product->wholesale_price);
if ($price == 0)
$price = 0.000001;
$price = round(floatval($price), 6);
$warehouse = new Warehouse($product->warehouse);
if ($stock_manager->addProduct((int)$product->id, 0, $warehouse, $product->quantity, 1, $price, true))
StockAvailable::synchronize((int)$product->id);
}
}
// if not depends_on_stock set, use normal qty
else
{
if (Shop::isFeatureActive())
foreach ($shops as $shop)
StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, (int)$shop);
else
StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, $this->context->shop->id);
}
}
$this->closeCsvFile($handle);
}
@@ -1886,11 +1988,11 @@ class AdminImportControllerCore extends AdminController
else
$this->errors[] = ($field_error !== true ? $field_error : '').(isset($lang_field_error) && $lang_field_error !== true ? $lang_field_error : '');
// fils groups attributes
// fills groups attributes
$id_attribute_group = $obj->id;
$groups_attributes[$key]['id'] = $id_attribute_group;
}
else // alreay exists
else // already exists
{
$id_attribute_group = $groups[$group];
$groups_attributes[$key]['id'] = $id_attribute_group;
@@ -2041,7 +2143,87 @@ class AdminImportControllerCore extends AdminController
VALUES ('.(int)$attribute_to_add.','.(int)$id_product_attribute.')');
}
StockAvailable::setQuantity($product->id, $id_product_attribute, (int)$info['quantity']);
// set advanced stock managment
if (isset($info['advanced_stock_management']))
{
if ($info['advanced_stock_management'] != 1 && $info['advanced_stock_management'] != 0)
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management has incorrect value. Not set for product with id %s '),$product->id);
elseif (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $info['advanced_stock_management'] == 1)
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management is not enabled, can not enable on product with id %s '),$product->id);
else
$product->setAdvancedStockManagement($info['advanced_stock_management']);
// automaticly disable depends on stock, if a_s_m set to disabled
if (StockAvailable::dependsOnStock($product->id) == 1 && $info['advanced_stock_management'] == 0)
StockAvailable::setProductDependsOnStock($product->id, 0,null,$id_product_attribute);
}
// Check if warehouse exists
if ($info['warehouse'])
{
if (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'))
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management is not enabled, warehouse not set on product with id %s '),$product->id);
else
{
if (Warehouse::exists($info['warehouse']))
{
$warehouse_location_entity = new WarehouseProductLocation();
$warehouse_location_entity->id_product = $product->id;
$warehouse_location_entity->id_product_attribute = $id_product_attribute;
$warehouse_location_entity->id_warehouse = $info['warehouse'];
if (WarehouseProductLocation::getProductLocation($product->id, $id_product_attribute, $info['warehouse']) !== false)
$warehouse_location_entity->update();
else
$warehouse_location_entity->save();
StockAvailable::synchronize($product->id);
}
else
$this->warnings[] = sprintf(Tools::displayError('Warehouse did not exists, can not set on product %1$s '),$product->name[$default_language_id]);
}
}
// stock available
if (isset($info['depends_on_stock']))
{
if ($info['depends_on_stock'] != 0 && $info['depends_on_stock'] != 1)
$this->warnings[] = sprintf(Tools::displayError('Incorrect value for depends on stock for product %1$s '),$product->name[$default_language_id]);
elseif ((!$info['advanced_stock_management'] || $info['advanced_stock_management'] == 0) && $info['depends_on_stock'] == 1)
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management not enabled, can not set depends on stock %1$s '),$product->name[$default_language_id]);
else
StockAvailable::setProductDependsOnStock($product->id, $info['depends_on_stock'],null,$id_product_attribute);
// This code allows us to set qty and disable depends on stock
if (isset($info['quantity']) && $info['depends_on_stock'] == 0)
{
if (Shop::isFeatureActive())
foreach ($shops as $shop)
StockAvailable::setQuantity((int)$product->id, $id_product_attribute, (int)$info['quantity'], (int)$shop);
else
StockAvailable::setQuantity((int)$product->id, $id_product_attribute, (int)$info['quantity'], $this->context->shop->id);
}
// elseif enable depends on stock and quantity, add quantity to stock
elseif (isset($info['quantity']) && $info['depends_on_stock'] == 1)
{
// add stock
$stock_manager = StockManagerFactory::getManager();
$price = str_replace(',', '.', $info['wholesale_price']);
if ($price == 0)
$price = 0.000001;
$price = round(floatval($price), 6);
$warehouse = new Warehouse($info['warehouse']);
if ($stock_manager->addProduct((int)$product->id, $id_product_attribute, $warehouse, (int)$info['quantity'], 1, $price, true))
StockAvailable::synchronize((int)$product->id);
}
}
// if not depends_on_stock set, use normal qty
else
{
if (Shop::isFeatureActive())
foreach ($shops as $shop)
StockAvailable::setQuantity((int)$product->id, $id_product_attribute, (int)$info['quantity'], (int)$shop);
else
StockAvailable::setQuantity((int)$product->id, $id_product_attribute, (int)$info['quantity'], $this->context->shop->id);
}
}
}
+47 -8
View File
@@ -35,14 +35,47 @@ class AdminLogsControllerCore extends AdminController
$this->noLink = true;
$this->fields_list = array(
'id_log' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
'employee' => array('title' => $this->l('Employee'), 'align' => 'center', 'havingFilter' => true),
'severity' => array('title' => $this->l('Severity (1-4)'), 'align' => 'center', 'class' => 'fixed-width-xs'),
'message' => array('title' => $this->l('Message')),
'object_type' => array('title' => $this->l('Object type'), 'class' => 'fixed-width-sm'),
'object_id' => array('title' => $this->l('Object ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
'error_code' => array('title' => $this->l('Error code'), 'align' => 'center', 'prefix' => '0x', 'class' => 'fixed-width-xs'),
'date_add' => array('title' => $this->l('Date'), 'width' => 150, 'align' => 'right', 'type' => 'datetime')
'id_log' => array(
'title' => $this->l('ID'),
'align' => 'center',
'class' => 'fixed-width-xs'
),
'employee' => array(
'title' => $this->l('Employee'),
'align' => 'left',
'havingFilter' => true,
'callback' => 'displayEmployee',
'callback_object' => $this
),
'severity' => array(
'title' => $this->l('Severity (1-4)'),
'align' => 'center',
'class' => 'fixed-width-xs'
),
'message' => array(
'title' => $this->l('Message')
),
'object_type' => array(
'title' => $this->l('Object type'),
'class' => 'fixed-width-sm'
),
'object_id' => array(
'title' => $this->l('Object ID'),
'align' => 'center',
'class' => 'fixed-width-xs'
),
'error_code' => array(
'title' => $this->l('Error code'),
'align' => 'center',
'prefix' => '0x',
'class' => 'fixed-width-xs'
),
'date_add' => array(
'title' => $this->l('Date'),
'width' => 150,
'align' => 'right',
'type' => 'datetime'
)
);
$this->fields_options = array(
@@ -81,6 +114,12 @@ class AdminLogsControllerCore extends AdminController
);
unset($this->toolbar_btn['new']);
}
public function displayEmployee($value, $tr)
{
$employee = new Employee((int)$tr['id_employee']);
return ImageManager::thumbnail($employee->getImage(), $this->table.'_mini_'.$value.'_'.$this->context->shop->id.'.'.$this->imageType, 45, $this->imageType).' '.$value;
}
}
?>
@@ -39,6 +39,10 @@ class AdminWarehousesControllerCore extends AdminController
$this->multishop_context = Shop::CONTEXT_ALL;
$this->fields_list = array(
'id_warehouse' => array(
'title' => $this->l('ID'),
'width' => 50,
),
'reference' => array(
'title' => $this->l('Reference'),
),
+28 -28
View File
@@ -1,28 +1,28 @@
Product ID*;Attribute (Name:Type:Position)*;Value (Value:Position)*;Supplier reference;Reference;EAN13;UPC;Wholesale price;Impact on price;Ecotax;Quantity;Minimal quantity;Impact on weight;Default (0 = No, 1 = Yes);Image position;Image URL;Delete existing images (0 = No, 1 = Yes);ID / Name of shop
1;Color:color:0, Disk space:select:1;Blue:0, 16GB:1;RF-Nano-Blue-16GB;RP-Nano-Blue-16GB;0000080446392;;100;40;;10;1;0;0;1;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Blue:0, 8GB:1;RF-Nano-Blue-8GB;RP-Nano-Blue-8GB;0000080446393;;80;0;;10;1;0;0;2;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Yellow:0, 16GB:1;RF-Nano-Yellow-16GB;RP-Nano-Yellow-16GB;0000080446394;;100;40;;10;1;0;0;3;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Yellow:0, 8GB:1;RF-Nano-Yellow-8GB;RP-Nano-Yellow-8GB;0000080446395;;80;0;;10;1;0;1;4;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Metal:0, 16GB:1;RF-Nano-Metal-16GB;RP-Nano-Metal-16GB;0000080446396;;100;40;;10;1;0;0;5;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Metal:0, 8GB:1;RF-Nano-Metal-8GB;RP-Nano-Metal-8GB;0000080446397;;80;0;;10;1;0;0;6;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Black:0, 16GB:1;RF-Nano-Black-16GB;RP-Nano-Black-16GB;0000080446398;;100;40;;10;1;0;0;7;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Black:0, 8GB:1;RF-Nano-Black-8GB;RP-Nano-Black-8GB;0000080446399;;80;0;;10;1;0;0;8;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Orange:0, 16GB:1;RF-Nano-Orange-16GB;RP-Nano-Orange-16GB;0000080446400;;100;40;;10;1;0;0;9;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Orange:0, 8GB:1;RF-Nano-Orange-8GB;RP-Nano-Orange-8GB;0000080446401;;80;0;;10;1;0;0;10;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Pink:0, 16GB:1;RF-Nano-Pink-16GB;RP-Nano-Pink-16GB;0000080446402;;100;40;;10;1;0;0;11;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Pink:0, 8GB:1;RF-Nano-Pink-8GB;RP-Nano-Pink-8GB;0000080446403;;80;0;;10;1;0;0;12;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Green:0, 16GB:1;RF-Nano-Green-16GB;RP-Nano-Green-16GB;0000080446404;;100;40;;10;1;0;0;13;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Green:0, 8GB:1;RF-Nano-Green-8GB;RP-Nano-Green-8GB;0000080446405;;80;0;;10;1;0;0;14;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Purple:0, 16GB:1;RF-Nano-Purple-16GB;RP-Nano-Purple-16GB;0000080446406;;100;40;;10;1;0;0;15;http://youdomain.com/img.jpg;1;
1;Color:color:0, Disk space:select:1;Purple:0, 8GB:1;RF-Nano-Purple-8GB;RP-Nano-Purple-8GB;0000080446407;;80;0;;10;1;0;0;16;http://youdomain.com/img.jpg;1;
2;Color:color:0;Metal:0;RF-Shuffle-Metal;RP-Shuffle-Metal;0685387080038;;40;0;;12;1;0;1;1;http://youdomain.com/img.jpg;1;
2;Color:color:0;Blue:0;RF-Shuffle-Blue;RP-Shuffle-Blue;0685387080039;;40;0;;12;1;0;0;2;http://youdomain.com/img.jpg;1;
2;Color:color:0;Pink:0;RF-Shuffle-Pink;RP-Shuffle-Pink;0685387080040;;40;0;;12;1;0;0;3;http://youdomain.com/img.jpg;1;
2;Color:color:0;Green:0;RF-Shuffle-Green;RP-Shuffle-Green;0685387080041;;40;0;;12;1;0;0;4;http://youdomain.com/img.jpg;1;
3;Color:color:0, Disk space:select:1, ICU:select:2;Metal:0, 80GB Parallel ATA Drive @ 4200 rpm:1, 1.60GHz Intel Core 2 Duo:2;RF-MacBookAir80GB-1.6MHz;RP-MacBookAir80GB-1.6MHz;0123456791230;;0;750;;10;1;0;0;1;http://youdomain.com/img.jpg;1;
3;Color:color:0, Disk space:select:1, ICU:select:2;Metal:0, 80GB Parallel ATA Drive @ 4200 rpm:1, 1.80GHz Intel Core 2 Duo:2;RF-MacBookAir80GB-1.6MHz;RP-MacBookAir80GB-1.6MHz;0123456791230;;0;0;;10;1;0;1;2;http://youdomain.com/img.jpg;1;
3;Color:color:0, Disk space:select:1, ICU:select:2;Metal:0, Optional 64GB solid-state drive:1, 1.60GHz Intel Core 2 Duo:2;RF-MacBookAir64GB-1.8MHz;RP-MacBookAir64GB-1.8MHz;0123456791230;;0;225;;10;1;0;0;3;http://youdomain.com/img.jpg;1;
3;Color:color:0, Disk space:select:1, ICU:select:2;Metal:0, Optional 64GB solid-state drive:1, 1.60GHz Intel Core 2 Duo:2;RF-MacBookAir64GB-1.8MHz;RP-MacBookAir64GB-1.8MHz;0123456791230;;0;975;;10;1;0;0;4;http://youdomain.com/img.jpg;1;
5;Disk space:select:1;8GB:0;RF-IpodTouch8GB;RP-IpodTouch8GB;8456123645123;;200;0;;10;1;0;1;1;http://youdomain.com/img.jpg;1;
5;Disk space:select:1;16GB:0;RF-IpodTouch16GB;RP-IpodTouch16GB;8456123645124;;250;75;;10;1;0;0;2;http://youdomain.com/img.jpg;1;
5;Disk space:select:1;32GB:0;RF-IpodTouch32GB;RP-IpodTouch32GB;8456123645125;;300;150;;10;1;0;0;3;http://youdomain.com/img.jpg;1;
Product ID*;Attribute (Name:Type:Position)*;Value (Value:Position)*;Supplier reference;Reference;EAN13;UPC;Wholesale price;Impact on price;Ecotax;Quantity;Minimal quantity;Impact on weight;Default (0 = No, 1 = Yes);Image position;Image URL;Delete existing images (0 = No, 1 = Yes);ID / Name of shop;Advanced Stock Managment;Depends on stock;Warehouse
1;Color:color:0, Disk space:select:1;Blue:0, 16GB:1;RF-Nano-Blue-16GB;RP-Nano-Blue-16GB;0000080446392;;100;40;;10;1;0;0;1;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Blue:0, 8GB:1;RF-Nano-Blue-8GB;RP-Nano-Blue-8GB;0000080446393;;80;0;;10;1;0;0;2;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Yellow:0, 16GB:1;RF-Nano-Yellow-16GB;RP-Nano-Yellow-16GB;0000080446394;;100;40;;10;1;0;0;3;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Yellow:0, 8GB:1;RF-Nano-Yellow-8GB;RP-Nano-Yellow-8GB;0000080446395;;80;0;;10;1;0;1;4;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Metal:0, 16GB:1;RF-Nano-Metal-16GB;RP-Nano-Metal-16GB;0000080446396;;100;40;;10;1;0;0;5;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Metal:0, 8GB:1;RF-Nano-Metal-8GB;RP-Nano-Metal-8GB;0000080446397;;80;0;;10;1;0;0;6;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Black:0, 16GB:1;RF-Nano-Black-16GB;RP-Nano-Black-16GB;0000080446398;;100;40;;10;1;0;0;7;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Black:0, 8GB:1;RF-Nano-Black-8GB;RP-Nano-Black-8GB;0000080446399;;80;0;;10;1;0;0;8;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Orange:0, 16GB:1;RF-Nano-Orange-16GB;RP-Nano-Orange-16GB;0000080446400;;100;40;;10;1;0;0;9;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Orange:0, 8GB:1;RF-Nano-Orange-8GB;RP-Nano-Orange-8GB;0000080446401;;80;0;;10;1;0;0;10;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Pink:0, 16GB:1;RF-Nano-Pink-16GB;RP-Nano-Pink-16GB;0000080446402;;100;40;;10;1;0;0;11;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Pink:0, 8GB:1;RF-Nano-Pink-8GB;RP-Nano-Pink-8GB;0000080446403;;80;0;;10;1;0;0;12;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Green:0, 16GB:1;RF-Nano-Green-16GB;RP-Nano-Green-16GB;0000080446404;;100;40;;10;1;0;0;13;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Green:0, 8GB:1;RF-Nano-Green-8GB;RP-Nano-Green-8GB;0000080446405;;80;0;;10;1;0;0;14;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Purple:0, 16GB:1;RF-Nano-Purple-16GB;RP-Nano-Purple-16GB;0000080446406;;100;40;;10;1;0;0;15;http://youdomain.com/img.jpg;1;0;0;0;
1;Color:color:0, Disk space:select:1;Purple:0, 8GB:1;RF-Nano-Purple-8GB;RP-Nano-Purple-8GB;0000080446407;;80;0;;10;1;0;0;16;http://youdomain.com/img.jpg;1;0;0;0;
2;Color:color:0;Metal:0;RF-Shuffle-Metal;RP-Shuffle-Metal;0685387080038;;40;0;;12;1;0;1;1;http://youdomain.com/img.jpg;1;0;0;0;
2;Color:color:0;Blue:0;RF-Shuffle-Blue;RP-Shuffle-Blue;0685387080039;;40;0;;12;1;0;0;2;http://youdomain.com/img.jpg;1;0;0;0;
2;Color:color:0;Pink:0;RF-Shuffle-Pink;RP-Shuffle-Pink;0685387080040;;40;0;;12;1;0;0;3;http://youdomain.com/img.jpg;1;0;0;0;
2;Color:color:0;Green:0;RF-Shuffle-Green;RP-Shuffle-Green;0685387080041;;40;0;;12;1;0;0;4;http://youdomain.com/img.jpg;1;0;0;0;
3;Color:color:0, Disk space:select:1, ICU:select:2;Metal:0, 80GB Parallel ATA Drive @ 4200 rpm:1, 1.60GHz Intel Core 2 Duo:2;RF-MacBookAir80GB-1.6MHz;RP-MacBookAir80GB-1.6MHz;0123456791230;;0;750;;10;1;0;0;1;http://youdomain.com/img.jpg;1;0;0;0;
3;Color:color:0, Disk space:select:1, ICU:select:2;Metal:0, 80GB Parallel ATA Drive @ 4200 rpm:1, 1.80GHz Intel Core 2 Duo:2;RF-MacBookAir80GB-1.6MHz;RP-MacBookAir80GB-1.6MHz;0123456791230;;0;0;;10;1;0;1;2;http://youdomain.com/img.jpg;1;0;0;0;
3;Color:color:0, Disk space:select:1, ICU:select:2;Metal:0, Optional 64GB solid-state drive:1, 1.60GHz Intel Core 2 Duo:2;RF-MacBookAir64GB-1.8MHz;RP-MacBookAir64GB-1.8MHz;0123456791230;;0;225;;10;1;0;0;3;http://youdomain.com/img.jpg;1;0;0;0;
3;Color:color:0, Disk space:select:1, ICU:select:2;Metal:0, Optional 64GB solid-state drive:1, 1.60GHz Intel Core 2 Duo:2;RF-MacBookAir64GB-1.8MHz;RP-MacBookAir64GB-1.8MHz;0123456791230;;0;975;;10;1;0;0;4;http://youdomain.com/img.jpg;1;0;0;0;
5;Disk space:select:1;8GB:0;RF-IpodTouch8GB;RP-IpodTouch8GB;8456123645123;;200;0;;10;1;0;1;1;http://youdomain.com/img.jpg;1;0;0;0;
5;Disk space:select:1;16GB:0;RF-IpodTouch16GB;RP-IpodTouch16GB;8456123645124;;250;75;;10;1;0;0;2;http://youdomain.com/img.jpg;1;0;0;0;
5;Disk space:select:1;32GB:0;RF-IpodTouch32GB;RP-IpodTouch32GB;8456123645125;;300;150;;10;1;0;0;3;http://youdomain.com/img.jpg;1;0;0;0;
1 Product ID* Attribute (Name:Type:Position)* Value (Value:Position)* Supplier reference Reference EAN13 UPC Wholesale price Impact on price Ecotax Quantity Minimal quantity Impact on weight Default (0 = No, 1 = Yes) Image position Image URL Delete existing images (0 = No, 1 = Yes) ID / Name of shop Advanced Stock Managment Depends on stock Warehouse
2 1 Color:color:0, Disk space:select:1 Blue:0, 16GB:1 RF-Nano-Blue-16GB RP-Nano-Blue-16GB 0000080446392 100 40 10 1 0 0 1 http://youdomain.com/img.jpg 1 0 0 0
3 1 Color:color:0, Disk space:select:1 Blue:0, 8GB:1 RF-Nano-Blue-8GB RP-Nano-Blue-8GB 0000080446393 80 0 10 1 0 0 2 http://youdomain.com/img.jpg 1 0 0 0
4 1 Color:color:0, Disk space:select:1 Yellow:0, 16GB:1 RF-Nano-Yellow-16GB RP-Nano-Yellow-16GB 0000080446394 100 40 10 1 0 0 3 http://youdomain.com/img.jpg 1 0 0 0
5 1 Color:color:0, Disk space:select:1 Yellow:0, 8GB:1 RF-Nano-Yellow-8GB RP-Nano-Yellow-8GB 0000080446395 80 0 10 1 0 1 4 http://youdomain.com/img.jpg 1 0 0 0
6 1 Color:color:0, Disk space:select:1 Metal:0, 16GB:1 RF-Nano-Metal-16GB RP-Nano-Metal-16GB 0000080446396 100 40 10 1 0 0 5 http://youdomain.com/img.jpg 1 0 0 0
7 1 Color:color:0, Disk space:select:1 Metal:0, 8GB:1 RF-Nano-Metal-8GB RP-Nano-Metal-8GB 0000080446397 80 0 10 1 0 0 6 http://youdomain.com/img.jpg 1 0 0 0
8 1 Color:color:0, Disk space:select:1 Black:0, 16GB:1 RF-Nano-Black-16GB RP-Nano-Black-16GB 0000080446398 100 40 10 1 0 0 7 http://youdomain.com/img.jpg 1 0 0 0
9 1 Color:color:0, Disk space:select:1 Black:0, 8GB:1 RF-Nano-Black-8GB RP-Nano-Black-8GB 0000080446399 80 0 10 1 0 0 8 http://youdomain.com/img.jpg 1 0 0 0
10 1 Color:color:0, Disk space:select:1 Orange:0, 16GB:1 RF-Nano-Orange-16GB RP-Nano-Orange-16GB 0000080446400 100 40 10 1 0 0 9 http://youdomain.com/img.jpg 1 0 0 0
11 1 Color:color:0, Disk space:select:1 Orange:0, 8GB:1 RF-Nano-Orange-8GB RP-Nano-Orange-8GB 0000080446401 80 0 10 1 0 0 10 http://youdomain.com/img.jpg 1 0 0 0
12 1 Color:color:0, Disk space:select:1 Pink:0, 16GB:1 RF-Nano-Pink-16GB RP-Nano-Pink-16GB 0000080446402 100 40 10 1 0 0 11 http://youdomain.com/img.jpg 1 0 0 0
13 1 Color:color:0, Disk space:select:1 Pink:0, 8GB:1 RF-Nano-Pink-8GB RP-Nano-Pink-8GB 0000080446403 80 0 10 1 0 0 12 http://youdomain.com/img.jpg 1 0 0 0
14 1 Color:color:0, Disk space:select:1 Green:0, 16GB:1 RF-Nano-Green-16GB RP-Nano-Green-16GB 0000080446404 100 40 10 1 0 0 13 http://youdomain.com/img.jpg 1 0 0 0
15 1 Color:color:0, Disk space:select:1 Green:0, 8GB:1 RF-Nano-Green-8GB RP-Nano-Green-8GB 0000080446405 80 0 10 1 0 0 14 http://youdomain.com/img.jpg 1 0 0 0
16 1 Color:color:0, Disk space:select:1 Purple:0, 16GB:1 RF-Nano-Purple-16GB RP-Nano-Purple-16GB 0000080446406 100 40 10 1 0 0 15 http://youdomain.com/img.jpg 1 0 0 0
17 1 Color:color:0, Disk space:select:1 Purple:0, 8GB:1 RF-Nano-Purple-8GB RP-Nano-Purple-8GB 0000080446407 80 0 10 1 0 0 16 http://youdomain.com/img.jpg 1 0 0 0
18 2 Color:color:0 Metal:0 RF-Shuffle-Metal RP-Shuffle-Metal 0685387080038 40 0 12 1 0 1 1 http://youdomain.com/img.jpg 1 0 0 0
19 2 Color:color:0 Blue:0 RF-Shuffle-Blue RP-Shuffle-Blue 0685387080039 40 0 12 1 0 0 2 http://youdomain.com/img.jpg 1 0 0 0
20 2 Color:color:0 Pink:0 RF-Shuffle-Pink RP-Shuffle-Pink 0685387080040 40 0 12 1 0 0 3 http://youdomain.com/img.jpg 1 0 0 0
21 2 Color:color:0 Green:0 RF-Shuffle-Green RP-Shuffle-Green 0685387080041 40 0 12 1 0 0 4 http://youdomain.com/img.jpg 1 0 0 0
22 3 Color:color:0, Disk space:select:1, ICU:select:2 Metal:0, 80GB Parallel ATA Drive @ 4200 rpm:1, 1.60GHz Intel Core 2 Duo:2 RF-MacBookAir80GB-1.6MHz RP-MacBookAir80GB-1.6MHz 0123456791230 0 750 10 1 0 0 1 http://youdomain.com/img.jpg 1 0 0 0
23 3 Color:color:0, Disk space:select:1, ICU:select:2 Metal:0, 80GB Parallel ATA Drive @ 4200 rpm:1, 1.80GHz Intel Core 2 Duo:2 RF-MacBookAir80GB-1.6MHz RP-MacBookAir80GB-1.6MHz 0123456791230 0 0 10 1 0 1 2 http://youdomain.com/img.jpg 1 0 0 0
24 3 Color:color:0, Disk space:select:1, ICU:select:2 Metal:0, Optional 64GB solid-state drive:1, 1.60GHz Intel Core 2 Duo:2 RF-MacBookAir64GB-1.8MHz RP-MacBookAir64GB-1.8MHz 0123456791230 0 225 10 1 0 0 3 http://youdomain.com/img.jpg 1 0 0 0
25 3 Color:color:0, Disk space:select:1, ICU:select:2 Metal:0, Optional 64GB solid-state drive:1, 1.60GHz Intel Core 2 Duo:2 RF-MacBookAir64GB-1.8MHz RP-MacBookAir64GB-1.8MHz 0123456791230 0 975 10 1 0 0 4 http://youdomain.com/img.jpg 1 0 0 0
26 5 Disk space:select:1 8GB:0 RF-IpodTouch8GB RP-IpodTouch8GB 8456123645123 200 0 10 1 0 1 1 http://youdomain.com/img.jpg 1 0 0 0
27 5 Disk space:select:1 16GB:0 RF-IpodTouch16GB RP-IpodTouch16GB 8456123645124 250 75 10 1 0 0 2 http://youdomain.com/img.jpg 1 0 0 0
28 5 Disk space:select:1 32GB:0 RF-IpodTouch32GB RP-IpodTouch32GB 8456123645125 300 150 10 1 0 0 3 http://youdomain.com/img.jpg 1 0 0 0
+8 -8
View File
@@ -1,8 +1,8 @@
ID;Active (0/1);Name *;Categories (x,y,z...);Price tax excluded or Price tax included;Tax rules ID;Wholesale price;On sale (0/1);Discount amount;Discount percent;Discount from (yyyy-mm-dd);Discount to (yyyy-mm-dd);Reference #;Supplier reference #;Supplier;Manufacturer;EAN13;UPC;Ecotax;Width;Height;Depth;Weight;Quantity;Minimal quantity;Visibility;Additional shipping cost;Unity;Unit price ratio;Short description;Description;Tags (x,y,z...);Meta title;Meta keywords;Meta description;URL rewritten;Text when in stock;Text when backorder allowed;Available for order (0 = No, 1 = Yes);Product available date;Product creation date;Show price (0 = No, 1 = Yes);Image URLs (x,y,z...);Delete existing images (0 = No, 1 = Yes);Feature(Name:Value:Position);Available online only (0 = No, 1 = Yes);Condition;Customizable (0 = No, 1 = Yes);Uploadable files (0 = No, 1 = Yes);Text fields (0 = No, 1 = Yes);Out_of_stock;Advanced stock management;ID / Name of shop
1;1;iPod Nano;iPods;100;1;80;1;;5.5;2013-06-01;2018-12-31;RP-demo_1;RF-demo_1;Applestore;Apple;1234567890123;;1;0.6;0.2;0.4;0.068357;160;1;;;;;<p>New design.</p>;<p>New design.</p>;apple, ipod, nano;Meta title-Nano;Meta keywords-Nano;Meta description-Nano;iPod-Nano;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-01;1;http://localhost/prestashop_1.5.6.0/img/p/1/5/15.jpg;0;;0;new;0;0;0;0;0;
2;1;iPod shuffle;iPods;60;1;40;1;;;2013-06-01;2018-12-31;RP-demo_2;RF-demo_2;Applestore;Apple;1234567890123;;1;0.1;0.1;0.1;0.027563;120;1;both;;;;<p>New design.</p>;<p>New design.</p>;ipod, shuffle;Meta title-Shuffle;Meta keywords-Shuffle;Meta description-Shuffle;iPod-shuffle;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-02;1;http://localhost/prestashop_1.5.6.0/img/p/2/3/23.jpg;0;;0;new;0;0;0;0;0;
3;1;MacBook Air;Laptops;1500;1;1000;1;100;;2013-06-01;2018-12-31;RP-demo_3;RF-demo_3;Applestore;Apple;1234567890123;;2;1.31;0.3;1;2.976846;400;1;catalog;;;;<p>New design.</p>;<p>New design.</p>;MacBook, Air;Meta title-McBookAir;Meta keywords-McBookAir;Meta description-McBookAir;MacBook-Air;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-03;1;http://localhost/prestashop_1.5.6.0/img/p/1/1.jpg;1;;0;new;0;0;0;0;0;
4;1;MacBook;Laptops;1150;1;750;1;;;2013-06-01;2018-12-31;RP-demo_4;RF-demo_4;Applestore;Apple;1234567890123;;2;1.31;0.3;1;4.454244;75;1;search;;;;<p>New design.</p>;<p>New design.</p>;MacBook, Pro;Meta title-McBookPro;Meta keywords-McBookPro;Meta description-McBookPro;MacBook;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-04;1;http://localhost/prestashop_1.5.6.0/img/p/6/6.jpg;1;;0;new;0;0;0;0;0;
5;1;iPod touch;iPods;240;1;150;1;;;2013-06-01;2018-12-31;RP-demo_5;RF-demo_5;Applestore;Apple;1234567890123;;1;0.6;0.2;0.4;0.194046;120;1;none;;;;<p>New design.</p>;<p>New design.</p>;Ipod touch;Meta title-IpodTouch;Meta keywords-IpodTouch;Meta description-IpodTouch;iPod-touch;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-05;1;http://localhost/prestashop_1.5.6.0/img/p/7/7.jpg;0;;1;used;0;0;0;0;0;
6;1;Belkin Leather Folio for iPod nano - Black / Chocolate;Accessories;25;1;150;1;;;2013-06-01;2018-12-31;RP-demo_6;RF-demo_6;Nippon Electronic Import;Belkin;1234567890123;;0;0.6;0.2;0.4;0.038588;25;1;;20;;;<p>New design.</p>;<p>New design.</p>;Folio, leather;Meta title-BelkinLeatherFolio;Meta keywords-BelkinLeatherFolio;Meta description-BelkinLeatherFolio;Belkin-Leather-Folio-for-iPod-nano---Black-Chocolate;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-06;1;http://localhost/prestashop_1.5.6.0/img/p/1/3/13.jpg;0;;1;refurbished;0;0;0;0;0;
7;1;Shure SE210 Sound-Isolating Earphones for iPod and iPhone;Accessories;125;2;80;1;;;2013-06-01;2018-12-31;RP-demo_7;RF-demo_7;Shure Online Store;Shure;1234567890123;;0;0.1;0.1;0.1;0.040793;15;1;;;;;<p>New design.</p>;<p>New design.</p>;Headphones;Meta title-ShureEarphones;Meta keywords-ShureEarphones;Meta description-ShureEarphones;Shure-SE210-Sound-Isolating-Earphones-for-iPod-and-iPhone;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-07;1;http://localhost/prestashop_1.5.6.0/img/p/1/4/14.jpg;0;;1;new;0;0;0;0;0;
ID;Active (0/1);Name *;Categories (x,y,z...);Price tax excluded or Price tax included;Tax rules ID;Wholesale price;On sale (0/1);Discount amount;Discount percent;Discount from (yyyy-mm-dd);Discount to (yyyy-mm-dd);Reference #;Supplier reference #;Supplier;Manufacturer;EAN13;UPC;Ecotax;Width;Height;Depth;Weight;Quantity;Minimal quantity;Visibility;Additional shipping cost;Unity;Unit price ratio;Short description;Description;Tags (x,y,z...);Meta title;Meta keywords;Meta description;URL rewritten;Text when in stock;Text when backorder allowed;Available for order (0 = No, 1 = Yes);Product available date;Product creation date;Show price (0 = No, 1 = Yes);Image URLs (x,y,z...);Delete existing images (0 = No, 1 = Yes);Feature(Name:Value:Position);Available online only (0 = No, 1 = Yes);Condition;Customizable (0 = No, 1 = Yes);Uploadable files (0 = No, 1 = Yes);Text fields (0 = No, 1 = Yes);Out of stock;Advanced stock management;ID / Name of shop;Depends On Stock;Warehouse
1;1;iPod Nano;iPods;100;1;80;1;;5.5;2013-06-01;2018-12-31;RP-demo_1;RF-demo_1;Applestore;Apple;1234567890123;;1;0.6;0.2;0.4;0.068357;160;1;;;;;<p>New design.</p>;<p>New design.</p>;apple, ipod, nano;Meta title-Nano;Meta keywords-Nano;Meta description-Nano;iPod-Nano;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-01;1;http://localhost/prestashop_1.5.6.0/img/p/1/5/15.jpg;0;;0;new;0;0;0;0;0;0;0;
2;1;iPod shuffle;iPods;60;1;40;1;;;2013-06-01;2018-12-31;RP-demo_2;RF-demo_2;Applestore;Apple;1234567890123;;1;0.1;0.1;0.1;0.027563;120;1;both;;;;<p>New design.</p>;<p>New design.</p>;ipod, shuffle;Meta title-Shuffle;Meta keywords-Shuffle;Meta description-Shuffle;iPod-shuffle;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-02;1;http://localhost/prestashop_1.5.6.0/img/p/2/3/23.jpg;0;;0;new;0;0;0;0;0;0;0;
3;1;MacBook Air;Laptops;1500;1;1000;1;100;;2013-06-01;2018-12-31;RP-demo_3;RF-demo_3;Applestore;Apple;1234567890123;;2;1.31;0.3;1;2.976846;400;1;catalog;;;;<p>New design.</p>;<p>New design.</p>;MacBook, Air;Meta title-McBookAir;Meta keywords-McBookAir;Meta description-McBookAir;MacBook-Air;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-03;1;http://localhost/prestashop_1.5.6.0/img/p/1/1.jpg;1;;0;new;0;0;0;0;0;0;0;
4;1;MacBook;Laptops;1150;1;750;1;;;2013-06-01;2018-12-31;RP-demo_4;RF-demo_4;Applestore;Apple;1234567890123;;2;1.31;0.3;1;4.454244;75;1;search;;;;<p>New design.</p>;<p>New design.</p>;MacBook, Pro;Meta title-McBookPro;Meta keywords-McBookPro;Meta description-McBookPro;MacBook;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-04;1;http://localhost/prestashop_1.5.6.0/img/p/6/6.jpg;1;;0;new;0;0;0;0;0;0;0;
5;1;iPod touch;iPods;240;1;150;1;;;2013-06-01;2018-12-31;RP-demo_5;RF-demo_5;Applestore;Apple;1234567890123;;1;0.6;0.2;0.4;0.194046;120;1;none;;;;<p>New design.</p>;<p>New design.</p>;Ipod touch;Meta title-IpodTouch;Meta keywords-IpodTouch;Meta description-IpodTouch;iPod-touch;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-05;1;http://localhost/prestashop_1.5.6.0/img/p/7/7.jpg;0;;1;used;0;0;0;0;0;0;0;
6;1;Belkin Leather Folio for iPod nano - Black / Chocolate;Accessories;25;1;150;1;;;2013-06-01;2018-12-31;RP-demo_6;RF-demo_6;Nippon Electronic Import;Belkin;1234567890123;;0;0.6;0.2;0.4;0.038588;25;1;;20;;;<p>New design.</p>;<p>New design.</p>;Folio, leather;Meta title-BelkinLeatherFolio;Meta keywords-BelkinLeatherFolio;Meta description-BelkinLeatherFolio;Belkin-Leather-Folio-for-iPod-nano---Black-Chocolate;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-06;1;http://localhost/prestashop_1.5.6.0/img/p/1/3/13.jpg;0;;1;refurbished;0;0;0;0;0;0;0;
7;1;Shure SE210 Sound-Isolating Earphones for iPod and iPhone;Accessories;125;2;80;1;;;2013-06-01;2018-12-31;RP-demo_7;RF-demo_7;Shure Online Store;Shure;1234567890123;;0;0.1;0.1;0.1;0.040793;15;1;;;;;<p>New design.</p>;<p>New design.</p>;Headphones;Meta title-ShureEarphones;Meta keywords-ShureEarphones;Meta description-ShureEarphones;Shure-SE210-Sound-Isolating-Earphones-for-iPod-and-iPhone;In Stock;Current supply. Ordering availlable;1;2013-03-01;2013-01-07;1;http://localhost/prestashop_1.5.6.0/img/p/1/4/14.jpg;0;;1;new;0;0;0;0;0;0;0;
1 ID Active (0/1) Name * Categories (x,y,z...) Price tax excluded or Price tax included Tax rules ID Wholesale price On sale (0/1) Discount amount Discount percent Discount from (yyyy-mm-dd) Discount to (yyyy-mm-dd) Reference # Supplier reference # Supplier Manufacturer EAN13 UPC Ecotax Width Height Depth Weight Quantity Minimal quantity Visibility Additional shipping cost Unity Unit price ratio Short description Description Tags (x,y,z...) Meta title Meta keywords Meta description URL rewritten Text when in stock Text when backorder allowed Available for order (0 = No, 1 = Yes) Product available date Product creation date Show price (0 = No, 1 = Yes) Image URLs (x,y,z...) Delete existing images (0 = No, 1 = Yes) Feature(Name:Value:Position) Available online only (0 = No, 1 = Yes) Condition Customizable (0 = No, 1 = Yes) Uploadable files (0 = No, 1 = Yes) Text fields (0 = No, 1 = Yes) Out_of_stock Out of stock Advanced stock management ID / Name of shop Depends On Stock Warehouse
2 1 1 iPod Nano iPods 100 1 80 1 5.5 2013-06-01 2018-12-31 RP-demo_1 RF-demo_1 Applestore Apple 1234567890123 1 0.6 0.2 0.4 0.068357 160 1 <p>New design.</p> <p>New design.</p> apple, ipod, nano Meta title-Nano Meta keywords-Nano Meta description-Nano iPod-Nano In Stock Current supply. Ordering availlable 1 2013-03-01 2013-01-01 1 http://localhost/prestashop_1.5.6.0/img/p/1/5/15.jpg 0 0 new 0 0 0 0 0 0 0 0
3 2 1 iPod shuffle iPods 60 1 40 1 2013-06-01 2018-12-31 RP-demo_2 RF-demo_2 Applestore Apple 1234567890123 1 0.1 0.1 0.1 0.027563 120 1 both <p>New design.</p> <p>New design.</p> ipod, shuffle Meta title-Shuffle Meta keywords-Shuffle Meta description-Shuffle iPod-shuffle In Stock Current supply. Ordering availlable 1 2013-03-01 2013-01-02 1 http://localhost/prestashop_1.5.6.0/img/p/2/3/23.jpg 0 0 new 0 0 0 0 0 0 0 0
4 3 1 MacBook Air Laptops 1500 1 1000 1 100 2013-06-01 2018-12-31 RP-demo_3 RF-demo_3 Applestore Apple 1234567890123 2 1.31 0.3 1 2.976846 400 1 catalog <p>New design.</p> <p>New design.</p> MacBook, Air Meta title-McBookAir Meta keywords-McBookAir Meta description-McBookAir MacBook-Air In Stock Current supply. Ordering availlable 1 2013-03-01 2013-01-03 1 http://localhost/prestashop_1.5.6.0/img/p/1/1.jpg 1 0 new 0 0 0 0 0 0 0 0
5 4 1 MacBook Laptops 1150 1 750 1 2013-06-01 2018-12-31 RP-demo_4 RF-demo_4 Applestore Apple 1234567890123 2 1.31 0.3 1 4.454244 75 1 search <p>New design.</p> <p>New design.</p> MacBook, Pro Meta title-McBookPro Meta keywords-McBookPro Meta description-McBookPro MacBook In Stock Current supply. Ordering availlable 1 2013-03-01 2013-01-04 1 http://localhost/prestashop_1.5.6.0/img/p/6/6.jpg 1 0 new 0 0 0 0 0 0 0 0
6 5 1 iPod touch iPods 240 1 150 1 2013-06-01 2018-12-31 RP-demo_5 RF-demo_5 Applestore Apple 1234567890123 1 0.6 0.2 0.4 0.194046 120 1 none <p>New design.</p> <p>New design.</p> Ipod touch Meta title-IpodTouch Meta keywords-IpodTouch Meta description-IpodTouch iPod-touch In Stock Current supply. Ordering availlable 1 2013-03-01 2013-01-05 1 http://localhost/prestashop_1.5.6.0/img/p/7/7.jpg 0 1 used 0 0 0 0 0 0 0 0
7 6 1 Belkin Leather Folio for iPod nano - Black / Chocolate Accessories 25 1 150 1 2013-06-01 2018-12-31 RP-demo_6 RF-demo_6 Nippon Electronic Import Belkin 1234567890123 0 0.6 0.2 0.4 0.038588 25 1 20 <p>New design.</p> <p>New design.</p> Folio, leather Meta title-BelkinLeatherFolio Meta keywords-BelkinLeatherFolio Meta description-BelkinLeatherFolio Belkin-Leather-Folio-for-iPod-nano---Black-Chocolate In Stock Current supply. Ordering availlable 1 2013-03-01 2013-01-06 1 http://localhost/prestashop_1.5.6.0/img/p/1/3/13.jpg 0 1 refurbished 0 0 0 0 0 0 0 0
8 7 1 Shure SE210 Sound-Isolating Earphones for iPod and iPhone Accessories 125 2 80 1 2013-06-01 2018-12-31 RP-demo_7 RF-demo_7 Shure Online Store Shure 1234567890123 0 0.1 0.1 0.1 0.040793 15 1 <p>New design.</p> <p>New design.</p> Headphones Meta title-ShureEarphones Meta keywords-ShureEarphones Meta description-ShureEarphones Shure-SE210-Sound-Isolating-Earphones-for-iPod-and-iPhone In Stock Current supply. Ordering availlable 1 2013-03-01 2013-01-07 1 http://localhost/prestashop_1.5.6.0/img/p/1/4/14.jpg 0 1 new 0 0 0 0 0 0 0 0
+1 -1
View File
@@ -675,4 +675,4 @@ function checkAllZones(elt)
$('.fees div.input-group input:text, .fees_all div.input-group input:text').attr('disabled', 'disabled');
}
}
}
+24 -8
View File
@@ -1,10 +1,26 @@
{if $facebookurl != ''}
<div id="facebook_block" class="col-xs-4">
<h4 >{l s='Follow us on facebook' mod='blockfacebook'}</h4>
<div class="facebook-fanbox">
<iframe src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2F{$facebookurl|escape:'html':'UTF-8'}&amp;width=235&amp;height=290&amp;colorscheme=light&amp;show_faces=true&amp;header=false&amp;stream=false&amp;show_border=false" scrolling="no" frameborder="0" style="border:none; width:100%; height:200px;" allowTransparency="true"></iframe>
</div>
<div id="fb-root"></div>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=334341610034299";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div id="facebook_block" class="col-xs-4">
<h4 >{l s='Follow us on facebook' mod='blockfacebook'}</h4>
<div class="facebook-fanbox">
<div
class="fb-like-box"
data-href="http://www.facebook.com/{$facebookurl|escape:'html':'UTF-8'}"
data-colorscheme="light"
data-show-faces="true"
data-header="false"
data-stream="false"
data-show-border="false">
</div>
</div>
{/if}
</div>
{/if}
+4 -4
View File
@@ -353,7 +353,7 @@ class Dashactivity extends Module
$fields_form['form']['input'][] = array(
'label' => $this->l('Cart active'),
'desc' => $this->l('Default time range to consider a Shopping cart as active (default 30, max 120)'),
'desc' => $this->l('How long (in minutes) a cart is to be considered active after the last recorded change.'),
'name' => 'DASHACTIVITY_CART_ACTIVE',
'type' => 'select',
'options' => array(
@@ -371,7 +371,7 @@ class Dashactivity extends Module
);
$fields_form['form']['input'][] = array(
'label' => $this->l('Visitor online'),
'desc' => $this->l('Default time range to consider a Visitor as online (default 30, max 120)'),
'desc' => $this->l('How long (in minutes) a visitor is to be considered online after their last action (default: 30 min).'),
'name' => 'DASHACTIVITY_VISITOR_ONLINE',
'type' => 'select',
'options' => array(
@@ -389,14 +389,14 @@ class Dashactivity extends Module
);
$fields_form['form']['input'][] = array(
'label' => $this->l('Cart abandoned (min)'),
'desc' => $this->l('Default time range (min) to consider a Shopping cart as abandoned (default 24hrs)'),
'desc' => $this->l('How long (in hours) after the last action a cart is to be considered as abandoned (default: 24 hrs).'),
'name' => 'DASHACTIVITY_CART_ABANDONED_MIN',
'type' => 'text',
'suffix' => $this->l('hrs'),
);
$fields_form['form']['input'][] = array(
'label' => $this->l('Cart abandoned (max)'),
'desc' => $this->l('Default time range (max) to consider a Shopping cart as abandoned (default 48hrs)'),
'desc' => $this->l('How long (in hours) after the last action a cart is no longer to be considered as abandoned (default: 24 hrs).'),
'name' => 'DASHACTIVITY_CART_ABANDONED_MAX',
'type' => 'text',
'suffix' => $this->l('hrs'),
+3 -1
View File
@@ -235,7 +235,9 @@ class Dashgoals extends Module
$fullfilment = round($value / $month_goal, 2);
// Base rate is essential here : it determines the value of the goal compared to the "100%" of the chart legend
$base_rate = $month_goal / $average_goal;
$base_rate = 0;
if ($average_goal && $month_goal)
$base_rate = $month_goal / $average_goal;
// Fullfilment of 1 means that we performed exactly anticipated
if ($fullfilment == 1)
+2 -2
View File
@@ -106,8 +106,8 @@ $(function(){ldelim}
<div id="vat_area">
<div id="vat_number">
<div class="form-group">
<label for="vat_number">{l s='VAT number'}</label>
<input type="text" class="form-control" name="vat_number" value="{if isset($smarty.post.vat_number)}{$smarty.post.vat_number}{else}{if isset($address->vat_number)}{$address->vat_number|escape:'html'}{/if}{/if}" onkeyup="if($(this).val().length) { if (validate_{$address_validation.$field_name.validate}($(this).val())) $(this).parent().removeClass('form-error').addClass('form-ok'); else $(this).parent().addClass('form-error').removeClass('form-ok'); }" />
<label for="vat-number">{l s='VAT number'}</label>
<input type="text" class="form-control" id="vat-number" name="vat_number" value="{if isset($smarty.post.vat_number)}{$smarty.post.vat_number}{else}{if isset($address->vat_number)}{$address->vat_number|escape:'html'}{/if}{/if}" onkeyup="if($(this).val().length) { if (validate_{$address_validation.$field_name.validate}($(this).val())) $(this).parent().removeClass('form-error').addClass('form-ok'); else $(this).parent().addClass('form-error').removeClass('form-ok'); }" />
</div>
</div>
</div>
+1 -6
View File
@@ -1,11 +1,7 @@
@media only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and (min-device-pixel-ratio: 2) {
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
.replace-2x {
font-size: 1px;
}
.example {
background-image: url(../images/example2x.png);
-webkit-background-size:13px 13px;
@@ -13,5 +9,4 @@ only screen and (min-device-pixel-ratio: 2) {
-o-background-size:13px 13px;
background-size:13px 13px;
}
}
+6 -5
View File
@@ -44,16 +44,18 @@
<link rel="icon" type="image/vnd.microsoft.icon" href="{$favicon_url}?{$img_update_time}" />
<link rel="shortcut icon" type="image/x-icon" href="{$favicon_url}?{$img_update_time}" />
<link rel="stylesheet" href="{$css_dir}highdpi.css" type="text/css" media="screen" />
<link rel="stylesheet" href="{$css_dir}bootstrap_lib/bootstrap.css" type="text/css" media="all" />
<link rel="stylesheet" href="{$css_dir}font-awesome.css" type="text/css" media="all" />
<link rel="stylesheet" href="{$css_dir}jquery/uniform.default.css" type="text/css" media="all" />
<link rel="stylesheet" href="{$css_dir}highdpi.css" media="only screen and (-webkit-min-device-pixel-ratio: 2)" />
<link rel="stylesheet" href="{$css_dir}jquery/footable.core.css" type="text/css" media="all" />
<link rel="stylesheet" href="{$css_dir}jquery/jquery.bxslider.css" type="text/css" media="all" />
<link href='//fonts.googleapis.com/css?family=Open+Sans:400,400italic,300italic,300,600,600italic,700,700italic,800,800italic' rel='stylesheet' type='text/css' />
<link rel='stylesheet' href='//fonts.googleapis.com/css?family=Open+Sans:400,400italic,300italic,300,600,600italic,700,700italic,800,800italic' type='text/css' />
{if isset($css_files)}
{foreach from=$css_files key=css_uri item=media}
<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />
<link rel="stylesheet" href="{$css_uri}" type="text/css" media="{$media}" />
{/foreach}
{/if}
@@ -62,10 +64,9 @@
var viewport = document.querySelector("meta[name=viewport]");
viewport.setAttribute('content', 'initial-scale=1.0,maximum-scale=1.0,user-scalable=0,width=device-width,height=device-height');
}
if(navigator.userAgent.match(/Android/i)){
if(navigator.userAgent.match(/Android/i)) {
window.scrollTo(0,1);
}
var baseDir = '{$content_dir|addslashes}';
var baseUri = '{$base_uri|addslashes}';
var static_token = '{$static_token|addslashes}';
@@ -76,8 +76,8 @@ var generated_date = {$smarty.now|intval};
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
<dt id="cart_block_product_{$product.id_product}_{if $product.id_product_attribute}{$product.id_product_attribute}{else}0{/if}_{if $product.id_address_delivery}{$product.id_address_delivery}{else}0{/if}" class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if}">
<a class="cart-images" href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category)}">
<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'cart_default')}" alt="" title="{$product.name|escape:htmlall:'UTF-8'|truncate:20}" />
<a class="cart-images" href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category)|escape:htmlall:'UTF-8'}" title="{$product.name|escape:htmlall:'UTF-8'|truncate:20}">
<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'cart_default')}" alt="{$product.name|escape:htmlall:'UTF-8'}" />
</a>
<div class="cart-info">
<div class="product-name">
+18 -12
View File
@@ -39,11 +39,17 @@
{/if}
<!-- nbr product/page -->
{if $nb_products > $products_per_page}
<form action="{if !is_array($requestNb)}{$requestNb}{else}{$requestNb.requestUrl}{/if}" method="get" class="nbrItemPage">
<form action="{if !is_array($requestNb)}{$requestNb|escape:htmlall:'UTF-8'}{else}{$requestNb.requestUrl|escape:htmlall:'UTF-8'}{/if}" method="get" class="nbrItemPage">
<div class="clearfix selector1">
{if isset($search_query) AND $search_query}<input type="hidden" name="search_query" value="{$search_query|escape:'html':'UTF-8'}" />{/if}
{if isset($tag) AND $tag AND !is_array($tag)}<input type="hidden" name="tag" value="{$tag|escape:'html':'UTF-8'}" />{/if}
<label for="nb_item{if isset($paginationId)}_{$paginationId}{/if}">{l s='Show'}</label>
{if isset($search_query) AND $search_query}
<input type="hidden" name="search_query" value="{$search_query|escape:'html':'UTF-8'}" />
{/if}
{if isset($tag) AND $tag AND !is_array($tag)}
<input type="hidden" name="tag" value="{$tag|escape:'html':'UTF-8'}" />
{/if}
<label for="nb_item{if isset($paginationId)}_{$paginationId}{/if}">
{l s='Show'}
</label>
{if is_array($requestNb)}
{foreach from=$requestNb item=requestValue key=requestKey}
{if $requestKey != 'requestUrl'}
@@ -52,17 +58,17 @@
{/foreach}
{/if}
<select name="n" id="nb_item{if isset($paginationId)}_{$paginationId}{/if}" class="js-nb_item form-control" onchange="this.form.submit();">
{assign var="lastnValue" value="0"}
{foreach from=$nArray item=nValue}
{if $lastnValue <= $nb_products}
<option value="{$nValue|escape:'html':'UTF-8'}" {if $n == $nValue}selected="selected"{/if}>{$nValue|escape:'html':'UTF-8'}</option>
{/if}
{assign var="lastnValue" value=$nValue}
{/foreach}
{assign var="lastnValue" value="0"}
{foreach from=$nArray item=nValue}
{if $lastnValue <= $nb_products}
<option value="{$nValue|escape:'html':'UTF-8'}" {if $n == $nValue}selected="selected"{/if}>{$nValue|escape:'html':'UTF-8'}</option>
{/if}
{assign var="lastnValue" value=$nValue}
{/foreach}
</select>
<span>{l s='per page'}</span>
</div>
</form>
{/if}
<!-- /nbr product/page -->
{/if}
{/if}
+314 -290
View File
@@ -34,308 +34,332 @@
var txtProducts = "{l s='products' js=1}";
// ]]>
</script>
{capture name=path}{l s='Your payment method'}{/capture}
{/if}
{if !$opc}<h1 class="page-heading">{l s='Please choose your payment method'}</h1>{else}<h1 class="page-heading step-num"><span>3</span> {l s='Please choose your payment method'}</h1>{/if}
{if !$opc}
<h1 class="page-heading">{l s='Please choose your payment method'}</h1>
{else}
<h1 class="page-heading step-num"><span>3</span> {l s='Please choose your payment method'}</h1>
{/if}
{if !$opc}
{assign var='current_step' value='payment'}
{include file="$tpl_dir./order-steps.tpl"}
{include file="$tpl_dir./errors.tpl"}
{else}
<div id="opc_payment_methods" class="opc-main-block">
<div id="opc_payment_methods-overlay" class="opc-overlay" style="display: none;"></div>
{/if}
<div class="paiement_block">
<div id="HOOK_TOP_PAYMENT">{$HOOK_TOP_PAYMENT}</div>
{if $HOOK_PAYMENT}
{if !$opc}
<div id="order-detail-content" class="table_block table-responsive">
<table id="cart_summary" class="table table-bordered">
<thead>
<tr>
<th class="cart_product first_item">{l s='Product'}</th>
<th class="cart_description item">{l s='Description'}</th>
<th class="cart_availability item">{l s='Avail.'}</th>
<th class="cart_unit item">{l s='Unit price'}</th>
<!--th class="cart_quantity item">{l s='Qty'}</th-->
<th class="cart_total last_item">{l s='Total'}</th>
</tr>
</thead>
<tfoot>
{if $use_taxes}
{if $priceDisplay}
<tr class="cart_total_price">
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total products (tax excl.)'}{else}{l s='Total products'}{/if}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products}</td>
</tr>
{else}
<tr class="cart_total_price">
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total products (tax incl.)'}{else}{l s='Total products'}{/if}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products_wt}</td>
</tr>
{/if}
{else}
<tr class="cart_total_price">
<td colspan="3" class="text-right">{l s='Total products'}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products}</td>
</tr>
{/if}
<tr class="cart_total_voucher" {if $total_wrapping == 0}style="display:none"{/if}>
<td colspan="3" class="text-right">
{if $use_taxes}
{if $priceDisplay}
{if $display_tax_label}{l s='Total gift wrapping (tax excl.):'}{else}{l s='Total gift wrapping cost:'}{/if}
{else}
{if $display_tax_label}{l s='Total gift wrapping (tax incl.)'}{else}{l s='Total gift wrapping cost:'}{/if}
{/if}
{else}
{l s='Total gift wrapping cost:'}
{/if}
</td>
<td colspan="2" class="price-discount price" id="total_wrapping">
{if $use_taxes}
{if $priceDisplay}
{displayPrice price=$total_wrapping_tax_exc}
{else}
{displayPrice price=$total_wrapping}
{/if}
{else}
{displayPrice price=$total_wrapping_tax_exc}
{/if}
</td>
</tr>
{if $total_shipping_tax_exc <= 0 && !isset($virtualCart)}
<tr class="cart_total_delivery">
<td colspan="3" class="text-right">{l s='Shipping:'}</td>
<td colspan="2" class="price" id="total_shipping">{l s='Free Shipping!'}</td>
</tr>
{else}
{if $use_taxes && $total_shipping_tax_exc != $total_shipping}
{if $priceDisplay}
<tr class="cart_total_delivery" {if $shippingCost <= 0} style="display:none"{/if}>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total shipping (tax excl.)'}{else}{l s='Total shipping'}{/if}</td>
<td colspan="2" class="price" id="total_shipping">{displayPrice price=$shippingCostTaxExc}</td>
</tr>
{else}
<tr class="cart_total_delivery"{if $shippingCost <= 0} style="display:none"{/if}>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total shipping (tax incl.)'}{else}{l s='Total shipping'}{/if}</td>
<td colspan="2" class="price" id="total_shipping" >{displayPrice price=$shippingCost}</td>
</tr>
{/if}
{else}
<tr class="cart_total_delivery"{if $shippingCost <= 0} style="display:none"{/if}>
<td colspan="3" class="text-right">{l s='Total shipping'}</td>
<td colspan="2" class="price" id="total_shipping" >{displayPrice price=$shippingCostTaxExc}</td>
</tr>
{/if}
{/if}
<tr class="cart_total_voucher" {if $total_discounts == 0}style="display:none"{/if}>
<td colspan="3" class="text-right">
{if $use_taxes}
{if $priceDisplay}
{if $display_tax_label}{l s='Total vouchers (tax excl.)'}{else}{l s='Total vouchers'}{/if}
{else}
{if $display_tax_label}{l s='Total vouchers (tax incl.)'}{else}{l s='Total vouchers'}{/if}
{/if}
{else}
{l s='Total vouchers'}
{/if}
</td>
<td colspan="2" class="price-discount price" id="total_discount">
{if $use_taxes}
{if $priceDisplay}
{displayPrice price=$total_discounts_tax_exc*-1}
{else}
{displayPrice price=$total_discounts*-1}
{/if}
{else}
{displayPrice price=$total_discounts_tax_exc*-1}
{/if}
</td>
</tr>
{if $use_taxes}
{if $priceDisplay && $total_tax != 0}
<tr class="cart_total_tax">
<td colspan="3" class="text-right">{l s='Total tax:'}</td>
<td colspan="2" class="price" id="total_tax" >{displayPrice price=$total_tax}</td>
</tr>
{/if}
<tr class="cart_total_price">
<td colspan="3" class="total_price_container text-right"><span>{l s='Total'}</span></td>
<td colspan="2" class="price" id="total_price_container">
<span id="total_price">{displayPrice price=$total_price}</span>
</td>
</tr>
{else}
<tr class="cart_total_price">
{if $voucherAllowed}
<td colspan="2" id="cart_voucher" class="cart_voucher">
<div id="cart_voucher" class="table_block">
{if isset($errors_discount) && $errors_discount}
<ul class="alert alert-danger">
{foreach from=$errors_discount key=k item=error}
<li>{$error|escape:'html':'UTF-8'}</li>
{/foreach}
</ul>
{/if}
{if $voucherAllowed}
<form action="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}" method="post" id="voucher">
<fieldset>
<h4>{l s='Vouchers'}</h4>
<input type="text" id="discount_name" class="form-control" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>{l s='ok'}</span></button>
{if $displayVouchers}
<p id="title" class="title_offers">{l s='Take advantage of our offers:'}</p>
<div id="display_cart_vouchers">
{foreach from=$displayVouchers item=voucher}
<span onclick="$('#discount_name').val('{$voucher.name}');return false;" class="voucher_name">{$voucher.name}</span> - {$voucher.description} <br />
{/foreach}
</div>
{/if}
</fieldset>
</form>
{/if}
</div>
</td>
{/if}
<td colspan="{if !$voucherAllowed}3{else}2{/if}" class="text-right total_price_container">
<span>{l s='Total'}</span>
</td>
<td colspan="1" class="price total_price_container" id="total_price_container">
<span id="total_price">{displayPrice price=$total_price_without_tax}</span>
</td>
</tr>
{/if}
</tfoot>
<tbody>
{foreach from=$products item=product name=productLoop}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='cannotModify' value=1}
{assign var='odd' value=$product@iteration%2}
{assign var='noDeleteButton' value=1}
{* Display the product line *}
{include file="$tpl_dir./shopping-cart-product-line.tpl"}
{* Then the customized datas ones*}
{if isset($customizedDatas.$productId.$productAttributeId)}
{foreach from=$customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] key='id_customization' item='customization'}
<tr id="product_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" class="alternate_item cart_item">
<td colspan="3">
{foreach from=$customization.datas key='type' item='datas'}
{if $type == $CUSTOMIZE_FILE}
<div class="customizationUploaded">
<ul class="customizationUploaded">
{foreach from=$datas item='picture'}
<li>
<img src="{$pic_dir}{$picture.value}_small" alt="" class="customizationUploaded" />
</li>
{/foreach}
</ul>
</div>
{elseif $type == $CUSTOMIZE_TEXTFIELD}
<ul class="typedText">
{foreach from=$datas item='textField' name='typedText'}
<li>
{if $textField.name}
{l s='%s:' sprintf=$textField.name}
<div class="paiement_block">
<div id="HOOK_TOP_PAYMENT">{$HOOK_TOP_PAYMENT}</div>
{if $HOOK_PAYMENT}
{if !$opc}
<div id="order-detail-content" class="table_block table-responsive">
<table id="cart_summary" class="table table-bordered">
<thead>
<tr>
<th class="cart_product first_item">{l s='Product'}</th>
<th class="cart_description item">{l s='Description'}</th>
<th class="cart_availability item">{l s='Avail.'}</th>
<th class="cart_unit item">{l s='Unit price'}</th>
<!--th class="cart_quantity item">{l s='Qty'}</th-->
<th class="cart_total last_item">{l s='Total'}</th>
</tr>
</thead>
<tfoot>
{if $use_taxes}
{if $priceDisplay}
<tr class="cart_total_price">
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total products (tax excl.)'}{else}{l s='Total products'}{/if}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products}</td>
</tr>
{else}
<tr class="cart_total_price">
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total products (tax incl.)'}{else}{l s='Total products'}{/if}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products_wt}</td>
</tr>
{/if}
{else}
<tr class="cart_total_price">
<td colspan="3" class="text-right">{l s='Total products'}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products}</td>
</tr>
{/if}
<tr class="cart_total_voucher" {if $total_wrapping == 0}style="display:none"{/if}>
<td colspan="3" class="text-right">
{if $use_taxes}
{if $priceDisplay}
{if $display_tax_label}{l s='Total gift wrapping (tax excl.):'}{else}{l s='Total gift wrapping cost:'}{/if}
{else}
{l s='Text #%s:' sprintf=$smarty.foreach.typedText.index+1}
{if $display_tax_label}{l s='Total gift wrapping (tax incl.)'}{else}{l s='Total gift wrapping cost:'}{/if}
{/if}
{$textField.value}
</li>
{/foreach}
</ul>
{/if}
{/foreach}
</td>
<td class="cart_quantity">
{if isset($cannotModify) AND $cannotModify == 1}
<span>{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count}{else}{$product.cart_quantity-$quantityDisplayed}{/if}</span>
{else}
<div>
<a rel="nofollow" class="cart_quantity_delete" id="{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="{$link->getPageLink('cart', true, NULL, "delete=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;token={$token_cart}")|escape:'html'}"><img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" title="{l s='Delete this customization'}" width="11" height="13" class="icon" /></a>
</div>
<div id="cart_quantity_button">
<a rel="nofollow" class="cart_quantity_up" id="cart_quantity_up_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="{$link->getPageLink('cart', true, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;token={$token_cart}")|escape:'html'}" title="{l s='Add'}"><img src="{$img_dir}icon/quantity_up.gif" alt="{l s='Add'}" width="14" height="9" /></a><br />
{if $product.minimal_quantity < ($customization.quantity -$quantityDisplayed) OR $product.minimal_quantity <= 1}
<a rel="nofollow" class="cart_quantity_down" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="{$link->getPageLink('cart', true, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;op=down&amp;token={$token_cart}")|escape:'html'}" title="{l s='Subtract'}">
<img src="{$img_dir}icon/quantity_down.gif" alt="{l s='Subtract'}" width="14" height="9" />
</a>
{else}
<a class="cart_quantity_down" style="opacity: 0.3;" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="#" title="{l s='Subtract'}">
<img src="{$img_dir}icon/quantity_down.gif" alt="{l s='Subtract'}" width="14" height="9" />
</a>
{/if}
</div>
<input type="hidden" value="{$customization.quantity}" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_hidden"/>
<input size="2" type="text" value="{$customization.quantity}" class="cart_quantity_input" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}"/>
{/if}
</td>
<td class="cart_total"></td>
</tr>
{assign var='quantityDisplayed' value=$quantityDisplayed+$customization.quantity}
{/foreach}
{* If it exists also some uncustomized products *}
{if $product.quantity-$quantityDisplayed > 0}{include file="$tpl_dir./shopping-cart-product-line.tpl"}{/if}
{/if}
{/foreach}
{assign var='last_was_odd' value=$product@iteration%2}
{foreach $gift_products as $product}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='odd' value=($product@iteration+$last_was_odd)%2}
{assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId)}
{assign var='cannotModify' value=1}
{* Display the gift product line *}
{include file="./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}
{/foreach}
</tbody>
{if count($discounts)}
<tbody>
{foreach from=$discounts item=discount name=discountLoop}
<tr class="cart_discount {if $smarty.foreach.discountLoop.last}last_item{elseif $smarty.foreach.discountLoop.first}first_item{else}item{/if}" id="cart_discount_{$discount.id_discount}">
<td class="cart_discount_name" colspan="2">{$discount.name}</td>
<td class="cart_discount_description" colspan="3">{$discount.description}</td>
<td class="cart_discount_price">
<span class="price-discount">
{if $discount.value_real > 0}
{if !$priceDisplay}
{displayPrice price=$discount.value_real*-1}
{else}
{displayPrice price=$discount.value_tax_exc*-1}
{/if}
{/if}
</span>
</td>
</tr>
{/foreach}
</tbody>
{/if}
</table>
</div>
{/if}
{if $opc}<div id="opc_payment_methods-content">{/if}
<div id="HOOK_PAYMENT">
{$HOOK_PAYMENT}
</div>
{if $opc}</div>{/if}
{else}
<p class="alert alert-warning">{l s='No payment modules have been installed.'}</p>
{/if}
{else}
{l s='Total gift wrapping cost:'}
{/if}
</td>
<td colspan="2" class="price-discount price" id="total_wrapping">
{if $use_taxes}
{if $priceDisplay}
{displayPrice price=$total_wrapping_tax_exc}
{else}
{displayPrice price=$total_wrapping}
{/if}
{else}
{displayPrice price=$total_wrapping_tax_exc}
{/if}
</td>
</tr>
{if $total_shipping_tax_exc <= 0 && !isset($virtualCart)}
<tr class="cart_total_delivery">
<td colspan="3" class="text-right">{l s='Shipping:'}</td>
<td colspan="2" class="price" id="total_shipping">{l s='Free Shipping!'}</td>
</tr>
{else}
{if $use_taxes && $total_shipping_tax_exc != $total_shipping}
{if $priceDisplay}
<tr class="cart_total_delivery" {if $shippingCost <= 0} style="display:none"{/if}>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total shipping (tax excl.)'}{else}{l s='Total shipping'}{/if}</td>
<td colspan="2" class="price" id="total_shipping">{displayPrice price=$shippingCostTaxExc}</td>
</tr>
{else}
<tr class="cart_total_delivery"{if $shippingCost <= 0} style="display:none"{/if}>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total shipping (tax incl.)'}{else}{l s='Total shipping'}{/if}</td>
<td colspan="2" class="price" id="total_shipping" >{displayPrice price=$shippingCost}</td>
</tr>
{/if}
{else}
<tr class="cart_total_delivery"{if $shippingCost <= 0} style="display:none"{/if}>
<td colspan="3" class="text-right">{l s='Total shipping'}</td>
<td colspan="2" class="price" id="total_shipping" >{displayPrice price=$shippingCostTaxExc}</td>
</tr>
{/if}
{/if}
<tr class="cart_total_voucher" {if $total_discounts == 0}style="display:none"{/if}>
<td colspan="3" class="text-right">
{if $use_taxes}
{if $priceDisplay}
{if $display_tax_label}{l s='Total vouchers (tax excl.)'}{else}{l s='Total vouchers'}{/if}
{else}
{if $display_tax_label}{l s='Total vouchers (tax incl.)'}{else}{l s='Total vouchers'}{/if}
{/if}
{else}
{l s='Total vouchers'}
{/if}
</td>
<td colspan="2" class="price-discount price" id="total_discount">
{if $use_taxes}
{if $priceDisplay}
{displayPrice price=$total_discounts_tax_exc*-1}
{else}
{displayPrice price=$total_discounts*-1}
{/if}
{else}
{displayPrice price=$total_discounts_tax_exc*-1}
{/if}
</td>
</tr>
{if $use_taxes}
{if $priceDisplay && $total_tax != 0}
<tr class="cart_total_tax">
<td colspan="3" class="text-right">{l s='Total tax:'}</td>
<td colspan="2" class="price" id="total_tax" >{displayPrice price=$total_tax}</td>
</tr>
{/if}
<tr class="cart_total_price">
<td colspan="3" class="total_price_container text-right"><span>{l s='Total'}</span></td>
<td colspan="2" class="price" id="total_price_container">
<span id="total_price">{displayPrice price=$total_price}</span>
</td>
</tr>
{else}
<tr class="cart_total_price">
{if $voucherAllowed}
<td colspan="2" id="cart_voucher" class="cart_voucher">
<div id="cart_voucher" class="table_block">
{if isset($errors_discount) && $errors_discount}
<ul class="alert alert-danger">
{foreach from=$errors_discount key=k item=error}
<li>{$error|escape:'html':'UTF-8'}</li>
{/foreach}
</ul>
{/if}
{if $voucherAllowed}
<form action="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}" method="post" id="voucher">
<fieldset>
<h4>{l s='Vouchers'}</h4>
<input type="text" id="discount_name" class="form-control" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>{l s='ok'}</span></button>
{if $displayVouchers}
<p id="title" class="title_offers">{l s='Take advantage of our offers:'}</p>
<div id="display_cart_vouchers">
{foreach from=$displayVouchers item=voucher}
<span onclick="$('#discount_name').val('{$voucher.name}');return false;" class="voucher_name">{$voucher.name}</span> - {$voucher.description} <br />
{/foreach}
</div>
{/if}
</fieldset>
</form>
{/if}
</div>
</td>
{/if}
<td colspan="{if !$voucherAllowed}3{else}2{/if}" class="text-right total_price_container">
<span>{l s='Total'}</span>
</td>
<td colspan="1" class="price total_price_container" id="total_price_container">
<span id="total_price">{displayPrice price=$total_price_without_tax}</span>
</td>
</tr>
{/if}
</tfoot>
{if !$opc}
<p class="cart_navigation clearfix"><a href="{$link->getPageLink('order', true, NULL, "step=2")|escape:'html'}" title="{l s='Previous'}" class="button-exclusive btn btn-default"><i class="icon-chevron-left"></i>{l s='Continue shopping'}</a></p>
{else}
</div>
{/if}
</div>
<tbody>
{foreach from=$products item=product name=productLoop}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='cannotModify' value=1}
{assign var='odd' value=$product@iteration%2}
{assign var='noDeleteButton' value=1}
{* Display the product line *}
{include file="$tpl_dir./shopping-cart-product-line.tpl"}
{* Then the customized datas ones*}
{if isset($customizedDatas.$productId.$productAttributeId)}
{foreach from=$customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] key='id_customization' item='customization'}
<tr id="product_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" class="alternate_item cart_item">
<td colspan="3">
{foreach from=$customization.datas key='type' item='datas'}
{if $type == $CUSTOMIZE_FILE}
<div class="customizationUploaded">
<ul class="customizationUploaded">
{foreach from=$datas item='picture'}
<li>
<img src="{$pic_dir}{$picture.value}_small" alt="" class="customizationUploaded" />
</li>
{/foreach}
</ul>
</div>
{elseif $type == $CUSTOMIZE_TEXTFIELD}
<ul class="typedText">
{foreach from=$datas item='textField' name='typedText'}
<li>
{if $textField.name}
{l s='%s:' sprintf=$textField.name}
{else}
{l s='Text #%s:' sprintf=$smarty.foreach.typedText.index+1}
{/if}
{$textField.value}
</li>
{/foreach}
</ul>
{/if}
{/foreach}
</td>
<td class="cart_quantity">
{if isset($cannotModify) AND $cannotModify == 1}
<span>{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count}{else}{$product.cart_quantity-$quantityDisplayed}{/if}</span>
{else}
<div>
<a
id="{$product.id_product}_{$product.id_product_attribute}_{$id_customization}"
class="cart_quantity_delete"
href="{$link->getPageLink('cart', true, NULL, "delete=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;token={$token_cart}")|escape:'html'}"
rel="nofollow">
<img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" title="{l s='Delete this customization'}" width="11" height="13" class="icon" />
</a>
</div>
<div id="cart_quantity_button">
<a
id="cart_quantity_up_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}"
class="cart_quantity_up"
href="{$link->getPageLink('cart', true, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;token={$token_cart}")|escape:'html'}"
rel="nofollow"
title="{l s='Add'}">
<img src="{$img_dir}icon/quantity_up.gif" alt="{l s='Add'}" width="14" height="9" />
</a>
<br />
{if $product.minimal_quantity < ($customization.quantity -$quantityDisplayed) OR $product.minimal_quantity <= 1}
<a
id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}"
class="cart_quantity_down"
href="{$link->getPageLink('cart', true, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;op=down&amp;token={$token_cart}")|escape:'html'}"
rel="nofollow"
title="{l s='Subtract'}">
<img src="{$img_dir}icon/quantity_down.gif" alt="{l s='Subtract'}" width="14" height="9" />
</a>
{else}
<a class="cart_quantity_down" style="opacity: 0.3;" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="#" title="{l s='Subtract'}">
<img src="{$img_dir}icon/quantity_down.gif" alt="{l s='Subtract'}" width="14" height="9" />
</a>
{/if}
</div>
<input type="hidden" value="{$customization.quantity}" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_hidden"/>
<input type="text" value="{$customization.quantity}" class="cart_quantity_input" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}"/>
{/if}
</td>
<td class="cart_total"></td>
</tr>
{assign var='quantityDisplayed' value=$quantityDisplayed+$customization.quantity}
{/foreach}
{* If it exists also some uncustomized products *}
{if $product.quantity-$quantityDisplayed > 0}{include file="$tpl_dir./shopping-cart-product-line.tpl"}{/if}
{/if}
{/foreach}
{assign var='last_was_odd' value=$product@iteration%2}
{foreach $gift_products as $product}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='odd' value=($product@iteration+$last_was_odd)%2}
{assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId)}
{assign var='cannotModify' value=1}
{* Display the gift product line *}
{include file="./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}
{/foreach}
</tbody>
{if count($discounts)}
<tbody>
{foreach from=$discounts item=discount name=discountLoop}
<tr class="cart_discount {if $smarty.foreach.discountLoop.last}last_item{elseif $smarty.foreach.discountLoop.first}first_item{else}item{/if}" id="cart_discount_{$discount.id_discount}">
<td class="cart_discount_name" colspan="2">{$discount.name}</td>
<td class="cart_discount_description" colspan="3">{$discount.description}</td>
<td class="cart_discount_price">
<span class="price-discount">
{if $discount.value_real > 0}
{if !$priceDisplay}
{displayPrice price=$discount.value_real*-1}
{else}
{displayPrice price=$discount.value_tax_exc*-1}
{/if}
{/if}
</span>
</td>
</tr>
{/foreach}
</tbody>
{/if}
</table>
</div> <!-- end order-detail-content -->
{/if}
{if $opc}<div id="opc_payment_methods-content">{/if}
<div id="HOOK_PAYMENT">
{$HOOK_PAYMENT}
</div>
{if $opc}</div> <!-- end opc_payment_methods-content -->{/if}
{else}
<p class="alert alert-warning">{l s='No payment modules have been installed.'}</p>
{/if}
{if !$opc}
<p class="cart_navigation clearfix">
<a href="{$link->getPageLink('order', true, NULL, "step=2")|escape:'html'}" title="{l s='Previous'}" class="button-exclusive btn btn-default">
<i class="icon-chevron-left"></i>
{l s='Continue shopping'}
</a>
</p>
{else}
</div> <!-- end opc_payment_methods -->
{/if}
</div> <!-- end HOOK_TOP_PAYMENT -->
+1 -1
View File
@@ -50,7 +50,7 @@
<!-- Pagination -->
<div id="pagination{if isset($paginationId)}_{$paginationId}{/if}" class="pagination clearfix">
{if $nb_products > $products_per_page && $start!=$stop}
<form action="{if !is_array($requestNb)}{$requestNb}{else}{$requestNb.requestUrl}{/if}" method="get" class="showall">
<form action="{if !is_array($requestNb)}{$requestNb|escape:htmlall:'UTF-8'}{else}{$requestNb.requestUrl|escape:htmlall:'UTF-8'}{/if}" method="get" class="showall">
<div>
{if isset($search_query) AND $search_query}<input type="hidden" name="search_query" value="{$search_query|escape:'html':'UTF-8'}" />{/if}
{if isset($tag) AND $tag AND !is_array($tag)}<input type="hidden" name="tag" value="{$tag|escape:'html':'UTF-8'}" />{/if}
+1 -1
View File
@@ -35,7 +35,7 @@
//]]>
</script>
{/if}
<form method="post" action="{$link->getPageLink('products-comparison')|escape:'html'}" onsubmit="true" class="compare-form">
<form method="post" action="{$link->getPageLink('products-comparison')|escape:htmlall:'UTF-8'}" onsubmit="true" class="compare-form">
<div>
<button type="submit" id="bt_compare{if isset($paginationId)}_{$paginationId}{/if}" class="btn btn-default button button-medium bt_compare"><span>{l s='Compare'} (<strong class="total-compare-val">{count($compared_products)}</strong>)<i class="icon-chevron-right right"></i></span></button>
<input type="hidden" name="compare_product_count" class="compare_product_count" value="{count($compared_products)}" />
@@ -23,8 +23,15 @@
* International Registered Trademark & Property of PrestaShop SA
*}
<ul id="color_to_pick_list" class="clearfix">
<ul class="color_to_pick_list clearfix">
{foreach from=$colors_list item='color'}
<li><a href="{$link->getProductLink($color.id_product, null, null, null, null, null, $color.id_product_attribute)|escape:'html':'UTF-8'}" id="color_{$color.id_product_attribute|intval}" class="color_pick" style="background: {$color.color};"></a></li>
<li>
<a
href="{$link->getProductLink($color.id_product, null, null, null, null, null, $color.id_product_attribute)|escape:'html':'UTF-8'}"
id="color_{$color.id_product_attribute|intval}"
class="color_pick"
style="background: {$color.color};">
</a>
</li>
{/foreach}
</ul>
</ul>
+3 -12
View File
@@ -116,13 +116,10 @@
{$product.name|truncate:45:'...'|escape:'html':'UTF-8'}
</a>
</h5>
{hook h='displayProductListReviews' product=$product}
<p class="product-desc" itemprop="description">
{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}
</p>
{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="content_price">
{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
@@ -141,7 +138,6 @@
{/if}
</div>
{/if}
<div class="button-container">
{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE}
{if ($product.allow_oosp || $product.quantity > 0)}
@@ -151,14 +147,13 @@
href="{$link->getPageLink('cart',false, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;token={$static_token}", false)|escape:'html'}"
rel="nofollow"
title="{l s='Add to cart'}"
data-id-product="{$product.id_product|intval}"
token={$static_token}", false)|escape:'html'}">
data-id-product="{$product.id_product|intval}">
<span>{l s='Add to cart'}</span>
</a>
{else}
<a
class="button ajax_add_to_cart_button btn btn-default"
href="{$link->getPageLink('cart',false, NULL, "add=1&amp;id_product={$product.id_product|intval}", false)|escape:'html'}"
href="{$link->getPageLink('cart',false, NULL, 'add=1&amp;id_product={$product.id_product|intval}', false)|escape:'html'}"
rel="nofollow"
title="{l s='Add to cart'}"
data-id-product="{$product.id_product|intval}">
@@ -191,7 +186,6 @@
<span class="discount">{l s='Reduced price!'}</span>
{/if}
</div>
{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
{if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
<span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability">
@@ -211,9 +205,7 @@
</span>
{/if}
{/if}
</div>
<div class="functional-buttons clearfix">
{hook h='displayProductListFunctionalButtons' product=$product}
{if isset($comparator_max_item) && $comparator_max_item}
@@ -252,7 +244,6 @@
)});
}
</script>
{if $page_name !='index' && $page_name !='product'} <!--// excluding page for Grid/List-->
<script type="text/javascript"><!--
function display(view) {
@@ -349,4 +340,4 @@
}
//--></script>
{/if}
{/if}
{/if}
File diff suppressed because it is too large Load Diff
+137 -135
View File
@@ -28,145 +28,147 @@
<h1 class="page-heading">{l s='Product Comparison'}</h1>
{if $hasProduct}
<script type="text/javascript">
$('document').ready(function(){
if (typeof reloadProductComparison != 'undefined')
reloadProductComparison()
});
</script>
<div class="products_block table-responsive">
<table id="product_comparison" class="table table-bordered">
<tr>
<td width="20%" class="td_empty compare_extra_information">
{$HOOK_COMPARE_EXTRA_INFORMATION}
<span>{l s='Features:'}</span>
</td>
{assign var='taxes_behavior' value=false}
{if $use_taxes && (!$priceDisplay || $priceDisplay == 2)}
{assign var='taxes_behavior' value=true}
{/if}
{foreach from=$products item=product name=for_products}
{assign var='replace_id' value=$product->id|cat:'|'}
<td width="{$width}%" class="ajax_block_product comparison_infos product-block">
<div class="remove">
<a class="cmp_remove" href="{$link->getPageLink('products-comparison', true)|escape:'html'}" title="{l s='Remove'}" data-id-product="{$product->id}"><i class="icon-trash"></i></a>
</div>
<div class="product-image-block">
<a href="{$product->getLink()}" title="{$product->name|escape:html:'UTF-8'}" class="product_image" >
<img class="img-responsive" src="{$link->getImageLink($product->link_rewrite, $product->id_image, 'home_default')|escape:'html'}" alt="{$product->name|escape:html:'UTF-8'}" />
</a>
{if isset($product->show_price) && $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
{if $product->on_sale}
<div class="sale-box"><span class="sale-label">{l s='Sale!'}</span></div>
{/if}
{/if}
</div>
<h5><a class="product-name" href="{$product->getLink()}" title="{$product->name|truncate:32:'...'|escape:'html':'UTF-8'}">{$product->name|truncate:45:'...'|escape:'html':'UTF-8'}</a></h5>
<div class="prices-container">
{if isset($product->show_price) && $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
<span class="price product-price">{convertPrice price=$product->getPrice($taxes_behavior)}</span>
{if isset($product->specificPrice) && $product->specificPrice}
{if {$product->specificPrice.reduction_type == 'percentage'}}
<span class="old-price product-price">{displayWtPrice p=$product->getPrice($taxes_behavior)+($product->getPrice($taxes_behavior)* $product->specificPrice.reduction)}</span>
<span class="price-percent-reduction">-{$product->specificPrice.reduction*100|floatval}%</span>
{else}
<span class="old-price product-price">{convertPrice price=($product->getPrice($taxes_behavior) + $product->specificPrice.reduction)}</span>
<span class="price-percent-reduction">-{convertPrice price=$product->specificPrice.reduction}</span>
{/if}
{/if}
{if $product->on_sale}
{elseif $product->specificPrice AND $product->specificPrice.reduction}
<div class="product_discount">
<span class="reduced-price">{l s='Reduced price!'}</span>
</div>
{/if}
{if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
{math equation="pprice / punit_price" pprice=$product->getPrice($taxes_behavior) punit_price=$product->unit_price_ratio assign=unit_price}
<span class="comparison_unit_price">&nbsp;{convertPrice price=$unit_price} {l s='per %s' sprintf=$product->unity|escape:'html':'UTF-8'}</span>
{else}
{/if}
{/if}
</div>
<div class="product_desc">{$product->description_short|strip_tags|truncate:60:'...'}</div>
<div class="comparison_product_infos">
<!-- availability -->
<p class="comparison_availability_statut">
{if !(($product->quantity <= 0 && !$product->available_later) OR ($product->quantity != 0 && !$product->available_now) OR !$product->available_for_order OR $PS_CATALOG_MODE)}
<span id="availability_label">{l s='Availability:'}</span>
<span id="availability_value"{if $product->quantity <= 0} class="warning-inline"{/if}>
{if $product->quantity <= 0}
{if $allow_oosp}
{$product->available_later|escape:'html':'UTF-8'}
{else}
{l s='This product is no longer in stock.'}
{/if}
{else}
{$product->available_now|escape:'html':'UTF-8'}
{/if}
</span>
{/if}
</p>
<div class="clearfix">
<div class="button-container">
{if (!$product->hasAttributes() OR (isset($add_prod_display) AND ($add_prod_display == 1))) AND $product->minimal_quantity == 1 AND $product->customizable != 2 AND !$PS_CATALOG_MODE}
{if ($product->quantity > 0 OR $product->allow_oosp)}
<a
class="button ajax_add_to_cart_button btn btn-default"
data-id-product="{$product->id}"
href="{$link->getPageLink('cart', true, NULL, "qty=1&amp;id_product={$product->id}&amp;token={$static_token}&amp;add")|escape:'html'}"
title="{l s='Add to cart'}">
<span>{l s='Add to cart'}</span>
</a>
{else}
<span class="ajax_add_to_cart_button button btn btn-default disabled"><span>{l s='Add to cart'}</span></span>
{/if}
{else}
{/if}
<a class="button lnk_view btn btn-default" href="{$product->getLink()}" title="{l s='View'}"><span>{l s='View'}</span></a>
</div>
</div>
</div>
</td>
{/foreach}
</tr>
{if $ordered_features}
{foreach from=$ordered_features item=feature}
<tr>
{cycle values='comparison_feature_odd,comparison_feature_even' assign='classname'}
<td class="{$classname} feature-name" >
<strong>{$feature.name|escape:'html':'UTF-8'}</strong>
</td>
{foreach from=$products item=product name=for_products}
{assign var='product_id' value=$product->id}
{assign var='feature_id' value=$feature.id_feature}
{if isset($product_features[$product_id])}
{assign var='tab' value=$product_features[$product_id]}
<td width="{$width}%" class="{$classname} comparison_infos">{if (isset($tab[$feature_id]))}{$tab[$feature_id]|escape:'html':'UTF-8'}{/if}</td>
{else}
<td width="{$width}%" class="{$classname} comparison_infos"></td>
{/if}
{/foreach}
</tr>
{/foreach}
{else}
<script type="text/javascript">
$('document').ready(function(){
if (typeof reloadProductComparison != 'undefined')
reloadProductComparison()
});
</script>
<div class="products_block table-responsive">
<table id="product_comparison" class="table table-bordered">
<tr>
<td></td>
<td colspan="{$products|@count + 1}">{l s='No features to compare'}</td>
</tr>
{/if}
<td class="td_empty compare_extra_information">
{$HOOK_COMPARE_EXTRA_INFORMATION}
<span>{l s='Features:'}</span>
</td>
{assign var='taxes_behavior' value=false}
{if $use_taxes && (!$priceDisplay || $priceDisplay == 2)}
{assign var='taxes_behavior' value=true}
{/if}
{foreach from=$products item=product name=for_products}
{assign var='replace_id' value=$product->id|cat:'|'}
<td class="ajax_block_product comparison_infos product-block">
<div class="remove">
<a class="cmp_remove" href="{$link->getPageLink('products-comparison', true)|escape:'html'}" title="{l s='Remove'}" data-id-product="{$product->id}"><i class="icon-trash"></i></a>
</div>
<div class="product-image-block">
<a href="{$product->getLink()|escape:html:'UTF-8'}" title="{$product->name|escape:html:'UTF-8'}" class="product_image" >
<img class="img-responsive" src="{$link->getImageLink($product->link_rewrite, $product->id_image, 'home_default')|escape:'html'}" alt="{$product->name|escape:html:'UTF-8'}" />
</a>
{if isset($product->show_price) && $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
{if $product->on_sale}
<div class="sale-box"><span class="sale-label">{l s='Sale!'}</span></div>
{/if}
{/if}
</div> <!-- end product-image-block -->
<h5>
<a class="product-name" href="{$product->getLink()|escape:html:'UTF-8'}" title="{$product->name|truncate:32:'...'|escape:'html':'UTF-8'}">
{$product->name|truncate:45:'...'|escape:'html':'UTF-8'}
</a>
</h5>
<div class="prices-container">
{if isset($product->show_price) && $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
<span class="price product-price">{convertPrice price=$product->getPrice($taxes_behavior)}</span>
{if isset($product->specificPrice) && $product->specificPrice}
{if {$product->specificPrice.reduction_type == 'percentage'}}
<span class="old-price product-price">{displayWtPrice p=$product->getPrice($taxes_behavior)+($product->getPrice($taxes_behavior)* $product->specificPrice.reduction)}</span>
<span class="price-percent-reduction">-{$product->specificPrice.reduction*100|floatval}%</span>
{else}
<span class="old-price product-price">{convertPrice price=($product->getPrice($taxes_behavior) + $product->specificPrice.reduction)}</span>
<span class="price-percent-reduction">-{convertPrice price=$product->specificPrice.reduction}</span>
{/if}
{/if}
{if $product->on_sale}
{elseif $product->specificPrice AND $product->specificPrice.reduction}
<div class="product_discount">
<span class="reduced-price">{l s='Reduced price!'}</span>
</div>
{/if}
{if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
{math equation="pprice / punit_price" pprice=$product->getPrice($taxes_behavior) punit_price=$product->unit_price_ratio assign=unit_price}
<span class="comparison_unit_price">&nbsp;{convertPrice price=$unit_price} {l s='per %s' sprintf=$product->unity|escape:'html':'UTF-8'}</span>
{else}
{/if}
{/if}
</div> <!-- end prices-container -->
{$HOOK_EXTRA_PRODUCT_COMPARISON}
</table>
</div>
<div class="product_desc">{$product->description_short|strip_tags|truncate:60:'...'}</div>
<div class="comparison_product_infos">
<!-- availability -->
<p class="comparison_availability_statut">
{if !(($product->quantity <= 0 && !$product->available_later) OR ($product->quantity != 0 && !$product->available_now) OR !$product->available_for_order OR $PS_CATALOG_MODE)}
<span id="availability_label">{l s='Availability:'}</span>
<span id="availability_value"{if $product->quantity <= 0} class="warning-inline"{/if}>
{if $product->quantity <= 0}
{if $allow_oosp}
{$product->available_later|escape:'html':'UTF-8'}
{else}
{l s='This product is no longer in stock.'}
{/if}
{else}
{$product->available_now|escape:'html':'UTF-8'}
{/if}
</span>
{/if}
</p>
<div class="clearfix">
<div class="button-container">
{if (!$product->hasAttributes() OR (isset($add_prod_display) AND ($add_prod_display == 1))) AND $product->minimal_quantity == 1 AND $product->customizable != 2 AND !$PS_CATALOG_MODE}
{if ($product->quantity > 0 OR $product->allow_oosp)}
<a
class="button ajax_add_to_cart_button btn btn-default"
data-id-product="{$product->id}"
href="{$link->getPageLink('cart', true, NULL, "qty=1&amp;id_product={$product->id}&amp;token={$static_token}&amp;add")|escape:'html'}"
title="{l s='Add to cart'}">
<span>{l s='Add to cart'}</span>
</a>
{else}
<span class="ajax_add_to_cart_button button btn btn-default disabled"><span>{l s='Add to cart'}</span></span>
{/if}
{/if}
<a class="button lnk_view btn btn-default" href="{$product->getLink()|escape:html:'UTF-8'}" title="{l s='View'}"><span>{l s='View'}</span></a>
</div>
</div>
</div> <!-- end comparison_product_infos -->
</td>
{/foreach}
</tr>
{if $ordered_features}
{foreach from=$ordered_features item=feature}
<tr>
{cycle values='comparison_feature_odd,comparison_feature_even' assign='classname'}
<td class="{$classname} feature-name" >
<strong>{$feature.name|escape:'html':'UTF-8'}</strong>
</td>
{foreach from=$products item=product name=for_products}
{assign var='product_id' value=$product->id}
{assign var='feature_id' value=$feature.id_feature}
{if isset($product_features[$product_id])}
{assign var='tab' value=$product_features[$product_id]}
<td class="{$classname} comparison_infos">{if (isset($tab[$feature_id]))}{$tab[$feature_id]|escape:'html':'UTF-8'}{/if}</td>
{else}
<td class="{$classname} comparison_infos"></td>
{/if}
{/foreach}
</tr>
{/foreach}
{else}
<tr>
<td></td>
<td colspan="{$products|@count}" class="text-center">{l s='No features to compare'}</td>
</tr>
{/if}
{$HOOK_EXTRA_PRODUCT_COMPARISON}
</table>
</div> <!-- end products_block -->
{else}
<p class="alert alert-warning">{l s='There are no products selected for comparison.'}</p>
{/if}
<ul class="footer_link">
<li><a class="button lnk_view btn btn-default" href="{$base_dir}"><span><i class="icon-chevron-left left"></i>{l s='Continue Shopping'}</span></a></li>
<li>
<a class="button lnk_view btn btn-default" href="{$base_dir}">
<span><i class="icon-chevron-left left"></i>{l s='Continue Shopping'}</span>
</a>
</li>
</ul>
+500 -412
View File
@@ -34,6 +34,7 @@
{l s='Your account has been created.'}
</p>
{/if}
{assign var='current_step' value='summary'}
{include file="$tpl_dir./order-steps.tpl"}
{include file="$tpl_dir./errors.tpl"}
@@ -44,444 +45,531 @@
<p class="alert alert-warning">{l s='This store has not accepted your new order.'}</p>
{else}
<script type="text/javascript">
// <![CDATA[
var currencySign = '{$currencySign|html_entity_decode:2:"UTF-8"}';
var currencyRate = '{$currencyRate|floatval}';
var currencyFormat = '{$currencyFormat|intval}';
var currencyBlank = '{$currencyBlank|intval}';
var txtProduct = "{l s='product' js=1}";
var txtProducts = "{l s='products' js=1}";
var deliveryAddress = {$cart->id_address_delivery|intval};
// ]]>
// <![CDATA[
var currencySign = '{$currencySign|html_entity_decode:2:"UTF-8"}';
var currencyRate = '{$currencyRate|floatval}';
var currencyFormat = '{$currencyFormat|intval}';
var currencyBlank = '{$currencyBlank|intval}';
var txtProduct = "{l s='product' js=1}";
var txtProducts = "{l s='products' js=1}";
var deliveryAddress = {$cart->id_address_delivery|intval};
// ]]>
</script>
<p style="display:none" id="emptyCartWarning" class="alert alert-warning">{l s='Your shopping cart is empty.'}</p>
{if isset($lastProductAdded) AND $lastProductAdded}
<div class="cart_last_product">
<div class="cart_last_product_header">
<div class="left">{l s='Last product added'}</div>
{if isset($lastProductAdded) AND $lastProductAdded}
<div class="cart_last_product">
<div class="cart_last_product_header">
<div class="left">{l s='Last product added'}</div>
</div>
<a class="cart_last_product_img" href="{$link->getProductLink($lastProductAdded.id_product, $lastProductAdded.link_rewrite, $lastProductAdded.category, null, null, $lastProductAdded.id_shop)|escape:'html':'UTF-8'}">
<img src="{$link->getImageLink($lastProductAdded.link_rewrite, $lastProductAdded.id_image, 'small_default')|escape:'html'}" alt="{$lastProductAdded.name|escape:'html':'UTF-8'}"/>
</a>
<div class="cart_last_product_content">
<p class="product-name">
<a href="{$link->getProductLink($lastProductAdded.id_product, $lastProductAdded.link_rewrite, $lastProductAdded.category, null, null, null, $lastProductAdded.id_product_attribute)|escape:'html':'UTF-8'}">
{$lastProductAdded.name|escape:'html':'UTF-8'}
</a>
</p>
{if isset($lastProductAdded.attributes) && $lastProductAdded.attributes}
<small>
<a href="{$link->getProductLink($lastProductAdded.id_product, $lastProductAdded.link_rewrite, $lastProductAdded.category, null, null, null, $lastProductAdded.id_product_attribute)|escape:'html':'UTF-8'}">
{$lastProductAdded.attributes|escape:'html':'UTF-8'}
</a>
</small>
{/if}
</div>
</div>
<a class="cart_last_product_img" href="{$link->getProductLink($lastProductAdded.id_product, $lastProductAdded.link_rewrite, $lastProductAdded.category, null, null, $lastProductAdded.id_shop)|escape:'html':'UTF-8'}"><img src="{$link->getImageLink($lastProductAdded.link_rewrite, $lastProductAdded.id_image, 'small_default')|escape:'html'}" alt="{$lastProductAdded.name|escape:'html':'UTF-8'}"/></a>
<div class="cart_last_product_content">
<p class="product-name"><a href="{$link->getProductLink($lastProductAdded.id_product, $lastProductAdded.link_rewrite, $lastProductAdded.category, null, null, null, $lastProductAdded.id_product_attribute)|escape:'html':'UTF-8'}">{$lastProductAdded.name|escape:'html':'UTF-8'}</a></p>
{if isset($lastProductAdded.attributes) && $lastProductAdded.attributes}<small><a href="{$link->getProductLink($lastProductAdded.id_product, $lastProductAdded.link_rewrite, $lastProductAdded.category, null, null, null, $lastProductAdded.id_product_attribute)|escape:'html':'UTF-8'}">{$lastProductAdded.attributes|escape:'html':'UTF-8'}</a></small>{/if}
</div>
</div>
{/if}
{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}"}
<div id="order-detail-content" class="table_block table-responsive">
<table id="cart_summary" class="table table-bordered">
<thead>
<tr>
<th class="cart_product first_item">{l s='Product'}</th>
<th class="cart_description item">{l s='Description'}</th>
<th class="cart_avail item">{l s='Avail.'}</th>
<th class="cart_unit item">{l s='Unit price'}</th>
<th class="cart_quantity item">{l s='Qty'}</th>
<th class="cart_total item">{l s='Total'}</th>
<th class="cart_delete last_item">&nbsp;</th>
</tr>
</thead>
<tfoot>
{if $use_taxes}
{if $priceDisplay}
<tr class="cart_total_price">
<td rowspan="{3+$total_discounts_num+$use_show_taxes+$total_wrapping_taxes_num}" colspan="2" id="cart_voucher" class="cart_voucher">
{if $voucherAllowed}
{if isset($errors_discount) && $errors_discount}
<ul class="alert alert-danger">
{foreach $errors_discount as $k=>$error}
<li>{$error|escape:'html':'UTF-8'}</li>
{/foreach}
</ul>
{/if}
<form action="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}" method="post" id="voucher">
<fieldset>
<h4>{l s='Vouchers'}</h4>
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>{l s='OK'}</span></button>
</fieldset>
</form>
{if $displayVouchers}
<p id="title" class="title-offers">{l s='Take advantage of our exclusive offers:'}</p>
<div id="display_cart_vouchers">
{foreach $displayVouchers as $voucher}
{if $voucher.code != ''}<span onclick="$('#discount_name').val('{$voucher.code}');return false;" class="voucher_name">{$voucher.code}</span> - {/if}{$voucher.name}<br />
{/foreach}
</div>
{/if}
{/if}
</td>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total products (tax excl.)'}{else}{l s='Total products'}{/if}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products}</td>
</tr>
{else}
<tr class="cart_total_price">
<td rowspan="{3+$total_discounts_num+$use_show_taxes+$total_wrapping_taxes_num}" colspan="2" id="cart_voucher" class="cart_voucher">
{if $voucherAllowed}
{if isset($errors_discount) && $errors_discount}
<ul class="alert alert-danger">
{foreach $errors_discount as $k=>$error}
<li>{$error|escape:'html':'UTF-8'}</li>
{/foreach}
</ul>
{/if}
<form action="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}" method="post" id="voucher">
<fieldset>
<h4>{l s='Vouchers'}</h4>
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>{l s='OK'}</span></button>
</fieldset>
</form>
{if $displayVouchers}
<p id="title" class="title-offers">{l s='Take advantage of our exclusive offers:'}</p>
<div id="display_cart_vouchers">
{foreach $displayVouchers as $voucher}
{if $voucher.code != ''}<span onclick="$('#discount_name').val('{$voucher.code}');return false;" class="voucher_name">{$voucher.code}</span> - {/if}{$voucher.name}<br />
{/foreach}
</div>
{/if}
{/if}
</td>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total products (tax incl.)'}{else}{l s='Total products'}{/if}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products_wt}</td>
</tr>
{/if}
{else}
<tr class="cart_total_price">
<td rowspan="{3+$total_discounts_num+$use_show_taxes+$total_wrapping_taxes_num}" colspan="2" id="cart_voucher" class="cart_voucher">
{if $voucherAllowed}
{if isset($errors_discount) && $errors_discount}
<ul class="alert alert-danger">
{foreach $errors_discount as $k=>$error}
<li>{$error|escape:'html':'UTF-8'}</li>
{/foreach}
</ul>
{/if}
<form action="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}" method="post" id="voucher">
<fieldset>
<h4>{l s='Vouchers'}</h4>
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>{l s='OK'}</span></button>
</fieldset>
</form>
{if $displayVouchers}
<p id="title" class="title-offers">{l s='Take advantage of our exclusive offers:'}</p>
<div id="display_cart_vouchers">
{foreach $displayVouchers as $voucher}
{if $voucher.code != ''}<span onclick="$('#discount_name').val('{$voucher.code}');return false;" class="voucher_name">{$voucher.code}</span> - {/if}{$voucher.name}<br />
{/foreach}
</div>
{/if}
{/if}
</td>
<td colspan="3" class="text-right">{l s='Total products'}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products}</td>
</tr>
{/if}
<tr{if $total_wrapping == 0} style="display: none;"{/if}>
<td colspan="3" class="text-right">
{if $use_taxes}
{if $display_tax_label}{l s='Total gift wrapping (tax incl.):'}{else}{l s='Total gift-wrapping cost:'}{/if}
{else}
{l s='Total gift-wrapping cost:'}
{/if}
</td>
<td colspan="2" class="price-discount price" id="total_wrapping">
{if $use_taxes}
{if $priceDisplay}
{displayPrice price=$total_wrapping_tax_exc}
{else}
{displayPrice price=$total_wrapping}
{/if}
{else}
{displayPrice price=$total_wrapping_tax_exc}
{/if}
</td>
</tr>
{if $total_shipping_tax_exc <= 0 && !isset($virtualCart)}
<tr class="cart_total_delivery" style="{if !isset($carrier->id) || is_null($carrier->id)}display:none;{/if}">
<td colspan="3" class="text-right">{l s='Shipping'}</td>
<td colspan="2" class="price" id="total_shipping">{l s='Free Shipping!'}</td>
</tr>
{else}
{if $use_taxes && $total_shipping_tax_exc != $total_shipping}
{if $priceDisplay}
<tr class="cart_total_delivery" {if $total_shipping_tax_exc <= 0} style="display:none;"{/if}>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total shipping (tax excl.)'}{else}{l s='Total shipping'}{/if}</td>
<td colspan="2" class="price" id="total_shipping">{displayPrice price=$total_shipping_tax_exc}</td>
</tr>
{else}
<tr class="cart_total_delivery"{if $total_shipping <= 0} style="display:none;"{/if}>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total shipping (tax incl.)'}{else}{l s='Total shipping'}{/if}</td>
<td colspan="2" class="price" id="total_shipping" >{displayPrice price=$total_shipping}</td>
</tr>
{/if}
{else}
<tr class="cart_total_delivery"{if $total_shipping_tax_exc <= 0} style="display:none;"{/if}>
<td colspan="3" class="text-right">{l s='Total shipping'}</td>
<td colspan="2" class="price" id="total_shipping" >{displayPrice price=$total_shipping_tax_exc}</td>
</tr>
{/if}
{/if}
<tr class="cart_total_voucher" {if $total_discounts == 0}style="display:none"{/if}>
<td colspan="3" class="text-right">
{if $display_tax_label}
{if $use_taxes && $priceDisplay == 0}
{l s='Total vouchers (tax incl.):'}
{else}
{l s='Total vouchers (tax excl.)'}
{/if}
{else}
{l s='Total vouchers'}
{/if}
</td>
<td colspan="2" class="price-discount price" id="total_discount">
{if $use_taxes && $priceDisplay == 0}
{assign var='total_discounts_negative' value=$total_discounts * -1}
{else}
{assign var='total_discounts_negative' value=$total_discounts_tax_exc * -1}
{/if}
{displayPrice price=$total_discounts_negative}
</td>
</tr>
{if $use_taxes && $show_taxes}
<tr class="cart_total_price">
<td colspan="3" class="text-right">{l s='Total (tax excl.)'}</td>
<td colspan="2" class="price" id="total_price_without_tax">{displayPrice price=$total_price_without_tax}</td>
</tr>
<tr class="cart_total_tax">
<td colspan="3" class="text-right">{l s='Total tax'}</td>
<td colspan="2" class="price" id="total_tax">{displayPrice price=$total_tax}</td>
</tr>
{/if}
<tr class="cart_total_price">
<td colspan="3" class="total_price_container text-right"><span>{l s='Total'}</span></td>
{if $use_taxes}
<td colspan="2" class="price" id="total_price_container">
<span id="total_price">{displayPrice price=$total_price}</span>
</td>
{else}
<td colspan="2" class="price" id="total_price_container">
<span id="total_price">{displayPrice price=$total_price_without_tax}</span>
</td>
{/if}
</tr>
</tfoot>
<tbody>
{assign var='odd' value=0}
{foreach $products as $product}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='odd' value=($odd+1)%2}
{assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId) || count($gift_products)}
{* Display the product line *}
{include file="$tpl_dir./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}
{* Then the customized datas ones*}
{if isset($customizedDatas.$productId.$productAttributeId)}
{foreach $customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] as $id_customization=>$customization}
<tr id="product_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" class="product_customization_for_{$product.id_product}_{$product.id_product_attribute}_{$product.id_address_delivery|intval}{if $odd} odd{else} even{/if} customization alternate_item {if $product@last && $customization@last && !count($gift_products)}last_item{/if}">
<td></td>
<td colspan="3">
{foreach $customization.datas as $type => $custom_data}
{if $type == $CUSTOMIZE_FILE}
<div class="customizationUploaded">
<ul class="customizationUploaded">
{foreach $custom_data as $picture}
<li><img src="{$pic_dir}{$picture.value}_small" alt="" class="customizationUploaded" /></li>
{/if}
{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}"}
<div id="order-detail-content" class="table_block table-responsive">
<table id="cart_summary" class="table table-bordered">
<thead>
<tr>
<th class="cart_product first_item">{l s='Product'}</th>
<th class="cart_description item">{l s='Description'}</th>
<th class="cart_avail item">{l s='Avail.'}</th>
<th class="cart_unit item">{l s='Unit price'}</th>
<th class="cart_quantity item">{l s='Qty'}</th>
<th class="cart_total item">{l s='Total'}</th>
<th class="cart_delete last_item">&nbsp;</th>
</tr>
</thead>
<tfoot>
{if $use_taxes}
{if $priceDisplay}
<tr class="cart_total_price">
<td rowspan="{3+$total_discounts_num+$use_show_taxes+$total_wrapping_taxes_num}" colspan="2" id="cart_voucher" class="cart_voucher">
{if $voucherAllowed}
{if isset($errors_discount) && $errors_discount}
<ul class="alert alert-danger">
{foreach $errors_discount as $k=>$error}
<li>{$error|escape:'html':'UTF-8'}</li>
{/foreach}
</ul>
</div>
{elseif $type == $CUSTOMIZE_TEXTFIELD}
<ul class="typedText">
{foreach $custom_data as $textField}
<li>
{if $textField.name}
{$textField.name}
{else}
{l s='Text #'}{$textField@index+1}
{/if}
<form action="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}" method="post" id="voucher">
<fieldset>
<h4>{l s='Vouchers'}</h4>
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>{l s='OK'}</span></button>
</fieldset>
</form>
{if $displayVouchers}
<p id="title" class="title-offers">{l s='Take advantage of our exclusive offers:'}</p>
<div id="display_cart_vouchers">
{foreach $displayVouchers as $voucher}
{if $voucher.code != ''}<span onclick="$('#discount_name').val('{$voucher.code}');return false;" class="voucher_name">{$voucher.code}</span> - {/if}{$voucher.name}<br />
{/foreach}
</div>
{/if}
{/if}
</td>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total products (tax excl.)'}{else}{l s='Total products'}{/if}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products}</td>
</tr>
{else}
<tr class="cart_total_price">
<td rowspan="{3+$total_discounts_num+$use_show_taxes+$total_wrapping_taxes_num}" colspan="2" id="cart_voucher" class="cart_voucher">
{if $voucherAllowed}
{if isset($errors_discount) && $errors_discount}
<ul class="alert alert-danger">
{foreach $errors_discount as $k=>$error}
<li>{$error|escape:'html':'UTF-8'}</li>
{/foreach}
</ul>
{/if}
<form action="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}" method="post" id="voucher">
<fieldset>
<h4>{l s='Vouchers'}</h4>
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>{l s='OK'}</span></button>
</fieldset>
</form>
{if $displayVouchers}
<p id="title" class="title-offers">{l s='Take advantage of our exclusive offers:'}</p>
<div id="display_cart_vouchers">
{foreach $displayVouchers as $voucher}
{if $voucher.code != ''}
<span onclick="$('#discount_name').val('{$voucher.code}');return false;" class="voucher_name">{$voucher.code}</span> -
{/if}
{l s=':'} {$textField.value}
</li>
{$voucher.name}
<br />
{/foreach}
</div>
{/if}
{/if}
</td>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total products (tax incl.)'}{else}{l s='Total products'}{/if}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products_wt}</td>
</tr>
{/if}
{else}
<tr class="cart_total_price">
<td rowspan="{3+$total_discounts_num+$use_show_taxes+$total_wrapping_taxes_num}" colspan="2" id="cart_voucher" class="cart_voucher">
{if $voucherAllowed}
{if isset($errors_discount) && $errors_discount}
<ul class="alert alert-danger">
{foreach $errors_discount as $k=>$error}
<li>{$error|escape:'html':'UTF-8'}</li>
{/foreach}
</ul>
{/if}
{/foreach}
</td>
<td class="cart_quantity" colspan="2">
{if isset($cannotModify) AND $cannotModify == 1}
<span>{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count}{else}{$product.cart_quantity-$quantityDisplayed}{/if}</span>
{else}
<input type="hidden" value="{$customization.quantity}" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}_hidden"/>
<input size="2" type="text" value="{$customization.quantity}" class="cart_quantity_input form-control grey" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}"/>
<div class="cart_quantity_button clearfix">
{if $product.minimal_quantity < ($customization.quantity -$quantityDisplayed) OR $product.minimal_quantity <= 1}
<a rel="nofollow" class="cart_quantity_down btn btn-default button-minus" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_address_delivery={$product.id_address_delivery}&amp;id_customization={$id_customization}&amp;op=down&amp;token={$token_cart}")|escape:'html'}" title="{l s='Subtract'}">
<span><i class="icon-minus"></i></span>
</a>
{else}
<a class="cart_quantity_down btn btn-default button-minus disabled" id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}" href="#" title="{l s='Subtract'}">
<span><i class="icon-minus"></i></span>
</a>
<form action="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}" method="post" id="voucher">
<fieldset>
<h4>{l s='Vouchers'}</h4>
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" />
<input type="hidden" name="submitDiscount" />
<button type="submit" name="submitAddDiscount" class="button btn btn-default button-small">
<span>{l s='OK'}</span>
</button>
</fieldset>
</form>
{if $displayVouchers}
<p id="title" class="title-offers">{l s='Take advantage of our exclusive offers:'}</p>
<div id="display_cart_vouchers">
{foreach $displayVouchers as $voucher}
{if $voucher.code != ''}
<span onclick="$('#discount_name').val('{$voucher.code}');return false;" class="voucher_name">{$voucher.code}</span> -
{/if}
{$voucher.name}<br />
{/foreach}
</div>
{/if}
<a rel="nofollow" class="cart_quantity_up btn btn-default button-plus" id="cart_quantity_up_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_address_delivery={$product.id_address_delivery}&amp;id_customization={$id_customization}&amp;token={$token_cart}")|escape:'html'}" title="{l s='Add'}"><span><i class="icon-plus"></i></span></a>
</div>
{/if}
</td>
<td class="cart_delete">
{if isset($cannotModify) AND $cannotModify == 1}
<td colspan="3" class="text-right">{l s='Total products'}</td>
<td colspan="2" class="price" id="total_product">{displayPrice price=$total_products}</td>
</tr>
{/if}
<tr{if $total_wrapping == 0} style="display: none;"{/if}>
<td colspan="3" class="text-right">
{if $use_taxes}
{if $display_tax_label}{l s='Total gift wrapping (tax incl.):'}{else}{l s='Total gift-wrapping cost:'}{/if}
{else}
<div>
<a rel="nofollow" title="{l s='Delete'}" class="cart_quantity_delete" id="{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "delete=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;id_address_delivery={$product.id_address_delivery}&amp;token={$token_cart}")|escape:'html'}"><i class=" icon-trash"></i></a>
</div>
{l s='Total gift-wrapping cost:'}
{/if}
</td>
<td colspan="2" class="price-discount price" id="total_wrapping">
{if $use_taxes}
{if $priceDisplay}
{displayPrice price=$total_wrapping_tax_exc}
{else}
{displayPrice price=$total_wrapping}
{/if}
{else}
{displayPrice price=$total_wrapping_tax_exc}
{/if}
</td>
</tr>
{assign var='quantityDisplayed' value=$quantityDisplayed+$customization.quantity}
{if $total_shipping_tax_exc <= 0 && !isset($virtualCart)}
<tr class="cart_total_delivery" style="{if !isset($carrier->id) || is_null($carrier->id)}display:none;{/if}">
<td colspan="3" class="text-right">{l s='Shipping'}</td>
<td colspan="2" class="price" id="total_shipping">{l s='Free Shipping!'}</td>
</tr>
{else}
{if $use_taxes && $total_shipping_tax_exc != $total_shipping}
{if $priceDisplay}
<tr class="cart_total_delivery" {if $total_shipping_tax_exc <= 0} style="display:none;"{/if}>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total shipping (tax excl.)'}{else}{l s='Total shipping'}{/if}</td>
<td colspan="2" class="price" id="total_shipping">{displayPrice price=$total_shipping_tax_exc}</td>
</tr>
{else}
<tr class="cart_total_delivery"{if $total_shipping <= 0} style="display:none;"{/if}>
<td colspan="3" class="text-right">{if $display_tax_label}{l s='Total shipping (tax incl.)'}{else}{l s='Total shipping'}{/if}</td>
<td colspan="2" class="price" id="total_shipping" >{displayPrice price=$total_shipping}</td>
</tr>
{/if}
{else}
<tr class="cart_total_delivery"{if $total_shipping_tax_exc <= 0} style="display:none;"{/if}>
<td colspan="3" class="text-right">{l s='Total shipping'}</td>
<td colspan="2" class="price" id="total_shipping" >{displayPrice price=$total_shipping_tax_exc}</td>
</tr>
{/if}
{/if}
<tr class="cart_total_voucher" {if $total_discounts == 0}style="display:none"{/if}>
<td colspan="3" class="text-right">
{if $display_tax_label}
{if $use_taxes && $priceDisplay == 0}
{l s='Total vouchers (tax incl.):'}
{else}
{l s='Total vouchers (tax excl.)'}
{/if}
{else}
{l s='Total vouchers'}
{/if}
</td>
<td colspan="2" class="price-discount price" id="total_discount">
{if $use_taxes && $priceDisplay == 0}
{assign var='total_discounts_negative' value=$total_discounts * -1}
{else}
{assign var='total_discounts_negative' value=$total_discounts_tax_exc * -1}
{/if}
{displayPrice price=$total_discounts_negative}
</td>
</tr>
{if $use_taxes && $show_taxes}
<tr class="cart_total_price">
<td colspan="3" class="text-right">{l s='Total (tax excl.)'}</td>
<td colspan="2" class="price" id="total_price_without_tax">{displayPrice price=$total_price_without_tax}</td>
</tr>
<tr class="cart_total_tax">
<td colspan="3" class="text-right">{l s='Total tax'}</td>
<td colspan="2" class="price" id="total_tax">{displayPrice price=$total_tax}</td>
</tr>
{/if}
<tr class="cart_total_price">
<td colspan="3" class="total_price_container text-right">
<span>{l s='Total'}</span>
</td>
{if $use_taxes}
<td colspan="2" class="price" id="total_price_container">
<span id="total_price">{displayPrice price=$total_price}</span>
</td>
{else}
<td colspan="2" class="price" id="total_price_container">
<span id="total_price">{displayPrice price=$total_price_without_tax}</span>
</td>
{/if}
</tr>
</tfoot>
<tbody>
{assign var='odd' value=0}
{foreach $products as $product}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='odd' value=($odd+1)%2}
{assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId) || count($gift_products)}
{* Display the product line *}
{include file="$tpl_dir./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}
{* Then the customized datas ones*}
{if isset($customizedDatas.$productId.$productAttributeId)}
{foreach $customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] as $id_customization=>$customization}
<tr
id="product_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}"
class="product_customization_for_{$product.id_product}_{$product.id_product_attribute}_{$product.id_address_delivery|intval}{if $odd} odd{else} even{/if} customization alternate_item {if $product@last && $customization@last && !count($gift_products)}last_item{/if}">
<td></td>
<td colspan="3">
{foreach $customization.datas as $type => $custom_data}
{if $type == $CUSTOMIZE_FILE}
<div class="customizationUploaded">
<ul class="customizationUploaded">
{foreach $custom_data as $picture}
<li><img src="{$pic_dir}{$picture.value}_small" alt="" class="customizationUploaded" /></li>
{/foreach}
</ul>
</div>
{elseif $type == $CUSTOMIZE_TEXTFIELD}
<ul class="typedText">
{foreach $custom_data as $textField}
<li>
{if $textField.name}
{$textField.name}
{else}
{l s='Text #'}{$textField@index+1}
{/if}
{l s=':'} {$textField.value}
</li>
{/foreach}
</ul>
{/if}
{/foreach}
</td>
<td class="cart_quantity" colspan="2">
{if isset($cannotModify) AND $cannotModify == 1}
<span>{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count}{else}{$product.cart_quantity-$quantityDisplayed}{/if}</span>
{else}
<input type="hidden" value="{$customization.quantity}" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}_hidden"/>
<input type="text" value="{$customization.quantity}" class="cart_quantity_input form-control grey" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}"/>
<div class="cart_quantity_button clearfix">
{if $product.minimal_quantity < ($customization.quantity -$quantityDisplayed) OR $product.minimal_quantity <= 1}
<a
id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}"
class="cart_quantity_down btn btn-default button-minus"
href="{$link->getPageLink('cart', true, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_address_delivery={$product.id_address_delivery}&amp;id_customization={$id_customization}&amp;op=down&amp;token={$token_cart}")|escape:'html'}"
rel="nofollow"
title="{l s='Subtract'}">
<span><i class="icon-minus"></i></span>
</a>
{else}
<a
id="cart_quantity_down_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}"
class="cart_quantity_down btn btn-default button-minus disabled"
href="#"
title="{l s='Subtract'}">
<span><i class="icon-minus"></i></span>
</a>
{/if}
<a
id="cart_quantity_up_{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}"
class="cart_quantity_up btn btn-default button-plus"
href="{$link->getPageLink('cart', true, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_address_delivery={$product.id_address_delivery}&amp;id_customization={$id_customization}&amp;token={$token_cart}")|escape:'html'}"
rel="nofollow"
title="{l s='Add'}">
<span><i class="icon-plus"></i></span>
</a>
</div>
{/if}
</td>
<td class="cart_delete">
{if isset($cannotModify) AND $cannotModify == 1}
{else}
<div>
<a
id="{$product.id_product}_{$product.id_product_attribute}_{$id_customization}_{$product.id_address_delivery|intval}"
class="cart_quantity_delete"
href="{$link->getPageLink('cart', true, NULL, "delete=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;id_address_delivery={$product.id_address_delivery}&amp;token={$token_cart}")|escape:'html'}"
rel="nofollow"
title="{l s='Delete'}">
<i class=" icon-trash"></i>
</a>
</div>
{/if}
</td>
</tr>
{assign var='quantityDisplayed' value=$quantityDisplayed+$customization.quantity}
{/foreach}
{* If it exists also some uncustomized products *}
{if $product.quantity-$quantityDisplayed > 0}{include file="$tpl_dir./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}{/if}
{/if}
{/foreach}
{* If it exists also some uncustomized products *}
{if $product.quantity-$quantityDisplayed > 0}{include file="$tpl_dir./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}{/if}
{/if}
{/foreach}
{assign var='last_was_odd' value=$product@iteration%2}
{foreach $gift_products as $product}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='odd' value=($product@iteration+$last_was_odd)%2}
{assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId)}
{assign var='cannotModify' value=1}
{* Display the gift product line *}
{include file="$tpl_dir./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}
{/foreach}
</tbody>
{if sizeof($discounts)}
<tbody>
{foreach $discounts as $discount}
<tr class="cart_discount {if $discount@last}last_item{elseif $discount@first}first_item{else}item{/if}" id="cart_discount_{$discount.id_discount}">
<td class="cart_discount_name" colspan="3">{$discount.name}</td>
<td class="cart_discount_price"><span class="price-discount">
{if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if}
</span></td>
<td class="cart_discount_delete">1</td>
<td class="cart_discount_price">
<span class="price-discount price">{if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if}</span>
</td>
<td class="price_discount_del text-center">
{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-trash"></i></a>{/if}
</td>
</tr>
{/foreach}
</tbody>
{/if}
</table>
</div>
{if $show_option_allow_separate_package}
<p>
<input type="checkbox" name="allow_seperated_package" id="allow_seperated_package" {if $cart->allow_seperated_package}checked="checked"{/if} autocomplete="off"/>
<label for="allow_seperated_package">{l s='Send available products first'}</label>
</p>
{/if}
{if !$opc}
{if Configuration::get('PS_ALLOW_MULTISHIPPING')}
<p class="enable-multishipping checkbox">
<input type="checkbox" {if $multi_shipping}checked="checked"{/if} id="enable-multishipping" />
<label for="enable-multishipping">{l s='I would like to specify a delivery address for each individual product.'}</label>
</p>
{/if}
{/if}
{* Define the style if it doesn't exist in the PrestaShop version*}
{* Will be deleted for 1.5 version and more *}
{if !isset($addresses_style)}
{$addresses_style.company = 'address_company'}
{$addresses_style.vat_number = 'address_company'}
{$addresses_style.firstname = 'address_name'}
{$addresses_style.lastname = 'address_name'}
{$addresses_style.address1 = 'address_address1'}
{$addresses_style.address2 = 'address_address2'}
{$addresses_style.city = 'address_city'}
{$addresses_style.country = 'address_country'}
{$addresses_style.phone = 'address_phone'}
{$addresses_style.phone_mobile = 'address_phone_mobile'}
{$addresses_style.alias = 'address_title'}
{/if}
{if ((!empty($delivery_option) AND !isset($virtualCart)) OR $delivery->id OR $invoice->id) AND !$opc}
<div class="order_delivery clearfix row">
{if !isset($formattedAddresses) || (count($formattedAddresses.invoice) == 0 && count($formattedAddresses.delivery) == 0) || (count($formattedAddresses.invoice.formated) == 0 && count($formattedAddresses.delivery.formated) == 0)}
{if $delivery->id}
<div class="col-xs-12 col-sm-6">
<ul id="delivery_address" class="address item box">
<li><h3 class="page-subheading">{l s='Delivery address'}&nbsp;<span class="address_alias">({$delivery->alias})</span></h3></li>
{if $delivery->company}<li class="address_company">{$delivery->company|escape:'html':'UTF-8'}</li>{/if}
<li class="address_name">{$delivery->firstname|escape:'html':'UTF-8'} {$delivery->lastname|escape:'html':'UTF-8'}</li>
<li class="address_address1">{$delivery->address1|escape:'html':'UTF-8'}</li>
{if $delivery->address2}<li class="address_address2">{$delivery->address2|escape:'html':'UTF-8'}</li>{/if}
<li class="address_city">{$delivery->postcode|escape:'html':'UTF-8'} {$delivery->city|escape:'html':'UTF-8'}</li>
<li class="address_country">{$delivery->country|escape:'html':'UTF-8'} {if $delivery_state}({$delivery_state|escape:'html':'UTF-8'}){/if}</li>
</ul>
</div>
{/if}
{if $invoice->id}
<div class="col-xs-12 col-sm-6">
<ul id="invoice_address" class="address alternate_item box">
<li><h3 class="page-subheading">{l s='Invoice address'}&nbsp;<span class="address_alias">({$invoice->alias})</span></h3></li>
{if $invoice->company}<li class="address_company">{$invoice->company|escape:'html':'UTF-8'}</li>{/if}
<li class="address_name">{$invoice->firstname|escape:'html':'UTF-8'} {$invoice->lastname|escape:'html':'UTF-8'}</li>
<li class="address_address1">{$invoice->address1|escape:'html':'UTF-8'}</li>
{if $invoice->address2}<li class="address_address2">{$invoice->address2|escape:'html':'UTF-8'}</li>{/if}
<li class="address_city">{$invoice->postcode|escape:'html':'UTF-8'} {$invoice->city|escape:'html':'UTF-8'}</li>
<li class="address_country">{$invoice->country|escape:'html':'UTF-8'} {if $invoice_state}({$invoice_state|escape:'html':'UTF-8'}){/if}</li>
</ul>
</div>
{/if}
{else}
{foreach from=$formattedAddresses key=k item=address}
<div class="col-xs-12 col-sm-6">
<ul class="address {if $address@last}last_item{elseif $address@first}first_item{/if} {if $address@index % 2}alternate_item{else}item{/if} box">
<li><h3 class="page-subheading">{if $k eq 'invoice'}{l s='Invoice address'}{elseif $k eq 'delivery' && $delivery->id}{l s='Delivery address'}{/if}{if isset($address.object.alias)}&nbsp;<span class="address_alias">({$address.object.alias})</span>{/if}</h3></li>
{foreach $address.ordered as $pattern}
{assign var=addressKey value=" "|explode:$pattern}
{assign var=addedli value=false}
{foreach from=$addressKey item=key name=foo}
{if isset($address.formated[$key]) && !empty($address.formated[$key])}
{if (!$addedli)}
{$addedli = true}
<li>
<span class="{if isset($addresses_style[$key])}{$addresses_style[$key]}{/if}">{/if}{$address.formated[$key]|escape:'html':'UTF-8'}{/if}{if ($smarty.foreach.foo.last && $addedli)}</span>
</li>{/if}
{assign var='last_was_odd' value=$product@iteration%2}
{foreach $gift_products as $product}
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='odd' value=($product@iteration+$last_was_odd)%2}
{assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId)}
{assign var='cannotModify' value=1}
{* Display the gift product line *}
{include file="$tpl_dir./shopping-cart-product-line.tpl" productLast=$product@last productFirst=$product@first}
{/foreach}
</tbody>
{if sizeof($discounts)}
<tbody>
{foreach $discounts as $discount}
<tr class="cart_discount {if $discount@last}last_item{elseif $discount@first}first_item{else}item{/if}" id="cart_discount_{$discount.id_discount}">
<td class="cart_discount_name" colspan="3">{$discount.name}</td>
<td class="cart_discount_price">
<span class="price-discount">
{if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if}
</span>
</td>
<td class="cart_discount_delete">1</td>
<td class="cart_discount_price">
<span class="price-discount price">{if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if}</span>
</td>
<td class="price_discount_del text-center">
{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-trash"></i>
</a>
{/if}
</td>
</tr>
{/foreach}
{/foreach}
</ul>
</div>
{/foreach}
</tbody>
{/if}
</table>
</div> <!-- end order-detail-content -->
{if $show_option_allow_separate_package}
<p>
<input type="checkbox" name="allow_seperated_package" id="allow_seperated_package" {if $cart->allow_seperated_package}checked="checked"{/if} autocomplete="off"/>
<label for="allow_seperated_package">{l s='Send available products first'}</label>
</p>
{/if}
</div>
{/if}
<div id="HOOK_SHOPPING_CART">{$HOOK_SHOPPING_CART}</div>
<p class="cart_navigation clearfix">
{if !$opc}
<a href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&amp;back={$back}')}{else}{$link->getPageLink('order', true, NULL, 'step=1')}{/if}" class="button btn btn-default standard-checkout button-medium" title="{l s='Proceed to checkout'}"><span>{l s='Proceed to checkout'}<i class="icon-chevron-right right"></i></span></a>
{if Configuration::get('PS_ALLOW_MULTISHIPPING')}
<a href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&amp;back={$back}')}{else}{$link->getPageLink('order', true, NULL, 'step=1')}{/if}&amp;multi-shipping=1" class="multishipping-button multishipping-checkout button btn btn-default button-medium" title="{l s='Proceed to checkout'}"><span>{l s='Proceed to checkout'}<i class="icon-chevron-right right"></i></span></a>
<p class="enable-multishipping checkbox">
<input type="checkbox" {if $multi_shipping}checked="checked"{/if} id="enable-multishipping" />
<label for="enable-multishipping">{l s='I would like to specify a delivery address for each individual product.'}</label>
</p>
{/if}
{/if}
<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="button-exclusive btn btn-default" title="{l s='Continue shopping'}"><i class="icon-chevron-left"></i>{l s='Continue shopping'}</a>
</p>
{* Define the style if it doesn't exist in the PrestaShop version*}
{* Will be deleted for 1.5 version and more *}
{if !isset($addresses_style)}
{$addresses_style.company = 'address_company'}
{$addresses_style.vat_number = 'address_company'}
{$addresses_style.firstname = 'address_name'}
{$addresses_style.lastname = 'address_name'}
{$addresses_style.address1 = 'address_address1'}
{$addresses_style.address2 = 'address_address2'}
{$addresses_style.city = 'address_city'}
{$addresses_style.country = 'address_country'}
{$addresses_style.phone = 'address_phone'}
{$addresses_style.phone_mobile = 'address_phone_mobile'}
{$addresses_style.alias = 'address_title'}
{/if}
{if ((!empty($delivery_option) AND !isset($virtualCart)) OR $delivery->id OR $invoice->id) AND !$opc}
<div class="order_delivery clearfix row">
{if !isset($formattedAddresses) || (count($formattedAddresses.invoice) == 0 && count($formattedAddresses.delivery) == 0) || (count($formattedAddresses.invoice.formated) == 0 && count($formattedAddresses.delivery.formated) == 0)}
{if $delivery->id}
<div class="col-xs-12 col-sm-6">
<ul id="delivery_address" class="address item box">
<li><h3 class="page-subheading">{l s='Delivery address'}&nbsp;<span class="address_alias">({$delivery->alias})</span></h3></li>
{if $delivery->company}<li class="address_company">{$delivery->company|escape:'html':'UTF-8'}</li>{/if}
<li class="address_name">{$delivery->firstname|escape:'html':'UTF-8'} {$delivery->lastname|escape:'html':'UTF-8'}</li>
<li class="address_address1">{$delivery->address1|escape:'html':'UTF-8'}</li>
{if $delivery->address2}<li class="address_address2">{$delivery->address2|escape:'html':'UTF-8'}</li>{/if}
<li class="address_city">{$delivery->postcode|escape:'html':'UTF-8'} {$delivery->city|escape:'html':'UTF-8'}</li>
<li class="address_country">{$delivery->country|escape:'html':'UTF-8'} {if $delivery_state}({$delivery_state|escape:'html':'UTF-8'}){/if}</li>
</ul>
</div>
{/if}
{if $invoice->id}
<div class="col-xs-12 col-sm-6">
<ul id="invoice_address" class="address alternate_item box">
<li><h3 class="page-subheading">{l s='Invoice address'}&nbsp;<span class="address_alias">({$invoice->alias})</span></h3></li>
{if $invoice->company}<li class="address_company">{$invoice->company|escape:'html':'UTF-8'}</li>{/if}
<li class="address_name">{$invoice->firstname|escape:'html':'UTF-8'} {$invoice->lastname|escape:'html':'UTF-8'}</li>
<li class="address_address1">{$invoice->address1|escape:'html':'UTF-8'}</li>
{if $invoice->address2}<li class="address_address2">{$invoice->address2|escape:'html':'UTF-8'}</li>{/if}
<li class="address_city">{$invoice->postcode|escape:'html':'UTF-8'} {$invoice->city|escape:'html':'UTF-8'}</li>
<li class="address_country">{$invoice->country|escape:'html':'UTF-8'} {if $invoice_state}({$invoice_state|escape:'html':'UTF-8'}){/if}</li>
</ul>
</div>
{/if}
{else}
{foreach from=$formattedAddresses key=k item=address}
<div class="col-xs-12 col-sm-6">
<ul class="address {if $address@last}last_item{elseif $address@first}first_item{/if} {if $address@index % 2}alternate_item{else}item{/if} box">
<li>
<h3 class="page-subheading">
{if $k eq 'invoice'}
{l s='Invoice address'}
{elseif $k eq 'delivery' && $delivery->id}
{l s='Delivery address'}
{/if}
{if isset($address.object.alias)}
<span class="address_alias">({$address.object.alias})</span>
{/if}
</h3>
</li>
{foreach $address.ordered as $pattern}
{assign var=addressKey value=" "|explode:$pattern}
{assign var=addedli value=false}
{foreach from=$addressKey item=key name=foo}
{if isset($address.formated[$key]) && !empty($address.formated[$key])}
{if (!$addedli)}
{$addedli = true}
<li><span class="{if isset($addresses_style[$key])}{$addresses_style[$key]}{/if}">
{/if}
{$address.formated[$key]|escape:'html':'UTF-8'}
{/if}
{if ($smarty.foreach.foo.last && $addedli)}
</span></li>
{/if}
{/foreach}
{/foreach}
</ul>
</div>
{/foreach}
{/if}
</div>
{/if}
<div id="HOOK_SHOPPING_CART">{$HOOK_SHOPPING_CART}</div>
<p class="cart_navigation clearfix">
{if !$opc}
<a
href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&amp;back={$back}')}{else}{$link->getPageLink('order', true, NULL, 'step=1')}{/if}"
class="button btn btn-default standard-checkout button-medium"
title="{l s='Proceed to checkout'}">
<span>{l s='Proceed to checkout'}<i class="icon-chevron-right right"></i></span>
</a>
{if Configuration::get('PS_ALLOW_MULTISHIPPING')}
<a
href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&amp;back={$back}')}{else}{$link->getPageLink('order', true, NULL, 'step=1')}{/if}&amp;multi-shipping=1"
class="multishipping-button multishipping-checkout button btn btn-default button-medium"
title="{l s='Proceed to checkout'}">
<span>{l s='Proceed to checkout'}<i class="icon-chevron-right right"></i></span>
</a>
{/if}
{/if}
<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="button-exclusive btn btn-default"
title="{l s='Continue shopping'}">
<i class="icon-chevron-left"></i>{l s='Continue shopping'}
</a>
</p>
{if !empty($HOOK_SHOPPING_CART_EXTRA)}
<div class="clear"></div>
<div class="cart_navigation_extra">
<div id="HOOK_SHOPPING_CART_EXTRA">{$HOOK_SHOPPING_CART_EXTRA}</div>
</div>
{/if}
{/if}
{/if}