Sub-task EP-11-T01-S04 Kritik 08_finance erpbom-backend

V41 — money_transfers + cash_counts + external_drivers

Bajarildi
Status:

Tavsif

Pul o'tkazmasi va valyuta konvertatsiyasi hujjati (§2.11), kassa sanog'i (§2.14) va ko'cha shafyori anketasi (§2.15).

Texnik ko'rsatma

Agent uchun

* `money_transfers`: `transfer_type` (`internal|conversion`), `from_account_id`/`to_account_id` (`≠` CHECK), `amount_from`/`amount_to`, `exchange_rate` (faqat `conversion` da NOT NULL), `status` (`draft|pending_approval|in_transit|received|rejected|cancelled`), `approved_by_user_id`, `received_by_user_id`, `rejected_reason`, `transfer_group_id uuid`, `period_id`. * ⛔ CHECK: qabul qiluvchi hisob turi `bank` bo'la olmaydi (Q16 (1) + Q28) — bu tekshiruv ilova qatlamida ham takrorlanadi (DB da FK orqali turga yetib bo'lmasa, servis darajasida). * `cash_counts`: `money_account_id` (faqat `cash` — servis tekshiradi), `system_amount`, `counted_amount`, `difference`, `resolution` (`employee_debt|expense|income`, farq ≠ 0 bo'lsa majburiy), `adjustment_movement_id`, `period_id`. * `external_drivers`: `organization_id` ustuni **YO'Q** (tenant-umumiy — §2.15), `active` soft-delete.

Qabul mezonlari (DoD)

3 / 3 bajarildi

  • `from_account_id = to_account_id` bo'lgan o'tkazma yozib bo'lmaydi

    qa-ep-11-t01-s04 · 1 о аввал

  • `transfer_type='conversion'` da `exchange_rate` NULL bo'lsa rad etiladi

    qa-ep-11-t01-s04 · 1 о аввал

  • Migratsiya toza bazada o'tadi va idempotent

    qa-ep-11-t01-s04 · 1 о аввал

O'zgargan fayllar

2 ta

  • modified src/test/java/uz/erpbom/finance/MoneyTransfersCashCountsExternalDriversMigrationTest.java
  • modified src/main/resources/db/migration/V41__money_transfers_cash_counts_external_drivers.sql

Izoh qoldirish

Tarix

26 yozuv

  • ✎

    pm-agent yangiladi

    Yangilandi: estimate_hours

  • ✎

    pm-agent yangiladi

    Yangilandi: estimate_hours

  • ✎

    team-lead-pm yangiladi

    Yangilandi: estimate_hours

  • ✎

    finalize-ep-11 yangiladi

    Yangilandi: pr_url

  • ⇄

    qa-ep-11-t01-s04 statusni o'zgartirdi Review → Bajarildi

  • 💬

    qa-ep-11-t01-s04 izoh qoldirdi

    QA (mustaqil tekshiruv, izolyatsiyalangan worktree). Baseline 41/41 yashil. Mutatsiya: 9 mutant — 7 oldi, 2 TIRIK QOLDI (fixture xilma-xilligi). (1) chk_money_transfers_accounts_distinct ni `transfer_type <> internal OR ...` ga toraytirganda birorta test yiqilmadi — 4037 faqat internal+bank+UZS+draft kombinatsiyasida sinalgan edi. (2) chk_cash_counts_notes_required_on_difference ni `difference <= 0 OR ...` ga toraytirganda ham birorta test yiqilmadi — notes majburiyligi faqat MUSBAT farqda (ortiqcha) sinalgan edi. Ikkala boshliqqa test yozildi: conversionWithSameAccountIsRejected (conversion+cash+USD+pending_approval) va shortageWithoutNotesIsRejected (manfiy farq, USD, resolution=expense). Qayta mutatsiyada ikkalasi mutantni oldirdi. Yakuniy: 43/43 yashil, V41 SQL asl holida (diff bosh), MUTANT qoldigi yoq. Barcha assertThatThrownBy xabarlaridagi constraint nomlari kozlangan constraint ekani alohida tekshirildi (zeroAmountFromIsRejected da amount_from/amount_to CHECKlari ikkalasi buziladi, lekin mutant baribir oladi). technical_notes: transfer_group_id uuid ustuni SQL da bor, ammo birorta test uni qamramaydi (AC emas — kichik kuzatuv, keyingi S/entity bosqichida yopilsin). ASOSIY DARAXTGA KOCHIRILDI: /var/www/apps/erpbom-backend/src/test/java/uz/erpbom/finance/MoneyTransfersCashCountsExternalDriversMigrationTest.java (+49 qator, commit qilinmagan).

  • ✓

    qa-ep-11-t01-s04 qabul mezonini belgiladi

    ✓ Migratsiya toza bazada o'tadi va idempotent

  • ✓

    qa-ep-11-t01-s04 qabul mezonini belgiladi

    ✓ `transfer_type='conversion'` da `exchange_rate` NULL bo'lsa rad etiladi

  • ✓

    qa-ep-11-t01-s04 qabul mezonini belgiladi

    ✓ `from_account_id = to_account_id` bo'lgan o'tkazma yozib bo'lmaydi

  • ✎

    coder-ep-11-t01-s04 yangiladi

    Yangilandi: branch, commit_sha

  • ⇄

    coder-ep-11-t01-s04 statusni o'zgartirdi Ishlanyapti → Review

  • ✓

    coder-ep-11-t01-s04 qabul mezonini belgiladi

    ✓ Migratsiya toza bazada o'tadi va idempotent

  • ✓

    coder-ep-11-t01-s04 qabul mezonini belgiladi

    ✓ `transfer_type='conversion'` da `exchange_rate` NULL bo'lsa rad etiladi

  • ✓

    coder-ep-11-t01-s04 qabul mezonini belgiladi

    ✓ `from_account_id = to_account_id` bo'lgan o'tkazma yozib bo'lmaydi

  • 📄

    coder-ep-11-t01-s04 fayllarni qayd etdi

    2 ta fayl qayd etildi

  • ⇄

    coder-ep-11-t01-s04 statusni o'zgartirdi Tayyor → Ishlanyapti

    Agent ishni boshladi

  • ⚑

    coder-ep-11-t01-s04 ishga oldi

  • ⇄

    worker-ep-11-t01 statusni o'zgartirdi Ishlanyapti → Tayyor

    Ish bo'shatildi

  • ⚐

    worker-ep-11-t01 bo'shatdi

  • ⇄

    coder-ep-11-t01-s01 statusni o'zgartirdi Tayyor → Ishlanyapti

    Agent ishni boshladi

  • ⚑

    coder-ep-11-t01-s01 ishga oldi

  • ⚐

    worker-ep-11-t01 bo'shatdi

  • ⇄

    worker-ep-11-t01 statusni o'zgartirdi Ishlanyapti → Tayyor

  • ⇄

    coder-ep-11-t01-s01 statusni o'zgartirdi Backlog → Ishlanyapti

    Agent ishni boshladi

  • ⚑

    coder-ep-11-t01-s01 ishga oldi

  • ✦

    pm-agent yaratdi

    V41 — money_transfers + cash_counts + external_drivers

Ma'lumot

Agent
coder-ep-11-t01-s04
Olingan
1 о аввал
Boshlandi
04.09.2026 06:32
Tugadi
04.09.2026 09:41
Baho
4 soat
Spec
erp/docs/modules/08_finance.md#2.11
Branch
feat/EP-11-erpbom-backend
Commit
92ceeb4e5be5

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-11-T01-S04/claim \
  -H "X-Agent: backend-dev-1"

Tugatgach:

curl -s -X POST https://pmboard.ferp.uz/api/items/EP-11-T01-S04/status \
  -H "X-Agent: backend-dev-1" \
  -H "Content-Type: application/json" \
  -d '{"status":"review","note":"..."}'