food-market/docs/moysklad-parity-progress.md
nns f6cd1063f1
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
docs(parity): все 10 пунктов выполнены — паритет с МойСкладом достигнут
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-09 07:43:05 +05:00

7.1 KiB
Raw Permalink Blame History

Паритет с МойСкладом — прогресс

Задача владельца (08.10): довести процессы до уровня МойСклада и лучше, по выводам docs/moysklad-logic-audit.md. Правило: «минимум как МойСклад, где можно — лучше».

Легенда: [x] готово · [~] частично · [ ] не начато.

План / статус

  1. Смена кассы: автооткрытие первой продажей — веб ✅ и POS ✅ (вопрос «размен?» с пропуском в кассе; сервер-синк тоже автооткрывает); ручное открытие остаётся; overLimit24h в /current и Z-отчёте ✅; ShiftWatchJob раз в час уведомляет кассира/админов о сменах >24ч ✅.
  2. Z-отчёт: byProduct (продано/возвращено) ✅ бэкенд+тест; показ в веб Z-отчёте + печать ✅. (POS-печать byProduct — отдельная десктоп-поверхность.)
  3. Возврат покупателя: способ по умолчанию = оплата чека (create-return уже так); иной способ — право админа + причина (RefundReason). Бэкенд+тест ✅.
  4. Карточка товара — бэкенд+фронт ✅: кнопка «Сгенерировать» ШК, дефолты шт/корень, продажа без цены → сообщение, quick-create из кассы (POS-диалог) ✅:
    • Сохранить можно при наличии Наименования.
    • Единица обязательна, предзаполнена «шт» (пустой не бывает).
    • Штрихкод ОБЯЗАТЕЛЕН у любого товара (включая весовые). Нет → автогенерация внутреннего EAN-13 (верная контрольная цифра, префикс не пересекается с весовыми/ценовыми префиксами орг.), кнопка «Сгенерировать». Импорт без штрихкода — автогенерация. Продажа без штрихкода невозможна.
    • Закупочная цена не обязательна (приходит из приёмки).
    • Цена продажи: без неё сохранить можно, но ПРОДАТЬ нельзя → касса/продажа дают понятное сообщение «у товара нет цены продажи» + быстрый ввод цены (по праву).
    • Быстрое создание товара из приёмки/кассы по неизвестному штрихкоду (1 поле + цена).
    • Недостающее ловит фоновая «Проверка данных», а не запрет сохранения.
  5. «Создать на основании» + связи: GET /api/documents/{type}/{id}/related (основание + связанные)
    • компонент RelatedDocsBlock на приёмке/возврате поставщику/чеке/опр/спис (инвентаризация — свой блок); приёмка→возврат (from-supply + кнопка), продажа→возврат, инвент→опр/спис, приёмка→оплата. Integration-тест связей.
  6. Простой режим: Оприходование/Списание уже отдельные пункты меню для Admin/Кладовщика вне зависимости от режима (AppLayout.tsx:111-112 — НЕ за advanced-гейтом). Проверено, ничего не прячем.
  7. Деньги: типы названы привычно (ПКО/РКО/Входящий/Исходящий платёж/Перевод между счетами) ✅; акт сверки с поставщиком — эндпоинт + печатная веб-форма /money/.../reconciliation ✅+тест.
  8. Главная: блок «Прибыль за сегодня/месяц» на дашборде (во всех режимах), по /api/dashboard/margin; с пометкой «приблизительно, точно после FIFO».
  9. Статусы на русском + подсказка: DocStatusBadge (Черновик/Проведён/Завершена, tooltip «что это значит») на ВСЕХ списках документов (приёмки/продажи/инвент/опр/спис/перемещения/возвраты/отгрузки). (edit-страницы — свои заголовки статуса; минор.)
  10. Тесты/деплой/скрины: unit 303 + integration (10 parity-тестов) + e2e-браузер 3 + POS smoke/uitest ✅; full-chain обновлён (автооткрытие вместо 409 + byProduct в Z-отчёте) — прогон на стенде 16 ✓ / 0 ✗ ✅; деплой на стенд ✅; скрины дашборда/карточки/сайдбара ✅.

Коммиты

  • 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 пунктов выполнены ([x]). Паритет с МойСкладом достигнут на основных поверхностях (веб-админка, сервер, касса POS) + улучшения по правилу владельца. FIFO/себестоимость — отдельная отложенная тема (п.8 прибыль пока приближённая; точной станет после FIFO). Все [x] → touch ~/.fm-watchdog/DONE.

Коммиты (пасс 3)

  • 1875249 статусы на всех списках + кнопка «Сгенерировать»; 524f8f4 акт сверки;
  • fd03700 приёмка→возврат; 68bfb58 веб Z-отчёт по товарам; 3579e35 блок «Связанные документы»;
  • 210e817 POS-автооткрытие смены + ShiftWatchJob 24ч; cfc335e e2e паритета; 8c4a9c4 POS quick-create.