Corrigido calculo DV
parent
aa95d54618
commit
ca32d00e35
15
cpf/lib.go
15
cpf/lib.go
|
@ -39,8 +39,12 @@ func Check(s string) bool {
|
||||||
d1 = d1 + (v * mul)
|
d1 = d1 + (v * mul)
|
||||||
mul--
|
mul--
|
||||||
}
|
}
|
||||||
mod1 := (d1 * 10) % 11
|
mod1 := (d1) % 11
|
||||||
|
if mod1 < 2 {
|
||||||
|
mod1 = 0
|
||||||
|
} else {
|
||||||
|
mod1 = 11 - mod1
|
||||||
|
}
|
||||||
d2 := 0
|
d2 := 0
|
||||||
mul = 11
|
mul = 11
|
||||||
for _, v := range nums[0 : len(nums)-2] {
|
for _, v := range nums[0 : len(nums)-2] {
|
||||||
|
@ -49,6 +53,11 @@ func Check(s string) bool {
|
||||||
}
|
}
|
||||||
d2 = d2 + (mod1 * mul)
|
d2 = d2 + (mod1 * mul)
|
||||||
|
|
||||||
mod2 := (d2 * 10) % 11
|
mod2 := (d2) % 11
|
||||||
|
if mod2 < 2 {
|
||||||
|
mod2 = 0
|
||||||
|
} else {
|
||||||
|
mod2 = 11 - mod2
|
||||||
|
}
|
||||||
return mod1 == nums[len(nums)-2] && mod2 == nums[len(nums)-1]
|
return mod1 == nums[len(nums)-2] && mod2 == nums[len(nums)-1]
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@ func TestCheck(t *testing.T) {
|
||||||
"377.100.400-46",
|
"377.100.400-46",
|
||||||
"845.846.910-37",
|
"845.846.910-37",
|
||||||
"845.846.910-17",
|
"845.846.910-17",
|
||||||
|
"39412818602",
|
||||||
|
"768.974.608-00",
|
||||||
} {
|
} {
|
||||||
ret := Check(v)
|
ret := Check(v)
|
||||||
log.Printf("%s=>%v", v, ret)
|
log.Printf("%s=>%v", v, ret)
|
||||||
|
|
Loading…
Reference in New Issue