Атрибут "currency" прописан неверно

Всем привет! Столкнулся с проблемой при загрузке товаров на СберМегаМаркет.
При проверке фида из CS-Cart, возникает ошибка:


3012
Элемент должен ссылаться на элемент из со значением ‘RUR’ или ‘RUB’ у фида https://veselosidim.ru/yml_get/8ghkx4tw9pfz, offerId: 261, currencyId: RUR


Поддержка СММ сообщила что атрибут “currency” прописан неверно. Атрибут “currency” должен иметь следующий вид:

Где currency id=“RUR” - это основная валюта товара, а rate=“1”/ - это курс обмена текущей
валюты на рубли.Вам необходимо скорректировать данный атрибут и загрузить фид повторно.


Может кто-то знает в чем проблема и как ее исправить?

сейчас RUB
а еще насколько помню, должна быть секция

currencies	
Элемент с описанием валют, используемых в магазине. Каждая валюта описывается в отдельном элементе currency. У currency могут быть следующие атрибуты:

id – содержит код валюты (rur, usd, eur и т.д.)
rate – курс обмена текущей валюты на рубли Блок может присутствовать только в единственном экземпляре.
Желательно	
id – латиница
rate – цифры. В качестве разделителя используется точка
        <currencies>
            <currency id="RUR" rate="1"/>
        </currencies>

на демо https://demo.cs-cart.ru/stores/d4792a32ac69bae2/yml_get/zy2cshx2pjxy и в последних версиях нет этих секций, а вот в 4.9.3.SP1 там это всё есть

1 лайк

В справке YML элемент конечно помечен как необязательный… Но кто знает? )

https://yandex.ru/support/partnermarket/elements/shop.html

в справке сбермегамаркета пометка - Желательно

кстати, там же, в справке сбермегамаркета, в offers - нет элемента currencyId

кусок кода из 4.9.3 (где есть секции эти) файла /app/addons/yml_export/Tygh/Ym/Yml2.php

 protected function body($file_body, $file_categories)
    {
        $this->generateOffers($file_body, $file_categories);
    }

    protected function bottom($file)
    {
        fwrite($file, '</shop>' . PHP_EOL);
        fwrite($file, '</yml_catalog>' . PHP_EOL);
    }

    protected function sendResult($filename)
    {
        header("Content-Type: text/xml;charset=" . $this->options['export_encoding']);

        readfile($filename);
        exit;
    }

    protected function getShopName()
    {
        $shop_name = $this->options['shop_name'];

        if (empty($shop_name)) {
            if (fn_allowed_for('ULTIMATE')) {
                $shop_name = fn_get_company_name($this->company_id);
            } else {
                $shop_name = Registry::get('settings.Company.company_name');
            }
        }



        return SecurityHelper::escapeHtml($shop_name);
    }

    protected function buildCurrencies(&$yml2_data)
    {
        $currencies = Registry::get('currencies');

        if (CART_PRIMARY_CURRENCY != "RUB" && CART_PRIMARY_CURRENCY != "UAH" && CART_PRIMARY_CURRENCY != "BYN" && CART_PRIMARY_CURRENCY != "KZT") {

            if (!empty($currencies['RUB'])) {
                $v_coefficient = $currencies['RUB']['coefficient'];
                $default_currencies = 'RUB';

            } elseif (!empty($currencies['UAH'])) {
                $v_coefficient = $currencies['UAH']['coefficient'];
                $default_currencies = 'UAH';

            } elseif (!empty($currencies['BYN'])) {
                $v_coefficient = $currencies['BYN']['coefficient'];
                $default_currencies = 'BYN';

            } elseif (!empty($currencies['KZT'])) {
                $v_coefficient = $currencies['KZT']['coefficient'];
                $default_currencies = 'KZT';

            } else {
                $v_coefficient = 1;
                $default_currencies = CART_PRIMARY_CURRENCY;
            }
            $primary_coefficient = $currencies[CART_PRIMARY_CURRENCY]['coefficient'];

            foreach ($currencies as $cur) {
                if ($this->currencyIsValid($cur['currency_code']) && $cur['status'] == 'A') {
                    if ($default_currencies == $cur['currency_code']) {
                        $coefficient = '1.0000';
                        $yml2_data['currencies']['currency@id=' . $cur['currency_code'] . '@rate=' . $coefficient] = '';

                    } else {
                        $coefficient = $cur['coefficient'] * $primary_coefficient / $v_coefficient;
                        $yml2_data['currencies']['currency@id=' . $cur['currency_code'] . '@rate=' . $coefficient] = '';
                    }
                }
            }

        } else {
            foreach ($currencies as $cur) {
                if ($this->currencyIsValid($cur['currency_code']) && $cur['status'] == 'A') {
                    $yml2_data['currencies']['currency@id=' . $cur['currency_code'] . '@rate=' . $cur['coefficient']] = '';
                }
            }
        }
    }

    protected function currencyIsValid($currency)
    {
        $currencies = array(
            'RUR',
            'RUB',
            'UAH',
            'BYN',
            'KZT',
            'USD',
            'EUR'
        );

        return in_array($currency, $currencies);
    }

Т.е. CS-Cart убрал это за “ненадобностью”?)))

скорее всего да.
Сравните со своим файлом и расширьте для этих секций.
После, скорее всего надо будет создать новый фид и сгенерировать его , старый работать не будет