diff --git a/CHANGELOG.md b/CHANGELOG.md index 3526247..5cc88e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ ### Changed - Производственные задачи и прогресс техпроцесса ведутся в разрезе партий поставки (серий) для одной сделки. +- Улучшено сообщение о блокировке запуска «В производство» при отсутствии техпроцесса: показывается модалка и отдельная страница со списком проблемных позиций. ### Fixed - Запуск «В производство» блокируется, если в BOM есть узлы без техпроцесса (EntityOperation seq=1), чтобы компоненты не попадали в «без техпроцесса». diff --git a/shiftflow/admin.py b/shiftflow/admin.py index 20f917b..b372474 100644 --- a/shiftflow/admin.py +++ b/shiftflow/admin.py @@ -8,6 +8,7 @@ from .models import ( Company, CuttingSession, Deal, + DealDeliveryBatch, DealItem, DxfPreviewJob, DxfPreviewSettings, @@ -28,6 +29,7 @@ _models_to_reregister = ( Company, CuttingSession, Deal, + DealDeliveryBatch, DealItem, DxfPreviewJob, DxfPreviewSettings, @@ -77,6 +79,14 @@ class DealAdmin(admin.ModelAdmin): list_filter = ('status', 'company') inlines = (DealItemInline,) +# --- Настройка отображения Партий поставки --- +@admin.register(DealDeliveryBatch) +class DealDeliveryBatchAdmin(admin.ModelAdmin): + list_display = ('deal', 'due_date', 'name', 'is_default', 'created_at') + list_filter = ('is_default', 'due_date', 'deal') + search_fields = ('deal__number', 'name') + autocomplete_fields = ('deal',) + # --- Задания на производство (База) --- """ Панель администрирования Заданий на производство diff --git a/shiftflow/templates/shiftflow/missing_techprocess.html b/shiftflow/templates/shiftflow/missing_techprocess.html new file mode 100644 index 0000000..87b308b --- /dev/null +++ b/shiftflow/templates/shiftflow/missing_techprocess.html @@ -0,0 +1,54 @@ +{% extends 'base.html' %} + +{% block content %} +
+
+
+

+ Позиции без техпроцесса +

+
+ Сделка {{ deal.number }} + {% if deal.company %} · {{ deal.company.name }}{% endif %} + {% if deal.description %} · {{ deal.description }}{% endif %} +
+
+ + + Назад к сделке + +
+ +
+ {% if items %} +
Для запуска в производство нужен техпроцесс (операция seq=1).
+
+ + + + + + + + + + + {% for r in items %} + + + + + + + {% endfor %} + +
ТипОбозначениеНаименование
{{ r.entity.get_entity_type_display }}{{ r.entity.drawing_number|default:"—" }}{{ r.entity.name }} + Открыть паспорт +
+
+ {% else %} +
Нет данных: список проблемных позиций не найден (или уже очищен).
+ {% endif %} +
+
+{% endblock %} \ No newline at end of file diff --git a/shiftflow/templates/shiftflow/planning_deal.html b/shiftflow/templates/shiftflow/planning_deal.html index 49ebec2..597e092 100644 --- a/shiftflow/templates/shiftflow/planning_deal.html +++ b/shiftflow/templates/shiftflow/planning_deal.html @@ -316,6 +316,7 @@ Позиция + Партия Операция Прогресс Заказано / Сделано / В смене @@ -339,6 +340,19 @@ {% if t.material %}{{ t.material.full_name|default:t.material.name }}{% else %}—{% endif %} + + {% if t.delivery_batch_id and t.delivery_batch %} +
{{ t.delivery_batch.due_date|date:"d.m.Y" }}
+
+ {{ t.delivery_batch.name|default:"—" }} + {% if t.delivery_batch.is_default %} + по умолчанию + {% endif %} +
+ {% else %} + + {% endif %} + {{ t.current_operation_name|default:"—" }}
@@ -390,7 +404,7 @@ {% empty %} - Задач нет + Задач нет {% endfor %} @@ -504,6 +518,51 @@
+{% if missing_tech_process_rows %} + +{% endif %}