Checkout.place_order

Multi-Vendor 4.14.3.SP1 RU

Прошу разработчиков пояснить следующую логику

  • на странице чекаута я вывожу поля для имени, телефона и емыла покупателя
  • при оформлении заказа зарегистрированным пользователем в эти поля можно записать значения отличные от хранящихся в учётной записи (например, некто заказывает не себе, а другому некту)
  • клик в кнопу “оформить заказ” внезапно перезаписывает все три поля профиля о_О

баг ли это али фича недокументированная?

мод place_order контроллера checkout вызывает функцию fn_checkout_place_order из пакета fn.cart

внутри fn_checkout_place_order происходит вызов fn_checkout_update_user_profile

на https://demo.cs-cart.ru/ так же.

Так для этого и есть же в поля профиля отдельный блок данные по доставке, есть 3 типа данных
Контакты
Данные плательщика
Данные получателя

Если взять импортные сайты amazon там уточняют куда отправить счет и куда доставить товар и причем все это может отличаться от данных аккаунта.

Еще есть полезная вещь разрешить клиентам иметь несколько профилей доставки, если у вас MV активный, это удобно клиент заполняет данные человека и подгружает их когда надо доставить тому человеку.

админка - дизайн - макеты - макеты - оформить заказ - информация о покупателе - параметры блока - контент
какие поля профиля мы видим?

Это все секция контакты

Но смена профиля там же вроде работает в той секции, нет? Ясно что это велосипед, но cs-cart врядли в ближайшем будущем реализует чтобы этот блок работал на секции адрес доставки, а разработчика у вас видимо нет.

В пн зайдут и скажут, это не баг это фича, и ярлык не подтвержденный.

Здравствуйте, @Alexander.M
Спасибо за ваше сообщение.

Я передала разработчикам ваш вопрос.

Здравствуйте, @Alexander.M!

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

Но так как эта логика вам не подходит, мы сделали патч с изменениями в fn_checkout_update_user_profile, при которых поля “Email”, “Имя”, “Фамилия” и “Телефон” больше не будут перезаписываться. Этот патч вы можете применить индивидуально для своего маркетплейса.

О том, как применить патч, можно прочитать в нашей документации: https://www.cs-cart.ru/docs/latest/upgrade/apply_diff_file.html

1 лайк

Логика понятна, с первых дней вставал вопрос, как идентифицировать покупателя в 1С? В итоге придумали свой костыль, основанный на номере телефона, но это не важно. Важно, что если человек изменит имя, фамилию, телефон и почту - это будет другой покупатель. Возможно, в логику надо добавить:
если покупателю разрешено создавать несколько профилей - если покупатель внес изменения в данные для доставки - спрашивать, хочет ли он изменить данные в текущем профиле, создать новый профиль или ничего не делать?
если создание нескольких профилей не разрешено - то просто спросить - перезаписать данные в профиле или нет?

PS Или так: если какое-то поле изменяется и генерирует событие onChange - к форме чере JS добавляется обязательное поле селект - не сохранять, сохранить в старый профиль, создать новый профиль

4 лайка

Добавил в список потенциальных фич, как можно улучшить оформление заказа в CS-Cart. Спасибо за предложение!

2 лайка