diff --git a/HISTORY.md b/HISTORY.md index 917e1e2..dd4b557 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,13 @@ # История изменений ERP WaterSurf +## 2025-02-26 16:35 UTC – Общая сумма над таблицей; автор всегда подставляется при создании + +**Изменения**: Блок «Общая сумма заказа» перенесён над табличную часть «Товары» в формах заказа клиента и заказа поставщику. Поле «Автор» в моделях — ForeignKey на справочник Employee; при создании документа автор теперь подставляется всегда: сначала из профиля пользователя (UserProfile.employee), при отсутствии — создаётся/берётся сотрудник с именем из ФИО или логина пользователя. В контексте для отображения используется тот же хелпер, чтобы надпись «Автор» показывала будущего автора уже при открытии формы создания. + +**Файлы**: order_form.html, supplier_order_form.html (общая сумма над таблицей), documents/views.py (_get_author_for_request, set_author с fallback). + +--- + ## 2025-02-26 16:15 UTC – Форма заказа: общая сумма и автор только для отображения **Задача**: В форме заказа показывать общую сумму заказа (сумма стоимостей строк табличной части) как надпись; поле «Автор» сделать надписью (не вводом), при создании документа подставлять текущего пользователя и сохранять, при открытии — только отображать. diff --git a/app/documents/views.py b/app/documents/views.py index 1994068..ae6f329 100644 --- a/app/documents/views.py +++ b/app/documents/views.py @@ -8,6 +8,7 @@ from django.contrib import messages from django.http import HttpResponseRedirect from users.utils import get_author_employee +from references.models import Employee from .models import ( CustomerOrder, SupplierOrder, @@ -32,14 +33,28 @@ logger = logging.getLogger(__name__) def set_author(form, request): - """Подставить автора из профиля пользователя при создании документа.""" + """Подставить автора при создании документа: из профиля пользователя (UserProfile.employee) или сотрудник по имени пользователя.""" if form.instance.pk: return # при редактировании автора не меняем - author = get_author_employee(request.user) + author = _get_author_for_request(request) if author: form.instance.author = author +def _get_author_for_request(request): + """Сотрудник-автор: из профиля пользователя или по ФИО/логину.""" + if not request.user.is_authenticated: + return None + author = get_author_employee(request.user) + if author: + return author + name = (request.user.get_full_name() or "").strip() or request.user.username + author = Employee.objects.filter(name=name).first() + if not author: + author = Employee.objects.create(name=name) + return author + + # --- Заказы клиентов --- class CustomerOrderList(LoginRequiredMixin, ListView): model = CustomerOrder @@ -56,7 +71,7 @@ class CustomerOrderCreate(LoginRequiredMixin, CreateView): ctx = super().get_context_data(**kwargs) ctx["formset"] = CustomerOrderItemFormSet(instance=self.object) if self.object and self.object.pk else CustomerOrderItemFormSet() ctx["title"] = "Заказ клиента" - ctx["author_display"] = get_author_employee(self.request.user) if not self.object or not self.object.pk else self.object.author + ctx["author_display"] = _get_author_for_request(self.request) if not self.object or not self.object.pk else self.object.author return ctx def form_valid(self, form): @@ -138,7 +153,7 @@ class SupplierOrderCreate(LoginRequiredMixin, CreateView): ctx = super().get_context_data(**kwargs) ctx["formset"] = SupplierOrderItemFormSet(instance=self.object) if self.object and self.object.pk else SupplierOrderItemFormSet() ctx["title"] = "Заказ поставщику" - ctx["author_display"] = get_author_employee(self.request.user) if not self.object or not self.object.pk else self.object.author + ctx["author_display"] = _get_author_for_request(self.request) if not self.object or not self.object.pk else self.object.author return ctx def form_valid(self, form): diff --git a/app/templates/documents/order_form.html b/app/templates/documents/order_form.html index 3d42f8d..cecbf3b 100644 --- a/app/templates/documents/order_form.html +++ b/app/templates/documents/order_form.html @@ -42,6 +42,7 @@

Товары

+

Общая сумма заказа:

{{ formset.management_form }}
@@ -77,7 +78,6 @@
-

Общая сумма заказа:

diff --git a/app/templates/documents/supplier_order_form.html b/app/templates/documents/supplier_order_form.html index bcbd0b2..b4b2a50 100644 --- a/app/templates/documents/supplier_order_form.html +++ b/app/templates/documents/supplier_order_form.html @@ -56,6 +56,7 @@

Товары

+

Общая сумма заказа:

{{ formset.management_form }}
@@ -91,7 +92,6 @@
-

Общая сумма заказа: