BSS HostKhaneh

تعریف محصول و پلن

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

تعریف محصول و پلن



| فیلد | مقدار |
|------|--------|
| **نسخه** | 1.19 |
| **آخرین بروزرسانی** | 2026-09-26 |
| **ماژول** | Product Catalog |
| **فاز** | 2 |
| **مخاطب** | ادمین |

---

هدف



هر **محصول (Product Offering)** یک پلن قابل فروش است — مثلاً FTTH 100Mbps یا VPS 2Core.

چهار نوع آیتم: **محصول اصلی** / **دامنه** / **گزینه قابل تنظیم** / **افزونه مستقل**.

  • **دامنه:** ویزارد کوتاه (نام + مالیات + ماژول Domain). **دسته انتخاب نمی‌شود** — دستهٔ داخلی `domain` خودکار ساخته می‌شود و در کاتالوگ دیده نمی‌شود. قیمت فروش از [`domain-pricing.md`](domain-pricing.md).

  • گزینه قابل تنظیم در جزئیات سرویس نمایش و از ویجت افزونه‌ها تغییر داده می‌شود. جزئیات: [`product-addons.md`](product-addons.md)


  • ---

    مراحل



    ۱. ایجاد محصول



  • **تنظیمات → محصولات و پلن‌ها → محصول جدید**


  • در **لیست** محصولات و پلن‌ها ستون **ماژول Provision** نمایش داده می‌شود (به‌جای نوع سرویس اینترنت). ستون‌های اپراتور LTE، FD/TD و قیمت در لیست نیستند — جزئیات در فرم ویرایش / تب قیمت و فیلدهای LTE محصول باقی است.

    حذف دسته و محصول (سطل آشغال)



    | مورد | شرط حذف |
    |------|---------|
    | **دسته** | زیردسته نداشته باشد و هیچ محصول/پلنی زیر آن نباشد |
    | **محصول / پلن** | به نماینده assign نباشد (grant یا پورسانت روی همان محصول) و هیچ اشتراک/آیتم سفارشی با آن محصول ثبت نشده باشد |

    اگر شرط برقرار نباشد دکمهٔ حذف دیده نمی‌شود (یا در حذف گروهی با پیام خطا متوقف می‌شود).

    کپی از محصول / پلن



    در همان لیست:

  • دکمه هدر **کپی از محصول**، یا روی ردیف **کپی**

  • **گروه / دسته** مبدأ را انتخاب کنید

  • **محصول مبدأ** از محصولات همان دسته (و زیردسته‌ها) — داخل همان باکس می‌توانید نام یا slug را جستجو کنید

  • **نام جدید** را وارد کنید

  • در صورت نیاز **دسته مقصد** را عوض کنید (خالی = همان دستهٔ مبدأ)


  • کپی شامل قیمت‌گذاری، Provision، فیلدهای سفارش، گزینه‌های قابل تنظیم (+ انتخاب‌ها)، لینک افزونه‌ها، اهداف تمدید، باندل، و اتصال انبار LTE/MVNO است. بعد از ایجاد، به صفحه ویرایش کپی هدایت می‌شوید. کپی از `replicate` مدل استفاده می‌کند تا فیلدهای JSON دوبار encode نشوند.

    ۲. تب «عمومی»



    | فیلد | توضیح |
    |------|--------|
    | شرکت / دسته | Tenant و دسته‌بندی |
    | نام / slug | نام محصول؛ slug یکتا در هر شرکت — تکراری بودن باعث پسوند `-2` و … می‌شود |
    | Add-on | اگر مکمل سرویس دیگر است (در کاتالوگ مستقل فروخته نمی‌شود) |
    | Bundle | اگر شامل چند سرویس است |
    | ویژه | نمایش در بخش پیشنهاد ویژه |

    برای اتصال افزونه به محصول اصلی، تب **Add-onها** را ببینید. جزئیات: [`product-addons.md`](product-addons.md)

    ۳. تب «قیمت»



    | فیلد | توضیح |
    |------|--------|
    | مدل قیمت | Recurring, Postpaid (جلالی), One-time, … |
    | دوره پیش‌فرض | برای recurring/postpaid؛ مشتری می‌تواند دورهٔ دیگر را انتخاب کند |
    | هم‌ترازی تقویم | فقط Postpaid: اول ماه جلالی یا سالگرد جلالی — [jalali-postpaid-billing.md](./jalali-postpaid-billing.md) |
    | قیمت هر دوره | ماهانه / سه‌ماهه / شش‌ماهه / سالانه + (فقط recurring) Repeater دوره سفارشی روز |
    | قیمت / نصب تک‌فیلد | فقط برای one-time / prepaid |
    | واحد قیمت‌گذاری | ریال یا دلار — دلار با نرخ روز در تنظیمات مالی به ریال تبدیل می‌شود |
    | مالیات | درصد VAT |

    جزئیات چنددوره‌ای: [product-cycle-pricing.md](./product-cycle-pricing.md)

    ۴. تب «فنی / Provision»



    | فیلد | توضیح |
    |------|--------|
    | ماژول Provision | Select دسته‌بندی‌شده (اینترنت / میزبانی / VPS / کلود عمومی / …) — جزئیات: [provisioning-modules.md](./provisioning-modules.md) |
    | گروه سرور | برای هاستینگ پکیج؛ برای Proxmox نود/استوریج از API همان گروه. قالب‌ها در فیلد سفارش `iso` برای انتخاب مشتری؛ `bridge` پیش‌فرض `vmbr0` |
    | کارتابل فروش | از **دسته** محصول تنظیم می‌شود (نه از محصول) |
    | مشخصات فنی | کلید/مقدار نمایشی در کاتالوگ (`specifications`)؛ برای مقایسه و فیلتر، کلیدها بین محصولات یک دسته باید یکسان باشند (فاصلهٔ اضافه هنگام ذخیره حذف می‌شود) |

    ۵. تب «فیلدهای سفارش»



    فیلدهای سفارشی — موقع خرید از مشتری/نماینده پرسیده می‌شوند.

    جزئیات: [product-custom-fields.md](product-custom-fields.md)

    ۶. تب «تمدید»



    اجازه تمدید به همین محصول و لیست محصولات مجاز برای تمدید/ارتقا.

    لیست فقط محصولات **هم‌ماژول Provision** را نشان می‌دهد (مثلاً برای محصول `hestia` فقط پلن‌های `hestia`؛ پلن‌های `cpanel` / `ispconfig` دیده نمی‌شوند)، به‌همراه فیلتر دسته یا نوع سرویس اینترنت در صورت اعمال.

    همان فیلتر در **پورتال/ریسلر** هم اعمال می‌شود (`RenewalCatalogService`): حتی اگر قبلاً پلن ناهم‌ماژول در «محصولات مجاز برای تمدید» ذخیره شده باشد، در صفحه ارتقا/کاهش نمایش داده نمی‌شود و ثبت سفارش هم رد می‌شود.

    ---

    نتیجه



    محصول در `/catalog` قابل مشاهده است. API: `/api/tmf/productCatalogManagement/v1/productOffering`

    ---

    خطاهای رایج



    | مشکل | راه‌حل |
    |------|--------|
    | slug تکراری | slug یکتا per Tenant باشد |
    | در فروشگاه نیست | «فعال» را چک کنید |