# প্রজেক্ট ম্যানেজমেন্ট — ব্যবহারকারী গাইড

এই গাইড তাদের জন্য যারা প্রতিদিন ক্লায়েন্ট, প্রজেক্ট, সার্ভিস, কন্ট্রাক্ট আর টিম নিয়ে কাজ করেন — কোড বা সিস্টেম আর্কিটেকচার জানার দরকার নেই।

পড়ার পর আপনি বুঝতে পারবেন:

- Client → Project → Service → Contract → Team → Payment কীভাবে জড়িত  
- স্ক্রিনে কোথায় গিয়ে কী করতে হবে  
- **কোন কাজের পর কোন কাজ** — নতুন ক্লায়েন্ট থেকে কন্ট্রাক্ট চালু পর্যন্ত  
- Act As, BD/PD, PM — সাধারণ ভুলগুলো কীভাবে এড়াবেন  
- কমিশন কোথায় শুরু হয় (বিস্তারিত কমিশন গাইডে)

শর্টকাট মনে রাখুন:

> **আগে Config + Client → তারপর Project + Service লিংক → তারপর Contract → Team Assignment (মেম্বার + শেয়ার) → Activate → পরে Payments / কমিশন।**

কমিশন Calculate → Approve → Post → Payout নিয়ে আলাদা গাইড:

- [`commission/COMMISSION_USER_GUIDE_BN.md`](./commission/COMMISSION_USER_GUIDE_BN.md)

অন্য মডিউল (একই স্টাইল):

- [Employee](../employee/EMPLOYEE_USER_GUIDE_BN.md) · [Attendance](../attendance/ATTENDANCE_USER_GUIDE_BN.md) · [Payroll](../payroll/PAYROLL_USER_GUIDE_BN.md)

---

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

ক্লায়েন্টের কাজের ছাতা হলো **Project**। তার নিচে এক বা একাধিক **Service** (SEO, Digital Marketing ইত্যাদি)। প্রতিটি সার্ভিসের বাণিজ্যিক চুক্তি হলো **Contract** — এখানেই মূল্য, তারিখ, টিম, শেয়ার, পেমেন্ট আর কমিশনের দরজা।

Permanent “হোম টিম” আর কন্ট্রাক্টে কে কী রোলে কাজ করবে — এ দুটো আলাদা।

```text
Client
   └── Project
          ├── Services (প্রজেক্টে কোন সার্ভিস লাগানো)
          └── Contract  (একটি সার্ভিসের চুক্তি)
                 ├── Team Assignment  → কে আছে, কত %, BD/PD শেয়ার
                 ├── Attachments      → চুক্তির ফাইল
                 └── Payments         → ক্লিয়ার + কমিশন রান
```

**মনে রাখবেন:** দৈনন্দিন বাণিজ্যিক কাজের কেন্দ্র **Contract**। Project শুধু ছাতা; কমিশনের বাড়িও কন্ট্রাক্ট।

---

## ২. সম্পর্কগুলো সহজ ভাষায়

### Client
যার জন্য কাজ করছেন। এক ক্লায়েন্টের একাধিক প্রজেক্ট থাকতে পারে।

### Project
ক্লায়েন্টের সাথে একটা overall engagement।  
স্ট্যাটাস উদাহরণ: Draft → Active → On hold / Completed / Cancelled।

প্রজেক্টে **Services** ট্যাব/সেকশন থেকে ক্যাটালগের সার্ভিস লাগাতে হয়। কন্ট্রাক্ট বানানোর আগে অন্তত সংশ্লিষ্ট সার্ভিস লিংক থাকতে হবে।

### Service (ক্যাটালগ) vs Project-এ সার্ভিস লিংক
| জিনিস | মানে | কোথায় |
|--------|------|--------|
| **Service ক্যাটালগ** | কোম্পানির অফার করা সার্ভিসের তালিকা (SEO, DM…) | **Project → Config → Services** |
| **Project service link** | এই প্রজেক্টে কোন সার্ভিস চলছে | **Projects** খুলে Services ট্যাব |

