Berikut **CONTEXT struktur tampilan “Bukti Bank”** (mengikuti layout file *Form Bukti bank.xlsx*), **disesuaikan dengan field yang sudah ada di database kamu**. Ini fokus ke **bentuk output/print view**, bukan query.

---

## CONTEXT: Struktur Tampilan Print “Bukti Bank” (Bank Keluar)

### 1) Header Atas (1 halaman)

Susunan 3 area (kiri–tengah–kanan) dalam 1 baris header:

**(Kiri) Penerima**

* Label: **Dibayarkan Kepada :**
* Nilai utama (baris bawahnya, tebal): `{vendor.vendor_name}`
* Opsional (jika ingin tampil): info rekening penerima
  `Bank: {vendor_bank.nama_bank} | No Rek: {vendor_bank.nomor_akun} | A/N: {vendor_bank.nama_akun}`
  (kalau kosong → tampil `-` atau tidak ditampilkan)

**(Tengah) Judul Dokumen**

* Teks besar, center: **Bukti Bank**
* Opsional (jika dipakai): `{my_company.my_company_name}` + logo kecil (base64) di kiri judul

**(Kanan) Nomor & Tanggal**

* `Nomor : {trx.nomor_bukti}`  *(contoh format: BKL 11/01)*
* `Tanggal : {trx.date}`

> Aturan kosong: tampil `-`

---

### 2) Tabel Rincian Pembayaran (Bagian Utama)

Tabel minimal 3 kolom seperti form:

#### Kolom Header Tabel

* **Perkiraan**
* **U R A I A N** (judul bisa dibuat spaced/center seperti template, tapi teks normal juga ok)
* **Jumlah**

#### Baris Rincian (repeat)

Setiap baris item menampilkan:

* `Perkiraan` → `{detail_kategori.code}` *(kalau tidak ada code, tampil `-`)*
* `Uraian` → `{line.uraian}` *(biasanya dari `keterangan`)*
* `Jumlah` → `{line.amount}` format Rupiah

**Catatan penting tampilan seperti template:**

* Ada area “label vertikal/merge” di sisi kiri tabel (di template tertulis **KEPERLUAN INTERN**) yang **menempel sepanjang baris item**.
  Gunakan ini sebagai **label grup**:

  * `{vendor.vendor_type}` (misal “KEPERLUAN INTERN”)
  * Jika tidak ingin → boleh kosongkan / hilangkan blok ini.
* Jumlah baris item fleksibel (kalau lebih banyak dari space 1 halaman → lanjut halaman berikutnya dengan header tabel diulang).

---

### 3) Baris Total & Referensi

Tepat setelah tabel item:

* Kiri bawah (segaris): **Ch/G.B. No. :** `{ch_gb_no}`

  * Jika belum ada field sumber di DB → tampil `-` (placeholder)

* Kanan bawah: **TOTAL :** `{sum(amount)}`

---

### 4) Terbilang (1 baris panjang)

Di bawah total:

* Label: **Terbilang :**
* Isi (memanjang satu baris): `{terbilang(total)} Rupiah`

> Kalau sistem belum punya fungsi terbilang, tetap tampilkan placeholder string.

---

### 5) Catatan (Notes)

Di bawah terbilang:

* Label: **CATATAN :**
* Isi berupa multi-line (boleh 2–5 baris), contoh isi yang cocok dengan DB kamu:

  * `Project: {project.proyek}` *(jika transaksi terkait proyek)*
  * `Kategori: {kategori.kategori} / {detail_kategori.detail_kategori}`
  * `DP: {is_dp ? dp_percentage + "%" : "-"}`

> Kalau salah satu tidak ada → skip baris itu (atau tampil `-`).

---

### 6) Area Tanda Tangan (Footer)

Buat tabel tanda tangan 4 kolom (seperti form):

1. **Pembukuan**
2. **Mengetahui**
3. **Kasir** *(di template kolom ini lebih lebar)*
4. **Penerima**

Setiap kolom berisi:

* Judul peran (header)
* Ruang tanda tangan (kotak kosong / gambar signature base64 jika ada)
* Nama terang di bawah tanda tangan (opsional)

Sumber yang menyesuaikan DB:

* Pembukuan/Mengetahui/Kasir → `{ms_approver.nama_approver}` + `{ms_approver.signature}` (base64)
* Penerima → default `{vendor.vendor_name}` (signature biasanya kosong karena tidak ada field penerima di DB)

---

## Placeholder Field yang “sesuai database kamu”

Gunakan mapping placeholder ini biar agent gampang:

* `{trx.nomor_bukti}` → `trs_mutasi_bank_actual_project.nomor_bukti`
* `{trx.date}` → `trs_mutasi_bank_actual_project.date`
* `{trx.keterangan}` → `trs_mutasi_bank_actual_project.keterangan`
* `{line.amount}` → `trs_mutasi_bank_actual_project.amount`
* `{vendor.vendor_name}` → `ms_vendor.vendor_name`
* `{vendor.vendor_type}` → `ms_vendor.vendor_type` *(untuk label “KEPERLUAN INTERN” di sisi tabel)*
* `{vendor_bank.*}` → `ms_vendors_bank` (via `vendors_bank_id` atau `vendor_id`)
* `{rekening.*}` (opsional kalau mau ditampilkan) → `ms_rekening` (via `rekening_id`)
* `{project.*}` → `ms_project` (via `project_id`)
* `{detail_kategori.code}` → `ms_detail_kategori.code` (via `detail_kategori_id`)
* `{kategori.kategori}` → `ms_kategori.kategori` (via `ms_detail_kategori.kategori_id`)
* `{my_company.*}` → `ms_my_company` (nama & logo)
* `{approver.*}` → `ms_approver` + `ms_jabatan`

---
