# سامانه مدیریت بیمه تکمیلی درمان پرسنل

یک برنامه تحت وب برای مدیریت درخواست‌های هزینه بیمه تکمیلی درمان، با دو نقش:
- **کارمند**: آپلود مدارک و ثبت درخواست هزینه، مشاهده تاریخچه و مانده قابل دریافت
- **مدیر/مالی**: بررسی مدارک، تایید یا رد درخواست (با اعمال خودکار سقف‌های فردی و ترکیبی)، صدور فرم چاپی برای پرداخت، مدیریت کارمندان و ردیف‌های درمانی

## پیش‌نیازها روی هاست

- PHP نسخه 8.0 به بالا (سازگار با اکثر هاست‌های اشتراکی)
- MySQL 5.7+ یا MariaDB 10.2+
- افزونه‌های استاندارد PHP: `pdo_mysql`, `mbstring`, `fileinfo`

## مراحل نصب روی هاست اشتراکی (بدون نیاز به SSH یا CLI)

1. **آپلود فایل‌ها**: تمام محتوای این پوشه را با FTP یا فایل‌منیجر پنل هاست، داخل `public_html` (یا زیرپوشه‌ای که می‌خواهید سایت در آن باشد) آپلود کنید.

2. **ساخت پایگاه داده**: از پنل هاست (مثلاً cPanel) یک دیتابیس MySQL و یک کاربر با دسترسی کامل به آن بسازید.

3. **ویرایش `config.php`**: مقادیر `DB_HOST`, `DB_NAME`, `DB_USER`, `DB_PASS` را با اطلاعات دیتابیسی که ساختید جایگزین کنید.

4. **اجرای نصب**: در مرورگر به آدرس `https://yourdomain.com/install.php` بروید:
   - مرحله ۱: جداول پایگاه داده و چند ردیف درمانی نمونه ساخته می‌شود.
   - مرحله ۲: حساب کاربری مدیر/مالی اول را می‌سازید.

5. **حذف install.php**: بلافاصله بعد از نصب، فایل `install.php` را از روی هاست حذف کنید (نکته امنیتی مهم).

6. **ورود و تنظیم داده‌های واقعی**: با حساب مدیر وارد شوید و از منوی «ردیف‌ها و سقف‌ها»:
   - نام، سقف سالانه و مدارک لازم هر ردیف درمانی را با اعداد و مدارک واقعی شرکت خودتان جایگزین کنید (مقادیر فعلی صرفاً نمونه هستند).
   - سقف‌های ترکیبی را در صورت نیاز ویرایش یا اضافه کنید.
   - از منوی «مدیریت کارمندان» برای هر پرسنل یک حساب کاربری بسازید.

## نحوه کارکرد

- هر کارمند وارد می‌شود، ردیف درمانی مربوطه را انتخاب می‌کند (لیست مدارک لازم آن ردیف نمایش داده می‌شود)، مبلغ را وارد کرده و مدارک را آپلود می‌کند.
- درخواست با وضعیت «در انتظار بررسی» ثبت می‌شود.
- مدیر/مالی از صفحه «درخواست‌های در انتظار بررسی»، مدارک را مشاهده و بررسی می‌کند.
- سامانه به‌صورت خودکار مانده سقف فردی آن ردیف و سقف‌های ترکیبی مرتبط را محاسبه کرده و حداکثر مبلغ قابل تایید را پیشنهاد می‌دهد؛ اگر مبلغ درخواستی از سقف بیشتر باشد، مدیر نمی‌تواند بیش از سقف را تایید کند.
- پس از تایید، فرم چاپی قابل چاپ برای واحد مالی صادر می‌شود و مدیر می‌تواند پس از پرداخت واقعی، درخواست را «پرداخت‌شده» علامت بزند.
- تمام درخواست‌ها (تایید‌شده، رد‌شده، پرداخت‌شده) در تاریخچه باقی می‌مانند و هم کارمند و هم مدیر همیشه می‌توانند مانده قابل دریافت هر ردیف را ببینند.
- گزارش مانده همه پرسنل از منوی «گزارش مانده پرسنل» در دسترس مدیر است.

## نکات امنیتی

- رمزهای عبور با `password_hash` (bcrypt) ذخیره می‌شوند.
- پوشه `uploads/` با `.htaccess` در برابر دسترسی مستقیم محافظت شده؛ مدارک فقط از طریق `download.php` و پس از بررسی مالکیت/نقش کاربر قابل مشاهده هستند.
- تمام فرم‌ها دارای محافظت CSRF هستند.
- پیشنهاد می‌شود گواهی SSL (HTTPS) روی دامنه فعال باشد (اکثر هاست‌ها Let's Encrypt رایگان دارند).
- به‌صورت دوره‌ای از دیتابیس (phpMyAdmin) و پوشه uploads بک‌آپ بگیرید.

## سال مالی و مانده حساب

سقف‌ها به‌صورت سالانه (بر اساس سال شمسی) محاسبه می‌شوند. سال شمسی هر درخواست در لحظه ثبت محاسبه و ذخیره می‌شود و مانده هر کارمند بر اساس مجموع مبالغ تایید/پرداخت‌شده در همان سال محاسبه می‌گردد.

## نسخه ۲ — امکانات جدید

اگر سایت شما از قبل نصب شده (نسخه ۱)، قبل از هر چیز آدرس `upgrade.php` را در مرورگر باز کنید تا جداول و ستون‌های جدید بدون از‌دست‌رفتن داده‌های فعلی اضافه شوند؛ سپس همان فایل را حذف کنید. برای نصب کاملاً تازه، فقط `install.php` کافی است (schema.sql به‌روز است).

امکانات جدید:
- **تعهدنامه اجباری**: کارمندان بعد از اولین ورود باید متن قرارداد/تعهدنامه را بخوانند و تایید کنند (قابل ویرایش از پنل مدیر > «تعهدنامه»؛ با تغییر نسخه، تایید مجدد الزامی می‌شود).
- **پروفایل شخصی کارمند**: مشاهده اطلاعات خود و بازخوانی تعهدنامه.
- **افراد تبعی** (همسر/پدر/مادر/فرزند): با رضایت‌نامه داخل سامانه؛ سقف مستقل و مشابه کارمند دارند، اما فقط درصدی از مبلغ (قابل تنظیم، پیش‌فرض ۵۰٪) توسط شرکت پرداخت می‌شود. از پنل مدیر > «تنظیمات» قابل فعال/غیرفعال کردن است.
- **فرانشیز**: درصدی (پیش‌فرض ۱۰٪) از هر مبلغ تایید‌شده به‌صورت خودکار کسر می‌شود؛ از «تنظیمات» قابل تغییر است.
- **تناسب سقف با تاریخ استخدام**: فقط در سال اول استخدام، سقف به نسبت روزهای فعالیت در همان سال محاسبه می‌شود؛ سال‌های بعد سقف کامل است. تاریخ استخدام از «مدیریت کارمندان» ثبت می‌شود.
- **فیلدهای بیشتر در ثبت درخواست**: نام مرکز درمانی، تاریخ انجام خدمت، شماره فیش/فاکتور.
- **آپلود مدرک به‌ازای هر قلم**: اگر برای یک ردیف درمانی چند مدرک لازم تعریف شده باشد (هر کدام در یک خط)، فرم ثبت درخواست به‌صورت خودکار یک باکس آپلود مجزا و اجباری برای هر مورد نشان می‌دهد.
- **جداکننده هزارگان**: همه ورودی‌های مبلغ در کل سامانه به‌صورت خودکار با کاما نمایش داده می‌شوند.
- **گزارش هفتگی ایمیلی**: از «تنظیمات» ایمیل مدیر و همچنین آدرس Cron Job قابل مشاهده است؛ آن آدرس را در cPanel > Cron Jobs به‌صورت هفتگی زمان‌بندی کنید.

## ساختار مالی هر درخواست

مبلغ درخواستی کارمند → محدود به سقف ردیف/سقف ترکیبی (توسط مدیر) → کسر فرانشیز → (در صورت تعلق به فرد تبعی) اعمال سهم پرداختی شرکت → مبلغ نهایی قابل پرداخت که در فرم چاپی و تاریخچه نمایش داده می‌شود.

