# পেরোল (Payroll) মডিউল — ব্যবহারকারী গাইড

এই গাইড তাদের জন্য যারা বেতন কাঠামো, মাসিক রান, payslip, অ্যাপ্রুভাল বা ডিসবার্সমেন্ট করেন — কোড জানার দরকার নেই।

পড়ার পর: কোন মেনু কোথায়, কোন অর্ডারে কাজ, কে Approve করে, পারমিশন কী লাগে, সাধারণ প্রশ্ন (FAQ)।

শর্টকাট:

> **Structure + Employee Salary/Bank → Attendance Monthly Approval → Payroll Freeze → Create Run → Snapshots → Generate Payslips → Approve → Disbursement (Send / Confirm)।**

সম্পর্কিত: [Employee](../employee/EMPLOYEE_USER_GUIDE_BN.md) · [Attendance](../attendance/ATTENDANCE_USER_GUIDE_BN.md) · [কমিশন](../project-management/commission/COMMISSION_USER_GUIDE_BN.md) · [Approval Workflows](../approval/APPROVAL_WORKFLOW_USER_GUIDE_BN.md) · [Approval Settings](../approval/APPROVAL_SETTINGS_USER_GUIDE_BN.md) · [Approval Requests](../approval/APPROVAL_REQUEST_USER_GUIDE_BN.md)

বিজনেস/API বিস্তারিত (ঐচ্ছিক): [`PAYROLL_MODULE_BUSINESS_LOGIC_BN.md`](./PAYROLL_MODULE_BUSINESS_LOGIC_BN.md)

---

## ১. গল্পটা এক নজরে

```text
Config: Salary Structures · Settings · Tax Slabs · Deductions
   + Employee: Salary / Bank / Tax (+ Advances)
        └── Attendance Monthly Approval (সব কর্মী Approved)
               └── Payroll Monthly Freeze
                      └── Payroll Run (এক মাসে এক regular run)
                             ├── Attendance Snapshots (হাজিরার লক কপি)
                             ├── Generate Payslips (queue → progress %)
                             ├── Approval Decision (platform workflow থাকলে Inbox)
                             └── Disbursement batches → Send → Confirm → Paid
```

কমিশন **Post** + payout মোড `with_salary` হলে payslip-এ **Commission** লাইন আসতে পারে।  
`separate` হলে Payroll নয় — কমিশন সাইডের payout।

---

## ২. UI ম্যাপ — মেনু ও URL

সাইডবার থেকে **Payroll** (`payroll.menu-view`)।

### ২.১ হোম (`/payroll`)

| কার্ড | পথ | পারমিশন (সংক্ষেপ) |
|-------|-----|-------------------|
| Configuration | `/payroll/config` | settings / structure / deduction… |
| Monthly Freeze | `/payroll/monthly-freeze` | `payroll.month-freeze` |
| Payroll Runs | `/payroll/payroll-runs` | `payroll.run-create` |
| My Payslips | `/payroll/my-payslips` | `payroll.payslip-view-own` |
| Disbursement | `/payroll/disbursement-batches` | `payroll.disburse` |

**Salary Advances** আলাদা মেনু: `/payroll/salary-advances` — Settings-এ advance চালু + `payroll.advance-manage`।

কার্ড না দেখলে → পারমিশন ইস্যু।

### ২.২ Configuration রুট

| স্ক্রিন | URL |
|---------|-----|
| Config hub | `/payroll/config` |
| Settings | `/payroll/config/settings` |
| Salary Structures | `/payroll/config/salary-structures` |
| Structure detail | `/payroll/config/salary-structures/:id` |
| Components | `/payroll/config/salary-structures/:id/components` |
| Tax Slabs | `/payroll/config/tax-slabs` |
| Tax form | `/payroll/config/tax-slabs/:id` |
| Employee Deductions | `/payroll/employee-deductions` |

### ২.৩ রান ও পেআউট রুট

