Fixed #18537 -- Fixed CUIT calculation in ar localflavor

Thanks mmoya at 8ksoft.com.ar for the report and Kevin Shaul for the
initial patch.
This commit is contained in:
Claude Paroz 2012-07-09 13:58:07 +02:00
parent 590de18add
commit 1d2982362d
2 changed files with 9 additions and 1 deletions

View File

@ -105,9 +105,16 @@ class ARCUITField(RegexField):
return cuit[:-1], cuit[-1] return cuit[:-1], cuit[-1]
def _calc_cd(self, cuit): def _calc_cd(self, cuit):
# Calculation code based on:
# http://es.wikipedia.org/wiki/C%C3%B3digo_%C3%9Anico_de_Identificaci%C3%B3n_Tributaria
mults = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2) mults = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2)
tmp = sum([m * int(cuit[idx]) for idx, m in enumerate(mults)]) tmp = sum([m * int(cuit[idx]) for idx, m in enumerate(mults)])
return str(11 - tmp % 11) result = 11 - (tmp % 11)
if result == 11:
result = 0
elif result == 10:
result = 9
return str(result)
def _format(self, cuit, check_digit=None): def _format(self, cuit, check_digit=None):
if check_digit == None: if check_digit == None:

View File

@ -87,6 +87,7 @@ class ARLocalFlavorTests(SimpleTestCase):
'27-10345678-4': '27-10345678-4', '27-10345678-4': '27-10345678-4',
'20101234569': '20-10123456-9', '20101234569': '20-10123456-9',
'27103456784': '27-10345678-4', '27103456784': '27-10345678-4',
'30011111110': '30-01111111-0',
} }
invalid = { invalid = {
'2-10123456-9': error_format, '2-10123456-9': error_format,