food-market/docs/moysklad-parity-progress.md
nns 0ca0d6cc3b
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
feat(catalog): карточка товара как МойСклад+ — обязательно только наименование
Правки владельца 08.10 (п.4 паритета):
- Сохранить можно при наличии Наименования. Единица не обязательна в запросе →
  дефолт «шт»; группа → корень. Штрихкод ОБЯЗАТЕЛЕН у любого товара: нет в запросе/
  импорте → автогенерация внутреннего EAN-13 (верная контр. цифра, префикс не
  пересекается с весовыми/ценовыми префиксами орг. — InternalBarcode).
- Цена продажи не обязательна для сохранения; но ПРОДАТЬ без неё нельзя — касса и
  розничная продажа дают «У товара «X» нет цены продажи» (можно ввести вручную).
- Быстрое создание из кассы/приёмки: POST /api/catalog/products/quick (имя + опц.
  штрихкод/цена/весовой).
- Снят FluentValidation NotEqual(Guid.Empty) на единицу (контроллер подставляет дефолт).

Тесты: unit InternalBarcode 3/3 (валидный EAN-13, не парсится как весовой, обходит
префиксы); integration 3/3 (создание по одному имени, продажа без цены → 400, quick).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-09 05:45:38 +05:00

41 lines
4.1 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. [ ] **Смена кассы**: автооткрытие первой продажей/внесением (вопрос «размен?», можно пропустить);
ручное открытие остаётся; длительность >24ч — предупреждение кассиру/админу + отметка в отчёте.
POS + веб.
2. [ ] **Z-отчёт**: разбивка по товарам (кол-во, выручка, возвраты) + печать.
3. [ ] **Возврат покупателя**: способ возврата = способ оплаты исходного чека по умолчанию; другой —
только по праву администратора, с причиной.
4. [ ] **Карточка товара** (правки владельца перекрывают аудит):
- Сохранить можно при наличии Наименования.
- Единица обязательна, предзаполнена «шт» (пустой не бывает).
- **Штрихкод ОБЯЗАТЕЛЕН** у любого товара (включая весовые). Нет → автогенерация внутреннего
EAN-13 (верная контрольная цифра, префикс не пересекается с весовыми/ценовыми префиксами орг.),
кнопка «Сгенерировать». Импорт без штрихкода — автогенерация. Продажа без штрихкода невозможна.
- Закупочная цена не обязательна (приходит из приёмки).
- Цена продажи: без неё сохранить можно, но ПРОДАТЬ нельзя → касса/продажа дают понятное
сообщение «у товара нет цены продажи» + быстрый ввод цены (по праву).
- Быстрое создание товара из приёмки/кассы по неизвестному штрихкоду (1 поле + цена).
- Недостающее ловит фоновая «Проверка данных», а не запрет сохранения.
5. [ ] **«Создать на основании» + связи** — сквозной механизм для всех документов; блок «Связанные
документы» и «На основании …» везде (инвентаризация — уже).
6. [ ] **Простой режим**: Оприходование/Списание остаются отдельными пунктами (НЕ прятать).
7. [ ] **Деньги**: единый журнал, но типы назвать привычно (ПКО/РКО/вх/исх платёж/перевод);
акт сверки с поставщиком (печать/PDF).
8. [ ] **Главная простого режима**: блок «Прибыль за сегодня/месяц» (точная — после FIFO).
9. [ ] **Статусы на русском**: Черновик / Проведён / Завершена + подсказка при наведении.
10. [ ] **Тесты** (unit/integration/e2e) по каждому пункту; full-chain; деплой; скриншоты.
## Коммиты
(заполняется по ходу)
## Что НЕ трогаем
Прод, shared-postgres, global.json, gateway nginx, sklad. FIFO/себестоимость — отдельная
отложенная тема (п.8 — точная прибыль после FIFO; пока приближённо по текущей себестоимости).