Santander Carteira 102

Aug 30, 2013 at 11:31 PM
Edited Aug 30, 2013 at 11:31 PM
Pessoal,
Estou com problemas no boleto gerado para o Santander ele está gerando
03399.01381 58800.000000 09508.701027 1 58140000030900
O DAC deveira ser 9 e não 1.
Quando crio o cedente atribuo o codigo com número da conta sem o DAC.
O erro ocorre quando o vencimento é para algumas datas específicas no caso acima 07/09/2013
Alguém sabe como resolver ?
Aug 31, 2013 at 1:26 AM
Boa Noite afsilva

Você está utilizando a última versão do Boleto.Net?

Eu já homologuei Santander e ele passou sem problemas, tanto o boleto quanto arquivo de remessa.

Sem mais

José Roberto Siqueira
Sep 2, 2013 at 1:53 PM
Edited Sep 2, 2013 at 1:54 PM
Pessoal e José Roberto Siqueira



Estou sim utilizando a última versão, segue abaixo o próprio código de exemplo
Onde alterei apenas a agência, conta, carteira e valor.

O codigo gerado é :
03399.01381 58800.000000 09508.701027 1 58140000030900

O digito 1 está errado.

Alguém sabe o que está errado ?
 public string Santander()
      {
          DateTime vencimento = new DateTime(2013, 9, 07);

          Cedente c = new Cedente("00.000.000/0000-00", "Empresa de Atacado", "0206", "138588");
          c.Codigo = 138588;

          BoletoNet.Boleto b = new BoletoNet.Boleto(vencimento, 309.00m, "102", String.Format("{0:D12}", 9508), c);

          //NOSSO NÚMERO
          //############################################################################################################################
          //Número adotado e controlado pelo Cliente, para identificar o título de cobrança.
          //Informação utilizada pelos Bancos para referenciar a identificação do documento objeto de cobrança.
          //Poderá conter número da duplicata, no caso de cobrança de duplicatas, número de apólice, no caso de cobrança de seguros, etc.
          //Esse campo é devolvido no arquivo retorno.
          b.NumeroDocumento = String.Format("{0:D12}", 9508);

          b.Sacado = new Sacado("000.000.000-00", "Fulano de Silva");
          b.Sacado.Endereco.End = "SSS 154 Bloco J Casa 23";
          b.Sacado.Endereco.Bairro = "Testando";
          b.Sacado.Endereco.Cidade = "Testelândia";
          b.Sacado.Endereco.CEP = "70000000";
          b.Sacado.Endereco.UF = "DF";

          //Espécie Documento - [R] Recibo
          b.EspecieDocumento = new EspecieDocumento_Santander("17");

          boletoBancario.Boleto = b;
          boletoBancario.MostrarCodigoCarteira = true;

          boletoBancario.Boleto.Valida();

          return boletoBancario.MontaHtml("/Content/Boletos/", "");
      }
Sep 2, 2013 at 9:14 PM
JRSIQUEIRA wrote:
Boa Noite afsilva

Você está utilizando a última versão do Boleto.Net?

Eu já homologuei Santander e ele passou sem problemas, tanto o boleto quanto arquivo de remessa.

Sem mais

José Roberto Siqueira
José Roberto Siqueira



Estou sim utilizando a última versão, segue abaixo o próprio código de exemplo
Onde alterei apenas a agência, conta, carteira e valor.

O codigo gerado é :
03399.01381 58800.000000 09508.701027 1 58140000030900

O digito 1 está errado.

Alguém sabe o que está errado ?

