- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Módulo 11 CNAB Bradesco
×
Linguagem de Programação ADVPL
Perguntas Módulo 11 CNAB Bradesco
- raisiqueira
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 17
- Obrigados Recebidos: 0
8 anos 6 meses atrás #30492
por raisiqueira
Módulo 11 CNAB Bradesco foi criado por raisiqueira
Fala turma, estou com problemas para calcular o Módulo 11 do CNAB BRADESCO. Segundo o manual, Se o resto da divisão for “1”, desprezar a diferença entre o divisor menos o resto que será “10” e considerar o dígito como “P”.
Alguém pode me dar uma luz no código abaixo?
Alguém pode me dar uma luz no código abaixo?
******************************************************************************************************
Static Function Modulo11(cData,nPeso)
******************************************************************************************************
Local L, D, P := 0
L := Len(cdata)
D := 0
P := 1
While L > 0
P := P + 1
D := D + (Val(SubStr(cData, L, 1)) * P)
If P = nPeso
P := 1
EndIf
L := L - 1
EndDo
/*
D := 11 - (mod(D,11))
If (D == 0 .Or. D == 1 .Or. D == 10 .Or. D == 11)
D := 1
EndIf
*/
If Alltrim(cData) == 'NN'
D := 11 - (mod(D,11))
IF D == 11 //Se o resto for 11, o digito verificador será 0
D := 0
Endif
IF D == 10 //Se o resto for 10, o dígito verificador será P
D := "P"
Endif
Else
IF Mod(D,11) == 0 .or. Mod(D,11) == 1 .or. Mod(D,11) == 10
D := 1
Else
D := 11 - (mod(D,11))
Endif
Endif
Return(D)
Por favor Acessar ou Registrar para participar da conversa.
- raisiqueira
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 17
- Obrigados Recebidos: 0
8 anos 6 meses atrás #30499
por raisiqueira
Respondido por raisiqueira no tópico Módulo 11 CNAB Bradesco
Refiz a função de Modulo 11 com ajuda de um amigo, o resultado foi positivo.
/*
* Função Modulo 11 para gerar Digito Verificador do Bradesco
* 2016 | IMEC
* Autor Rai Siqueira, Raphael Mendes
*/
Static Function Modulo11(cData,nPeso,cOrig)
Local L, D, P := 0
L := Len(cdata)
D := 0
P := 1
While L > 0
P := P + 1
D := D + (Val(SubStr(cData, L, 1)) * P)
If P = nPeso
P := 1
EndIf
L := L - 1
EndDo
If Alltrim(cOrig) == 'NN'
D := 11 - (mod(D,11))
IF D == 11 //Se o resto for 11, o digito verificador será 0
D := 0
Endif
IF D == 10 //Se o resto for 10, o dígito verificador será P
D := "P"
Endif
Else
IF Mod(D,11) == 0 .or. Mod(D,11) == 1 .or. Mod(D,11) == 10
D := 1
Else
D := 11 - (mod(D,11))
Endif
Endif
Return(D)
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Módulo 11 CNAB Bradesco
Tempo para a criação da página:0.125 segundos