Пример #1
0
        public void Cecred_GerarBoletoCarteira01() {

            DateTime vencimento = new DateTime(2016, 03, 11);

            var cedente = new Cedente("00.000.000/0000-00", "Empresa Teste", "0109", "265071", "1");
            cedente.Convenio = 0110041;
            cedente.Endereco = new Endereco() {
                Bairro = "BAIRRO CEDENTE",
                CEP = "88309-600",
                Cidade = "CIDADE CEDENTE",
                Complemento = "CASA",
                Email = "*****@*****.**",
                End = "Teste CEDENTE",
                Logradouro = "Rua",
                Numero = "999",
                UF = "SC"
            };
            cedente.Codigo = cedente.Convenio.ToString();

            cedente.Carteira = "01";
            string nossoNumero = "000000127"; // Tamanho nosso numero 9

            var sacado = new Sacado("000.000.000-00", "Sacado Teste");
            sacado.Endereco = new Endereco() {
                Bairro = "BAIRRO SACADO",
                CEP = "88309-600",
                Cidade = "CIDADE SACADO",
                Complemento = "CASA",
                Email = "*****@*****.**",
                End = "Teste SACADO",
                Logradouro = "Rua",
                Numero = "999",
                UF = "SC"
            };

            BoletoNet.Boleto boleto = new BoletoNet.Boleto(vencimento, 10.99m, cedente.Carteira, nossoNumero, cedente);
            boleto.NumeroDocumento = "ABC123";
            boleto.Sacado = sacado;
            BoletoNet.BoletoBancario boletoBancario = new BoletoBancario();
            boletoBancario.CodigoBanco = 85;    // CECRED
            boletoBancario.Boleto = boleto;

            try {
                boletoBancario.Boleto.Valida();
                var htmlString = boletoBancario.MontaHtml();

                //string _arquivo = string.Empty;
                //_arquivo = string.Format(@"C:\temp\boleto_{0}.html", boletoBancario.Boleto.NumeroDocumento);

                //using (System.IO.FileStream f = new System.IO.FileStream(_arquivo, System.IO.FileMode.Create)) {
                //    System.IO.StreamWriter w = new System.IO.StreamWriter(f, System.Text.Encoding.UTF8);
                //    w.Write(htmlString);
                //}

                Assert.IsTrue(!string.IsNullOrEmpty(htmlString));
            } catch {

            }

        }
Пример #2
0
        public ActionResult Index(FormCollection form)
        {

            var cedente       = new Cedente()
            {
                Codigo        = "1111111",
                CPFCNPJ       = "123.456.789-01",
                Nome          = "PAULO FREIRE - FOUR FREIRES INF.",
                ContaBancaria = new ContaBancaria("1000", "", "22507", "6")
            };

            var sacado = new Sacado()
            {
                CPFCNPJ    = form["cpf"],
                Nome       = form["nome"],
                Endereco   = new Endereco()
                {
                    End    = form["end"],
                    Bairro = form["bairro"],
                    Cidade = form["cidade"],
                    UF     = form["uf"],
                    CEP    = form["cep"]
                }

            };

            var boleto = new Boleto()
            {
                DataVencimento   = Convert.ToDateTime(form["vencimento"]),
                ValorBoleto      = Convert.ToDecimal(form["valor"]),
                NossoNumero      = "22222222",
                NumeroDocumento  = "B20005446",
                Carteira         = "109",
                Cedente          = cedente,
                Sacado           = sacado,
                EspecieDocumento = new EspecieDocumento_Itau("99"),
                Instrucoes       = new List<IInstrucao>() { new Instrucao_Itau() { Descricao = "Não receber após o vencimento" } },
            };

            var boleto_bancario = new BoletoBancario()
            {
                CodigoBanco               = 341,
                Boleto                    = boleto,
                MostrarCodigoCarteira     = false,
                MostrarComprovanteEntrega = false
            };

            boleto_bancario.Boleto.Valida();

            ViewBag.Boleto = boleto_bancario.MontaHtmlEmbedded();


            return View(form);
        }
Пример #3
0
 public override string GerarDetalheSegmentoQRemessa(Boleto boleto, int numeroRegistro, Sacado sacado)
 {
     return GerarDetalheSegmentoQRemessaCNAB240SIGCB(boleto, numeroRegistro, sacado);
 }
Пример #4
0
        public string GerarDetalheSegmentoQRemessaCNAB240SIGCB(Boleto boleto, int numeroRegistro, Sacado sacado)
        {
            try
            {
                #region Segmento Q
                TRegistroEDI reg = new TRegistroEDI();
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0001, 003, 0, base.Codigo, '0'));                                  // posição 1 até 3     (3) - código do banco na compensação        
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0004, 004, 0, "1", '0'));                                          // posição 4 até 7     (4) - Lote de Serviço
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0008, 001, 0, "3", '0'));                                          // posição 8 até 8     (1) - Tipo de Registro
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0009, 005, 0, numeroRegistro, '0'));                               // posição 9 até 13    (5) - Nº Sequencial do Registro no Lote
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0014, 001, 0, "Q", '0'));                                          // posição 14 até 14   (1) - Cód. Segmento do Registro Detalhe
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0015, 001, 0, string.Empty, ' '));                                 // posição 15 até 15   (1) - Uso Exclusivo FEBRABAN/CNAB
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0016, 002, 0, "01", '0'));                                         // posição 16 até 17   (2) - Código de Movimento Remessa
                #region Regra Tipo de Inscrição Cedente
                string vCpfCnpjEmi = "0";//não informado
                if (sacado.CPFCNPJ.Length.Equals(11)) vCpfCnpjEmi = "1"; //Cpf
                else if (sacado.CPFCNPJ.Length.Equals(14)) vCpfCnpjEmi = "2"; //Cnpj
                #endregion
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0018, 001, 0, vCpfCnpjEmi, '0'));                                  // posição 18 até 18   (1) - Tipo de Inscrição 
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0019, 015, 0, sacado.CPFCNPJ, '0'));                               // posição 19 até 33   (15)- Número de Inscrição da empresa
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0034, 040, 0, sacado.Nome.ToUpper(), ' '));                        // posição 34 até 73   (40)- Nome
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0074, 040, 0, sacado.Endereco.End.ToUpper(), ' '));                // posição 74 até 113  (40)- Endereço
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0114, 015, 0, sacado.Endereco.Bairro.ToUpper(), ' '));             // posição 114 até 128 (15)- Bairro
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0129, 008, 0, sacado.Endereco.CEP, ' '));                          // posição 114 até 128 (40)- CEP                
                // posição 134 até 136 (3) - sufixo cep** já incluso em CEP                                                                                                                                                                   
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0137, 015, 0, sacado.Endereco.Cidade.ToUpper(), ' '));             // posição 137 até 151 (15)- Cidade
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0152, 002, 0, sacado.Endereco.UF, ' '));                           // posição 152 até 153 (15)- UF
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0154, 001, 0, "0", '0'));                                          // posição 154 até 154 (1) - Tipo de Inscrição Sacador Avalialista
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0155, 015, 0, "0", '0'));                                          // posição 155 até 169 (15)- Inscrição Sacador Avalialista
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0170, 040, 0, string.Empty, ' '));                                 // posição 170 até 209 (40)- Nome do Sacador/Avalista
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediNumericoSemSeparador_, 0210, 003, 0, string.Empty, ' '));                                          // posição 210 até 212 (3) - Cód. Bco. Corresp. na Compensação
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0213, 020, 0, string.Empty, ' '));                                 // posição 213 até 232 (20)- Nosso Nº no Banco Correspondente
                reg.CamposEDI.Add(new TCampoRegistroEDI(TTiposDadoEDI.ediAlphaAliEsquerda_____, 0233, 008, 0, string.Empty, ' '));                                 // posição 213 até 232 (8)- Uso Exclusivo FEBRABAN/CNAB
                reg.CodificarLinha();
                //
                string vLinha = reg.LinhaRegistro;
                string _SegmentoQ = Utils.SubstituiCaracteresEspeciais(vLinha);

                return _SegmentoQ;
                #endregion
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao gerar DETALHE do Segmento Q no arquivo de remessa do CNAB240 SIGCB.", ex);
            }
        }
Пример #5
0
 public override string GerarDetalheSegmentoQRemessa(Boleto boleto, int numeroRegistro, Sacado sacado)
 {
     try
     {
         return _IBanco.GerarDetalheSegmentoQRemessa(boleto, numeroRegistro, sacado);
     }
     catch (Exception ex)
     {
         throw new Exception("Erro durante a geração dos registros de DETALHE do arquivo de REMESSA.", ex);
     }
 }
Пример #6
0
 public override string GerarDetalheSegmentoQRemessa(Boleto boleto, int numeroRegistro, Sacado sacado)
 {
     try
     {
         return(_IBanco.GerarDetalheSegmentoQRemessa(boleto, numeroRegistro, sacado));
     }
     catch (Exception ex)
     {
         throw new Exception("Erro durante a geração dos registros de DETALHE do arquivo de REMESSA. " + ex.Message, ex);
     }
 }