ক্যাটালগে সার্ভিস না থাকলে প্রজেক্টে লাগাতে পারবেন না।

### Contract
এক প্রজেক্ট + এক সার্ভিসের চুক্তি। মূল্য, কারেন্সি, বিলিং টাইপ, শুরুর তারিখ, স্ট্যাটাস এখানে।

এক প্রজেক্টে একাধিক কন্ট্রাক্ট থাকতে পারে (ভিন্ন সার্ভিস বা ভিন্ন চুক্তি)।

### Permanent Service Team vs Contract Team Assignment
| জিনিস | মানে | না থাকলে |
|--------|------|----------|
| **Service Team + Members** | লোকজনের “হোম রোস্টার” (যেমন SEO Team) | অ্যাসাইনমেন্টে পিক করতে অসুবিধা / রিপোর্টে খালি |
| **Contract Team Assignment** | এই কন্ট্রাক্টে কে BD/PD সাইডে, কত %, কোন রোল | কমিশন Calculate-এ কেউ নেই / শেয়ার এরর |

হোম টিমে থাকা মানেই কন্ট্রাক্টে অটো কমিশন পাওয়া নয় — **কন্ট্রাক্টের Team Assignment-এ আলাদা করে যোগ ও সেভ** করতে হয়।

### BD / PD / Team share
Team Assignment-এ তিন স্তরের শেয়ার:

```text
চুক্তি/ক্লিয়ার টাকা
   × Team share %     → টিম পুল
        ├── BD % of team pool
        └── PD % of team pool
              └── প্রতি মেম্বারের Commission %
```

মেম্বার % সাধারণত নিজের সাইডের (BD বা PD) পুলের ভাগ। শেয়ার সেভ না করলে পরে কমিশনে *Commission share not found…* আসতে পারে।

### Act As
কাউকে তার permanent ডিপার্টমেন্টের বাইরে এই কন্ট্রাক্টে অন্য রোলে দেখানো।  
Permanent টিম বদলায় না — শুধু এই চুক্তির দায়িত্ব/রোল।

### PM মানে কী
স্ক্রিন/ডক্সে **PM = Member of Project** (প্রজেক্ট মেম্বার), “Project Manager” পদ নয়। গুলিয়ে ফেলবেন না।

### Payments → Commission
ক্লায়েন্ট টাকা ক্লিয়ার হলে **Payments** ট্যাবে রেকর্ড → Draft কমিশন রান তৈরি। তারপরের ধাপ কমিশন গাইডে।

---

## ৩. স্ক্রিনে কোথায় যাবেন

মেনুতে সাধারণত **Project** সেকশনের নিচে:

| মেনু / পেজ | কী করবেন |
|------------|----------|
| **Config** | Category, Subcategory, Source, Services, Types — একবার সেটআপ |
| **Clients** | ক্লায়েন্ট তৈরি / এডিট |
| **Projects** | প্রজেক্ট তৈরি, সার্ভিস লাগানো, স্ট্যাটাস |
| **Contracts** | কন্ট্রাক্ট তালিকা + ড্রয়ার (Overview / Attachments / Team Assignment / Payments) |
| **Teams** | Service Teams & Members + Divisions & Contract Roles |
| **Reports** | অ্যাসাইনমেন্ট, টিম, কন্ট্রাক্ট স্ট্যাটাস, শেয়ার সামারি |
| **Dashboard** | এখনও placeholder (“Coming Soon”) — দৈনন্দিন কাজের জন্য লাগে না |

### Contract ড্রয়ারের ট্যাব
1. **Overview** — নম্বর, ক্লায়েন্ট, প্রজেক্ট, সার্ভিস, মূল্য, স্ট্যাটাস  
2. **Attachments** — চুক্তির PDF/ছবি  
3. **Team Assignment** — মেম্বার, %, BD/PD/টিম শেয়ার, কমিশন পলিসি — **এখান থেকেই সেটআপ**  
4. **Payments** — payment cleared + কমিশন Calculate / Approve / Post / Mark paid  

