impactro / Boleto-Test

Testes funcionais de compatibilidade para validação das rotinas de remessa e retorno
2 stars 2 forks source link

Erro Boleto SICOB #15

Closed jbsr closed 8 years ago

jbsr commented 8 years ago

Fábio, o boleto gerado para o banco SICOB não está sendo validado pelo aplicativo

Estou passando a parametrização da seguinte forma:

Dim ced As New Kartoffel.Cobranca.CedenteInfo Dim sac As New Kartoffel.Cobranca.SacadoInfo Dim bol As New Kartoffel.Cobranca.BoletoInfo Dim blt As New Kartoffel.Cobranca.Boleto

    ced.Cedente = "Cliente SICOB"
    ced.Banco = "756"
    ced.Agencia = "3009"
    ced.Conta = "145823"
    ced.Carteira = "001"
    ced.CNPJ = "12.345.678/0001-12"
    ced.CodCedente = "19889"
    ced.Convenio = "19889"
    ced.Modalidade = "1"

    'Definição dos dados do sacado
    sac.Sacado = "Seu nome"

    'Definição dos dados do boleto basicos
    bol.NossoNumero = "1007"
    bol.DataDocumento = Now
    bol.DataVencimento = CDate("11/05/2016")

    'Os demais campos abaixo são opcionais, mas uteis e obrigatórios de acordo com o banco
    bol.NumeroDocumento = "0001"
    bol.Quantidade = 1
    bol.ValorUnitario = 10
    bol.ValorDocumento = 10
    ' Mostra no recibo do pagador
    bol.Demonstrativo = "Exemplo de texto sobre o demostrativo"
    bol.LocalPagamento = "Pagavel em qualquer lugar possivel"
    bol.Instrucoes = "Instruções para o caixa"
    'Tipo de boleto
    bol.Aceite = "N"
    bol.Especie = "1"
    ' Apenas para geração de remessa
    bol.Ocorrencia = 1
    bol.Comando = 1
    bol.Instrucao1 = 2
    bol.Instrucao1 = 3

    bol.DataDesconto = CDate("11/05/2016") 'Data Limite para a aparecer o desconto, sem o limite sempre mostra
    bol.ValorDesconto = 0
    bol.ValorOutras = 0
    bol.ValorAcrescimo = 0
    bol.ValorMora = 0  'Valor de mora por dia: R$ 0,10 (dez centavos)
    bol.PercentualMulta = 0 '2 / 100 '2% de multa
    bol.CalculaMultaMora = 0
    'Só em carne ou layout customizado
    bol.ParcelaNumero = 1
    bol.ParcelaTotal = 1

    'Executa os calculos de geraçào de boleto
    blt.MakeBoleto(ced, sac, bol)
    'blt.Save("teste.bmp")
    blt.CalculaBoleto()

A linha digitavel que está sendo retornada é a abaixo:

75691.98893 01001.988904 00100.700012 5 67910000001000

O banco está retornando inconsistência,conforme imagem

2016-05-11_171111

me certifique que os dados estavam sendo chegados corretamente na dll (ver vídeo em anexo)

Video_2016-05-11_170650.pdf

Deverá alterar de pdf para wmv

O que me chama a atenção é o primeiro bloco

Desenvolvedor 7569198893 01001988904 00100700012 5 67910000001000 Sistema 7569130094 01019888906 00100780014 7 67910000001000

Observe que a linha gerado pela dll informa o número do convenio e não a agencia.

No aguardo.

impactro commented 8 years ago

Usando o link (http://exemplos.boletoasp.com.br/BoletoNet/FuncTeste_DecodIPTE.aspx) para decodificar temos:

Desenvolvedor 7569198893 01001988904 00100700012 5 67910000001000 Sistema 7569130094 01019888906 00100780014 7 67910000001000

Desenvolvedor 756.9.5.6791.0000001000-1988901001988900010070001 Sistema 756.9.7.6791.0000001000-1300901019888900010078001

Desenvolvedor 1 9 88 9 010019 8890 00 10070 0 0 1 Sistema 1 3 00 9 010198 8890 00 10078 0 0 1 Layout: R C yy b nnnnnd AAAA PP CCCCC V 0 D Direrenças: = A BB = ====CC ==== == ====D = = E

Da documentação temos: (https://github.com/impactro/Boleto-Test/blob/master/DOC/sicredi_cnab400.pdf) Posição / Tamanho / Conteúdo 1 : Código numérico correspondente ao tipo de cobrança: “1” – Com Registro “3 – Sem Registro”. Obs.: O SICREDI não validará este campo. 1 : Código numérico correspondente ao tipo de carteira: “1” - carteira simples 9 : Nosso número (Ano/Controle/Sequencial/DAC) 4 : Cooperativa de crédito/agência beneficiária 2 : Posto da cooperativa de crédito/agência beneficiária 5 : Código do beneficiário 1 : Será 1 (um) quando houver valor expresso no campo “valor do documento” 1 : Filler – zeros “0” 1 : DV do campo livre calculado por módulo 11 com aproveitamento total (resto igual a 0 ou 1 DV cai para 0) RCyybnnnnndAAAAPPCCCCCV0D

Das diferenças temos: A => é só especficar a Carteira = 3 B => No caso o boleto de exemplo deve ter o ano 2000, onde 00 são os ultimos digitos do ano de vencimento do boleto C => Informe o numero do boleto sem o DAC (digito de verificação) o digito é sempre calculado internamente D => O código do cedente está diferente, o usado pelo sistema foi 10078 E => Isso é um DAC, se todos os campos anteriores estiverem certos esse também vai dar

então pelos parâmetros do seu código o que está errado é:

ced.Carteira = "3" ced.CodCedente = "10178" bol.NumeroDocumento = "0001" bol.DataVencimento = CDate("11/05/2000")