Пример #7
0
 /// <summary>
 /// Gera registros de detalhe do arquivo remessa - SEGMENTO Q
 /// </summary>
 public virtual string GerarDetalheSegmentoQRemessa(Boleto boleto, int numeroRegistro, Sacado sacado)
 {
     string _segmentoQ = "";
     return _segmentoQ;
 }
        private Boletos ConvertInvoiceParcelsInBoleto(Int32 companyId, Int32 accountId, DateTime beginDate,
                                                      DateTime endDate)
        {
            var customerManager = new CustomerManager(this);
            var profileManager = new ProfileManager(this);
            var companyManager = new CompanyManager(this);
            var accountManager = new AccountManager(this);
            Boleto boleto;
            Sacado sacado;
            Endereco endereco;
            var address = new Address();
            Company company = companyManager.GetCompany(companyId);
            Account account = accountManager.GetAccount(accountId, companyId);
            var boletos = new Boletos();

            var cedente = new Cedente(company.LegalEntityProfile.CNPJ, company.LegalEntityProfile.CompanyName,
                                      account.Agency, Convert.ToString(account.AgencyDigit), account.AccountNumber,
                                      Convert.ToString(account.AccountNumberDigit));


            foreach (Parcel parcel in GetOpenInvoiceParcelInPeriodByAccount(companyId, accountId, beginDate, endDate))
            {
                endereco = new Endereco();

                if (parcel.Invoice.Customer.LegalEntityProfileId.HasValue)
                {
                    //Address
                    address = parcel.Invoice.Customer.LegalEntityProfile.Address;

                    endereco.Numero = parcel.Invoice.Customer.LegalEntityProfile.AddressNumber;
                    endereco.Complemento = parcel.Invoice.Customer.LegalEntityProfile.AddressComp;

                    //sacado
                    sacado = new Sacado(parcel.Invoice.Customer.LegalEntityProfile.CNPJ,
                                        parcel.Invoice.Customer.LegalEntityProfile.CompanyName);
                }
                else
                {
                    //Address
                    address = parcel.Invoice.Customer.Profile.Address;

                    endereco.Numero = parcel.Invoice.Customer.Profile.AddressNumber;
                    endereco.Complemento = parcel.Invoice.Customer.Profile.AddressComp;

                    //sacado
                    sacado = new Sacado(parcel.Invoice.Customer.Profile.CPF, parcel.Invoice.Customer.Profile.Name);
                }

                //Address
                endereco.Bairro = address.Neighborhood;
                endereco.CEP = address.PostalCode;
                endereco.Cidade = address.City ?? String.Empty;
                endereco.Logradouro = address.Name;
                endereco.UF = address.State;

                //boleto
                boleto = new Boleto(parcel.DueDate, Convert.ToDouble(parcel.Amount), String.Empty, String.Empty, cedente);

                sacado.Endereco = endereco;

                boleto.Sacado = sacado;

                var instrucao = new Instrucao(Convert.ToInt32(account.Bank.BankNumber));

                var banco = new Banco(Convert.ToInt32(account.Bank.BankNumber));

                instrucao.Banco = banco;
                instrucao.QuantidadeDias = 0;
                instrucao.Descricao = String.Empty;
                instrucao.Codigo = 0;

                boleto.CodigoBarra.LinhaDigitavel = String.Empty;
                boleto.DataDocumento = DateTime.Now;
                boleto.DataVencimento = parcel.DueDate;
                boleto.ValorDesconto = 0;

                boleto.Instrucoes = new List<IInstrucao>();
                boleto.Instrucoes.Add(instrucao);
                boletos.Add(boleto);
            }
            return boletos;
        }
