Не передается допонительное поле в Unisender

Где возникла проблема: Multi-Vendorv4.16.2.SP1

Суть проблемы: Добавил поле в Контактной информации Дата рождение (тип Дата). в Unisender также добавил поле с переменной {{birthday}} тип Дата.
В админке (маркетинг-Unisender ) сопоставил данные поля.
При регистрации при заполнении поля дата рождения данные сохраняются, однако в Unisender не передаются.
Также заметил, что если поменять номер телефона например уже у созданного пользователя, то в Unisender новые данные не передадуться.

Здравствуйте!

Воспроизвёл проблему с тем, что не передаётся поле с типом “Дата”.

Что касается обновления номера - в последней версии ошибку воспроизвести не удалось, номер успешно передался на сторону Unisender после обновления в профиле пользователя.

Так, что с проблемой, решилась?
У меня тоже дата не перекидывется(

@d.lotochkov вот почти и год прошел.

1 лайк

Да, стрёмно выходит(
В понедельник гляну по коду, мб получится это исправить. Отпишу

1 лайк

Привет

Разобрался. Причина: В CS-Cart дополнительные поля профиля хранятся не там же, где обычные поля покупателя вроде имени, фамилии или мыла. А модуль в некоторых случаях пытался взять значение дополнительного поля из обычных данных покупателя. Там значения даты рождения нет, поэтому в Unisender уходила пустая строка.

Неофициальный патч. rus_unisender-birthday-field-value.patch.zip (1020 байтов)

Применять как обычный дифф по инструкции Как применить diff-файл — Документация docs.cs-cart.ru 4.20.x. У меня на тесте сработало, но перед применением сделайте бекап или сначала проверьте на dev-копии.

1 лайк

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

Здравствуйте. очень похоже на то, что пустая дата передавалась. По коду получается что 1970-01-01 (это timestamp 0) в CS-Cart для этих контактов дата рождения пустая/нулевая, а патч превратил этот ноль в дату.

В тот же файл:

app/addons/rus_unisender/func.php

В функции:

fn_uniseder_get_fields()

Нужно заменить вот этот кусок из патча:

} elseif ($profile_fields[$profile_field_id]['field_type'] == 'D' && is_numeric($data[$unisender_field])) { $data[$unisender_field] = date('Y-m-d', (int) $data[$unisender_field]); }

на такой:

} elseif ($profile_fields[$profile_field_id]['field_type'] == 'D') { if (is_numeric($data[$unisender_field]) && (int) $data[$unisender_field] > 0) { $data[$unisender_field] = date('Y-m-d', (int) $data[$unisender_field]); } else { $data[$unisender_field] = ''; } }

Возможно дело в том, что у юзеров заполнено одно поле с датой рождения, а в настройках модуля юнисендер сопоставляется другое поле, у которого значение пустое - проверьте ещё и это.

1 лайк

добрый день!
внес изменения, но ничего не поменялось, потом в Unisender добавил новое поле, сопоставил с полем в админке cs-cart, не помогло.
После создал новое поле в cs-cart и сопоставл с новым полем в Unisender - корректно передались.
Спасибо!

1 лайк