from django.db import migrations # قیمت پایه‌ی هرکدام + پلکان تخفیف مدت (۳ماهه ≈۱۰٪ کمتر از ۳×ماهانه، # ۶ماهه ≈۱۷٪، ۱۲ماهه ۲۵٪) — دقیقا مطابق مثال خودِ کارفرما برای فاکتور # (۱۰۰۰ / ۲۷۰۰ / ۵۰۰۰)، همان الگو برای بقیه هم تعمیم داده شده. FEATURES = [ ("sms_bank", "بانک اس‌ام‌اس", 1500), ("invoice", "فاکتور", 1000), ("customers", "مشتریان", 500), ("ledger", "دفتر درآمد و هزینه", 800), ("inventory", "انبارداری", 800), ("booking", "نوبت‌دهی", 600), ] _DURATION_MULTIPLIERS = {1: 1, 3: 2.7, 6: 5, 12: 9} # ۱۰٪/۱۷٪/۲۵٪ تخفیف نسبت به ماهانه×مدت def _tier_prices(monthly: int) -> dict: return {months: round(monthly * multiplier) for months, multiplier in _DURATION_MULTIPLIERS.items()} def seed(apps, schema_editor): FeaturePlan = apps.get_model("billing", "FeaturePlan") FeaturePlanTier = apps.get_model("billing", "FeaturePlanTier") for key, name, monthly_price in FEATURES: feature, _created = FeaturePlan.objects.get_or_create(key=key, defaults={"name": name}) for months, price in _tier_prices(monthly_price).items(): FeaturePlanTier.objects.get_or_create( feature=feature, duration_months=months, defaults={"gem_price": price} ) def unseed(apps, schema_editor): FeaturePlan = apps.get_model("billing", "FeaturePlan") FeaturePlan.objects.filter(key__in=[key for key, _, _ in FEATURES]).delete() class Migration(migrations.Migration): dependencies = [("billing", "0001_initial")] operations = [migrations.RunPython(seed, unseed)]