# E2E report: documents-edge

Запущен: 2026-05-26T07:02:13.560Z
Длительность: 3.1с

**Итог:** 10 ✓ / 0 ✗ / 0 ⚠ / 0 ◯ (всего 10)

## ✓ Step step01_bootstrap: SuperAdmin создаёт орг Test + admin, делаем product + supply (10 шт по 100 KZT)

Длительность: 1211мс

| Тип | Проверка | Результат |
|---|---|---|
| api | Орг + админ созданы | ✓ org=ddb8db28-039e-4f65-8f0d-62da5ce9c431 |
| api | Counterparty создан | ✓  |
| api | Product создан | ✓ 6d1eee5c-06aa-48a9-8690-b7dfbb7b6c3f |
| api | Supply Draft создана | ✓ e143e4b0-1278-41af-9f25-7a68630727b7 |

## ✓ Step step02_post_supply_stock_10: Supply провести: stock=10, ReferencePrice=100, Cost=100

Длительность: 86мс

| Тип | Проверка | Результат |
|---|---|---|
| api | Supply.Post → 200/204 | ✓ actual=204 |
| db | Stock.Quantity == 10 | ✓ qty=10 |

## ✓ Step step03_oversell_blocked: RetailSale qty=15 (больше остатка 10), POST /post возвращает 409

Длительность: 96мс

| Тип | Проверка | Результат |
|---|---|---|
| api | POST RetailSale Draft (qty=15) | ✓ actual=201 {"id":"5d3aad81-df91-459b-8a1c-bab9d7f1cc64","number":"ПР-2026-000001","date":"2026-05-26T07:02:16.056Z","status":0,"sto |
| api | POST /post → 409 (oversell) | ✓ actual=409 {"error":"Недостаточно остатка для проведения чека.","lines":[{"productId":"6d1eee5c-06aa-48a9-8690-b7dfbb7b6c3f","produ |

## ✓ Step step04_oversell_stock_unchanged: После заблокированного post stock остался 10, StockMovement не добавлен

Длительность: 267мс

| Тип | Проверка | Результат |
|---|---|---|
| db | Stock остался 10 после заблокированного post | ✓ qty=10 |
| db | Stock == Σ StockMovement (invariant) | ✓ sum=10 qty=10 |

## ✓ Step step05_payment_mismatch_blocked: RetailSale с PaidCash+PaidCard не равной Total отвергается на post

Длительность: 50мс

| Тип | Проверка | Результат |
|---|---|---|
| api | Платёж ≠ Total → 4xx на post | ✓ actual=400 {"error":"Сумма оплаты 300.00 меньше итога 400.00. Доплатите или измените позиции чека.","field":"PaidCash"} |

## ✓ Step step06_edit_posted_supply_blocked: PUT проведённой Supply (Posted) возвращает 409

Длительность: 65мс

| Тип | Проверка | Результат |
|---|---|---|
| api | PUT проведённой Supply → 409 | ✓ actual=409 {"error":"Только черновик может быть изменён. Сначала отмени проведение."} |

## ✓ Step step07_delete_posted_supply_blocked: DELETE проведённой Supply возвращает 409

Длительность: 34мс

| Тип | Проверка | Результат |
|---|---|---|
| api | DELETE проведённой Supply → 409 | ✓ actual=409 {"error":"Нельзя удалить проведённый документ. Сначала отмени проведение."} |

## ✓ Step step08_unpost_negative_blocked: После Sale qty=5 unpost Supply qty=10 возвращает 409 (stock минус)

Длительность: 153мс

| Тип | Проверка | Результат |
|---|---|---|
| api | Sale qty=5 проведён | ✓ actual=204 |
| api | Unpost Supply при stock<unpost-qty → 409 | ✓ actual=409 {"error":"Нельзя отменить проведение: остаток уйдёт в минус (часть товара уже расходована).","lines":[{"productId":"6d1e |

## ✓ Step step09_barcode_unique_within_org: Дубль штрихкода в одной орге, POST второго product отвергается

Длительность: 16мс

| Тип | Проверка | Результат |
|---|---|---|
| api | POST product с тем же barcode → 4xx | ✓ actual=400 {"error":"Штрихкод 208935890undefined5 уже используется товаром «Edge Product 1779778933560»."} |

## ✓ Step step10_barcode_per_tenant: Тот же штрихкод в другой орге допустим (per-tenant unique)

Длительность: 1085мс

| Тип | Проверка | Результат |
|---|---|---|
| api | POST product с тем же barcode в другой орге → 201 | ✓ actual=201 {"id":"4bd355b5-11d0-4170-ab38-2ab2d885c725","name":"Tenant-2 product (same barcode)","article":"1","description":null," |
| db | В product_barcodes 2 записи с этим Code (одна на орг) | ✓ count=2 |

## Summary

- Passed: 10
- Failed: 0
- Warnings: 0
- Skipped: 0

## Critical bugs

Нет.
