`/domains/checkout` — ثبت سفارش با `priceIrr` و سال انتخابی
پیشنیاز: یک محصول کاتالوگ از نوع **دامنه** (دسته خودکار)
اکشن دستهای روی لیست پسوند
پس از انتخاب چند ردیف:
| اکشن | کار |
|------|-----|
| سرور / ثبت خودکار | `provisioning_server_id` + `auto_register` |
| Grace / Redemption | روز و هزینه (فقط فیلدهای پرشده) |
| فعال / غیرفعال کردن | `is_active` |
همترازی با WHMCS
| WHMCS Domain Pricing | BSS |
|----------------------|-----|
| لیست TLD | `domain_tlds` |
| Register / Renew / Transfer × ۱–۱۰ سال | `domain_tld_prices.amount` |
| ارز | `domain_tlds.currency` = `IRR` یا `USD` |
| خالی / `-1` = غیرفعال | همان |
| Grace / Redemption | روز + هزینه روی TLD (همان `currency`) |
| Auto Registration | `auto_register` + سرور `domain` |
| DNS / Email / ID Protection | فلگ روی TLD |
| ایجاد دستهای | دکمه **ایجاد دستهای** + **نمونه Excel** |
| Registrar TLD Sync | فاز ۳ (جزئی) — سرور از `DomainTld.provisioning_server_id` + احترام به `auto_register` |
| Lookup / WHOIS / checkout مشتری | فاز ۲ ✅ — ثبت + انتقال + تمدید |
ارز ریال / دلار
روی هر پسوند فیلد **واحد قیمت** (`currency`)
اگر `USD` باشد، اعداد ماتریس **و** هزینههای Grace / Redemption دلاری ذخیره میشوند (فقط در پنل ادمین)
برای مشتری و فاکتور: همیشه **ریال** از `priceIrr()` / `graceFeeIrr()` / `redemptionFeeIrr()` با `UsdIrrRateService` — مبلغ دلاری خام در فروشگاه نمایش داده نمیشود
هنگام **ایجاد/ویرایش** پسوند دلاری: `ensureUsableRate` نرخ روز را در صورت نیاز از TGJU تازه میکند؛ اگر نرخ ذخیرهشده نسبت به خام خراب باشد، از خام ترمیم میشود
اگر نرخ دلار تنظیم نباشد، قیمت سالها خالی میماند و پیام «نرخ دلار … تنظیم نشده» دیده میشود (نه «رایگان»)