# Approval Settings — ব্যবহারকারী গাইড

এই গাইড অ্যাডমিনদের জন্য যারা **কোম্পানি অনুযায়ী** কোন অ্যাকশনে approval **চালু/বন্ধ** করবেন এবং কোন **workflow** বাঁধবেন।

সম্পর্কিত: [Approval Workflows](./APPROVAL_WORKFLOW_USER_GUIDE_BN.md) · [Approval Requests](./APPROVAL_REQUEST_USER_GUIDE_BN.md) · [Payroll](../payroll/PAYROLL_USER_GUIDE_BN.md) · [Attendance](../attendance/ATTENDANCE_USER_GUIDE_BN.md)

শর্টকাট:

> **আগে Workflow বানান → Settings ম্যাট্রিক্সে সারি খুঁজুন → Workflow ড্রপডাউন সিলেক্ট → ডানদিকের Approval চেকবক্স ON।**

---

## ১. এটা কী?

**Approval Settings** = প্রতিটি **module action**-এর জন্য কোম্পানির সুইচ:

| কলাম (ধারণা) | মানে |
|--------------|------|
| Manifest default | কোডে `requires_approval` — শুধু ইঙ্গিত |
| Workflow | কোন টেমপ্লেট ব্যবহার হবে |
| Approval (enabled) | **রানটাইম ON/OFF** — Gateway এটাই দেখে |

```text
approval_enabled = OFF  →  কাজ সাথে সাথে execute (bypass)
approval_enabled = ON   →  Approval Request খোলে → Approver সিদ্ধান্ত → Executor
```

Enable করতে **আগে workflow সিলেক্ট বাধ্যতামূলক** (UI ওয়ার্নিং দেয়)।

---

## ২. UI ম্যাপ ও লোকেশন

পথ: **সাইডবার → Admin → Approval Settings**  
URL: `/admin/approval-settings`  
দেখতে: `platform.view`।

| জায়গা | কী |
|--------|-----|
| **উপর** | শিরোনাম “Approval Settings” |
| **উপরের ডান** | **Create workflow** লিংক → Workflows পেজ (`?mode=create`) |
| ফিল্টার কার্ড | **Module** ড্রপডাউন · **Approvable only** চেকবক্স (ডিফল্ট ON) |
| **মধ্যে** টেবিল | প্রতি সারি = এক module action |
| কলাম বাম→ডান | Module · Action · Manifest default · **Workflow** · **Approval** |
| Workflow কলাম | ড্রপডাউন — approval **ON** থাকলে লক (বদলাতে আগে OFF) |
| Approval কলাম | সারির **ডান প্রান্তে** চেকবক্স — টগলই Save |
| Workflow না থাকলে | কলামের নিচে হলুদ “Create one” লিংক |

Attendance/Payroll-এর নতুন approvable অ্যাকশনে UI-তে **New** ব্যাজ দেখা যেতে পারে।

---

## ৩. ধাপে ধাপে — একটি অ্যাকশন চালু করা

উদাহরণ: Payroll Run approve।

1. [Workflows](./APPROVAL_WORKFLOW_USER_GUIDE_BN.md)-এ Payroll + `run-approve` workflow বানান (approver role/user সহ)।  
2. **Approval Settings** খুলুন।  
3. Module ফিল্টার = **Payroll** (বা All)।  
4. সারি: **Approve Payroll Run** / `run-approve`।  
5. **Workflow** কলামে আপনার workflow সিলেক্ট।  
6. সারির **ডান Approval চেকবক্স** টিক দিন।  
7. সাকসেস টোস্ট → এখন থেকে payslip generate শেষে request খুলতে পারে।

বন্ধ করতে: একই চেকবক্স আনটিক (workflow আনলিঙ্ক হতে পারে)।

---

## ৪. Permission টেবিল — কোন approval-এ কী লাগে

### Settings পেজ অ্যাডমিন

| কাজ | Permission |
|-----|------------|
| ম্যাট্রিক্স দেখা / টগল | `platform.view` (+ আপডেট API কল সেশন ইউজার) |
| Workflow তৈরি শর্টকাট | Workflow পেজে `platform.create` |

