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:
parent
590de18add
commit
1d2982362d
|
@ -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:
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue