Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Вывод нужной валюты Яндекс Маркет


Einshtein

Recommended Posts

Добрый день!

В магазине имеется две валюты

1) USD (со значением 1,00000) - так как цены у поставщиков в $

2) UAH (со значением 8,05000) - эта валюта стоит по умолчанию - дабы клиентам было удобней ориентироваться в ценах.

Модуль Яндекс Маркета при выгрузке в YML берет валюту у которой значение 1.00000 и как я не крутил и не вертел - мне так и не удалось заставить его выгружать или хотябы конвертировать по курсу валюту UAH.

Вот мои последние эксперименты, ничего не давшие:

* Валюты
  *
  * @param string $id - код валюты (RUR, RUB, USD, BYR, KZT, EUR, UAH)
  * @param float|string $rate - курс этой валюты к валюте, взятой за единицу.
  * Параметр rate может иметь так же следующие значения:
  *  CBRF - курс по Центральному банку РФ.
  *  NBU - курс по Национальному банку Украины.
  *  NBK - курс по Национальному банку Казахстана.
  *  СВ - курс по банку той страны, к которой относится интернет-магазин
  *   по Своему региону, указанному в Партнерском интерфейсе Яндекс.Маркета.
  * @param float $plus - используется только в случае rate = CBRF, NBU, NBK или СВ
  *  и означает на сколько увеличить курс в процентах от курса выбранного банка
  * @return bool
  */
private function setCurrency($id = 'USD', $rate = 'NBU', $plus = '30') {
  $allow_id = array('UAH','RUR', 'RUB', 'USD', 'BYR', 'KZT', 'EUR', );
  if (!in_array($id, $allow_id)) {
   return false;  
  }
  $allow_rate = array('NBU', 'CBRF', 'NBK', 'CB');
  if (in_array($rate, $allow_rate)) {
   $plus = str_replace(',', '.', $plus);
   if (is_numeric($plus) && $plus > 0) {
	$this->currencies[] = array(
	 'id'=>$this->prepareField(strtoupper($id)),
	 'rate'=>$rate,
	 'plus'=>(float)$plus
	);
   } else {
	$this->currencies[] = array(
	 'id'=>$this->prepareField(strtoupper($id)),
	 'rate'=>$rate
	);
   }
  } else {
   $rate = str_replace(',', '.', $rate);
   if (!(is_numeric($rate) && $rate > 0)) {
	return false;
   }
   $this->currencies[] = array(
	'id'=>$this->prepareField(strtoupper($id)),
	'rate'=>(float)$rate
   );
  }
  return true;

версия 1,5,1,3

модуль качал тут: https://opencartforum.com/files/download/87-экспорт-каталога-для-яндексмаркет/ feed_yandex_market_oc15x.zip

ссылка на yml файл: http://tmz.com.ua/in...d/yandex_market

Вот такаие настройки у модуля (Валюта UAH):

Изображение

Вот такая цена у товара на сайте:

Изображение

Вот такая цена товара в выгруженом файле YML :

Изображение

Как вы видите - при цене на сайте 550 грн, фид яндекс маркета всё равно берет цену в долларах.

Суть вопроса:

Как правильно настроить курс валют в модуле яндекс маркета - чтобы он либо брал гривну за основную валюту, либо конвертировал доллар по курсу на выходе файла yml

зы. Сори за большие картинки, но думаю так удобней чем ссылаться на радикал

Надіслати
Поділитися на інших сайтах


версия 1,5,1,3

Версия чего?

Хорошо хоть дал ссылку на фид из которого я понял что речь идёт про ocStore, а не про OpenCart

Зачем?

Для кого написано что feed_yandex_market_oc15x.zip для OpenCart?

21.11.2011 Выложил версию для Opencart 1.5x, файл feed_yandex_market_oc15x.zip

В ocStore 1.5.1.3 есть свой модуль и добавлять ничего не надо...

В магазине имеется две валюты

1) USD (со значением 1,00000) - так как цены у поставщиков в $

2) UAH (со значением 8,05000) - эта валюта стоит по умолчанию - дабы клиентам было удобней ориентироваться в ценах.

Судя по фиду

<currencies><currency id="UAH" rate="2"/></currencies>
валюта одна (UAH) и курс не 8.05000, а 2

P.S. Если будеш гадить недооформленными вопросами по всем темам и в личку - поставлю в игнор.

Надіслати
Поділитися на інших сайтах

