Epic EP-11 Kritik 08_finance erpbom-backend backend

08_finance (1/2) — Pul va majburiyat yadrosi (ledger, kassa, to'lov, o'tkazma)

Bajarildi
100% 44/44
Status:

Tavsif

08_finance ning birinchi yarmi — modulning **yadrosi**: kontragent hisob-varaqalari va hisob-kitob jurnali (`ledger_entries`), pul hisoblari va harakatlari (`money_accounts` / `money_movements`), xarajat **jurnali** (`expense_entries` — tizim tug'diradigan qism), to'lov hujjati, kassalararo o'tkazma va valyuta konvertatsiyasi, kassa sanog'i hamda amaliyot oyi qatlami. Bu epic tugagach boshqa modullardagi **Noop portlar haqiqiy implementatsiyaga almashadi**: kirim faktura tasdiqlanganda ta'minotchi qarzi yoziladi, buyurtma `delivered` bo'lganda mijoz qarzi tug'iladi va **06 dagi limit/overdue gate'i tiriladi** (hozir `NoopCustomerLedgerPort` "qarz yo'q" deb qaytaradi), utilizatsiya va brak yo'qotishi xarajat jurnaliga tushadi. 08 — pul va majburiyatning yagona egasi. U tovar qoldig'ini yozmaydi (03), ish haqini hisoblamaydi (04 — 08 faqat to'laydi), sotish narxini belgilamaydi (02/06) va hisobot ekranlarini qurmaydi (11).

Texnik ko'rsatma

Agent uchun

Uchala jurnal ham **insert-only** (qoida 2/10): tahrir va o'chirish yo'q, tuzatish faqat teskari yozuv bilan (`reversal_of_*_id`). `stock_movements` (03 §2.4) naqshining aynan o'zi. Ishora konvensiyasi (qoida 5, butun modul bo'ylab bitta o'q): `ledger_entries.amount > 0` = kontragent BIZGA qarzdor; `amount < 0` = BIZ kontragentga qarzdormiz. `money_movements` da esa ishora yo'q — `direction` (`in`/`out`) + musbat `amount`. Valyuta (Q17): qarz **o'z valyutasida** yuritiladi, ledger'da konvertatsiya UMUMAN YO'Q. Kontragentda har valyutaga alohida varaqa; to'lov valyutasi = qarz valyutasi (qoida 33). Kurs faqat `money_transfers` (`transfer_type=conversion`) hujjatida fakt sifatida qayd etiladi (F6). Atomiklik: to'lov `confirmed` bo'lganda bitta tranzaksiyada (a) ledger qatori, (b) har `payment_movements` ga bitta `money_movements`, (c) allocation qatorlari, (d) ikkala cache balansi `FOR UPDATE` ostida (qoida 18). Yarim yozilgan to'lov bo'lishi mumkin emas. Asinxron ish — outbox + `@Scheduled` (CROSS_CUTTING F, AR-3/AR-12; broker YO'Q): `due_soon`/`overdue` kunlik skan, balans cache ↔ jurnal reconcile job, yetim varaqa integrity job.

Qabul mezonlari (DoD)

0 / 4 bajarildi

  • Kontragent balansi FAQAT `ledger_entries` yig'indisidan chiqadi; boshqa modulda balans saqlanmaydi (01/05/06/04 da faqat display-only)

  • `NoopSupplierLedgerPort`, `NoopExpensePort`, `NoopCustomerLedgerPort` o'rniga haqiqiy bean ulangan va eski Noop bean'lar faqat testda qoladi

  • 06_orders limit/overdue gate'i haqiqiy qarz bilan ishlaydi: limitdan oshgan buyurtma bloklanadi, `order.override_overdue` bilan o'tadi (08 AC2)

  • Yopilgan amaliyot oyiga tegishli hujjatni o'zgartirish/bekor qilish rad etiladi (AC15)

Ichki ishlar

11 ta

Izoh qoldirish

Tarix

39 yozuv

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-10

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-08

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-07

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-06

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-04

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-03

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-02

  • ✎

    pm-agent yangiladi

    Yangilandi: estimate_hours

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-10

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-08

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-07

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-06

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-04

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-03

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-02

  • ✎

    pm-agent yangiladi

    Yangilandi: estimate_hours

  • 🔗

    team-lead-pm bog'liqlik qo'shdi

    → EP-10

  • 🔗

    team-lead-pm bog'liqlik qo'shdi

    → EP-08

  • 🔗

    team-lead-pm bog'liqlik qo'shdi

    → EP-07

  • 🔗

    team-lead-pm bog'liqlik qo'shdi

    → EP-06

  • 🔗

    team-lead-pm bog'liqlik qo'shdi

    → EP-04

  • 🔗

    team-lead-pm bog'liqlik qo'shdi

    → EP-03

  • 🔗

    team-lead-pm bog'liqlik qo'shdi

    → EP-02

  • ✎

    team-lead-pm yangiladi

    Yangilandi: estimate_hours

  • ⇄

    system statusni o'zgartirdi Ishlanyapti → Bajarildi

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Bajarildi → Ishlanyapti

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Ishlanyapti → Bajarildi

    Bolalardan avtomatik hisoblandi

  • 💬

    finalize-ep-11 izoh qoldirdi

    EP-11 yakunlash (finalize) natijasi. PUSH: erpbom-web feat/EP-11-erpbom-web 7ef2c74 -> PR #12; erpbom-mobile feat/EP-11-erpbom-mobile dc64ed5 -> PR #10. main'ga TEGILMADI. erpbom-backend PUSH QILINMADI - drift tekshiruvi bloklovchi (toifa A) 2 ta haqiqiy nomuvofiqlik topdi: EP-11-T06-S01 (money-transfers from_account_id @NotNull, AC32 haydovchi oqimi siniq) va EP-11-T05-S05 (payments allocations kodda yo'q, jimgina yo'qoladi). Ikkalasi ham blocked qilindi. DRIFT USULI: jonli ilova bugungi HEAD (02dd0c9) dan qayta yig'ilib 127.0.0.1:8092 da ko'tarildi (erpbom-app konteyneri 2 haftalik - ESKI kod, o'lchov uchun ishlatilmadi), /v3/api-docs provenance tekshiruvidan o'tdi, scripts/openapi-diff.sh v1/finance ishlatildi. QOLGAN QARZ (bloklovchi emas): openapi/drift-baseline.json da `finance` moduli uchun baseline HALI YO'Q (hamma toifa 0) - B/D toifadagi springdoc shovqini (responses 175, enum 297, nullable 122, ...) va 20 ta C 'weaker' fingerprint boshqa modullar (mas. auth) baseline'idagi bilan BIR XIL tabiatda. A toifa tuzatilgach `scripts/openapi-diff.sh --write-baseline v1/finance` yurgizilib commit qilinishi kerak.

  • ⇄

    system statusni o'zgartirdi Bajarildi → Ishlanyapti

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Ishlanyapti → Bajarildi

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Backlog → Ishlanyapti

    Bolalardan avtomatik hisoblandi

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-10

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-08

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-07

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-06

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-04

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-03

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-02

  • ✦

    pm-agent yaratdi

    08_finance (1/2) — Pul va majburiyat yadrosi (ledger, kassa, to'lov, o'tkazma)