| স্ক্রিন | URL |
|---------|-----|
| Run list | `/payroll/payroll-runs` |
| Create run | `/payroll/payroll-runs/create` |
| Run detail | `/payroll/payroll-runs/:id` |
| Snapshots | `/payroll/payroll-runs/:id/snapshots` |
| Snapshot detail | `…/snapshots/:employeeId` |
| Payslips (রান) | `/payroll/payroll-runs/:id/payslips` |
| Approval | `/payroll/payroll-runs/:id/approval` |
| Payslip detail | `/payroll/payslips/:id` |
| Disbursement batches | `/payroll/disbursement-batches` |
| Batch detail | `/payroll/disbursement-batches/:id` |

### ২.৪ স্ক্রিন লেআউট — কোথায় কী (বাম / ডান / উপর)

পুরো অ্যাপ: **বাম সাইডবার** = মডিউল মেনু · **উপরের হেডার** = কোম্পানি সুইচ / প্রোফাইল · মাঝখানে = পেজ কন্টেন্ট।

#### অ্যাপ শেল
| জায়গা | কী পাবেন |
|--------|----------|
| স্ক্রিনের **বাম দিক** | Sidebar — এখান থেকে **Payroll** ক্লিক |
| স্ক্রিনের **উপর** | Header — কোম্পানি বদল, ইউজার মেনু |
| মাঝখানের এলাকা | যে পেজ খুলেছেন তার কন্টেন্ট |

#### Payroll হোম (`/payroll`)
| জায়গা | কী |
|--------|-----|
| পেজের **উপর** | শিরোনাম “Payroll” |
| তার **নিচে গ্রিড কার্ড** | Configuration · Monthly Freeze · Payroll Runs · My Payslips · Disbursement — কার্ডের **নিচের ডানদিকে** “Open section” |

#### Configuration
| জায়গা | কী |
|--------|-----|
| পেজের **উপরের নিচে** (শিরোনামের নিচে) | ট্যাব স্ট্রিপ: **Salary Structures \| Settings \| Tax Slabs \| Deductions & Loans** (বাম → ডান) |
| Structures তালিকা — **উপরের ডান** | New / Create বাটন (পারমিশন থাকলে) |
| Structure detail — সাধারণত **মধ্য/বাম** | মেটাডেটা; **Components** লিংক/ট্যাব থেকে কম্পোনেন্ট পেজ |
| Components পেজ | ক্যানভাসে লাইন আইটেম; প্রিভিউ প্যানেল পাশে/নিচে; Save উপর বা ফর্ম ফুটারে |

#### Monthly Freeze (`/payroll/monthly-freeze`)
| জায়গা | কী |
|--------|-----|
| **উপরের ডান** (শিরোনামের পাশে) | **Bulk Freeze (N)** — শুধু টেবিলে চেক করলে দেখা যায় |
| শিরোনামের **ঠিক নিচে** ফিল্টার কার্ড | বাম থেকে: Frozen Status · Month · Year (+ employee থাকলে) |
| **মধ্যে** টেবিল | বাম কলাম = চেকবক্স; ডানদিকের Actions = প্রতি সারিতে **Freeze** / **Unfreeze** |
| Unfreeze | ক্লিক করলে **মোডাল** খোলে (কারণ লিখে Confirm) |

#### Payroll Runs তালিকা (`/payroll/payroll-runs`)
| জায়গা | কী |
|--------|-----|
| **উপরের ডান** | নীল **Create Run** (+ আইকন) |
| টেবিলের **উপর বাম** | Month / Year ফিল্টার |
| টেবিল সারি | Period ক্লিক বা **ডানদিকের View** → রান ডিটেইল |

#### Create Run (`/payroll/payroll-runs/create`)
| জায়গা | কী |
|--------|-----|
| **উপর বাম** | ← Back |
| ফর্ম এলাকা | Month, Year, Run type |
| নিচে | Readiness সামারি + Not ready টেবিল (কারণ + **Fix** লিংক ডানে) |
| Override টিক | পারমিশন থাকলে readiness ব্লকের কাছে |
| **নিচ/প্রাইমারি** | Create বাটন (ready না হলে ডিজেবল) |

