# Webhook BKB vs DFT (Draft) – Kenapa Hanya Draft yang Masuk?

## Situasi

- **BKB** = Bukti Kas/Bank yang sudah **divalidasi** (nomor final, mis. `BKB-01.26-000655`).
- **DFT** = **Draft** – bukti bayar belum divalidasi (nomor sementara, mis. `DFT.102587`).

Di `webhook_queue` yang masuk dari Accurate kebanyakan **DFT** (draft). **BKB** (yang sudah divalidasi) **tidak dikirim** Accurate, kecuali Anda push manual.

---

## Penyebab (sisi Accurate)

Accurate IRIS mengirim webhook **SALES_RECEIPT** saat bukti bayar **disimpan/dibuat** (biasanya masih draft → nomor DFT).  
Saat user **validasi** draft menjadi BKB, Accurate **tidak mengirim webhook lagi** (atau event “validasi” tidak di-subscribe).

Akibatnya:

- Yang sampai ke kita: webhook saat **buat draft** → nomor masih **DFT**.
- Yang Anda butuhkan: webhook saat **sudah validasi** → nomor **BKB**. Itu saat ini tidak dikirim oleh Accurate.

---

## Perilaku di Sistem Kita

1. **Golang relay**  
   Semua webhook (DFT dan BKB) diterima dan masuk ke `webhook_queue`, lalu diteruskan ke shared hosting.

2. **Receiver PHP** (`receiver.php`)  
   - **DFT** → **di-skip** (tidak diproses ke `t_po_pembayaran` / PO), karena belum nomor final.  
   - **BKB** → diproses (insert pembayaran, update PO, log).

Jadi: queue penuh DFT itu wajar; yang kurang adalah **webhook BKB dari Accurate**.

---

## Yang Bisa Anda Lakukan

### 1. Cek pengaturan webhook di Accurate IRIS (prioritas)

- Login **Accurate IRIS** → bagian **Webhook / Integrasi / API**.
- Cek event **SALES_RECEIPT**:
  - Apakah ada opsi **“Saat validasi” / “On validate” / “Status change”**?
  - Atau ada event terpisah untuk **“Bukti bayar divalidasi”**?
- Jika ada → aktifkan event **validasi** (atau event BKB) dan arahkan ke URL webhook Anda yang sama.

Kalau tidak ada opsi tersebut, lanjut ke langkah 2.

### 2. Tanya dukungan Accurate

Tanyakan ke **support Accurate** (email/chat):

- “Apakah webhook **SALES_RECEIPT** bisa dikirim lagi **setelah bukti bayar divalidasi** (dari draft ke nomor BKB)?”
- “Apakah ada event/trigger terpisah untuk **receipt validated** atau **status change**?”

Jika mereka bisa mengirim webhook saat validasi (BKB), Anda tidak perlu workaround di bawah.

### 3. Workaround sementara: push manual / proses manual

- **Push manual** (seperti yang sudah Anda lakukan) untuk BKB yang penting.
- Atau jadwal **proses manual** berkala: export BKB dari Accurate, lalu input/import ke sistem Anda (jika fitur ada).

---

## Ringkasan

| Yang terjadi | Penjelasan |
|--------------|------------|
| BKB tidak masuk (kecuali manual) | Accurate tidak mengirim webhook saat receipt divalidasi (Draft → BKB). |
| Yang masuk banyak DFT | Accurate mengirim webhook saat bukti bayar **disimpan** (masih draft). |
| Receiver skip DFT | Sudah benar: kita hanya proses nomor final (BKB), bukan draft (DFT). |

**Solusi tetap:** konfigurasi atau dukungan dari **Accurate** agar webhook juga dikirim saat **validasi** (BKB), bukan hanya saat buat draft (DFT).
