# 📘 Panduan Alur Kerja Amandemen Invoice (Berdasarkan Tampilan Antarmuka / UI)

Dokumen ini disusun khusus sebagai **panduan praktis bagi Pengguna (User / Operator Penagihan & Finansial)** dalam menjalankan proses revisi tagihan (*Amandemen Invoice*), disusun berurutan persis sesuai tahapan elemen dan tombol yang tampil pada layar antarmuka pengguna (UI).

---

## 1. Diagram Alur Pengguna di Layar (Mermaid User Flowchart)

```mermaid
flowchart TD
    Step1["1. Buka Lembar Cetak Invoice di Modul Invoicing - Klik Tombol 'Buat Amandemen Invoice'"]
    Step2["2. Jendela Form Popup Amandemen Terbuka"]
    
    Step1 --> Step2

    Step3{"Status e-Faktur di DJP?"}
    Step2 --> Step3

    Step3 -- "Sudah Approved DJP" --> Step3A["Muncul Banner Oranye Peringatan Pajak - Wajib Centang Persetujuan Serap PPN"]
    Step3 -- "Draft / Belum Approved" --> Step3B["Muncul Banner Hijau: Pajak Aman Diamandemen"]

    Step3A --> Step4["3. Tinjau Batas Revisi (Maksimal 2x Amandemen ISO 9001)"]
    Step3B --> Step4

    Step4 --> Step5["4. Isi Catatan Internal Perusahaan (Alasan audit internal, tidak dicetak di nota)"]

    Step5 --> Step6["5. Menyesuaikan Rincian Item Penagihan di Tabel"]

    subgraph ItemEditing [Tabel Penagihan Interaktif]
        ActionPicker["Pilih Produk dari SPK / Tambah Baris Kustom"]
        ActionDrag["Geser Ikon Garis Tiga (Drag & Drop) untuk Menata Urutan Tampilan"]
        ActionQty["Ubah QTY Penagihan atau Harga Satuan"]
        ActionRetur["Ketik QTY Retur Fisik jika Barang Dikembalikan ke Gudang WO"]
        ActionTotal["DPP, PPN 11 persen, dan Grand Total Terhitung Otomatis"]

        ActionPicker --> ActionDrag --> ActionQty --> ActionRetur --> ActionTotal
    end

    Step6 --> ItemEditing

    ItemEditing --> Step7["6. Meninjau Bagian 'Notes Client' (Catatan yang Dicetak di Invoice)"]

    Step7 --> CheckNotes{"Notes Client Perlu Diubah?"}
    CheckNotes -- "Ya, Diubah" --> Step8["Notes Client Siap"]
    CheckNotes -- "Tidak Diubah" --> CheckConfirm{"Centang Konfirmasi Teks Catatan Sudah Sesuai?"}
    CheckConfirm -- "Belum Dicentang" --> AlertNotes["Peringatan: Simpan Terkunci (Wajib Update Catatan atau Centang Konfirmasi)"]
    AlertNotes --> Step7
    CheckConfirm -- "Sudah Dicentang" --> Step8

    Step8 --> Step9["7. Tinjau Kotak Live Preview Real-time Sebelum Menyimpan"]

    subgraph LivePreview [Kotak Simulasi Real-Time]
        PrevJurnal["Live Preview Jurnal Akuntansi (Debet dan Kredit Seimbang)"]
        PrevBukuBesar["Live Preview Mutasi Buku Besar dan Kartu Piutang"]
        PrevKasir["Live Preview Status Pembayaran Kasir"]
    end

    Step9 --> LivePreview

    LivePreview --> CheckKasir{"Tagihan Baru Lebih Kecil dari Kasir Terbayar?"}
    CheckKasir -- "Ya (Lebih Bayar)" --> AlertKasir["Ditolak: Tagihan Tidak Boleh Lebih Kecil dari Penerimaan Kasir"]
    CheckKasir -- "Tidak (Aman)" --> Step10["8. Klik Tombol 'Simpan Amandemen (Revisi ke-1)'"]

    Step10 --> SaveSuccess["Muncul Notifikasi Hijau: Amandemen Berhasil Disimpan & Dibukukan"]

    SaveSuccess --> FinalStep["9. Kembali ke Halaman Cetak Invoice - Refresh: Format Rapi, Nilai Baru, dan Terbilang Otomatis"]

    classDef startEnd fill:#2d3748,stroke:#1a202c,stroke-width:2px,color:#fff;
    classDef process fill:#3182ce,stroke:#2b6cb0,stroke-width:2px,color:#fff;
    classDef decision fill:#d69e2e,stroke:#b7791f,stroke-width:2px,color:#fff;
    classDef danger fill:#e53e3e,stroke:#9b2c2c,stroke-width:2px,color:#fff;
    classDef success fill:#38a169,stroke:#276749,stroke-width:2px,color:#fff;

    class Step1,FinalStep startEnd;
    class Step2,Step3A,Step3B,Step4,Step5,Step6,Step7,Step8,Step9,Step10 process;
    class ActionPicker,ActionDrag,ActionQty,ActionRetur,ActionTotal,PrevJurnal,PrevBukuBesar,PrevKasir process;
    class Step3,CheckNotes,CheckConfirm,CheckKasir decision;
    class AlertNotes,AlertKasir danger;
    class SaveSuccess success;
```

---

## 2. Tahapan Praktis Sesuai Urutan Tampilan Layar (Step-by-Step UI)

### Langkah 1: Akses Membuka Form Amandemen & Status Tombol Dinamis
1. Masuk ke modul **Invoicing** dan buka halaman cetak invoice yang bersangkutan (`invoicing/Printing/viewReceiptReg/...`).
2. Di pojok kanan atas lembar cetak, sistem menampilkan tombol dengan **warna dinamis sesuai status revisi**:
   - **Kuning (`btn-warning`)**:
     $$\mathbf{[\text{✏️ Buat Amandemen Invoice (Clean)}]}$$
     *Menandakan dokumen masih versi asli (belum pernah diamandemen).*
   - **Oranye Tua / Merah Bata (`#e65100`)**:
     $$\mathbf{[\text{📝 Amandemen ke-2 (Revisi Terakhir)}]}$$
     *Menandakan revisi ke-1 sudah aktif dan tombol ini langsung membuka jalur cepat revisi ke-2 tanpa cegatan izin pajak.*
   - **Abu-abu (`btn-secondary`)**:
     $$\mathbf{[\text{🔒 Riwayat Amandemen (Terkunci 2x)}]}$$
     *Menandakan kuota maksimal 2x revisi telah selesai (terkunci permanen, hanya untuk melihat riwayat audit).*
3. Klik tombol tersebut untuk membuka jendela sembul (*popup*) form amandemen.

---

### Langkah 2: Memeriksa Status Pajak & Kuota Revisi (Auto-Bypass Bebas Hambatan)
Saat popup form terbuka, pengguna akan melihat 3 panel informasi utama di urutan paling atas:

1. **Panel Status e-Faktur DJP & Mekanisme Bebas Hambatan (Auto-Bypass)**:
   - **Pada Amandemen Pertama (Revisi ke-1)**:
     - Jika e-Faktur berstatus Draft: Muncul banner **Hijau** (*Aman diamandemen*).
     - Jika e-Faktur sudah APPROVED DJP: Muncul banner **Oranye Peringatan Khusus** di mana pengguna wajib mencentang persetujuan penyerapan selisih PPN ke Biaya Usaha (Beban Penjualan Lainnya).
   - **Pada Amandemen Kedua (Revisi ke-2) & Sesaat Setelah Simpan (Auto-Bypass)**:
     - Karena kesepakatan penyerapan selisih pajak sudah disahkan pada revisi ke-1, sistem **secara otomatis membuka akses langsung (Auto-Bypass)** tanpa mencegat user dengan layar *Akses Ditolak*.
     - Sesaat setelah simpan, halaman otomatis memuat ulang (*refresh*) menampilkan banner sukses hijau dan formulir langsung siap ditinjau kembali.

