BoletoNet/boletonet

Como trocar a Variação da Carteira do arquivo EDI do BB?

Opened this issue · 1 comments

bom dia.... estou gerando boletos e arquivos de remessa do EDI para o BB.

porêm estou com uma msg de convenio errado e variação da carteira errado no EDI. porrem no boleto aparentemente esta tudo ok.

o problema é q eu troco a variação da carteira para "027", mas no arquivo do EDI sempre coloca "019".

mesmo forçando via hard code para "027" no edi aparece "019";

alguem poderia me ajudar com isso? como posso resolver isso?

vou por o codigo q utilizo.


            var boleto = new BoletoNet.Boleto(DateTime.Now.AddDays(10), 0.01m, "17", "1", "4340", "13321");
            var boletoBancario = new BoletoBancario();
            boletoBancario.Boleto = boleto;

            boletoBancario.Boleto.NumeroDocumento = numeroDocumento.Trim(); 
            
            // FORÇO A TROCA DA VARIACAO;
            // FORÇO A TROCA DA VARIACAO;
			
            var variacaoCarteira = "027";
            boletoBancario.Boleto.VariacaoCarteira = variacaoCarteira;
			
            // FORÇO A TROCA DA VARIACAO;
            // FORÇO A TROCA DA VARIACAO;
			
            boletoBancario.Boleto.LocalPagamento = "";
            boletoBancario.Boleto.Avalista = null;

            boletoBancario.Boleto.Cedente.Codigo = codigoNoBanco;
            boletoBancario.Boleto.Cedente.Carteira = carteira.Trim();
            boletoBancario.Boleto.Cedente.CPFCNPJ = _empresa.Cnpj.ToString();
            boletoBancario.Boleto.Cedente.Convenio = long.Parse(convenio);

            boletoBancario.Boleto.Cedente.Endereco = new BoletoNet.Endereco();
            boletoBancario.Boleto.Cedente.Endereco.Bairro = _empresa.Bairro.Trim();
            boletoBancario.Boleto.Cedente.Endereco.CEP = _empresa.CEP.ExtrairNumero().Trim();
            boletoBancario.Boleto.Cedente.Endereco.Cidade = _empresa.DsMunicipio?.Trim() ?? string.Empty;
            boletoBancario.Boleto.Cedente.Endereco.Complemento = "";
            boletoBancario.Boleto.Cedente.Endereco.Email = _empresa.Email.Trim();
            boletoBancario.Boleto.Cedente.Endereco.Numero = _empresa.Numero.Trim();
            boletoBancario.Boleto.Cedente.Endereco.UF = _empresa.SiglaUF?.Trim() ?? "BA";
            boletoBancario.Boleto.Cedente.Endereco.End = _empresa.Logradouro.Trim();

            boletoBancario.Boleto.Cedente.Nome = _empresa.Nome;

            boletoBancario.Boleto.Sacado.CPFCNPJ = Parcela.Titulo.Pagador.vl_cnpj_cpf.Trim();
            boletoBancario.Boleto.Sacado.Nome = Parcela.Titulo.Pagador.ds_nomereduzido.Trim();
            boletoBancario.Boleto.Sacado.Endereco.Bairro = Parcela.Titulo.Pagador.ds_bairro.Trim();
            boletoBancario.Boleto.Sacado.Endereco.CEP = Parcela.Titulo.Pagador.vl_cep.ExtrairNumero().Trim();
            boletoBancario.Boleto.Sacado.Endereco.Numero = Parcela.Titulo.Pagador.ds_logradouro.Trim();
            boletoBancario.Boleto.Sacado.Endereco.Cidade = Parcela.Titulo.Pagador.ds_municipio.Trim();
            boletoBancario.Boleto.Sacado.Endereco.Email = Parcela.Titulo.Pagador.ds_e_mail.Trim();
            boletoBancario.Boleto.Sacado.Endereco.End = Parcela.Titulo.Pagador.ds_endereco.Trim();
            boletoBancario.Boleto.Sacado.Endereco.Complemento = "";
            boletoBancario.Boleto.Sacado.Endereco.UF = Parcela.Titulo.Pagador.id_uf.SiglaEstado();

            boletoBancario.Boleto.DataVencimento = Parcela.DtVencimento;
            boletoBancario.Boleto.DataDocumento = Parcela.DtEmissaoDocumento;
            boletoBancario.Boleto.DataProcessamento = DateTime.Now;

            boletoBancario.Boleto.ValorBoleto = Parcela.ValorDevido;
            boletoBancario.Boleto.ValorDescontoAntecipacao = Parcela.VlDesconto;
            boletoBancario.Boleto.ValorDesconto = 0;
            boletoBancario.Boleto.Abatimento = 0;

            boletoBancario.Boleto.NumeroParcela = Parcela.IdParcela;
            boletoBancario.Boleto.TotalParcela = Parcela.Titulo?.QtdParcelas ?? 0;
            boletoBancario.Boleto.QuantidadeMoeda = 0;
            boletoBancario.Boleto.TipoDeCobranca = "1";

            boletoBancario.Boleto.EspecieDocumento = new EspecieDocumento(idBanco);
            boletoBancario.Boleto.EspecieDocumento.Codigo = "01";

            boletoBancario.Boleto.Remessa = new Remessa();
            boletoBancario.Boleto.Remessa.TipoDocumento = "1";
            boletoBancario.Boleto.Remessa.CodigoOcorrencia = "01";

            MensagemValidacao = string.Empty;

            try
            {
                boletoBancario.Boleto.Valida();
            }
            catch (Exception ex)
            {
                MensagemValidacao = ex.Message;
            }

            boletoBancario.GerarArquivoRemessa = true;
            boletoBancario.Boleto.Remessa = new Remessa {TipoDocumento = "1", CodigoOcorrencia = "01"};

                var memoryStr = new MemoryStream();

                var edi = new ArquivoRemessa(cnab);
                edi.NumeroConvenio = "3030720";
                var retorno = string.Empty;
                if (edi.ValidarArquivoRemessa("3030720", "1", boletoBancario.Boleto.Cedente, boletosEdi, 123, out retorno))
                {
            
                    var boletosEdi = new Boletos();
                    boletosEdi.Add(boletoBancario.Boleto);
                    edi.GerarArquivoRemessa("3030720", "1", boletoBancario.Boleto.Cedente, boletosEdi, memoryStr, 123);
                    BytesEdis = memoryStr.GetBuffer();
                }

