update bots
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
from typing import List
|
||||
|
||||
from .. import Provider as SsnProvider
|
||||
|
||||
|
||||
class Provider(SsnProvider):
|
||||
ssn_formats = ("###.####.####.##",)
|
||||
|
||||
def ssn(self) -> str:
|
||||
"""
|
||||
Returns a 13 digits Swiss SSN named AHV (German) or
|
||||
AVS (French and Italian)
|
||||
See: http://www.bsv.admin.ch/themen/ahv/00011/02185/
|
||||
"""
|
||||
|
||||
def _checksum(digits):
|
||||
evensum = sum(digits[:-1:2])
|
||||
oddsum = sum(digits[1::2])
|
||||
return (10 - ((evensum + oddsum * 3) % 10)) % 10
|
||||
|
||||
digits: List[int] = [7, 5, 6]
|
||||
# create an array of first 9 elements initialized randomly
|
||||
digits += self.generator.random.sample(range(10), 9)
|
||||
# determine the last digit to make it qualify the test
|
||||
digits.append(_checksum(digits))
|
||||
# repeat steps until it does qualify the test
|
||||
|
||||
digits_ = "".join([str(d) for d in digits])
|
||||
return f"{digits_[:3]}.{digits_[3:7]}.{digits_[7:11]}.{digits_[11:]}"
|
||||
|
||||
def vat_id(self) -> str:
|
||||
"""
|
||||
:return: Swiss UID number
|
||||
"""
|
||||
|
||||
def _checksum(digits):
|
||||
code = ["8", "6", "4", "2", "3", "5", "9", "7"]
|
||||
remainder = 11 - (sum(map(lambda x, y: int(x) * int(y), code, digits)) % 11)
|
||||
if remainder == 10:
|
||||
return 0
|
||||
elif remainder == 11:
|
||||
return 5
|
||||
return remainder
|
||||
|
||||
vat_id: str = self.numerify("########")
|
||||
return "CHE" + vat_id + str(_checksum(vat_id))
|
||||
Binary file not shown.
Reference in New Issue
Block a user