#### Run detail (`/payroll/payroll-runs/:id`)
| জায়গা | কী |
|--------|-----|
| **উপর বাম** | ← ব্যাক অ্যারো (লিস্টে ফেরা) |
| **উপর বাম** শিরোনাম | Run #id + স্ট্যাটাস ব্যাজ |
| **বাম বড় কলাম** (~২/৩) | উপর: **Lifecycle** টাইমলাইন · নিচে: **Run Summary** কার্ড |
| **ডান সাইডবার** (~১/৩) | কার্ড **Quick Links** — উপর থেকে নিচে: |
| | 1) **Attendance Snapshots** |
| | 2) **View Payslips** |
| | 3) **Approval Decision** (পারমিশন থাকলে; pending হলে প্রাইমারি রং) |
| | 4) **Disbursement** (শুধু approved/paid) |

> Generate / Build এই ডিটেইল পেজে নয় — **Snapshots** ও **Payslips** পেজের উপরের ডানে।

#### Snapshots পেজ
| জায়গা | কী |
|--------|-----|
| **উপর বাম** | ← Back |
| **উপরের ডান** | **Build attendance snapshots** (শুধু Draft রানে) |
| নিচে | স্ট্যাটাস ব্যাজ · স্ন্যাপশট টেবিল · blocker থাকলে আলাদা কার্ড |

#### Payslips (রান) পেজ
| জায়গা | কী |
|--------|-----|
| **উপর বাম** | ← Back |
| **উপরের ডান** | **Generate Payslips** (Draft + পারমিশন; জেনারেশন চললে লুকিয়ে যেতে পারে) |
| শিরোনামের **নিচে** | Generation progress বার / % |
| তার নিচে | Needs Review ফিল্টার (বাম দিকে) + টেবিল |

#### Approval পেজ (`…/approval`)
| জায়গা | কী |
|--------|-----|
| **উপরের ডান** | **Back to run** |
| **বাম বড় কলাম** | Run Summary (Net Pay / Net Payable) · Needs Review · Advance Settlement Preview |
| **ডান সাইডবার** | কার্ড **Approval Decision** — এখানেই **Approve** (সবুজ/প্রাইমারি) ও **Reject** (লাল) পুরো চওড়ায় |
| Approve-এর নিচে | ব্লক হলে হলুদ/লাল ছোট মেসেজ (“No open approval request…” ইত্যাদি) |
| Approval Decision-এর **নিচে** | **Approval Trail** কার্ড |

#### Disbursement
| জায়গা | কী |
|--------|-----|
| পেজের **উপর** | শিরোনাম; রান সিলেক্টর/ফিল্টার |
| উপরের কার্ড এলাকা | Channel summary · Readiness প্যানেল |
| Primary অ্যাকশন | Create / Disburse কনফার্ম (পেজ/ডায়ালগ অনুযায়ী) |
| নিচে | ব্যাচ টেবিল — সারি ক্লিক → Batch detail |
| Batch detail | Send · Confirm · Retry · Acknowledge · Export — সাধারণত উপরের অ্যাকশন বা সারি Actions কলামে |

#### Salary Advances
| জায়গা | কী |
|--------|-----|
| তালিকা **উপরের ডান** | New / Request |
| সারি ক্লিক | **ডানদিকে Drawer** খোলে (request · approval · handover · settlement) |

---

## ৩. কে কী করেন + পারমিশন

| কাজ | কে | প্রধান পারমিশন |
|-----|-----|----------------|
| মেনু দেখা | সবাই (রোল অনুযায়ী) | `payroll.menu-view` |
| Structures | Payroll admin | `payroll.structure-manage` |
| Settings / Tax | Payroll admin | `payroll.settings-manage` |
| Deductions | Payroll / Finance | `payroll.deduction-manage` |
| Advances manage | Payroll / Finance | `payroll.advance-manage` |
| Advance approve | Approver | `payroll.advance-approve` (+ workflow) |
| Employee Salary / Bank | HR (+ Payroll) | Employee মডিউল পারমিশন |
| Monthly Freeze | Payroll ops | `payroll.month-freeze` |
| Unfreeze (paid মাস) | Admin | `payroll.month-unfreeze-paid` |
| Create / process run | Payroll ops | `payroll.run-create` |
| Readiness override | Senior ops | `payroll.run-override-readiness` |
| Approve run | Approver | `payroll.run-approve` |
| সব payslip দেখা | Ops | `payroll.payslip-view-all` |
| নিজের payslip | কর্মচারী | `payroll.payslip-view-own` |
| Disburse | Finance | `payroll.disburse` |

