code: def recalculate(self, amount, billing_info):
          
          order = Order(pk=-1)
          order.amount = amount
          order.currency = self.get_currency()
          country = getattr(billing_info, 'country', None)
          if not country is None:
              country = country.code
          tax_number = getattr(billing_info, 'tax_number', None)
  
          # Calculating tax can be complex task (e.g. VIES webservice call)
          # To ensure that tax calculated on order preview will be the same on final order
          # tax rate is cached for a given billing data (as this value only depends on it)
          tax_session_key = "tax_%s_%s" % (tax_number, country)
  
          tax = self.request.session.get(tax_session_key)
          if tax is None:
              taxation_policy = getattr(settings, 'PLANS_TAXATION_POLICY', None)
              if not taxation_policy:
                  raise ImproperlyConfigured('PLANS_TAXATION_POLICY is not set')
              taxation_policy = import_name(taxation_policy)
              tax = str(taxation_policy.get_tax_rate(tax_number, country))
              # Because taxation policy could return None which clutters with saving this value
              # into cache, we use str() representation of this value
              self.request.session[tax_session_key] = tax
  
          order.tax = Decimal(tax) if tax != 'None' else None
  
          return order
docs: Calculates and return pre-filled Order