Исправлена проблема с сохранением платежей и автоматический пересчёт статуса оплаты
- Добавлен префикс 'payments' для PaymentFormSet во всех представлениях - Добавлен атрибут form='order-form' для динамически создаваемых полей платежей - Убрано переопределение has_changed() в PaymentForm (использует стандартную логику Django) - Автоматическая установка created_by для новых платежей - Автоматический пересчёт payment_status при изменении суммы заказа - Автоматическая обработка переплаты с возвратом в кошелёк клиента - Убран весь отладочный код
This commit is contained in:
@@ -510,22 +510,6 @@ class PaymentForm(forms.ModelForm):
|
||||
# Делаем notes опциональным
|
||||
self.fields['notes'].required = False
|
||||
|
||||
def has_changed(self):
|
||||
"""
|
||||
Переопределяем has_changed() чтобы formset не считал форму пустой.
|
||||
Форма считается заполненной если указан payment_method ИЛИ amount.
|
||||
"""
|
||||
# Если есть ID - значит форма существует в БД, проверяем изменения стандартно
|
||||
if self.instance and self.instance.pk:
|
||||
return super().has_changed()
|
||||
|
||||
# Для новых форм: считаем заполненной если есть payment_method или amount
|
||||
payment_method = self.cleaned_data.get('payment_method') if hasattr(self, 'cleaned_data') else self.data.get(self.add_prefix('payment_method'))
|
||||
amount = self.cleaned_data.get('amount') if hasattr(self, 'cleaned_data') else self.data.get(self.add_prefix('amount'))
|
||||
|
||||
# Форма изменена если заполнено хотя бы одно из ключевых полей
|
||||
return bool(payment_method or amount)
|
||||
|
||||
def clean(self):
|
||||
"""Валидация платежа, особенно для оплаты из кошелька"""
|
||||
cleaned = super().clean()
|
||||
|
||||
Reference in New Issue
Block a user