Beispiel #1
0
        public static Boleto GerarBoleto(CarteiraBoleto carteiraBoleto, SacadoBoleto sacado, decimal valor,
                                         DateTime dataVencimento, string numeroDocumento)
        {
            try
            {
                if (carteiraBoleto == null)
                {
                    throw new Exception("Carteira inválida.");
                }
                if (sacado == null)
                {
                    throw new Exception("Dados do sacado inválido.");
                }
                if (valor <= 0)
                {
                    throw new Exception("Valor deve ser maior que 0.");
                }
                if (dataVencimento == DateTime.MinValue)
                {
                    throw new Exception("Data de vencimento inválida.");
                }
                if (numeroDocumento.Trim().Length == 0)
                {
                    throw new Exception("Número documento inválido.");
                }

                /* Geração pelo BoletoBr */
                BoletoBr.Boleto boletoBancarioGerado = TransformaDeFormatoBoletoParaFormatoBoletoBr(carteiraBoleto,
                                                                                                    sacado, valor, dataVencimento, numeroDocumento);
                if (boletoBancarioGerado == null)
                {
                    throw new Exception("Os dados do(s) boleto(s) não são válidos!");
                }

                return(boletoBancarioGerado);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #2
0
        private static BoletoBr.Boleto TransformaDeFormatoBoletoParaFormatoBoletoBr(CarteiraBoleto carteiraBoleto,
                                                                                    SacadoBoleto sacado, decimal valor, DateTime dataVencimento, string numeroDocumento)
        {
            var vencimento  = dataVencimento;
            var valorBoleto = valor;
            var nroConvenio = carteiraBoleto.NumeroConvenio;
            var identificadorInternoDocumento = numeroDocumento;

            #region Dados Cedente

            var codigoCedente    = carteiraBoleto.CodigoCedente.BoletoBrToStringSafe();
            var digitoCedente    = carteiraBoleto.DigitoCodigoCedente.BoletoBrToInt();
            var codTransmissao   = carteiraBoleto.CodigoTransmissao.BoletoBrToStringSafe();
            var cpfcnpjcedente   = carteiraBoleto.CpfCnpjCedente.BoletoBrToStringSafe();
            var descricaocedente = carteiraBoleto.NomeCedente.BoletoBrToStringSafe();

            var agencia       = carteiraBoleto.NumeroAgencia;
            var digitoAgencia = carteiraBoleto.DigitoAgencia;
            var conta         = carteiraBoleto.NumeroConta;
            var digitoConta   = carteiraBoleto.DigitoConta;

            var enderecoCedente       = carteiraBoleto.EnderecoCedente;
            var bairroCedente         = carteiraBoleto.BairroCedente;
            var complementoEndCedente = carteiraBoleto.ComplementoCedente;
            var numeroEnderecoCedente = carteiraBoleto.NumeroCedente;
            var cepCedente            = carteiraBoleto.CepCedente;
            var cidadeCedente         = carteiraBoleto.CidadeCedente;
            var ufEnderecoCedente     = carteiraBoleto.UfCedente;

            var contaBancariaCedente = new BoletoBr.ContaBancaria(agencia, digitoAgencia, conta, digitoConta);
            var cedente = new BoletoBr.Cedente(codigoCedente, nroConvenio, digitoCedente, cpfcnpjcedente,
                                               descricaocedente, contaBancariaCedente, new Endereco()
            {
                Bairro      = bairroCedente,
                Cep         = cepCedente,
                Cidade      = cidadeCedente,
                Complemento = complementoEndCedente,
                Logradouro  = enderecoCedente,
                Numero      = numeroEnderecoCedente,
                SiglaUf     = ufEnderecoCedente,
            });

            #endregion

            var codBanco = carteiraBoleto.CodigoBanco.PadLeft(3, '0');

            var boleto   = new BoletoBr.Boleto();
            var objBanco = BoletoBr.Fabricas.BancoFactory.ObterBanco(codBanco);
            boleto.TipoModalidade    = "";
            boleto.Moeda             = objBanco.MoedaBanco;
            boleto.BancoBoleto       = objBanco;
            boleto.Aceite            = "N";
            boleto.DataProcessamento = DateTime.Now;
            boleto.CarteiraCobranca  = new CarteiraCobranca();

            #region Dados Carteira

            var numeroCarteira   = carteiraBoleto.NumeroCarteira;
            var variacaoCarteira = "";

            #region Variação Carteiras BB

            /* Banco do Brasil tratar variação carteira (Compor variação sempre com o numero da carteira separado por / ou -) */
            if (codBanco == "001")
            {
                if (numeroCarteira.Contains("/"))
                {
                    var carteiraVariacao = numeroCarteira.Split(Convert.ToChar("/"));

                    numeroCarteira   = carteiraVariacao[0];
                    variacaoCarteira = carteiraVariacao[1];
                }
                else if (numeroCarteira.Contains("-"))
                {
                    var carteiraVariacao = numeroCarteira.Split(Convert.ToChar("-"));

                    numeroCarteira   = carteiraVariacao[0];
                    variacaoCarteira = carteiraVariacao[1];
                }
            }

            #endregion

            boleto.CodigoDeTransmissao = codTransmissao;

            boleto.CarteiraCobranca.Codigo           = numeroCarteira;
            boleto.CarteiraCobranca.Variacao         = variacaoCarteira;
            boleto.CarteiraCobranca.Descricao        = carteiraBoleto.DescricaoCarteira;
            boleto.CarteiraCobranca.BancoEmiteBoleto = carteiraBoleto.BancoGeraBoleto;
            boleto.CarteiraCobranca.Tipo             = carteiraBoleto.TipoArquivoRemessa;

            if (string.IsNullOrEmpty(descricaocedente))
            {
                throw new Exception(
                          $"Não foi informado o nome do beneficário na carteira de cobrança: {boleto.CarteiraCobranca.Descricao}.");
            }

            #endregion

            #region Instruções/Mensagem

            var existeMensagem1 = string.IsNullOrEmpty(carteiraBoleto.Instrucao1) == false;
            var existeMensagem2 = string.IsNullOrEmpty(carteiraBoleto.Instrucao2) == false;
            var existeMensagem3 = string.IsNullOrEmpty(carteiraBoleto.Instrucao3) == false;
            var existeMensagem4 = string.IsNullOrEmpty(carteiraBoleto.Instrucao4) == false;
            var existeMensagem5 = string.IsNullOrEmpty(carteiraBoleto.Instrucao5) == false;
            var existeMensagem6 = string.IsNullOrEmpty(carteiraBoleto.Instrucao6) == false;

            if (existeMensagem1)
            {
                var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao1);
                boleto.InstrucoesDoBoleto.Add(instrucaoAdd);
            }
            if (existeMensagem2)
            {
                var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao2);
                boleto.InstrucoesDoBoleto.Add(instrucaoAdd);
            }
            if (existeMensagem3)
            {
                var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao3);
                boleto.InstrucoesDoBoleto.Add(instrucaoAdd);
            }
            if (existeMensagem4)
            {
                var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao4);
                boleto.InstrucoesDoBoleto.Add(instrucaoAdd);
            }
            if (existeMensagem5)
            {
                var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao5);
                boleto.InstrucoesDoBoleto.Add(instrucaoAdd);
            }
            if (existeMensagem6)
            {
                var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao6);
                boleto.InstrucoesDoBoleto.Add(instrucaoAdd);
            }

            #endregion

            #region Dados Sacado

            var cpfcnpjSacado = sacado.CpfCnpj;
            var nomeSacado    = sacado.Nome;

            boleto.SacadoBoleto = new BoletoBr.Sacado(nomeSacado, cpfcnpjSacado,
                                                      TransformaEnderecoParaEnderecoBoletoBr(sacado));

            #endregion

            /* Ajuste */
            boleto.LocalPagamento = boleto.BancoBoleto.LocalDePagamento;
            boleto.DataVencimento = vencimento;
            boleto.CedenteBoleto  = cedente;

            // Padronizado para DM - Duplicata Mercantil
            boleto.Especie = codBanco == "399"
                ? new EspecieDocumento(02, "Duplicata Mercantil", "PD")
                : new EspecieDocumento(02, "Duplicata Mercantil", "DM");
            boleto.CodigoOcorrenciaRemessa = objBanco.ObtemCodigoOcorrencia(EnumCodigoOcorrenciaRemessa.Registro, 0,
                                                                            DateTime.Now);

            if (boleto.DataDocumento <= DateTime.MinValue)
            {
                boleto.DataDocumento = DateTime.Now;
            }

            boleto.NumeroDocumento            = identificadorInternoDocumento;
            boleto.IdentificadorInternoBoleto = identificadorInternoDocumento;

            boleto.ValorBoleto           = valorBoleto;
            boleto.PercentualJurosMora   = carteiraBoleto.ValorJuros;
            boleto.InformacoesAdicionais = new List <InformacoesAdicionais>();

            objBanco.FormatarBoleto(boleto);

            return(boleto);
        }