قیمتگذاری چنددورهای محصول اصلی
> version: 1.5 | last_updated: 2026-08-16 | audience: admin
هدف
یک محصول recurring میتواند همزمان قیمت **ماهانه / سهماهه / ششماهه / سالانه** و در صورت نیاز **دورههای سفارشی بر اساس روز** (مثلاً ۲۵ روزه) داشته باشد؛ بدون ساخت چند SKU جدا.
تنظیم در ادمین
تب **قیمت** محصول اصلی با مدل **دورهای**:
| فیلد | نقش |
|------|-----|
| دوره پیشفرض | فقط مقادیر استاندارد enum (`monthly` …) — نمایش کاتالوگ + fallback ستون |
| قیمت ماهانه / سهماهه / … | ماتریس `cycle_pricing` — **قیمت صفر = دوره در فروشگاه نیست** |
| دورههای سفارشی (Repeater) | روز + برچسب + قیمت + نصب → کلید `custom_{days}` داخل همان JSON |
| فیلدهای تکقیمت قدیمی | برای مدل یکبار / پیشپرداخت |
پس از ذخیره، `price` و `setup_fee` از ردیف دورهٔ پیشفرض استاندارد (یا اولین دوره با قیمت > 0) همگام میشوند. ستون `billing_cycle` محصول **هرگز** مقدار `custom_*` نمیگیرد.
نمونه `cycle_pricing`
```json
{
"monthly": { "price": 1000000, "setup": 0 },
"yearly": { "price": 10000000, "setup": 0 },
"custom_25": { "days": 25, "label": "۲۵ روزه", "price": 850000, "setup": 0 }
}
```
خرید
- دوره استاندارد → ردیف همان دوره روی choice / افزونه
- دوره سفارشی → اگر روی choice قیمت `custom_*` تعریف شده همان؛ وگرنه ماهانه × (روز / ۳۰)
- در فرم ادمین choice: Repeater «دورههای سفارشی» کنار ماتریس ماهانه/…