Исправлена форма заказа: две колонки и корректная работа кнопки сохранения
- Разделен экран на две колонки: заказ слева, оплата справа - Форма оплаты вынесена за пределы основной формы заказа (устранена проблема вложенных форм) - Исправлен метод calculate_total() для сохранения итоговой суммы в БД - Добавлена модель Transaction для учета платежей и возвратов - Добавлена модель PaymentMethod для методов оплаты - Удалена старая модель Payment, заменена на Transaction - Добавлен TransactionService для управления транзакциями - Обновлен интерфейс форм оплаты для правой колонки - Кнопка 'Сохранить изменения' теперь работает корректно
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django.contrib import admin
|
||||
from django.utils.html import format_html
|
||||
from .models import Order, OrderItem, Payment, PaymentMethod, Address, OrderStatus
|
||||
from .models import Order, OrderItem, Transaction, PaymentMethod, Address, OrderStatus
|
||||
|
||||
|
||||
class PaymentInline(admin.TabularInline):
|
||||
class TransactionInline(admin.TabularInline):
|
||||
"""
|
||||
Inline для управления платежами по заказу.
|
||||
Inline для управления транзакциями по заказу.
|
||||
"""
|
||||
model = Payment
|
||||
extra = 1
|
||||
fields = ['amount', 'payment_method', 'payment_date', 'created_by', 'notes']
|
||||
readonly_fields = ['payment_date']
|
||||
model = Transaction
|
||||
extra = 0
|
||||
fields = ['transaction_type', 'amount', 'payment_method', 'transaction_date', 'created_by', 'reason', 'notes']
|
||||
readonly_fields = ['transaction_date']
|
||||
can_delete = False # Используйте refund вместо удаления
|
||||
|
||||
|
||||
class OrderItemInline(admin.TabularInline):
|
||||
@@ -110,7 +111,7 @@ class OrderAdmin(admin.ModelAdmin):
|
||||
}),
|
||||
)
|
||||
|
||||
inlines = [OrderItemInline, PaymentInline]
|
||||
inlines = [OrderItemInline, TransactionInline]
|
||||
|
||||
actions = [
|
||||
'mark_as_confirmed',
|
||||
@@ -151,37 +152,41 @@ class OrderAdmin(admin.ModelAdmin):
|
||||
mark_as_paid.short_description = 'Отметить как оплаченные'
|
||||
|
||||
|
||||
@admin.register(Payment)
|
||||
class PaymentAdmin(admin.ModelAdmin):
|
||||
@admin.register(Transaction)
|
||||
class TransactionAdmin(admin.ModelAdmin):
|
||||
"""
|
||||
Админ-панель для управления платежами.
|
||||
Админ-панель для управления транзакциями.
|
||||
"""
|
||||
list_display = [
|
||||
'order',
|
||||
'transaction_type',
|
||||
'amount',
|
||||
'payment_method',
|
||||
'payment_date',
|
||||
'transaction_date',
|
||||
'created_by',
|
||||
'reason',
|
||||
]
|
||||
|
||||
list_filter = [
|
||||
'transaction_type',
|
||||
'payment_method',
|
||||
'payment_date',
|
||||
'transaction_date',
|
||||
]
|
||||
|
||||
search_fields = [
|
||||
'order__order_number',
|
||||
'reason',
|
||||
'notes',
|
||||
]
|
||||
|
||||
readonly_fields = ['payment_date']
|
||||
readonly_fields = ['transaction_date']
|
||||
|
||||
fieldsets = (
|
||||
('Информация о платеже', {
|
||||
'fields': ('order', 'amount', 'payment_method', 'payment_date')
|
||||
('Информация о транзакции', {
|
||||
'fields': ('order', 'transaction_type', 'amount', 'payment_method', 'transaction_date')
|
||||
}),
|
||||
('Дополнительно', {
|
||||
'fields': ('created_by', 'notes')
|
||||
'fields': ('related_payment', 'reason', 'created_by', 'notes')
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user