বাটন না দেখলে সাধারণত পারমিশন — অ্যাডমিনকে বলুন।

---

## ৩ক. প্রতিটি এলাকার ফিচার (বিস্তারিত)

### Config
| ট্যাব | কী করবেন |
|-------|----------|
| **Category** | প্রজেক্ট ক্যাটাগরি CRUD / অ্যাকটিভ |
| **Subcategory** | সাবক্যাটাগরি (প্যারেন্ট ক্যাটাগরির নিচে) |
| **Source** | প্রজেক্ট/লিড সোর্স মাস্টার |
| **Services** | সার্ভিস ক্যাটালগ (SEO, DM…) — প্রজেক্টে লাগানোর আগে এখানে থাকতে হবে |
| **Types** | প্রজেক্ট টাইপ মাস্টার |

### Clients
তালিকা, সার্চ, তৈরি/এডিট/ভিউ — নাম ও ক্লায়েন্ট ফিল্ড সেভ।

### Projects
| ফিচার | কী |
|--------|-----|
| তালিকা + ফিল্টার | স্ট্যাটাস, ক্লায়েন্ট, টাইপ, ক্যাটাগরি, সার্চ |
| Create / Edit / View ড্রয়ার | নাম, ক্লায়েন্ট, টাইপ, ক্যাটাগরি, তারিখ, বর্ণনা, স্ট্যাটাস |
| **Services ট্যাব** | ক্যাটালগ থেকে অ্যাটাচ / ডিটাচ (ডুপ্লিকেট লাগে না) |
| স্ট্যাটাস | draft / active / on_hold / completed / cancelled |

### Contracts
| ফিচার | কী |
|--------|-----|
| তালিকা + ফিল্টার | প্রজেক্ট/ক্লায়েন্ট/স্ট্যাটাস |
| Create / Edit | প্রজেক্ট, সার্ভিস লিংক, মূল্য, কারেন্সি, billing (retainer/fixed/hourly/milestone), renewal, তারিখ, নোট |
| **Overview** | সারাংশ + স্ট্যাটাস ব্যাজ; Edit Contract |
| **Attachments** | আপলোড, প্রিভিউ, থাম্বনেইল; তৈরির সময়ও স্টেজ করা যায় |
| **Team Assignment** | নিচে বিস্তারিত |
| **Payments** | payment cleared + কমিশন অ্যাকশন |
| স্ট্যাটাস ট্রানজিশন | Draft → Pending approval → Active; Active থেকে completed / suspended / cancelled / terminated / expired / renewed ইত্যাদি (অনুমোদিত পথে) |
| Activate ব্লকার | মূল্য > ০, start date, active project-service লিংক |

### Team Assignment (কন্ট্রাক্ট ড্রয়ার)
| অংশ | কী |
|------|-----|
| Commission distribution | Team share %, BD %, PD %, effective from |
| BD / PD মেম্বার তালিকা | কর্মী, রোল, Act As, commission %, duration |
| কমিশন পলিসি | with_salary / separate, eligibility ইত্যাদি (EN/বাংলা ফর্ম টগল থাকতে পারে) |
| Save all | মেম্বার + শেয়ার + পলিসি একসাথে সেভ — শুধু নাম যোগ করে বের হবেন না |

### Payments (কন্ট্রাক্ট)
Record payment cleared (amount, date, reference, payout override) → Draft রান → Calculate / Approve / Post → separate হলে Mark paid। বিস্তারিত: [কমিশন গাইড](./commission/COMMISSION_USER_GUIDE_BN.md)।

### Teams পেজ
| ট্যাব | কী |
|-------|-----|
| **Service Teams & Members** | সার্ভিস টিম তৈরি + স্থায়ী মেম্বার যোগ/সরানো |
| **Divisions & Contract Roles** | BD/PD ডিভিশন ও কন্ট্রাক্ট রোল ক্যাটালগ |

