food-market/src
nns d49b586904
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
Docker Web / Build + push Web (push) Waiting to run
Docker Web / Deploy Web on stage (push) Blocked by required conditions
feat(stock): фильтры остатков «В наличии / Нулевые / В минусе» (states, объединение ИЛИ)
Поручение владельца (задача 11): галочки состояния остатка объединяются (ИЛИ),
группа/склад/поиск сужают (И). Пусто → positive+negative (нулевые скрыты).

- API StockController: параметр states (positive|zero|negative; через запятую или
  повтором) на /api/inventory/stock и /stock/export. Один WHERE:
  (positive И qty>0) ИЛИ (zero И qty=0) ИЛИ (negative И qty<0) — по остатку
  (COALESCE подзапрос; товар без строки Stock = 0). total/пагинация/сортировка
  корректны. Старые includeZero/negativeOnly оставлены для совместимости
  (includeZero ≡ все три; negativeOnly ≡ negative); states приоритетнее.
- Веб-админка StockPage: три галочки «В наличии» (>0), «Нулевые» (=0), «В минусе»
  (<0) вместо прежних двух; состояние в URL (states=…), экспорт учитывает галочки.
  Ссылки NegativeStockBanner/OverdueNegativeStockBlock/NotificationCenter на
  минусовые → states=negative.
- Интеграционный тест: сочетания (zero; negative; positive; zero+negative;
  +группа; все три = весь каталог; пусто = positive+negative; со складом) и
  числовые тождества (positive+negative=пусто; positive+zero+negative=весь
  каталог) + совместимость старых флагов. 1/1 зелёный (EF8 переводит предикат).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 18:29:31 +05:00
..
food-market.api feat(stock): фильтры остатков «В наличии / Нулевые / В минусе» (states, объединение ИЛИ) 2026-10-11 18:29:31 +05:00
food-market.application fix(sales): дата чека в UTC + защита от «будущих» времён 2026-10-09 09:58:34 +05:00
food-market.domain feat(migration): документный мигратор МойСклад (приёмки) + externalId на документах 2026-10-09 13:53:52 +05:00
food-market.infrastructure perf(stock-report): покрывающий индекс движений (Phase45) — отчёт остатков 2.4с→1.1с на реальном объёме 2026-10-09 21:29:27 +05:00
food-market.pos fix(pos): автопоиск весов не виснет на Bluetooth-портах (реальный баг на кассе 11.10) 2026-10-11 09:03:45 +05:00
food-market.pos.core fix(pos): автопоиск весов не виснет на Bluetooth-портах (реальный баг на кассе 11.10) 2026-10-11 09:03:45 +05:00
food-market.pos.hwcheck docs(pos): фикс автопоиска весов (Bluetooth) проверен на Win11 + --autofind 2026-10-11 09:09:37 +05:00
food-market.public fix(site): хвосты круга 2 — kb/quickstart, дубль H1 в блоге, 100k, перенос строки 2026-10-11 01:33:34 +05:00
food-market.shared fix: внутренний ШК 2x (не 02/ведущий-0) + разовый прогон «Проверки данных» при старте 2026-10-09 12:45:17 +05:00
food-market.web feat(stock): фильтры остатков «В наличии / Нулевые / В минусе» (states, объединение ИЛИ) 2026-10-11 18:29:31 +05:00