2. **Panel Kuota Revisi (Kepatuhan Anti-Fraud ISO 9001)**:
   - **Dokumen Terbit Awal**: Menampilkan lencana *"Sisa Kuota: 2x Amandemen"*.
   - **Revisi ke-1 Aktif**: Menampilkan lencana oranye *"Sisa Kuota: 1x Lagi (Revisi Terakhir)"*.
   - **Sudah 2x Amandemen**: Menampilkan lencana merah *"Terkunci Permanen"*. Form tidak dapat diedit lagi demi mencegah manipulasi berulang.

3. **Panel Ringkasan Proyek**:
   Menampilkan Nilai Kontrak RAB Proyek, Jumlah SPK Aktif, serta macam barang & jasa.

---

### Langkah 3: Mengisi Catatan Internal Perusahaan
Tepat di bawah informasi proyek, terdapat kotak berwarna kuning:
- **`🔒 Catatan Amandemen (Khusus Internal Perusahaan)`**:
- Ketikkan alasan perubahan invoice (contoh: *"Koreksi kelebihan tagihan termin 1 sesuai kesepakatan berita acara lapangan"*).
- **Penting:** Catatan internal ini **hanya untuk riwayat audit kantor**, dan **TIDAK akan tercetak** pada lembar invoice fisik konsumen.

---

### Langkah 4: Menyesuaikan Rincian Item Penagihan di Tabel
Pada area tabel produk dan jasa, pengguna memiliki kontrol penuh:

1. **Menambah Item Baru**:
   - Klik tombol biru **`[+ Pilih Produk dari SPK/RAB]`** untuk mengambil sisa barang/jasa dari surat perintah kerja proyek.
   - Klik tombol hijau **`[+ Tambah Baris Kustom (Non-Stok)]`** untuk menambahkan jasa dadakan, biaya kirim kustom, atau penyesuaian non-fisik.
   - Klik tombol merah **`[🗑️ Kosongkan Tabel]`** jika ingin menghapus semua baris dan menyusun ulang dari awal.

2. **Menata Urutan Tampilan Baris (Drag & Drop)**:
   - Pada kolom paling kiri bertanda ikon **`☰`**, klik dan tahan mouse, lalu geser (*drag & drop*) ke atas atau ke bawah.
   - Urutan yang Anda atur di sini akan menjadi urutan nomor urut resmi saat invoice fisik dicetak.

3. **Mengedit Kuantitas & Harga**:
   - **Nama Penagihan**: Dapat diketik ulang jika ada penyesuaian deskripsi penamaan.
   - **Limit SPK**: Menampilkan batas kuantitas asli yang diizinkan sistem.
   - **📦 QTY RETUR (Fisik)** *(Kolom Berwarna Merah Muda)*:
     - Jika ada barang fisik yang dikembalikan/ditarik ke gudang WO, ketikkan jumlah retur di kolom ini.
     - Sistem secara otomatis memotong kuantitas penagihan konsumen dan menyiapkan dokumen retur resmi ke modul distribusi gudang.
     - *(Untuk baris Jasa/Biaya Non-Stok, kolom ini otomatis nonaktif / terkunci).*
   - **QTY PENAGIHAN**: Kuantitas bersih yang akan ditagihkan kepada konsumen.
   - **HARGA**: Harga satuan (otomatis diformat ribuan).
   - **Tombol `[X]`**: Untuk menghapus baris yang tidak diinginkan dari penagihan.

4. **Footer Nilai Total**:
   - **Total DPP**, **PPN 11%**, dan **GRAND TOTAL** terhitung dan diperbarui secara otomatis setiap kali angka diubah.

---