> **Approve বাটন** দেখতে: পারমিশন **এবং** (workflow ON হলে) আপনি সেই request-এর **active approver** হতে হবে। ভুল ইমেইলে লগইন করলে বাটন থাকবে না।

---

## ৪. একবার সেটআপ — ধাপে ধাপে

### ধাপ A — Salary Structure
1. **Payroll → Configuration → Salary Structures** → New।  
2. নাম/কোড সেভ → Detail খুলুন।  
3. **Components** পেজ: earnings / deductions (ফিক্সড বা %), অর্ডার (drag)।  
4. **Payslip preview** দিয়ে নমুনা দেখুন।  
5. **Activate** — components অসম্পূর্ণ হলে ব্লক + কারণ দেখাবে (Readiness)।  

Deactivate করলে নতুন অ্যাসাইনমেন্টে ব্যবহার হবে না; পুরনো রান অপরিবর্তিত থাকতে পারে।

### ধাপ B — কর্মীতে Salary লাগানো
1. **Employee →** কর্মী খুলুন → **Salary** ট্যাব।  
2. Active structure, gross/basic, effective date, currency।  
3. এক কর্মীর একাধিক Active salary থাকলে “নতুনতম” ধরা হয় — **Inactive** স্ট্রাকচারে পয়েন্ট করা salary থাকলে payslip ফেল হতে পারে।

### ধাপ C — Bank / Payment account
1. Employee → **Bank** (বা payment account)।  
2. অন্তত একটা **primary** অ্যাকাউন্ট।  
3. না থাকলে payslip allocation / disbursement readiness ফেল।

### ধাপ D — Settings
পথ: **Config → Settings** (`payroll.settings-manage`)।

| এলাকা | মানে |
|--------|------|
| Overtime multiplier / rate base | OT হিসাব |
| Standard monthly hours / hourly method | ঘণ্টাপ্রতি রেট |
| Prorate method | Working days vs calendar |
| Round net pay | নেট রাউন্ডিং |
| **Advance enabled** + %/ceiling + approval লাগবে কি না | Advances মেনু চালু |
| Worked example | OT/অ্যাডভান্স উদাহরণ |

সেটিং বদলালে সাধারণত **ভবিষ্যৎ** জেনারেশন; ড্রাফট আবার generate করলে নতুন মান ধরতে পারে।

### ধাপ E — Tax Slabs (লাগলে)
1. **Config → Tax Slabs** → New / Edit brackets।  
2. Preview calculate → Activate সেট।  
3. কর্মী সাইডে Tax প্রোফাইল থাকলে মিলিয়ে নিন (Employee → Tax)।

### ধাপ F — Deductions / Loans
1. **Employee Deductions** তালিকা → New।  
2. টাইপ, অ্যামাউন্ট, কিস্তি, পিরিয়ড।  
3. Detail-এ এন্ট্রি হিস্ট্রি; Cancel নিয়মমতো।  
Payslip জেনারেশনে প্রাসঙ্গিক কিস্তি কেটে নেয়।

---

## ৫. Salary Advances — পূর্ণ ফ্লো

পথ: **Payroll → Salary Advances**  
শর্ত: Settings-এ advance **enabled** + `advance-manage`।

```text
New request → (Approve যদি লাগে) → Record payment (Paid)
    → মাসের payslip-এ settle / carry
    → Cancel শুধু unpaid/pending পর্যায়ে
```

| ধাপ | UI | কে |
|-----|-----|-----|
| ১. New | Request drawer — মাস, % বা ফিক্সড, সিলিং চেক | Requester |
| ২. Approve | ডিটেইল → Approve (পারমিশন / Platform Inbox) | Approver |
| ৩. Record payment | Handover drawer — paid | Finance |
| ৪. Settlement | Payslip generate/approve পর settle বা carry | System / ops |
| ৫. Cancel | Paid হলে cancel নয় | — |

ডিটেইল ড্রয়ার সেকশন: request · approval · handover · settlement।

---

## ৬. Attendance → Payroll ব্রিজ

