Merge branch 'development' of https://github.com/PrestaShop/PrestaShop into development
This commit is contained in:
commit
101b37b40a
16 files changed
+95
-54
No files matched your search
@@ -656,11 +656,11 @@
|
|||||||
var id_product = Number(this.id_product);
|
var id_product = Number(this.id_product);
|
||||||
var id_product_attribute = Number(this.id_product_attribute);
|
var id_product_attribute = Number(this.id_product_attribute);
|
||||||
cart_quantity[Number(this.id_product)+'_'+Number(this.id_product_attribute)+'_'+Number(this.id_customization)] = this.cart_quantity;
|
cart_quantity[Number(this.id_product)+'_'+Number(this.id_product_attribute)+'_'+Number(this.id_customization)] = this.cart_quantity;
|
||||||
cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td><td><input type="text" size="7" rel="'+this.id_product+'_'+this.id_product_attribute+'" class="product_unit_price" value="' + formatCurrency(parseFloat(this.price.replace(',', '.')), currency_format, currency_sign, currency_blank) + '" /></td><td>';
|
cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td><td><input type="text" size="7" rel="'+this.id_product+'_'+this.id_product_attribute+'" class="product_unit_price" value="' + formatCurrency(this.numeric_price, currency_format, currency_sign, currency_blank) + '" /></td><td>';
|
||||||
cart_content += (!this.id_customization ? '<div style="float:left;"><a href="#" class="increaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><img src="../img/admin/up.gif" /></a><br /><a href="#" class="decreaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'"><img src="../img/admin/down.gif" /></a></div>' : '');
|
cart_content += (!this.id_customization ? '<div style="float:left;"><a href="#" class="increaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><img src="../img/admin/up.gif" /></a><br /><a href="#" class="decreaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'"><img src="../img/admin/down.gif" /></a></div>' : '');
|
||||||
cart_content += (!this.id_customization ? '<div style="float:left;"><input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" class="cart_quantity" size="2" value="'+this.cart_quantity+'" />' : '');
|
cart_content += (!this.id_customization ? '<div style="float:left;"><input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" class="cart_quantity" size="2" value="'+this.cart_quantity+'" />' : '');
|
||||||
cart_content += (!this.id_customization ? '<a href="#" class="delete_product" rel="delete_'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><img src="../img/admin/delete.gif" /></a></div>' : '');
|
cart_content += (!this.id_customization ? '<a href="#" class="delete_product" rel="delete_'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><img src="../img/admin/delete.gif" /></a></div>' : '');
|
||||||
cart_content += '</td><td>' + formatCurrency(parseFloat(this.total.replace(',', '.')), currency_format, currency_sign, currency_blank) + '</td></tr>';
|
cart_content += '</td><td>' + formatCurrency(this.numeric_total, currency_format, currency_sign, currency_blank) + '</td></tr>';
|
||||||
|
|
||||||
if (this.id_customization && this.id_customization != 0)
|
if (this.id_customization && this.id_customization != 0)
|
||||||
{
|
{
|
||||||
|
|||||||
+14
-10
@@ -128,32 +128,36 @@ class FeatureValueCore extends ObjectModel
|
|||||||
return $tab['value'];
|
return $tab['value'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function addFeatureValueImport($id_feature, $value, $id_product = null, $id_lang = null)
|
public static function addFeatureValueImport($id_feature, $value, $id_product = null, $id_lang = null, $custom = false)
|
||||||
{
|
{
|
||||||
$id_feature_value = false;
|
$id_feature_value = false;
|
||||||
if (!is_null($id_product) && $id_product)
|
if (!is_null($id_product) && $id_product)
|
||||||
{
|
{
|
||||||
$id_feature_value = Db::getInstance()->getValue('
|
$id_feature_value = Db::getInstance()->getValue('
|
||||||
SELECT `id_feature_value`
|
SELECT fp.`id_feature_value`
|
||||||
FROM '._DB_PREFIX_.'feature_product
|
FROM '._DB_PREFIX_.'feature_product fp
|
||||||
WHERE `id_feature` = '.(int)$id_feature.'
|
INNER JOIN '._DB_PREFIX_.'feature_value fv USING (`id_feature_value`)
|
||||||
AND `id_product` = '.(int)$id_product);
|
WHERE fp.`id_feature` = '.(int)$id_feature.'
|
||||||
|
AND fv.`custom` = '.(int)$custom.'
|
||||||
|
AND fp.`id_product` = '.(int)$id_product);
|
||||||
|
|
||||||
if ($id_feature_value && !is_null($id_lang) && $id_lang)
|
if ($custom && $id_feature_value && !is_null($id_lang) && $id_lang)
|
||||||
Db::getInstance()->execute('
|
Db::getInstance()->execute('
|
||||||
UPDATE '._DB_PREFIX_.'feature_value_lang
|
UPDATE '._DB_PREFIX_.'feature_value_lang
|
||||||
SET `value` = \''.pSQL($value).'\'
|
SET `value` = \''.pSQL($value).'\'
|
||||||
WHERE `id_feature_value` = '.(int)$id_feature_value.'
|
WHERE `id_feature_value` = '.(int)$id_feature_value.'
|
||||||
|
AND `value` != \''.pSQL($value).'\'
|
||||||
AND `id_lang` = '.(int)$id_lang);
|
AND `id_lang` = '.(int)$id_lang);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$id_feature_value)
|
if (!$custom)
|
||||||
$id_feature_value = Db::getInstance()->getValue('
|
$id_feature_value = Db::getInstance()->getValue('
|
||||||
SELECT fv.`id_feature_value`
|
SELECT fv.`id_feature_value`
|
||||||
FROM '._DB_PREFIX_.'feature_value fv
|
FROM '._DB_PREFIX_.'feature_value fv
|
||||||
LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value`)
|
LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value` AND fvl.`id_lang` = '.(int)$id_lang.')
|
||||||
WHERE `value` = \''.pSQL($value).'\'
|
WHERE `value` = \''.pSQL($value).'\'
|
||||||
AND fv.`id_feature` = '.(int)$id_feature.'
|
AND fv.`id_feature` = '.(int)$id_feature.'
|
||||||
|
AND fv.`custom` = 0
|
||||||
GROUP BY fv.`id_feature_value`');
|
GROUP BY fv.`id_feature_value`');
|
||||||
|
|
||||||
if ($id_feature_value)
|
if ($id_feature_value)
|
||||||
@@ -162,7 +166,7 @@ class FeatureValueCore extends ObjectModel
|
|||||||
// Feature doesn't exist, create it
|
// Feature doesn't exist, create it
|
||||||
$feature_value = new FeatureValue();
|
$feature_value = new FeatureValue();
|
||||||
$feature_value->id_feature = (int)$id_feature;
|
$feature_value->id_feature = (int)$id_feature;
|
||||||
$feature_value->custom = 0;
|
$feature_value->custom = (bool)$custom;
|
||||||
foreach (Language::getLanguages() as $language)
|
foreach (Language::getLanguages() as $language)
|
||||||
$feature_value->value[$language['id_lang']] = $value;
|
$feature_value->value[$language['id_lang']] = $value;
|
||||||
$feature_value->add();
|
$feature_value->add();
|
||||||
|
|||||||
@@ -3590,6 +3590,7 @@ class ProductCore extends ObjectModel
|
|||||||
if ($result3)
|
if ($result3)
|
||||||
{
|
{
|
||||||
$result3['id_feature_value'] = $new_id_feature_value;
|
$result3['id_feature_value'] = $new_id_feature_value;
|
||||||
|
$result3['value'] = pSQL($result3['value']);
|
||||||
$return &= Db::getInstance()->insert('feature_value_lang', $result3);
|
$return &= Db::getInstance()->insert('feature_value_lang', $result3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+43
-18
@@ -74,11 +74,22 @@ class ProductSaleCore
|
|||||||
$groups = FrontController::getCurrentCustomerGroups();
|
$groups = FrontController::getCurrentCustomerGroups();
|
||||||
$sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
|
$sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
|
||||||
$interval = Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20;
|
$interval = Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20;
|
||||||
|
|
||||||
|
//Subquery: get product ids in a separate query to (greatly!) improve performances and RAM usage
|
||||||
|
$sql = 'SELECT cp.`id_product`
|
||||||
|
FROM `'._DB_PREFIX_.'category_group` cg
|
||||||
|
LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
|
||||||
|
WHERE cg.`id_group` '.$sql_groups;
|
||||||
|
$products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
|
||||||
|
$ids = array();
|
||||||
|
foreach ($products as $product)
|
||||||
|
$ids[$product['id_product']] = 1;
|
||||||
|
$ids = array_keys($ids);
|
||||||
|
sort($ids);
|
||||||
|
$ids = count($ids) > 0 ? implode(',', $ids) : 'NULL';
|
||||||
|
|
||||||
$prefix = '';
|
//Main query
|
||||||
if ($order_by == 'date_add')
|
if ($order_by == 'date_add')
|
||||||
$prefix = 'p.';
|
|
||||||
|
|
||||||
$sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity,
|
$sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity,
|
||||||
pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`,
|
pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`,
|
||||||
pl.`meta_keywords`, pl.`meta_title`, pl.`name`,
|
pl.`meta_keywords`, pl.`meta_title`, pl.`name`,
|
||||||
@@ -103,13 +114,8 @@ class ProductSaleCore
|
|||||||
LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`)
|
LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`)
|
||||||
'.Product::sqlStock('p').'
|
'.Product::sqlStock('p').'
|
||||||
WHERE product_shop.`active` = 1
|
WHERE product_shop.`active` = 1
|
||||||
AND product_shop.`visibility` != \'none\'
|
AND p.`visibility` != \'none\'
|
||||||
AND p.`id_product` IN (
|
AND p.`id_product` IN ('.$ids.')
|
||||||
SELECT cp.`id_product`
|
|
||||||
FROM `'._DB_PREFIX_.'category_group` cg
|
|
||||||
LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
|
|
||||||
WHERE cg.`id_group` '.$sql_groups.'
|
|
||||||
)
|
|
||||||
GROUP BY product_shop.id_product
|
GROUP BY product_shop.id_product
|
||||||
ORDER BY '.(!empty($order_table) ? '`'.pSQL($order_table).'`.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way).'
|
ORDER BY '.(!empty($order_table) ? '`'.pSQL($order_table).'`.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way).'
|
||||||
LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;
|
LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;
|
||||||
@@ -141,11 +147,27 @@ class ProductSaleCore
|
|||||||
$groups = FrontController::getCurrentCustomerGroups();
|
$groups = FrontController::getCurrentCustomerGroups();
|
||||||
$sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
|
$sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
|
||||||
|
|
||||||
|
//Subquery: get product ids in a separate query to (greatly!) improve performances and RAM usage
|
||||||
|
$sql = 'SELECT cp.`id_product`
|
||||||
|
FROM `'._DB_PREFIX_.'category_group` cg
|
||||||
|
LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
|
||||||
|
WHERE cg.`id_group` '.$sql_groups.' AND cp.`id_product` IS NOT NULL';
|
||||||
|
$products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
|
||||||
|
$ids = array();
|
||||||
|
foreach ($products as $product)
|
||||||
|
$ids[$product['id_product']] = 1;
|
||||||
|
$ids = array_keys($ids);
|
||||||
|
sort($ids);
|
||||||
|
$ids = count($ids) > 0 ? implode(',', $ids) : 'NULL';
|
||||||
|
|
||||||
|
//Main query
|
||||||
$sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, MAX(image_shop.`id_image`) id_image, il.`legend`,
|
$sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, MAX(image_shop.`id_image`) id_image, il.`legend`,
|
||||||
ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category
|
ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category, p.show_price, p.available_for_order, p.quantity, p.customizable,
|
||||||
|
IFNULL(pa.minimal_quantity, p.minimal_quantity) as minimal_quantity, p.out_of_stock
|
||||||
FROM `'._DB_PREFIX_.'product_sale` ps
|
FROM `'._DB_PREFIX_.'product_sale` ps
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product`
|
LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product`
|
||||||
'.Shop::addSqlAssociation('product', 'p').'
|
'.Shop::addSqlAssociation('product', 'p').'
|
||||||
|
LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (ps.`id_product` = pa.`id_product` AND pa.default_on = 1)
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
|
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
|
||||||
ON p.`id_product` = pl.`id_product`
|
ON p.`id_product` = pl.`id_product`
|
||||||
AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
|
AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
|
||||||
@@ -156,16 +178,12 @@ class ProductSaleCore
|
|||||||
ON cl.`id_category` = product_shop.`id_category_default`
|
ON cl.`id_category` = product_shop.`id_category_default`
|
||||||
AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
|
AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
|
||||||
WHERE product_shop.`active` = 1
|
WHERE product_shop.`active` = 1
|
||||||
AND product_shop.`visibility` != \'none\'
|
AND p.`visibility` != \'none\'
|
||||||
AND p.`id_product` IN (
|
AND p.`id_product` IN ('.$ids.')
|
||||||
SELECT cp.`id_product`
|
|
||||||
FROM `'._DB_PREFIX_.'category_group` cg
|
|
||||||
LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
|
|
||||||
WHERE cg.`id_group` '.$sql_groups.'
|
|
||||||
)
|
|
||||||
GROUP BY product_shop.id_product
|
GROUP BY product_shop.id_product
|
||||||
ORDER BY sales DESC
|
ORDER BY sales DESC
|
||||||
LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;
|
LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;
|
||||||
|
|
||||||
if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql))
|
if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -173,6 +191,13 @@ class ProductSaleCore
|
|||||||
{
|
{
|
||||||
$row['link'] = $context->link->getProductLink($row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']);
|
$row['link'] = $context->link->getProductLink($row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']);
|
||||||
$row['id_image'] = Product::defineProductImage($row, $id_lang);
|
$row['id_image'] = Product::defineProductImage($row, $id_lang);
|
||||||
|
$row['allow_oosp'] = Product::isAvailableWhenOutOfStock($row['out_of_stock']);
|
||||||
|
$row['price_tax_exc'] = Product::getPriceStatic(
|
||||||
|
(int)$row['id_product'],
|
||||||
|
false,
|
||||||
|
((isset($row['id_product_attribute']) && !empty($row['id_product_attribute'])) ? (int)$row['id_product_attribute'] : null),
|
||||||
|
(Product::$_taxCalculationMethod == PS_TAX_EXC ? 2 : 6)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -551,6 +551,8 @@ class AdminCartsControllerCore extends AdminController
|
|||||||
if (count($summary['products']))
|
if (count($summary['products']))
|
||||||
foreach ($summary['products'] as &$product)
|
foreach ($summary['products'] as &$product)
|
||||||
{
|
{
|
||||||
|
$product['numeric_price'] = $product['price'];
|
||||||
|
$product['numeric_total'] = $product['total'];
|
||||||
$product['price'] = str_replace($currency->sign, '', Tools::displayPrice($product['price'], $currency));
|
$product['price'] = str_replace($currency->sign, '', Tools::displayPrice($product['price'], $currency));
|
||||||
$product['total'] = str_replace($currency->sign, '', Tools::displayPrice($product['total'], $currency));
|
$product['total'] = str_replace($currency->sign, '', Tools::displayPrice($product['total'], $currency));
|
||||||
$product['image_link'] = $this->context->link->getImageLink($product['link_rewrite'], $product['id_image'], 'small_default');
|
$product['image_link'] = $this->context->link->getImageLink($product['link_rewrite'], $product['id_image'], 'small_default');
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ class AdminImportControllerCore extends AdminController
|
|||||||
'delete_existing_images' => array(
|
'delete_existing_images' => array(
|
||||||
'label' => $this->l('Delete existing images (0 = No, 1 = Yes)')
|
'label' => $this->l('Delete existing images (0 = No, 1 = Yes)')
|
||||||
),
|
),
|
||||||
'features' => array('label' => $this->l('Feature(Name:Value:Position)')),
|
'features' => array('label' => $this->l('Feature(Name:Value:Position:Customized)')),
|
||||||
'online_only' => array('label' => $this->l('Available online only (0 = No, 1 = Yes)')),
|
'online_only' => array('label' => $this->l('Available online only (0 = No, 1 = Yes)')),
|
||||||
'condition' => array('label' => $this->l('Condition')),
|
'condition' => array('label' => $this->l('Condition')),
|
||||||
'customizable' => array('label' => $this->l('Customizable (0 = No, 1 = Yes)')),
|
'customizable' => array('label' => $this->l('Customizable (0 = No, 1 = Yes)')),
|
||||||
@@ -472,9 +472,8 @@ class AdminImportControllerCore extends AdminController
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->separator = Tools::substr(strval(trim(Tools::getValue('separator', ','))), 0, 1);
|
$this->separator = ($separator = Tools::substr(strval(trim(Tools::getValue('separator'))), 0, 1)) ? $separator : ';';
|
||||||
$this->multiple_value_separator = Tools::substr(strval(trim(Tools::getValue('multiple_value_separator', ';'))), 0, 1);
|
$this->multiple_value_separator = ($separator = Tools::substr(strval(trim(Tools::getValue('multiple_value_separator'))), 0, 1)) ? $separator : ',';
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -569,8 +568,8 @@ class AdminImportControllerCore extends AdminController
|
|||||||
|
|
||||||
$this->context->cookie->entity_selected = (int)Tools::getValue('entity');
|
$this->context->cookie->entity_selected = (int)Tools::getValue('entity');
|
||||||
$this->context->cookie->iso_lang_selected = base64_encode(Tools::getValue('iso_lang'));
|
$this->context->cookie->iso_lang_selected = base64_encode(Tools::getValue('iso_lang'));
|
||||||
$this->context->cookie->separator_selected = base64_encode(Tools::getValue('separator'));
|
$this->context->cookie->separator_selected = base64_encode($this->separator);
|
||||||
$this->context->cookie->multiple_value_separator_selected = base64_encode(Tools::getValue('multiple_value_separator'));
|
$this->context->cookie->multiple_value_separator_selected = base64_encode($this->multiple_value_separator);
|
||||||
$this->context->cookie->csv_selected = base64_encode(Tools::getValue('csv'));
|
$this->context->cookie->csv_selected = base64_encode(Tools::getValue('csv'));
|
||||||
|
|
||||||
$this->tpl_view_vars = array(
|
$this->tpl_view_vars = array(
|
||||||
@@ -1138,7 +1137,7 @@ class AdminImportControllerCore extends AdminController
|
|||||||
else
|
else
|
||||||
$product = new Product();
|
$product = new Product();
|
||||||
|
|
||||||
if (array_key_exists('id', $info) && (int)$info['id'] && Product::existsInDatabase((int)$info['id'], 'product'))
|
if (isset($product->id) && $product->id && Product::existsInDatabase((int)$product->id, 'product'))
|
||||||
{
|
{
|
||||||
$product->loadStockData();
|
$product->loadStockData();
|
||||||
$category_data = Product::getProductCategories((int)$product->id);
|
$category_data = Product::getProductCategories((int)$product->id);
|
||||||
@@ -1602,13 +1601,14 @@ class AdminImportControllerCore extends AdminController
|
|||||||
$feature_name = isset($tab_feature[0]) ? trim($tab_feature[0]) : '';
|
$feature_name = isset($tab_feature[0]) ? trim($tab_feature[0]) : '';
|
||||||
$feature_value = isset($tab_feature[1]) ? trim($tab_feature[1]) : '';
|
$feature_value = isset($tab_feature[1]) ? trim($tab_feature[1]) : '';
|
||||||
$position = isset($tab_feature[2]) ? (int)$tab_feature[2] : false;
|
$position = isset($tab_feature[2]) ? (int)$tab_feature[2] : false;
|
||||||
|
$custom = isset($tab_feature[3]) ? (int)$tab_feature[3] : false;
|
||||||
if(!empty($feature_name) && !empty($feature_value))
|
if(!empty($feature_name) && !empty($feature_value))
|
||||||
{
|
{
|
||||||
$id_feature = (int)Feature::addFeatureImport($feature_name, $position);
|
$id_feature = (int)Feature::addFeatureImport($feature_name, $position);
|
||||||
$id_product = null;
|
$id_product = null;
|
||||||
if (Tools::getValue('forceIDs') || Tools::getValue('match_ref'))
|
if (Tools::getValue('forceIDs') || Tools::getValue('match_ref'))
|
||||||
$id_product = (int)$product->id;
|
$id_product = (int)$product->id;
|
||||||
$id_feature_value = (int)FeatureValue::addFeatureValueImport($id_feature, $feature_value, $id_product, $id_lang);
|
$id_feature_value = (int)FeatureValue::addFeatureValueImport($id_feature, $feature_value, $id_product, $id_lang, $custom);
|
||||||
Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
|
Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1626,7 +1626,6 @@ class AdminImportControllerCore extends AdminController
|
|||||||
StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, $this->context->shop->id);
|
StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, $this->context->shop->id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->closeCsvFile($handle);
|
$this->closeCsvFile($handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1387,7 +1387,9 @@ class AdminSupplyOrdersControllerCore extends AdminController
|
|||||||
true,
|
true,
|
||||||
$supply_order->id);
|
$supply_order->id);
|
||||||
|
|
||||||
if (!$res)
|
if ($res)
|
||||||
|
StockAvailable::synchronize($supply_order_detail->id_product);
|
||||||
|
else
|
||||||
$this->errors[] = Tools::displayError($this->l('Something went wrong when adding products to the warehouse.'));
|
$this->errors[] = Tools::displayError($this->l('Something went wrong when adding products to the warehouse.'));
|
||||||
|
|
||||||
$location = Warehouse::getProductLocation($supply_order_detail->id_product,
|
$location = Warehouse::getProductLocation($supply_order_detail->id_product,
|
||||||
|
|||||||
@@ -1221,6 +1221,8 @@ class AdminTranslationsControllerCore extends AdminController
|
|||||||
// Set the path of selected theme
|
// Set the path of selected theme
|
||||||
if ($this->theme_selected)
|
if ($this->theme_selected)
|
||||||
define('_PS_THEME_SELECTED_DIR_', _PS_ROOT_DIR_.'/themes/'.$this->theme_selected.'/');
|
define('_PS_THEME_SELECTED_DIR_', _PS_ROOT_DIR_.'/themes/'.$this->theme_selected.'/');
|
||||||
|
else
|
||||||
|
define('_PS_THEME_SELECTED_DIR_', '');
|
||||||
|
|
||||||
// Get type of translation
|
// Get type of translation
|
||||||
if (($type = Tools::getValue('type')) && !is_array($type))
|
if (($type = Tools::getValue('type')) && !is_array($type))
|
||||||
|
|||||||
+1
-1
@@ -73,7 +73,7 @@ function formatCurrency(price, currencyFormat, currencySign, currencyBlank)
|
|||||||
if (currencyFormat == 4)
|
if (currencyFormat == 4)
|
||||||
return (formatNumber(price, priceDisplayPrecision, ',', '.') + blank + currencySign);
|
return (formatNumber(price, priceDisplayPrecision, ',', '.') + blank + currencySign);
|
||||||
if (currencyFormat == 5)
|
if (currencyFormat == 5)
|
||||||
return (formatNumber(price, priceDisplayPrecision, ' ', '.') + blank + currencySign);
|
return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '\'', '.'));
|
||||||
return price;
|
return price;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ var ajaxCart = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// add a product in the cart via ajax
|
// add a product in the cart via ajax
|
||||||
add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist){
|
add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, wishlist){
|
||||||
if (addedFromProductPage && !checkCustomizations())
|
if (addedFromProductPage && !checkCustomizations())
|
||||||
{
|
{
|
||||||
alert(fieldRequired);
|
alert(fieldRequired);
|
||||||
@@ -204,9 +204,9 @@ var ajaxCart = {
|
|||||||
data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''),
|
data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''),
|
||||||
success: function(jsonData,textStatus,jqXHR)
|
success: function(jsonData,textStatus,jqXHR)
|
||||||
{
|
{
|
||||||
// add appliance to whishlist module
|
// add appliance to wishlist module
|
||||||
if (whishlist && !jsonData.errors)
|
if (wishlist && !jsonData.errors)
|
||||||
WishlistAddProductCart(whishlist[0], idProduct, idCombination, whishlist[1]);
|
WishlistAddProductCart(wishlist[0], idProduct, idCombination, wishlist[1]);
|
||||||
|
|
||||||
// add the picture to the cart
|
// add the picture to the cart
|
||||||
var $element = $(callerElement).parent().parent().find('a.product_image img,a.product_img_link img');
|
var $element = $(callerElement).parent().parent().find('a.product_image img,a.product_img_link img');
|
||||||
|
|||||||
@@ -88,7 +88,9 @@ class LoyaltyModule extends ObjectModel
|
|||||||
$currentContext = Context::getContext();
|
$currentContext = Context::getContext();
|
||||||
$context = clone $currentContext;
|
$context = clone $currentContext;
|
||||||
$context->cart = $cart;
|
$context->cart = $cart;
|
||||||
$context->customer = new Customer($context->cart->id_customer);
|
// if customer is logged we do not recreate it
|
||||||
|
if(!$context->customer->isLogged(true))
|
||||||
|
$context->customer = new Customer($context->cart->id_customer);
|
||||||
$context->language = new Language($context->cart->id_lang);
|
$context->language = new Language($context->cart->id_lang);
|
||||||
$context->shop = new Shop($context->cart->id_shop);
|
$context->shop = new Shop($context->cart->id_shop);
|
||||||
$context->currency = new Currency($context->cart->id_currency, null, $context->shop->id);
|
$context->currency = new Currency($context->cart->id_currency, null, $context->shop->id);
|
||||||
|
|||||||
@@ -452,16 +452,20 @@ class MailAlerts extends Module
|
|||||||
public function hookActionUpdateQuantity($params)
|
public function hookActionUpdateQuantity($params)
|
||||||
{
|
{
|
||||||
$id_product = (int)$params['id_product'];
|
$id_product = (int)$params['id_product'];
|
||||||
|
$product = new Product($id_product);
|
||||||
|
$product_has_attributes = $product->hasAttributes();
|
||||||
$id_product_attribute = (int)$params['id_product_attribute'];
|
$id_product_attribute = (int)$params['id_product_attribute'];
|
||||||
$quantity = (int)$params['quantity'];
|
$quantity = (int)$params['quantity'];
|
||||||
$context = Context::getContext();
|
$context = Context::getContext();
|
||||||
$id_shop = (int)$context->shop->id;
|
$id_shop = (int)$context->shop->id;
|
||||||
$id_lang = (int)$context->language->id;
|
$id_lang = (int)$context->language->id;
|
||||||
$product = new Product($id_product, true, $id_lang, $id_shop, $context);
|
$product = new Product($id_product, true, $id_lang, $id_shop, $context);
|
||||||
$configuration = Configuration::getMultiple(array('MA_LAST_QTIES', 'PS_STOCK_MANAGEMENT', 'PS_SHOP_EMAIL', 'PS_SHOP_NAME'), $id_lang, null, $id_shop);
|
$configuration = Configuration::getMultiple(array('MA_LAST_QTIES', 'PS_STOCK_MANAGEMENT', 'PS_SHOP_EMAIL', 'PS_SHOP_NAME'), null, null, $id_shop);
|
||||||
$ma_last_qties = (int)$configuration['MA_LAST_QTIES'];
|
$ma_last_qties = (int)$configuration['MA_LAST_QTIES'];
|
||||||
|
|
||||||
if ($product->active == 1 && (int)$quantity <= $ma_last_qties && !(!$this->_merchant_oos || empty($this->_merchant_mails)) && $configuration['PS_STOCK_MANAGEMENT'])
|
$check_oos = ($product_has_attributes && $id_product_attribute) || (!$product_has_attributes && !$id_product_attribute);
|
||||||
|
|
||||||
|
if ($check_oos && $product->active == 1 && (int)$quantity <= $ma_last_qties && !(!$this->_merchant_oos || empty($this->_merchant_mails)) && $configuration['PS_STOCK_MANAGEMENT'])
|
||||||
{
|
{
|
||||||
$iso = Language::getIsoById($id_lang);
|
$iso = Language::getIsoById($id_lang);
|
||||||
$product_name = Product::getProductName($id_product, $id_product_attribute, $id_lang);
|
$product_name = Product::getProductName($id_product, $id_product_attribute, $id_lang);
|
||||||
|
|||||||
+2
-2
@@ -151,7 +151,7 @@
|
|||||||
<td style="text-align: right; width: 10%">
|
<td style="text-align: right; width: 10%">
|
||||||
{if (isset($order_detail.reduction_amount) && $order_detail.reduction_amount > 0)}
|
{if (isset($order_detail.reduction_amount) && $order_detail.reduction_amount > 0)}
|
||||||
-{displayPrice currency=$order->id_currency price=$order_detail.reduction_amount}
|
-{displayPrice currency=$order->id_currency price=$order_detail.reduction_amount}
|
||||||
{else if (isset($order_detail.reduction_percent) && $order_detail.reduction_percent > 0)}
|
{elseif (isset($order_detail.reduction_percent) && $order_detail.reduction_percent > 0)}
|
||||||
-{$order_detail.reduction_percent}%
|
-{$order_detail.reduction_percent}%
|
||||||
{else}
|
{else}
|
||||||
--
|
--
|
||||||
@@ -289,4 +289,4 @@
|
|||||||
</table>
|
</table>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
+1
-1
@@ -147,7 +147,7 @@
|
|||||||
<td style="text-align: right; width: 10%">
|
<td style="text-align: right; width: 10%">
|
||||||
{if (isset($order_detail.reduction_amount) && $order_detail.reduction_amount > 0)}
|
{if (isset($order_detail.reduction_amount) && $order_detail.reduction_amount > 0)}
|
||||||
-{displayPrice currency=$order->id_currency price=$order_detail.reduction_amount}
|
-{displayPrice currency=$order->id_currency price=$order_detail.reduction_amount}
|
||||||
{else if (isset($order_detail.reduction_percent) && $order_detail.reduction_percent > 0)}
|
{elseif (isset($order_detail.reduction_percent) && $order_detail.reduction_percent > 0)}
|
||||||
-{$order_detail.reduction_percent}%
|
-{$order_detail.reduction_percent}%
|
||||||
{else}
|
{else}
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ function formatCurrency(price, currencyFormat, currencySign, currencyBlank)
|
|||||||
if (currencyFormat == 4)
|
if (currencyFormat == 4)
|
||||||
return (formatNumber(price, priceDisplayPrecision, ',', '.') + blank + currencySign);
|
return (formatNumber(price, priceDisplayPrecision, ',', '.') + blank + currencySign);
|
||||||
if (currencyFormat == 5)
|
if (currencyFormat == 5)
|
||||||
return (formatNumber(price, priceDisplayPrecision, ' ', '.') + blank + currencySign);
|
return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '\'', '.'));
|
||||||
return price;
|
return price;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
{if $invoice AND $invoiceAllowed}
|
{if $invoice AND $invoiceAllowed}
|
||||||
<li>
|
<li>
|
||||||
<img src="{$img_dir}icon/pdf.gif" alt="" class="icon" />
|
<img src="{$img_dir}icon/pdf.gif" alt="" class="icon" />
|
||||||
<a href="{$link->getPageLink('pdf-invoice', true)}?id_order={$order->id|intval}{if $is_guest}&secure_key={$order->secure_key}{/if}" data-ajax="false">{l s='Download your invoice as a PDF file.'}</li>
|
<a href="{$link->getPageLink('pdf-invoice', true)}?id_order={$order->id|intval}{if $is_guest}&secure_key={$order->secure_key}{/if}" data-ajax="false">{l s='Download your invoice as a PDF file.'}
|
||||||
</li>
|
</li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $order->recyclable}
|
{if $order->recyclable}
|
||||||
|
|||||||
Reference in new issue
Block a user