code: def fi_business_id(business_id):
      
      if not business_id or not re.match(business_id_pattern, business_id):
          return False
      factors = [7, 9, 10, 5, 8, 4, 2]
      numbers = map(int, business_id[:7])
      checksum = int(business_id[8])
      sum_ = sum(f * n for f, n in zip(factors, numbers))
      modulo = sum_ % 11
      return (11 - modulo == checksum) or (modulo == 0 and checksum == 0)
docs: Validate a Finnish Business ID.
  
      Each company in Finland has a distinct business id. For more
      information see `Finnish Trade Register`_
  
      .. _Finnish Trade Register:
          http://en.wikipedia.org/wiki/Finnish_Trade_Register
  
      Examples::
  
          >>> fi_business_id('0112038-9')  # Fast Monkeys Ltd
          True
  
          >>> fi_business_id('1234567-8')  # Bogus ID
          ValidationFailure(func=fi_business_id, ...)
  
      .. versionadded:: 0.4
      .. versionchanged:: 0.5
          Method renamed from ``finnish_business_id`` to ``fi_business_id``
  
      :param business_id: business_id to validate