পেরোল চালানোর **আগে** Attendance সাইড:

1. মাসের leave / correction কিউ খালি (বা সচেতন override)।  
2. **Attendance → Monthly Approval** → Build → সব প্রয়োজনীয় কর্মী **Approved** (+ লক)।  
3. বিস্তারিত: [Attendance গাইড § Monthly Approval](../attendance/ATTENDANCE_USER_GUIDE_BN.md)।

এর পরই Payroll Freeze।

---

## ৭. Monthly Freeze — ধাপে ধাপে

পথ: **সাইডবার → Payroll → Monthly Freeze** বা হোম কার্ড (`/payroll/monthly-freeze`)।

| ধাপ | কী করবেন | UI লোকেশন |
|-----|----------|-----------|
| ১ | মাস/বছর সিলেক্ট | শিরোনামের **নিচে** ফিল্টার কার্ড (বাম দিকে Month/Year/Frozen) |
| ২ | একক Freeze | টেবিল সারির **ডান** Actions → Freeze |
| ৩ | বাল্ক | সারির **বাম** চেকবক্স → **উপরের ডান** **Bulk Freeze (N)** |
| ৪ | Unfreeze | Actions → মোডালে কারণ → Confirm |

Freeze ছাড়া Create Run-এ **not ready** দেখাবে। Create পেজের Not ready টেবিলের **ডান Fix** এখানে নিয়ে আসে।

---

## ৮. Payroll Run — পুরো প্রসেস একের পর এক

### ৮.১ তালিকা
পথ: `/payroll/payroll-runs`  
**উপরের ডান:** নীল **Create Run** · টেবিলে Period ক্লিক বা সারির **ডান View**।

স্ট্যাটাস: Draft → Processing → Pending approval → Approved → Paid → Locked।

> এক মাসে এক `regular` run — already exists হলে লিস্ট থেকেই খুলুন।

### ৮.২ Create
| ধাপ | কী | UI |
|-----|-----|-----|
| ১ | Month / Year / type | ফর্ম মাঝখানে; **উপর বাম** ← Back |
| ২ | Readiness | ফর্মের **নিচে** Ready + Not ready টেবিল |
| ৩ | Fix / Override | টেবিল **ডানে Fix**; override টিক কাছে |
| ৪ | Create | প্রাইমারি বাটন → Run detail |

### ৮.৩ Run detail
| ব্লক | UI লোকেশন |
|------|-----------|
| Back + Run # + badge | **উপর বাম** |
| Lifecycle + Summary | **বাম** বড় কলাম (~২/৩) |
| Quick Links | **ডান** সাইডবার (~১/৩): Snapshots → View Payslips → Approval Decision → Disbursement |

> **Generate / Build এই পেজে নেই** — Snapshots ও Payslips পেজের **উপরের ডানে**।

### ৮.৪ Snapshots
```text
Run detail → ডান Quick Links → Attendance Snapshots
  → উপরের ডান: Build attendance snapshots (শুধু Draft)
  → নিচে টেবিল / blocker কার্ড
```

### ৮.৫ Generate Payslips
```text
Run detail → ডান → View Payslips
  → উপরের ডান: Generate Payslips
  → ঠিক নিচে progress % / succeeded-failed
  → শেষে Run ≈ pending_approval
```

প্রতি কর্মীতে লাগে: Snapshot · Active salary+structure · Primary bank · (ট্যাক্স হলে slab)।

### ৮.৬ Payslips দেখা
- রান স্লিপ: ডিটেইল **ডান** → View Payslips  
- ডিটেইল: টেবিল সারি → `/payroll/payslips/:id`  
- নিজের: হোম **My Payslips** কার্ড  

### ৮.৭ Approval Decision
পথ: Run detail → **ডান** → **Approval Decision**।

```text
বাম কলাম: Run Summary · Needs Review · Advance preview
ডান কার্ড "Approval Decision":
  → Approve (উপর, প্রাইমারি)
  → Reject (নিচে, লাল)
  → ব্লক হলে হলুদ/লাল ছোট টেক্সট
নিচে: Approval Trail
উপরের ডান: Back to run
```

