'More info about this procedure:
www.sisi.org.mx/jspsi/documentos/2005/seguimiento/06101/0610100162005_065.doc'

def _checksum(self, rfc):

    chars = u'0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ-\xd1'
    if (len(rfc) == 11):
        rfc = (u'-' + rfc)
    sum_ = sum(((i * chars.index(c)) for (i, c) in zip(reversed(range(14)), rfc)))
    checksum = (11 - (sum_ % 11))
    if (checksum == 10):
        return u'A'
    elif (checksum == 11):
        return u'0'
    return six.text_type(checksum)
