فیلدهای سفارشی محصول (Custom Fields)

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

فیلدهای سفارشی محصول (Custom Fields)



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

---

هدف



برای هر محصول می‌توانید فیلدهایی تعریف کنید که موقع ثبت سفارش از مشتری، نماینده یا ادمین پرسیده شود.

مثال: شماره تلفن ADSL، MAC مودم، دامنه، توضیحات نصب.

---

تفاوت با فیلدهای دیگر



| نوع | کاربرد |
|-----|--------|
| **فیلدهای سفارش (Custom Fields)** | داده مخصوص هر سفارش/سرویس |
| **تنظیمات Provision** | تنظیم ثابت پلن (کردیت، سرعت، …) |
| **مشخصات فنی** | فقط نمایش در کاتالوگ |

---

تعریف فیلد روی محصول



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

  • تب **فیلدهای سفارش**

  • **افزودن فیلد**


  • | فیلد | توضیح |
    |------|--------|
    | نام | برچسب فارسی (مثلاً شماره خط) |
    | کلید | کلید فنی یکتا در همان محصول (مثلاً `phone_line`) |
    | نوع | متن کوتاه، چندخطی، لیست انتخابی، چک‌باکس، رمز عبور، **نقشه (map.ir)** |
    | گزینه‌ها | فقط برای لیست انتخابی |
    | اجباری | اگر روشن باشد بدون مقدار سفارش ثبت نمی‌شود |
    | فقط ادمین/نماینده | در checkout مشتری دیده نمی‌شود |
    | نمایش روی فاکتور | برای فاز بعد آماده است |

    ---

    کجا پر می‌شود؟



  • **مشتری:** صفحه تأیید خرید (`/catalog/.../checkout`) — فقط فیلدهای غیر admin-only

  • **نماینده:** مرحله ۳ ثبت سفارش

  • **ادمین:** هنگام ایجاد سفارش در Filament، بعد از انتخاب محصول


  • ---

    کجا ذخیره و دیده می‌شود؟



  • روی **آیتم سفارش** (`custom_field_values`)

  • روی **سرویس/اشتراک** در `metadata.custom_fields` (پس از ایجاد اشتراک)

  • نمایش در **جزئیات سفارش** (بخش سرویس و آیتم‌ها)، portal مشتری و پنل نماینده


  • ---

    تعریف در پنل



    مسیر: محصول → تب **فیلدهای سفارش**

  • دستی: **افزودن فیلد**

  • یکجا: دکمه **ایجاد فیلدهای پیش‌فرض…** (بر اساس ماژول Provision / انبار) — فقط کلیدهای جدید اضافه می‌شوند؛ بعد ذخیره کنید.


  • | ماژول / انبار | فیلدهای پیش‌فرض |
    |---------------|-----------------|
    | `cpanel` / سایر هاست (`directadmin`, `plesk`, …) | `domain` (اجباری) — اگر روی محصول تعریف نشده باشد، هنگام خرید به‌صورت خودکار تزریق می‌شود؛ تکراری روی سرویس در انتظار/فعال/معلق و سفارش باز رد می‌شود (terminated آزاد است) |
    | `nocps` | hostname, profile, root_password, admin_user, disk_addon, packages_addon |
    | `proxmox` / `virtualizor` / `vmware` / `autovm` | `hostname` (اجباری) + `iso` |
    | پوشش Wireless / FTTH (افزونه) | location (نقشه) |

    تشخیص هاست: `provisioning_module` ∈ لیست `HostingPanelSsoService::HOSTING_MODULES`.

    پس از ایجاد اکانت، `username` / `password` / `domain` در `subscriptions.provisioning_data` ذخیره و در پورتال مشتری (جزئیات سرویس + پنل هاست) نمایش داده می‌شود.

    هر فیلد می‌تواند **توضیحات** داشته باشد؛ اگر پر باشد زیر عنوان فیلد هنگام خرید نمایش داده می‌شود.

    ---

    نکته



    در این فاز، فیلدهای سفارشی به‌صورت خودکار به NetBill/IBSng ارسال نمی‌شوند. نگاشت به Provision بعداً اضافه می‌شود.

    ---

    الگوی پیشنهادی برای VPS



    | مورد | محل |
    |------|------|
    | نام هاست (`hostname`) | **Custom Field اجباری** — نام VM. روی Proxmox معمولاً همان نام کاربری سرویس هم می‌شود؛ روی کلود عمومی (Linode و …) ورود SSH = `root`/`Administrator` |
    | نام کاربری سرویس (`guest_username`) | فیلد محصول (Provision) — Proxmox: اگر hostname نباشد؛ کلود: پیش‌فرض ورود |
    | نوع/رمز سرویس (`password_type`, `root_password`) | فیلد محصول (Provision) |
    | سیستم‌عامل / ISO | **Custom Field** با کلید `iso` |

    گزینه‌های ISO را به شکل `شناسه:نام` بنویسید تا مشتری نام را ببیند و Provision فقط شناسه را بخواند:

  • Proxmox قالب: `101:Ubuntu 22.04`

  • Proxmox فایل ISO: `local:iso/ubuntu-24.04.iso:Ubuntu 24.04` — دونقطهٔ اول مال volid است (`local:iso/...`)؛ BSS کل volid را نگه می‌دارد

  • با انتخاب ماژول VPS، فیلد `hostname` خودکار اضافه می‌شود؛ برای Proxmox فیلد `iso` هم با قالب‌ها/ISOهای زنده پر می‌شود. دکمهٔ **ایجاد فیلد پیش‌فرض Hostname و ISO** همان‌ها را می‌سازد

  • اگر فیلد iso روی محصول نباشد ولی روی Proxmox قالب/ISO باشد، هنگام خرید همان لیست تزریق می‌شود تا مشتری بتواند انتخاب کند

  • Virtualizor: `801:Ubuntu 22.04`

  • VMware: `vm-101:Ubuntu 22.04`


  • اگر مشتری انتخاب نکند، پیش‌فرض محصول (`template_vmid` یا `iso_image` / `osid` / `template_id`) استفاده می‌شود. نصب از فایل ISO در Proxmox از کنسول است، نه cloud-init.

    ---

    الگوی پیشنهادی برای Dedicated (NOC-PS)



    | مورد | محل |
    |------|------|
    | استخر سرور / assign_mode / reboot | فیلد محصول (Provision) — ادمین |
    | Hostname | **Custom Field** با کلید `hostname` |
    | پروفایل نصب OS | **Custom Field** با کلید `profile` (گزینه `id:نام`) |
    | رمز root | **Custom Field** با کلید `root_password` (اختیاری) |
    | کاربر اضافی / timezone / disk_addon | Custom Field (اختیاری) |
    | MAC | Custom Field `mac` فقط اگر انتخاب سرور دستی باشد |

    جزئیات: [dedicated-nocps-provisioning.md](dedicated-nocps-provisioning.md)

    ---

    فیلد نقشه



    برای انتخاب موقعیت نصب/آدرس روی نقشه، نوع فیلد را **نقشه (map.ir)** بگذارید.

    راهنمای اتصال: [mapir-settings.md](mapir-settings.md)