Feature: Добавлены методы получения суммы заказов клиента

Добавлены методы в модель Customer для расчета суммы успешных заказов:
- get_successful_orders_total() - гибкий метод с фильтрацией по датам
- get_last_year_orders_total() - сумма за последний год

Удалено устаревшее поле total_spent:
- Методы предоставляют более точные и актуальные данные
- Используют агрегацию на уровне БД для производительности

Обновлен UI карточки клиента:
- Отображается сумма всех успешных заказов
- Отображается сумма заказов за последний год
- Убрана колонка total_spent из списка клиентов

Изменения:
- customers/models.py: добавлены методы, удалено поле total_spent
- customers/views.py: добавлен расчет сумм в контекст
- customers/templates: обновлены шаблоны
- customers/admin.py: удалены упоминания total_spent
- Создана миграция 0005_remove_total_spent

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-06 00:21:45 +03:00
parent 2f7fed4a1a
commit 8d50613876
6 changed files with 83 additions and 19 deletions

View File

@@ -122,6 +122,12 @@ def customer_detail(request, pk):
)
refund_amount = refund_amount_result['total_refund'] or Decimal('0')
# Сумма всех успешных заказов
total_orders_sum = customer.get_successful_orders_total()
# Сумма успешных заказов за последний год
last_year_orders_sum = customer.get_last_year_orders_total()
# История транзакций кошелька (последние 20)
from .models import WalletTransaction
wallet_transactions = WalletTransaction.objects.filter(
@@ -141,6 +147,8 @@ def customer_detail(request, pk):
'refund_amount': refund_amount,
'wallet_transactions': wallet_transactions,
'orders_page': orders_page,
'total_orders_sum': total_orders_sum,
'last_year_orders_sum': last_year_orders_sum,
}
return render(request, 'customers/customer_detail.html', context)