Fix: сохранение даты и табличной части заказа (корректный префикс formset items-N)

Made-with: Cursor
This commit is contained in:
2026-02-26 13:17:09 +00:00
parent a2577ed3eb
commit 319f38ea05
4 changed files with 24 additions and 12 deletions

View File

@@ -1,5 +1,17 @@
# История изменений ERP WaterSurf
## 2025-02-25 23:45 UTC Сохранение заказа: дата и табличная часть
**Проблема**: При сохранении заказа клиента не сохранялись поле «Дата» и табличная часть (товары).
**Причина**: В JavaScript переиндексация строк и клонирование использовали неверный формат имён полей formset: префикс в Django — `items` (related_name), имена имеют вид `items-0-product`, `items-1-price`. В коде искали `items0`, `items1` (без дефиса), из‑за чего переиндексация не срабатывала, клоны получали те же имена `items-0-*`, при отправке дубликаты перезаписывали друг друга и formset обрабатывал только одну строку. При ошибке валидации formset в контекст не передавался обновлённый formset с ошибками.
**Решение**: В reindexRows и при клонировании строк используется корректный формат: `prefix + '-\\d+'` для индекса (например `items-0`), замена на `prefix + '-' + i`; при клонировании — `prefix + '-\\d+-'` для совпадения с суффиксом поля. При невалидном formset в контекст передаётся `formset=formset`, чтобы на форме отображались ошибки.
**Изменения**: order_form.html, supplier_order_form.html (регулярные выражения в reindexRows и в обработчике «Добавить строку»), documents/views.py (передача formset в get_context_data при ошибке валидации для заказов клиента и поставщику).
---
## 2025-02-25 23:30 UTC Поле Цена: разделители числа, без стрелок в Цена и Количество
**Проблема**: В поле «Цена» не было разделителей разрядов; стрелки вверх/вниз в полях «Цена» и «Количество» мешали.