adding
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
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)]
|
||||
Reference in New Issue
Block a user