food-market/docs/inventory-cancel-results-progress.md
nns ab416d720c
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(inventory): отмена результатов не удаляет проведённые документы
Было: unpost при проведённых связанных Оприходовании/Списании молча снимал их с
проведения и УДАЛЯЛ (204, номера исчезали). Хуже МойСклада, теряется история.

- unpost при ПРОВЕДЁННЫХ связанных → 409 с номерами О-/С- и текстом «Сначала
  отмените результаты». Если связанные только черновики — удаляем черновики
  (не влияли на остатки) и возвращаем инвентаризацию в черновик.
- Новое POST /{id}/cancel-results (InventoryEdit + EnterEdit/LossEdit): снимает
  связанные Оприходование/Списание с проведения, НЕ удаляя (остаются черновиками,
  видны в «Связанных документах», истории, аудите); остатки возвращаются; для
  Оприходования — гард на уход остатка в минус. Аудит InventoryCancelResults.
- Веб: кнопка «Отменить результаты» (при проведённых связанных) + диалог со
  списком документов и влиянием на остатки; «Вернуть в черновик» переформулирован.
- docs/mobile-api.md: unpost больше не удаляет проведённые (409), добавлен cancel-results.
- Тесты: integration (409 + cancel-results оставляет черновики + повторное
  проведение) + full-chain шаг 10.

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

2 KiB
Raw Blame History

Отмена инвентаризации не должна удалять проведённые документы

Mac-Claude на стенде 08.10: POST /api/inventory/inventories/{id}/unpost при ПРОВЕДЁННЫХ связанных Оприходовании/Списании молча снимает их с проведения и УДАЛЯЕТ (204, номера О-/С- исчезают). Хуже МойСклада (там связанные отменяют вручную, история сохраняется). Правило владельца: «всегда как минимум как в МойСкладе, или лучше».

План / статус

  1. unpost при ПРОВЕДЁННЫХ связанных → 409 с текстом и номерами О-/С-. Если связанные только черновики — вернуть в черновик, черновики удалить (не влияли на остатки).
  2. Новое POST …/{id}/cancel-results (InventoryEdit + EnterEdit/LossEdit): снимает связанные Оприходование/Списание с проведения, НЕ удаляя (остаются черновиками, видны в истории/аудите).
  3. Веб: кнопка «Отменить результаты» + диалог (перечислить документы и влияние на остатки).
  4. Мобильное API: старый unpost больше НЕ удаляет проведённые → тот же 409; docs/mobile-api.md.
  5. Аудит: снятие с проведения связанных документов — кто/когда/из какой инвентаризации.
  6. Тесты unit/integration + full-chain шаг 10; деплой на стенд.

Что НЕ трогаем

Прод, shared-postgres, global.json, gateway nginx, sklad.

Журнал

  • 08.10 — старт: разбор текущего unpost, план.