コード例 #1
0
 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
コード例 #2
0
 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
コード例 #3
0
ファイル: models.py プロジェクト: pawelreise/commcare-hq
    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
コード例 #4
0
ファイル: forms.py プロジェクト: pawelreise/commcare-hq
 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,
     )