### Langkah 5: Meninjau & Mengonfirmasi "Notes Client" (Safeguard Anti-Lupa)
Di bawah tabel rincian item, terdapat area bertanda oranye:
- **`📝 Notes Client (Dicetak di Invoice Penagihan)`**:
- Ini adalah teks yang akan dicetak di bagian **N O T E S** nota tagihan konsumen (contoh: rincian persentase termin atau nomor rekening pembayaran).
- **Pengaman Anti-Lupa Sistem**:
  Sistem akan menampilkan status: `⚠️ WAJIB DITINJAU (Catatan Masih Teks Lama)`.
- **Pengguna WAJIB melakukan salah satu tindakan:**
  - **Opsi A**: Edit teks catatan agar angka nominal/termin sesuai dengan tagihan baru, **ATAU**
  - **Opsi B**: Jika teks catatan lama dirasa sudah benar dan tidak perlu diubah, centang kotak:
    > `[v] Catatan di atas sudah saya tinjau dan menyatakan teks ini sudah benar (tidak perlu diubah).`
- *Jika pengguna lupa dan langsung menekan tombol simpan, sistem akan menghentikan proses, menggulirkan layar ke kotak catatan, dan memberi tanda peringatan.*

---

### Langkah 6: Memeriksa Kotak Live Preview Real-time (Simulasi Hasil)
Sebelum menekan tombol simpan, pengguna dapat melihat 3 kotak simulasi otomatis di layar:

1. **📊 Live Preview: Jurnal Perbaikan Akuntansi (Clean Replaced Journal)**:
   Menampilkan simulasi 5 baris ayat jurnal resmi:
   - Piutang Dagang (A/R)
   - Penjualan Belum Realisasi
   - Piutang Usaha Belum Realisasi Project
   - Penjualan
   - PPN Keluaran / Biaya Usaha (Beban Penjualan Lainnya jika ada selisih PPN yang diserap)
   - Memastikan kolom **DEBIT** dan **KREDIT** seimbang sempurna (*balanced*).

2. **📈 Live Preview: Mutasi & Saldo Rekening (Buku Besar)**:
   Menampilkan perbandingan nilai dokumen asal vs nilai baru setelah amandemen, serta posisi mutasi penyesuaian delta.

3. **💳 Live Preview: Status Piutang & Pembayaran Kasir (Safeguard Anti-Overpayment)**:
   - Menampilkan 4 kotak komparasi: **Tagihan Awal**, **Tagihan Baru**, **Sudah Terbayar Kasir**, dan **Sisa Piutang Baru**.
   - **Lencana Hijau `✅ AMAN (SIAP AMANDEMEN)`**: Menandakan tagihan baru aman untuk disimpan.
   - **Lencana Merah `❌ TERJADI LEBIH BAYAR KASIR`**: Jika nominal tagihan baru dibuat lebih kecil dari uang kasir yang sudah disetor konsumen, sistem akan **mengunci tombol simpan** dan mewajibkan pembatalan kasir penerimaan terlebih dahulu.

4. **📦 Ringkasan Retur Fisik yang Ditetapkan**:
   Jika pengguna mengisi kuantitas pada kolom retur fisik, daftar barang yang akan dipotong dan dikembalikan ke gudang WO akan dirangkum di panel ini.

---

### Langkah 7: Menyimpan & Membukukan Amandemen
1. Di bagian bawah form, klik tombol:
   $$\mathbf{[\text{💾 Simpan Amandemen (Revisi ke-1)}]}$$
   *(Atau tombol oranye **[💾 Simpan Amandemen ke-2 (Revisi Terakhir / Final)]** jika merupakan revisi kedua).*
2. Indikator pemrosesan (*Loading*) akan berjalan, dan sistem mengeksekusi penyimpanan transaksi secara aman.

---

