From 8145db86e378ef5c20e8c2b197856c6797e95733 Mon Sep 17 00:00:00 2001 From: cursor-agent Date: Thu, 26 Feb 2026 13:26:28 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20=D0=B4=D0=B0=D1=82=D0=B0=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B8=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D1=8B=20(format=20YYYY-MM-DD),=20?= =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D1=82=D0=BE=D0=B9=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D1=80=D0=B8=20=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B8=20?= =?UTF-8?q?(extra=3D0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- HISTORY.md | 10 ++++++++++ app/documents/forms.py | 28 +++++++++++++++++++++++----- app/documents/views.py | 10 ++++++---- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index ebd230d..f098d82 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,15 @@ # История изменений ERP WaterSurf +## 2025-02-25 23:55 UTC – Дата при открытии формы, без лишней пустой строки при редактировании + +**Проблема**: При открытии формы редактирования заказа поле «Дата» не подставлялось из БД; в табличной части вместе с существующими строками отображалась лишняя пустая строка. + +**Решение**: Для виджета даты (DateInput с type="date") задан явный формат `format="%Y-%m-%d"`, чтобы значение из БД выводилось в виде, ожидаемом HTML5 (YYYY-MM-DD). Для редактирования заказов используются отдельные formset-классы с `extra=0`: при открытии формы показываются только сохранённые строки; новая строка добавляется по кнопке «+ Добавить строку». + +**Изменения**: documents/forms.py (format для всех DateInput; CustomerOrderItemFormSetUpdate и SupplierOrderItemFormSetUpdate с extra=0), documents/views.py (импорт и использование *FormSetUpdate в Update-представлениях заказов). + +--- + ## 2025-02-25 23:45 UTC – Сохранение заказа: дата и табличная часть **Проблема**: При сохранении заказа клиента не сохранялись поле «Дата» и табличная часть (товары). diff --git a/app/documents/forms.py b/app/documents/forms.py index 6ce7216..3c59d68 100644 --- a/app/documents/forms.py +++ b/app/documents/forms.py @@ -41,6 +41,15 @@ CustomerOrderItemFormSet = inlineformset_factory( can_delete=True, ) +CustomerOrderItemFormSetUpdate = inlineformset_factory( + CustomerOrder, + CustomerOrderItem, + form=CustomerOrderItemForm, + fields=("product", "price", "currency", "quantity"), + extra=0, + can_delete=True, +) + SupplierOrderItemFormSet = inlineformset_factory( SupplierOrder, SupplierOrderItem, @@ -50,13 +59,22 @@ SupplierOrderItemFormSet = inlineformset_factory( can_delete=True, ) +SupplierOrderItemFormSetUpdate = inlineformset_factory( + SupplierOrder, + SupplierOrderItem, + form=SupplierOrderItemForm, + fields=("product", "price", "currency", "quantity"), + extra=0, + can_delete=True, +) + class CustomerOrderForm(forms.ModelForm): class Meta: model = CustomerOrder fields = ("date", "number", "order_kind", "organization", "client", "author") widgets = { - "date": forms.DateInput(attrs={"type": "date"}), + "date": forms.DateInput(attrs={"type": "date"}, format="%Y-%m-%d"), "number": forms.TextInput(attrs={"size": 15, "maxlength": 15}), } @@ -66,7 +84,7 @@ class SupplierOrderForm(forms.ModelForm): model = SupplierOrder fields = ("date", "number", "organization", "supplier", "currency", "rate", "author") widgets = { - "date": forms.DateInput(attrs={"type": "date"}), + "date": forms.DateInput(attrs={"type": "date"}, format="%Y-%m-%d"), "number": forms.TextInput(attrs={"size": 15, "maxlength": 15}), } @@ -76,7 +94,7 @@ class CashInflowForm(forms.ModelForm): model = CashInflow fields = ("date", "number", "recipient", "amount", "customer_order", "comment", "author") widgets = { - "date": forms.DateInput(attrs={"type": "date"}), + "date": forms.DateInput(attrs={"type": "date"}, format="%Y-%m-%d"), "number": forms.TextInput(attrs={"size": 15, "maxlength": 15}), } @@ -86,7 +104,7 @@ class CashTransferForm(forms.ModelForm): model = CashTransfer fields = ("date", "number", "sender", "recipient", "amount", "comment", "author") widgets = { - "date": forms.DateInput(attrs={"type": "date"}), + "date": forms.DateInput(attrs={"type": "date"}, format="%Y-%m-%d"), "number": forms.TextInput(attrs={"size": 15, "maxlength": 15}), } @@ -96,6 +114,6 @@ class CashExpenseForm(forms.ModelForm): model = CashExpense fields = ("date", "number", "sender", "amount", "supplier_order", "comment", "author") widgets = { - "date": forms.DateInput(attrs={"type": "date"}), + "date": forms.DateInput(attrs={"type": "date"}, format="%Y-%m-%d"), "number": forms.TextInput(attrs={"size": 15, "maxlength": 15}), } diff --git a/app/documents/views.py b/app/documents/views.py index e7ec0ea..94cf025 100644 --- a/app/documents/views.py +++ b/app/documents/views.py @@ -18,8 +18,10 @@ from .models import ( from .forms import ( CustomerOrderForm, CustomerOrderItemFormSet, + CustomerOrderItemFormSetUpdate, SupplierOrderForm, SupplierOrderItemFormSet, + SupplierOrderItemFormSetUpdate, CashInflowForm, CashTransferForm, CashExpenseForm, @@ -81,12 +83,12 @@ class CustomerOrderUpdate(LoginRequiredMixin, UpdateView): def get_context_data(self, **kwargs): ctx = super().get_context_data(**kwargs) - ctx["formset"] = CustomerOrderItemFormSet(instance=self.object) + ctx["formset"] = CustomerOrderItemFormSetUpdate(instance=self.object) ctx["title"] = "Заказ клиента" return ctx def form_valid(self, form): - formset = CustomerOrderItemFormSet(self.request.POST, instance=self.object) + formset = CustomerOrderItemFormSetUpdate(self.request.POST, instance=self.object) if formset.is_valid(): form.save() formset.save() @@ -150,12 +152,12 @@ class SupplierOrderUpdate(LoginRequiredMixin, UpdateView): def get_context_data(self, **kwargs): ctx = super().get_context_data(**kwargs) - ctx["formset"] = SupplierOrderItemFormSet(instance=self.object) + ctx["formset"] = SupplierOrderItemFormSetUpdate(instance=self.object) ctx["title"] = "Заказ поставщику" return ctx def form_valid(self, form): - formset = SupplierOrderItemFormSet(self.request.POST, instance=self.object) + formset = SupplierOrderItemFormSetUpdate(self.request.POST, instance=self.object) if formset.is_valid(): form.save() formset.save()