Упрощение системы получателей доставки

- Удалено избыточное поле customer_is_recipient из модели Order
- Добавлено свойство @property is_customer_recipient для обратной совместимости
- Заменены радиокнопки recipient_mode на чекбокс 'Другой получатель' в форме
- Добавлено поле recipient_source для выбора между историей и новым получателем
- Обновлен AddressService.process_recipient_from_form() для работы с чекбоксом
- Обновлены шаблоны: order_form.html (чекбокс вместо радиокнопок) и order_detail.html
- Удалено customer_is_recipient из admin и demo команды
- Создана миграция для удаления поля customer_is_recipient

Логика упрощена: recipient is None = получатель = покупатель, иначе - отдельный получатель
This commit is contained in:
2025-12-24 17:54:57 +03:00
parent 9f4f03e340
commit d62caa924b
9 changed files with 168 additions and 82 deletions

View File

@@ -70,14 +70,16 @@ class AddressService:
Returns:
Recipient or None: Получатель для привязки к заказу или None
"""
recipient_mode = form_data.get('recipient_mode')
# Если режим "покупатель = получатель" - возвращаем None
if recipient_mode == 'customer':
# Если чекбокс "Другой получатель" не включен - возвращаем None (получатель = покупатель)
other_recipient = form_data.get('other_recipient', False)
if not other_recipient:
return None
# Определяем источник получателя
recipient_source = form_data.get('recipient_source', 'new')
# Если режим "выбрать из истории" - возвращаем выбранного получателя
if recipient_mode == 'history':
if recipient_source == 'history':
recipient_id = form_data.get('recipient_from_history')
if recipient_id:
try:
@@ -86,7 +88,7 @@ class AddressService:
return None
# Если режим "новый получатель"
if recipient_mode == 'new':
if recipient_source == 'new':
name = form_data.get('recipient_name', '').strip()
phone = form_data.get('recipient_phone', '').strip()