yml.zip у меня не работал, сейчас перезалил - всё так же не работает - белая пустая страница при попытке зайти в настройки фида (думаю скрин будет лишним). Сейчас буду пробовать поставить на чистый скрипт, ибо я делал кучу изменений, в частности краткое описание для yml.

по поводу rate - я устанавливал разные значения рейта...и курс 8,05000 и другие курсы - реакции ноль.

ps/ Уважаемый Yasvik, меня ваши посты неоднократно выручали и я вам благодарен за них. Но если вам настолько неприятно отвечать на мои ВЕЖЛИВО заданные вопросы - ставьте меня в игнор, но оскорблять не стоит...Это не делает вам чести. Тем более мы тут друг другу помогаем и за счёт вопросов и ответов - позволяем более продуктивно развиваться скрипту

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

Но с ценами всё та же лажа...

Валюты настроены таким образом:

Изображение

При выгрузке всё равно rate="1" у обоих валют и цена остается как в долларах, хоть и написано что это UAH

Изображение

Пробовал прописывать в файле catalogcontrollerexportyml.php :

private function setCurrency($id, $rate = '8.05000', $plus = 0)
Никаких изменений не произошло

ссылка на фид: http://tmz.com.ua/index.php?route=feed/yandex_market

Надіслати
Поділитися на інших сайтах


Но если вам настолько неприятно отвечать на мои ВЕЖЛИВО заданные вопросы - ставьте меня в игнор, но оскорблять не стоит...Это не делает вам чести.

Я оспаривал ВЕЖЛИВОСТЬ вопросов? Я оскорблял? Хочу видеть цитаты не делающие мне чести...

Тем более мы тут друг другу помогаем и за счёт вопросов и ответов - позволяем более продуктивно развиваться скрипту

Не надо выдавать желаемое за действительность.... недозаданные вопросы не позволяют на них ответить и создают впечатление что на форуме игнорируют вопросы. А продублированные многократно - усиливают впечатление. Кому и как этот мусор помогает?

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

Но с ценами всё та же лажа...

Скачай и установи чистый двиг, проверь работу модуля, после этого делай выводы...
Надіслати
Поділитися на інших сайтах

если внимательно читать заданный мной вопрос - и ребенок поймёт в чем дело. Я писал что скачивал голый шаблон, и модуль работает как на локалке так и на рабочем сайте, но не работают условия заданных курсов валют, заданных на сайте, в условиях выгрузки yml файла. Решил проблему другим способом, если уж нет возможности решить его на программном уровне - пришлось изобретать. Всем спасибо за участие

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

1) Ставлю по умолчанию валюту USD

2) Отключаю автоматическое обновление валют

3) В настройках валюты USD - ставлю курс 8,1 (как у гривны) убираю символ $ и ставлю "символ справа - ГРН"

4) В настройках валюты UAH - ставлю курс 65,61 (эта цифра в корне будет ровна курсу доллара, простым языком 8,1*8,1).

Таким образом мы вводим в карточке товара цену 100,00 баксов. На сайте эта цена будет увеличиваться в 8,1 раз, тобишь 810грн.

И в файле yml будет расчитываться формула 100,00 / 8,1 * 65,61 = 810 грн

Система ппц муторная...я до этого дошел только спустя 2 недели биения головой ап все учебники и форумы...осенило меня только вчера ночью, когда вставал чёнить перекусить в 4 утра :) Впервые ловлю такой полезный глюк...

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

Надіслати
Поділитися на інших сайтах


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

Если внимательно читать твой вопрос - и ребёнок поймёт что вопрос содержит ложные утверждения не соответствующие действительности:

В магазине имеется две валюты

1) USD (со значением 1,00000) - так как цены у поставщиков в $

2) UAH (со значением 8,05000) - эта валюта стоит по умолчанию - дабы клиентам было удобней ориентироваться в ценах.

Модуль Яндекс Маркета при выгрузке в YML берет валюту у которой значение 1.00000 и как я не крутил и не вертел - мне так и не удалось заставить его выгружать или хотябы конвертировать по курсу валюту UAH.

Устанавливаем ocStore 1.5.1.3

Заходим в раздел админки Система->Локализация->Валюты и убеждаемся что в демке аналогичные сути вопроса настройки валют, только вместо гривни - рубли

post-6876-0-69366900-1338642148_thumb.png

Устанавливаем и настраиваем Яндекс.Маркет.