| পরিস্থিতি | UI-তে কী | করবেন |
|-----------|----------|--------|
| Generation চলছে | ডান কার্ডে outstanding মেসেজ | অপেক্ষা |
| আপনি approver + request open | Approve/Reject দেখা যায় | সিদ্ধান্ত |
| No open approval request | ডান কার্ডে মেসেজ, বাটন নেই | Platform workflow ON + approver |
| Not an active approver | বাটন নেই | সঠিক ইমেইল/রোল |

Platform: **Approval Workflows** + **Approval Settings** → Payroll / `run-approve` Enable · আপনি step-এ · অথবা **Approval Inbox**।

---

## ৯. Disbursement — ধাপে ধাপে

পথ: হোম **Disbursement** কার্ড / সাইডবার, বা Run detail → **ডান** Disbursement।

| ধাপ | কী | UI |
|-----|-----|-----|
| ১ | Run সিলেক্ট | পেজের **উপর** ড্রপডাউন/ফিল্টার |
| ২ | Readiness + Channel summary | উপরের কার্ড প্যানেল |
| ৩ | Create batches | প্রাইমারি অ্যাকশন / Confirm ডায়ালগ |
| ৪ | Batch detail | টেবিল সারি |
| ৫ | Send → Confirm | ডিটেইল অ্যাকশন বাটন |
| ৬ | Retry / Acknowledge / Export | একই অ্যাকশন এলাকা |

Approve ছাড়া Disbursement Quick Link লুকানো/লক থাকে।

---

## ১০. কমিশন (with_salary) হ্যান্ডঅফ

1. Project/Commissioning: Calculate → Approve → **Post**।  
2. Payout মোড `with_salary` (বা সেই ক্লিয়ারের override)।  
3. ওই মাসের Payroll Run → Generate → Payslip-এ **Commission** লাইন।  

না দেখলে: Post হয়েছে? মোড `separate` তো নয়? সঠিক মাস/রান? → [কমিশন গাইড](../project-management/commission/COMMISSION_USER_GUIDE_BN.md)।

---

## ১১. পুরো মাসিক অর্ডার (চেকলিস্ট ফর্ম)

### সেটআপ (একবার / নতুন কোম্পানি)
- [ ] Structure Active + Components  
- [ ] Settings (OT, advance সুইচ)  
- [ ] Tax slabs (লাগলে)  
- [ ] প্রতি কর্মী: Salary + Primary Bank  
- [ ] Platform: `run-approve` workflow + settings (Approve লাগলে)  

### প্রতি মাস
1. Employee salary/bank আপ টু ডেট।  
2. Attendance → Monthly Approval সম্পন্ন।  
3. Payroll → **Monthly Freeze**।  
4. **Create Payroll Run** (readiness সবুজ)।  
5. **Build Snapshots** → নমুনা রিভিউ।  
6. **Generate Payslips** → ১০০% / failed তালিকা ঠিক।  
7. **Approval** → Approve (সঠিক approver)।  
8. **Disbursement** → readiness → create → send → confirm।  
9. কর্মচারী **My Payslips**।  

---

## ১২. FAQ

### মেনু ও পারমিশন
**প্রশ্ন: Payroll মেনু দেখি না।**  
→ `payroll.menu-view`। রোল অ্যাসাইন + logout/login।

**প্রশ্ন: Configuration / Freeze / Runs কার্ড নেই।**  
→ আলাদা পারমিশন (structure-manage, month-freeze, run-create…)।

**প্রশ্ন: Salary Advances মেনু নেই।**  
→ Settings-এ advance enabled বন্ধ, বা `advance-manage` নেই।

### সেটআপ ও ডেটা
**প্রশ্ন: Structure Activate হয় না।**  
→ Components incomplete — Components পেজে Ready/readiness মেসেজ দেখুন।

**প্রশ্ন: Payslip ফেল — “No active salary structure”।**  
→ Salary যে structure পয়েন্ট করে সেটা Active কিনা; পুরনো Inactive structure-এর Active salary বন্ধ করুন।

**প্রশ্ন: “No primary payment account”।**  
→ Employee Bank-এ primary অ্যাকাউন্ট যোগ করুন।

**প্রশ্ন: “No attendance snapshot”।**  
→ আগে Freeze + Run Draft-এ Build Snapshots, তারপর Generate।