Пример #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //if (!IsPostBack)
            //{
            //    if (Session["boleto"] != null)
            //    {
            //        BoletoBancario boletoBan = new BoletoBancario();
            //        boletoBan = (BoletoBancario)Session["boleto"];
            //        ImprimirBoleto(boletoBan);
            //    }
            //}

            string vencimento = "01/01/2013";
            String valorBoleto = "110,50";
            String numeroDocumento = "B20005446";

            //cedente
            String cedente_codigo = "13000";
            String cedente_nossoNumeroBoleto = "22222222";
            String cedente_cpfCnpj = "123.456.789-01";
            String cedente_nome = "PAULO FREIRE - FOUR FREIRES INF.";
            String cedente_agencia = "1000";
            String cedente_conta = "22507";
            String cedente_digitoConta = "6";

            //sacado
            String sacado_cpfCnpj = "000.000.000-00";
            String sacado_nome = "eu caralho";
            String sacado_endereco = "xxxxxxxxxxxx";
            String sacado_bairro = "ffffffffffffff";
            String sacado_cidade = "caxias";
            String sacado_cep = "95070200";
            String sacado_uf = "rs";

            Cedente cedente = new Cedente(cedente_cpfCnpj,
            cedente_nome,
            cedente_agencia,
            cedente_conta,
            cedente_digitoConta);
            cedente.Codigo = Convert.ToInt32(cedente_codigo);

            Boleto boleto = new Boleto(Convert.ToDateTime(vencimento), Convert.ToDecimal(valorBoleto), "341", cedente_nossoNumeroBoleto, cedente);

            boleto.NumeroDocumento = numeroDocumento;

            Sacado sacado = new Sacado(sacado_cpfCnpj, sacado_nome);
            boleto.Sacado = sacado;
            boleto.Sacado.Endereco.End = sacado_endereco;
            boleto.Sacado.Endereco.Bairro = sacado_bairro;
            boleto.Sacado.Endereco.Cidade = sacado_cidade;
            boleto.Sacado.Endereco.CEP = sacado_cep;
            boleto.Sacado.Endereco.UF = sacado_uf;

            Instrucao_Banrisul instrucao = new Instrucao_Banrisul(999, 1);
            Instrucao_Banrisul item1 = new Instrucao_Banrisul(9, 5);
            Instrucao_Banrisul item2 = new Instrucao_Banrisul(81, 10);
            boleto.Instrucoes.Add(instrucao);
            boleto.Instrucoes.Add(item1);
            boleto.Instrucoes.Add(item2);

            BoletoBancario boleto_bancario = new BoletoBancario();
            boleto_bancario.CodigoBanco = 041;
            boleto_bancario.Boleto = boleto;
            boleto_bancario.MostrarCodigoCarteira = true;
            boleto_bancario.Boleto.Valida();

            boleto_bancario.MostrarComprovanteEntrega = true;
            this.Panel1.Controls.Add(boleto_bancario);
        }
        protected void btnGerarBoleto_ButtonClick(object sender, EventArgs e)
        {
            // Boleto para CEF, com carteira SR e nosso número de 11 dígitos.

            if (ExisteErroDePreenchimento())
            {
                return;
            }

            try
            {
                var vencimento = txtVencimento.SelectedDate.Value.ToString("dd/MM/yyyy");
                var valorBoleto = txtValor.Value.Value;

                IBoletosGeradosAux dadosAuxiliares = null;

                // Busca dados auxiliares no banco, se for a primeira vez, efetua o insert

                long cedenteNossoNumeroBoleto = 0;

                if (ViewState["CHAVE_CEDENTE_BOLETOGERADO"] != null)
                {
                    // Numero do documento - numero de controle interno, não afeta o calculo da linha digitavel e nem o codigo de barras
                    // mais pode ser útil, exemplo: quando o cliente ligar, vc pode consultar por este número e ver
                    // se já foi efetuado o pagamento

                    // cedente

                    BoletoGerado = (IBoletosGerados)ViewState["CHAVE_CEDENTE_BOLETOGERADO"];

                    cedenteNossoNumeroBoleto = BoletoGerado.NossoNumero.Value; // o final do nosso número é incrementado ao final

                }
                else if (ViewState["CHAVE_LISTA_ITEM_FINANCEIRO"] != null)
                {
                    var listaDeItensFinanceiros =
                                            (List<IItemLancamentoFinanceiroRecebimento>)ViewState["CHAVE_LISTA_ITEM_FINANCEIRO"];

                    if (listaDeItensFinanceiros.Count > 0)
                    {
                        foreach (var itemLancamentoFinanceiroRecebimento in listaDeItensFinanceiros)
                        {
                            long idboleto;

                            using (var servicoFinanceiroComBoleto = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItemFinanceiroRecebidoComBoleto>())
                                idboleto =
                                    servicoFinanceiroComBoleto.ObtenhaBoletoPorIdItemFinanRecebimento(
                                        itemLancamentoFinanceiroRecebimento.ID.Value);

                            if (idboleto > 0)
                            {
                                IBoletosGerados boletoGeradoParaItemFinanceiro;

                                using (var servicoBoletoGeradoParaItemFinanceiro = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeBoleto>())
                                    boletoGeradoParaItemFinanceiro =
                                        servicoBoletoGeradoParaItemFinanceiro.obtenhaBoletoPeloId(
                                            idboleto);

                                if (boletoGeradoParaItemFinanceiro != null)
                                    cedenteNossoNumeroBoleto = boletoGeradoParaItemFinanceiro.NossoNumero.Value;
                            }
                            else
                            {
                                 using (var servico = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeBoleto>())
                                     dadosAuxiliares =
                                         servico.obtenhaProximasInformacoesParaGeracaoDoBoleto(ctrlCedente.CedenteSelecionado);

                                 cedenteNossoNumeroBoleto = dadosAuxiliares.ProximoNossoNumero.Value;
                            }

                            break;
                        }
                    }
                }
                else
                {
                    using (var servico = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeBoleto>())
                        dadosAuxiliares = servico.obtenhaProximasInformacoesParaGeracaoDoBoleto(ctrlCedente.CedenteSelecionado);

                    // Numero do documento - numero de controle interno, não afeta o calculo da linha digitavel e nem o codigo de barras
                    // mais pode ser útil, exemplo: quando o cliente ligar, vc pode consultar por este número e ver
                    // se já foi efetuado o pagamento

                    // cedente

                    cedenteNossoNumeroBoleto = dadosAuxiliares.ProximoNossoNumero.Value; // o final do nosso número é incrementado ao final

                }

                // obtendo a configuração do cedente

                var cedenteSelecionado = ctrlCedente.CedenteSelecionado;

                var cedenteCpfCnpj = string.Empty;
                var cedenteNome = string.Empty;
                var cedenteAgencia = string.Empty;
                var cedenteConta = string.Empty;
                var cedenteDigitoConta = string.Empty;
                var cedenteOperacaoConta = string.Empty;
                var cedenteCodigo = string.Empty;
                var imagemDoRecibo = string.Empty;
                var codigoDoBanco = 0;
                var carteira = string.Empty;

                if (cedenteSelecionado != null)
                {
                    // pegar imagem do cedente para o boleto
                    //imagemDoRecibo = configuracaoDoBoleto.ImagemDeCabecalhoDoReciboDoSacado;

                    if (!string.IsNullOrEmpty(cedenteSelecionado.ImagemDeCabecalhoDoReciboDoSacado))
                        imagemDoRecibo = cedenteSelecionado.ImagemDeCabecalhoDoReciboDoSacado;

                    var cedentePessoa = cedenteSelecionado.Pessoa;

                    cedenteNome = cedentePessoa.Nome;

                    codigoDoBanco = Convert.ToInt32(cedenteSelecionado.NumeroDoBanco);
                    cedenteAgencia = cedenteSelecionado.NumeroDaAgencia;
                    cedenteConta = cedenteSelecionado.NumeroDaConta;
                    cedenteOperacaoConta = cedenteSelecionado.TipoDaConta.ToString("000");

                    if (!string.IsNullOrEmpty(cedenteConta))
                        cedenteDigitoConta = cedenteConta.Substring(cedenteConta.Length - 1, 1);

                    //if (cedentePessoa.DadoBancario != null)
                    //{
                    //    codigoDoBanco = cedentePessoa.DadoBancario.Agencia.Banco.Numero;
                    //    cedenteAgencia = cedentePessoa.DadoBancario.Agencia.Numero;
                    //    cedenteConta = cedentePessoa.DadoBancario.Conta.Numero;
                    //    cedenteOperacaoConta = cedentePessoa.DadoBancario.Conta.Tipo.Value.ToString("000");

                    //    if (!string.IsNullOrEmpty(cedenteConta))
                    //        cedenteDigitoConta = cedenteConta.Substring(cedenteConta.Length - 1, 1);
                    //}

                    cedenteCpfCnpj = OtenhaNumeroCPFOuCNPJ(cedentePessoa);
                    carteira = cedenteSelecionado.TipoDeCarteira.Sigla;
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), Guid.NewGuid().ToString(),
                                                        UtilidadesWeb.MostraMensagemDeInformacao("Configurações do cedente ou boleto bancário inválidas, favor verificar."),
                                                        false);

                    return;
                }

                // formata código do cedente
                if (!string.IsNullOrEmpty(cedenteOperacaoConta) && !string.IsNullOrEmpty(cedenteConta))
                {
                    string conta;
                    var contaSemDigito = Convert.ToInt32(cedenteConta.Substring(0, cedenteConta.Length - 1));

                    conta = contaSemDigito.ToString("00000000");
                    cedenteCodigo = cedenteOperacaoConta + conta;
                }

                var cedente = new Cedente(cedenteCpfCnpj, cedenteNome, cedenteAgencia, cedenteConta, cedenteDigitoConta) { Codigo = cedenteCodigo };

                var boleto = new Boleto(Convert.ToDateTime(vencimento),
                                        (decimal)valorBoleto, carteira, cedenteNossoNumeroBoleto.ToString(),
                                        cedente) { NumeroDocumento = txtNumeroDoBoleto.Text };

                //sacado
                var sacadoCpfCnpj = txtCNPJCPF.Text;
                var sacadoNome = txtNome.Text;
                var sacadoEndereco = txtEndereco.Text;
                var sacadoObservacao = txtFinalidadeBoleto.Text;

                var sacado = new Sacado(sacadoCpfCnpj, sacadoNome);
                boleto.Sacado = sacado;
                boleto.Sacado.Endereco.End = sacadoEndereco;
                boleto.Sacado.Endereco.Bairro = txtBairro.Text;
                boleto.Sacado.Endereco.Cidade = txtCidade.Text;
                boleto.Sacado.Endereco.CEP = txtCep.Text;
                boleto.Sacado.Endereco.UF = txtEstado.Text;

                var instrucaoCaixa = new Instrucao_Caixa { Descricao = txtInstrucoes.Text };
                instrucaoCaixa.DescricaoReciboDoSacado = sacadoObservacao;
                boleto.Instrucoes.Add(instrucaoCaixa);

                var especificacao = new EspecieDocumento_Caixa();
                boleto.EspecieDocumento = new EspecieDocumento_Caixa(especificacao.getCodigoEspecieByEnum(EnumEspecieDocumento_Caixa.Recibo));

                boleto.DataProcessamento = DateTime.Now;
                boleto.DataDocumento = DateTime.Now;

                BoletoBancario boletoBancario;

                if (string.IsNullOrEmpty(imagemDoRecibo))
                    boletoBancario = new BoletoBancario();
                else
                {
                    var urlImagemLogo = UtilidadesWeb.ObtenhaURLHostDiretorioVirtual() + imagemDoRecibo.Remove(0, 1);
                    boletoBancario = new BoletoBancario(urlImagemLogo);
                }

                boletoBancario.CodigoBanco = (short)codigoDoBanco;
                boletoBancario.Boleto = boleto;
                boletoBancario.MostrarCodigoCarteira = true;
                boletoBancario.Boleto.Valida();
                boletoBancario.MostrarComprovanteEntrega = false;

                var chaveDoBoleto = Guid.NewGuid().ToString();

                Session.Add(chaveDoBoleto, boletoBancario);

                MostraBoleto(boletoBancario);

                var url = String.Concat(UtilidadesWeb.ObtenhaURLHostDiretorioVirtual(), "FN/frmVisualizarBoletoGerado.aspx",
                                                "?Id=", chaveDoBoleto);
                ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(),
                                                    UtilidadesWeb.ExibeJanela(url,
                                                                                   "Visualizar boleto gerado",
                                                                                   800, 600, "FN_frmVisualizarBoletoGerado_aspx"), false);

                // Salvar dados do Boleto gerado

                var boletoGerado = FabricaGenerica.GetInstancia().CrieObjeto<IBoletosGerados>();
                boletoGerado.Cedente = ctrlCedente.CedenteSelecionado;

                boletoGerado.Cliente = ctrlCliente.ClienteSelecionado;

                boletoGerado.DataGeracao = boleto.DataProcessamento;
                boletoGerado.DataVencimento = txtVencimento.SelectedDate.Value;
                boletoGerado.NossoNumero = cedenteNossoNumeroBoleto;
                boletoGerado.NumeroBoleto = txtNumeroDoBoleto.Text;
                boletoGerado.Observacao = sacadoObservacao;
                boletoGerado.Valor = valorBoleto;
                boletoGerado.Instrucoes = txtInstrucoes.Text;

                using (var servico = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeBoleto>())
                {

                    if (BoletoGerado != null)
                    {
                        boletoGerado.ID = BoletoGerado.ID.Value;
                        boletoGerado.StatusBoleto = BoletoGerado.StatusBoleto;
                        servico.AtualizarBoletoGerado(boletoGerado);

                        IItemLancamentoFinanceiroRecebimento itemLancamento;
                        long idItemFinanceiroRecebido;

                        using (var servicoDeItemFinanceiroRecebidoComBoleto = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItemFinanceiroRecebidoComBoleto>())
                        {
                            idItemFinanceiroRecebido = servicoDeItemFinanceiroRecebidoComBoleto.ObtenhaItemFinanRecebimentoPorIdBoleto(boletoGerado.ID.Value);
                        }

                        if(idItemFinanceiroRecebido > 0)
                        {
                            using (var servicoFinanceiro = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItensFinanceirosDeRecebimento>())
                            {
                                itemLancamento = servicoFinanceiro.Obtenha(idItemFinanceiroRecebido);

                                if (itemLancamento != null)
                                {
                                    itemLancamento.Cliente = boletoGerado.Cliente;

                                    if (boletoGerado.DataVencimento != null)
                                        itemLancamento.DataDoVencimento = boletoGerado.DataVencimento.Value;

                                    itemLancamento.Valor = boletoGerado.Valor;

                                    if (boletoGerado.NossoNumero != null)
                                        itemLancamento.NumeroBoletoGerado = boletoGerado.NossoNumero.Value.ToString();

                                    itemLancamento.BoletoFoiGeradoColetivamente = false;
                                    servicoFinanceiro.Modifique(itemLancamento);
                                }
                            }
                        }
                    }
                    else if (ViewState["CHAVE_LISTA_ITEM_FINANCEIRO"] != null)
                    {
                        var listaDeItensFinanceiros =
                            (List<IItemLancamentoFinanceiroRecebimento>) ViewState["CHAVE_LISTA_ITEM_FINANCEIRO"];

                        if (listaDeItensFinanceiros.Count > 0)
                        {
                            // mais de 1 item financeiro selecionado
                            if(listaDeItensFinanceiros.Count > 1)
                            {
                                long idBoletoExistente = 0;

                                foreach (var itemLancamentoFinanceiroRecebimento in listaDeItensFinanceiros)
                                {
                                    long idboleto = 0;

                                    using (var servicoFinanceiroComBoleto = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItemFinanceiroRecebidoComBoleto>())
                                    {
                                        idboleto =
                                            servicoFinanceiroComBoleto.ObtenhaBoletoPorIdItemFinanRecebimento(
                                                itemLancamentoFinanceiroRecebimento.ID.Value);

                                        if (idboleto > 0)
                                        {
                                            idBoletoExistente = idboleto;
                                            //servico.Excluir(idboleto);
                                        }//servicoFinanceiroComBoleto.Excluir(itemLancamentoFinanceiroRecebimento.ID.Value);
                                    }

                                    break;
                                    //using (var servicoFinanceiro = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItensFinanceirosDeRecebimento>())
                                    //{
                                    //    itemLancamentoFinanceiroRecebimento.Situacao = Situacao.Cancelada;
                                    //    itemLancamentoFinanceiroRecebimento.Observacao =
                                    //        "Item de contas a receber foi cancelado, para a geração de um novo item.";

                                    //    servicoFinanceiro.Modifique(itemLancamentoFinanceiroRecebimento);
                                    //}
                                }

                                if (idBoletoExistente > 0)
                                {
                                    // Este caso vai acontecer quando existe boleto gerado(mesmo boleto) para as contas a receber
                                    // ou seja, os dados do boleto vai atualizar

                                    using (var servicoBoletoGeradoParaItemFinanceiro = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeBoleto>())
                                    {
                                        var boletoGeradoParaItemFinanceiro =
                                            servicoBoletoGeradoParaItemFinanceiro.obtenhaBoletoPeloId(
                                                idBoletoExistente);

                                        boletoGeradoParaItemFinanceiro.NumeroBoleto = boletoGerado.NumeroBoleto;
                                        boletoGeradoParaItemFinanceiro.Valor = boletoGerado.Valor;
                                        boletoGeradoParaItemFinanceiro.DataGeracao = boletoGerado.DataGeracao;
                                        boletoGeradoParaItemFinanceiro.DataVencimento = boletoGerado.DataVencimento;
                                        boletoGeradoParaItemFinanceiro.Observacao = boletoGerado.Observacao;
                                        boletoGeradoParaItemFinanceiro.Instrucoes = boletoGerado.Instrucoes;

                                        servico.AtualizarBoletoGerado(boletoGeradoParaItemFinanceiro);
                                    }
                                }
                                else
                                {
                                    // Este caso vai acontecer quando existe mais de uma conta a receber, e está gerando um novo boleto,
                                    // ou seja, não existe boleto gerado para as contas
                                    boletoGerado.StatusBoleto = StatusBoleto.Status.Aberto.ToString();
                                    boletoGerado.EhBoletoAvulso = false;
                                    servico.Inserir(boletoGerado, false, TipoLacamentoFinanceiroRecebimento.RecebimentoDeManutencao);
                                    // incrementar o nosso numero e o numero do documento e atualizar no banco.
                                    dadosAuxiliares.ProximoNossoNumero = dadosAuxiliares.ProximoNossoNumero + 1;
                                    servico.AtualizarProximasInformacoes(dadosAuxiliares);

                                    foreach (var itemLancamentoFinanceiroRecebimento in listaDeItensFinanceiros)
                                    {
                                        using (var servicoFinanceiro = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItensFinanceirosDeRecebimento>())
                                        {
                                            itemLancamentoFinanceiroRecebimento.Situacao = Situacao.CobrancaGerada;
                                            itemLancamentoFinanceiroRecebimento.NumeroBoletoGerado =
                                                boletoGerado.NossoNumero.Value.ToString();

                                            itemLancamentoFinanceiroRecebimento.BoletoFoiGeradoColetivamente = true;
                                            servicoFinanceiro.Modifique(itemLancamentoFinanceiroRecebimento);
                                        }

                                        using (var servicoFinanceiroComBoleto = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItemFinanceiroRecebidoComBoleto>())
                                        {
                                            servicoFinanceiroComBoleto.Insira(itemLancamentoFinanceiroRecebimento.ID.Value, boletoGerado.ID.Value);
                                        }
                                    }
                                }

                            }
                            else
                            {
                                foreach (var itemLancamentoFinanceiroRecebimento in listaDeItensFinanceiros)
                                {
                                    long idboleto;

                                    using (var servicoFinanceiroComBoleto = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItemFinanceiroRecebidoComBoleto>())
                                    {
                                        idboleto =
                                            servicoFinanceiroComBoleto.ObtenhaBoletoPorIdItemFinanRecebimento(
                                                itemLancamentoFinanceiroRecebimento.ID.Value);
                                    }

                                    if (idboleto > 0)
                                    {
                                        boletoGerado.ID = idboleto;
                                        servico.AtualizarBoletoGerado(boletoGerado);

                                        using (var servicoFinanceiro = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItensFinanceirosDeRecebimento>())
                                        {
                                            itemLancamentoFinanceiroRecebimento.Cliente = boletoGerado.Cliente;

                                            if (boletoGerado.DataVencimento != null)
                                                itemLancamentoFinanceiroRecebimento.DataDoVencimento = boletoGerado.DataVencimento.Value;

                                            itemLancamentoFinanceiroRecebimento.Valor = boletoGerado.Valor;

                                            if (boletoGerado.NossoNumero != null)
                                                itemLancamentoFinanceiroRecebimento.NumeroBoletoGerado = boletoGerado.NossoNumero.Value.ToString();

                                            itemLancamentoFinanceiroRecebimento.Situacao = Situacao.CobrancaGerada;
                                            itemLancamentoFinanceiroRecebimento.BoletoFoiGeradoColetivamente = false;

                                            servicoFinanceiro.Modifique(itemLancamentoFinanceiroRecebimento);
                                        }
                                    }
                                    else
                                    {
                                        boletoGerado.StatusBoleto = StatusBoleto.Status.Aberto.ToString();
                                        boletoGerado.EhBoletoAvulso = false;
                                        servico.Inserir(boletoGerado, false, TipoLacamentoFinanceiroRecebimento.RecebimentoDeManutencao);

                                        // incrementar o nosso numero e o numero do documento e atualizar no banco.
                                        dadosAuxiliares.ProximoNossoNumero = dadosAuxiliares.ProximoNossoNumero + 1;
                                        servico.AtualizarProximasInformacoes(dadosAuxiliares);

                                        using (var servicoFinanceiro = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItensFinanceirosDeRecebimento>())
                                        {
                                            itemLancamentoFinanceiroRecebimento.Cliente = boletoGerado.Cliente;

                                            if (boletoGerado.DataVencimento != null)
                                                itemLancamentoFinanceiroRecebimento.DataDoVencimento = boletoGerado.DataVencimento.Value;

                                            itemLancamentoFinanceiroRecebimento.Valor = boletoGerado.Valor;

                                            if (boletoGerado.NossoNumero != null)
                                                itemLancamentoFinanceiroRecebimento.NumeroBoletoGerado = boletoGerado.NossoNumero.Value.ToString();

                                            itemLancamentoFinanceiroRecebimento.Situacao = Situacao.CobrancaGerada;
                                            itemLancamentoFinanceiroRecebimento.BoletoFoiGeradoColetivamente = false;

                                            servicoFinanceiro.Modifique(itemLancamentoFinanceiroRecebimento);
                                        }

                                        using (var servicoFinanceiroComBoleto = FabricaGenerica.GetInstancia().CrieObjeto<IServicoDeItemFinanceiroRecebidoComBoleto>())
                                        {
                                            servicoFinanceiroComBoleto.Insira(itemLancamentoFinanceiroRecebimento.ID.Value, boletoGerado.ID.Value);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        boletoGerado.StatusBoleto = StatusBoleto.Status.Aberto.ToString();
                        boletoGerado.EhBoletoAvulso = true;
                        servico.Inserir(boletoGerado, BoletoGeraItemFinanceiroDeRecebimento, TipoLacamentoFinanceiroRecebimento.BoletoAvulso);
                        // incrementar o nosso numero e o numero do documento e atualizar no banco.
                        dadosAuxiliares.ProximoNossoNumero = dadosAuxiliares.ProximoNossoNumero + 1;
                        servico.AtualizarProximasInformacoes(dadosAuxiliares);
                    }
                }

            }
            catch (BussinesException ex)
            {
                Logger.GetInstancia().Erro("Erro ao gerar boleto, exceção: ", ex);
                ScriptManager.RegisterClientScriptBlock(this, GetType(), Guid.NewGuid().ToString(),
                                                        UtilidadesWeb.MostraMensagemDeInconsitencia("Erro ao gerar boleto, exceção: " + ex.Message), false);
            }

            //Garante que a tela de contas a receber será atualizada.
            ScriptManager.RegisterClientScriptBlock(this, GetType(), Guid.NewGuid().ToString(), UtilidadesWeb.AtualizaJanela(String.Concat(UtilidadesWeb.ObtenhaURLHostDiretorioVirtual(), "FN/frmContasAReceber.aspx"), "FN_frmContasAReceber_aspx"), false);

            //Garante que a tela de historico de boletos seja atualizada
            ScriptManager.RegisterClientScriptBlock(this, GetType(), Guid.NewGuid().ToString(), UtilidadesWeb.AtualizaJanela(String.Concat(UtilidadesWeb.ObtenhaURLHostDiretorioVirtual(), "FN/frmBoletosGerados.aspx"), "FN_frmBoletosGerados_aspx"), false);
        }