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:
@@ -30,7 +30,6 @@ class CustomerAdmin(admin.ModelAdmin):
|
||||
'email',
|
||||
'phone',
|
||||
'wallet_balance_display',
|
||||
'total_spent',
|
||||
'is_system_customer',
|
||||
'created_at'
|
||||
)
|
||||
@@ -45,7 +44,7 @@ class CustomerAdmin(admin.ModelAdmin):
|
||||
)
|
||||
date_hierarchy = 'created_at'
|
||||
ordering = ('-created_at',)
|
||||
readonly_fields = ('created_at', 'updated_at', 'total_spent', 'is_system_customer', 'wallet_balance')
|
||||
readonly_fields = ('created_at', 'updated_at', 'is_system_customer', 'wallet_balance')
|
||||
|
||||
fieldsets = (
|
||||
('Основная информация', {
|
||||
@@ -54,10 +53,6 @@ class CustomerAdmin(admin.ModelAdmin):
|
||||
('Кошелёк', {
|
||||
'fields': ('wallet_balance',),
|
||||
}),
|
||||
('Статистика покупок', {
|
||||
'fields': ('total_spent',),
|
||||
'classes': ('collapse',)
|
||||
}),
|
||||
('Заметки', {
|
||||
'fields': ('notes',)
|
||||
}),
|
||||
@@ -82,7 +77,7 @@ class CustomerAdmin(admin.ModelAdmin):
|
||||
"""Делаем все поля read-only для системного клиента"""
|
||||
if obj and obj.is_system_customer:
|
||||
# Для системного клиента все поля только для чтения
|
||||
return ['name', 'email', 'phone', 'total_spent', 'is_system_customer', 'wallet_balance', 'notes', 'created_at', 'updated_at']
|
||||
return ['name', 'email', 'phone', 'is_system_customer', 'wallet_balance', 'notes', 'created_at', 'updated_at']
|
||||
return self.readonly_fields
|
||||
|
||||
def has_delete_permission(self, request, obj=None):
|
||||
|
||||
Reference in New Issue
Block a user