예제 #1
0
        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 : ""));
        }
예제 #2
0
        //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));
        }