(Никто не ответил, решил сам дописать, может кому пригодится.
Проблема: Есть основная валюта, товар приходит в другой валюте, курс меняется, все цены менять сложно.
Что делает модуль: Дает возможность заполнять цены в одной из 4х валют (евро, дол, грн, руб), но клиенту выводить в основной валюте.
Установка:
1. Скопировать содержимое архива сюда \app\addons
2. Заходим в модули и активируем его.
3. Пару правок в файлах
\design\backend\templates\views\products\update.tpl (86)
Находим строку
Код:
<input type="text" name="product_data[price]" id="elm_price_price" size="10" value="{$product_data.price|default:"0.00"|fn_format_price:$primary_currency:null:false}" class="input-long" />
После этого вставляем
Код:
<select name="product_data[product_currency]">
<option {if $product_data.product_currency=="0"}selected="selected"{/if} value="0">Гривна</option>
<option {if $product_data.product_currency=="1"}selected="selected"{/if} value="1">Доллар</option>
<option {if $product_data.product_currency=="2"}selected="selected"{/if} value="2">Евро</option>
<option {if $product_data.product_currency=="3"}selected="selected"{/if} value="3">Рубль</option>
</select>
\app\controllers\frontend\products.php (96)
Находим
Код:
if (!empty($products)) {
$_SESSION['continue_url'] = Registry::get('config.current_url');
}
После этого вставляем
Код:
for ($i=0; $i < count($products); $i++) {
switch($products[$i]['product_currency'])
{
case 0:
$products[$i]['price'] = $products[$i]['price']*Registry::get('addons.extra_currencies.currency_uah');
break;
case 1:
$products[$i]['price'] = $products[$i]['price']*Registry::get('addons.extra_currencies.currency_usd');
break;
case 2:
$products[$i]['price'] = $products[$i]['price']*Registry::get('addons.extra_currencies.currency_eur');
break;
case 3:
$products[$i]['price'] = $products[$i]['price']*Registry::get('addons.extra_currencies.currency_rub');
break;
}
}
Ниже находим
Код:
if (empty($product)) {
return array(CONTROLLER_STATUS_NO_PAGE);
}
После этого вставляем
Код:
switch($product['product_currency'])
{
case 0:
$product['price'] = $product['price']*Registry::get('addons.extra_currencies.currency_uah');
break;
case 1:
$product['price'] = $product['price']*Registry::get('addons.extra_currencies.currency_usd');
break;
case 2:
$product['price'] = $product['price']*Registry::get('addons.extra_currencies.currency_eur');
break;
case 3:
$product['price'] = $product['price']*Registry::get('addons.extra_currencies.currency_rub');
break;
}
\app\controllers\frontend\categories.php (93)
Находим
Код:
fn_gather_additional_products_data($products, array(
'get_icon' => true,
'get_detailed' => true,
'get_additional' => true,
'get_options' => true,
'get_discounts' => true,
'get_features' => false
));
После этого вставляем
Код:
for ($i=0; $i < count($products); $i++) {
switch($products[$i]['product_currency'])
{
case 0:
$products[$i]['price'] = $products[$i]['price']*Registry::get('addons.extra_currencies.currency_uah');
break;
case 1:
$products[$i]['price'] = $products[$i]['price']*Registry::get('addons.extra_currencies.currency_usd');
break;
case 2:
$products[$i]['price'] = $products[$i]['price']*Registry::get('addons.extra_currencies.currency_eur');
break;
case 3:
$products[$i]['price'] = $products[$i]['price']*Registry::get('addons.extra_currencies.currency_rub');
break;
}
}
\app\functions\fn.catalog.php (2246)
Находим
Код:
shipping_params = array();
if (!empty($product_id)) {
$shipping_params = db_get_field('SELECT shipping_params FROM ?:products WHERE product_id = ?i', $product_id);
if (!empty($shipping_params)) {
$shipping_params = unserialize($shipping_params);
}
}
После этого вставляем
Код:
if (!empty($product_data['product_currency'])) {
$_data['product_currency'] = $product_data['product_currency'];
}
UPD: Что бы работало в корзине нужно еще вставить сюда
\app\functions\fn.cart.php (35)
Находим
Код:
$fields = array(
'?:products.product_id',
'?:products.company_id',
"GROUP_CONCAT(IF(?:products_categories.link_type = 'M', CONCAT(?:products_categories.category_id, 'M'), ?:products_categories.category_id)) as category_ids",
Добавляем
Код:
$fields = array(
'?:products.product_id',
'?:products.company_id',
'?:products.product_currency',
"GROUP_CONCAT(IF(?:products_categories.link_type = 'M', CONCAT(?:products_categories.category_id, 'M'), ?:products_categories.category_id)) as category_ids",
Ниже еще находим
(175)
Код:
$_pdata['weight'] = fn_apply_options_modifiers($product['product_options'], $_pdata['weight'], 'W', array(), array('product_data' => $product));
$_pdata['amount'] = $product['amount'];
После этого вставляем
Код:
switch($_pdata['product_currency'])
{
case 0:
$product['price'] = $product['price']*Registry::get('addons.extra_currencies.currency_uah');
break;
case 1:
$product['price'] = $product['price']*Registry::get('addons.extra_currencies.currency_usd');
break;
case 2:
$product['price'] = $product['price']*Registry::get('addons.extra_currencies.currency_eur');
break;
case 3:
$product['price'] = $product['price']*Registry::get('addons.extra_currencies.currency_rub');
break;
}
Строки могут не совпадать у меня 4.1.х тема responsive