1 Commits

Author SHA1 Message Date
f83c22281b [-] BO: Fix stock when combinations are removed. 2013-11-16 12:36:38 +00:00
70 changed files with 461 additions and 697 deletions

View File

@@ -1,7 +1,7 @@
Contributing
------------
PrestaShop is an open-source e-commerce solution - To contribute to our project, you can make pull requests on the bootstrap branch.
PrestaShop is an open-source e-commerce solution - To contribute to our project, you can make pull requests on the development branch.
If you need some help to make a [pull-request][1]
All contributions must respect [the coding norm][2] and [the commit norm][3] in your pull-request.
All core files you commit in your pull request must have Open Software License (OSL 3.0)

View File

@@ -1,186 +1,161 @@
- adonis karavokyros
- aFolletete
- Agence CINS
- aKorczak
- Aleksander Palyan
- Alexander Otchenashev
- anat
- Andrew
- aNiassy
- antoniofr
- AntonLejon
- Arnaud Lemercier
- Axome
- Benjamin PONGY
- BigZ
- bLeveque
- bMancone
- bumbu
- Burhan
- Caleydon Media
- cam.lafit
- Captain FLAM
- Captain-FLAM
- ccauw
- cedricfontaine
- Cédric Mouleyre
- Chris
- ChristopheBoucaut
- CINS
- cippest
- cmouleyre
- Corentin Delcourt
- Cosmin Hutanu
- Damien Metzger
- DamienMetzger
- Damon Skelhorn
- Daniel
- Daniele Giachino
- David Gasperoni
- Davy Rolink
- Dinis Lage
- djfm
- dlage
- dMetzger
- (d)oekia
- Dragan Skrbic
- dreammeup
- DrySs
- DrÿSs
- DrÿSs'
- dSevere
- Edouard Gaulué
- emily-d
- Eric Le Lay
- Fabio Chelly
- fBrignoli
- fchellypresta
- fram
- Francois Gaillard
- François Gaillard
- Fran<EFBFBD>ois Gaillard
- fSerny
- Gabriel Schwardy
- Gaelle ITZKOVITZ
- gBrunier
- gCharmes
- gPoulain
- gr4devel
- Grégoire Bélorgey
- Gregory Roussac
- gRoussac
- Guillaume DELOINCE
- ha99y
- hAitmansour
- Ha!*!*y
- indesign47
- inem0o
- ivancasasempere
- Jáchym Toušek
- Javsmile
- jBreux
- jeckyl
- jeromenadaud
- Jerome Nadaud
- Jérôme Nadaud
- jessylenne
- jmCollin
- jObregon
- Jonathan Danse
- joseantgv
- Julien
- Kevin Granger
- kiropowered
- kpodemski
- Krystian Podemski
- lBrieu
- lCherifi
- ldecoker
- lLefevre
- LOIC ROSSET ltd
- Madef
- Mainmich
- makk1ntosh
- marcinsz101
- Marco Cervellin
- matiasiglesias
- Mats Rynge
- MatthieuB
- Maxence
- mBertholino
- mDeflotte
- Michel Courtade
- Mickael Desgranges
- Mikael Blotin
- Milow
- minic studio
- misthero
- mMarinetti
- montes
- MustangZhong
- nezenmoins
- Nicolas Sorosac
- Nils-Helge Garli Hegvik
- Nino Uzelac
- nPellicari
- nturato
- oleacorner
- Otto Nascarella
- Patanock
- PhpMadman
- Pierre
- Piotr Kaczor
- Piotr Moćko
- PrestaEdit
- PrestaLab
- PrestanceDesign
- prestarocket
- Prestaspirit
- pxls
- Raphaël Malié
- raulgundin
- Rémi Gaillard
- rGaillard
- Rimas Kudelis
- rMalie
- rMontagne
- romainberger
- root
- runningz
- sagaradonis
- Samy Rabih
- Sarah Lorenzini
- Seb
- Sébastien
- Sébastien Bocahu
- Seynaeve
- Shagshag
- sjousse
- sLorenzini
- smartdatasoft
- soufyan
- soware
- Staging
- sThiebaut
- Sylvain Gougouzian
- Sylvain WITMEYER
- tDidierjean
- thoma202
- Tomasz Slominski
- Tom Panier
- tucoinfo
- unknown
- vAugagneur
- vChabot
- Vincent Augagneur
- Vincent Schoener
- Vincent Terenti
- vinvin27
- vKham
- vSchoener
- Xavier
- Xavier POITAU
- Yoozio
- zimmi1
- Zollner Robert
- adonis karavokyros
- aFolletete
- Agence CINS
- aKorczak
- Alexander Otchenashev
- anat
- Andrew
- aNiassy
- antoniofr
- AntonLejon
- Arnaud Lemercier
- Axome
- Benjamin PONGY
- BigZ
- bLeveque
- bMancone
- bumbu
- Burhan
- Caleydon Media
- cam.lafit
- Captain FLAM
- Captain-FLAM
- ccauw
- Cédric Mouleyre
- ChristopheBoucaut
- CINS
- cippest
- cmouleyre
- Corentin Delcourt
- Cosmin Hutanu
- Damien Metzger
- DamienMetzger
- Damon Skelhorn
- Daniel
- David Gasperoni
- Davy Rolink
- djfm
- dlage
- dMetzger
- (d)oekia
- Dragan Skrbic
- dreammeup
- DrySs
- DrÿSs
- DrÿSs'
- dSevere
- Edouard Gaulué
- emily-d
- Fabio Chelly
- fBrignoli
- fram
- Francois Gaillard
- François Gaillard
- Fran?s Gaillard
- fSerny
- Gabriel Schwardy
- gBrunier
- gCharmes
- gPoulain
- gr4devel
- Grégoire Bélorgey
- Gregory Roussac
- gRoussac
- Guillaume DELOINCE
- ha99y
- hAitmansour
- Ha!*!*y
- indesign47
- inem0o
- ivancasasempere
- jBreux
- jeckyl
- jeromenadaud
- Jerome Nadaud
- Jérôme Nadaud
- jessylenne
- jmCollin
- jObregon
- Jonathan Danse
- joseantgv
- Julien
- Kevin Granger
- kpodemski
- Krystian Podemski
- lBrieu
- lCherifi
- ldecoker
- lLefevre
- LOIC ROSSET ltd
- makk1ntosh
- marcinsz101
- Marco Cervellin
- matiasiglesias
- Mats Rynge
- MatthieuB
- Maxence
- mBertholino
- mDeflotte
- Michel Courtade
- Milow
- minic studio
- misthero
- mMarinetti
- montes
- nezenmoins
- Nicolas Sorosac
- Nils-Helge Garli Hegvik
- nPellicari
- nturato
- oleacorner
- Otto Nascarella
- Patanock
- PhpMadman
- Pierre
- Piotr Kaczor
- Piotr Mocko
- PrestaEdit
- prestarocket
- Prestaspirit
- pxls
- Raphaël Malié
- raulgundin
- Rémi Gaillard
- rGaillard
- Rimas Kudelis
- rMalie
- rMontagne
- romainberger
- root
- runningz
- sagaradonis
- Samy Rabih
- Sarah Lorenzini
- Seb
- Sébastien
- Sébastien Bocahu
- Seynaeve
- Shagshag
- sjousse
- sLorenzini
- smartdatasoft
- soufyan
- soware
- Staging
- sThiebaut
- Sylvain WITMEYER
- tDidierjean
- unknown
- vAugagneur
- vChabot
- Vincent Augagneur
- Vincent Schoener
- Vincent Terenti
- vinvin27
- vKham
- vSchoener
- Xavier
- Xavier POITAU
- Yoozio
- zimmi1

View File

@@ -23,6 +23,10 @@
* International Registered Trademark & Property of PrestaShop SA
*}
{if isset($localization_form)}{$localization_form}{/if}
<div class="width4">
{if isset($localization_form)}{$localization_form}{/if}
</div>
<br />
{if isset($localization_options)}{$localization_options}{/if}
<div class="width4">
{if isset($localization_options)}{$localization_options}{/if}
</div>

View File

