# Analisis Feedback Klien (CRM Update v14.pdf)

Berdasarkan dokumen `CRM Update v14.pdf` dan penelusuran pada *current state* (kondisi saat ini) dari *codebase* aplikasi CRM (yang berbasis pada CodeIgniter 4 / RISE CRM), berikut adalah analisis mendalam untuk masing-masing poin permintaan beserta bagian sistem yang akan terdampak saat perbaikan nanti dilakukan:

## 1. Opsi "Buat Baru" pada Penawaran (Estimates)
**Kebutuhan:** 
- Menambahkan opsi "Buat Baru" produk saat membuat penawaran.
- Produk ini tidak disimpan di Data Center (tabel `items`).
- Produk ini eksklusif untuk penawaran tersebut.
- Jika penawaran "Won", data terbaca oleh ERP.
- Jika dijadikan Sales Order dan ada item "Buat Baru", sistem memblokir dan meminta sales memilih produk dari Data Center.

**Analisis Codebase:**
- **Pembuatan Penawaran:** Saat ini, UI penambahan item ada di `app/Views/estimates/item_modal_form.php`. Kita perlu menambahkan mekanisme agar pengguna bisa menginput item secara manual tanpa memilih dari *dropdown* produk yang sudah ada, atau menambahkan tombol "Buat Baru" yang melewati validasi `item_id`.
- **Penyimpanan:** Controller `app/Controllers/Estimates.php` (fungsi `save_item`) harus dimodifikasi untuk menerima item tanpa mereferensi `item_id` dari tabel `items`, mungkin dengan menyimpan `item_id = 0` pada tabel `estimate_items`.
- **Validasi Sales Order:** Saat proses konversi dari *Estimate* ke *Sales Order* (kemungkinan di `app/Controllers/Orders.php` atau fitur *Sales Order* kustom), perlu ditambahkan pengecekan rutin: `if` terdapat item dengan `item_id == 0` (atau flag *custom item*), maka konversi dibatalkan dan sistem memunculkan notifikasi/error khusus yang meminta *mapping* ke item Data Center.

## 2. Hapus Kolom Keterangan dari Data Produk di CRM
**Kebutuhan:** 
- Menghapus kolom keterangan (description) dari *Product Data Center*.
- Saat item ditambahkan ke penawaran, *field* keterangan harus kosong (bebas diisi), bukan mengambil dari database produk.

**Analisis Codebase:**
- **Data Produk:** Pada UI manajemen produk (`app/Views/items/form.php` dan `app/Controllers/Items.php`), *field* `description` perlu disembunyikan atau dihilangkan agar tidak ada data rahasia yang tersimpan secara global.
- **Form Penawaran:** Pada `app/Views/estimates/item_modal_form.php`, terdapat JavaScript yang otomatis mengisi *field* `description` ketika suatu produk dipilih dari *dropdown*. Script *auto-populate* ini perlu dihapus atau dimodifikasi agar *field* keterangan (description) selalu diawali dengan input kosong/bebas, sehingga data bawaan dari produk (jika masih tersisa di DB) tidak bocor ke penawaran.

## 3. Email Contact Person Sesuai PT / Sub-company
**Kebutuhan:** 
- Email CP di surat penawaran harus dinamis sesuai asal PT, kecuali IBB yang menggunakan email sales masing-masing.
- Memindahkan input "Judul pekerjaan" dari kiri ke kanan.

**Analisis Codebase:**
- **Dinamisasi Email:** Logika ini berada di *view* pencetakan PDF, khususnya di `app/Views/estimates/estimate_parts/estimate_contact.php` (atau file *custom header/footer* yang di-*load* berdasarkan `domain_id` seperti yang terlihat di `estimate_pdf.php`). Kita perlu membuat *conditional mapping* (Switch Case) berdasarkan `$estimate_info->domain_id` (atau atribut penanda PT lainnya). Jika PT = ADD, set email ke `askaradinamikadharma@gmail.com`, dst. Jika IBB, gunakan `$signature['email']` atau `$client_info`.
- **Posisi Judul Pekerjaan:** Pada form pembuatan penawaran atau pengaturan profil, tata letak UI (layout HTML/CSS) untuk "Judul pekerjaan" perlu disesuaikan grid-nya (contoh: mengubah posisi kolom dari *col-md-6* kiri ke kanan).

## 4. Memindahkan Tabel Produk ke Halaman Lampiran (Page 2)
**Kebutuhan:** 
- Tabel produk dipindah dari halaman pertama ke halaman kedua (Lampiran 1 - Rincian Penawaran Harga) agar surat penawaran (*cover letter*) tidak rusak (lebih *scalable*).

