Выводим oldprice в XML Яндекс Маркета

  • Выводим oldprice в XML Яндекс Маркета

Элемент <oldprice> позволяет показать снижение цены на товар. В <oldprice> указывается старая цена товара, которая обязательно должна быть выше новой цены (<price>). Параметр является необязательным.

Если параметр указан, на сайте магазина обязательно должна быть указана скидка или снижение цены, в противном случае магазину выставляется ошибка. Параметр <oldprice> не заменяет параметр <price> (нельзя указать <oldprice> и не указать <price>).

Пример
<offer id="12341" type="vendor.model" available="true" bid="13" group_id="12345">
  <url>http://best.clothes.ru/product_page.asp?pid=12344</url>
  <price>7000</price>
  <oldprice>10000</oldprice>
  <currencyId>RUR</currencyId>
  <categoryId>6</categoryId >
  <market_category>Одежда, обувь и аксессуары/Женская одежда/Верхняя одежда/Куртки</market_category>
  <picture>http://best.seller.ru/img/picture1.jpg</picture>
  <store>true</store>
  <pickup>false</pickup>
  <delivery>true</delivery>
  <local_delivery_cost>300</local_delivery_cost>
  <vendor> Calvin Klein </vendor>
  <model>Зимняя куртка</model>
  ...
</offer>


Вносим изменения

файл - catalog\model\export\yandex_market.php

заменить

 IFNULL(ps.price, p.price) AS price FROM

на

 ps.price AS pricespecial, p.price AS price FROM

файл - catalog\controller\feed\yandex_market.php

1 заменить

$data['price'] = number_format($this->currency->convert($this->tax->calculate($product['price'], $product['tax_class_id']), $shop_currency, $offers_currency), $decimal_place, '.', '');

на

                if ($product['pricespecial'] < 1) {
                $data['price'] = number_format($this->currency->convert($this->tax->calculate($product['price'], $product['tax_class_id']), $shop_currency, $offers_currency), $decimal_place, '.', '');
                } else {
                $data['price'] = number_format($this->currency->convert($this->tax->calculate($product['pricespecial'], $product['tax_class_id']), $shop_currency, $offers_currency), $decimal_place, '.', '');
                $data['oldprice'] = number_format($this->currency->convert($this->tax->calculate($product['price'], $product['tax_class_id']), $shop_currency, $offers_currency), $decimal_place, '.', '');
                }

2 заменить

'price'=>1, 'wprice'=>0

на

'price'=>1, 'oldprice'=>0, 'wprice'=>0