Files
octopus/myproject/orders/models/payment_method.py
Andrey Smakotin c1351e1f49 Исправлена форма заказа: две колонки и корректная работа кнопки сохранения
- Разделен экран на две колонки: заказ слева, оплата справа
- Форма оплаты вынесена за пределы основной формы заказа (устранена проблема вложенных форм)
- Исправлен метод calculate_total() для сохранения итоговой суммы в БД
- Добавлена модель Transaction для учета платежей и возвратов
- Добавлена модель PaymentMethod для методов оплаты
- Удалена старая модель Payment, заменена на Transaction
- Добавлен TransactionService для управления транзакциями
- Обновлен интерфейс форм оплаты для правой колонки
- Кнопка 'Сохранить изменения' теперь работает корректно
2025-11-29 14:33:23 +03:00

77 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from django.db import models
from accounts.models import CustomUser
class PaymentMethod(models.Model):
"""
Способ оплаты заказа.
Справочник для управления доступными методами оплаты.
"""
# Код для программного доступа
code = models.SlugField(
unique=True,
max_length=50,
verbose_name="Код способа оплаты",
help_text="Уникальный идентификатор (например: 'cash_to_courier', 'card_to_courier')"
)
# Отображаемое название
name = models.CharField(
max_length=100,
verbose_name="Название способа оплаты"
)
# Описание
description = models.TextField(
blank=True,
verbose_name="Описание",
help_text="Дополнительная информация о способе оплаты"
)
# Активность
is_active = models.BooleanField(
default=True,
verbose_name="Активен",
help_text="Отключенные способы оплаты не отображаются при создании заказа"
)
# Порядок отображения
order = models.PositiveIntegerField(
default=0,
verbose_name="Порядок отображения"
)
# Системный флаг
is_system = models.BooleanField(
default=False,
verbose_name="Системный",
help_text="Системные способы оплаты нельзя удалить через интерфейс"
)
# Аудит
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
created_by = models.ForeignKey(
CustomUser,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name='created_payment_methods',
verbose_name="Создано"
)
class Meta:
verbose_name = "Способ оплаты"
verbose_name_plural = "Способы оплаты"
ordering = ['order', 'name']
indexes = [
models.Index(fields=['code']),
models.Index(fields=['is_active']),
models.Index(fields=['order']),
]
def __str__(self):
return self.name