post-6876-0-94106400-1338642156_thumb.png

Проверяем в какой валюте выгружаются товарные предложения.

post-6876-0-55671100-1338642156_thumb.png

При валюте по умолчанию USD у которой курс 1.00000, в YML цены в рублях....

Идём дальше и усложняем эксперимент.

Добавляем валюту "гривня"

post-6876-0-01602600-1338643823_thumb.png

и получаем такой список валют

post-6876-0-68149400-1338643822_thumb.png

Идём в настройки модуля Яндекс.Маркет и меняем валюту выгрузки на гривню

post-6876-0-16787400-1338645634_thumb.png

Проверяем в какой валюте выгружаются товарные предложения.

post-6876-0-28515500-1338642950_thumb.png

И опять видим что при валюте по умолчанию USD у которой курс 1.00000, в YML цены в гривнях (как и указано в настройках модуля)....

Доведём эксперимент до точного соответствия с описанной тобой ситуацией:

Удаляем валюты евро и рубли оставив только доллары и гривню.

post-6876-0-33437600-1338644841_thumb.png

Проверяем в какой валюте выгружаются товарные предложения.

post-6876-0-04979800-1338644841_thumb.png

Из этого эксперимента видно что утверждение

Модуль Яндекс Маркета при выгрузке в YML берет валюту у которой значение 1.00000

ложное...
Надіслати
Поділитися на інших сайтах

  • 1 month later...
  • 2 years later...

Здравствуйте. Столкнулся с такой-же проблемой. По умолчанию у меня валюта выбрана в ГРН а не в USD, все цены в магазине в гривне. При выгрузке ставит в файле xml цены в $. И пишет <currency id="UAH" rate="1"/> <currency id="USD" rate="1"/>, хотя курс 1 к 16 установлен. Помогите советом пожалуйста.

 

разобрался. Необходимо в настройках магазина ОБЯЗАТЕЛЬНО ставить валюту $ , а в настройках валюты ставим к ГРН курс и все получается.

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Насколько я понял, можно либо отображать цены в гривнах (рублях), либо иметь работающий модуль. Одновременно эти два условия не работают.

К меня при валюте по умолчанию USD и rate USD=1 модуль формирует правильные цены в рублях.
Если в система - настройки - локализация - валюта поставить рубль, получается вот что:
 

<currencies>

<currency id="RUB" rate="1"/>

<currency id="USD" rate="1"/>

</currencies>

 

и цены в долларах.

 

 

Кого така фигня не устраивает, беремся за нож.

 

В файле /catalog/controller/feed/yandex_yml.php ищем

$shop_currency = $this->config->get('config_currency');

меняем на

$shop_currency = 'USD';

 

ищем

$this->setCurrency($currency['code'], number_format(1/$this->currency->convert($currency['value'], $offers_currency, $shop_currency), 4, '.', ''));

меняем на

$this->setCurrency($currency['code'], number_format(1*$this->currency->convert($currency['value'], $offers_currency, $shop_currency), 4, '.', ''));

 

Теперь YML формируется правильно, а цены в магазе у нас в нужной валюте по умолчанию. А задаются цены в долларах. Курс USD=1.

Надіслати
Поділитися на інших сайтах


Насколько я понял, можно либо отображать цены в гривнах (рублях), либо иметь работающий модуль. Одновременно эти два условия не работают.

К меня при валюте по умолчанию USD и rate USD=1 модуль формирует правильные цены в рублях.

Если в система - настройки - локализация - валюта поставить рубль, получается вот что:

 

и цены в долларах.

 

 

Кого така фигня не устраивает, беремся за нож.

 

В файле /catalog/controller/feed/yandex_yml.php ищем

меняем на

 

ищем

меняем на

 

Теперь YML формируется правильно, а цены в магазе у нас в нужной валюте по умолчанию. А задаются цены в долларах. Курс USD=1.

 

Правильнее будет поступить немного иначе, выставляем основную валюту доллар в настройках магазина (вкладка "локализация") и в файле system/library/currency.php меняем

$this->set($this->config->get('config_currency'));

на

$this->set('RUB');

Теперь у нас цены на фронте в рублях и не будет проблем с маркетом или ценами в некоторых способах доставки/оплаты.

Надіслати
Поділитися на інших сайтах


  • 6 months later...

Насколько я понял, можно либо отображать цены в гривнах (рублях), либо иметь работающий модуль. Одновременно эти два условия не работают.

