Jump to content

Стоимость доставки в рублях


Recommended Posts

Всем привет!

Необходимо решить задачу с ценами на доставку, мучаюсь уже несколько часов, никак не получается. Надеюсь на вашу помощь)

Итак, имеется магазин в котором цена по умолчанию - доллары, а во фронтенде все это переводится в рубли по курсу. Стоимость доставки же, необходимо сделать в рублях, например 300р.

Сейчас пока поставил доставку в 10$, стало соответственно 318р.

Как, и можно ли это реализовать?

 

 

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

$currency = new Currency(_PS_CURRENCY_DEFAULT_);

на

$currency = new Currency('4');

В результате в админке теперь пишет рубли, но на деле выходит все в долларах.

Link to comment
Share on other sites

  • 3 weeks later...

Появилось.

Сделал скрипт, который раз в день лезет на сайт ЦБ, обновляет курсы валют и корректирует стоимость доставки в долларах так, чтобы на сайте выходило ровно 300 рублей. Работает уже около месяца, всем доволен. Если нужно, могу подробней рассказать.

  • Like 1
Link to comment
Share on other sites

  • 2 months later...
  • 3 weeks later...

Если нужно, могу подробней рассказать.

Присоединяюсь, расскажите пожалуйста, ооочень актуально!!!

И еще если не трудно - как вы сделали чтобы во фронт-офисе отображались цены в рублях??

Link to comment
Share on other sites

Да, было бы полезно!

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

 

Присоединяюсь, расскажите пожалуйста, ооочень актуально!!!

Создаем файл с таким содержанием

<?php
require(dirname(__FILE__).'/config/config.inc.php');

if (!$feed = @simplexml_load_file('http://www.cbr.ru/scripts/XML_daily.asp')) {
echo Tools::displayError('Cannot parse feed.');
}
else {
 $rates=array();
 foreach ($feed->Valute as $valute) {
  $rates[(string)$valute->CharCode]=(float)str_replace(',','.',$valute->Value);
 }
 $currencies = Currency::getCurrencies(true);
 foreach ($currencies as $currency){
  if ($currency->iso_code == 'RUB'){
$currency->conversion_rate=$rates[uSD];
$currency->update();
echo('Курсы валют успешно обновлены.');
  }
 }
 $deliveryMoscow = 300/$rates[uSD]; //Стоимость доставки по Москве 300р.
 $deliveryMO = 400/$rates[uSD]; //Стоимость доставки по МО 400р.
 Db::getInstance()->Execute('
  UPDATE `'._DB_PREFIX_.'delivery`
  SET `price` = '.$deliveryMoscow.'
  WHERE `id_carrier` = 4');

 Db::getInstance()->Execute('
  UPDATE `'._DB_PREFIX_.'delivery`
  SET `price` = '.$deliveryMO.'
  WHERE `id_carrier` = 5');
// 4 и 5 - id способов доставки
}

Сохраняем его в любую директорию сайта, например в корень (а лучше в свою папку admin или еще куда нибудь подальше), под именем update_rates.php. Теперь он доступен по ссылке http://site.ru/update_rates.php, по переходу на которую на сайте обновится курс рубля по отношению к доллару, а так же цена за доставку подстроится под новый курс.

Лично я, настроил на сервере планировщик Cron который запускает этот скрипт каждую ночь.

 

И еще если не трудно - как вы сделали чтобы во фронт-офисе отображались цены в рублях??

 

Для этого нужно править функцию setCurrency. Находится она в classes/Tools.php

Находим строку

$currency = Currency::getCurrencyInstance((int)_PS_CURRENCY_DEFAULT_);

и меняем на

$currency = Currency::getCurrencyInstance('4');

, где 4 - id валюты.

 

Все это производилось на Prestashop версии 1.4.9.0 но и на других версиях должно работать.

Если есть вопросы, задавайте.

  • Like 1
Link to comment
Share on other sites

Спасибо огромное!!!!!! все работает, вы гений!!!)) надо изучать php >_< Заодно решился вопрос с тем, чтобы преста брала курс с ЦБРФ.

Я так понимаю переводить доставку будет только для тех способов доставки, которые прописаны в файле php. Мега удобно, когда товар в наличии и цена доставки курьером фиксированная в RUB, а предзаказ доставляется за USD. Еще раз спасибо.

Link to comment
Share on other sites

Спасибо огромное!!!!!! все работает, вы гений!!!)) надо изучать php >_< Заодно решился вопрос с тем, чтобы преста брала курс с ЦБРФ.

Я так понимаю переводить доставку будет только для тех способов доставки, которые прописаны в файле php. Мега удобно, когда товар в наличии и цена доставки курьером фиксированная в RUB, а предзаказ доставляется за USD. Еще раз спасибо.

Да незачто) Вы правы, переводить будет только те способы, что в файле. Соответственно, если нужно будет добавить еще один способ доставки, то добавляете его в этот файл.

Link to comment
Share on other sites

нужно править функцию setCurrency.

...

Если есть вопросы, задавайте.

Появился небольшой вопрос...

А у вас при этом цены в корзине нормально отображаются, если указать кол-во товара >1?

У меня установлено доллары округлять до 2 цифр после зпт, рубли до целых. Получается, копейки он не показывает, но учитывает (см.скрин)?

post-466656-0-74163600-1359298168_thumb.jpg

Link to comment
Share on other sites

Появился небольшой вопрос...

А у вас при этом цены в корзине нормально отображаются, если указать кол-во товара >1?

У меня установлено доллары округлять до 2 цифр после зпт, рубли до целых. Получается, копейки он не показывает, но учитывает (см.скрин)?

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

Вот смотрите, допустим у вас товар стоит 150,40р. соответственно преста при показе на сайте округляет эту цену до 150р. При покупке 2-х товаров стоимость становится 300,80р. и округляется по правилам до 301р.

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

PS. Можете скинуть в личку ваш сайт?

Link to comment
Share on other sites

  • 1 year later...

Появилось.

Сделал скрипт, который раз в день лезет на сайт ЦБ, обновляет курсы валют и корректирует стоимость доставки в долларах так, чтобы на сайте выходило ровно 300 рублей. Работает уже около месяца, всем доволен. Если нужно, могу подробней рассказать.

Добрый день, помогите пожалуйста! Для меня очень актуальна проблема автоматической корректировки цены товара по курсу к доллару. Цена на прямую зависит от курса доллара. Т.е. если стоимость товара 100 долларов я пересчитываю в ручную и ставлю цену, но учитывая что сейчас курс не стабильный и в течении 1 недели курс доллара меняется 2-3 раза, в ручную переписывать более 200 единиц товара очень проблематично. Подскажите где можно приобрести модуль в который можно вписать местную валюту и курс доллара, который можно менять когда нужно. Готов принять любую реальную помощь, благодарность будет реальная.

Link to comment
Share on other sites

Установите Default Currency в доллары.

Забейте все цены в долларах.

Установите модуль "Блок валют", он идет из коробки.

 

Таким образом посетитель при заходе на сайт впервые будет видеть все цены в долларах, но сможет переключить их в любую валюту кнопкой.

 

Если вы принимаете оплату только в рублях, можно попробовать установить ограничение валют для каждого модуля оплаты. Это есть во вкладке "Платежи" в админке, но в моей версии это работает криво. Я переключаю валюту насильно в рубли, когда посетитель оформляет заказ, этот способ работает корректно. 

 

Далее ищете скрипт, который по крону будет ходить на cbr.ru (или куда скажете) и обновлять курсы регулярно. Вживляете его в магазин и забываете об этой проблеме.

Link to comment
Share on other sites

×
×
  • Create New...