1. Необходима доработка функционала "Покупатели".
Сейчас:
а) Туда попадают все пользователи (создаются новые покупатели), кто оформляет заказ.
б) Туда не попадают пользователи, которые прошли регистрацию на сайте:
gyazo.com/816870bbf8cac66... в) Нельзя добавить нового пользователя вручную из админки.
г) К существующим покупателям не пишется история заказов. (когда-то писалась)
д) Пользователь имеет только имя и адрес email в базе + возможность присвоение группы.
Нужно реализовать:
а) Не создавать нового покупателя по данным из оформленного заказа.
б) Создавать нового покупателя, когда он проходит процедуру регистрации на сайте.
в) В регистрации на сайте добавить обязательное поле "Номер телефона" (в скобочках написать: "Вводите номер телефона, включая код оператора, например 903 или 495")
г) В учетной записи "покупатель" добавить к данным новое поле номер телефона.
д) Добавить возможность создания покупателя из админки (задать имя, емейл, номер телефона и пароль).
е) В учетной записи покупателя должны записываться все его заказы. Заказы прикрепляем к покупателю по следующим сценариям:
1. При создании нового покупателя (как с сайта с формы регистрации, так и из админки) всегда должна проходить проверка по БД заказов. Совпадения должны находится по полному совпадению email и по последним 4-ем цифрам телефонного номера (достаточно одного совпадения: либо емейл, либо последние 4 цифры телефона)
2. При оформлении нового заказа, когда пользователь залогинен под своей учеткой покупаетеля.
3. При оформлении нового заказа: делаем проверку по БД покупателей, совпадает ли емейл либо, последние 4 цифры номера телефона, указанные в заказе с данными у покупателей (достаточного одного из данных совпадений).
В случае, если один заказ совпадает с 2 и более покупателями записываем его ко всем найденным покупателям
ж) Добавить возможность удаления привязки заказа к пользователю вручную из админки.
з) Добавить автоматический подсчет суммы всех заказов покупателя в (заказы должны иметь любой статус, за исключением статуса "удален", сумма удаленных заказов считаться не должна) (сумма заказов считается за вычетом стоимости доставки у заказов) писать в сумму в новое поле у учетки "покупатель" (каждый раз значение вполне должно пересчитываться (при удалении заказа и при добавлении нового заказа к покупателю)
2. Функционал "Группы"
Сейчас у групп 2 настраиваемых поля: название и размер скидки, которая дается покупателям, которым назнанчили эту группу. Группы присваиваются пользователям вучную.
Необходимо:
а) группам добавить новое поле "Сумма заказа"
б) сделать автоматическое назначение группы покупателям по полю "сумма заказа". если сумма заказов покупателя становится равной и большей, чем указана в группе в поле "сумма заказа", то группа автоматически назначается этому покупателю.
г) Делать автоматическую проверку соотношения всех покупателей по сумме заказа к возможным группам раз в 12 часов.
д) если создано 2 и более группы и пользователь по сумме попадает в обе, то пользователя всегда относим к той группе, где указано большее значение "сумма заказа", при этом из группы где указано меньшее значение его удаляем, либо просто не присваиваем ее. Например группа у которой в "сумма заказа" указано 6000 и группа с значением в этом поле "10000", покупатель сделал первый один заказ суммой 12000, то покупателя просто относим к группе со значением "10000". Если такой покупетель ранее относился к группе "6000" и он сделал новый заказ на 5000, то при проверке ему добавляется группа "10000", а группа "6000" удаляется из его учетки.
3. Оформление заказа:
Сейчас поле "емейл" обязательно к заполнению (без его заполнения заказ не оформится), а поле "номер телефона" не обязательно.
Необходимо поменять: сделать номер телефона обязательным (сделать проверку, что в поле указано не менее 10 цфир) должно выводится сообщение как сейчас у емейл "введите номер телефона" если пользователь не заполнил это поле. А поле емейл сделать соотно необязательным для оформления заказа.