Exemplo n.º 1
0
    def _generate_rate_credits_for_testing(self, fee, rate_kwarg, generate_invoice_credit=True):
        """
        Generates enough line item credit for two invoicing periods.
        """
        rate_credit_by_account = CreditLine.add_rate_credit(
            fee,
            self.account,
            **rate_kwarg
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=rate_credit_by_account).count(), 1)

        rate_credit_by_subscription = CreditLine.add_rate_credit(
            fee,
            self.account,
            subscription=self.subscription,
            **rate_kwarg
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=rate_credit_by_subscription).count(), 1)

        if generate_invoice_credit:
            # this credit should not count toward the line item
            subscription_credit = CreditLine.add_subscription_credit(
                fee,
                self.subscription
            )
            self.assertEqual(CreditAdjustment.objects.filter(credit_line=subscription_credit).count(), 1)

        return rate_credit_by_account, rate_credit_by_subscription
Exemplo n.º 2
0
 def add_feature_rate():
     CreditLine.add_rate_credit(
         amount,
         get_account_for_rate(),
         feature_rate=FeatureRate.objects.get(id=self.cleaned_data["feature_rate"]),
         subscription=subscription,
         note=note,
     )
Exemplo n.º 3
0
 def add_product_rate():
     CreditLine.add_rate_credit(
         amount,
         get_account_for_rate(),
         product_rate=SoftwareProductRate.objects.get(id=self.cleaned_data["product_rate"]),
         subscription=subscription,
         note=note,
     )
Exemplo n.º 4
0
    def test_balance_adjustment(self):
        """
        Makes sure that the balance is added to the same invoice and same line item credit.
        """
        product_credit = CreditLine.add_rate_credit(
            self.product_rate.monthly_fee,
            self.account,
            product_rate=self.product_rate,
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=product_credit).count(), 1)
        CreditLine.add_rate_credit(
            self.product_rate.monthly_fee,
            self.account,
            product_rate=self.product_rate,
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=product_credit).count(), 2)
        current_product_credit = CreditLine.objects.get(id=product_credit.id)
        self.assertEqual(current_product_credit.balance, self.product_rate.monthly_fee * 2)

        subscription_credit = CreditLine.add_subscription_credit(
            self.monthly_user_fee,
            self.subscription
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=subscription_credit).count(), 1)
        CreditLine.add_subscription_credit(
            self.monthly_user_fee,
            self.subscription
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=subscription_credit).count(), 2)
        current_subscription_credit = CreditLine.objects.get(id=subscription_credit.id)
        self.assertEqual(current_subscription_credit.balance, self.monthly_user_fee * 2)

        account_credit = CreditLine.add_account_credit(
            self.product_rate.monthly_fee,
            self.account
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=account_credit).count(), 1)
        CreditLine.add_account_credit(
            self.monthly_user_fee,
            self.account
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=account_credit).count(), 2)
        current_account_credit = CreditLine.objects.get(id=account_credit.id)
        self.assertEqual(current_account_credit.balance, self.product_rate.monthly_fee + self.monthly_user_fee)