name: stage-transfer
description: |
  Transfer (Перемещение) на test.admin.food-market.kz. Два склада в одной
  org, From != To, atomic post (TransferOut + TransferIn парой), Unpost
  без orphan-движений, edge — From==To, > остатка, multi-tenant.

preconditions:
  reset_db: false
  smoke_login_super_admin: false

steps:
  - id: tr01_setup
    title: 2 org. У org A — 2 склада + продукт с qty=100 на FromStore.
  - id: tr02_create_draft
    title: POST /api/inventory/transfers → 201, валидация From==To → 400
  - id: tr03_update_draft
    title: PUT с заменой строк → 204 (фикс EF8)
  - id: tr04_post_atomic
    title: POST /post → 204; FromStore.qty-=10; ToStore.qty+=10; пара StockMovement [TransferOut+TransferIn]
  - id: tr05_post_more_than_stock
    title: Если qty > available → 409 с conflicts, движения не создаются
  - id: tr06_unpost_no_orphan
    title: POST /unpost → 204; FromStore.qty восстановлен; ToStore.qty -= обратно; обе пары движений «отменены»
  - id: tr07_multi_tenant_isolation
    title: Org B не видит transfer org A
