# ULAZNI RAČUNI MERGE — program MC #106632 (Faze 0–3, zatvoren 2026-08-04)

# ULAZNI RAČUNI MERGE — MC #106632

**CEO odluka 31.07/01.08.2026:** jedan račun = jedan red, kroz koja god vrata ušao.

## Arhitektura (odluka)
1. **Autoritativan zapis** = `purchase_invoices` (zakonski primaran model, DRAFT/CONFIRMED, čl. 57/58 ZPDV — URA/pretporez/saldakonti).
2. **Kanonski UI dom** = `/purchases` (vlasnički mentalni model, bez paywalla) — čita `purchase_invoices`, prikazuje DVA nezavisna statusa na istom redu: plaćanje i knjiženje.
3. `/accounting/ulazni-racuni` = preusmjeren/filtriran pogled istih podataka za računovođu.
4. `expenses kind=purchase` intake se gasi ili preusmjerava u `purchase_invoices`.

## Faze
**Faza 0 (DONE):** V150/V151 migracije na prod DB, dupli gate PASS.

**Faza 1 (DONE LIVE):** `/purchases` čita `purchase_invoices`; URA-HR-2026-005 vidljiv na produkciji (browser dokaz, build 857 promovisan 01.08).

**Faza 2 (MERGEANA 03.08, PR #300 → bc9fa00f):**
- D2.1 flag-gated gašenje expenses purchase-intakea + dual-write shadow (`AP_INTAKE_PURCHASE_INVOICES_CUTOVER`, default OFF, nikad kreiran u Unleash adminu).
- D2.2 KPR + ulazni PDV repoint na `purchase_invoices`/`purchase_invoice_lines` (SAMO CONFIRMED); CASH_BASED preko bank-reconciliation MATCHED signala.
- D2.3 pravilo klasifikacije (putni nalozi/per-diem ostaju u `expenses`).
- D2.4 EU-acquisition UI guard na expense formi (pali se iz identiteta dobavljača, nezavisno od flaga).
- Gate lanac: Mehanik CLEAR → Momjian DB review APPROVED (3 MAJOR nalaza zatvorena) → računovodstvo-hr SIGN_OFF → porez-fiskalizacija ADJUDICATED → Proveo witness PASS (64/64 integration testa nezavisno re-runano).

**Faza 3 (ZATVORENA KAO EVIDENTIRAN NO-OP, 04.08):**
Rekonsilijacija postojećih redova **nije izvršena jer nije postojala nijedna legitimna akcija**:

| Izvor | Živi broj redova |
|---|---|
| `purchase_invoices` | 13 (7 CONFIRMED / 5 DRAFT / 1 CANCELLED) |
| `expenses(kind='purchase')` | **0** (globalno) |
| `received_einvoice` | **0** |

Klasifikacija: auto-match 0, near-match 0, A-only 0, B-only 13/13. Cross-door dedupe — svrha Faze 3 — strukturno se ne može manifestirati dok su druga dvoja vrata prazna.

**Bitno:** `bilko-demo-pg` JE produkcijska baza (`bilko-web-demo` nosi custom domain `app.bilko.cloud`) — "demo" je istorijsko ime, ne okruženje. Dakle ovi nalazi su produkcijski.

**Uslov ponovnog otvaranja:** čim `expenses(kind='purchase')` ILI `received_einvoice` dobiju svoj prvi red.

## Dokazi (nula mutacija, 4 nezavisna ugla)
- MD5 row-level dumpa identičan između 02.08 i 04.08: `45f44968857bd752b6ed0ce08ca7565b`
- `pg_stat_user_tables`: `n_tup_upd=0`, `n_tup_del=0` za cijeli život instance
- `financial_audit_log`: nula događaja na `purchase_invoices` (trigger živ od 01.08, dakle prije Faze 3)
- Nijedna D3.3 skripta ne postoji nigdje na disku

Evidence direktorij: `~/system/evidence/106632/` — D3.1 invariant snapshot, D3.2 dry-run, D3.4 immutability proof, računovodstvena presuda, Proveo witness (PASS).

## Nalazi koji su ispali iz programa (tiketirani)
- **#106777** e-invoice accept flow (`received_einvoice` → `purchase_invoices`) — ne postoji, treba build s domenskim gate-om.
- **#106825** 7 CONFIRMED računa nema NIJEDNO GL knjiženje (`journal_entry_id NOT NULL = 0` za svih 13) — seed ih je potvrdio sirovim SQL-om.
- **#106827** (blokiran od #106825) D1.1 posting-status prikaz ne smije ići prije toga — inače UI laže "proknjižen".
- **#106780** dvostruki SUPPLIER_PAYMENT journal entry, **#106781/#106782** hotelski račun i avansi, **#106784/#106785** reverse charge za usluge i naknada za privatno vozilo, **#106818** zabrana editovanja primijenjenih Flyway migracija.