diff --git a/add_payment_methods_to_buba.py b/add_payment_methods_to_buba.py
new file mode 100644
index 0000000..a9cf52e
--- /dev/null
+++ b/add_payment_methods_to_buba.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+Скрипт для добавления способов оплаты в тенант buba
+"""
+import os
+import sys
+import django
+
+# Добавляем путь к проекту
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'myproject'))
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
+django.setup()
+
+from django_tenants.utils import schema_context
+from django.core.management import call_command
+
+print("=" * 70)
+print("Добавление способов оплаты в тенант 'buba'")
+print("=" * 70)
+
+# Переключаемся на схему buba и создаём способы оплаты
+with schema_context('buba'):
+ print("\n1. Создание способов оплаты...")
+ call_command('create_payment_methods')
+
+ # Проверяем что создалось
+ from orders.models import PaymentMethod
+ methods = PaymentMethod.objects.all().order_by('order')
+
+ print(f"\n2. Проверка созданных способов оплаты:")
+ print(f" Всего: {methods.count()}")
+ for method in methods:
+ status = "✓" if method.is_active else "✗"
+ print(f" {status} [{method.order}] {method.name} ({method.code})")
+
+print("\n" + "=" * 70)
+print("✓ Готово!")
+print("=" * 70)
diff --git a/myproject/orders/admin.py b/myproject/orders/admin.py
index de1493c..f0867d4 100644
--- a/myproject/orders/admin.py
+++ b/myproject/orders/admin.py
@@ -441,7 +441,7 @@ class PaymentMethodAdmin(admin.ModelAdmin):
def payments_count(self, obj):
"""Количество платежей этим способом"""
- count = obj.payments.count()
+ count = obj.transactions.count()
if count == 0:
return format_html('{}', count)
return format_html('{}', count)
@@ -450,7 +450,7 @@ class PaymentMethodAdmin(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None):
"""Запрещаем удаление используемых способов оплаты"""
if obj:
- # Разрешаем удаление только если нет связанных платежей
- if obj.payments.exists():
+ # Разрешаем удаление только если нет связанных транзакций
+ if obj.transactions.exists():
return False
return super().has_delete_permission(request, obj)
diff --git a/myproject/tenants/admin.py b/myproject/tenants/admin.py
index 16ce529..71f26ec 100644
--- a/myproject/tenants/admin.py
+++ b/myproject/tenants/admin.py
@@ -312,51 +312,13 @@ class TenantRegistrationAdmin(admin.ModelAdmin):
# Создаем системные способы оплаты
logger.info(f"Создание системных способов оплаты для тенанта: {client.id}")
- from orders.models import PaymentMethod
+ from django.core.management import call_command
try:
- payment_methods = [
- {
- 'code': 'cash',
- 'name': 'Наличными',
- 'description': 'Оплата наличными деньгами',
- 'is_system': True,
- 'order': 1
- },
- {
- 'code': 'card',
- 'name': 'Картой',
- 'description': 'Оплата банковской картой',
- 'is_system': True,
- 'order': 2
- },
- {
- 'code': 'online',
- 'name': 'Онлайн',
- 'description': 'Онлайн оплата через платежную систему',
- 'is_system': True,
- 'order': 3
- },
- {
- 'code': 'legal_entity',
- 'name': 'Безнал от ЮРЛИЦ',
- 'description': 'Безналичный расчёт от юридических лиц',
- 'is_system': True,
- 'order': 4
- },
- ]
-
- created_count = 0
- for method_data in payment_methods:
- method, created = PaymentMethod.objects.get_or_create(
- code=method_data['code'],
- defaults=method_data
- )
- if created:
- created_count += 1
- logger.info(f"Создан способ оплаты: {method.name}")
-
- logger.info(f"Системные способы оплаты успешно созданы: {created_count} новых")
+ # Вызываем команду создания способов оплаты
+ # Это единственный источник истины для списка способов оплаты
+ call_command('create_payment_methods')
+ logger.info("Системные способы оплаты успешно созданы")
except Exception as e:
logger.error(f"Ошибка при создании способов оплаты: {e}", exc_info=True)
# Не прерываем процесс, т.к. это не критично