Исправлена проблема с сохранением платежей и автоматический пересчёт статуса оплаты

- Добавлен префикс 'payments' для PaymentFormSet во всех представлениях
- Добавлен атрибут form='order-form' для динамически создаваемых полей платежей
- Убрано переопределение has_changed() в PaymentForm (использует стандартную логику Django)
- Автоматическая установка created_by для новых платежей
- Автоматический пересчёт payment_status при изменении суммы заказа
- Автоматическая обработка переплаты с возвратом в кошелёк клиента
- Убран весь отладочный код
This commit is contained in:
2025-11-29 00:48:04 +03:00
parent a101d2919c
commit 9415aca63d
3 changed files with 116 additions and 38 deletions

View File

@@ -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()