Replace 'конец' with 'исход сделки' in order status terminology

Updated terminology across the order status management system to use 'исход сделки' (deal outcome) instead of 'конец' (end) for better clarity and professional language.

Changes:
- Fixed AttributeError in order_status_list view by removing attempt to set read-only property orders_count
- Updated OrderStatus model verbose_name fields for is_positive_end and is_negative_end
- Updated status form template badges and preview JavaScript
- Updated status list table header
- Created migration for verbose_name changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-13 21:53:34 +03:00
parent 2ec969f23a
commit a2f96d3750
5 changed files with 32 additions and 10 deletions

View File

@@ -0,0 +1,23 @@
# Generated by Django 5.0.10 on 2025-11-13 18:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0003_update_status_names_to_russian'),
]
operations = [
migrations.AlterField(
model_name='orderstatus',
name='is_negative_end',
field=models.BooleanField(default=False, help_text='True если это финальный отрицательный статус (Отменен)', verbose_name='Отрицательный исход сделки'),
),
migrations.AlterField(
model_name='orderstatus',
name='is_positive_end',
field=models.BooleanField(default=False, help_text='True если это финальный успешный статус (Выполнен)', verbose_name='Положительный исход сделки'),
),
]

View File

@@ -37,13 +37,13 @@ class OrderStatus(models.Model):
is_positive_end = models.BooleanField( is_positive_end = models.BooleanField(
default=False, default=False,
verbose_name="Положительный конец", verbose_name="Положительный исход сделки",
help_text="True если это финальный успешный статус (Выполнен)" help_text="True если это финальный успешный статус (Выполнен)"
) )
is_negative_end = models.BooleanField( is_negative_end = models.BooleanField(
default=False, default=False,
verbose_name="Отрицательный конец", verbose_name="Отрицательный исход сделки",
help_text="True если это финальный отрицательный статус (Отменен)" help_text="True если это финальный отрицательный статус (Отменен)"
) )

View File

@@ -230,9 +230,9 @@
<label class="form-label">Финальный статус</label> <label class="form-label">Финальный статус</label>
<p id="preview-end"> <p id="preview-end">
{% if form.instance.is_positive_end %} {% if form.instance.is_positive_end %}
<span class="badge bg-success">✓ Успешный конец</span> <span class="badge bg-success">✓ Успешный исход сделки</span>
{% elif form.instance.is_negative_end %} {% elif form.instance.is_negative_end %}
<span class="badge bg-danger">✗ Отрицательный конец</span> <span class="badge bg-danger">✗ Отрицательный исход сделки</span>
{% else %} {% else %}
<span class="badge bg-secondary">Промежуточный</span> <span class="badge bg-secondary">Промежуточный</span>
{% endif %} {% endif %}
@@ -274,9 +274,9 @@ document.addEventListener('DOMContentLoaded', function() {
// Обновляем тип конца // Обновляем тип конца
if (positiveEndCheckbox.checked) { if (positiveEndCheckbox.checked) {
previewEnd.innerHTML = '<span class="badge bg-success">✓ Успешный конец</span>'; previewEnd.innerHTML = '<span class="badge bg-success">✓ Успешный исход сделки</span>';
} else if (negativeEndCheckbox.checked) { } else if (negativeEndCheckbox.checked) {
previewEnd.innerHTML = '<span class="badge bg-danger">✗ Отрицательный конец</span>'; previewEnd.innerHTML = '<span class="badge bg-danger">✗ Отрицательный исход сделки</span>';
} else { } else {
previewEnd.innerHTML = '<span class="badge bg-secondary">Промежуточный</span>'; previewEnd.innerHTML = '<span class="badge bg-secondary">Промежуточный</span>';
} }

View File

@@ -41,7 +41,7 @@
<th style="width: 200px;">Название</th> <th style="width: 200px;">Название</th>
<th style="width: 150px;">Код</th> <th style="width: 150px;">Код</th>
<th style="width: 150px;">Тип</th> <th style="width: 150px;">Тип</th>
<th style="width: 100px;">Конец</th> <th style="width: 100px;">Исход сделки</th>
<th style="width: 80px;">Цвет</th> <th style="width: 80px;">Цвет</th>
<th style="width: 80px;">Заказов</th> <th style="width: 80px;">Заказов</th>
<th style="width: 150px;">Действия</th> <th style="width: 150px;">Действия</th>

View File

@@ -480,9 +480,8 @@ def order_status_list(request):
"""Список всех статусов заказов""" """Список всех статусов заказов"""
statuses = OrderStatus.objects.all().order_by('order', 'name') statuses = OrderStatus.objects.all().order_by('order', 'name')
# Добавляем информацию о количестве заказов для каждого статуса # orders_count уже доступен как property в модели OrderStatus
for status in statuses: # Не нужно вручную добавлять атрибут
status.orders_count = Order.objects.filter(status=status).count()
context = { context = {
'statuses': statuses, 'statuses': statuses,