### Reports
| রিপোর্ট | কী দেখায় |
|---------|-----------|
| Employee Assignments | Permanent টিম vs কন্ট্রাক্ট অ্যাসাইনমেন্ট / Act As |
| Project Teams | প্রজেক্টভিত্তিক টিম |
| Contract Teams | কন্ট্রাক্টভিত্তিক টিম |
| Service Teams | সার্ভিস রোস্টার |
| Contract Status | কন্ট্রাক্ট স্ট্যাটাস ওভারভিউ |
| Team Share Summary | শেয়ার সামারি (কমিশন ইনপুট চেক) |

### অন্যান্য রুট
- `/project/contracts/:id/commission` — কমিশন কনফিগ ফুল পেজ (সাধারণত Team Assignment থেকে)  
- Dashboard — এখনও Coming Soon  

---

## ৪. পুরো ফ্লো — কোনটার পর কোনটা

নিচের অর্ডার ভাঙবেন না। আগে Config/Service ছাড়া প্রজেক্ট–কন্ট্রাক্ট আটকে যাবে।

### ধাপ ০ — একবারের কোম্পানি সেটআপ (Config + Teams)

1. **Project → Config**  
   - **Types** — প্রজেক্ট টাইপ  
   - **Category / Subcategory** — শ্রেণি  
   - **Source** — লিড/প্রজেক্ট সোর্স (যদি ব্যবহার করেন)  
   - **Services** — যে সার্ভিস অফার করেন, অ্যাকটিভ করে রাখুন  

2. **Project → Teams**  
   - **Service Teams & Members** — যেমন SEO Team, সেখানে স্থায়ী মেম্বার  
   - **Divisions & Contract Roles** — BD/PD ডিভিশন ও কন্ট্রাক্ট রোল ক্যাটালগ (প্রয়োজনমতো)  

> স্ক্রিনের নোটিস মনে রাখুন: BD/PD কোনো সার্ভিসের স্থায়ী ভাগ নয় — যেকোনো permanent মেম্বারকে কন্ট্রাক্টে BD বা PD সাইডে অ্যাসাইন করা যায়।

### ধাপ ১ — Client

1. **Clients** → নতুন ক্লায়েন্ট  
2. নাম ও প্রয়োজনীয় তথ্য সেভ  

ক্লায়েন্ট ছাড়া প্রজেক্ট বানানো যায় না (বা বাধ্যতামূলক ফিল্ড)।

### ধাপ ২ — Project + Service লিংক

1. **Projects → Create**  
2. নাম, Client, Type, Category, তারিখ, স্ট্যাটাস  
3. **Services** ট্যাবে ক্যাটালগ থেকে সার্ভিস অ্যাটাচ করুন (যেগুলোর জন্য কন্ট্রাক্ট হবে)  
4. প্রজেক্ট **Active** করুন যখন কাজ শুরু  

একই সার্ভিস দুবার লাগানো যায় না — ইতিমধ্যে অ্যাটাচ থাকলে ড্রপডাউনে আর আসবে না।

### ধাপ ৩ — Contract তৈরি

1. **Contracts → Create** (বা প্রজেক্ট/ক্লায়েন্ট ফিল্টার করে)  
2. প্রজেক্ট সিলেক্ট → **সেই প্রজেক্টে লিংক করা সার্ভিস** সিলেক্ট  
3. মূল্য (> ০), কারেন্সি, বিলিং টাইপ, শুরুর তারিখ, রিনিউয়াল টাইপ  
4. প্রয়োজনে অ্যাটাচমেন্ট আপলোড  
5. প্রথমে সাধারণত **Draft** রাখুন  

**Activate**-এর আগে সিস্টেম চেক করতে পারে:

- মূল্য > ০  
- Start date আছে  
- Active project service লিংক আছে  

ব্লকার থাকলে আগে ঠিক করুন, তারপর Activate / Pending approval → Active।

### ধাপ ৪ — Team Assignment (প্রতি কন্ট্রাক্ট)

1. কন্ট্রাক্ট খুলুন → **Team Assignment**  
2. **Commission distribution** সেভ করুন:  
   - Team share % of contract  
   - BD % of team pool  
   - PD % of team pool  
   - Effective from (তারিখ)  
3. BD / PD সাইডে মেম্বার যোগ করুন — প্রত্যেকের:  
   - রোল (প্রয়োজনমতো Act As)  
   - Commission %  
   - Duration (`one_time` / `lifetime`) ইত্যাদি পলিসি ফিল্ড  
4. **Save all / Save Team Assignment** — শুধু নাম যোগ করে বের হয়ে গেলে শেয়ার সেভ নাও হতে পারে  

মেম্বার % আর BD/PD শেয়ার লজিক্যাল মিলিয়ে নিন (স্ক্রিনেও হিন্ট থাকে)।

### ধাপ ৫ — কন্ট্রাক্ট Active + দৈনন্দিন

1. স্ট্যাটাস ট্রানজিশন দিয়ে **Active** করুন (পারমিশন থাকলে)  
2. টাকা এলে → **Payments** → Record payment cleared  
3. তারপর কমিশন ফ্লো: Calculate → Approve → Post → with salary / Mark paid  

বিস্তারিত: [কমিশন ইউজার গাইড](./commission/COMMISSION_USER_GUIDE_BN.md)।

### ধাপ ৬ — শেষ / বিরতি (প্রয়োজনে)

কন্ট্রাক্ট স্ট্যাটাস উদাহরণ (অনুমোদিত পথে):

- Draft → Pending approval → Active  
- Active → Completed / Suspended / Cancelled / Terminated / Expired / Renewed  

কিছু স্ট্যাটাস টার্মিনাল (Completed, Cancelled, Terminated) — সেখান থেকে ফিরে যাওয়া যায় না। ভুল করলে নতুন কন্ট্রাক্ট/প্রসেস ভাবুন।

---

## ৫. Teams পেজ — কী কী আছে

### Service Teams & Members
- সার্ভিসভিত্তিক স্থায়ী টিম তৈরি  
- মেম্বার যোগ/সরানো  

এটা “হোম রোস্টার” — কন্ট্রাক্ট অ্যাসাইনমেন্ট নয়।

### Divisions & Contract Roles
- ডিভিশন (যেমন BD / PD কনফিগ)  
- কন্ট্রাক্টে ব্যবহারযোগ্য রোল ক্যাটালগ  

দৈনন্দিন অ্যাসাইনমেন্ট আবারও **Contracts → Team Assignment**-এ।

---

## ৬. রিপোর্ট — কখন দেখবেন

**Project → Reports** ট্যাবগুলো:

| রিপোর্ট | কী দেখায় |
|---------|-----------|
| **Employee Assignments** | কার permanent টিম কী, কোন কন্ট্রাক্টে Act As / অ্যাসাইনমেন্ট |
| **Project Teams** | প্রজেক্টভিত্তিক টিম দৃশ্য |
| **Contract Teams** | কন্ট্রাক্টভিত্তিক টিম |
| **Service Teams** | সার্ভিস টিম রোস্টার |
| **Contract Status** | কন্ট্রাক্ট স্ট্যাটাস ওভারভিউ |
| **Team Share Summary** | শেয়ার সামারি (কমিশন ইনপুট চেক) |

Permanent membership বদলাতে Reports লাগে না — Teams / HR প্রসেস দিয়ে। Reports শুধু দেখার জন্য।

---

## ৭. দৈনন্দিন চেকলিস্ট

### নতুন ক্লায়েন্ট / প্রজেক্ট শুরু
- [ ] Config — Type, Category, Service ক্যাটালগে আছে  
- [ ] Client তৈরি  
- [ ] Project তৈরি + সঠিক Service লিংক  
- [ ] প্রয়োজনে Service Team-এ মেম্বার আছে  

### নতুন কন্ট্রাক্ট
- [ ] সঠিক Project + Service সিলেক্ট  
- [ ] মূল্য, কারেন্সি, start date  
- [ ] Team Assignment — মেম্বার + % + duration  
- [ ] **Team / BD / PD শেয়ার সেভ হয়েছে**  
- [ ] কমিশন পলিসি (with salary / separate) ঠিক  
- [ ] Activate-এর ব্লকার নেই  
- [ ] Active করা হয়েছে  

### প্রতি কিস্তি টাকা এলে
- [ ] Contracts → Payments → Record payment cleared  
- [ ] নতুন কিস্তি = নতুন Reference  
- [ ] কমিশন গাইড অনুসারে Calculate → Approve → Post  

---

## ৮. সাধারণ সমস্যা — কী বোঝায়, কী করবেন

| আপনি যা দেখছেন | আসলে কী | কী করবেন |
|----------------|---------|----------|
| কন্ট্রাক্টে সার্ভিস ড্রপডাউন খালি | প্রজেক্টে সার্ভিস লিংক নেই | Projects → Services অ্যাটাচ করুন |
| Activate ব্লক / এরর | মূল্য ≤ ০, start date নেই, বা service link নেই | Overview/Edit ঠিক করে আবার চেষ্টা |
| Team Assignment-এ লোক পাই না | Service team / employee সেটআপ নেই | Teams → Members; Employee মডিউল চেক |
| *Commission share not found…* | কন্ট্রাক্টে টিম শেয়ার সেভ নেই | Team Assignment → শেয়ার সেভ → Calculate |
| কমিশনে কেউ নেই / সবাই skip | মেম্বার/% নেই বা duration বাইরে | Team Assignment ঠিক করে Calculate |
| Permanent টিমে আছে কিন্তু কমিশন নেই | কন্ট্রাক্ট অ্যাসাইনমেন্টে নেই | Team Assignment-এ যোগ + Save |
| “PM” নিয়ে বিভ্রান্তি | এখানে PM = Member of Project | পদবি Project Manager ধরবেন না |
| বাটন/মেনু নেই | পারমিশন | অ্যাডমিনকে বলুন |
| Dashboard খালি | এখনও Coming Soon | Projects / Contracts দিয়ে কাজ করুন |
| Attachment আপলোড হয় না | সাইজ/টাইপ বা পারমিশন | অনুমোদিত ফাইল + contracts-manage চেক |

---

## ৯. কে সাধারণত কী করেন

| কাজ | সাধারণত কে |
|-----|------------|
| Config (Type, Category, Service) | Admin / Ops lead |
| Client / Project তৈরি | Project / Ops |
| Service লিংক | Project ops |
| Contract তৈরি ও Activate | Project / Commercial |
| Team Assignment / শেয়ার / পলিসি | Project / Ops |
| Service Team মেম্বারশিপ | Ops / Team lead |
| Payment cleared | Project বা Finance ops |
| Calculate / Approve / Post / Mark paid | কমিশন গাইড দেখুন |
| Reports | Manager / Ops |

কোম্পানিভেদে বাটন আলাদা দেখা যেতে পারে।

---

## ১০. শেষ কথা — এক লাইনের সূত্র

> **Config + Client → Project + Service লিংক → Contract → Team Assignment (মেম্বার + শেয়ার) সেভ → Active → Payments → কমিশন ফ্লো।**

এই অর্ডার ধরলে মডিউল মসৃণ চলবে। আটকে গেলে প্রথমে দেখুন:

1. প্রজেক্টে **সার্ভিস লিংক** আছে তো?  
2. Team Assignment-এ **শেয়ার সেভ** আছে তো?  

বেশিরভাগ ব্লক এ দুই জায়গা থেকেই আসে।

---

## অতিরিক্ত পড়া (ঐচ্ছিক)

দৈনন্দিন ব্যবহারের জন্য **এই গাইডই যথেষ্ট**। আরও গভীরে:

- [কমিশন ইউজার গাইড](./commission/COMMISSION_USER_GUIDE_BN.md) — Calculate / Approve / Post / Payout  
- [`Project Management System — Business SRS.md`](./Project%20Management%20System%20%E2%80%94%20Business%20SRS.md) — বিজনেস রুল  
- [`pms-demo-seeder.md`](./pms-demo-seeder.md) — ডেমো ডেটা সিড  
- `wbs/` — ডেভেলপার প্ল্যানিং (ইউজারের দরকার নেই)
