- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Codigo Fonte para calcular o Digito Veriricador do Codigo de Barra BOTELOT BANCARIO
×
Linguagem de Programação ADVPL
Perguntas Codigo Fonte para calcular o Digito Veriricador do Codigo de Barra BOTELOT BANCARIO
- Sombra
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 593
- Obrigados Recebidos: 1
11 anos 8 meses atrás #11755
por Sombra
Codigo Fonte para calcular o Digito Veriricador do Codigo de Barra BOTELOT BANCARIO foi criado por Sombra
Boa tarde Srs
Estaca precisando do Codigo Fonte para calcular o Digito Veriricador do Codigo de Barra para BOTELOT BANCARIO -
COIDIGO DAC.
MODELO CADOC 240244
Estaca precisando do Codigo Fonte para calcular o Digito Veriricador do Codigo de Barra para BOTELOT BANCARIO -
COIDIGO DAC.
MODELO CADOC 240244
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 8 meses atrás #11772
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Codigo Fonte para calcular o Digito Veriricador do Codigo de Barra BOTELOT BANCARIO
cBarra:=SE1->E1_PORTADO+If(SE1->E1_MOEDA==1,'9','0')+strzero(nFatorVen,4);
+SUBS(STRZERO(SE1->E1_SALDO,16,2),6,+SUBS(STRZERO(SE1->E1_SALDO,16,2),15,2);
+NOSSONUM + StrTran(StrTran(ALLTRIM(SA6->A6_AGENCIA)+SA6->A6_CEDENTE,'.',''),'-','') //'0314870000001227'//+ MV_PAR11+ NOSSONUM //SE1->E1_NUMBCO
//agencia cedente carteira
DVN := CDigitoNosso() // calculo dos digitos verificadores do nosso numero.
CDigitoChave()
//========================================================================
// CDIGITOCHAVE
//========================================================================
Static Function CDigitoChave()
******************************
nCont:=0
cBarraImp := space(43)
cBarraImp := Subs(cBarra,1,43)
CalculaModulo11()
//nCont1 := int(nCont / 11)
//nCont2 := ncont1 * 11
//nResto := ncont - ncont2
nResto := MOD(ncont,11)
nDigitoImp := 11 - nResto
if nResto <= 1 .or. nResto > 9
nDigitoImp := 1
EndIf
cBarraFim := subs(cBarra,1,4) + strzero(nDigitoImp,1) + subs(cBarra,5,39)
Return
//========================================================================
// CALCULAMODULO11
//========================================================================
Static Function CalculaModulo11
*******************************
nCont := 0.00
nCont := nCont+(Val(Subs(cBarraImp,43,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,42,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,41,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,40,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,39,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,38,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,37,1))*
nCont := nCont+(Val(Subs(cBarraImp,36,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,35,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,34,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,33,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,32,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,31,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,30,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,29,1))*
nCont := nCont+(Val(Subs(cBarraImp,28,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,27,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,26,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,25,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,24,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,23,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,22,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,21,1))*
nCont := nCont+(Val(Subs(cBarraImp,20,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,19,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,18,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,17,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,16,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,15,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,14,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,13,1))*
nCont := nCont+(Val(Subs(cBarraImp,12,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,11,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,10,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,09,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,08,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,07,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,06,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,05,1))*
nCont := nCont+(Val(Subs(cBarraImp,04,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,03,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,02,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,01,1))*4)
Return
//========================================================================
// CDIGITONOSS0
//========================================================================
Static Function CDigitoNosso()
******************************
nCont:=0
cBarraImp3 := space(11)
cBarraImp3 := nossonum // Subs(cBarra,19,11)
CalNosso()
nCont1 := int(nCont / 11)
nCont2 := ncont1 * 11
nResto := ncont - ncont2
nResto := 11 - nResto
if nResto > 9
nResto := 0
cBarraImp4 := cBarraImp3+"0"
Return("0")
else
cBarraImp4 := cBarraImp3 + strzero(nResto,1)
Return(strzero(nResto,1))
EndIf
+SUBS(STRZERO(SE1->E1_SALDO,16,2),6,+SUBS(STRZERO(SE1->E1_SALDO,16,2),15,2);
+NOSSONUM + StrTran(StrTran(ALLTRIM(SA6->A6_AGENCIA)+SA6->A6_CEDENTE,'.',''),'-','') //'0314870000001227'//+ MV_PAR11+ NOSSONUM //SE1->E1_NUMBCO
//agencia cedente carteira
DVN := CDigitoNosso() // calculo dos digitos verificadores do nosso numero.
CDigitoChave()
//========================================================================
// CDIGITOCHAVE
//========================================================================
Static Function CDigitoChave()
******************************
nCont:=0
cBarraImp := space(43)
cBarraImp := Subs(cBarra,1,43)
CalculaModulo11()
//nCont1 := int(nCont / 11)
//nCont2 := ncont1 * 11
//nResto := ncont - ncont2
nResto := MOD(ncont,11)
nDigitoImp := 11 - nResto
if nResto <= 1 .or. nResto > 9
nDigitoImp := 1
EndIf
cBarraFim := subs(cBarra,1,4) + strzero(nDigitoImp,1) + subs(cBarra,5,39)
Return
//========================================================================
// CALCULAMODULO11
//========================================================================
Static Function CalculaModulo11
*******************************
nCont := 0.00
nCont := nCont+(Val(Subs(cBarraImp,43,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,42,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,41,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,40,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,39,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,38,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,37,1))*
nCont := nCont+(Val(Subs(cBarraImp,36,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,35,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,34,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,33,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,32,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,31,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,30,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,29,1))*
nCont := nCont+(Val(Subs(cBarraImp,28,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,27,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,26,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,25,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,24,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,23,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,22,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,21,1))*
nCont := nCont+(Val(Subs(cBarraImp,20,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,19,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,18,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,17,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,16,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,15,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,14,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,13,1))*
nCont := nCont+(Val(Subs(cBarraImp,12,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,11,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,10,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,09,1))*4)
nCont := nCont+(Val(Subs(cBarraImp,08,1))*5)
nCont := nCont+(Val(Subs(cBarraImp,07,1))*6)
nCont := nCont+(Val(Subs(cBarraImp,06,1))*7)
nCont := nCont+(Val(Subs(cBarraImp,05,1))*
nCont := nCont+(Val(Subs(cBarraImp,04,1))*9)
nCont := nCont+(Val(Subs(cBarraImp,03,1))*2)
nCont := nCont+(Val(Subs(cBarraImp,02,1))*3)
nCont := nCont+(Val(Subs(cBarraImp,01,1))*4)
Return
//========================================================================
// CDIGITONOSS0
//========================================================================
Static Function CDigitoNosso()
******************************
nCont:=0
cBarraImp3 := space(11)
cBarraImp3 := nossonum // Subs(cBarra,19,11)
CalNosso()
nCont1 := int(nCont / 11)
nCont2 := ncont1 * 11
nResto := ncont - ncont2
nResto := 11 - nResto
if nResto > 9
nResto := 0
cBarraImp4 := cBarraImp3+"0"
Return("0")
else
cBarraImp4 := cBarraImp3 + strzero(nResto,1)
Return(strzero(nResto,1))
EndIf
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- Sombra
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 593
- Obrigados Recebidos: 1
- kaciorrm
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 55
- Obrigados Recebidos: 1
11 anos 8 meses atrás #11796
por kaciorrm
Respondido por kaciorrm no tópico Codigo Fonte para calcular o Digito Veriricador do Codigo de Barra BOTELOT BANCARIO
Bom dia,
Quando coloquei o CNAB desenvolvi uma rotina semelhante para calcular o Digito verificador, após o termino constatei que existem funções prontas da TOTVS para alumas situações inclusive para o Digito verificador, mas não cheguei a usa-las.
as funções foram retiradas na apostila em um anexo no forum
www.masteradvpl.com.br/media/kunena/attachments/646/CNAB.rar
Funções padrões disponíveis
MOD10 - Calcula o digito verificado de uma seqüência de números baseados no Ambiente 10. Utilizando
para verificar o digito em linhas digitáveis e código de barras de concessionárias de serviços públicos.
MOD11- Calculo o digito verificador de uma seqüência de números baseando-se no Ambiente 11.
Utilizado para verificar o digito em linhas digitáveis e código de barras em geral.
VLDCODBAR- Valida o código de barras ou a linha digitável de títulos a pagar ou a receber;
SOMAVALOR- Retorna o valor total dos títulos remetidos.
INCREMENTA- Retorna o próximo numero da seqüência de linhas para o CNAB modelo 1.
INCREMENTAL- Retorna o próximo numero da seqüência de linhas para o CNAB modelo 2.
NOSSONUM- Retorna o próximo numero disponível para identificação do titulo de acordo com a faixa
de numeração fornecida pelo banco, utilizada quando os boletos são impressos pela empresa.
NUMTITULO- Retorna a chave de localização de um titulo somente para a carteira a pagar.
GRAVADATA- Converte uma data no formato DD/MM/AAAA para um dos 6 formatos caracteres pré-definidos.
Quando coloquei o CNAB desenvolvi uma rotina semelhante para calcular o Digito verificador, após o termino constatei que existem funções prontas da TOTVS para alumas situações inclusive para o Digito verificador, mas não cheguei a usa-las.
as funções foram retiradas na apostila em um anexo no forum
www.masteradvpl.com.br/media/kunena/attachments/646/CNAB.rar
Funções padrões disponíveis
MOD10 - Calcula o digito verificado de uma seqüência de números baseados no Ambiente 10. Utilizando
para verificar o digito em linhas digitáveis e código de barras de concessionárias de serviços públicos.
MOD11- Calculo o digito verificador de uma seqüência de números baseando-se no Ambiente 11.
Utilizado para verificar o digito em linhas digitáveis e código de barras em geral.
VLDCODBAR- Valida o código de barras ou a linha digitável de títulos a pagar ou a receber;
SOMAVALOR- Retorna o valor total dos títulos remetidos.
INCREMENTA- Retorna o próximo numero da seqüência de linhas para o CNAB modelo 1.
INCREMENTAL- Retorna o próximo numero da seqüência de linhas para o CNAB modelo 2.
NOSSONUM- Retorna o próximo numero disponível para identificação do titulo de acordo com a faixa
de numeração fornecida pelo banco, utilizada quando os boletos são impressos pela empresa.
NUMTITULO- Retorna a chave de localização de um titulo somente para a carteira a pagar.
GRAVADATA- Converte uma data no formato DD/MM/AAAA para um dos 6 formatos caracteres pré-definidos.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Codigo Fonte para calcular o Digito Veriricador do Codigo de Barra BOTELOT BANCARIO
Tempo para a criação da página:0.143 segundos