# Workflow Inbox – Doctype ID mapping

Dokumen ini merangkum pemetaan `doctype_id` yang digunakan di Workflow Inbox agar filter dan tindakan (preview, sync, email) tetap berjalan dengan benar.

## Doctype yang masuk Workflow Inbox (referensi dari UI / doc_types)

| Display Name           | doctype_id (UI/DB) | doctype_id (legacy di kode) | Keterangan |
|------------------------|--------------------|-----------------------------|------------|
| Absence Clarifications | 104                | 104                         | Sudah satu sumber |
| Attendance Request     | 207                | 110                         | Backend mendukung 110 dan 207 |
| Leave Applications     | 69                 | 111                         | Backend mendukung 111 dan 69 |
| Permit Ease            | 70                 | 70                          | Sudah satu sumber |
| Work Activity          | 209                | 230                         | Backend mendukung 230 dan 209 |
| Work Activity Plan     | 246                | 246                         | Sudah satu sumber |
| Attendances            | 68                 | -                           | Bukan workflow doc (master data) |

## Perubahan yang sudah dilakukan (robust, tanpa merusak data)

1. **Backend (`workflow.service.js`)**
   - Konstanta: `ATTENDANCE_REQUEST_DOCTYPE_IDS = [110, 207]`, `LEAVE_APPLICATION_DOCTYPE_IDS = [111, 69]`, `WORK_ACTIVITY_DOCTYPE_IDS = [230, 209]`.
   - Sync status ke dokumen (submitToWorkflow / actionToWorkflow): memakai array di atas sehingga baik 110/207, 111/69, maupun 230/209 tetap disinkronkan ke AttendanceRequest, LeaveApplication, WorkActivity.
   - Email “Need Approval”: dikirim untuk doctype 110 atau 207 (AR), 111 atau 69 (LA).
   - `getWorkflowsWithDoctype`: menambah resolusi untuk 110 & 207 (Attendance Request), 111 & 69 (Leave Application), 230 & 209 (Work Activity) agar doc_no dan employee_name tampil di inbox.

2. **Frontend**
   - `TableData.jsx`: sudah memakai 207, 69, 209, 246 untuk link preview (Attendance Request, Leave Application, Work Activity, Work Activity Plan).
   - `TableDataApprove.jsx`: ditambah dukungan 207, 69, 209 untuk preview dan pengecualian tombol Edit generik.

## Jika nanti ingin satu sumber doctype_id

- **Opsi A – DB mengikuti kode:** Pastikan tabel `doc_types` (atau sumber daftar DocType) memakai ID yang sama dengan yang dipakai saat **membuat** workflow: Attendance Request = 110, Leave Application = 111, Work Activity = 230. Filter inbox dan backend sudah mendukung 110/111/230 dan 207/69/209.
- **Opsi B – Kode mengikuti DB:** Jika ingin satu ID saja (misalnya 207, 69, 209), ubah konstanta di modul yang **membuat** workflow:
  - `attendanceRequest.service.js`: `ATTENDANCE_REQUEST_DOCTYPE_ID` → 207.
  - `leaveApplication.service.js`: `LEAVE_APPLICATION_DOCTYPE_ID` → 69.
  - `workActivity.service.js`: `WORK_ACTIVITY_DOCTYPE_ID` → 209.
  Setelah itu, workflow baru akan disimpan dengan 207/69/209. Workflow lama (110/111/230) tetap didukung oleh logic array di `workflow.service.js`.

## Doctype lain yang sudah punya resolusi di getWorkflowsWithDoctype

22 (Call Plan), 23 (Survey), 24 (UDP), 25 (Client KS), 70 (Permit Ease), 72 (Delivery Trip), 93 (Call Realization Daily), 104 (Absence Clarification), 107 (UDK), 109 (Employee Request), 117 (Realization Permission), 149 (NC Product), 150 (Product Return), 155 (FSE), 176 (Gimmick Request), 194 (Up Country), 224 (UC Cost Realization), 230/209 (Work Activity), 246 (Work Activity Plan).

Jika ada doctype baru yang perlu masuk workflow inbox, tambahkan blok yang sesuai di `getWorkflowsWithDoctype` dan (jika perlu) konstanta array untuk sync/email, lalu tambah link preview di `TableData.jsx` / `TableDataApprove.jsx`.