@@ -106,6 +106,7 @@
$(document).ready(function()
{
$('#product-tab-content-wait').show();
//product_type = $("input[name=type_product]:checked").val();
if (product_type == product_type_pack)
{

View File

@@ -28,7 +28,7 @@
<div class="lang_{$language.id_lang}" style="{if !$language.is_default}display:none;{/if}float: left;">
<textarea cols="100" rows="10" id="{$input_name}_{$language.id_lang}"
name="{$input_name}_{$language.id_lang}"
class="autoload_rte" >{if isset($input_value[$language.id_lang])}{$input_value[$language.id_lang]|htmlentitiesUTF8|replace:'\r\n':''|replace:'\&quot;':'&quot;'}{/if}</textarea>
class="autoload_rte" >{if isset($input_value[$language.id_lang])}{$input_value[$language.id_lang]|htmlentitiesUTF8}{/if}</textarea>
<span class="counter" max="{if isset($max)}{$max}{else}none{/if}"></span>
<span class="hint">{$hint|default:''}<span class="hint-pointer">&nbsp;</span></span>
</div>

View File

@@ -103,7 +103,7 @@
<select name="{$list_id}_pagination" onchange="submit()">
{* Choose number of results per page *}
{foreach $pagination AS $value}
<option value="{$value|intval}"{if $selected_pagination == $value && $selected_pagination != NULL} selected="selected"{elseif $selected_pagination == NULL && $value == $pagination[1]} selected="selected2"{/if}>{$value|intval}</option>
<option value="{$value|intval}"{if $selected_pagination == $value} selected="selected" {elseif $selected_pagination == NULL && $value == $pagination[1]} selected="selected2"{/if}>{$value|intval}</option>
{/foreach}
</select>
/ {$list_total} {l s='result(s)'}
@@ -188,8 +188,8 @@
{if $params.type == 'bool'}
<select onchange="$('#submitFilterButton{$list_id}').focus();$('#submitFilterButton{$list_id}').click();" name="{$list_id}Filter_{$key}">
<option value="">-</option>
<option value="1"{if $params.value == 1} selected="selected"{/if}>{l s='Yes'}</option>
<option value="0"{if $params.value == 0 && $params.value != ''} selected="selected"{/if}>{l s='No'}</option>
<option value="1" {if $params.value == 1} selected="selected" {/if}>{l s='Yes'}</option>
<option value="0" {if $params.value == 0 && $params.value != ''} selected="selected" {/if}>{l s='No'}</option>
</select>
{elseif $params.type == 'date' || $params.type == 'datetime'}
{l s='From'} <input type="text" class="filter datepicker" id="{$params.id_date}_0" name="{$params.name_date}[0]" value="{if isset($params.value.0)}{$params.value.0}{/if}"{if isset($params.width)} style="width:70px"{/if}/><br />
@@ -197,10 +197,10 @@
{elseif $params.type == 'select'}
{if isset($params.filter_key)}
<select onchange="$('#submitFilterButton{$list_id}').focus();$('#submitFilterButton{$list_id}').click();" name="{$list_id}Filter_{$params.filter_key}" {if isset($params.width)} style="width:{$params.width}px"{/if}>
<option value=""{if $params.value == ''} selected="selected"{/if}>-</option>
<option value="" {if $params.value == ''} selected="selected" {/if}>-</option>
{if isset($params.list) && is_array($params.list)}
{foreach $params.list AS $option_value => $option_display}
<option value="{$option_value}" {if $params.value != '' && ($option_display == $params.value || $option_value == $params.value)} selected="selected"{/if}>{$option_display}</option>
<option value="{$option_value}" {if $option_display == $params.value || $option_value == $params.value} selected="selected"{/if}>{$option_display}</option>
{/foreach}
{/if}
</select>

View File

@@ -23,7 +23,7 @@
* International Registered Trademark & Property of PrestaShop SA
*}
<div id="{$table}_toolbar" class="toolbar-placeholder">
<div class="toolbar-placeholder">
<div class="toolbarBox {if $toolbar_scroll}toolbarHead{/if}">
{block name=toolbarBox}
<ul class="cc_button">
@@ -52,7 +52,7 @@
var modules_list_loaded = false;
$(function() {
//get reference on save link
btn_save = $('#{$table}_toolbar span[class~="process-icon-save"]').parent();
btn_save = $('span[class~="process-icon-save"]').parent();
//get reference on form submit button
btn_submit = $('#{$table}_form_submit_btn');
@@ -93,9 +93,6 @@
//submit the form
{block name=formSubmit}
btn_save.click(function() {
// Vars
var btn_submit = $('#{$table}_form_submit_btn');
// Avoid double click
if (submited)
return false;

View File

@@ -99,7 +99,6 @@ class AddressFormatCore extends ObjectModel
'outstanding_allow_amount',
'call_prefix',
'definition',
'debug_list'
);
public static $forbiddenClassList = array(

View File

@@ -132,12 +132,7 @@ class CartRuleCore extends ObjectModel
public function update($null_values = false)
{
Cache::clean('getContextualValue_'.$this->id.'_*');
if (!parent::update($null_values))
return false;
Configuration::updateGlobalValue('PS_CART_RULE_FEATURE_ACTIVE', CartRule::isCurrentlyUsed($this->def['table'], true));
return true;
return parent::update($null_values);
}
/**

View File

@@ -510,7 +510,6 @@ class LinkCore
public function goPage($url, $p)
{
$url = rtrim(str_replace('?&', '?', $url), '?');
return $url.($p == 1 ? '' : (!strstr($url, '?') ? '?' : '&amp;').'p='.(int)$p);
}

View File

@@ -372,11 +372,11 @@ class MailCore
$file_core = _PS_ROOT_DIR_.'/mails/'.$iso_code.'/lang.php';
if (Tools::file_exists_cache($file_core) && empty($_LANGMAIL))
include($file_core);
include_once($file_core);
$file_theme = _PS_THEME_DIR_.'mails/'.$iso_code.'/lang.php';
if (Tools::file_exists_cache($file_theme))
include($file_theme);
include_once($file_theme);
if (!is_array($_LANGMAIL))
return (str_replace('"', '&quot;', $string));

View File

@@ -37,10 +37,9 @@ class MediaCore
'ui.selectable' => array('fileName' => 'jquery.ui.selectable.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.mouse'), 'theme' => true),
'ui.sortable' => array('fileName' => 'jquery.ui.sortable.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.mouse'), 'theme' => true),
'ui.accordion' => array('fileName' => 'jquery.ui.accordion.min.js', 'dependencies' => array('ui.core', 'ui.widget'), 'theme' => true),
'ui.autocomplete' => array('fileName' => 'jquery.ui.autocomplete.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.position', 'ui.menu'), 'theme' => true),
'ui.autocomplete' => array('fileName' => 'jquery.ui.autocomplete.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.position'), 'theme' => true),
'ui.button' => array('fileName' => 'jquery.ui.button.min.js', 'dependencies' => array('ui.core', 'ui.widget'), 'theme' => true),
'ui.dialog' => array('fileName' => 'jquery.ui.dialog.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.position','ui.button'), 'theme' => true),
'ui.menu' => array('fileName' => 'jquery.ui.menu.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.position'), 'theme' => true),
'ui.slider' => array('fileName' => 'jquery.ui.slider.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.mouse'), 'theme' => true),
'ui.tabs' => array('fileName' => 'jquery.ui.tabs.min.js', 'dependencies' => array('ui.core', 'ui.widget'), 'theme' => true),
'ui.datepicker' => array('fileName' => 'jquery.ui.datepicker.min.js', 'dependencies' => array('ui.core'), 'theme' => true),

View File

@@ -369,8 +369,7 @@ abstract class PaymentModuleCore extends Module
$customization_text .= sprintf(Tools::displayError('%d image(s)'), count($customization['datas'][Product::CUSTOMIZE_FILE])).'<br />';
$customization_text .= '---<br />';
}
$customization_text = Tools::rtrimString($customization_text, '---<br />');
$customization_text = rtrim($customization_text, '---<br />');
$customization_quantity = (int)$product['customization_quantity'];
$products_list .=

View File

@@ -5278,10 +5278,7 @@ class ProductCore extends ObjectModel
WHERE id_product='.(int)$this->id.Shop::addSqlRestriction()
);
else
{
$this->setFieldsToUpdate(array('advanced_stock_management' => true));
$this->save();
}
}
/**

View File

@@ -85,7 +85,6 @@ class ProductSaleCore
foreach ($products as $product)
$ids[$product['id_product']] = 1;
$ids = array_keys($ids);
$ids = array_filter($ids);
sort($ids);
$ids = count($ids) > 0 ? implode(',', $ids) : 'NULL';
@@ -158,7 +157,6 @@ class ProductSaleCore
$ids[$product['id_product']] = 1;
$ids = array_keys($ids);
sort($ids);
$ids = array_filter($ids);
$ids = count($ids) > 0 ? implode(',', $ids) : 'NULL';
//Main query

View File

@@ -245,10 +245,9 @@ class RequestSqlCore extends ObjectModel
*/
public function cutAttribute($attr, $from)
{
$matches = array();
if (preg_match('/((`(\()?([a-z0-9_])+`(\))?)|((\()?([a-z0-9_])+(\))?))\.((`(\()?([a-z0-9_])+`(\))?)|((\()?([a-z0-9_])+(\))?))$/i', $attr, $matches, PREG_OFFSET_CAPTURE))
if (preg_match('#^((`(\()?([a-z0-9_])+`(\))?)|((\()?([a-z0-9_])+(\))?))\.((`(\()?([a-z0-9_])+`(\))?)|((\()?([a-z0-9_])+(\))?))$#i', $attr))
{
$tab = explode('.', str_replace(array('`', '(', ')'), '', $matches[0][0]));
$tab = explode('.', str_replace(array('`', '(', ')'), '', $attr));
if (!$table = $this->returnNameTable($tab[0], $from))
return false;
else
@@ -257,9 +256,9 @@ class RequestSqlCore extends ObjectModel
'attribut' => $tab[1],
'string' => $attr);
}
elseif (preg_match('/((`(\()?([a-z0-9_])+`(\))?)|((\()?([a-z0-9_])+(\))?))$/i', $attr, $matches, PREG_OFFSET_CAPTURE))
elseif (preg_match('#^((`(\()?([a-z0-9_])+`(\))?)|((\()?([a-z0-9_])+(\))?))$#i', $attr))
{
$attribut = str_replace(array('`', '(', ')'), '', $matches[0][0]);
$attribut = str_replace(array('`', '(', ')'), '', $attr);
if (!$table = $this->returnNameTable(false, $from))
return false;
else

View File

@@ -344,7 +344,7 @@ class ToolsCore
}
/* Automatically detect language if not already defined, detect_language is set in Cookie::update */
if ((!$cookie->id_lang && (isset($cookie->detect_language)) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])))
if ((!$cookie->id_lang || isset($cookie->detect_language)) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$array = explode(',', Tools::strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']));
$string = $array[0];
@@ -397,7 +397,6 @@ class ToolsCore
|| (($id_lang == $configuration_id_lang) && Validate::isUnsignedId($id_lang) && $id_lang != $cookie_id_lang))
{
$context->cookie->id_lang = $id_lang;
$language = new Language($id_lang);
if (Validate::isLoadedObject($language) && $language->active)
$context->language = $language;
@@ -676,8 +675,10 @@ class ToolsCore
public static function htmlentitiesDecodeUTF8($string)
{
if (is_array($string))
return array_map(array('Tools', 'htmlentitiesDecodeUTF8'), $string);
{
$string = array_map(array('Tools', 'htmlentitiesDecodeUTF8'), $string);
return (string)array_shift($string);
}
return html_entity_decode((string)$string, ENT_QUOTES, 'utf-8');
}
@@ -1221,6 +1222,11 @@ class ToolsCore
'ellipsis' => '...', 'exact' => true, 'html' => true
);
if (isset($options['ending']))
$default['ellipsis'] = $options['ending'];
elseif (!empty($options['html']) && Configure::read('App.encoding') === 'UTF-8')
$default['ellipsis'] = "\xe2\x80\xa6";
$options = array_merge($default, $options);
extract($options);
@@ -2738,20 +2744,6 @@ exit;
}
return $fileAttachment;
}
/**
* Delete a substring from another one starting from the right
* @param string $str
* @param string $str_search
* @return string
*/
public static function rtrimString($str, $str_search)
{
$length_str = strlen($str_search);
if (strlen($str) >= $length_str && substr($str, -$length_str) == $str_search)
$str = substr($str, 0, -$length_str);
return $str;
}
}
/**
@@ -2778,4 +2770,4 @@ function cmpPriceDesc($a, $b)
elseif ((float)$a['price_tmp'] > (float)$b['price_tmp'])
return -1;
return 0;
}
}

View File

@@ -1547,7 +1547,7 @@ class AdminControllerCore extends Controller
if (!empty($country_module_list) && is_string($country_module_list) && $country_module_list_xml = simplexml_load_string($country_module_list))
{
$country_module_list_array = array();
if (isset($country_module_list_xml->module))
if (is_array($country_module_list_xml->module))
foreach ($country_module_list_xml->module as $k => $m)
$country_module_list_array[] = (string)$m->name;
$this->tab_modules_list['slider_list'] = array_intersect($this->tab_modules_list['slider_list'], $country_module_list_array);

View File

@@ -86,9 +86,9 @@ class HelperCore
$override_tpl_path = _PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/_configure/'.$this->override_folder.$this->base_folder.$tpl_name;
else
{
if (file_exists($this->context->smarty->getTemplateDir(1).$this->override_folder.$this->base_folder.$tpl_name))
$override_tpl_path = $this->context->smarty->getTemplateDir(1).$this->override_folder.$this->base_folder.$tpl_name;
else if (file_exists($this->context->smarty->getTemplateDir(0).'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name))
if (file_exists($this->context->smarty->getTemplateDir(1).DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name))
$override_tpl_path = $this->context->smarty->getTemplateDir(1).DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name;
else if (file_exists($this->context->smarty->getTemplateDir(0).DIRECTORY_SEPARATOR.'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name))
$override_tpl_path = $this->context->smarty->getTemplateDir(0).'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name;
}

View File

@@ -1258,9 +1258,7 @@ abstract class ModuleCore
$modules = scandir(_PS_MODULE_DIR_);
foreach ($modules as $name)
{
if (is_file(_PS_MODULE_DIR_.$name))
continue;
elseif (is_dir(_PS_MODULE_DIR_.$name.DIRECTORY_SEPARATOR) && Tools::file_exists_cache(_PS_MODULE_DIR_.$name.'/'.$name.'.php'))
if (is_dir(_PS_MODULE_DIR_.$name.DIRECTORY_SEPARATOR) && Tools::file_exists_cache(_PS_MODULE_DIR_.$name.'/'.$name.'.php'))
{
if (!Validate::isModuleName($name))
throw new PrestaShopException(sprintf('Module %s is not a valid module name', $name));

View File

@@ -108,6 +108,10 @@ class StockAvailableCore extends ObjectModel
public static function getStockAvailableIdByProductId($id_product, $id_product_attribute = null, $id_shop = null)
{
// if null, it's a product without attributes
if ($id_product_attribute === null)
$id_product_attribute = 0;
if (!Validate::isUnsignedId($id_product))
return false;
@@ -115,9 +119,7 @@ class StockAvailableCore extends ObjectModel
$query->select('id_stock_available');
$query->from('stock_available');
$query->where('id_product = '.(int)$id_product);
if ($id_product_attribute !== null)
$query->where('id_product_attribute = '.(int)$id_product_attribute);
$query->where('id_product_attribute = '.(int)$id_product_attribute);
$query = StockAvailable::addSqlShopRestriction($query, $id_shop);
return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);
@@ -172,7 +174,7 @@ class StockAvailableCore extends ObjectModel
if ($order_id_shop != null && !count(array_intersect($allowed_warehouse_for_product_clean, $order_warehouses)))
continue;
$product_quantity = $manager->getProductRealQuantities($id_product, null, $allowed_warehouse_for_product_clean, true);
$product_quantity = $manager->getProductRealQuantities($id_product, 0, $allowed_warehouse_for_product_clean, true);
Hook::exec('actionUpdateQuantity',
array(

View File

@@ -423,6 +423,10 @@ class StockManagerCore implements StockManagerInterface
*/
public function getProductPhysicalQuantities($id_product, $id_product_attribute, $ids_warehouse = null, $usable = false)
{
// if null, it's a product without attributes
if ($id_product_attribute === null)
$id_product_attribute = 0;
if (!is_null($ids_warehouse))
{
// in case $ids_warehouse is not an array
@@ -441,8 +445,7 @@ class StockManagerCore implements StockManagerInterface
$query->select('SUM('.($usable ? 's.usable_quantity' : 's.physical_quantity').')');
$query->from('stock', 's');
$query->where('s.id_product = '.(int)$id_product);
if (0 != $id_product_attribute)
$query->where('s.id_product_attribute = '.(int)$id_product_attribute);
$query->where('s.id_product_attribute = '.(int)$id_product_attribute);
if (count($ids_warehouse))
$query->where('s.id_warehouse IN('.implode(', ', $ids_warehouse).')');
@@ -455,6 +458,10 @@ class StockManagerCore implements StockManagerInterface
*/
public function getProductRealQuantities($id_product, $id_product_attribute, $ids_warehouse = null, $usable = false)
{
// if null, it's a product without attributes
if ($id_product_attribute === null)
$id_product_attribute = 0;
if (!is_null($ids_warehouse))
{
// in case $ids_warehouse is not an array

View File

@@ -105,7 +105,7 @@ class AdminCategoriesControllerCore extends AdminController
$this->_category = new Category($id_category);
else
{
if (Shop::getContext() == Shop::CONTEXT_SHOP)
if (Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP)
$this->_category = new Category($this->context->shop->id_category);
elseif (count(Category::getCategoriesWithoutParent()) > 1 && Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && count(Shop::getShops(true, null, true)) != 1)
$this->_category = Category::getTopCategory();

View File

@@ -71,7 +71,6 @@ class AdminCmsCategoriesControllerCore extends AdminController
{
$this->initToolbar();
$this->toolbar_btn['new']['href'] .= '&amp;id_parent='.(int)Tools::getValue('id_cms_category');
$this->initTabModuleList();
return parent::renderList();
}

View File

@@ -120,7 +120,6 @@ class AdminDeliverySlipControllerCore extends AdminController
public function initContent()
{
$this->initTabModuleList();
$this->content .= $this->renderForm().'<br />';
$this->show_toolbar = false;
$this->content .= $this->renderOptions();

View File

@@ -347,15 +347,15 @@ class AdminEmployeesControllerCore extends AdminController
public function postProcess()
{
/* PrestaShop demo mode */
if ((Tools::isSubmit('deleteemployee') || Tools::isSubmit('status') || Tools::isSubmit('statusemployee') || Tools::isSubmit('submitAddemployee')) && _PS_MODE_DEMO_)
{
$this->errors[] = Tools::displayError('This functionality has been disabled.');
return;
}
if (Tools::isSubmit('deleteemployee') || Tools::isSubmit('status') || Tools::isSubmit('statusemployee'))
{
/* PrestaShop demo mode */
if (_PS_MODE_DEMO_ && $id_employee = Tools::getValue('id_employee') && (int)$id_employee == _PS_DEMO_MAIN_BO_ACCOUNT_)
{
$this->errors[] = Tools::displayError('This functionality has been disabled.');
return;
}
if ($this->context->employee->id == Tools::getValue('id_employee'))
{
$this->errors[] = Tools::displayError('You cannot disable or delete your own account.');

View File

@@ -195,22 +195,6 @@ class AdminGendersControllerCore extends AdminController
}
return !count($this->errors) ? true : false;
}
protected function afterImageUpload()
{
parent::afterImageUpload();
if (($id_gender = (int)Tools::getValue('id_gender')) &&
isset($_FILES) && count($_FILES) && file_exists(_PS_GENDERS_DIR_.$id_gender.'.jpg'))
{
$current_file = _PS_TMP_IMG_DIR_.'gender_mini_'.$id_gender.'_'.$this->context->shop->id.'.jpg';
if (file_exists($current_file))
unlink($current_file);
}
return true;
}
}

View File

@@ -145,10 +145,8 @@ class AdminLocalizationControllerCore extends AdminController
if (Validate::isFileName(Tools::getValue('iso_localization_pack')))
{
if (Tools::getValue('download_updated_pack') == '1')
$pack = @Tools::file_get_contents('http://api.prestashop.com/localization/'.$version.'/'.Tools::getValue('iso_localization_pack').'.xml');
else
$pack = false;
$pack = @Tools::file_get_contents('http://api.prestashop.com/localization/'.$version.'/'.Tools::getValue('iso_localization_pack').'.xml');
if (!$pack && !($pack = @Tools::file_get_contents(dirname(__FILE__).'/../../localization/'.Tools::getValue('iso_localization_pack').'.xml')))
$this->errors[] = Tools::displayError('Cannot load the localization pack.');
@@ -266,26 +264,6 @@ class AdminLocalizationControllerCore extends AdminController
'id' => 'id',
'name' => 'name'
)
),
array(
'type' => 'radio',
'label' => $this->l('Download pack data'),
'desc' => $this->l('If set to yes then the localization pack will be downloaded from prestashop.com. Otherwise the local xml file found in the localization folder of your PrestaShop installation will be used.'),
'name' => 'download_updated_pack',
'class' => 't',
'is_bool'=> true,
'values' => array(
array(
'id' => 'download_updated_pack_yes',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'download_updated_pack_no',
'value' => 0,
'label' => $this->l('No')
)
)
)
),
'submit' => array(
@@ -300,11 +278,10 @@ class AdminLocalizationControllerCore extends AdminController
'selection[]_taxes' => true,
'selection[]_currencies' => true,
'selection[]_languages' => true,
'selection[]_units' => true,
'download_updated_pack' => 1
'selection[]_units' => true
);
$this->show_toolbar = true;
$this->show_toolbar = false;
return parent::renderForm();
}
@@ -315,6 +292,7 @@ class AdminLocalizationControllerCore extends AdminController
// toolbar (save, cancel, new, ..)
$this->initToolbar();
$this->context->smarty->assign(array(
'localization_form' => $this->renderForm(),
'localization_options' => $this->renderOptions(),
@@ -322,15 +300,9 @@ class AdminLocalizationControllerCore extends AdminController
));
}
public function initToolbar()
{
$this->toolbar_btn = array();
$this->initTabModuleList();
}
public function display()
{
$this->initContent();
$this->initContent();
parent::display();
}

View File

@@ -638,7 +638,6 @@ class AdminManufacturersControllerCore extends AdminController
{
// toolbar (save, cancel, new, ..)
$this->initToolbar();
$this->initTabModuleList();
if ($this->display == 'editaddresses' || $this->display == 'addaddress')
$this->content .= $this->renderFormAddress();
else if ($this->display == 'edit' || $this->display == 'add')

View File

@@ -276,7 +276,7 @@ class GetFileControllerCore extends FrontController
/* Set headers for download */
header('Content-Transfer-Encoding: binary');
header('Content-Type: '.$mimeType);
header('Content-Length: '.sprintf('%u', filesize($file)));
header('Content-Length: '.filesize($file));
header('Content-Disposition: attachment; filename="'.$filename.'"');
$fp = fopen($file, 'rb');
while (!feof($fp))

View File

@@ -58,7 +58,7 @@ class GuestTrackingControllerCore extends FrontController
{
$order = new Order((int)$id_order);
if (Validate::isLoadedObject($order))
$order_collection = Order::getByReference($order->reference);
$order_collection[] = $order;
}
else
$order_collection = Order::getByReference($id_order);

View File

@@ -23,225 +23,6 @@ International Registred Trademark & Property of PrestaShop SA
Release Notes for PrestaShop 1.5
--------------------------------
####################################
# v1.5.6.1 - (2013-11-18) #
####################################
Fixed bugs:
[-] Project : missing ui.menu in jquery_ui_dependencies.
[-] FO : Fix bug #PSCFV-11043, bad cache id from module template
[-] FO : Missing sup for DNI field
[-] FO : Fix bug #PSCFV-10911, doubles in cart rules highlight
[-] FO : Bad value for back when controller name is sent
[-] FO : FixBug #PSCFV-9291 - Ecotax increment display price in product combination
[-] FO : fix contact-form id_order input when customer is not logged
[-] Fo : Call Gmaps on https if required
[-] FO : Wordwrap on prices in history
[-] FO : Fixed errors when calculating most selled products from footer link
[-] FO : #PSCFV-10978 firstname displayed instead of lastname in invoice address
[-] FO : Customized meesage with carriage return follow up #962
[-] FO : getTaxCalculator bad cache key again // sorry about that
[-] FO : getTaxCalculator bad cache key
[-] FO : Prevents warning in safePostVars when $_POST has been unset
[-] FO : in multistore payment module restrictions by customer group was not applied to specific shop
[-] FO : Fix bug #PSCFV-10892, getCMSPages by id_shop thnaks @jd440
[-] FO : FixBug Categories description
[-] FO : Fix bug #PSCFV-10889 wrong color when oos product
[-] FO : CustomerMessage ip_address to string
[-] FO : Fix bug #PSCFV-10851, no shop restriction in vouchers display in cart
[-] FO: fixed bug #PSCFV-10654 - TinyMCE editor: List of products by manufacturer, products by supplier - Long description is not hidden.
[-] FO: Fix bug #PSCFV-10623 blocknewproducts shows products when PS_NB_DAYS_NEW_PRODUCT == 0
[-] FO: Fix bug #PSCFV-10230, Blockspecials still caching when files cache limit is 0
[-] FO: Fix bug #PSCFV-10625 Js error on carriers step if AjaxCart disabled
[-] FO : Follow up https://github.com/PrestaShop/PrestaShop/pull/879
[-] FO: removed width on message product select Limiting select could make the user think the select is not working if they click to much to the left on bigger screens
[-] FO : Prevent fatal error on getUniqReference when order not loaded
[-] FO: Don't auto detect language if it not associated to the shop #PSCFV-10273
[-] FO : Could not redirect back to url in adress.php
[-] FO : $back value twice escaped
[-] FO : #PSCFV-10640 again, bad assignement
[-] Fo : Fix bug #PSCFV-10640, redirect loop when country address is not among active countries in OPC
[-] FO : Fix bug #PSCFV-10688, bad priceDisplay in order-carrier
[-] FO : Fix #PSCFV-10690 again, change just on directories
[-] FO : Fix bug #PSCFV-10690 could not index a category beacause of robot.txt
[-] FO : Copuld not load datepicker in trackingfront stats.php
[-] FO : Fix bug #PSCFV-10497 cart_block hooked on column disappearing
[-] FO : Fix bug #PSCFV-10606 could not have correct taxCalculationMethod when vat number in customer address
[-] BO : Fix bug #PNM-1594, selected value error in helper list
[-] BO: product price was changed on changing to advanced stock management #PSCFV-10996
[-] BO : Fix warning when no memcached servers
[-] BO : Fix #PSCFV-11016 typo
[-] BO : Model return html error messagae instead of json while image uploading
[-] BO : Product final price can not be hidden on loading tab, report of https://github.com/PrestaShop/PrestaShop/commit/6c6c3b240ee2249b7f99be1a112905cd0edbee46
[-] BO : test on xml string follow up https://github.com/PrestaShop/PrestaShop/pull/690#issuecomment-28542506
[-] BO : 406 when mod_security follow up https://github.com/PrestaShop/PrestaShop/commit/034e6a7e7f391e3a8861248db45a4a376b19633c
[-] BO : AdminImport, execption when creating groups
[-] BO : Fix bug #PSCFV-10990 bad version comparison for ps_versions_compliancy
[-] BO : Fix bug #PSCFV-10982 reduction group truncated
[-] BO : Could not check all modules after ajax call
[-] BO : Fix css bug #PSCFV-10899, fixed fix-toolbar z-index
[-] BO : Fix bug #PSCFV-10932, ranges input disabled on load
[-] BO : getCMSPages to associated shop in cmscontroller
[-] BO : Fix bug #PSCFV-10666 product_supllier currency set to 0
[-] BO : Fix bug #PSCFV-10937, bad escaping for var product_prices in prices.tpl
[-] BO : Cart was not using order reference, corrected syntax
[-] BO : Cart was not using order reference
[-] BO : Could not change image position
[-] BO: Fix from name when replying to customer threads
[-] BO : Do not enable rewrite url for index
[-] BO: Fix empty group list on changing opt or newsletter on customers listing
[-] BO : AdminImport withdraw separator changed in js
[-] BO : AdminImport wrong group by default
[-] BO : FixBug #PSCFV-10882 - Add json encode and decode smarty modifier via tools class
[-] Bo : AdminImport customer group default
[-] BO : Fix bug #PSCFV-10872 AdminImport could not import supllier orders
[-] BO: fix the checkbox of shop activation on modules configuration
[-] BO : Adminimport default customers group
[-] BO : tagify call twice if field is not translatable
[-] BO : Stats are empty when no conversion rate
[-] BO : Order-follow displayed order id instead of order reference
[-] BO : hide stmp options when selecting never send emails
[-] BO : FixBug #PSCFV-10866 - Tagify system not working
[-] BO : FixBug #PSCFV-9319 - display only valid order id
[-] BO : Do not delete other default jpg when _deleteOldImages and type defined
[-] BO : AdminImport, fix bug from https://github.com/indesign47/PrestaShop/commit/84454bbc1c7a315e232245c5e43b300b8f153473#commitcomment-4418502
[-] BO : Fix bug #10689, could not set image legend in back office
[-] BO : Fixed bug PSCFV-9910 using basic queries to prevent locking errors
[-] BO : Fix bug #PSCFV-10718 AdminAttachments old file not deleted on update
[-] BO : FixBug #PSCFV-10600 - Unmatched Boundary with mod_security
[-] BO : fix #PSCFV-10728, prices incorrectly formatted when creating new order from BO
[-] BO : FIx bug #PSCFV-10736 again, fixing query when product is not in base
[-] BO : FIx bug #PSCFV-10736, could not load a product given from getBoughtProducts
[-] BO : Fix bug #PSCFV-10790, Customer group names not exploded
[-] BO: product listing should call Product::getPriceStatic() with the product default shop in the context when it is not a shop context
[-] BO: Synchronize stock available after receipt supply order items #PSCFV-10724
[-] BO : Fix bug #PSCFV-10638, Admin Import by reference moves products to home category
[-] BO : Fix bug #PSCFV-7907 AdminImport, add custom field to features
[-] BO : Fix bug #PSCFV-10767, could not retrieve feature value when product IDs not forced
[-] BO : Fix bug #PSCFV-10607 one upload name
[-] BO : wrong csv files name
[-] BO : Report of https://github.com/PrestaShop/PrestaShop/commit/fd86a29c5c369ec5da0f91bbe97c584a00d02d0d
[-] BO: Default country should be overriden in the context in multishop
[-] BO : Fix bug #PSCFV-10709 rename root category with slashes in it
[-] BO : Could not order by reserved words like 'key'
[-] BO : AdminImport, wrong default separators
[-] BO : Fix bug #PSCFV-10692, AdminImport bad utf8 cars for subst
[-] BO : Fix #PSCFV-10678 warning in chrome
[-] BO : FixBug #PSCFV-10671 - remove htmlentities on customer message
[-] BO : Could not insert referrer id_connections_source can not be null
[-] Bo : Could not update mailalert 2.5 with id_lang missing
[-] Bo : Could not update mailarler 2.5 with id_mlang
[-] BO: Fixbug #PSCFV-10671 - Double htmlentities.
[-] BO : AdminImport, fix Group searchByName
[-] BO : Adminimport, id_specific key_price not defined
[-] BO : FixBug - Remove second email in recipient
[-] BO : Fix bug #PSCFV-10660, could not delete csv file on NT
[-] BO : FixBug #PSCFV-9957 - Duplicate order invoice number
[-] BO : fixed bug #PSCFV-10637 PS_CARRIER_DEFAULT is not updated after edit default carrier
[-] BO : AdminImport no default value for separators
[-] BO : pass correct typed parameter to setCurrency
[-] Classes : Hook - Installer & context shop id
[-] Classes : Modules listing and case insensitive
[-] Core: Group::getCurrent() return the default customer group of the shop if default customer group is not associated to shop
[-] CORE : invalid method name in displayAjax method of Controller action
[-] CORE : Fix bug #PSCFV-10901 warnings on htmlentities
[-] CORE : Currency conversion rate can not be 0
[-] CORE : SetEnv in if statement
[-] CORE : SetEnv not available on all config // @todo curl request on dummy .htacces
[-] CORE : Fix bug #PSCFV-10687 again, #PSCFV-10752 replaceAccentedChars() // sorry for that
[-] CORE : error_get_last > PHP 5.1
[-] Core: Out of stock status should be setted after the first order history
[-] Core: Product::getPriceStatic called with 1 quantity return the specific price for 1 qty if called with id_cart = 0
[-] CORE : Fix bug #PSCFV-10687 bad conversion for accentuated Y and W, thanks @mike15
[-] CORE : $smarty->compile_check is not set to false, thanks @prestamodule
[-] MO : Referralprogram Prevent Exception when badly configured
[-] MO : Missinag closing href
[-] MO :Fixed #PNM-1654 (Loyalty module) by using most expensive attribute instead of default one
[-] MO : Mailalert was not using order reference
[-] MO : Blocklayered follow up https://github.com/PrestaShop/PrestaShop/commit/a6e67b078e067445eef358e907649e843a1dc26a#commitcomment-4538556
[-] MO : Fixed #PNM-1600 by modifying getPageLink()
[-] MO : Blockcategories last_visited_category must not be cached
[-] MO : Could not translate in transit mail, revert from https://github.com/viger-creator/PrestaShop/commit/3213b5dffb266ddb0639b94f72babd892328ffa2
[-] MO : mailalert - Fix deprecated warning on displayDate
[-] MO : Blockwishlist no product image when id_product_attribute is defined, thanks @Broceliande
[-] MO : Fix NetworkError 404 Not Found on admin in blocklayered.php These files not exists : - /js/jquery/jquery-ui-1.8.10.custom.min.js - /css/jquery-ui-1.8.10.custom.css
[-] MO : Fix bug #PSCFV-10841, blockcart hides on product page when last product is removed from cart
[-] MO : Fixbug #PSCFV-10679 dateofdelivery PDF invoice array and array
[-] MO : Fixed bug PNM-1431 - referralprogram Lack the % sign
[-] MO : Fix bug #PSCFV-10787, cms associated to all shops
[-] MO : if customer is logged we do not recreate it
[-] MO : Fix bug #PSCFV-10775, could not upload .jpeg in TinyMCE
[-] MO : ScrollTo not loaded
[-] MO : Trackingfront, could not load employee stats date
[-] WS: Fix bug #PSCFV-10970 use configuration for uploaded images quality
[-] WS: Fix stockavailables list when stock is shared between shops #PSCFV-10793
[-] WS: Fix #PSCFV-10672 order by ID for non multishop entities
Improved/changed features:
[*] FO : DNI can be not required
[*] FO : Fix #PSCFV-8715 add product.attributes in carrier tpl
[*] FO : set at least a class to body
[*] FO : addTextFieldToProduct without Line feed, follow up https://github.com/PrestaShop/PrestaShop/pull/962#issuecomment-28294571
[*] FO : https on TOS in fancybox, follow up https://github.com/PrestaShop/PrestaShop/pull/956
[*] FO : Redirect to address.tpl when !Address::isCountryActiveById
[*] FO : Cache on getDiscountsCustomer, follow up https://github.com/PrestaShop/PrestaShop/pull/960
[*] FO : Set cache for StockAvailable::getQuantityAvailableByProduct
[*] FO : Added posibilty to display new price instead of quantity discount
[*] FO: Follow up https://github.com/PrestaShop/PrestaShop/commit/e86c56172dad2892d5c7e7dbb0908b0f4ffbaae0
[*] FO: Can not establish purchase total when tax incl.
[*] FO : Fix bug #PSCFV-10689 handle image legend
[*] FO: Removed missplaced </li> on mobile theme
[*] BO : AdminPerformances Hide warnings message when not necessary
[*] BO : add class on TD in standard List Back office : Add a class on TD in list created by getList() In fields_list array of AdminController, we can add a new parameter('class') example : 'name' => array( 'title' => $this->l('Name'), 'width' => 150, 'class' => 'ma_classe', 'filter_key' => 'b!name' ), This parameter can be used for javascript effect, ... Thanks.
[*] BO : New import csv files
[*] BO : Manual merge of https://github.com/PrestaShop/PrestaShop/pull/891 1/2
[*] BO : AdminProducts find smallest images
[*] BO : improved unicode characters replacement in URLs (Russian and Ukrainian characters added)
[*] BO : AdminImport add img manufacturers-suppliers
[*] BO : AdminImport add img suppliers
[*] BO : AdminImport add img manufacturers
[*] BO : chmod 664 to config.xml file
[*] BO : Adding a title tag to display the module name on hover like PS 1.4
[*] CORE : Remove duplicate SQL queries
[*] CORE : Profiling hide non doubles
[*] CORE : Cache store for isAssociatedToShop::isAssociatedToShop
[*] CORE : Manual merge of https://github.com/PrestaShop/PrestaShop/ thanks @kpodemski
[*] CORE: Add phone_mobile to address format I honestly do not know why you decided by default to show only the first field of the phone :) Users often ask me why they don't see their mobile phone on orders in BO.
[*] MO : Remove calls to isRegisteredInHook in crossselling and productscategory
[*] MO : New modules version since 1.5.6.0
[*] MO: blocksharefb optimization
[*] MO: productcomments optimization
[*] LO : Fix PSCFV-10876: use IETF code to set language of shop, not 'iso' code, allows to distinguish between chinese variants etc.
[*] LO : Added states to Spanish localization pack
[*] LO : Fixed a few bugs with currency formats in Back-Office orders
[*] LO : set correct currency format for CHF
Added Features:
[+] BO : Add debug mode system
[+] BO : AdminImport add entity Alias
[+] CORE : Fixed cache_id
[+] MO : Blockcart - Add error handler on ajax function
Deprecated methods:
[~] BO : Export DeliverySlip The dates range wasn't using the correct sql fields.
####################################
# v1.5.6.0 - (2013-10-07) #
####################################

View File

@@ -21,8 +21,8 @@ needs please refer to http://www.prestashop.com for more information.
@license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
International Registered Trademark & Property of PrestaShop SA
NAME: Prestashop 1.5.6.1
VERSION: 1.5.6.1
NAME: Prestashop 1.5.6.0
VERSION: 1.5.6.0
VORBEREITUNG
===========

View File

@@ -21,8 +21,8 @@ needs please refer to http://www.prestashop.com for more information.
@license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
International Registered Trademark & Property of PrestaShop SA
NAME: Prestashop 1.5.6.1
VERSION: 1.5.6.1
NAME: Prestashop 1.5.6.0
VERSION: 1.5.6.0
PREPARATION
===========

View File

@@ -21,8 +21,8 @@ needs please refer to http://www.prestashop.com for more information.
@license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
International Registered Trademark & Property of PrestaShop SA
NAME: Prestashop 1.5.6.1
VERSION: 1.5.6.1
NAME: Prestashop 1.5.6.0
VERSION: 1.5.6.0
PREPARACI<EFBFBD>N
===========

View File

@@ -21,8 +21,8 @@ needs please refer to http://www.prestashop.com for more information.
@license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
International Registered Trademark & Property of PrestaShop SA
NAME: Prestashop 1.5.6.1
VERSION: 1.5.6.1
NAME: Prestashop 1.5.6.0
VERSION: 1.5.6.0
PREPARATION
===========

View File

@@ -21,8 +21,8 @@ needs please refer to http://www.prestashop.com for more information.
@license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
International Registered Trademark & Property of PrestaShop SA
NAME: Prestashop 1.5.6.1
VERSION: 1.5.6.1
NAME: Prestashop 1.5.6.0
VERSION: 1.5.6.0
PREPARAZIONE
===========

View File

@@ -24,4 +24,4 @@
* International Registered Trademark & Property of PrestaShop SA
*/
define('_PS_INSTALL_VERSION_', '1.5.6.1');
define('_PS_INSTALL_VERSION_', '1.5.6.0');

View File

@@ -212,7 +212,7 @@ return array(
'Contact us' => 'Свяжитесь с нами',
'PrestaShop Installation Assistant' => 'Помощник установки PrestaShop',
'Installation Assistant' => 'Помощник установки',
'License Agreements' => 'Лицензионное соглашение',
'License Agreements' => 'Лицензионное соглшение',
'Print my login information' => 'Распечатать информацию о моем аккаунте',
'To use PrestaShop, you must <a href="http://doc.prestashop.com/display/PS15/Installing+PrestaShop#InstallingPrestaShop-Creatingadatabaseforyourshop" target="_blank">create a database</a> to collect all of your stores data-related activities.' => 'Для использования PrestaShop, Вам следует <a href="http://doc.prestashop.com/display/PS15/Installing+PrestaShop#InstallingPrestaShop-Creatingadatabaseforyourshop" target="_blank">создать базу данных </a>, чтобы сгруппировать информацию Вашего магазина.',
'Please complete the fields below in order for PrestaShop to connect to your database. ' => 'Заполните поля ниже, чтобы PrestaShop смог установить соединение с Вашей с базой данных.',

View File

@@ -38,25 +38,22 @@ function add_module_to_hook($module_name, $hook_name)
$id_hook = Db::getInstance()->getValue('SELECT `id_hook` FROM `'._DB_PREFIX_.'hook` WHERE `name` = "'.$hook_name.'"');
if(!$id_hook)
{
if (!Db::getInstance()->execute('
$res &= Db::getInstance()->execute('
INSERT IGNORE INTO `'._DB_PREFIX_.'hook` (`name`, `title`)
VALUES ("'.pSQL($hook_name).'", "'.pSQL($hook_name).'")'))
$res = false;
else
$id_hook = Db::getInstance()->Insert_ID();
VALUES ("'.pSQL($hook_name).'", "'.pSQL($hook_name).'")');
$id_hook = Db::getInstance()->Insert_ID();
}
if ((int)$id_hook > 0)
{
if (!Db::getInstance()->execute('
$res &= Db::getInstance()->execute('
INSERT IGNORE INTO `'._DB_PREFIX_.'hook_module` (`id_module`, `id_hook`, `position`)
VALUES (
'.(int)$id_module.',
'.(int)$id_hook.',
(SELECT IFNULL(
(SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `'._DB_PREFIX_.'hook_module` WHERE `id_hook` = '.(int)$id_hook.') AS max_position), 1))
)'))
$res = false;
)');
}
}
return $res;

View File

@@ -86,9 +86,11 @@ function migrate_orders()
SELECT od.*
FROM `'._DB_PREFIX_.'order_detail` od
WHERE od.`id_order` = '.(int)$order['id_order']);
while ($order_details = Db::getInstance()->nextRow($order_details_list))
{
$values_order_detail = array();
$values_order = array();
$col_order_detail = array();
// we don't want to erase order_details data in order to create the insert query
$products = mo_setProductPrices($order_details, $price_display_method);
$tax_rate = 1 + ((float)$products['tax_rate'] / 100);
@@ -105,7 +107,6 @@ function migrate_orders()
$order_details['total_price_tax_excl'] = (float)$products['total_price'];
$order_details['unit_price_tax_incl'] = (float)$products['product_price_wt'];
$order_details['unit_price_tax_excl'] = (float)$products['product_price'];
foreach (array_keys($order_details) as $k)
if (!in_array($k, $col_order_detail))
unset($order_details[$k]);
@@ -120,7 +121,7 @@ function migrate_orders()
$values_order_detail[] = '(\''.implode('\', \'', $order_details).'\')';
unset($order_details);
}
$average_tax_used = 1;
if ($sum_total_products > 0)
$average_tax_used += $sum_tax_amount / $sum_total_products;
@@ -186,10 +187,6 @@ function migrate_orders()
$res = false;
$array_errors[] = '[insert order 4] - '.Db::getInstance()->getMsgError();
}
if (isset($values_order))
unset($values_order);
if (isset($values_order_detail))
unset($values_order_detail);
if (!mo_renameTables())
{
$res = false;

View File

@@ -1072,8 +1072,7 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
var queryString = qq.obj2url(params, this._options.action);
xhr.open("POST", queryString, true);
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.setRequestHeader("processData", false);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
xhr.send(file);

View File

@@ -7,11 +7,11 @@
<language iso_code="it" />
</languages>
<taxes>
<tax id="1" name="IVA IT 22%" rate="22" />
<tax id="1" name="IVA IT 21%" rate="21" />
<tax id="2" name="IVA IT 10%" rate="10" />
<tax id="3" name="IVA IT 4%" rate="4" />
<taxRulesGroup name="IT Standard Rate (22%)">
<taxRulesGroup name="IT Standard Rate (21%)">
<taxRule iso_code_country="be" id_tax="1" />
<taxRule iso_code_country="bg" id_tax="1" />
<taxRule iso_code_country="cz" id_tax="1" />

View File

@@ -8,9 +8,9 @@
<language iso_code="en" />
</languages>
<taxes>
<tax id="1" name="GST JE 5%" rate="5" />
<tax id="1" name="GST JE 3%" rate="3" />
<taxRulesGroup name="JE Standard Rate (5%)">
<taxRulesGroup name="JE Standard Rate (3%)">
<taxRule iso_code_country="je" id_tax="1" />
</taxRulesGroup>
</taxes>

View File

@@ -10,10 +10,14 @@
<taxRulesGroup name="Kenya VAT 16%">
<taxRule iso_code_country="ke" behavior="0" id_tax="76"/>
</taxRulesGroup>
<taxRulesGroup name="Kenya VAT 12%">
<taxRule iso_code_country="ke" behavior="0" id_tax="77"/>
</taxRulesGroup>
<taxRulesGroup name="Kenya VAT 0%">
<taxRule iso_code_country="ke" behavior="0" id_tax="78"/>
</taxRulesGroup>
<tax id="76" name="Kenya VAT 16%" rate="16.000"/>
<tax id="77" name="Kenya VAT 12%" rate="12.000"/>
<tax id="78" name="Kenya VAT 0%" rate="0.000"/>
</taxes>
<units>

View File

@@ -7,19 +7,19 @@
<language iso_code="de" />
</languages>
<taxes>
<tax id="1" name="TVA CH 8%" rate="8" />
<tax id="2" name="TVA CH 3.8%" rate="3.8" />
<tax id="3" name="TVA CH 2.5%" rate="2.5" />
<tax id="1" name="TVA CH 7.6%" rate="7.6" />
<tax id="2" name="TVA CH 3.6%" rate="3.6" />
<tax id="3" name="TVA CH 2.4%" rate="2.4" />
<taxRulesGroup name="CH Standard Rate (8%)">
<taxRulesGroup name="CH Standard Rate (7.6%)">
<taxRule iso_code_country="li" id_tax="1" />
</taxRulesGroup>
<taxRulesGroup name="CH Reduced Rate (3.8%)">
<taxRulesGroup name="CH Reduced Rate (3.6%)">
<taxRule iso_code_country="li" id_tax="2" />
</taxRulesGroup>
<taxRulesGroup name="CH Super Reduced Rate (2.5%)">
<taxRulesGroup name="CH Super Reduced Rate (2.4%)">
<taxRule iso_code_country="li" id_tax="3" />
</taxRulesGroup>
</taxes>

View File

@@ -8,7 +8,7 @@
</languages>
<taxes>
<tax id="1" name="PVN LV 21%" rate="21" />
<tax id="2" name="PVN LV 12%" rate="12" />
<tax id="2" name="PVN LV 10%" rate="10" />
<taxRulesGroup name="LV Standard Rate (21%)">
<taxRule iso_code_country="be" id_tax="1" />
@@ -40,7 +40,7 @@
<taxRule iso_code_country="uk" id_tax="1" />
</taxRulesGroup>
<taxRulesGroup name="LV Reduced Rate (12%)">
<taxRulesGroup name="LV Reduced Rate (10%)">
<taxRule iso_code_country="be" id_tax="2" />
<taxRule iso_code_country="bg" id_tax="2" />
<taxRule iso_code_country="cz" id_tax="2" />
@@ -100,7 +100,7 @@
<taxRule iso_code_country="uk" id_tax="1" />
</taxRulesGroup>
<taxRulesGroup name="LV Books Rate (12%)">
<taxRulesGroup name="LV Books Rate (10%)">
<taxRule iso_code_country="be" id_tax="2" />
<taxRule iso_code_country="bg" id_tax="2" />
<taxRule iso_code_country="cz" id_tax="2" />

View File

@@ -8,14 +8,14 @@
</languages>
<taxes>
<tax id="1" name="MVA NO 25%" rate="25" />
<tax id="2" name="MVA NO 15%" rate="15" />
<tax id="2" name="MVA NO 14%" rate="14" />
<tax id="3" name="MVA NO 8%" rate="8" />
<taxRulesGroup name="NO Standard Rate (25%)">
<taxRule iso_code_country="no" id_tax="1" />
</taxRulesGroup>
<taxRulesGroup name="NO Reduced Rate (15%)">
<taxRulesGroup name="NO Reduced Rate (14%)">
<taxRule iso_code_country="no" id_tax="2" />
</taxRulesGroup>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<localizationPack name="Panama">
<localizationPack name="PA">
<currencies>
<currency name="Dollar" iso_code="USD" iso_code_num="840" sign="$" blank="0" conversion_rate="1.000000" format="1" decimals="1"/>
</currencies>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<localizationPack name="Peru">
<localizationPack name="PE">
<currencies>
<currency name="Nuevo Sol" iso_code="PEN" iso_code_num="604" sign="S/." blank="1" conversion_rate="2.784499" format="1" decimals="0"/>
</currencies>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<localizationPack name="Philippines">
<localizationPack name="PH">
<currencies>
<currency name="Philippine Peso" iso_code="PHP" iso_code_num="608" sign="PHP" blank="1" conversion_rate="1.000000" format="1" decimals="1"/>
</currencies>

View File

@@ -1,15 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<localizationPack name="Poland" version="1.0">
<currencies>
<currency name="Złoty" iso_code="PLN" iso_code_num="985" sign="zł" blank="1" conversion_rate="3.84510" format="2" decimals="1" />
<currency name="Zloty" iso_code="PLN" iso_code_num="985" sign="zł" blank="1" conversion_rate="3.84510" format="2" decimals="1" />
</currencies>
<languages>
<language iso_code="pl" />
</languages>
<taxes>
<tax id="1" name="PTU PL 23%" rate="23" />
<tax id="2" name="PTU PL 8%" rate="8" />
<tax id="3" name="PTU PL 7%" rate="7" />
<tax id="4" name="PTU PL 5%" rate="5" />
<tax id="5" name="PTU PL 4%" rate="4" />
<tax id="6" name="PTU PL 0" rate="0" />
<taxRulesGroup name="PL Standard Rate (23%)">
@@ -79,6 +82,39 @@
</taxRulesGroup>
<taxRulesGroup name="PL Reduced Rate (7%)">
<taxRule iso_code_country="be" id_tax="3" />
<taxRule iso_code_country="bg" id_tax="3" />
<taxRule iso_code_country="cz" id_tax="3" />
<taxRule iso_code_country="dk" id_tax="3" />
<taxRule iso_code_country="de" id_tax="3" />
<taxRule iso_code_country="ee" id_tax="3" />
<taxRule iso_code_country="gr" id_tax="3" />
<taxRule iso_code_country="es" id_tax="3" />
<taxRule iso_code_country="fr" id_tax="3" />
<taxRule iso_code_country="ie" id_tax="3" />
<taxRule iso_code_country="it" id_tax="3" />
<taxRule iso_code_country="cy" id_tax="3" />
<taxRule iso_code_country="lv" id_tax="3" />
<taxRule iso_code_country="lt" id_tax="3" />
<taxRule iso_code_country="lu" id_tax="3" />
<taxRule iso_code_country="hu" id_tax="3" />
<taxRule iso_code_country="mt" id_tax="3" />
<taxRule iso_code_country="nl" id_tax="3" />
<taxRule iso_code_country="at" id_tax="3" />
<taxRule iso_code_country="pl" id_tax="3" />
<taxRule iso_code_country="pt" id_tax="3" />
<taxRule iso_code_country="ro" id_tax="3" />
<taxRule iso_code_country="si" id_tax="3" />
<taxRule iso_code_country="sk" id_tax="3" />
<taxRule iso_code_country="fi" id_tax="3" />
<taxRule iso_code_country="se" id_tax="3" />
<taxRule iso_code_country="uk" id_tax="3" />
</taxRulesGroup>
<taxRulesGroup name="PL Reduced Rate (5%)">
<taxRule iso_code_country="be" id_tax="4" />
<taxRule iso_code_country="bg" id_tax="4" />
@@ -111,6 +147,38 @@
<taxRule iso_code_country="uk" id_tax="4" />
</taxRulesGroup>
<taxRulesGroup name="PL Reduced Rate (4%)">
<taxRule iso_code_country="be" id_tax="5" />
<taxRule iso_code_country="bg" id_tax="5" />
<taxRule iso_code_country="cz" id_tax="5" />
<taxRule iso_code_country="dk" id_tax="5" />
<taxRule iso_code_country="de" id_tax="5" />
<taxRule iso_code_country="ee" id_tax="5" />
<taxRule iso_code_country="gr" id_tax="5" />
<taxRule iso_code_country="es" id_tax="5" />
<taxRule iso_code_country="fr" id_tax="5" />
<taxRule iso_code_country="it" id_tax="5" />
<taxRule iso_code_country="cy" id_tax="5" />
<taxRule iso_code_country="lv" id_tax="5" />
<taxRule iso_code_country="lt" id_tax="5" />
<taxRule iso_code_country="lu" id_tax="5" />
<taxRule iso_code_country="hu" id_tax="5" />
<taxRule iso_code_country="mt" id_tax="5" />
<taxRule iso_code_country="nl" id_tax="5" />
<taxRule iso_code_country="at" id_tax="5" />
<taxRule iso_code_country="pl" id_tax="5" />
<taxRule iso_code_country="pt" id_tax="5" />
<taxRule iso_code_country="ro" id_tax="5" />
<taxRule iso_code_country="si" id_tax="5" />
<taxRule iso_code_country="sk" id_tax="5" />
<taxRule iso_code_country="fi" id_tax="5" />
<taxRule iso_code_country="se" id_tax="5" />
<taxRule iso_code_country="uk" id_tax="5" />
</taxRulesGroup>
<taxRulesGroup name="PL Exempted Rate (0%)">
<taxRule iso_code_country="be" id_tax="6" />
@@ -142,6 +210,7 @@
<taxRule iso_code_country="se" id_tax="6" />
<taxRule iso_code_country="uk" id_tax="6" />
</taxRulesGroup>
</taxes>
<units>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<localizationPack name="Saudi Arabia" version="1.0">
<localizationPack name="Saoudi Arabie" version="1.0">
<currencies>
<currency name="Riyal" iso_code="SAR" iso_code_num="682" sign="﷼" blank="1" conversion_rate="5.10682" format="2" decimals="1" />
</currencies>

View File

@@ -5,7 +5,7 @@
</currencies>
<languages>
<language iso_code="en" />
<language iso_code="ms" />
<language iso_code="tw" />
<language iso_code="zh" />
</languages>
<taxes>
@@ -16,10 +16,10 @@
</taxRulesGroup>
</taxes>
<units>
<unit type="weight" value="kg"/>
<unit type="volume" value="L"/>
<unit type="short_distance" value="cm"/>
<unit type="base_distance" value="m"/>
<unit type="long_distance" value="km"/>
<unit type="weight" value="市制" />
<unit type="volume" value="市升" />
<unit type="short_distance" value="市厘" />
<unit type="base_distance" value="" />
<unit type="long_distance" value="市里" />
</units>
</localizationPack>

View File

@@ -7,10 +7,10 @@
<language iso_code="si" />
</languages>
<taxes>
<tax id="1" name="DDV SI 22%" rate="22" />
<tax id="2" name="DDV SI 9.5%" rate="9.5" />
<tax id="1" name="DDV SI 20%" rate="20" />
<tax id="2" name="DDV SI 8.5%" rate="8.5" />
<taxRulesGroup name="SI Standard Rate (22%)">
<taxRulesGroup name="SI Standard Rate (20%)">
<taxRule iso_code_country="be" id_tax="1" />
<taxRule iso_code_country="bg" id_tax="1" />
<taxRule iso_code_country="cz" id_tax="1" />
@@ -40,7 +40,7 @@
<taxRule iso_code_country="uk" id_tax="1" />
</taxRulesGroup>
<taxRulesGroup name="SI Reduced Rate (9.5%)">
<taxRulesGroup name="SI Reduced Rate (8.5%)">
<taxRule iso_code_country="be" id_tax="2" />
<taxRule iso_code_country="bg" id_tax="2" />
<taxRule iso_code_country="cz" id_tax="2" />
@@ -70,7 +70,7 @@
<taxRule iso_code_country="uk" id_tax="2" />
</taxRulesGroup>
<taxRulesGroup name="SI Foodstuff Rate (9.5%)">
<taxRulesGroup name="SI Foodstuff Rate (8.5%)">
<taxRule iso_code_country="be" id_tax="2" />
<taxRule iso_code_country="bg" id_tax="2" />
<taxRule iso_code_country="cz" id_tax="2" />
@@ -100,7 +100,7 @@
<taxRule iso_code_country="uk" id_tax="2" />
</taxRulesGroup>
<taxRulesGroup name="SI Books Rate (9.5%)">
<taxRulesGroup name="SI Books Rate (8.5%)">
<taxRule iso_code_country="be" id_tax="2" />
<taxRule iso_code_country="bg" id_tax="2" />
<taxRule iso_code_country="cz" id_tax="2" />

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<localizationPack name="Tunisia">
<localizationPack name="TN">
<currencies>
<currency name="Tunisian Dinar" iso_code="TND" iso_code_num="788" sign="DT" blank="0" conversion_rate="1.000000" format="2" decimals="1"/>
</currencies>

View File

@@ -20,7 +20,7 @@
<td>&nbsp;</td>
</tr>
<tr>
<td style="background-color: {color}; color: #fff; font-size: 12px; font-weight: bold; padding: 0.5em 1em;" align="left">A new order has been generated to you.</td>
<td style="background-color: {color}; color: #fff; font-size: 12px; font-weight: bold; padding: 0.5em 1em;" align="left">A new command has been generated to you.</td>
</tr>
<tr>
<td>&nbsp;</td>

View File

@@ -1,6 +1,6 @@
Hi {firstname} {lastname},
A new order has been generated to you.
A new command has been generated to you.
Go on {order_link} to finalize the payment.

View File

@@ -53,7 +53,6 @@ class BlockSearch extends Module
public function hookdisplayMobileTopSiteMap($params)
{
$this->smarty->assign(array('hook_mobile' => true, 'instantsearch' => false));
$params['hook_mobile'] = true;
return $this->hookTop($params);
}
@@ -81,6 +80,7 @@ public function hookDisplayMobileHeader($params)
public function hookRightColumn($params)
{
if (Tools::getValue('search_query') || !$this->isCached('blocksearch.tpl', $this->getCacheId()))
{
$this->calculHookCommon($params);
@@ -95,8 +95,7 @@ public function hookDisplayMobileHeader($params)
public function hookTop($params)
{
$key = $this->getCacheId('blocksearch-top'.((!isset($params['hook_mobile']) || !$params['hook_mobile']) ? '' : '-hook_mobile'));
if (Tools::getValue('search_query') || !$this->isCached('blocksearch-top.tpl', $key))
if (Tools::getValue('search_query') || !$this->isCached('blocksearch-top.tpl', $this->getCacheId('blocksearch-top')))
{
$this->calculHookCommon($params);
$this->smarty->assign(array(
@@ -106,7 +105,8 @@ public function hookDisplayMobileHeader($params)
);
}
return $this->display(__FILE__, 'blocksearch-top.tpl', Tools::getValue('search_query') ? null : $key);
return $this->display(__FILE__, 'blocksearch-top.tpl', Tools::getValue('search_query') ? null : $this->getCacheId('blocksearch-top'));
}
/**

View File

@@ -120,7 +120,7 @@ class HomeFeatured extends Module
{
$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = (int)Configuration::get('HOME_FEATURED_NBR');
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), "position");
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8));
$this->smarty->assign(array(
'products' => $products,

View File

@@ -318,7 +318,7 @@ class MailAlerts extends Module
$customization_text .= '---<br />';
}
$customization_text = Tools::rtrimString($customization_text, '---<br />');
$customization_text = rtrim($customization_text, '---<br />');
}
$items_table .=

View File

@@ -680,14 +680,11 @@ class ProductComments extends Module
{
require_once(dirname(__FILE__).'/ProductComment.php');
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
$average = ProductComment::getAverageGrade((int)Tools::getValue('id_product'));
$this->context->smarty->assign(array(
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
'comments' => ProductComment::getByProduct((int)(Tools::getValue('id_product'))),
'criterions' => ProductCommentCriterion::getByProduct((int)(Tools::getValue('id_product')), $this->context->language->id),
'averageTotal' => round($average['grade']),
'nbComments' => (int)(ProductComment::getCommentNumber((int)(Tools::getValue('id_product'))))
));

View File

@@ -474,7 +474,6 @@ class PSCleaner extends Module
'stock',
'stock_available',
'stock_mvt',
'tag',
);
foreach ($tables as $table)
$db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`');

View File

@@ -93,8 +93,6 @@ class ReferralProgramModule extends ObjectModel
$cartRule->date_to = date('Y-m-d H:i:s', time() + 31536000); // + 1 year
$cartRule->code = $this->getDiscountPrefix().Tools::passwdGen(6);
$cartRule->name = Configuration::getInt('REFERRAL_DISCOUNT_DESCRIPTION');
if (empty($cartRule->name))
$cartRule->name = 'Referral reward';
$cartRule->id_customer = (int)$id_customer;
$cartRule->reduction_currency = (int)$id_currency;

View File

@@ -89,18 +89,14 @@ $(function(){ldelim}
<form action="{$link->getPageLink('address', true)|escape:'html'}" method="post" class="std" id="add_address">
<fieldset>
<h3>{if isset($id_address)}{l s='Your address'}{else}{l s='New address'}{/if}</h3>
{assign var="stateExist" value=false}
{assign var="postCodeExist" value=false}
{assign var="dniExist" value=false}
{foreach from=$ordered_adr_fields item=field_name}
{if $field_name eq 'dni'}
{assign var="dniExist" value=true}
<p class="text">
<label for="dni">{l s='Identification number'}</label>
<p class="required text dni">
<label for="dni">{l s='Identification number'} <sup>*</sup></label>
<input type="text" class="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{else}{if isset($address->dni)}{$address->dni|escape:'html'}{/if}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
{/if}
{assign var="stateExist" value=false}
{assign var="postCodeExist" value=false}
{foreach from=$ordered_adr_fields item=field_name}
{if $field_name eq 'company'}
<p class="text">
<label for="company">{l s='Company'}</label>
@@ -214,13 +210,6 @@ $(function(){ldelim}
</select>
</p>
{/if}
{if !$dniExist}
<p class="required text dni">
<label for="dni">{l s='Identification number'} <sup>*</sup></label>
<input type="text" class="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{else}{if isset($address->dni)}{$address->dni|escape:'html'}{/if}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
{/if}
<p class="textarea">
<label for="other">{l s='Additional information'}</label>
<textarea id="other" name="other" cols="26" rows="3">{if isset($smarty.post.other)}{$smarty.post.other}{else}{if isset($address->other)}{$address->other|escape:'html'}{/if}{/if}</textarea>

View File

@@ -90,7 +90,6 @@ $(document).ready(function() {
{include file="$tpl_dir./errors.tpl"}
{assign var='stateExist' value=false}
{assign var="postCodeExist" value=false}
{assign var="dniExist" value=false}
{if !isset($email_create)}
<script type="text/javascript">
{literal}
@@ -316,9 +315,7 @@ $(document).ready(function() {
<input type="text" class="text" name="vat_number" value="{if isset($smarty.post.vat_number)}{$smarty.post.vat_number}{/if}" />
</p>
</div>
{elseif $field_name eq "dni"}
{assign var='dniExist' value=true}
<p class="text">
<p class="required text dni">
<label for="dni">{l s='Identification number'}</label>
<input type="text" class="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
@@ -362,12 +359,6 @@ $(document).ready(function() {
</p>
{/if}
{/foreach}
{if $postCodeExist eq false}
<p class="required postcode text hidden">
<label for="postcode">{l s='Zip / Postal Code'} <sup>*</sup></label>
<input type="text" class="text" name="postcode" id="postcode" value="{if isset($smarty.post.postcode)}{$smarty.post.postcode}{/if}" onblur="$('#postcode').val($('#postcode').val().toUpperCase());" />
</p>
{/if}
{if $stateExist eq false}
<p class="required id_state select hidden">
<label for="id_state">{l s='State'} <sup>*</sup></label>
@@ -376,12 +367,11 @@ $(document).ready(function() {
</select>
</p>
{/if}
{if $dniExist eq false}
<p class="required text dni">
<label for="dni">{l s='Identification number'} <sup>*</sup></label>
<input type="text" class="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
{if $postCodeExist eq false}
<p class="required postcode text hidden">
<label for="postcode">{l s='Zip / Postal Code'} <sup>*</sup></label>
<input type="text" class="text" name="postcode" id="postcode" value="{if isset($smarty.post.postcode)}{$smarty.post.postcode}{/if}" onblur="$('#postcode').val($('#postcode').val().toUpperCase());" />
</p>
{/if}
<p class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if}text">
<label for="phone_mobile">{l s='Mobile phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label>
@@ -396,7 +386,6 @@ $(document).ready(function() {
<div id="opc_invoice_address" class="hidden">
{assign var=stateExist value=false}
{assign var=postCodeExist value=false}
{assign var=dniExist value=false}
<h3>{l s='Invoice address'}</h3>
{foreach from=$inv_all_fields item=field_name}
{if $field_name eq "company" && $b2b_enable}
@@ -411,10 +400,8 @@ $(document).ready(function() {
<input type="text" class="text" id="vat_number_invoice" name="vat_number_invoice" value="{if isset($smarty.post.vat_number_invoice)}{$smarty.post.vat_number_invoice}{/if}" />
</p>
</div>
{elseif $field_name eq "dni"}
{assign var=dniExist value=true}
<p class="text">
<label for="dni_invoice">{l s='Identification number'}</label>
<p class="required text dni_invoice">
<label for="dni">{l s='Identification number'}</label>
<input type="text" class="text" name="dni_invoice" id="dni_invoice" value="{if isset($smarty.post.dni_invoice)}{$smarty.post.dni_invoice}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
@@ -478,13 +465,6 @@ $(document).ready(function() {
</select>
</p>
{/if}
{if !$dniExist}
<p class="required text dni_invoice">
<label for="dni_invoice">{l s='Identification number'} <sup>*</sup></label>
<input type="text" class="text" name="dni_invoice" id="dni_invoice" value="{if isset($smarty.post.dni_invoice)}{$smarty.post.dni_invoice}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
{/if}
<p class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if}text">
<label for="phone_mobile_invoice">{l s='Mobile phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label>
<input type="text" class="text" name="phone_mobile_invoice" id="phone_mobile_invoice" value="{if isset($smarty.post.phone_mobile_invoice)}{$smarty.post.phone_mobile_invoice}{/if}" />

View File

@@ -1,2 +1,2 @@
body { direction: rtl !important; }
* { direction: rtl !important; }
#page { text-align: right !important; }

View File

@@ -0,0 +1,61 @@
{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<!-- MODULE Block specials -->
<div id="special_block_right" class="block products_block exclusive blockspecials">
<p class="title_block"><a href="{$link->getPageLink('prices-drop')|escape:'html'}" title="{l s='Specials' mod='blockspecials'}">{l s='Specials' mod='blockspecials'}</a></p>
<div class="block_content">
{if $special}
<ul class="products clearfix">
<li class="product_image">
<a href="{$special.link|escape:'html'}"><img src="{$link->getImageLink($special.link_rewrite, $special.id_image, 'medium_default')|escape:'html'}" alt="{$special.legend|escape:html:'UTF-8'}" height="{$mediumSize.height}" width="{$mediumSize.width}" title="{$special.name|escape:html:'UTF-8'}" /></a>
</li>
<li>
{if !$PS_CATALOG_MODE}
{if $special.specific_prices}
{assign var='specific_prices' value=$special.specific_prices}
{if $specific_prices.reduction_type == 'percentage' && ($specific_prices.from == $specific_prices.to OR ($smarty.now|date_format:'%Y-%m-%d %H:%M:%S' <= $specific_prices.to && $smarty.now|date_format:'%Y-%m-%d %H:%M:%S' >= $specific_prices.from))}
<span class="reduction"><span>-{$specific_prices.reduction*100|floatval}%</span></span>
{/if}
{/if}
{/if}
<p class="s_title_block"><a href="{$special.link|escape:'html'}" title="{$special.name|escape:html:'UTF-8'}">{$special.name|escape:html:'UTF-8'}</a></p>
{if !$PS_CATALOG_MODE}
<span class="price-discount">{if !$priceDisplay}{displayWtPrice p=$special.price_without_reduction}{else}{displayWtPrice p=$priceWithoutReduction_tax_excl}{/if}</span>
<span class="price">{if !$priceDisplay}{displayWtPrice p=$special.price}{else}{displayWtPrice p=$special.price_tax_exc}{/if}</span>
{/if}
</li>
</ul>
<p>
<a href="{$link->getPageLink('prices-drop')|escape:'html'}" title="{l s='All specials' mod='blockspecials'}">&raquo; {l s='All specials' mod='blockspecials'}</a>
</p>
{else}
<p>{l s='No specials at this time' mod='blockspecials'}</p>
{/if}
</div>
</div>
<!-- /MODULE Block specials -->

View File

@@ -171,14 +171,13 @@
<td>
<div class="delivery_option_price">
{if $option.total_price_with_tax && (!isset($free_shipping) || (isset($free_shipping) && !$free_shipping))}
{if $use_taxes == 1}
{if $priceDisplay == 1}
{convertPrice price=$option.total_price_without_tax} {l s='(tax excl.)'}
{else}
{convertPrice price=$option.total_price_with_tax} {l s='(tax incl.)'}
{/if}
{else}
{convertPrice price=$option.total_price_without_tax}
{/if}
{else}
{l s='Free'}

View File

@@ -182,27 +182,12 @@
<h3>{l s='Delivery address'}</h3>
{$stateExist = false}
{$postCodeExist = false}
{$dniExist = false}
{foreach from=$dlv_all_fields item=field_name}
{if $field_name eq "company" && $b2b_enable}
<p class="text">
<label for="company">{l s='Company'}</label>
<input type="text" class="text" id="company" name="company" value="{if isset($guestInformations) && $guestInformations.company}{$guestInformations.company}{/if}" />
</p>
{elseif $field_name eq "vat_number"}
<div id="vat_number_block" style="display:none;">
<p class="text">
<label for="vat_number">{l s='VAT number'}</label>
<input type="text" class="text" name="vat_number" id="vat_number" value="{if isset($guestInformations) && $guestInformations.vat_number}{$guestInformations.vat_number}{/if}" />
<label for="company">{l s='Company'}</label>
<input type="text" class="text" id="company" name="company" value="{if isset($guestInformations) && $guestInformations.company}{$guestInformations.company}{/if}" />
</p>
</div>
{elseif $field_name eq "dni"}
{assign var='dniExist' value=true}
<p class="text">
<label for="dni">{l s='Identification number'}</label>
<input type="text" class="text" name="dni" id="dni" value="{if isset($guestInformations) && $guestInformations.dni}{$guestInformations.dni}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
{elseif $field_name eq "firstname"}
<p class="required text">
<label for="firstname">{l s='First name'} <sup>*</sup></label>
@@ -243,6 +228,13 @@
{/foreach}
</select>
</p>
{elseif $field_name eq "vat_number"}
<div id="vat_number_block" style="display:none;">
<p class="text">
<label for="vat_number">{l s='VAT number'}</label>
<input type="text" class="text" name="vat_number" id="vat_number" value="{if isset($guestInformations) && $guestInformations.vat_number}{$guestInformations.vat_number}{/if}" />
</p>
</div>
{elseif $field_name eq "state" || $field_name eq 'State:name'}
{$stateExist = true}
<p class="required id_state select" style="display:none;">
@@ -253,6 +245,11 @@
</p>
{/if}
{/foreach}
<p class="required text dni">
<label for="dni">{l s='Identification number'}</label>
<input type="text" class="text" name="dni" id="dni" value="{if isset($guestInformations) && $guestInformations.dni}{$guestInformations.dni}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
{if !$postCodeExist}
<p class="required postcode text hidden">
<label for="postcode">{l s='Zip / Postal code'} <sup>*</sup></label>
@@ -266,14 +263,7 @@
<option value="">-</option>
</select>
</p>
{/if}
{if !$dniExist}
<p class="required text dni">
<label for="dni">{l s='Identification number'} <sup>*</sup></label>
<input type="text" class="text" name="dni" id="dni" value="{if isset($guestInformations) && $guestInformations.dni}{$guestInformations.dni}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
{/if}
{/if}
<p class="textarea is_customer_param">
<label for="other">{l s='Additional information'}</label>
<textarea name="other" id="other" cols="26" rows="3"></textarea>
@@ -299,7 +289,6 @@
<div id="opc_invoice_address" class="is_customer_param">
{assign var=stateExist value=false}
{assign var=postCodeExist value=false}
{assign var=dniExist value=false}
<h3>{l s='Invoice address'}</h3>
{foreach from=$inv_all_fields item=field_name}
{if $field_name eq "company" && $b2b_enable}
@@ -314,10 +303,8 @@
<input type="text" class="text" id="vat_number_invoice" name="vat_number_invoice" value="" />
</p>
</div>
{elseif $field_name eq "dni"}
{assign var='dniExist' value=true}
<p class="text">
<label for="dni_invoice">{l s='Identification number'}</label>
<p class="required text dni_invoice">
<label for="dni">{l s='Identification number'}</label>
<input type="text" class="text" name="dni_invoice" id="dni_invoice" value="{if isset($guestInformations) && $guestInformations.dni_invoice}{$guestInformations.dni_invoice}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
@@ -386,13 +373,6 @@
</select>
</p>
{/if}
{if !$dniExist}
<p class="required text dni_invoice">
<label for="dni_invoice">{l s='Identification number'} <sup>*</sup></label>
<input type="text" class="text" name="dni_invoice" id="dni_invoice" value="{if isset($guestInformations) && $guestInformations.dni_invoice}{$guestInformations.dni_invoice}{/if}" />
<span class="form_info">{l s='DNI / NIF / NIE'}</span>
</p>
{/if}
<p class="textarea is_customer_param">
<label for="other_invoice">{l s='Additional information'}</label>
<textarea name="other_invoice" id="other_invoice" cols="26" rows="3"></textarea>