**Analisis Codebase:**
- Berdasarkan struktur `app/Views/estimates/estimate_pdf.php`, tata letak cetakan diatur oleh *array* `$pages`. 
- Saat ini, struktur utamanya adalah 1 halaman yang merender blok: `header, table, estimate_note, terms, closing, contact, signature, footer`.
- Untuk memenuhi permintaan ini, kita perlu memecah `$pages` menjadi 2 halaman:
  - **Halaman 1:** `header, estimate_note, terms, closing, contact, signature, footer`
  - **Halaman 2:** Header khusus lampiran, blok `table` (tabel rincian harga).

## 5. Superadmin Bisa Mengubah "Judul Pekerjaan" Tim
**Kebutuhan:** 
- Superadmin harus bisa mengedit `Job Title` dari user lain (misal dari "Untitled" ke "Sales Support").

**Analisis Codebase:**
- **Izin Edit:** Pada `app/Controllers/Team_members.php` (fungsi `save`) dan `app/Views/team_members/job_info.php` (atau `general_info.php`), field `job_title` mungkin di-*disable* atau dibatasi hanya untuk user terkait. 
- Kita perlu menambahkan kondisi `if ($this->login_user->is_admin)` untuk membuka atribut *disabled* pada input HTML dan mengizinkan pembaruan data tersebut di sisi *backend*.

## 6. Ubah Kata "Estimasi diterima" menjadi "Prospek order diterima"
**Kebutuhan:** 
- Penyesuaian terjemahan / istilah pada UI.

**Analisis Codebase:**
- Berdasarkan penelusuran pada direktori bahasa, teks ini terdapat di dalam file `app/Language/Indonesian/default_lang.php` pada baris 824.
- Variabel `$lang["estimate_accepted"] = "Estimasi diterima";` perlu diubah menjadi `"Prospek order diterima"`.

## 7. Format Tanggal pada Surat Penawaran Menjadi DD-MM-YYYY
**Kebutuhan:** 
- Mengubah format tanggal surat, contoh: 01-07-2026.

**Analisis Codebase:**
- Format tanggal di-*render* di bagian *header* surat (contoh: `app/Views/estimates/estimate_parts/header_style_1.php` atau *custom_header*).
- Daripada bergantung pada pengaturan tanggal global (yang mungkin mengubah format di seluruh UI CRM), lebih baik melakukan *hardcode* pemformatan tanggal spesifik pada *view* PDF tersebut menggunakan fungsi PHP `date("d-m-Y", strtotime($estimate_info->estimate_date))` agar aman dan sesuai permintaan di surat saja.

## 8. Perbaikan Penulisan Syarat & Ketentuan (T&C)
**Kebutuhan:** 
- Tulisan "Syarat & Ketentuan" tidak boleh menjadi list (bullet).
- Poin pembayaran (DP 50% dan pelunasan 50%) tidak terpisah menjadi 2 poin, melainkan 1 poin utuh.
- Menambahkan sedikit *padding* di sebelah kiri list.

**Analisis Codebase:**
- **Konten Default:** Teks default Syarat & Ketentuan ini biasanya disimpan di database (tabel `settings`, dengan key `estimate_notes` atau `estimate_terms`). Teks bawaannya (*default value*) perlu di-*update* di database (bisa via menu Settings > Estimate di UI CRM) agar item list-nya menyatu dan judulnya keluar dari mode *bullet list*.
- **Padding CSS:** Pada file `app/Views/estimates/estimate_parts/estimate_terms.php`, kita perlu menginjeksi CSS inline tambahan (misal: `style="padding-left: 15px;"`) khusus pada tag `<ul>` atau `<ol>` yang merender Syarat & Ketentuan, agar susunannya lebih menjorok ke dalam sesuai desain yang diminta.

---
**Kesimpulan Sementara:** 
Semua permintaan klien ini dapat direalisasikan dengan melakukan modifikasi pada *Views* (khususnya untuk Mpdf/PDF rendering), sedikit penyesuaian di *Controllers* (untuk "Buat Baru" dan hak akses Superadmin), modifikasi satu *Language file*, serta penyesuaian *default settings* di database. Tidak ada kendala teknis yang menghalangi berdasarkan arsitektur CodeIgniter 4 / RISE CRM saat ini.

*(Tidak ada perubahan kode yang dilakukan sesuai dengan instruksi).*