### ব্যবসায়িক অ্যাকশন × কে সিদ্ধান্ত নেবে

| মডিউল | Action | Permission (অ্যাক্টর) | Settings ON হলে কী হয় | কোথায় approve |
|--------|--------|------------------------|-------------------------|----------------|
| Attendance | `leave-approve` | `attendance.leave-approve` | Leave সিদ্ধান্ত request | Leave Approvals **বা** Inbox |
| Attendance | `correction-approve` | `attendance.correction-approve` | Correction সিদ্ধান্ত request | Correction Approvals **বা** Inbox |
| Attendance | `monthly-approve` | `attendance.monthly-approve` | Monthly approve request (ফ্লো অনুযায়ী) | Monthly Approval **বা** Inbox |
| Payroll | `run-approve` | `payroll.run-approve` | Run approval request | Run Approval পেজ **ডান কার্ড** **বা** Inbox |
| Payroll | `advance-approve` | `payroll.advance-approve` | Advance approval request | Advances **বা** Inbox |
| Employee | `create` / `update` / `delete` | `employee.create` ইত্যাদি | CRUD pending হতে পারে | Inbox / Employee UI |

অতিরিক্ত (approval Settings সারি নয়, কিন্তু সম্পর্কিত):

| Permission | কখন |
|------------|------|
| `attendance.correction-override-lock` | মাস লক থাকলেও correction approve |
| `attendance.monthly-unlock` | Monthly unlock |
| `payroll.month-freeze` | Freeze (আলাদা পেজ) |

### Requester vs Approver

| ভূমিকা | সাধারণত কী লাগে |
|--------|------------------|
| Requester | কাজের পারমিশন (যেমন `leave-apply`, `run-create` + generate) |
| Approver | সংশ্লিষ্ট `*-approve` + workflow-এ resolve + Inbox/মডিউল অ্যাকশন UI |

---

## ৫. Manifest default vs Enabled

| Manifest `requires_approval` | Settings `approval_enabled` | ফল |
|------------------------------|-----------------------------|-----|
| Yes | OFF | Bypass — সাথে execute |
| Yes | ON + workflow | Request → approve → execute |
| No | (সাধারণত লুকানো Approvable only-তে) | সাধারণত approval ফ্লো নয় |

শুধু Manifest Yes দেখে ভুলবেন না — **Enabled চেকবক্স** দেখুন।

---

## ৬. কোম্পানি স্কোপ

Settings **বর্তমান কোম্পানি** অনুযায়ী।  
কোম্পানি A-তে ON, B-তে OFF হতে পারে। হেডারে সঠিক কোম্পানি সিলেক্ট করে টগল করুন।

---

## ৭. FAQ

**প্রশ্ন: Enable করতে গিয়ে “Select a workflow”।**  
→ আগে Workflow কলামে সিলেক্ট; না থাকলে Create one।

**প্রশ্ন: Workflow ড্রপডাউন ডিজেবল।**  
→ Approval ইতিমধ্যে ON — আগে OFF করে বদলান, আবার ON।

**প্রশ্ন: টগল করলাম কিন্তু মডিউলে বাটন নেই।**  
→ Approver পারমিশন/রোল; request open হয়েছে কিনা; [Requests গাইড](./APPROVAL_REQUEST_USER_GUIDE_BN.md)।

**প্রশ্ন: Approvable only বন্ধ করলে অনেক সারি।**  
→ সব module action — শুধু পরীক্ষার জন্য; সাধারণত ON রাখুন।

**প্রশ্ন: Payroll Approve পেজে “No open approval request”。**  
→ এই Settings-এ `run-approve` Enabled? Workflow বাঁধা? Generate-এ requester ছিল? বিস্তারিত [Payroll গাইড](../payroll/PAYROLL_USER_GUIDE_BN.md)।

**প্রশ্ন: একই action-এ দুই workflow।**  
→ Settings-এ একসময়ে একটিই বাঁধা থাকে।

---

## ৮. এক লাইন

> **Settings = কোম্পানির সুইচবোর্ড · Workflow ছাড়া Enable নয় · Enabled ছাড়া Inbox খালি।**
