'Returns Finnish company Business Identity Code (y-tunnus).
Format is 8 digits - e.g. FI99999999,[8] last digit is a check
digit utilizing MOD 11-2. The first digit is zero for some old
organizations. This function provides current codes starting with
non-zero.'

def company_business_id(self):

    def calculate_checksum(number):
        u'Calculate    the    checksum    using    mod    11,2    method'
        factors = [7, 9, 10, 5, 8, 4, 2]
        sum = 0
        for (x, y) in zip(number, factors):
            sum = (sum + (int(x) * y))
        if ((sum % 11) == 0):
            return u'0'
        else:
            return str((11 - (sum % 11)))
    first_digit = str(self.random_digit_not_null())
    body = (first_digit + self.bothify(self.random_element((u'######',))))
    cs = calculate_checksum(body)
    return ((body + u'-') + str(cs))
