Исправлена форма заказа: две колонки и корректная работа кнопки сохранения
- Разделен экран на две колонки: заказ слева, оплата справа - Форма оплаты вынесена за пределы основной формы заказа (устранена проблема вложенных форм) - Исправлен метод calculate_total() для сохранения итоговой суммы в БД - Добавлена модель Transaction для учета платежей и возвратов - Добавлена модель PaymentMethod для методов оплаты - Удалена старая модель Payment, заменена на Transaction - Добавлен TransactionService для управления транзакциями - Обновлен интерфейс форм оплаты для правой колонки - Кнопка 'Сохранить изменения' теперь работает корректно
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django import forms
|
||||
from django.forms import inlineformset_factory
|
||||
from .models import Order, OrderItem, Payment, Address, OrderStatus
|
||||
from .models import Order, OrderItem, Transaction, Address, OrderStatus
|
||||
from customers.models import Customer
|
||||
from inventory.models import Warehouse
|
||||
from products.models import Product, ProductKit
|
||||
@@ -472,15 +472,15 @@ TemporaryKitItemFormSet = formset_factory(
|
||||
)
|
||||
|
||||
|
||||
# === ПЛАТЕЖИ (СМЕШАННАЯ ОПЛАТА) ===
|
||||
# === ТРАНЗАКЦИИ (СМЕШАННАЯ ОПЛАТА И ВОЗВРАТЫ) ===
|
||||
|
||||
class PaymentForm(forms.ModelForm):
|
||||
class TransactionForm(forms.ModelForm):
|
||||
"""
|
||||
Форма для создания платежа по заказу.
|
||||
Поддерживает смешанную оплату (несколько платежей на один заказ).
|
||||
Форма для создания транзакций по заказу.
|
||||
Поддерживает смешанную оплату и возвраты.
|
||||
"""
|
||||
class Meta:
|
||||
model = Payment
|
||||
model = Transaction
|
||||
fields = ['payment_method', 'amount', 'notes']
|
||||
widgets = {
|
||||
'payment_method': forms.Select(attrs={'class': 'form-select'}),
|
||||
@@ -546,13 +546,13 @@ class PaymentForm(forms.ModelForm):
|
||||
return cleaned
|
||||
|
||||
|
||||
# Formset для множественных платежей
|
||||
PaymentFormSet = inlineformset_factory(
|
||||
# Formset для множественных транзакций
|
||||
TransactionFormSet = inlineformset_factory(
|
||||
Order,
|
||||
Payment,
|
||||
form=PaymentForm,
|
||||
Transaction,
|
||||
form=TransactionForm,
|
||||
extra=0, # Без пустых форм (добавляем через JavaScript)
|
||||
can_delete=True,
|
||||
min_num=0, # Платежи не обязательны при создании черновика
|
||||
can_delete=False, # Используйте refund вместо удаления
|
||||
min_num=0, # Транзакции не обязательны при создании черновика
|
||||
validate_min=False,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user