К меня при валюте по умолчанию USD и rate USD=1 модуль формирует правильные цены в рублях.

Если в система - настройки - локализация - валюта поставить рубль, получается вот что:

 

и цены в долларах.

 

 

Кого така фигня не устраивает, беремся за нож.

 

В файле /catalog/controller/feed/yandex_yml.php ищем

меняем на

 

ищем

меняем на

 

Теперь YML формируется правильно, а цены в магазе у нас в нужной валюте по умолчанию. А задаются цены в долларах. Курс USD=1.

 

 

Огромное спасибо, а то уже вторую неделю мучаюсь с ценами в yandex_yml и ценами на сайта

Надіслати
Поділитися на інших сайтах


  • 1 year later...

Добрый вечер.

Понимаю что тема старая, но вопрос актуальный.

 

В магазине 3 валюты: RUB, USD, EUR. По умолчанию - USD. Цены на сайте и в Яндекс.Маркете в рублях. USD и EUR - выключены.

 

Проблема №1:

При экспорте товаров в ЯМ цены в USD корректно переводятся в рубли и отображаются на ЯМ. А вот цены в EUR переводятся по курсы USD и соответственно ниже, чем на самом деле. ЯМ сделал предупреждение, что цена на ЯМ не соответствует цене на сайте.

 

Пробовал на двух модуля - один бесплатный, второй от Яндекса - везде одинаково.

 

Проблема №2:

Товар выгружается без картинок. Ссылки на картинки в прайсе верные. Картинки в кэше есть, но при попытке открыть - "Запрашиваемая страница не найдена". Если зайти на страницу товара, открыть там картинку, а после этого открыть ссылку из прайс-листа для ЯМ - картинка открывается. Но ненадолго, в какой-то момент ссылка снова перестает работать.

 

Техподдержка Яндекс с ответом не торопится.

 

Кто поможет разобраться с этими проблемами? Готов компенсировать затраченное время и работу мозга.

Змінено користувачем storer
Надіслати
Поділитися на інших сайтах


  • 1 year later...

Уважаемый  snme   спасибо огромнейшее за помощь в решении вопроса.

Вот пример для подражания, человек ощутил проблему, придумал решение, поделился решением. А не пенился и петушился, как некоторые. Нет - я понимаю - что скорее всего гордость и познания в программировании некоторых людей просто обязывает себя так вести, но лучше уж ничего - чем по факту просто флудить без толку.
Еще раз спасибо!

 

Теперь всё работает почти как положено, но яндекс всё равно ругается.
Причина вот в чем:

<currencies>
<currency id="UAH" rate="1"/>
<currency id="USD" rate="0.0357"/>
</currencies>
 
Хотя в админке курс стоит адекватный, доллар равен 1, гривна равна 28.
Правда я когда-то что-то в коде ковырял - чтоб по умолчанию стояла гривна а в товаре я добавлял в долларе, может по-этому неправильно считает.
 
Вернул обратно строку:
$this->setCurrency($currency['code'], number_format(1/$this->currency->convert($currency['value'], $offers_currency, $shop_currency), 4, '.', ''));
И маркет пропустил.
Змінено користувачем diakonevgeniy
Надіслати
Поділитися на інших сайтах


  • 6 months later...

Все бы хорошо, но остаётся не понятным один момент!!!

 

На сайте Яндекса https://tech.yandex.ru/market/plugins/ есть модуль для opencart, который позволяет выгружать данные на Маркет. Соответственно актуальная версия модуля, про который тут идет речь.

 

На сайте 2 валюты одна USD со значением 1.0 и вторая валюта BYN имеющая значение 2.0 и являющаяся валютой по умолчанию. Цена на товар задается в USD, а на сайте выводится в BYN.

 

После установки модуля и переходе по ссылке мой.сайт//index.php?route=extension/feed/yamarket пишет мол Not exist RUB, ну и все правильно, т.к. нет у нас такой валюты

 

в папке admin/controller/extension/feed/yamarket.php есть файл в котором можно все конфигурировать 

 

находим строчку:

$offers_currency = 'RUB';

и меняем на:

$offers_currency = 'BYN';

Все ссылка мой.сайт//index.php?route=extension/feed/yamarket работает и проходит валидацию Яндекса.

 

При таком раскладе цена у нас выводится почему-то в USD, но код валюты показывает BYN c rate=1, чтож поделать надо править:

 

