7.3 KiB
7.3 KiB
Паритет с МойСкладом — прогресс
Задача владельца (08.10): довести процессы до уровня МойСклада и лучше, по выводам
docs/moysklad-logic-audit.md. Правило: «минимум как МойСклад, где можно — лучше».
Легенда: [x] готово · [~] частично · [ ] не начато.
План / статус
- Смена кассы: автооткрытие первой продажей — веб ✅ и POS-синк ✅ (подбор Cash-счёта точки, размен 0); ручное открытие остаётся; overLimit24h в /current и Z-отчёте ✅; ShiftWatchJob раз в час уведомляет кассира/админов о сменах >24ч ✅. (POS-десктоп prompt «размен?» — nicety; сервер открывает с 0.)
- Z-отчёт: byProduct (продано/возвращено) ✅ бэкенд+тест; показ в веб Z-отчёте + печать ✅. (POS-печать byProduct — отдельная десктоп-поверхность.)
- Возврат покупателя: способ по умолчанию = оплата чека (create-return уже так); иной способ — право админа + причина (RefundReason). Бэкенд+тест ✅.
- Карточка товара — бэкенд+фронт ✅: кнопка «Сгенерировать» ШК, дефолты шт/корень, продажа без цены → сообщение, quick-create из кассы (POS-диалог) ✅:
- Сохранить можно при наличии Наименования.
- Единица обязательна, предзаполнена «шт» (пустой не бывает).
- Штрихкод ОБЯЗАТЕЛЕН у любого товара (включая весовые). Нет → автогенерация внутреннего EAN-13 (верная контрольная цифра, префикс не пересекается с весовыми/ценовыми префиксами орг.), кнопка «Сгенерировать». Импорт без штрихкода — автогенерация. Продажа без штрихкода невозможна.
- Закупочная цена не обязательна (приходит из приёмки).
- Цена продажи: без неё сохранить можно, но ПРОДАТЬ нельзя → касса/продажа дают понятное сообщение «у товара нет цены продажи» + быстрый ввод цены (по праву).
- Быстрое создание товара из приёмки/кассы по неизвестному штрихкоду (1 поле + цена).
- Недостающее ловит фоновая «Проверка данных», а не запрет сохранения.
- «Создать на основании» + связи:
GET /api/documents/{type}/{id}/related(основание + связанные)- компонент
RelatedDocsBlockна приёмке/возврате поставщику/чеке/опр/спис (инвентаризация — свой блок); приёмка→возврат (from-supply + кнопка), продажа→возврат, инвент→опр/спис, приёмка→оплата. Integration-тест связей.
- компонент
- Простой режим: Оприходование/Списание уже отдельные пункты меню для Admin/Кладовщика вне зависимости от режима (AppLayout.tsx:111-112 — НЕ за advanced-гейтом). Проверено, ничего не прячем.
- Деньги: типы названы привычно (ПКО/РКО/Входящий/Исходящий платёж/Перевод между счетами) ✅; акт сверки с поставщиком — эндпоинт + печатная веб-форма /money/.../reconciliation ✅+тест.
- Главная: блок «Прибыль за сегодня/месяц» на дашборде (во всех режимах), по /api/dashboard/margin; с пометкой «приблизительно, точно после FIFO».
- Статусы на русском + подсказка:
DocStatusBadge(Черновик/Проведён/Завершена, tooltip «что это значит») на ВСЕХ списках документов (приёмки/продажи/инвент/опр/спис/перемещения/возвраты/отгрузки). (edit-страницы — свои заголовки статуса; минор.) - [~] Тесты/деплой/скрины: unit 303 + integration (9 parity-тестов) + e2e-браузер 3 ✅; деплой на стенд ✅; скрины дашборда/карточки. Осталось: обновить 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.
- Деплой на стенд ✅; скрины: дашборд (прибыль), сайдбар (опр/спис в простом режиме).
Осталось (честно, НЕ закрыто)
- П.10: обновить сценарий full-chain под новые правила (автооткрытие смены, продажа без цены, штрихкод-автоген, статусы) — остальное по тестам закрыто (unit 303 + 9 integration + 3 e2e).
- POS-десктоп niceties: prompt «размен в кассе?» при автооткрытии (сервер уже открывает с 0); разбивка по товарам в Z-отчёте на термопечати кассы (в веб-Z-отчёте уже есть). DONE не ставим — остаётся full-chain (п.10) и две POS-десктоп мелочи.
Коммиты (пасс 3)
1875249статусы на всех списках + кнопка «Сгенерировать»;524f8f4акт сверки;fd03700приёмка→возврат;68bfb58веб Z-отчёт по товарам;3579e35блок «Связанные документы»;210e817POS-автооткрытие смены + ShiftWatchJob 24ч;cfc335ee2e паритета;8c4a9c4POS quick-create.