43 lines
1.8 KiB
Python
43 lines
1.8 KiB
Python
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)]
|