Open Ilair opened 7 years ago
Ilair,
estou trabalhando na carteira 17-019 e também tive que fazer ajustes, o ideal é você apontar o projeto no Visual Studio e depurar, pois assim saberás que informação está faltando no momento da execução.
Obrigado pelo retorno, vou ver isso aqui.
Olá Hericss! Fiz conforme me sugeriste e ocorreu o seguinte erro ao tentar gerar a remessa: Conversão especificada não é válida. Ele ocorre em uma linha que faz a formatação da data, por acaso você passou por algo parecido? Grato pela Atenção!
Ilair,
segue abaixo o código alterado do método, informo que ainda não consegui clonar o código então preciso da avaliação a colaboração dos mais experientes
para avaliar e implementar na dll. ` public string GerarDetalheRemessaCNAB400(Boleto boleto, int numeroRegistro, TipoArquivo tipoArquivo) { try { base.GerarDetalheRemessa(boleto, numeroRegistro, tipoArquivo); // TRegistroEDI reg = new TRegistroEDI(); reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0001, 001, 0, "7", '0')); //001-001
string vCpfCnpjEmi = "00";
if (boleto.Cedente.CPFCNPJ.Length.Equals(11)) vCpfCnpjEmi = "01"; //Cpf é sempre 11;
else if (boleto.Cedente.CPFCNPJ.Length.Equals(14)) vCpfCnpjEmi = "02"; //Cnpj é sempre 14;
#endregion
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0002, 002, 0, vCpfCnpjEmi, '0')); //002-003
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0004, 014, 0, boleto.Cedente.CPFCNPJ, '0')); //004-017
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0018, 004, 0, boleto.Cedente.ContaBancaria.Agencia, '0')); //018-021
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0022, 001, 0, boleto.Cedente.ContaBancaria.DigitoAgencia, ' '));//022-022
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0023, 008, 0, boleto.Cedente.ContaBancaria.Conta, '0')); //023-030
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0031, 001, 0, boleto.Cedente.ContaBancaria.DigitoConta, ' ')); //031-031
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0032, 007, 0, boleto.Cedente.Convenio, ' ')); //032-038
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0039, 025, 0, boleto.NumeroDocumento, ' ')); //039-063
#region Regra carteira 17-019
// hericss-001
//reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0064, 017, 0, boleto.NossoNumero, '0')); //064-080
string vNossoNumero = boleto.NossoNumero;
string vCarteira = boleto.Cedente.Carteira;
if (boleto.Carteira.Equals("17-019"))
{
vNossoNumero = vNossoNumero.Substring(3);
vCarteira = vCarteira.Substring(0, 2);
}
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0064, 017, 0, vNossoNumero, '0')); //064-080
#endregion
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0081, 002, 0, "00", '0')); //081-082
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0083, 002, 0, "00", '0')); //083-084
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0085, 003, 0, string.Empty, ' ')); //085-087
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0088, 001, 0, string.Empty, ' ')); //088-088
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0089, 003, 0, string.Empty, ' ')); //089-091
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0092, 003, 0, boleto.VariacaoCarteira, '0')); //092-094
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0095, 001, 0, "0", '0')); //095-095
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0096, 006, 0, "0", '0')); //096-101
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0102, 005, 0, string.Empty, ' ')); //102-106
// hericss-001
//reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0107, 002, 0, boleto.Cedente.Carteira, '0')); //107-108
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0107, 002, 0, vCarteira, '0')); //107-108
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0109, 002, 0, ObterCodigoDaOcorrencia(boleto), ' ')); //109-110
// hericss-001
//reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0111, 010, 0, boleto.NumeroDocumento, '0')); //111-120
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliDireita______, 0111, 010, 0, boleto.NumeroDocumento, '0')); //111-120
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediDataDDMMAA___________, 0121, 006, 0, boleto.DataVencimento, ' ')); //121-126
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0127, 013, 2, boleto.ValorBoleto, '0')); //127-139
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0140, 003, 0, "001", '0')); //140-142
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0143, 004, 0, "0000", '0')); //143-146
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0147, 001, 0, string.Empty, ' ')); //147-147
string especie = boleto.Especie;
if (boleto.EspecieDocumento.Sigla == "DM") // Conforme nota 7 explicativa do banco
especie = "01";
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0148, 002, 0, especie, '0')); //148-149
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0150, 001, 0, boleto.Aceite, ' ')); //150-150
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediDataDDMMAA___________, 0151, 006, 0, boleto.DataProcessamento, ' ')); //151-156
//
#region Instruções
string vInstrucao1 = "0";
string vInstrucao2 = "0";
//string vInstrucao3 = "0";
switch (boleto.Instrucoes.Count)
{
case 1:
vInstrucao1 = boleto.Instrucoes[0].Codigo.ToString();
vInstrucao2 = "0";
//vInstrucao3 = "0";
break;
case 2:
vInstrucao1 = boleto.Instrucoes[0].Codigo.ToString();
vInstrucao2 = boleto.Instrucoes[1].Codigo.ToString();
//vInstrucao3 = "0";
break;
case 3:
vInstrucao1 = boleto.Instrucoes[0].Codigo.ToString();
vInstrucao2 = boleto.Instrucoes[1].Codigo.ToString();
//vInstrucao3 = boleto.Instrucoes[2].Codigo.ToString();
break;
}
#endregion
//
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0157, 002, 0, vInstrucao1, '0')); //157-158
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0159, 002, 0, vInstrucao2, '0')); //159-160
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0161, 013, 2, boleto.JurosMora, '0')); //161-173
#region Instruções Conforme Código de Ocorrência...
if (boleto.Remessa.CodigoOcorrencia.Equals("35") || boleto.Remessa.CodigoOcorrencia.Equals("36")) //“35” – Cobrar Multa – ou “36” - Dispensar Multa
{
#region Código de Multa e Valor/Percentual Multa
string vCodigoMulta = "9"; //“9” = Dispensar Multa
Decimal vMulta = 0;
if (boleto.ValorMulta > 0)
{
vCodigoMulta = "1"; //“1” = Valor
vMulta = boleto.ValorMulta;
}
else if (boleto.PercMulta > 0)
{
vCodigoMulta = "2"; //“2” = Percentual
vMulta = boleto.PercMulta;
}
#endregion
#region DataVencimento
string vDataVencimento = "000000";
if (!boleto.DataVencimento.Equals(DateTime.MinValue))
vDataVencimento = boleto.DataVencimento.ToString("ddMMyy");
#endregion
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0174, 001, 0, vCodigoMulta, '0')); //174 a 174 Código da Multa 1=Valor
//hericss-001
// aqui está passando a data como string, conforme acima, vou trocar para data de vencimento que funcionou mais acima
//reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediDataDDMMAA___________, 0175, 006, 0, vDataVencimento, ' ')); //175 a 180 Data de inicio para Cobrança da Multa
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediDataDDMMAA___________, 0175, 006, 0, boleto.DataVencimento, ' ')); //175 a 180 Data de inicio para Cobrança da Multa
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0180, 013, 2, vMulta, '0')); //181 a 192 Valor de Multa
}
else
{
#region DataDesconto
string vDataDesconto = "000000";
if (!boleto.DataDesconto.Equals(DateTime.MinValue))
vDataDesconto = boleto.DataDesconto.ToString("ddMMyy");
#endregion
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0174, 006, 0, vDataDesconto, '0')); //174-179
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0180, 013, 2, boleto.ValorDesconto, '0')); //180-192
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0193, 013, 2, boleto.IOF, '0')); //193-205
}
#endregion
//
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0206, 013, 2, boleto.Abatimento, '0')); //206-218
#region Regra Tipo de Inscrição Sacado
string vCpfCnpjSac = "00";
if (boleto.Sacado.CPFCNPJ.Length.Equals(11)) vCpfCnpjSac = "01"; //Cpf é sempre 11;
else if (boleto.Sacado.CPFCNPJ.Length.Equals(14)) vCpfCnpjSac = "02"; //Cnpj é sempre 14;
#endregion
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0219, 002, 0, vCpfCnpjSac, '0')); //219-220
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0221, 014, 0, boleto.Sacado.CPFCNPJ, '0')); //221-234
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0235, 037, 0, boleto.Sacado.Nome.ToUpper(), ' ')); //235-271
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0272, 003, 0, string.Empty, ' ')); //272-274
var enderecoSacadoComNumero = boleto.Sacado.Endereco.End;
if (!string.IsNullOrEmpty(boleto.Sacado.Endereco.Numero))
{
enderecoSacadoComNumero += " " + boleto.Sacado.Endereco.Numero;
}
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0275, 040, 0, enderecoSacadoComNumero.ToUpper(), ' ')); //275-314
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0315, 012, 0, boleto.Sacado.Endereco.Bairro.ToUpper(), ' ')); //315-326
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0327, 008, 0, boleto.Sacado.Endereco.CEP, '0')); //327-334
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0335, 015, 0, boleto.Sacado.Endereco.Cidade.ToUpper(), ' ')); //335-349
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0350, 002, 0, boleto.Sacado.Endereco.UF.ToUpper(), ' ')); //350-351
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0352, 040, 0, string.Empty, ' ')); //352-391
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0392, 002, 0, string.Empty, ' ')); //392-393
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0394, 001, 0, string.Empty, ' ')); //394-394
reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0395, 006, 0, numeroRegistro, '0')); //395-400
//
reg.CodificarLinha();
//
string _detalhe = Utils.SubstituiCaracteresEspeciais(reg.LinhaRegistro);
//
return _detalhe;
}
catch (Exception ex)
{
throw new Exception("Erro ao gerar DETALHE do arquivo CNAB400.", ex);
}
}`
segue arquivo, retire o '.txt' do final.
Muito Obrigado Heric!
Coloquei o código que você alterou e funcionou perfeitamente pra mim agora.
Oba, feliz por ter ajudado!
Seria interessante agora, analisarem para implementar na dll, pois ainda não consegui clonar o projeto para contribuir.
Olá Heric! Alguma vez aconteceu isso pra você ao gerar a remessa de algum banco? Pelo que vi a biblioteca está retornando uma linha a mais ao gerar a remessa. remessaSicredi.txt
Grato pela Atenção!
Ilair,
gerei para os bancos Itaú e Brasil sem este erro, mas verifique a atualização recente que foi justamente para o Sicredi.
Ok Vou verificar. Obrigado pelo retorno!
2017-05-30 15:38 GMT-03:00 Heric Souza notifications@github.com:
Ilair,
gerei para os bancos Itaú e Brasil sem este erro, mas verifique a atualização recente que foi justamente para o Sicredi.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/BoletoNet/boletonet/issues/489#issuecomment-304969534, or mute the thread https://github.com/notifications/unsubscribe-auth/AMhwGaePqNrLzByOHewtfjddVdxyMOCpks5r_GI2gaJpZM4NX_xz .
Ilair dos Santos Auxiliar Técnico em Construção Civil(Desenhista) Técnico em Contabilidade Técnico em Informática Bacharel em Sistemas de Informação Cel: (55) 9 9973 - 2948 msn: ilairsantos@hotmail.com Skype: ilair.santos Twitter: @ilairsantos
Uma dúvida: o codigo no repositório coincide com a dll baixada pelo nuget ? porque eu também estava com um erro ao gerar a remessa, no segmento P. Clonei o projeto, fiz referencia a ele o erro não ocorreu. gerou a remessa certinho. Porém não quero deixar o projeto todo do boletonet junto ao meu. Alguém com alguma situação parecida ? Caso alguma correção foi feita, pf atualizar a dll
Olá!
Estou tendo problema ao tentar gerar a remessa do Banco do Brasil, carteira 18, ocorre o seguinte erro ao tentar gerar: Erro durante a geração do DETALHE arquivo de REMESSA e numa segunda mensagem isso: Erro ao gerar DETALHE do arquivo CNAB400. Estou aprendendo a utilizar a biblioteca ainda, por esse motivo creio que esteja deixando alguma informação faltando, gostaria de saber se existe algum exemplo dessa implementação para que eu possa dar uma olhada, e quais as informações que são obrigatórias para gerar a remessa. Grato pela Atenção!