Sotish, hisobdan chiqarish va filiallararo ko'chirish
Tavsif
Texnik ko'rsatma
Agent uchun
Qabul mezonlari (DoD)
3 / 3 bajarildi
-
400 mln ga sotilgan (book 384 mln) aktivda −16 000 000 lik xarajat qatori (daromad) yoziladi (08 AC17)
qa-ep-12-t04-s04 · 1 о аввал
-
Sotilgandan keyin keyingi oylarga amortizatsiya yozilmaydi
qa-ep-12-t04-s04 · 1 о аввал
-
Ko'chirishdan keyin aktiv yangi node'da ko'rinadi, raqami va amortizatsiya jadvali o'zgarmaydi
qa-ep-12-t04-s04 · 1 о аввал
O'zgargan fayllar
14 ta
-
modified
src/test/java/uz/erpbom/finance/service/FixedAssetTransferServiceTest.java -
modified
src/test/java/uz/erpbom/finance/service/FixedAssetDisposalServiceTest.java -
modified
src/test/java/uz/erpbom/finance/controller/FixedAssetTransferControllerTest.java -
modified
src/main/java/uz/erpbom/finance/service/FixedAssetTransferService.java -
modified
src/main/java/uz/erpbom/finance/service/FixedAssetDisposalService.java -
modified
src/main/java/uz/erpbom/finance/repository/FixedAssetTransferRepository.java -
modified
src/main/java/uz/erpbom/finance/repository/FixedAssetRepository.java -
modified
src/main/java/uz/erpbom/finance/entity/FixedAssetTransfer.java -
modified
src/main/java/uz/erpbom/finance/dto/FixedAssetWriteOffRequest.java -
modified
src/main/java/uz/erpbom/finance/dto/FixedAssetTransferResponse.java -
modified
src/main/java/uz/erpbom/finance/dto/FixedAssetTransferRequest.java -
modified
src/main/java/uz/erpbom/finance/dto/FixedAssetDisposeRequest.java -
modified
src/main/java/uz/erpbom/finance/controller/FixedAssetTransferController.java -
modified
src/main/java/uz/erpbom/finance/controller/FixedAssetController.java
Izoh qoldirish
Tarix
22 yozuv
-
✎
finalize-ep-12 yangiladi
Yangilandi: pr_url
-
✎
pm-agent yangiladi
Yangilandi: estimate_hours
-
✎
pm-agent yangiladi
Yangilandi: estimate_hours
-
✎
team-lead-pm yangiladi
Yangilandi: estimate_hours
-
⇄
qa-ep-12-t04-s04 statusni o'zgartirdi Review → Bajarildi
-
💬
qa-ep-12-t04-s04 izoh qoldirdi
QA (izolyatsiyalangan worktree, 883fc25): O'TDI. Testlar: 25/25 yashil (TransferService 9 + DisposalService 9 + TransferController 7). Regressiya FixedAssetServiceTest+FixedAssetControllerTest+TransferControllerTest = 31/31 yashil. MUTATSIYA: 6/6 mutant O'LDIRILDI (yashil test dalil ekani tasdiqlandi): 1) jo'natishda organization_id:=to_org -> transferKeepsAssetInFromOrganizationUntilReceived:123 yiqildi; 2) qabulda organization_id yangilanmasligi -> receiveMovesAssetToToOrganizationAc4194:145; 3) sotuv farqi ishorasi teskari -> AC4192:140 + disposeWritesPositiveExpenseEntryForLoss:164; 4) book_value o'rniga acquisition_cost -> 3 ta test (loss + 2 write-off); 5) write-off da book_value=0 yozuvini o'tkazib yuborish -> writeOffWritesZeroAmountEntryWhenFullyDepreciated; 6) in_transit tekshiruvini olib tashlash -> receiveRejectsWhenAlreadyReceived (javap bilan tasdiqlandi: metod bytecode'da `0: return` ga aylangan). Spec §4.8 (Q63=A) muvofiqligi kod darajasida: jo'natish oyog'ida fixed_assets.organization_id O'ZGARMAYDI (Service:143-155, faqat fixed_asset_transfers qatori tug'iladi); organization_id FAQAT receive() da (Service:183). Holatlar faqat in_transit/received — pending_approval/rejected/cancelled va reject/cancel operatsiyasi kodda ham, enum'da ham, endpoint'da ham YO'Q; DB CHECK chk_fixed_asset_transfers_status ham ikki qiymat bilan cheklaydi. Ko'chirishda ledger_entries/pul harakati yozuvi yo'q (servisning bog'liqliklari: 2 repo + OrganizationService). Amortizatsiya in_transit da to'xtamaydi — test fixed_assets.status='active' qolishini tasdiqlaydi. Sotish/chiqarish: amount=book_value−disposal_amount (bitta ayirish, ishora to'g'ri); isCash=false, moneyMovementId=null, sourceType=fixed_assets; sotuvda to'lov yaratilmaydi; write-off da disposal_amount null, reason @NotBlank, amount=book_value musbat, book_value=0 da ham yozuv tug'iladi. active bo'lmagan aktiv -> 409 INVALID_STATUS_TRANSITION (ikkala amalda ham test bor). Fixture xilma-xilligi TEKSHIRILDI (EP-07 tuzog'i): accumulated_depreciation 0 / 10mln / 12mln / 5mln, book 384mln / 40mln / 18mln / 0, foyda +16mln va zarar −15mln alohida qiymatlar bilan. Aynan shu xilma-xillik 4-mutantni o'ldirdi (AC4192 testining o'zi accumulated=0 bo'lgani uchun uni o'tkazib yuborardi). Assertion'lar isEqualByComparingTo — qism-satr solishtiruvi yo'q. Kontrakt: FixedAssetTransferResponse 13 maydon, required [id, asset_id, from_organization_id, to_organization_id, transfer_date, status, created_at] to'liq, snake_case JSON kontroller testida tasdiqlangan; FixedAssetTransferStatus enum [in_transit, received] kodga mos. Migratsiya V45: snake_case, ko'plik, to'liq FK nomlari, tabiiy FK'lar, @Transactional (list readOnly=true), findByIdForUpdate ikkalasida PESSIMISTIC_WRITE. Eslatma (bargni bloklamaydi): sotuv farqi xarajat kategoriyasi spec'da nomlanmagan, vaqtincha "other" konstantasi — ochiq biznes savoli, worker-PM lead'ga uzatadi.
-
✓
qa-ep-12-t04-s04 qabul mezonini belgiladi
✓ Ko'chirishdan keyin aktiv yangi node'da ko'rinadi, raqami va amortizatsiya jadvali o'zgarmaydi
-
✓
qa-ep-12-t04-s04 qabul mezonini belgiladi
✓ Sotilgandan keyin keyingi oylarga amortizatsiya yozilmaydi
-
✓
qa-ep-12-t04-s04 qabul mezonini belgiladi
✓ 400 mln ga sotilgan (book 384 mln) aktivda −16 000 000 lik xarajat qatori (daromad) yoziladi (08 AC17)
-
⇄
coder-ep-12-t04-s04 statusni o'zgartirdi Ishlanyapti → Review
-
💬
coder-ep-12-t04-s04 izoh qoldirdi
SPEC BO'SHLIG'I (worker-PM 5-band ko'rsatmasi bo'yicha bloklanmadi, hal qilishga topshirilgan): aktiv SOTUVI farqi (qoida 49) uchun expense_categories.code na 08_finance.md da, na kontraktda nomlangan — R__finance_expense_categories_seed.sql dagi 16 koddan hech biri mos emas (write_off faqat hisobdan chiqarish uchun, other — umumiy zaxira). FixedAssetDisposalService.EXPENSE_CATEGORY_DISPOSAL_DIFFERENCE = "other" ga VAQTINCHA o'rnatildi (kod BITTA konstantada — javadocida to'liq izohlangan), hisobdan chiqarish uchun mavjud write_off ishlatildi. Testlar kategoriya KODINI emas, faqat yozuv mavjudligi/ishorasini tekshiradi — biznes qarori chiqqach ham yashil qoladi. Qolgan hamma ish (ko'chirish ikki oyoqli, dispose/write-off, testlar) to'liq bajarildi, 25/25 test yashil, commit 883fc25.
-
✎
coder-ep-12-t04-s04 yangiladi
Yangilandi: branch, commit_sha
-
✓
coder-ep-12-t04-s04 qabul mezonini belgiladi
✓ Ko'chirishdan keyin aktiv yangi node'da ko'rinadi, raqami va amortizatsiya jadvali o'zgarmaydi
-
✓
coder-ep-12-t04-s04 qabul mezonini belgiladi
✓ Sotilgandan keyin keyingi oylarga amortizatsiya yozilmaydi
-
✓
coder-ep-12-t04-s04 qabul mezonini belgiladi
✓ 400 mln ga sotilgan (book 384 mln) aktivda −16 000 000 lik xarajat qatori (daromad) yoziladi (08 AC17)
-
📄
coder-ep-12-t04-s04 fayllarni qayd etdi
14 ta fayl qayd etildi
-
⇄
coder-ep-12-t04-s04 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
coder-ep-12-t04-s04 ishga oldi
-
💬
team-lead-pm izoh qoldirdi
✅ JAVOB KELDI (2026-09-07, §5 sikli) — Q63 = A: KO'CHIRISH IKKI QADAMLI. Oldingi izohdagi ochiq savol YOPILDI. Foydalanuvchi qarori: 09_auth to'g'ri, Q27 = A kuchda qoladi. Spec YANGILANDI (08_finance §2.9d qayta yozildi + 🆕 §4.8 holat mashinasi + jurnal Q63 + changelog); modul `done → doing` (katta tuzatish). BU BARG UCHUN: - Ko'chirish IKKI OYOQLI: jo'natish (`fixed_asset.transfer`, doira = jo'natuvchi node) → qabul (`fixed_asset.receive`, doira = qabul qiluvchi node). - `fixed_assets.organization_id` FAQAT QABULDA `to_organization_id` ga yangilanadi. Jo'natishda O'ZGARMAYDI (yo'ldagi aktiv ikki marta sanalmasin). - Holatlar: `in_transit` (default) → `received`. FAQAT SHU IKKISI. `pending_approval` YO'Q (tasdiq oyog'i yo'q), `rejected`/`cancelled` ham YO'Q — §7 da mos rule kodi ta'riflanmagan. Yangi holat O'YLAB TOPMA. - Amortizatsiya `in_transit` da ham to'xtamaydi (§4.8). - DDL (`status`, `received_by_user_id`, `received_at`) EP-12-T01-S02 da yoziladi — bu yerda qayta yozma. ⚠️ KONTRAKT HALI TUZATILMAGAN: `/api/v1/fixed-assets/{id}/transfers/{tid}/receive` yo'li finance.yaml da YO'Q. Lead uni T01 worker'i erpbom-backend'ni bo'shatgach tuzattiradi (bitta repo — bitta yozuvchi). Bu barg boshlanishidan oldin kontraktda `/receive` borligini TEKSHIR; yo'q bo'lsa lead'ga ayt, o'zing kontraktga YOZMA.
-
💬
team-lead-pm izoh qoldirdi
🔴 OCHIQ SPEC ZIDDIYATI — ko'chirish bir qadamlimi yoki ikki qadamli? 08_finance 2.9d: 'warehouse_transfers g'oyasi, lekin TASDIQ BOSQICHISIZ' — jadvalda holat ustuni yo'q. LEKIN o'sha bo'limning oxirgi bandi 'TASDIQDA fixed_assets.organization_id yangilanadi' deydi — bo'limning O'Z ICHIDA zid. 09_auth 7.2 (qator 2632): fixed_asset.receive rule'i 🆕 sifatida ATAYLAB qo'shilgan, sababi ochiq yozilgan — '7.4 qoidasi (qabul = alohida rule) warehouse_transfer va money_transfer da bor edi, aktivda TUSHIB QOLGAN (Q27 = A, 7.8d)'. Qator 2683 ham fixed_asset.transfer ni 'YARATISH/JO'NATISH' guruhiga qo'yadi (from ∈ scope) — jo'natish/qabul bo'linishini nazarda tutadi. Rule kodda seed qilingan. Kontrakt (EP-12-T00) 2.9d tomonini tanlab BIR QADAMLI yozdi — /receive endpoint YO'Q. Natijada fixed_asset.receive YETIM rule bo'lib qoldi (katalogda va seed'da bor, uni qo'riqlaydigan operatsiya yo'q). Final pass 3-bandi (rollar matritsasi) buni ushlaydi. Savol erp/ 5 sikliga uzatildi (2026-09-07). Javob kelmaguncha bu bargda ko'chirishni IKKI QADAMLI qilib O'ZBOSHIMCHALIK bilan yozma; kontrakt hozir bir qadamli.
-
💬
contract-ep-12 izoh qoldirdi
EP-12-T00 (kontrakt) eslatmasi — SPEC ICHIDA ZIDDIYAT, blok EMAS: ko'chirish kontraktda BIR QADAMLI yozildi — POST /api/v1/fixed-assets/{id}/transfers (fixed_asset.transfer), organization_id darhol yangilanadi. Sabab: §2.9d ochiq "tasdiq bosqichisiz" deydi va fixed_asset_transfers jadvalida holat/qabul ustuni YO'Q, ya'ni qabulni yozadigan joy yo'q. Ammo §7 va 09_auth §7.2 da fixed_asset.receive rule'i BOR ("qabul qiluvchi node"). /receive operatsiyasi ataylab yozilmadi (DB ustuni ham, rule qamrovi ham to'qilmadi). Savol erp/ §5 sikliga: fixed_asset.receive amalda ishlatiladimi (u holda §2.9d ga status + received_by/at kerak) yoki rule ortiqchami? Sotish/hisobdan chiqarish qismi to'liq kontraktda — barg shular bo'yicha bloksiz.
-
✦
pm-agent yaratdi
Sotish, hisobdan chiqarish va filiallararo ko'chirish
Ma'lumot
- Agent
- coder-ep-12-t04-s04
- Olingan
- 1 о аввал
- Boshlandi
- 07.09.2026 20:23
- Tugadi
- 07.09.2026 21:13
- Baho
- 6 soat
- Spec
- erp/docs/modules/08_finance.md#8.6
- Branch
- feat/EP-12-erpbom-backend
- Commit
- 883fc25a5f7d
Bog'liqliklar
Bundan oldin tugashi kerak
Yo'q — bu ish mustaqil.
Agent uchun
Bu ishni AI agent quyidagicha oladi:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-12-T04-S04/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-12-T04-S04/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'