### Freeze ও Run
**প্রশ্ন: Freeze হয় না।**  
→ Attendance Monthly Approval হয়নি / কর্মী pending।

**প্রশ্ন: আবার Create Run করতে পারছি না — already exists।**  
→ এক মাসে এক regular run। লিস্ট থেকে বিদ্যমান রান খুলুন। Demo রিসেট চাইলে অ্যাডমিন/সাপোর্ট।

**প্রশ্ন: Create-এ অনেকে Not ready।**  
→ কারণ কলাম পড়ুন (unfrozen / missing approval)। Fix → Freeze; বা override পারমিশন।

### Payslip generation
**প্রশ্ন: Progress ০%-এ আটকে।**  
→ Queue/Horizon চলছে কিনা; failed job; পরে আবার generate। ডেটা গ্যাপ থাকলে সব failed → reasons পড়ুন।

**প্রশ্ন: কিছু succeeded কিছু failed।**  
→ Failures JSON/লিস্ট: salary, bank, snapshot — কর্মী ধরে ঠিক করে regenerate (draft নিয়মমতো)।

### Approval
**প্রশ্ন: Approval পেজে বাটন নেই — “No open approval request”।**  
→ Platform-এ `payroll` / `run-approve` enable + workflow; generation-এ request open হয়েছে কিনা; আপনি approver কিনা।

**প্রশ্ন: “You are not an active approver”।**  
→ অন্য ইউজার/রোল resolve হয়েছে। সঠিক অ্যাকাউন্টে লগইন বা workflow-এ আপনার ইউজার/রোল যোগ করুন।

**প্রশ্ন: Generation শেষ না হলে Approve?**  
→ সাধারণত নয় — outstanding payslip থাকলে ব্লক।

**প্রশ্ন: Advance Approve কোথায়?**  
→ Advance ডিটেইল + `advance-approve`; workflow ON হলে Inbox।

### Disbursement
**প্রশ্ন: Disburse ব্লক।**  
→ রান Approve হয়নি; বা readiness (bank); বা `disburse` পারমিশন নেই।

**প্রশ্ন: Send/Confirm পর কী হয়?**  
→ ব্যাচ/আইটেম confirmed; রান Paid/Locked হতে পারে; payslip paid।

### কমিশন
**প্রশ্ন: Payslip-এ Commission নেই।**  
→ Post + `with_salary` + সঠিক মাস? `separate` হলে Payroll-এ আসবে না।

### অন্যান্য
**প্রশ্ন: Paid মাস Unfreeze যাচ্ছে না।**  
→ `month-unfreeze-paid` পারমিশন / অ্যাডমিন।

**প্রশ্ন: Advance cancel হয় না।**  
→ ইতিমধ্যে Paid — settle/carry; cancel নয়।

---

## ১৩. সাধারণ সমস্যা (সারাংশ টেবিল)

| দেখছেন | মানে | করবেন |
|---------|------|--------|
| Freeze হয় না | Attendance Approve হয়নি | Monthly Approval |
| Run already exists | এক মাসে এক regular | Existing রান খুলুন |
| Snapshot/রান এরর | Freeze/salary নেই | Freeze + Salary |
| Payslip ০% / fail | Queue বা ডেটা গ্যাপ | Horizon + failures ঠিক |
| Commission নেই | separate / না-Post | কমিশন গাইড |
| Approve বাটন নেই | পারমিশন / না-request / না-approver | Settings + Inbox + সঠিক ইউজার |
| Disburse ব্লক | না-Approve / bank | Approve + Bank + readiness |
| Advances মেনু নেই | সুইচ বন্ধ | Settings advance_enabled |
| Structure activate ব্লক | components | Components সম্পূর্ণ করুন |

---

## ১৪. এক লাইনের সূত্র

> **Structure + Salary/Bank → Attendance Approve → Freeze → Run → Snapshot → Payslips → Approve (সঠিক approver) → Disburse।**

আটকে গেলে জিজ্ঞাসা করুন: **Attendance Approve+Freeze? Salary+Bank? Snapshot? Generate ১০০%? আপনি run-approve approver?**