меняем все в том же файле:

$shop_currency = $this->config->get('config_currency');

на:

$shop_currency = $this->config->get('USD');

 

Теперь все гуд, цена товара выводится в нужной нам валюте! УРА!

 

Но стал следующий вопрос, а если у товара 2 цены одна акционная(продажная), а вторая старая???

 

<price>849.00</price>
<oldprice>480</oldprice>
<currencyId>BYN</currencyId>

Цена по прайсу стала нормальня, а вот олдпрайс должен так же умножаться на заданный курс в моём случае 2, а он не умножается. Может кто знает как поправить?

Надіслати
Поділитися на інших сайтах

  • 3 months later...
В 28.05.2012 в 15:48, Einshtein сказал:

Добрый день!

В магазине имеется две валюты

1) USD (со значением 1,00000) - так как цены у поставщиков в $

2) UAH (со значением 8,05000) - эта валюта стоит по умолчанию - дабы клиентам было удобней ориентироваться в ценах.

Модуль Яндекс Маркета при выгрузке в YML берет валюту у которой значение 1.00000 и как я не крутил и не вертел - мне так и не удалось заставить его выгружать или хотябы конвертировать по курсу валюту UAH.

Вот мои последние эксперименты, ничего не давшие:

 


* Валюты
  *
  * @param string $id - код валюты (RUR, RUB, USD, BYR, KZT, EUR, UAH)
  * @param float|string $rate - курс этой валюты к валюте, взятой за единицу.
  * Параметр rate может иметь так же следующие значения:
  *  CBRF - курс по Центральному банку РФ.
  *  NBU - курс по Национальному банку Украины.
  *  NBK - курс по Национальному банку Казахстана.
  *  СВ - курс по банку той страны, к которой относится интернет-магазин
  *   по Своему региону, указанному в Партнерском интерфейсе Яндекс.Маркета.
  * @param float $plus - используется только в случае rate = CBRF, NBU, NBK или СВ
  *  и означает на сколько увеличить курс в процентах от курса выбранного банка
  * @return bool
  */
private function setCurrency($id = 'USD', $rate = 'NBU', $plus = '30') {
  $allow_id = array('UAH','RUR', 'RUB', 'USD', 'BYR', 'KZT', 'EUR', );
  if (!in_array($id, $allow_id)) {
   return false;  
  }
  $allow_rate = array('NBU', 'CBRF', 'NBK', 'CB');
  if (in_array($rate, $allow_rate)) {
   $plus = str_replace(',', '.', $plus);
   if (is_numeric($plus) && $plus > 0) {
	$this->currencies[] = array(
	 'id'=>$this->prepareField(strtoupper($id)),
	 'rate'=>$rate,
	 'plus'=>(float)$plus
	);
   } else {
	$this->currencies[] = array(
	 'id'=>$this->prepareField(strtoupper($id)),
	 'rate'=>$rate
	);
   }
  } else {
   $rate = str_replace(',', '.', $rate);
   if (!(is_numeric($rate) && $rate > 0)) {
	return false;
   }
   $this->currencies[] = array(
	'id'=>$this->prepareField(strtoupper($id)),
	'rate'=>(float)$rate
   );
  }
  return true;

версия 1,5,1,3

модуль качал тут: https://opencartforum.com/files/download/87-экспорт-каталога-для-яндексмаркет/ feed_yandex_market_oc15x.zip

ссылка на yml файл: http://tmz.com.ua/in...d/yandex_market

Вот такаие настройки у модуля (Валюта UAH):

Изображение

Вот такая цена у товара на сайте:

Изображение

Вот такая цена товара в выгруженом файле YML :

Изображение

Как вы видите - при цене на сайте 550 грн, фид яндекс маркета всё равно берет цену в долларах.

Суть вопроса:

Как правильно настроить курс валют в модуле яндекс маркета - чтобы он либо брал гривну за основную валюту, либо конвертировал доллар по курсу на выходе файла yml

зы. Сори за большие картинки, но думаю так удобней чем ссылаться на радикал

Добрый день. Столкнулся с подобной ситуацией с моделем загрузки товаров в яндекс маркет для версии Ocstore 1.5.5.1.2

Подскажитеr как можно решить такую проблему?

В файл  XML не подгружаеться цена на товар , а просто выводиться  без значения <price></price>

Валюта на сайте как в грн так и в USD

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.