Автор Тема: Смена валюты по умолчанию в магазине. Как правильно сделать?  (Прочитано 4978 раз)

25 Декабрь 2013, 00:29:32
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте, уважаемые форумчане. Прошу совета.
Возникла потребность сменить валюту по умолчанию в магазине (был доллар, сейчас нужно установить гривню).
В админке в разделе "Валюты" при выборе валюты по умолчанию светится такое сообщение:

"При изменении валюты по-умолчанию, вам придется вручную редактировать каждую стоимость товара."

Я его вовремя увидел и решил пока ничего не менять. Почему нужно будет редактировать стоимость каждого товара? Как провернуть процедуру смены валюты правильно?
25 Декабрь 2013, 13:50:50
Ответ #1
  • Фрилансер
  • *
  • Сообщений: 217
  • Репутация: +6/-0
  • Разработка и поддержка сайтов
    • Просмотр профиля
    • Разработка и поддержка сайтов
Здравствуйте, уважаемые форумчане. Прошу совета.
Возникла потребность сменить валюту по умолчанию в магазине (был доллар, сейчас нужно установить гривню).
В админке в разделе "Валюты" при выборе валюты по умолчанию светится такое сообщение:

"При изменении валюты по-умолчанию, вам придется вручную редактировать каждую стоимость товара."

Я его вовремя увидел и решил пока ничего не менять. Почему нужно будет редактировать стоимость каждого товара? Как провернуть процедуру смены валюты правильно?
Это предупреждение о том что если у вас стоит цена за товар 100руб. то будет 100$ и наоборот. А вообще если в чем то сомневаетесь то лучше делать бекап.
25 Декабрь 2013, 14:04:56
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это предупреждение о том что если у вас стоит цена за товар 100руб. то будет 100$ и наоборот. А вообще если в чем то сомневаетесь то лучше делать бекап.
Вон оно что... Спасибо за предупреждение. Нашел на просторах инета такой совет по этому поводу:

1. переведи магаз в maintance mode
2. через sql-запрос поменяй цены на все товары/доставку и т.д. согласно актуальному курсу ЦБ Латвии
3. сделай грн валютой по умолчанию
4. выйди из maintance mode


И вот такой запрос: UPDATE ps_product_shop SET price = price*8.17894

Вопрос - это правильный запрос, чтобы одним махом поменять все цены по курсу?
25 Декабрь 2013, 14:20:56
Ответ #3
  • Фрилансер
  • *
  • Сообщений: 217
  • Репутация: +6/-0
  • Разработка и поддержка сайтов
    • Просмотр профиля
    • Разработка и поддержка сайтов
И вот такой запрос: UPDATE ps_product_shop SET price = price*8.17894

Вопрос - это правильный запрос, чтобы одним махом поменять все цены по курсу?
Кроме таблицы ps_product_shop цены хранятся еще и в ps_product, так что можно добавить еще и такой запрос:
UPDATE ps_product SET price = price*8.17894
25 Декабрь 2013, 17:12:27
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Вопрос - это правильный запрос, чтобы одним махом поменять все цены по курсу?
Нет, цены храняться не в одной таблице. Не считая товаров, есть еще доставка, сделанные заказы и.т.д.
Простой вариант, это смена ИД и коэф. конвертации в таблицах ps_currency и ps_currency_shop
Можно сделать без sql запроса в phpmyadmin. Зайти в вашу бд, открыть таблицу ps_currency и поменять id_currency и conversion_rate у валют, тоже самое для ps_currency_shop.
25 Декабрь 2013, 17:57:50
Ответ #5
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
11 Январь 2014, 18:09:19
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Вопрос - это правильный запрос, чтобы одним махом поменять все цены по курсу?
Нет, цены храняться не в одной таблице. Не считая товаров, есть еще доставка, сделанные заказы и.т.д.
Простой вариант, это смена ИД и коэф. конвертации в таблицах ps_currency и ps_currency_shop
Можно сделать без sql запроса в phpmyadmin. Зайти в вашу бд, открыть таблицу ps_currency и поменять id_currency и conversion_rate у валют, тоже самое для ps_currency_shop.
В общем отложил работу в длинный ящик, руки дошли только теперь взяться. Во-первых, таблицы ps_currency_shop у меня почему-то не существует (на двух сайтах смотрел).

Во-вторых, меняю ID валют местами, меняю conversion_rate. Действительно, нужная валюта тут же становится по умолчанию, НО. В любом случае отправной точкой для просчета стоимости валют всегда является единица conversion_rate, стоящая напротив валюты по умолчанию. Цены же нигде не меняются, их числовое значение постоянно. Например, мне нужно сделать цены в гривнях (сейчас установлены в долларах). К примеру, товар стоит 10 долларов. Я поменял местами ид валют, теперь он стал стоить 10 грн. Но должен стоить 80 грн с копейками. Но КАК он будет считаться в гривнях, если напротив гривни в таблице conversion_rate стоит единица?

Пробую пальцем в небо, вместо единицы прописываю другие значения. Ничего не меняется. То ли у меня с математикой полный аврал, то ли  я просто тупой, но по-моему, просто поменять местами ид валют + conversion_rate ничего не даст, т.к. числовое значение цен уже установлено, и оно не меняется после вышеописанных изменений. Сменой ид валюты и conversion_rate можно добиться смены валюты по умолчанию и смены конвертации валют относительно дефолтной (соответственно, относительно числовых значений цен, которые были занесены изначально и не менялись никак во время вышеописанных процедур). Проясните меня :(

К тому же, в сети фигурируют таблицы ps_product_shop, у меня таких опять же нет :(
11 Январь 2014, 21:02:28
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
"_shop" - такие таблицы с версии 1.5.
Если нет, то prestashop 1.4 или 1.3
11 Январь 2014, 21:23:04
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
"_shop" - такие таблицы с версии 1.5.
Если нет, то prestashop 1.4 или 1.3
Я так и подумал. В любом случае, сути это не меняет. Может посоветуете хорошее решение смены валюты по-умолчанию без ручного редактирования цены каждого товара?

В общем есть сдвиги. С помощью SQL запроса
UPDATE ps_product SET price = price*8.17мне удалось сменить все цены на товары на нужные. Поменял валюту по-умолчанию и все ок.

Осталась стоимость доставки. У меня она считается от веса и там есть очень много диапазонов веса и цен на них. Где в базе данных эти цены прописаны, пока не нашел. Мжет кто подскажет?
12 Январь 2014, 13:51:36
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
12 Январь 2014, 16:16:24
Ответ #10
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
ps_range_price
ps_range_weight
Ответ неверный :)
Вчера лопатил БД и нашел нужное. В указанных вами выше таблицах хранятся диапазоны цен и веса, стоимость на эти диапазоны там не хранится.

Нужная нам таблица:
ps_delivery
Итого, чтобы безболезненно поменять валюту по умолчанию в магазине (преста 1.4.4), нужно:

1. Выключаем магазин
2. Идем в PHPMyAdmin, делаем SQL запрос:
UPDATE ps_product SET price = price*Х.ХХХ  (Вместо Х подставляем нужный нам курс, у меня были доллары, переводил в гривни, соответственно умножал на 8.17)
2. Делаем второй SQL запрос:
UPDATE ps_delivery SET price = price*Х.ХХХ  (этим запросом переводим стоимость доставки в магазине в нужную валюту)

Переводим в админке нужную валюту по-умолчанию. Включаем магазин, радуемся.
Надеюсь, кому-то поможет.