### Langkah 8: Konfirmasi Berhasil & Cetak Dokumen Baru
1. Setelah berhasil, jendela popup akan memuat ulang dan memunculkan banner hijau besar di bagian paling atas:
   > **`✅ Amandemen Berhasil Disimpan & Dibukukan!`**
   > *Data amandemen terbaru telah resmi tercatat di sistem. Halaman telah dimuat ulang dengan nilai tagihan dan mutasi akuntansi versi terkini.*
2. Tutup jendela popup amandemen dan kembali ke tab **Cetak Invoice**.
3. Lakukan **Refresh (F5)** pada halaman cetak invoice:
   - Tabel barang telah tersusun rapi sesuai urutan *drag & drop* terbaru.
   - Nilai DPP dan PPN terupdate akurat.
   - **Grand Total** tercetak tepat dan valid.
   - **Kalimat Terbilang Rupiah** otomatis terbit sempurna (contoh: *"--- Empat Juta Delapan Ratus Tiga Puluh Empat Ribu Lima Puluh Rupiah ---"*).
   - Catatan **NOTES** penagihan client telah sesuai dengan teks hasil tinjauan.

---

## 3. Fitur Pemulihan / Rollback Versi (Tombol "Pulihkan Versi Ini")

Jika di kemudian hari manajemen memutuskan untuk membatalkan revisi dan kembali ke versi invoice sebelum amandemen:
1. Buka kembali form amandemen pada invoice tersebut.
2. Gulir ke bagian paling bawah ke area **`📜 Riwayat Aktivitas Invoice`**.
3. Pada tabel **Riwayat Amandemen**, cari baris versi amandemen yang ingin dipulihkan.
4. Klik tombol biru **`[🔄 Pulihkan Versi Ini]`**.
5. Konfirmasi popup peringatan. Sistem akan mengembalikan seluruh susunan item, nilai tagihan, mutasi akuntansi, dan kartu piutang ke kondisi versi tersebut secara otomatis (*rollback*).

---

## 4. Panduan Penanganan Pesan Peringatan (*Troubleshooting FAQ*)

| Pesan yang Muncul di Layar | Penyebab di UI | Solusi Pengguna |
|---|---|---|
| **"Persetujuan Dibutuhkan: Invoice ini telah memiliki e-Faktur Approved DJP"** | e-Faktur sudah resmi di DJP, tetapi checkbox persetujuan penyerapan pajak belum dicentang. | Berikan centang pada kotak: *"Saya mengonfirmasi bahwa manajemen/perusahaan MENYETUJUI penyerapan selisih PPN..."* pada banner oranye atas. |
| **"Amandemen Ditolak: Kenaikan omzet wajib Faktur Pengganti (011) di DJP"** | Pengguna menaikkan nominal tagihan pada invoice yang e-fakturnya sudah disetujui DJP. | Penyerapan pajak hanya untuk penurunan tagihan. Untuk kenaikan omzet, hubungi tim perpajakan untuk menerbitkan Faktur Pengganti di aplikasi e-Faktur DJP. |
| **"Amandemen Ditahan: Bagian Notes Client belum Anda tinjau / perbarui"** | Teks catatan invoice masih teks lama dan pengguna belum mencentang konfirmasi. | Perbarui teks catatan pada kotak *Notes Client*, atau centang kotak konfirmasi bahwa catatan lama sudah benar. |
| **"Amandemen Ditolak: Nominal tagihan baru lebih kecil dari pembayaran yang sudah diterima kasir"** | Tagihan baru diturunkan hingga di bawah jumlah uang kasir yang sudah masuk. | Batalkan transaksi kasir penerimaan terlebih dahulu melalui modul kasir/penerimaan sebelum menurunkan nilai tagihan. |
| **"Akses Ditolak: Kuota Amandemen Telah Habis (Maksimal 2x Selesai)"** | Dokumen invoice sudah pernah diamandemen sebanyak 2 kali. | Sesuai standar ISO 9001 Anti-Fraud, tagihan tidak dapat diedit lagi. Jika ada pembatalan total, lakukan prosedur Void / Retur Resmi. |
