Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Баг: Некорректный формат файла при добавлении нескольких конверсий с валютой и суммой #7

Open
likont opened this issue Oct 29, 2023 · 0 comments

Comments

@likont
Copy link

likont commented Oct 29, 2023

Наглядно, при использовании:

$metrikaConversionUpload->addConversion('133591247640966458', 'GOAL1', '1481718166', '66', 'RUB'); // Добавяем конверсию
$metrikaConversionUpload->addConversion('579124169844706072', 'GOAL3', '1481718116', '678.90', 'RUB'); // Добавяем ещё конверсию
/* ... и далее добавляем необходимое количество конверсий ... */

Будет результирующий файл:

ClientId,Target,DateTime,Price,Currency,Price,Currency
133591247640966458,GOAL1,1481718166,66,RUB,66,RUB
579124169844706072,GOAL3,1481718116,678.90,RUB,678.90,RUB

Дублируется столбец Price и Currency, в результате Метрика возвращает ошибку:

{"errors":[{"error_type":"invalid_uploading","message":"Incorrect data format, error in line number 1"}],"code":400,"message":"Incorrect data format, error in line number 1"}

Причина кроется в \Meiji\YandexMetrikaOffline\Scope\Upload::addConversion, и методе который он вызывает при добавлении цены/валюты \Meiji\YandexMetrikaOffline\ValueObject\ConversionHeader::addUsesColumn — не проверяет то, есть ли уже такие столбцы.

Решение №1: Проверка перед добавлением:

if (in_array($name, self::$availableColumns) && !in_array($name, $this->usesColumns)) {
    $this->usesColumns[] = $name;
}

Решение №2: Удаление дубликатов после добавления:

if (in_array($name, self::$availableColumns)) {
    $this->usesColumns[] = $name;
    $this->usesColumns = array_unique($this->usesColumns);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant