نمایندگان فروش (ریسلر)
> version: 1.23 | last_updated: 2026-09-21 | audience: admin
قانون فروش
ثبت سفارش مشتری **فقط از پنل ریسلر** است. ادمین شرکت سفارش جدید ایجاد یا submit نمیکند.
اگر شرکت بخش فروش داخلی دارد، باید بهصورت **ریسلر** در سیستم تعریف شود.
**دید پنل:** بالادست همهٔ دادهٔ عملیاتی زیرمجموعه را میبیند. نمایندهٔ مرجع پورتال (`portal_default_reseller_user_id`) کل شرکت را میبیند و کار میکند. جزئیات: [service-ownership.md](../reseller/service-ownership.md)
مدیریت در پنل شرکت
**CRM → نمایندگان فروش** — دکمه خاکستری **آموزش** در هدر لیست / ایجاد / ویرایش همان صفحه را توضیح میدهد.
تبهای ویرایش (با آیکون): **پروفایل** · **دسترسیها** · **محصولات قابل فروش** · **پورسانت** · **کارتابل فروش** · **کارتابل پشتیبانی**
| کار | توضیح |
|-----|--------|
| ایجاد ریسلر ریشه | کاربر ورود + پروفایل + مجوزها + کاتالوگ + نرخ پورسانت |
| والد | خالی = ریشه؛ یا زیرمجموعهٔ یک نماینده دیگر. **نمیتوان** خود نماینده یا یکی از زیرمجموعههایش را والد کرد (جلوگیری از حلقه) |
| محصولات قابل فروش | اعطای دسته و/یا **محصول / افزونه مستقل**. لیست **دستهها** درختی است و فقط مواردی که در خود یا زیردسته حداقل یک محصول اصلی فعال دارند. با انتخاب دسته، لیست **فقط همان دسته و زیردستهها**. بدون دسته = همهٔ موارد **قیمتدار** (رایگان در لیست نیست). **گزینهٔ قابلتنظیم** در این لیست نیست — همراه محصول فروخته میشود و پورسانت روی مبلغ پرداخت فاکتور (شامل قیمت گزینه) با نرخ همان محصول اصلی محاسبه میشود. خالی برای **ریشه** = همهٔ دستههای `visible_to_resellers` (با محصول). اگر **والد** دارد: فقط کاتالوگ والد. در سفارش ریسلر، دسته/نوعی که هیچ محصول اعطاشدهای ندارد **دیده نمیشود**. |
| پورسانت | فقط دسته و محصول **انتخابشده در تب محصولات قابل فروش**؛ هر ردیف میتواند **چند دسته** (+ چند محصول) با یک نرخ داشته باشد؛ صفرقیمت / Free در لیست نیست؛ نرخ فرزند ≤ نرخ والد همان مورد |
| سطح دسترسی پنل | تب **دسترسیها**: ماتریس CRUD مثل نقش پنل شرکت — برای هر منو (پیشخوان، مشتریان، سفارش، سرویسها، فاکتورها، کارتابلها، زیرنماینده، کیف پول، کمیسیون) نمایش/ایجاد/ویرایش/حذف جدا + فلگهای قیمت سفارشی و اسکالیشن |
| قیمت سفارشی | Toggle در تب دسترسیها — فیلد قیمت سفارشی در سفارش/تمدید/افزونه | `custom_price` |
| اسکالیشن کارتابل فروش | Toggle وقتی «نمایش» کارتابل فروش فعال است | `cartable_escalate` + `cartable.view` |
| کارتابل فروش | تب جدا: **نوع محصول** → دپارتمانهای مشاهده / انجام کار | `cartable.view` |
| اسکالیشن کارتابل پشتیبانی | Toggle وقتی «نمایش» کارتابل پشتیبانی فعال است | `support_cartable_escalate` + `support_cartable.view` |
| کارتابل پشتیبانی | تب جدا: **مسیر پشتیبانی** → دپارتمانهای مشاهده / انجام کار | `support_cartable.view` |
| مدیریت مالی | صفحه جدا (`/panel/resellers/{id}/wallet`): موجودی، افزایش/کاهش دستی، تاریخچه. از لیست یا دکمه هدر ویرایش |
مدیریت مالی کیف پول
هر نماینده کیف پول دارد (`reseller_wallets` روی `users.id`). پورسانت و شارژ درگاه خودش آنجا مینشیند.
از **CRM → نمایندگان فروش**:
نماینده موجودی را در پنل خودش (`/reseller/wallet`) هم میبیند و میتواند شارژ درگاهی بزند.
اگر افزایش/کاهش **419 / Page Expired** داد: کش Filament کهنه است. با کاربر `bsshostkhaneh` بزنید: `php artisan filament:cache-components` سپس Hard Refresh.
نماینده پیشفرض پورتال
از **تنظیمات → تنظیمات اصلی** یک نماینده برای خرید آنلاین مشتری انتخاب میشود (فقط یک مورد). همان نماینده **مرجع** در پنل خودش کل مشتریان و فروشهای شرکت را میبیند. جزئیات: [tenant-general-settings.md](./tenant-general-settings.md) · [service-ownership.md](../reseller/service-ownership.md)
واریز پورسانت
با **پرداخت موفق فاکتور** پورسانت همان لحظه به کیف پول واریز میشود — تأیید دستی نیست.
با **برگشت از فروش / استرداد** به همان درصد از کیف پول کسر میشود.
جزئیات و مثال: [reseller-commissions.md](./reseller-commissions.md)
سلسلهمراتب
جداول
| جدول | نقش |
|------|-----|
| `resellers` | پروفایل + `parent_id` + `permissions` + `cartable_grants` + `support_cartable_grants` |
| `reseller_catalog_grants` | اعطای دسته/محصول |
| `reseller_commission_rates` | نرخ پورسانت |
| `users` + نقش `reseller` | لاگین؛ `orders.reseller_id` همچنان `users.id` است |
| `reseller_wallets` / `reseller_wallet_transactions` | موجودی و گردش؛ `reseller_id` = `users.id` |