Деноминация в Беларуси - нужно настроить в VirtueMart 2 цены!

  • 31 Ответов
  • 1099 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Добрый день!
Прошу помочь!
С 1 июля в Беларуси отрезают 4 ноля в рубле, и требуют до конца года указывать 2 цены на сайтах - новую и  старую!
Как сделать так, чтобы в карточке товара отображалось 2 цены?
Joomla! 2.5.27
VirtueMart 2.0.20b
Спасибо заранее за ответ!
« Последнее редактирование: 28.06.2016, 14:36:51 от Agassi116 »

*

Liss

  • ****
  • 218
  • 9
Предположим ты выводишь цены в новом формате (предварительно их переписав) вот такой стандартной конструкцией

Код
if (!empty($this->product->prices['salesPrice'])) {
  echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices );
}

ниже выведи ее же, умноженную на 10000

Код
if (!empty($this->product->prices['salesPrice'])) {
echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices );
$myoldprice = $this->product->prices['salesPrice'] * 10000;
echo '<span class="oldrub">'.$myoldprice.' руб</span>';
}


Спасибо за отзыв.
Это все надо править в components\com_virtuemart\views\productdetails\tmpl\default_showprices.php
Или еще где-то?
« Последнее редактирование: 28.06.2016, 14:34:06 от Agassi116 »

Попробовал - не получается :(

*

Liss

  • ****
  • 218
  • 9
шаблоны VM могут быть переопределены в папке с глобальным шаблоном
/templates/ххх/html/com_virtuemart

СПАСИБО!
Все вроде получается - а как в этом поле, где вторая цена еще вставить строку "цена до деноминации"
И еще - можно ли сделать так, чтобы эта цена отображалась и в корзине в том числе и на главной странице, где выведены все товары раздела?
« Последнее редактирование: 29.06.2016, 23:43:03 от Agassi116 »

*

flyingspook

  • *****
  • 3606
  • 236
СПАСИБО!
Все вроде получается - а как в этом поле, где вторая цена еще вставить строку "цена до деноминации"
И еще - можно ли сделать так, чтобы эта цена отображалась и в корзине в том числе и на главной странице, где выведены все товары раздела?
так
Код: php
if (!empty($this->product->prices['salesPrice'])) {
echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices );
$myoldprice = $this->product->prices['salesPrice'] * 10000;
echo 'цена до деноминации: <span class="oldrub">'.$myoldprice.' руб</span>';
}

Отлично! Всё получилось, но есть одно но, как отобразить вторую цену не только в карточке товара, а в общем списке продуктов? Там где категории слева , а все продукты справа с ценами.
И есть ли возможность дублировать цены в том числе и в корзине при заказе с возможностью подсчета цена и в новых и в старых.
Спасибо заранее! Очень помогли!
« Последнее редактирование: 30.06.2016, 11:54:26 от Agassi116 »

*

Liss

  • ****
  • 218
  • 9
аналогичным образом править шаблоны соответствующих модулей, корзины

Я правильно понимаю - этот этот файл ? /templates/хххl/html/com_virtuemart/cart
Если так, то где тут что править?  !

Спойлер
[свернуть]
Покажите пожалуйста мне недалекому человеку где тут что "допиливать" ?
Спасибо!
« Последнее редактирование: 30.06.2016, 21:06:12 от flyingspook »

*

Liss

  • ****
  • 218
  • 9
не скажу конкретный номер строки, т.к. он в цитировании не обозначается, но ищи вот это
Код: php
 echo $this->currencyDisplay->createPriceDiv ('salesPrice', '', $this->cart->pricesUnformatted[$pkey], FALSE, FALSE, $prow->quantity)
это создание слоя с ценой
конкретно цена (цифра) – это $this->cart->pricesUnformatted[$pkey] - т.е. это умножай на 10000 и выводи, где надо

