def handle(self, *args, **options): for subscription in Subscription.objects.all(): is_subscription_active = is_active_subscription(subscription.date_start, subscription.date_end) if subscription.is_active != is_subscription_active: if options.get('update', False): print 'Updating subscription with id=%d' % subscription.id subscription.is_active = is_subscription_active subscription.save() else: print 'Subscription needs updating: id=%d ' % subscription.id
def handle(self, *args, **options): for subscription in Subscription.objects.all(): is_subscription_active = is_active_subscription( subscription.date_start, subscription.date_end) if subscription.is_active != is_subscription_active: if options.get('update', False): print 'Updating subscription with id=%d' % subscription.id subscription.is_active = is_subscription_active subscription.save() else: print 'Subscription needs updating: id=%d ' % subscription.id
def change_plan(self, new_plan_version, date_start=None, date_end=None, date_delay_invoicing=None, salesforce_contract_id=None, do_not_invoice=False, note=None, web_user=None, adjustment_method=None): """ Changing a plan terminates the current subscription and creates a new subscription where the old plan left off. """ adjustment_method = adjustment_method or SubscriptionAdjustmentMethod.INTERNAL adjustment_reason, downgrades, upgrades = get_change_status(self.plan_version, new_plan_version) self.subscriber.apply_upgrades_and_downgrades( downgraded_privileges=downgrades, upgraded_privileges=upgrades, new_plan_version=new_plan_version) today = datetime.date.today() new_start_date = today if self.date_start <= today else (date_start or self.date_start) new_is_active = is_active_subscription(new_start_date, date_end) new_salesforce_contract_id = ( salesforce_contract_id if salesforce_contract_id is not None else self.salesforce_contract_id) if self.date_start > today: self.date_start = today if self.date_end is None or self.date_end > today: self.date_end = today if self.date_delay_invoicing is not None and self.date_delay_invoicing > today: self.date_delay_invoicing = today self.is_active = False self.save() new_subscription = Subscription.new_domain_subscription( self.account, self.subscriber.domain, new_plan_version, date_start=new_start_date, date_end=date_end, date_delay_invoicing=date_delay_invoicing, salesforce_contract_id=new_salesforce_contract_id, is_active=new_is_active, do_not_invoice=do_not_invoice, adjustment_method=adjustment_method, note=note, web_user=web_user ) # record transfer from old subscription SubscriptionAdjustment.record_adjustment(self, method=adjustment_method, note=note, web_user=web_user, reason=adjustment_reason, related_subscription=new_subscription) return new_subscription
def create_subscription(self): account = BillingAccount.objects.get(id=self.cleaned_data["account"]) domain = self.cleaned_data["domain"] plan_version = SoftwarePlanVersion.objects.get(id=self.cleaned_data["plan_version"]) date_start = self.cleaned_data["start_date"] date_end = self.cleaned_data["end_date"] date_delay_invoicing = self.cleaned_data["delay_invoice_until"] salesforce_contract_id = self.cleaned_data["salesforce_contract_id"] is_active = is_active_subscription(date_start, date_end) do_not_invoice = self.cleaned_data["do_not_invoice"] return Subscription.new_domain_subscription( account, domain, plan_version, date_start=date_start, date_end=date_end, date_delay_invoicing=date_delay_invoicing, salesforce_contract_id=salesforce_contract_id, is_active=is_active, do_not_invoice=do_not_invoice, )