Автор Тема: Вопросы по ограничению валют  (Прочитано 1337 раз)

13 Ноября 2014, 13:27:31
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Добрый день,

Возникла следующая проблема. На главной странице сайта  для клиента есть возможность выбора валют Евро и Гривны. Соответственно,если клиент выбрал Евро,то все цены на товары указываются в Евро,на этапах заказа и Модулях оплаты товара -  тоже Евро.
Задача состоит в том,чтобы исключить возможность оплаты товара в Евро, чтобы была только Гривна. В настройках Модули>Оплата я снял галочки напротив валюты Евро, но это не помогло, т.к. тогда на последнем этапе 'Оплата ' пропадают модули Оплата чеком и Оплата банковским переводом. Использую prestashop 1.6.0.8.

Подскажите пожалуйста,как можно достичь того,чтобы если клиент выбрал на главной странице сайта валюту Евро, на последнем этапе 'Оплата' у него отображалась цена в Гривне, либо чтобы была валюта Гривна по-умолчанию? И почему пропадают модули оплаты,если снимается галочка с Евро в ограничении валют?
13 Ноября 2014, 14:31:06
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 105581
  • Репутация: +39547/-0
    • Просмотр профиля
    • Webstudio UwK
В ограничениях валют вы отмечаете модули / методы оплаты, которые разрешены для каждой валюты.
Если вы убираете выделение, значит показ этого модуля/методы не разрешен.

Установить валюту по умолчанию можно в
Панель управления > Локализация > Валюты
Cоздание интернет сайтов Webstudio UwK
13 Ноября 2014, 15:54:11
Ответ #2
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
В Локализация>Валюта у меня 2 активные валюты: Гривна и Евро. Мне необходимо,чтобы они активными и оставались, но только чтобы на этапе формирования заказа пользователь мог бы выбрать оплату только Гривной и чтобы в листе заказа она тоже вбилась в Гривне. Такое можно как-то реализовать?
13 Ноября 2014, 16:47:44
Ответ #3
  • Фрилансер
  • *
  • Сообщений: 140
  • Репутация: +0/-0
    • Просмотр профиля
Скорее всего таких модулей нет. В корзину отправляется товар по цене и валюте, которую клиент видит на сайте. Так работают все движки. Для чего тогда вообще показывать цены в евро, если все операции проходят в гривне? Для информации можно просто написать цену в евро в тексте, а на сайте оставить только одну валюту.
05 Декабря 2014, 13:26:05
Ответ #4
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Добрый день,

У меня все тот же вопрос по валюте на последнем этапе оформления заказа. Валюта по-умолчанию Евро, вторая валюта Гривна. Для оплаты есть два стандартных модуля: Банковский платеж и Оплата чеком. При выборе каждого из них на странице видна общая сумма заказа,сначала в Евро, т.к. это валюта по-умолчанию. Есть input с выбором валют. Если выбрать Гривну,то сумма на странице переконвертируется.
Задача стоит такая: чтобы при переходе на страницу оплаты модулем все оставалось,плюс добавить цену в Гривне в тексте. Т.е. чтобы небыло input-а с выбором валюты оплаты, а просто была строка 'Общая сумма вашего заказа в Евро -10. Общая сумма вашего заказа в Гривне -200'. Как можно это реализовать? Подскажите,может кто уже делал подобное?
05 Декабря 2014, 13:38:28
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 13458
  • Репутация: +14561/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Список валют можно отключить, удалить модуль Блок валют и input с выбором валют не будет показан.
05 Декабря 2014, 13:41:12
Ответ #6
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Это я сделаю. Как реализовать одновременный показ валюты и в Евро и в Гривне на странице модуля оплаты товара?  Как я понимаю,значение суммы содержится в cookie. Но как сделать отображение двух валют сразу,чтобы конвертировались они в соответствии с заданным в админ-панели курсом?
05 Декабря 2014, 13:47:01
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33010
  • Репутация: +26761/-0
    • Просмотр профиля
Есть такая тема, как показать цены сразу в 2-х валютах гривна и доллар, только там было для страницы товара. Вот с нее можно взять код, работать должно и на страницах заказа. Ссылку не помню.
05 Декабря 2014, 13:49:32
Ответ #8
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
До этого долго мучал поиск форума,но так и не нашел подобной темы. Спасибо за подсказку,буду продолжать поиск.
05 Декабря 2014, 13:57:24
Ответ #9
05 Декабря 2014, 14:01:36
Ответ #10
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Coder,благодарю. Начинаю просвещаться.
05 Декабря 2014, 16:13:46
Ответ #11
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
У меня prestashop 1.6.0.8.
Попробовал методом,который предлагает Виктор Демидов - воспользоваться функцией конвертации convertPriceWithCurrency.
Проверил на странице товара. Добавил код для вывода валюты в Гривне - {convertPriceWithCurrency price=$product->getPrice(true, $smarty.const.NULL, 2) currency=$currencies.1 convert=true}, где '1' - id валюты Гривна.
На странице товара появилось отображение второй цены, но валюта поменялась на Гривна, а цена не конвертировалась,осталась таже,что и в Евро.
В шаблоне страницы товара валюта в Евро выводится следующим образом:
if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if}
   {if $priceDisplay >= 0 && $priceDisplay <= 2}
   <span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span>

Интересно,почему валюта изменяется,а сама цена нет?
06 Декабря 2014, 13:42:58
Ответ #12
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22166
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Валюта это знак, знак подставляеьтся в функции конвертации. Если знак вылюьты показан правльно, значит фукция работает и возвращает значение, но коэф. конвертации определен не верно. Курс конвертации берется от валюты по умолчанию. Смотрите код функции convertedPrice, проверьте передачу переменных в эту функцию.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
06 Декабря 2014, 15:45:25
Ответ #13
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
В классе Product.php есть две функции: convertPrice и convertPriceWithCurrency.
1.
public static function convertPrice($params, &$smarty)
{
return Tools::displayPrice($params['price'], Context::getContext()->currency);
}
2.
public static function convertPriceWithCurrency($params, &$smarty)
{
return Tools::displayPrice($params['price'], $params['currency'], false);
}

Я так понял,что мне необходимо использовать вторую функцию - convertPriceWithCurrency. У нее на входе $params,скорее всего это массив,из которого возвращается значение цены return Tools::displayPrice($params['price'], $params['currency'], false);. По-моему здесь возвращается и значение цены и валюта цены.
В магазине валюта по-умолчанию - это Евро,соответственно для нее Курс обмена==1. Для гривны Курс обмена отличен от 1.
Если вы говорите,что курс конвертации берется от валюты по-умолчанию,то получается что конвертация 1к1,поэтому валюта меняется, а цена нет.
Я делаю правильные выводы?
07 Декабря 2014, 13:06:33
Ответ #14
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33010
  • Репутация: +26761/-0
    • Просмотр профиля
Вернет цену в валюте, которая установлена в сессии пользователя. Т.е. конвертация цены без указания валюты.
/* Display price with right format and currency */
function convertPrice($params, &$smarty)
Вернет цену в валюте, которая передается в функцию. Т.е. конвертация цены с указанием валюты.
/* Convert price with currency */
function convertPriceWithCurrency($params, &$smarty)