private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string imagemCodigoBarras) { var html = new StringBuilder(); string enderecoCedente = ""; //Oculta o cabeçalho das instruções do boleto if (!OcultarInstrucoes) { html.Append(GeraHtmlInstrucoes()); } if (!FormatoCarne) { //Mostra o comprovante de entrega if (MostrarComprovanteEntrega | MostrarComprovanteEntregaLivre) { html.Append(HtmlComprovanteEntrega); //Html da linha pontilhada if (OcultarReciboSacado) { html.Append(Html.ReciboSacadoParte8); } } //Oculta o recibo do sacabo do boleto if (!OcultarReciboSacado) { html.Append(GeraHtmlReciboSacado()); //Caso mostre o Endereço do Cedente if (MostrarEnderecoCedente) { if (Cedente.Endereco == null) { throw new ArgumentNullException("Endereço do Cedente"); } string Numero = !String.IsNullOrEmpty(Cedente.Endereco.Numero) ? Cedente.Endereco.Numero + ", " : ""; enderecoCedente = string.Concat(Cedente.Endereco.End, " , ", Numero); if (Cedente.Endereco.CEP == String.Empty) { enderecoCedente += string.Format("{0} - {1}/{2}", Cedente.Endereco.Bairro, Cedente.Endereco.Cidade, Cedente.Endereco.UF); } else { enderecoCedente += string.Format("{0} - {1}/{2} - CEP: {3}", Cedente.Endereco.Bairro, Cedente.Endereco.Cidade, Cedente.Endereco.UF, Utils.FormataCEP(Cedente.Endereco.CEP)); } } } } string sacado = ""; //Flavio([email protected]) - adicionei a possibilidade de o boleto não ter, necessáriamente, que informar o CPF ou CNPJ do sacado. //Formata o CPF/CNPJ(se houver) e o Nome do Sacado para apresentação if (Sacado.CPFCNPJ == string.Empty) { sacado = Sacado.Nome; } else { if (Sacado.CPFCNPJ.Length <= 11) { sacado = string.Format("{0} CPF: {1}", Sacado.Nome, Utils.FormataCPF(Sacado.CPFCNPJ)); } else { sacado = string.Format("{0} CNPJ: {1}", Sacado.Nome, Utils.FormataCNPJ(Sacado.CPFCNPJ)); } } String infoSacado = Sacado.InformacoesSacado.GeraHTML(false); //Caso não oculte o Endereço do Sacado, if (!OcultarEnderecoSacado) { String enderecoSacado = ""; if (Sacado.Endereco.CEP == String.Empty) { enderecoSacado = string.Format("{0} - {1}/{2}", Sacado.Endereco.Bairro, Sacado.Endereco.Cidade, Sacado.Endereco.UF); } else { enderecoSacado = string.Format("{0} - {1}/{2} - CEP: {3}", Sacado.Endereco.Bairro, Sacado.Endereco.Cidade, Sacado.Endereco.UF, Utils.FormataCEP(Sacado.Endereco.CEP)); } if (Sacado.Endereco.End != string.Empty && enderecoSacado != string.Empty) { if (infoSacado == string.Empty) { infoSacado += InfoSacado.Render(Sacado.Endereco.End, enderecoSacado, false); } else { infoSacado += InfoSacado.Render(Sacado.Endereco.End, enderecoSacado, true); } } //"Informações do Sacado" foi introduzido para possibilitar que o boleto na informe somente o endereço do sacado //como em outras situaçoes onde se imprime matriculas, codigos e etc, sobre o sacado. //Sendo assim o endereço do sacado passa a ser uma Informaçao do Sacado que é adicionada no momento da renderização //de acordo com a flag "OcultarEnderecoSacado" } string agenciaConta = Utils.FormataAgenciaConta(Cedente.ContaBancaria.Agencia, Cedente.ContaBancaria.DigitoAgencia, Cedente.ContaBancaria.Conta, Cedente.ContaBancaria.DigitoConta); // Trecho adicionado por Fabrício Nogueira de Almeida :fna - [email protected] - 09/12/2008 /* Esse código foi inserido pq no campo Agência/Cod Cedente, estava sendo impresso sempre a agência / número da conta * No boleto da caixa que eu fiz, coloquei no método validarBoleto um trecho para calcular o dígito do cedente, e adicionei esse atributo na classe cedente * O trecho abaixo testa se esse digito foi calculado, se foi insere no campo Agencia/Cod Cedente, a agência e o código com seu digito * caso contrário mostra a agência / conta, como era anteriormente. * Com esse código ele ira atender as necessidades do boleto caixa e não afetará os demais * Caso queira que apareça o Agência/cod. cedente para outros boletos, basta calcular e setar o digito, como foi feito no boleto Caixa */ string agenciaCodigoCedente; if (!Cedente.DigitoCedente.Equals(-1)) { if (!String.IsNullOrEmpty(Cedente.ContaBancaria.OperacaConta)) { agenciaCodigoCedente = string.Format("{0}/{1}.{2}-{3}", Cedente.ContaBancaria.Agencia, Cedente.ContaBancaria.OperacaConta, Utils.FormatCode(Cedente.Codigo.ToString(), 6), Cedente.DigitoCedente.ToString()); } switch (Boleto.Banco.Codigo) { case 748: agenciaCodigoCedente = string.Format("{0}.{1}.{2}", Cedente.ContaBancaria.Agencia, Cedente.ContaBancaria.OperacaConta, Cedente.Codigo); break; case 41: agenciaCodigoCedente = string.Format("{0}.{1}/{2}.{3}.{4}", Cedente.ContaBancaria.Agencia, Cedente.ContaBancaria.DigitoAgencia, Cedente.Codigo.Substring(4, 6), Cedente.Codigo.Substring(10, 1), Cedente.DigitoCedente); break; case 1: agenciaCodigoCedente = string.Format("{0}-{1}/{2}-{3}", Cedente.ContaBancaria.Agencia, Cedente.ContaBancaria.DigitoAgencia, Utils.FormatCode(Cedente.ContaBancaria.Conta, 6), Cedente.ContaBancaria.DigitoConta); break; default: agenciaCodigoCedente = string.Format("{0}/{1}-{2}", Cedente.ContaBancaria.Agencia, Utils.FormatCode(Cedente.Codigo.ToString(), 6), Cedente.DigitoCedente.ToString()); break; } } else { //Para banco SANTANDER, a formatação do campo "Agencia/Identif.Cedente" - por jsoda em 07/05/2012 if (Boleto.Banco.Codigo == 33) { agenciaCodigoCedente = string.Format("{0}-{1}/{2}", Cedente.ContaBancaria.Agencia, Cedente.ContaBancaria.DigitoAgencia, Utils.FormatCode(Cedente.Codigo.ToString(), 7)); if (String.IsNullOrEmpty(Cedente.ContaBancaria.DigitoAgencia)) { agenciaCodigoCedente = String.Format("{0}/{1}", Cedente.ContaBancaria.Agencia, Utils.FormatCode(Cedente.Codigo.ToString(), 7)); } } else if (Boleto.Banco.Codigo == 399) // para Banco HSBC mostra apenas código Cedente - por Ponce em 08/06/2012 { agenciaCodigoCedente = Utils.FormatCode(Cedente.Codigo.ToString(), 7); } else if (Boleto.Banco.Codigo == 748) { agenciaCodigoCedente = string.Format("{0}.{1}.{2}", Cedente.ContaBancaria.Agencia, Cedente.ContaBancaria.OperacaConta, Cedente.Codigo); } else { agenciaCodigoCedente = agenciaConta; } } if (!FormatoCarne) { html.Append(GeraHtmlReciboCedente()); } else { html.Append(GeraHtmlCarne("", GeraHtmlReciboCedente())); } string dataVencimento = Boleto.DataVencimento.ToString("dd/MM/yyyy"); if (MostrarContraApresentacaoNaDataVencimento) { dataVencimento = "Contra Apresentação"; } if (String.IsNullOrEmpty(vLocalLogoCedente)) { vLocalLogoCedente = urlImagemLogo; } return(html .Replace("@CODIGOBANCO", Utils.FormatCode(_ibanco.Codigo.ToString(), 3)) .Replace("@DIGITOBANCO", _ibanco.Digito.ToString()) //.Replace("@URLIMAGEMBARRAINTERNA", urlImagemBarraInterna) //.Replace("@URLIMAGEMCORTE", urlImagemCorte) //.Replace("@URLIMAGEMPONTO", urlImagemPonto) .Replace("@URLIMAGEMLOGO", urlImagemLogo) .Replace("@URLIMGCEDENTE", vLocalLogoCedente) .Replace("@URLIMAGEMBARRA", urlImagemBarra) .Replace("@LINHADIGITAVEL", Boleto.CodigoBarra.LinhaDigitavel) .Replace("@LOCALPAGAMENTO", Boleto.LocalPagamento) .Replace("@DATAVENCIMENTO", dataVencimento) .Replace("@CEDENTE", Cedente.Nome + " CNPJ: " + Cedente.CPFCNPJ.ToString()) .Replace("@DATADOCUMENTO", Boleto.DataDocumento.ToString("dd/MM/yyyy")) .Replace("@NUMERODOCUMENTO", Boleto.NumeroDocumento) .Replace("@ESPECIEDOCUMENTO", EspecieDocumento.ValidaSigla(Boleto.EspecieDocumento)) .Replace("@DATAPROCESSAMENTO", Boleto.DataProcessamento.ToString("dd/MM/yyyy")) #region Implementação para o Banco do Brasil //Variável inserida para atender às especificações das carteiras "17-019" e "18-019" do Banco do Brasil //apenas para a ficha de compensação. //Como a variável não existirá se não forem as carteiras "17-019" e "18-019", não foi colocado o [if]. .Replace("@NOSSONUMEROBB", Boleto.Banco.Codigo == 1 & (Boleto.Carteira.Equals("17-019") | Boleto.Carteira.Equals("18-019")) ? Boleto.NossoNumero.Substring(3) : string.Empty) #endregion Implementação para o Banco do Brasil .Replace("@NOSSONUMERO", Boleto.NossoNumero) .Replace("@CARTEIRA", FormataDescricaoCarteira()) .Replace("@ESPECIE", Boleto.Especie) .Replace("@QUANTIDADE", (Boleto.QuantidadeMoeda == 0 ? "" : Boleto.QuantidadeMoeda.ToString())) .Replace("@VALORDOCUMENTO", Boleto.ValorMoeda) .Replace("@=VALORDOCUMENTO", (Boleto.ValorBoleto == 0 ? "" : Boleto.ValorBoleto.ToString("R$ ##,##0.00"))) .Replace("@VALORCOBRADO", (Boleto.ValorCobrado == 0 ? "" : Boleto.ValorCobrado.ToString("R$ ##,##0.00"))) .Replace("@OUTROSACRESCIMOS", "") .Replace("@OUTRASDEDUCOES", "") .Replace("@DESCONTOS", (Boleto.ValorDesconto == 0 ? "" : Boleto.ValorDesconto.ToString("R$ ##,##0.00"))) .Replace("@AGENCIACONTA", agenciaCodigoCedente) .Replace("@SACADO", sacado) .Replace("@INFOSACADO", infoSacado) .Replace("@AGENCIACODIGOCEDENTE", agenciaCodigoCedente) .Replace("@CPFCNPJ", Cedente.CPFCNPJ) .Replace("@MORAMULTA", (Boleto.ValorMulta == 0 ? "" : Boleto.ValorMulta.ToString("R$ ##,##0.00"))) .Replace("@AUTENTICACAOMECANICA", "") .Replace("@USODOBANCO", Boleto.UsoBanco) .Replace("@IMAGEMCODIGOBARRA", imagemCodigoBarras) .Replace("@ACEITE", Boleto.Aceite).ToString() .Replace("@ENDERECOCEDENTE", MostrarEnderecoCedente ? enderecoCedente : "")); }
//private string MontaHtml(string urlImagemCorte, string urlImagemLogo, string urlImagemBarra, string urlImagemPonto, string urlImagemBarraInterna, string imagemCodigoBarras) private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string imagemCodigoBarras) { StringBuilder html = new StringBuilder(); //Oculta o cabeçalho das instruções do boleto if (!OcultarInstrucoes) { html.Append(GeraHtmlInstrucoes()); } //Mostra o comprovante de entrega if (MostrarComprovanteEntrega) { html.Append(HtmlComprovanteEntrega); } //Oculta o recibo do sacabo do boleto if (!OcultarReciboSacado) { html.Append(GeraHtmlReciboSacado()); } string sacado = ""; //Flavio([email protected]) - adicionei a possibilidade de o boleto não ter, necessáriamente, que informar o CPF ou CNPJ do sacado. //Formata o CPF/CNPJ(se houver) e o Nome do Sacado para apresentação if (Sacado.CPFCNPJ == string.Empty) { sacado = Sacado.Nome; } else { if (Sacado.CPFCNPJ.Length <= 11) { sacado = string.Format("{0} CPF: {1}", Sacado.Nome, Utils.FormataCPF(Sacado.CPFCNPJ)); } else { sacado = string.Format("{0} CNPJ: {1}", Sacado.Nome, Utils.FormataCNPJ(Sacado.CPFCNPJ)); } } String infoSacado = Sacado.InformacoesSacado.GeraHTML(false); //Caso não oculte o Endereço do Sacado, if (!OcultarEnderecoSacado) { String enderecoSacado = ""; if (Sacado.Endereco.CEP == String.Empty) { enderecoSacado = string.Format("{0} - {1}/{2}", Sacado.Endereco.Bairro, Sacado.Endereco.Cidade, Sacado.Endereco.UF); } else { enderecoSacado = string.Format("{0} - {1}/{2} - CEP: {3}", Sacado.Endereco.Bairro, Sacado.Endereco.Cidade, Sacado.Endereco.UF, Utils.FormataCEP(Sacado.Endereco.CEP)); } if (Sacado.Endereco.End != string.Empty && enderecoSacado != string.Empty) { if (infoSacado == string.Empty) { infoSacado += InfoSacado.Render(Sacado.Endereco.End, enderecoSacado, false); } else { infoSacado += InfoSacado.Render(Sacado.Endereco.End, enderecoSacado, true); } } //"Informações do Sacado" foi introduzido para possibilitar que o boleto na informe somente o endereço do sacado //como em outras situaçoes onde se imprime matriculas, codigos e etc, sobre o sacado. //Sendo assim o endereço do sacado passa a ser uma Informaçao do Sacado que é adicionada no momento da renderização //de acordo com a flag "OcultarEnderecoSacado" } string agenciaConta = Utils.FormataAgenciaConta(Cedente.ContaBancaria.Agencia, Cedente.ContaBancaria.DigitoAgencia, Cedente.ContaBancaria.Conta, Cedente.ContaBancaria.DigitoConta); // Trecho adicionado por Fabrício Nogueira de Almeida :fna - [email protected] - 09/12/2008 /* Esse código foi inserido pq no campo Agência/Cod Cedente, estava sendo impresso sempre a agência / número da conta * No boleto da caixa que eu fiz, coloquei no método validarBoleto um trecho para calcular o dígito do cedente, e adicionei esse atributo na classe cedente * O trecho abaixo testa se esse digito foi calculado, se foi insere no campo Agencia/Cod Cedente, a agência e o código com seu digito * caso contrário mostra a agência / conta, como era anteriormente. * Com esse código ele ira atender as necessidades do boleto caixa e não afetará os demais * Caso queira que apareça o Agência/cod. cedente para outros boletos, basta calcular e setar o digito, como foi feito no boleto Caixa */ string agenciaCodigoCedente; if (!Cedente.DigitoCedente.Equals(-1)) { agenciaCodigoCedente = string.Format("{0}/{1}-{2}", Cedente.ContaBancaria.Agencia, Utils.FormatCode(Cedente.Codigo.ToString(), 6), Cedente.DigitoCedente.ToString()); } else { agenciaCodigoCedente = agenciaConta; } html.Append(GeraHtmlReciboCedente()); string dataVencimento = Boleto.DataVencimento.ToString("dd/MM/yyyy"); if (MostrarContraApresentacaoNaDataVencimento) { dataVencimento = "Contra Apresentação"; } return(html.ToString() .Replace("@CODIGOBANCO", Utils.FormatCode(_ibanco.Codigo.ToString(), 3)) .Replace("@DIGITOBANCO", _ibanco.Digito.ToString()) //.Replace("@URLIMAGEMBARRAINTERNA", urlImagemBarraInterna) //.Replace("@URLIMAGEMCORTE", urlImagemCorte) //.Replace("@URLIMAGEMPONTO", urlImagemPonto) .Replace("@URLIMAGEMLOGO", urlImagemLogo) .Replace("@URLIMAGEMBARRA", urlImagemBarra) .Replace("@LINHADIGITAVEL", Boleto.CodigoBarra.LinhaDigitavel) .Replace("@LOCALPAGAMENTO", Boleto.LocalPagamento) .Replace("@DATAVENCIMENTO", dataVencimento) .Replace("@CEDENTE", Cedente.Nome) .Replace("@DATADOCUMENTO", Boleto.DataDocumento.ToString("dd/MM/yyyy")) .Replace("@NUMERODOCUMENTO", Boleto.NumeroDocumento) .Replace("@ESPECIEDOCUMENTO", EspecieDocumento.ValidaSigla(Boleto.EspecieDocumento)) .Replace("@DATAPROCESSAMENTO", Boleto.DataProcessamento.ToString("dd/MM/yyyy")) .Replace("@NOSSONUMERO", Boleto.NossoNumero) .Replace("@CARTEIRA", (MostrarCodigoCarteira ? string.Format("{0} - {1}", Boleto.Carteira.ToString(), new Carteira_Santander(Utils.ToInt32(Boleto.Carteira)).Codigo) : Boleto.Carteira.ToString())) .Replace("@ESPECIE", Boleto.Especie) .Replace("@QUANTIDADE", (Boleto.QuantidadeMoeda == 0 ? "" : Boleto.QuantidadeMoeda.ToString())) .Replace("@VALORDOCUMENTO", Boleto.ValorMoeda) .Replace("@=VALORDOCUMENTO", (Boleto.ValorBoleto == 0 ? "" : Boleto.ValorBoleto.ToString("R$ ##,##0.00"))) .Replace("@VALORCOBRADO", "") .Replace("@OUTROSACRESCIMOS", "") .Replace("@OUTRASDEDUCOES", "") .Replace("@DESCONTOS", "") .Replace("@AGENCIACONTA", agenciaCodigoCedente) .Replace("@SACADO", sacado) .Replace("@INFOSACADO", infoSacado) .Replace("@AGENCIACODIGOCEDENTE", agenciaCodigoCedente) .Replace("@CPFCNPJ", Cedente.CPFCNPJ) .Replace("@MORAMULTA", "") .Replace("@AUTENTICACAOMECANICA", "") .Replace("@USODOBANCO", Boleto.UsoBanco) .Replace("@IMAGEMCODIGOBARRA", imagemCodigoBarras)); }