BSS HostKhaneh

نمایندگان فروش (ریسلر)

← بازگشت به راهنما

نمایندگان فروش (ریسلر)



> 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` |

    مرتبط



  • [create-order.md](./create-order.md) — سفارش در پنل شرکت (فقط مشاهده/عملیات سرویس)

  • [tenant-general-settings.md](./tenant-general-settings.md)

  • [reseller-commissions.md](./reseller-commissions.md)

  • [../reseller/panel.md](../reseller/panel.md)

  • ADR-035 در `DECISIONS.md`