mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
billing: Move exempt_from_from_license_number_check to Customer model.
This belongs more on the Customer model, since this is a similar attribute to default_discount.
This commit is contained in:
committed by
Tim Abbott
parent
4ca87d785b
commit
bae86ad3da
@@ -72,7 +72,11 @@ def check_spare_licenses_available_for_adding_new_users(
|
|||||||
realm: Realm, number_of_users_to_add: int
|
realm: Realm, number_of_users_to_add: int
|
||||||
) -> None:
|
) -> None:
|
||||||
plan = get_current_plan_by_realm(realm)
|
plan = get_current_plan_by_realm(realm)
|
||||||
if plan is None or plan.automanage_licenses or plan.exempt_from_from_license_number_check:
|
if (
|
||||||
|
plan is None
|
||||||
|
or plan.automanage_licenses
|
||||||
|
or plan.customer.exempt_from_from_license_number_check
|
||||||
|
):
|
||||||
return
|
return
|
||||||
|
|
||||||
if plan.licenses() < get_latest_seat_count(realm) + number_of_users_to_add:
|
if plan.licenses() < get_latest_seat_count(realm) + number_of_users_to_add:
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Generated by Django 3.2.4 on 2021-06-18 18:39
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
"""
|
||||||
|
We haven't set the values for this field for the relevant organizations
|
||||||
|
as of this moment, so we can simply drop the column from CustomerPlan
|
||||||
|
and add it to Customer without worrying about losing the values.
|
||||||
|
"""
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("corporate", "0010_customerplan_exempt_from_from_license_number_check"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="customerplan",
|
||||||
|
name="exempt_from_from_license_number_check",
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="customer",
|
||||||
|
name="exempt_from_from_license_number_check",
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -22,6 +22,9 @@ class Customer(models.Model):
|
|||||||
default_discount: Optional[Decimal] = models.DecimalField(
|
default_discount: Optional[Decimal] = models.DecimalField(
|
||||||
decimal_places=4, max_digits=7, null=True
|
decimal_places=4, max_digits=7, null=True
|
||||||
)
|
)
|
||||||
|
# Some non-profit organizations on manual license management pay only for their paid employees.
|
||||||
|
# We don't prevent these organizations from adding more users than the number of licenses they purchased.
|
||||||
|
exempt_from_from_license_number_check: bool = models.BooleanField(default=False)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f"<Customer {self.realm} {self.stripe_customer_id}>"
|
return f"<Customer {self.realm} {self.stripe_customer_id}>"
|
||||||
@@ -45,10 +48,6 @@ class CustomerPlan(models.Model):
|
|||||||
automanage_licenses: bool = models.BooleanField(default=False)
|
automanage_licenses: bool = models.BooleanField(default=False)
|
||||||
charge_automatically: bool = models.BooleanField(default=False)
|
charge_automatically: bool = models.BooleanField(default=False)
|
||||||
|
|
||||||
# Some non-profit organizations on manual license management pay only for their paid employees.
|
|
||||||
# We don't prevent these organizations from adding more users than the number of licenses they purchased.
|
|
||||||
exempt_from_from_license_number_check: bool = models.BooleanField(default=False)
|
|
||||||
|
|
||||||
# Both of these are in cents. Exactly one of price_per_license or
|
# Both of these are in cents. Exactly one of price_per_license or
|
||||||
# fixed_price should be set. fixed_price is only for manual deals, and
|
# fixed_price should be set. fixed_price is only for manual deals, and
|
||||||
# can't be set via the self-serve billing system.
|
# can't be set via the self-serve billing system.
|
||||||
|
|||||||
Reference in New Issue
Block a user