Строку эту нашел, но ничего не изменилось, я так понимаю делать надо так
Код
echo $this->currencyDisplay->createPriceDiv ('salesPrice', '', $this->cart->pricesUnformatted[$pkey], FALSE, FALSE, $prow->quantity)
if (!empty($this->cart->pricesUnformatted[$pkey])) {
echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices );
$myoldprice = $this->cart->pricesUnformatted[$pkey] * 10000;
echo 'цена до деноминации: <span class="oldrub">'.$myoldprice.' руб</span>';
}

*

Liss

  • ****
  • 218
  • 9
не, похоже, что не нашел
echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices );
$myoldprice = $this->cart->pricesUnformatted[$pkey] * 10000;

разве переменная одинаковая?
это же корзина, там много слоев с ценой, и ты ковыряешь не тот

Я совсем запутался :(
Извините, я не так давно начал осваивать, пытаться осваивать такого рода действия.
Если можно разжевать для нуба?

*

Liss

  • ****
  • 218
  • 9
дай ссылку на сайт. надо посмотреть, какие типы цен ты выводишь в корзину (цена до налогов, налог, величина дисконта, окончательная цена, сумма цен товаров в корзине и т.д)

Не знаю подойдет ли вариант для 2 версии, сегодня делал клиенту для 3-й.

Создаете новую валюту, после чего ставите ее основной, в старом выставляете соответсвующий курс 1/10000, прописываете верно знаки после десятичных. Способ работает как часики. Новые товары добавляем уже в новой валюте.

Далее, как вариант, чтобы в дальнейшем не было такой ерунды, добавьте валюту в долларах, после чего выставите в ней соответствующий курс, а уже после этого новые товары забивайте в долларах, чтобы каждый раз не менять цены при смене курса, а также не сталкиваться с проблемами деноминации в дальнейшем. Старые товары также можно постепенно заменить валюту на доллар.

P.S. Есть еще более замороченный вариант, можно все цены выгрузить с помощью CVSI Pro в формать cvsi там с помощью экселя быстро передвинуть запятую на 4 символа, после чего загрузить новые цены.

Править файлы компонента, модулей или шаблона последнее дело...

дай ссылку на сайт. надо посмотреть, какие типы цен ты выводишь в корзину (цена до налогов, налог, величина дисконта, окончательная цена, сумма цен товаров в корзине и т.д)
Vitamin-sport.by

*

Liss

  • ****
  • 218
  • 9
судя по верстке, у тебя компонент One Page Checkout
т.е. ты не тот шаблон пытаешься править
/components/com_onepage/themes - вот тут.
какая именно тема включена, надо посмотреть в админке в настройках компонента

нужно содержимое файла components/com_onepage/themes/ТЕМА/overrides/basket.html.php

components/com_onepage/themes/ТЕМА/overrides/basket.html.php
Там не нашел своей темы :(((
Вот закинул содержимое templates/имя шаблона по ссылке:
https://yadi.sk/d/pNWOH-Jsswv7v
Если это поможет конечно...

*

Liss

  • ****
  • 218
  • 9
вместо "ТЕМА" должно быть конкретное название папки с темой, какая это папка нужно смотреть в настройках компонента One Page Checkout


Если я все правильно сделал, то содержимое basket.html.php  вот такое:

Спойлер
[свернуть]
Что прикажете здесь ровнять?
Спасибо заранее и извините за мою некомпетентность...

*

Liss

  • ****
  • 218
  • 9
пардон, обманул тебя. в этом файле формируется только верстка табличной части, цена формируется в другом месте
файл components/com_onepage/helpers/basket.php

строка номер 533
Код: php
$product['product_price'] = $currencyDisplay->createPriceDiv($product_price_display,'', $price,false,true, 1);

после нее вставь
Код: php
$myoldprice = $price[$product_price_display] * 10000;
$product['product_price'] .= 'цена до деноминации: <span class="oldrub">'.$myoldprice.' руб</span>';

Супер!  :D
Нашел там такую строку
Код
$product['product_price'] = $currencyDisplay->createPriceDiv($product_price_display,'', $price,false,false, 1);
и вставил после нее
Код
$myoldprice = $price[$product_price_display] * 10000;
$product['product_price'] .= 'цена до деноминации: <span class="oldrub">'.$myoldprice.' руб</span>';

Получилось вот так
Как сделать еще, чтобы сумма тоже сбивалась со старой ценой? Я указал место стрелкой

И еще, как сделать отображение 2х цен в общем каталоге?
Спойлер
[свернуть]

СПАСИБО ОГРОМНОЕ ЗА ТАКУЮ ПОМОЩЬ!

*

Liss

  • ****
  • 218
  • 9
файл components/com_onepage/helpers/basket.php
строка 671 (+- несколько строк из-за ранее вставленного кода)

Код: php
$product['subtotal'] = $currencyDisplay->createPriceDiv($product_price_display,'', $copy,false,true, 1);

после нее
Код: php
$myoldtotal = $copy[$product_price_display] * 10000;
$product['subtotal'] .= 'цена до деноминации: <span class="oldrub">'.$myoldtotal.' руб</span>';

файл templates/ххх/html/com_virtuemart/category/default.php
номер строки не скажу, т.к. зависит от шаблона

строка примерно такая
Код: php
echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices );

после нее
Код: php
$myoldprice = $this->product->prices['salesPrice'] * 10000;
echo 'цена до деноминации: <span class="oldrub">'.$myoldprice.' руб</span>';
« Последнее редактирование: 08.07.2016, 20:20:28 от Liss »

По корзине сделал, получилось вот так
Стрелкой обозначил где еще надо добавить.

Цитировать
echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices );
не нашел там :(
файл templates/ххх/html/com_virtuemart/category/default.php :
Спойлер
[свернуть]
Может ткнете носом?  !

*

Liss

  • ****
  • 218
  • 9
по цене в категории, строка 291
Код: php
echo $this->currency->createPriceDiv ('salesPrice', '', $product->prices);

после нее, как и ранее писал
Код: php
$myoldprice = $this->product->prices['salesPrice'] * 10000;
echo 'цена до деноминации: <span class="oldrub">'.$myoldprice.' руб</span>';

выходит, не ту промежуточную стоимость я ковырял
строка примерно 924
Код: php
$order_total_display = $currencyDisplay->createPriceDiv('billTotal','', $ref->cart->prices,false,false, 1);

после нее
Код: php
$myoldtotal = $ref->cart->prices['billTotal'] * 10000;
$order_total_display .= 'цена до деноминации: <span class="oldrub">'.$myoldtotal.' руб</span>';

По категориям отображение строки "до деноминации" есть, а вот сумма там ноль
Спойлер
[свернуть]


По корзине весьма интересно - строка "до деноминации"  и сумма в старых рублях моргает на 1 секунду и исчезает  :o

*

Liss

  • ****
  • 218
  • 9
категория
this-> сотри
Код: php
$myoldprice = $product->prices['salesPrice'] * 10000;
echo 'цена до деноминации: <span class="oldrub">'.$myoldprice.' руб</span>';

По категориям все стало отлично!
Цена отображается !

Круто!

А что с корзиной ?...
Вы можете сами на сайт зайти, положить вещь в корзину и как только вы туда попадете - внимательно смотрите как отображается строка и дальше исчезает - через F5 увидите...

*

Liss

  • ****
  • 218
  • 9
что касается корзины, там слоем динамически управляет ява скрипт. это, похоже, связано с автоматическим пересчетом итоговой стоимости при выборе доставки
у тебя только самовывоз, попробуй в basket.html.php
удалить id="tt_total_basket" (в строке 201)

очень рекомендую записывать, где и что добавил/изменил/удалил. потом потребуется вернуть, как было, замучаешься искать и вспоминать