segue imagem de como edi foi gerado, com a variação 019 e não 027 q eu queria

edi_variaco_carteira

@MarceloNeoTecnologia tenta jogar a carteira e a variação juntas, tive um problema parecido e pra mim deu certo dessa forma.

Seu código poderia ficar assim:

        var boleto = new BoletoNet.Boleto(DateTime.Now.AddDays(10), 0.01m, "17", "1", "4340", "13321");
        var boletoBancario = new BoletoBancario();
        boletoBancario.Boleto = boleto;

        boletoBancario.Boleto.NumeroDocumento = numeroDocumento.Trim(); 
        
        // FORÇO A TROCA DA VARIACAO;
        // FORÇO A TROCA DA VARIACAO;
		
        var variacaoCarteira = "027";
        var carteiraComVariacao = $"{carteira.Trim()}-{variacaoCarteira}" //variável recebendo a carteira e a variação
        boletoBancario.Boleto.VariacaoCarteira = variacaoCarteira;
		
        // FORÇO A TROCA DA VARIACAO;
        // FORÇO A TROCA DA VARIACAO;
		
        boletoBancario.Boleto.LocalPagamento = "";
        boletoBancario.Boleto.Avalista = null;

        boletoBancario.Boleto.Cedente.Codigo = codigoNoBanco;
        boletoBancario.Boleto.Cedente.Carteira = carteiraComVariacao; //atribuindo a variável no objeto

no caso eu criei a variável carteiraComVariacao recebendo a carteira concatenando com a variação dela, então o valor dela é "17-019". Depois eu atribuí essa variável no boletoBancario.Boleto.Cedente.Carteira.

Para o Banco do Brasil isso deve funcionar.