public string Santander()
  {
      DateTime vencimento = new DateTime(2013, 9, 07);

      Cedente c = new Cedente("00.000.000/0000-00", "Empresa de Atacado", "0206", "138588");
      c.Codigo = 138588;

      BoletoNet.Boleto b = new BoletoNet.Boleto(vencimento, 309.00m, "102", String.Format("{0:D12}", 9508), c);

      //NOSSO NÚMERO
      //############################################################################################################################
      //Número adotado e controlado pelo Cliente, para identificar o título de cobrança.
      //Informação utilizada pelos Bancos para referenciar a identificação do documento objeto de cobrança.
      //Poderá conter número da duplicata, no caso de cobrança de duplicatas, número de apólice, no caso de cobrança de seguros, etc.
      //Esse campo é devolvido no arquivo retorno.
      b.NumeroDocumento = String.Format("{0:D12}", 9508);

      b.Sacado = new Sacado("000.000.000-00", "Fulano de Silva");
      b.Sacado.Endereco.End = "SSS 154 Bloco J Casa 23";
      b.Sacado.Endereco.Bairro = "Testando";
      b.Sacado.Endereco.Cidade = "Testelândia";
      b.Sacado.Endereco.CEP = "70000000";
      b.Sacado.Endereco.UF = "DF";

      //Espécie Documento - [R] Recibo
      b.EspecieDocumento = new EspecieDocumento_Santander("17");

      boletoBancario.Boleto = b;
      boletoBancario.MostrarCodigoCarteira = true;

      boletoBancario.Boleto.Valida();

      return boletoBancario.MontaHtml("/Content/Boletos/", "");
  }
Sep 3, 2013 at 7:26 PM
Boa tarde pessoal, tudo bom?
Estávamos passando pelo mesmo problema aqui em nossa empresa e, pelo que pudemos perceber, há um BUG na forma como o DV do código de barras está sendo calculado, sendo o erro o seguinte:

O DV do grupo 4 está sendo calculado utilizando o método Mod10Mod11Santander que também é utilizado no FormataCodigoBarra, mas a forma de calculo do DV está incorreta, por isso, fizemos uma cópia desse método e geramos outro chamado CalculaDVGrupo4Santander, pois nele a diferença é a seguinte:

Quando o resto da divisão for 0, 1 ou 10 o DV deve ser igual a 1
Qualquer coisa diferente disso, retorne o próprio resto da divisão.

OK?

Abraços,
Eduardo H. Rizo
Oct 3, 2013 at 1:28 PM
Também estou tendo problemas com o cálculo do DV do código de barras, e a solução do ehrizo não funciona para mim, pois o resto da divisão é 1, mas o DV teria que ser 9.

Meu método Mod10Mod11Santander recebe seq=0339587400000020009367441000000929659890102 e lim=9

A linha digitável fica 03399.36742 41000.000921 96598.901021 1 58740000002000
Mas deveria ser 03399.36742 41000.000921 96598.901021 9 58740000002000
Oct 25, 2013 at 12:40 PM
Bom dia, tudo bem?
Primeiramente parabéns a todos os colaboradores pelo projeto criado, uma grande mão na roda.

Também posto aqui o mesmo problema com o DV geral sendo exibido como 1 e na verdade devendo ser 9 (clientes reclamam em alguns casos, nem a linha digitável e nem o código de barras imagem passando em leitor das agências bancárias com erro "incorreto"). Antes trabalhava só como o BB e sem problemas.

Ex:
Código gerado: 03399.56849 76556.847655 00599.501012 1 58670000002135
Código correto: 03399.56849 76556.847655 00599.501012 9 58670000002135

No site abaixo, podemos validar, e a mensagem é exatamente "Digito verificador 1, o correto é 9"
http://evandro.net/codigo_barras.html

Com as alterações que o ehrizo realizou também não funcionou para mim, tive de realizar mais, vide abaixo:
Método "private static int Mod10Mod11Santander(string seq, int lim)" alterado somente no final, ficando assim:
            nresto = total % 11;

            if (nresto == 0 || nresto == 1 || nresto == 10)
                ndig = 1;
            else
                ndig = (11 - nresto);

            return ndig;
realizei bastante teste, mas caso ainda encontrem algo que esteja errado, por favor me corrijam.
Alterei logo no método, pois pelo que entendi, ele é utilizado para gerar a linha digitável e o código de barras (imagem também muda).

Abraços,
Nov 12, 2013 at 6:38 PM
Edited Nov 12, 2013 at 6:39 PM
            nresto = Math.DivRem(total * 10, 11, out ndig);

            if (ndig == 0 || ndig == 10)
                ndig = 1;
            
            return ndig;
Segundo o manual do Santander essa ai parece ser a forma correta.
Veja o que diz o manual:
Multiplicar da direita para a esquerda, de 2 até 9, até o final do número, reiniciando em
2 se necessário. Somar os resultados obtidos, multiplicar o total da soma por 10 (dez)
e dividi-lo por 11 (onze). O resto desta divisão será o digito do controle.
Se o resto for igual a 0 (zero), 1 (um) ou 10 (dez) o digito será = 1 (um)
A parte de multiplicar da direita para a esquerda de 2 a 9 e reiniciando em 2 está 100%

Antes dessa alteração raros boletos estavam apresentando erro.
Depois da alteração nenhum boleto está dando erro. Como meus boletos já estavam em produção tive que abrir novamente homologação.
Estou esperando alguém do Santander me manda um e-mail para eu validar os boletos com esse código novo.
Assim que tiver uma resposta deles aviso para vocês.
Nov 26, 2013 at 8:12 PM
Edited Nov 26, 2013 at 8:17 PM
Hideman wrote:
            nresto = Math.DivRem(total * 10, 11, out ndig);

            if (ndig == 0 || ndig == 10)
                ndig = 1;
            
            return ndig;
Segundo o manual do Santander essa ai parece ser a forma correta.
Veja o que diz o manual:
Multiplicar da direita para a esquerda, de 2 até 9, até o final do número, reiniciando em
2 se necessário. Somar os resultados obtidos, multiplicar o total da soma por 10 (dez)
e dividi-lo por 11 (onze). O resto desta divisão será o digito do controle.
Se o resto for igual a 0 (zero), 1 (um) ou 10 (dez) o digito será = 1 (um)
A parte de multiplicar da direita para a esquerda de 2 a 9 e reiniciando em 2 está 100%

Antes dessa alteração raros boletos estavam apresentando erro.
Depois da alteração nenhum boleto está dando erro. Como meus boletos já estavam em produção tive que abrir novamente homologação.
Estou esperando alguém do Santander me manda um e-mail para eu validar os boletos com esse código novo.
Assim que tiver uma resposta deles aviso para vocês.
primeiramente me desculpem ressuscitar o tópico.

Querido Hideman e todos os demais que usam este maravilhoso componente para gerar boleto, tentei de todas as formas citadas acima e não obtive êxito, ou eu sou muito burro ou este método do Santander é zoadinho.

Hoje eu recebo o "NossoNumero" = 1810050000962 e de cara já me esbarra o erro na Validação onde está chumbado o Valor 12 e não aceita nada diferente disto, então pra passar no validador mudei esta regra para aceitar 13 caracteres, acrescentei a sua dica no método Mod10Mod11Santander porém ao conferir no site http://evandro.net/codigo_barras.html o dígito esperado é 1 e o cálculo me retorna 4.

Você conseguiu implementar este módulo? Se sim poderia compartilhar para todos que tem problemas com o Santander, estou há dois dias mexendo com isso e não sei mais o que fazer.

Antes que questionem, estou sim com o código mais atual da DLL.

Obrigado a Todos desde já.
Mar 31, 2014 at 7:23 PM
afsilva wrote:
JRSIQUEIRA wrote:
Boa Noite afsilva

Você está utilizando a última versão do Boleto.Net?

Eu já homologuei Santander e ele passou sem problemas, tanto o boleto quanto arquivo de remessa.

Sem mais

José Roberto Siqueira
José Roberto Siqueira



Estou sim utilizando a última versão, segue abaixo o próprio código de exemplo
Onde alterei apenas a agência, conta, carteira e valor.

O codigo gerado é :
03399.01381 58800.000000 09508.701027 1 58140000030900

O digito 1 está errado.

Alguém sabe o que está errado ?

public string Santander()
  {
      DateTime vencimento = new DateTime(2013, 9, 07);

      Cedente c = new Cedente("00.000.000/0000-00", "Empresa de Atacado", "0206", "138588");
      c.Codigo = 138588;

      BoletoNet.Boleto b = new BoletoNet.Boleto(vencimento, 309.00m, "102", String.Format("{0:D12}", 9508), c);

      //NOSSO NÚMERO
      //############################################################################################################################
      //Número adotado e controlado pelo Cliente, para identificar o título de cobrança.
      //Informação utilizada pelos Bancos para referenciar a identificação do documento objeto de cobrança.
      //Poderá conter número da duplicata, no caso de cobrança de duplicatas, número de apólice, no caso de cobrança de seguros, etc.
      //Esse campo é devolvido no arquivo retorno.
      b.NumeroDocumento = String.Format("{0:D12}", 9508);

      b.Sacado = new Sacado("000.000.000-00", "Fulano de Silva");
      b.Sacado.Endereco.End = "SSS 154 Bloco J Casa 23";
      b.Sacado.Endereco.Bairro = "Testando";
      b.Sacado.Endereco.Cidade = "Testelândia";
      b.Sacado.Endereco.CEP = "70000000";
      b.Sacado.Endereco.UF = "DF";

      //Espécie Documento - [R] Recibo
      b.EspecieDocumento = new EspecieDocumento_Santander("17");

      boletoBancario.Boleto = b;
      boletoBancario.MostrarCodigoCarteira = true;

      boletoBancario.Boleto.Valida();

      return boletoBancario.MontaHtml("/Content/Boletos/", "");
  }
amigo pode me ajudar com isso?

como fica a chamada para esse código em uma view do MVC?
Apr 1, 2014 at 2:38 AM

Sim José Roberto, na época estava utilizando a última versão, o código em anexo não funcionava havia um erro no cálculo do digito que corrigi no meu projeto, verifique se o código abaixo funciona no seu projeto.

Em 31.03.2014 15:23, rodrigopfelix escreveu:

From: rodrigopfelix

afsilva wrote:
JRSIQUEIRA wrote:
Boa Noite afsilva

Você está utilizando a última versão do Boleto.Net?

Eu já homologuei Santander e ele passou sem problemas, tanto o boleto quanto arquivo de remessa.

Sem mais

José Roberto Siqueira
José Roberto Siqueira



Estou sim utilizando a última versão, segue abaixo o próprio código de exemplo
Onde alterei apenas a agência, conta, carteira e valor.

O codigo gerado é :
03399.01381 58800.000000 09508.701027 1 58140000030900

O digito 1 está errado.

Alguém sabe o que está errado ?

public string Santander()
  {
      DateTime vencimento = new DateTime(2013, 9, 07);

      Cedente c = new Cedente("00.000.000/0000-00", "Empresa de Atacado", "0206", "138588");
      c.Codigo = 138588;

      BoletoNet.Boleto b = new BoletoNet.Boleto(vencimento, 309.00m, "102", String.Format("{0:D12}", 9508), c);

      //NOSSO NÚMERO
      //############################################################################################################################
      //Número adotado e controlado pelo Cliente, para identificar o título de cobrança.
      //Informação utilizada pelos Bancos para referenciar a identificação do documento objeto de cobrança.
      //Poderá conter número da duplicata, no caso de cobrança de duplicatas, número de apólice, no caso de cobrança de seguros, etc.
      //Esse campo é devolvido no arquivo retorno.
      b.NumeroDocumento = String.Format("{0:D12}", 9508);

      b.Sacado = new Sacado("000.000.000-00", "Fulano de Silva");
      b.Sacado.Endereco.End = "SSS 154 Bloco J Casa 23";
      b.Sacado.Endereco.Bairro = "Testando";
      b.Sacado.Endereco.Cidade = "Testelândia";
      b.Sacado.Endereco.CEP = "70000000";
      b.Sacado.Endereco.UF = "DF";

      //Espécie Documento - [R] Recibo
      b.EspecieDocumento = new EspecieDocumento_Santander("17");

      boletoBancario.Boleto = b;
      boletoBancario.MostrarCodigoCarteira = true;

      boletoBancario.Boleto.Valida();

      return boletoBancario.MontaHtml("/Content/Boletos/", "");
  }
amigo pode me ajudar com isso?

como fica a chamada para esse código em uma view do MVC?