Qabul (`receive`) — qatlamlarni tannarx bilan qayta yaratish (§8.2-B)
Tavsif
Qabul mezonlari (DoD)
4 / 4 bajarildi
-
3@100 + 7@110 qatlamli jo'natish qabul qilinganda qabul omborida ikkita partiya paydo bo'ladi (3 ta 100 tannarxda, 7 ta 110 tannarxda) va umumiy zaxira qiymati 1 070 saqlanadi
qa-ep-04-t05-s03 · 1 о аввал
-
Qabul so'rovida miqdor uzatilmaydi (kontraktda ham yo'q); qabuldan keyin `stock.qty_on_hand` aniq jo'natilgan miqdorga oshadi
qa-ep-04-t05-s03 · 1 о аввал
-
Qabul partiyalarining `received_at` = qabul vaqti (original kirim sanasi ko'chirilmaydi)
qa-ep-04-t05-s03 · 1 о аввал
-
Qabuldan keyin in-transit qiymat 0 ga tushadi va `Σ total_cost` (transfer_out) = `Σ total_cost` (transfer_in)
qa-ep-04-t05-s03 · 1 о аввал
O'zgargan fayllar
7 ta
-
modified
src/test/java/uz/erpbom/warehouse/controller/WarehouseTransferShipIntegrationTest.java -
modified
src/test/java/uz/erpbom/warehouse/controller/WarehouseTransferReceiveIntegrationTest.java -
modified
src/main/java/uz/erpbom/warehouse/repository/StockMovementRepository.java -
modified
src/main/java/uz/erpbom/warehouse/dto/WarehouseTransferResponse.java -
modified
src/main/java/uz/erpbom/warehouse/controller/WarehouseTransferController.java -
modified
src/main/java/uz/erpbom/warehouse/service/WarehouseTransferService.java -
modified
src/main/java/uz/erpbom/warehouse/service/WarehouseTransferReceivePoster.java
Izoh qoldirish
Tarix
18 yozuv
-
✎
finalize-ep-04 yangiladi
Yangilandi: commit_sha, pr_url
-
⇄
qa-ep-04-t05-s03 statusni o'zgartirdi Review → Bajarildi
-
✓
qa-ep-04-t05-s03 qabul mezonini belgiladi
✓ Qabuldan keyin in-transit qiymat 0 ga tushadi va `Σ total_cost` (transfer_out) = `Σ total_cost` (transfer_in)
-
✓
qa-ep-04-t05-s03 qabul mezonini belgiladi
✓ Qabul partiyalarining `received_at` = qabul vaqti (original kirim sanasi ko'chirilmaydi)
-
✓
qa-ep-04-t05-s03 qabul mezonini belgiladi
✓ Qabul so'rovida miqdor uzatilmaydi (kontraktda ham yo'q); qabuldan keyin `stock.qty_on_hand` aniq jo'natilgan miqdorga oshadi
-
✓
qa-ep-04-t05-s03 qabul mezonini belgiladi
✓ 3@100 + 7@110 qatlamli jo'natish qabul qilinganda qabul omborida ikkita partiya paydo bo'ladi (3 ta 100 tannarxda, 7 ta 110 tannarxda) va umumiy zaxira qiymati 1 070 saqlanadi
-
⇄
coder-ep-04-t05-s03 statusni o'zgartirdi Ishlanyapti → Review
-
✎
coder-ep-04-t05-s03 yangiladi
Yangilandi: branch, commit_sha
-
💬
coder-ep-04-t05-s03 izoh qoldirdi
receive (in_transit->received) implemented: WarehouseTransferReceivePoster iterates this transfer's transfer_out movements (StockMovementRepository.findByMovementType...OrderByProductVariantIdAscConditionAscIdAsc) and calls StockInPoster.post per FIFO layer (sourceType=transfer, totalCost=movement.total_cost exactly, received_at=now via StockInPoster). WarehouseTransferService.receive follows the ship retry/TransactionTemplate composability pattern (renamed SHIP_* retry constants to generic LOCK_* since ship+receive now share them). Double-receive closed via findByIdAndDeletedAtIsNullForUpdate (status check after lock). Deadlock (T02 hand-off): two different transfers shipped in reversed variant order into the SAME destination warehouse, concurrent receive -> verified via pg_stat_database.deadlocks delta + server log, zero deadlocks. Extra scope per worker-pm mid-task message: cancel() had the same unlocked-read defect ship had pre-S02 fix -> concurrent cancel+ship could leave stock shipped with document cancelled (§8.2-C violated). Fixed cancel() to use findByIdAndDeletedAtIsNullForUpdate + setLockTimeoutForCurrentTransaction, status check after lock. Added concurrentCancelAndShipRaceNeverLeavesStockShippedWithCancelledDocument to WarehouseTransferShipIntegrationTest. Tests (all green, DB-backed Testcontainers, run synchronously): WarehouseTransferReceiveIntegrationTest 6/6, WarehouseTransferShipIntegrationTest 7/7 (incl new cancel-race), WarehouseTransferControllerIntegrationTest 11/11 (S01 regression). Commit 25ea4bc on feat/EP-04-erpbom-backend. openapi/v1/warehouse.yaml left untouched (team-lead staged, excluded via explicit pathspec commit).
-
✓
coder-ep-04-t05-s03 qabul mezonini belgiladi
✓ Qabuldan keyin in-transit qiymat 0 ga tushadi va `Σ total_cost` (transfer_out) = `Σ total_cost` (transfer_in)
-
✓
coder-ep-04-t05-s03 qabul mezonini belgiladi
✓ Qabul partiyalarining `received_at` = qabul vaqti (original kirim sanasi ko'chirilmaydi)
-
✓
coder-ep-04-t05-s03 qabul mezonini belgiladi
✓ Qabul so'rovida miqdor uzatilmaydi (kontraktda ham yo'q); qabuldan keyin `stock.qty_on_hand` aniq jo'natilgan miqdorga oshadi
-
✓
coder-ep-04-t05-s03 qabul mezonini belgiladi
✓ 3@100 + 7@110 qatlamli jo'natish qabul qilinganda qabul omborida ikkita partiya paydo bo'ladi (3 ta 100 tannarxda, 7 ta 110 tannarxda) va umumiy zaxira qiymati 1 070 saqlanadi
-
📄
coder-ep-04-t05-s03 fayllarni qayd etdi
7 ta fayl qayd etildi
-
⇄
coder-ep-04-t05-s03 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
coder-ep-04-t05-s03 ishga oldi
-
🔗
pm-agent bog'liqlik qo'shdi
→ EP-04-T05-S02
-
✦
pm-agent yaratdi
Qabul (`receive`) — qatlamlarni tannarx bilan qayta yaratish (§8.2-B)
Ma'lumot
- Agent
- coder-ep-04-t05-s03
- Olingan
- 1 о аввал
- Boshlandi
- 21.08.2026 03:09
- Tugadi
- 21.08.2026 03:51
- Baho
- 4 soat
- Spec
- erp/docs/modules/03_warehouse.md#6.3
- Branch
- feat/EP-04-erpbom-backend
- Commit
- b6685d9b9b72
Bog'liqliklar
Bundan oldin tugashi kerak
Agent uchun
Bu ishni AI agent quyidagicha oladi:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-04-T05-S03/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-04-T05-S03/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'