#18537 closed Bug (fixed)
Error in calculation of check digit in ARCUITField
Reported by: | Owned by: | foxyNinja7 | |
---|---|---|---|
Component: | contrib.localflavor | Version: | 1.4 |
Severity: | Normal | Keywords: | ARCUITField, localflavor.ar |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | yes | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
There is a bug in the calculation of check digit on forms.py from django.contrib.localflavor.ar.
When using ARCUITField and enter a valid CUIT terminated (that is, check digit) in 0 or 9, the clean method raise a Validation error message.
To replicate the bug, just enter a valid cuit number with the format XX-XXXXXXXX-0, and you will see the error "Invalid CUIT".
The problem is in the _calc_cd(self, cuit) method, that not take care of this two special cases. More info in http://es.wikipedia.org/wiki/C%C3%B3digo_%C3%9Anico_de_Identificaci%C3%B3n_Tributaria
A quick fix for this could be:
def _calc_cd(self, cuit): mults = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2) tmp = sum([m * int(cuit[idx]) for idx, m in enumerate(mults)]) aux_cd = 11 - tmp % 11 if aux_cd == 11: aux_cd = 0 elif aux_cd == 10: aux_cd = 9 return str(aux_cd)
Thanks,
Change History (9)
comment:1 by , 12 years ago
Component: | Forms → contrib.localflavor |
---|---|
Easy pickings: | set |
Needs tests: | set |
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 12 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:3 by , 12 years ago
comment:5 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Local git branch for this change: https://github.com/kevinschaul/django