From c2778d9ec82ce38b819683a81d0cdd210a83c8fa Mon Sep 17 00:00:00 2001 From: ackFromRedmi Date: Tue, 31 Mar 2026 08:31:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D1=81?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=BA=D0=B8=20=D0=BD=D0=B0=20=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B5=20=D0=BF=D0=BB=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shiftflow/admin.py | 4 +- shiftflow/migrations/0009_deal_status.py | 18 ++ shiftflow/models.py | 14 +- shiftflow/templates/shiftflow/planning.html | 289 +++++++++++++----- .../templates/shiftflow/planning_deal.html | 136 +++++++++ .../templates/shiftflow/task_create.html | 20 +- shiftflow/urls.py | 2 + shiftflow/views.py | 52 +++- 8 files changed, 453 insertions(+), 82 deletions(-) create mode 100644 shiftflow/migrations/0009_deal_status.py create mode 100644 shiftflow/templates/shiftflow/planning_deal.html diff --git a/shiftflow/admin.py b/shiftflow/admin.py index 0199fcb..24bee98 100644 --- a/shiftflow/admin.py +++ b/shiftflow/admin.py @@ -11,9 +11,9 @@ class CompanyAdmin(admin.ModelAdmin): # --- Настройка отображения Сделок --- @admin.register(Deal) class DealAdmin(admin.ModelAdmin): - list_display = ('number', 'company') + list_display = ('number', 'status', 'company') search_fields = ('number', 'company__name') - list_filter = ('company',) + list_filter = ('status', 'company') # --- Задания на производство (База) --- @admin.register(ProductionTask) diff --git a/shiftflow/migrations/0009_deal_status.py b/shiftflow/migrations/0009_deal_status.py new file mode 100644 index 0000000..2f2a22d --- /dev/null +++ b/shiftflow/migrations/0009_deal_status.py @@ -0,0 +1,18 @@ +# Generated by Django 6.0.3 on 2026-03-31 05:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shiftflow', '0008_alter_item_date'), + ] + + operations = [ + migrations.AddField( + model_name='deal', + name='status', + field=models.CharField(choices=[('lead', 'Зашла'), ('work', 'В работе'), ('done', 'Завершена')], default='work', max_length=10, verbose_name='Статус'), + ), + ] diff --git a/shiftflow/models.py b/shiftflow/models.py index 79251bd..72ee6cf 100644 --- a/shiftflow/models.py +++ b/shiftflow/models.py @@ -40,11 +40,21 @@ class Deal(models.Model): Заказ или проект. Номер парсится из пути к файлам. Служит контейнером для группы деталей (позиций). """ + + STATUS_CHOICES = [ + ('lead', 'Зашла'), + ('work', 'В работе'), + ('done', 'Завершена'), + ] + number = models.CharField("№ Сделки", max_length=100, unique=True) + status = models.CharField("Статус", max_length=10, choices=STATUS_CHOICES, default='work') company = models.ForeignKey(Company, on_delete=models.PROTECT, verbose_name="Заказчик", null=True, blank=True) description = models.TextField("Описание сделки", blank=True, help_text="Общая информация по заказу") - - def __str__(self): return f"Сделка №{self.number} ({self.company})" + + def __str__(self): + return f"Сделка №{self.number} ({self.company})" + class Meta: verbose_name = "Сделка"; verbose_name_plural = "Сделки" diff --git a/shiftflow/templates/shiftflow/planning.html b/shiftflow/templates/shiftflow/planning.html index 8d1cb7f..086c4fd 100644 --- a/shiftflow/templates/shiftflow/planning.html +++ b/shiftflow/templates/shiftflow/planning.html @@ -3,10 +3,25 @@ {% block content %}
-

Планирование

- - Добавить - +
+

Планирование

+
+ Сделки: +
+ + + + + + + + +
+
+
+
@@ -15,108 +30,232 @@ Сделка - Деталь - Материал - Размер - Надо - Сделано - В плане - Осталось - Действия + Заказчик + Описание + Статус - {% for t in tasks %} - - {{ t.deal.number }} - {{ t.drawing_name|default:"Б/ч" }} - {{ t.material.full_name|default:t.material.name }} - {{ t.size_value }} - {{ t.quantity_ordered }} - {{ t.done_qty }} - {{ t.planned_qty }} - {{ t.remaining_qty }} - - + {% for d in deals %} + + {{ d.number }} + {{ d.company.name|default:"-" }} + {{ d.description|default:"" }} + + {{ d.get_status_display }} {% empty %} - Заданий не найдено + Сделок не найдено {% endfor %}
- -