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
Правки владельца 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>
41 lines
4.1 KiB
Markdown
41 lines
4.1 KiB
Markdown
# Паритет с МойСкладом — прогресс
|
||
|
||
Задача владельца (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; пока приближённо по текущей себестоимости).
|