food-market/docs/moysklad-parity-progress.md
nns 9ca907ce47
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
docs(parity): пасс 2 — пп.2,7,9 закрыты; 1,5 продвинуты; 7 из 10 [x]
2026-10-09 06:55:51 +05:00

67 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Паритет с МойСкладом — прогресс
Задача владельца (08.10): довести процессы до уровня МойСклада и лучше, по выводам
`docs/moysklad-logic-audit.md`. Правило: «минимум как МойСклад, где можно — лучше».
Легенда: [x] готово · [~] частично · [ ] не начато.
## План / статус
1. [~] **Смена кассы**: автооткрытие первой веб-продажей ✅ (бэкенд+тест); overLimit24h в /current и
Z-отчёте ✅, предупреждение в вебе ✅. **Осталось:** автооткрытие на POS-синке (AcceptSales),
UI-вопрос «размен?», фоновое уведомление админу о >24ч.
2. [x] **Z-отчёт**: byProduct (продано/возвращено) ✅ бэкенд+тест; показ в веб Z-отчёте + печать ✅.
(POS-печать byProduct — отдельная десктоп-поверхность.)
3. [x] **Возврат покупателя**: способ по умолчанию = оплата чека (create-return уже так); иной способ —
право админа + причина (RefundReason). Бэкенд+тест ✅.
4. [x] **Карточка товара** — бэкенд+тесты ✅ (фронт-кнопка «Сгенерировать»/quick-create UI — осталось):
- Сохранить можно при наличии Наименования.
- Единица обязательна, предзаполнена «шт» (пустой не бывает).
- **Штрихкод ОБЯЗАТЕЛЕН** у любого товара (включая весовые). Нет → автогенерация внутреннего
EAN-13 (верная контрольная цифра, префикс не пересекается с весовыми/ценовыми префиксами орг.),
кнопка «Сгенерировать». Импорт без штрихкода — автогенерация. Продажа без штрихкода невозможна.
- Закупочная цена не обязательна (приходит из приёмки).
- Цена продажи: без неё сохранить можно, но ПРОДАТЬ нельзя → касса/продажа дают понятное
сообщение «у товара нет цены продажи» + быстрый ввод цены (по праву).
- Быстрое создание товара из приёмки/кассы по неизвестному штрихкоду (1 поле + цена).
- Недостающее ловит фоновая «Проверка данных», а не запрет сохранения.
5. [~] **«Создать на основании» + связи**: инвент→опр/спис ✅, продажа→возврат (create-return) ✅,
приёмка→оплата (SupplyPaymentSection) ✅, **приёмка→возврат поставщику** (from-supply + кнопка «Создать
возврат») ✅+тест. **Осталось:** единый компонент «Связанные документы» с обратными ссылками на всех edit-страницах.
6. [x] **Простой режим**: Оприходование/Списание уже отдельные пункты меню для Admin/Кладовщика вне
зависимости от режима (AppLayout.tsx:111-112 — НЕ за advanced-гейтом). Проверено, ничего не прячем.
7. [x] **Деньги**: типы названы привычно (ПКО/РКО/Входящий/Исходящий платёж/Перевод между счетами) ✅;
**акт сверки** с поставщиком — эндпоинт + печатная веб-форма /money/.../reconciliation ✅+тест.
8. [x] **Главная**: блок «Прибыль за сегодня/месяц» на дашборде (во всех режимах), по /api/dashboard/margin;
с пометкой «приблизительно, точно после FIFO».
9. [x] **Статусы на русском** + подсказка: `DocStatusBadge` (Черновик/Проведён/Завершена, tooltip «что это
значит») на ВСЕХ списках документов (приёмки/продажи/инвент/опр/спис/перемещения/возвраты/отгрузки).
(edit-страницы — свои заголовки статуса; минор.)
10. [~] **Тесты/деплой/скрины**: unit 303 + integration по пп.1–5,7 (7 parity-тестов зелёные) ✅; деплой на
стенд ✅; скрины дашборда/сайдбара ✅. **Осталось:** e2e-браузер по пунктам, full-chain обновить.
## Коммиты
- `0ca0d6c` — п.4 карточка товара (обяз. только наименование; штрихкод автоген; цена опц.; quick-create).
- `c777b5b` — п.3 возврат (способ по умолчанию = оплата чека; иной — право+причина).
- `ff4391d` — п.1 автооткрытие смены + п.2 Z-отчёт byProduct + 24ч.
- `0f1574d` — п.7 названия денег (ПКО/РКО) + п.8 прибыль на главной + п.9 статусы с подсказкой + п.6 проверен.
## Тесты
- unit: InternalBarcode 3/3; вся сьюта 303.
- integration: ProductCardParity 3/3, RetailReturnParity 1/1, MoneyModule auto-open+Z-отчёт 1/1.
- Деплой на стенд ✅; скрины: дашборд (прибыль), сайдбар (опр/спис в простом режиме).
## Осталось (честно, НЕ закрыто)
- **П.1/2 POS-сторона**: автооткрытие смены на POS-синке (AcceptSales), UI-вопрос «размен?», печать
Z-отчёта по товарам на кассе, фоновое уведомление админу о смене >24ч.
- **П.5**: единый компонент «Связанные документы» с обратными ссылками на всех edit-страницах
(сейчас: ссылки-основания в DTO, секция оплат приёмки, кнопка «Создать возврат», create-return).
- **П.4 POS/приёмка**: quick-create UI по неизвестному штрихкоду (бэкенд /products/quick готов).
- **П.10**: e2e-браузерные тесты по пунктам; обновить full-chain.
**DONE не ставим — остаются POS-сторона (1,2,4), единый блок связей (5), e2e/full-chain (10).**
## Коммиты (пасс 2)
- `1875249` — п.9 статусы на всех списках + п.4 кнопка «Сгенерировать» ШК.
- `524f8f4` — п.7 акт сверки с поставщиком (эндпоинт + печать).
- `<supply-return>` — п.5 кнопка «Создать возврат» на приёмке.
- `<zreport>` — п.1/2 веб Z-отчёт по товарам + предупреждение >24ч.