Example #1
0
        public FileResult GerarRemessa(string postedData)
        {
            var    js           = new JavaScriptSerializer();
            var    loteboletos  = js.Deserialize <List <LoteBoleto> >(postedData);
            var    random       = Path.GetRandomFileName().Substring(0, 5);
            Boleto boletoGerado = new Boleto();

            MemoryStream   strm           = new MemoryStream();
            ArquivoRemessa arquivoRemessa = new ArquivoRemessa(TipoArquivo.CNAB400);
            Boletos        boletos        = new Boletos();

            var convenio = new RepositorioModeloBoleto().BuscarPorId(loteboletos.First().ModeloBoletoId).Convenio;

            foreach (var boleto in loteboletos)
            {
                if (boleto.TituloId != null)
                {
                    boletoGerado = Util.GerarBoleto((int)boleto.TituloId, boleto.ModeloBoletoId);
                }
                else
                {
                    boletoGerado = Util.GerarBoleto((int)boleto.TituloRecorrenteId, boleto.Valor, boleto.DataVencimento, boleto.ModeloBoletoId);
                }
                boletos.Add(boletoGerado);
            }

            arquivoRemessa.GerarArquivoRemessa(convenio, boletoGerado.Banco, boletoGerado.Cedente, boletos, strm, 1);

            return(File(strm.ToArray(), "text/plain", "teste.txt"));
        }
Example #2
0
        /// <summary>
        /// Gera o arquivo de remessa para o banco
        /// </summary>
        /// <param name="ilBB">Dictionary com os boletos bancários.</param>
        /// <param name="sFolderRemessa">Pasta de geração do arquivo.</param>
        /// <returns>true/false indicando se o arquivo foi gerado com sucesso.</returns>
        public bool Gerar_Arquivo_Remessa(Dictionary <int, BoletoBancario> ilBB, string sFolderRemessa, ref int iNumeroLote)
        {
            bool bRetorno = false;

            try
            {
                Boletos boletos = new Boletos();

                //-- Gera a list de Boletos para gerar o arquivo de remessa
                foreach (BoletoBancario bb in ilBB.Values)
                {
                    boletos.Add(bb.Boleto);
                }

                if (boletos.Count > 0)
                {
                    Cedente c = boletos[0].Cedente;
                    IBanco  b = boletos[0].Banco;

                    //-- Carrega o contador
                    CompSoft.compFrameWork.Funcoes func = new Funcoes();
                    iNumeroLote = Convert.ToInt32(func.Contador("NumeroContadorCNAB", false)); //-- Pega o número do contador.

                    if (!sFolderRemessa.EndsWith(@"\"))
                    {
                        sFolderRemessa += @"\";
                    }

                    string sFileRemessa = sFolderRemessa
                                          + "B"
                                          + b.Codigo.ToString().PadLeft(3, '0')
                                          + iNumeroLote.ToString().PadLeft(4, '0')
                                          + ".REM";

                    FileInfo fi = new FileInfo(sFileRemessa);

                    //-- Processo o arquivo de remessa
                    ArquivoRemessa ar = new ArquivoRemessa(TipoArquivo.CNAB400);
                    ar.GerarArquivoRemessa(c.Codigo.ToString() //-- Codigo Cedente
                                           , b                 //-- Interface do Banco
                                           , c                 //-- Classe do Cedente
                                           , boletos           //-- Classe com lista dos boletos
                                           , fi.OpenWrite()    //-- Arquivos texto
                                           , iNumeroLote);     //-- Contador

                    func.Contador("NumeroContadorCNAB", true); //-- Atualiza contador.

                    bRetorno = true;
                }
            }
            catch (Exception ex)
            {
                MsgBox.Show("ERRO AO GARAR ARQUIVO DE REMESSA\r\n\r\n" + ex.Message
                            , "Arquivo de Remessa"
                            , System.Windows.Forms.MessageBoxButtons.OK
                            , System.Windows.Forms.MessageBoxIcon.Error);
            }

            return(bRetorno);
        }
Example #3
0
        private MemoryStream GerarRemessa(Cedente cedente, Boleto boleto)
        {
            //Gerar Remessa
            Boletos boletos = new Boletos();

            boletos.Add(boleto);

            var objRemessa = new ArquivoRemessa(TipoArquivo.CNAB400);
            var memoryStr  = new MemoryStream();

            //numeroConvenio vem do Cedente
            objRemessa.GerarArquivoRemessa("09", new Banco(341), cedente, boletos, memoryStr, 1000);

            var filePath = "C:\\Remessa.rem";

            if (File.Exists(filePath))
            {
                File.Delete(filePath);
            }

            var fileStream = File.Create(filePath);

            memoryStr.CopyTo(fileStream);

            return(memoryStr);
        }
Example #4
0
        public void BancoSicredi_GerarRemessaCNAB400()
        {
            var boletos = Enumerable.Range(0, 3).Select(o => {
                var boleto = GerarBoleto();
                boleto.Boleto.Valida();
                return(boleto);
            });

            Boletos itensRemessa = new Boletos();

            itensRemessa.AddRange(boletos.Select(o => o.Boleto));

            var banco   = itensRemessa.First().Banco;
            var cedente = itensRemessa.First().Cedente;

            ArquivoRemessa arquivoRemessa = new ArquivoRemessa(TipoArquivo.CNAB400);

            arquivoRemessa.LinhaDeArquivoGerada += (object sender, LinhaDeArquivoGeradaArgs e) =>
            {
                Debug.WriteLine(e.Linha);
            };

            using (var stream = new MemoryStream())
            {
                arquivoRemessa.GerarArquivoRemessa("08111081111", banco, cedente, itensRemessa, stream, 1);
                var conteudo = Encoding.ASCII.GetString(stream.ToArray());
                Debug.WriteLine(conteudo);
            }
        }
Example #5
0
        public void GeraArquivoCNAB400(IBanco banco, Cedente cedente, Boletos boletos, string numeroConvenio = null)
        {
            try
            {
                saveFileDialog.Filter = "Arquivos de Retorno (*.rem)|*.rem|Todos Arquivos (*.*)|*.*";
                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    ArquivoRemessa arquivo = new ArquivoRemessa(TipoArquivo.CNAB400);

                    //Valida a Remessa Correspondentes antes de Gerar a mesma...
                    string vMsgRetorno = string.Empty;
                    bool vValouOK = arquivo.ValidarArquivoRemessa(cedente.Convenio.ToString(), banco, cedente, boletos, 1, out vMsgRetorno);
                    if (!vValouOK)
                    {
                        MessageBox.Show(String.Concat("Foram localizados inconsistências na validação da remessa!", Environment.NewLine, vMsgRetorno),
                                        "Teste",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Information);
                    }
                    else
                    {
                        arquivo.GerarArquivoRemessa(numeroConvenio != null ? numeroConvenio : "0", banco, cedente, boletos, saveFileDialog.OpenFile(), 1);

                        MessageBox.Show("Arquivo gerado com sucesso!", "Teste",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Information);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Example #6
0
        public void Unicred_GerarRemessa()
        {
            var boletoBancario = GerarBoletoCarteira1();
            var remessa        = new ArquivoRemessa(TipoArquivo.CNAB240);
            var mem            = new MemoryStream();
            var boletos        = new Boletos();

            boletos.Add(boletoBancario.Boleto);
            remessa.GerarArquivoRemessa(boletoBancario.Cedente.Convenio.ToString(), new Banco(136), boletoBancario.Cedente, boletos, mem, 1);

            var arquivo              = Encoding.ASCII.GetString(mem.ToArray());
            var dataRemessa          = string.Format("{0}{1}{2}", DateTime.Today.Day.ToString("00"), DateTime.Today.Month.ToString("00"), DateTime.Today.ToString("yyyy"));
            var horaRemessa          = string.Format("{0}{1}00", DateTime.Now.Hour.ToString("00"), DateTime.Now.Minute.ToString("00"));
            var dataVencimento       = boletoBancario.Boleto.DataVencimento;
            var dataVencimentoStr    = string.Format("{0}{1}{2}", dataVencimento.Day.ToString("00"), dataVencimento.Month.ToString("00"), dataVencimento.ToString("yyyy"));
            var dataProcessamentoStr = string.Format("{0}{1}{2}", DateTime.Today.Day.ToString("00"), DateTime.Today.Month.ToString("00"), DateTime.Today.ToString("yyyy"));
            var arquivoTeste         = "13600000         235342670000170                    00001900000000000010EMPRESA MODELO S/A            UNICRED                                 1" + dataRemessa + horaRemessa + "00000108500000000                                                                  \r\n" +
                                       "13600011R01  044 2035342670000170                    00001900000000795020EMPRESA MODELO S/A                                                                                            00000001" + dataRemessa + "        00                               \r\n" +
                                       "1360001300001P 010000190000000795020000000000000        09    DOC 123        " + dataVencimentoStr + "000000000105000      N N" + dataProcessamentoStr + "5        000000000000000000000000000000000000000               000000000000000DOC 123                  000    090000000000 \r\n" +
                                       "1360001300002Q 012035342670000170JOSE DA SILVA                           AV. DAS ROSAS, 10                       JARDIM FLORIDO 86300000CORNELIO PROCOPPR1000000000000000                                                                       \r\n" +
                                       "13600015         0000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                                     \r\n" +
                                       "13699999         000001000006000000                                                                                                                                                                                                             \r\n";

            Assert.AreEqual(arquivoTeste, arquivo);
        }
        public void Bradesco_Carteira_09_ArquivoRemessa()
        {
            Cedente objCEDENTE = new Cedente(
                "12345678000155",
                "TESTE",
                "1111",
                "11234",
                "1"
                );

            objCEDENTE.Codigo   = "123456";
            objCEDENTE.Convenio = 9;

            //Inst�ncia de Boleto
            Boleto objBOLETO = new Boleto();

            //O nosso-numero deve ser de 11 posi��es
            objBOLETO.EspecieDocumento = new EspecieDocumento(237, "12");
            objBOLETO.DataVencimento   = DateTime.Now.AddDays(10);
            objBOLETO.ValorBoleto      = 90;
            objBOLETO.Carteira         = "09";
            objBOLETO.NossoNumero      = ("00000012345");
            objBOLETO.Cedente          = objCEDENTE;
            //O n� do documento deve ser de 10 posi��es
            objBOLETO.NumeroDocumento = "1234567890";
            objBOLETO.NumeroControle  = "100";
            //A data do documento � a data de emiss�o do boleto
            objBOLETO.DataDocumento = DateTime.Now;
            //A data de processamento � a data em que foi processado o documento, portanto � da data de emiss�o do boleto
            objBOLETO.DataProcessamento      = DateTime.Now;
            objBOLETO.Sacado                 = new Sacado("12345678000255", "TESTE SACADO");
            objBOLETO.Sacado.Endereco.End    = "END SACADO";
            objBOLETO.Sacado.Endereco.Bairro = "BAIRRO SACADO";
            objBOLETO.Sacado.Endereco.Cidade = "CIDADE SACADO";
            objBOLETO.Sacado.Endereco.CEP    = "CEP SACADO";
            objBOLETO.Sacado.Endereco.UF     = "RR";

            objBOLETO.PercMulta = 10;
            objBOLETO.JurosMora = 5;

            // nao precisa desta parte no boleto do brasdesco.

            /*objBOLETO.Remessa = new Remessa()
             * {
             *  Ambiente = Remessa.TipoAmbiemte.Producao,
             *  CodigoOcorrencia = "01",
             * };*/

            Boletos objBOLETOS = new Boletos();

            objBOLETOS.Add(objBOLETO);

            var mem        = new MemoryStream();
            var objREMESSA = new ArquivoRemessa(TipoArquivo.CNAB400);

            objREMESSA.GerarArquivoRemessa("09", new Banco(237), objCEDENTE, objBOLETOS, mem, 1000);
        }
Example #8
0
        public void GeraArquivoCNAB240(IBanco banco, Cedente cedente, Boletos boletos)
        {
            saveFileDialog.Filter = "Arquivos de Retorno (*.rem)|*.rem|Todos Arquivos (*.*)|*.*";
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                ArquivoRemessa arquivo = new ArquivoRemessa(TipoArquivo.CNAB240);
                arquivo.GerarArquivoRemessa("1200303001417053", banco, cedente, boletos, saveFileDialog.OpenFile(), 1);

                MessageBox.Show("Arquivo gerado com sucesso!", "Teste",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
        }
Example #9
0
        internal static void TestarArquivoRemessa(Banco banco, TipoArquivo tipoArquivo, string nomeCarteira)
        {
            int quantidadeBoletosParaTeste = 36;
            var boletos = GerarBoletos(banco, quantidadeBoletosParaTeste);

            Assert.AreEqual(quantidadeBoletosParaTeste, boletos.Count, "Quantidade de boletos diferente de " + quantidadeBoletosParaTeste.ToString());

            // Define o nome do arquivo.
            var nomeArquivo = Path.GetTempPath() + "Boleto2Net\\" + nomeCarteira + "_Arquivo" + tipoArquivo.ToString() + ".REM";

            // Cria pasta para os arquivos
            if (Directory.Exists(Path.GetDirectoryName(nomeArquivo)) == false)
            {
                Directory.CreateDirectory(Path.GetDirectoryName(nomeArquivo));
            }

            // Se o arquivo já existir (testes anteriores), apaga o arquivo.
            if (File.Exists(nomeArquivo))
            {
                File.Delete(nomeArquivo);
                if (File.Exists(nomeArquivo))
                {
                    Assert.Fail("Arquivo Remessa não foi excluído: " + nomeArquivo);
                }
            }

            // Gera o arquivo remessa.
            try
            {
                var arquivoRemessa = new ArquivoRemessa(boletos.Banco, tipoArquivo, 1);
                using (var fileStream = new FileStream(nomeArquivo, FileMode.Create))
                {
                    arquivoRemessa.GerarArquivoRemessa(boletos, fileStream);
                }
            }
            catch (System.Exception e)
            {
                if (File.Exists(nomeArquivo))
                {
                    File.Delete(nomeArquivo);
                }
                Assert.Fail(e.InnerException.ToString());
            }

            // Se o arquivo existir, considera o teste OK
            Assert.IsTrue(File.Exists(nomeArquivo), "Arquivo Remessa não encontrado: " + nomeArquivo);
        }
Example #10
0
        public byte[] GerarArquivoRemessa(BoletosViewModel models)
        {
            var boletos          = new Boletos();
            var boletoViewModels = models.Boletos;

            boletos.AddRange(boletoViewModels.Select(Popula));
            if (models.CodigoBanco != null)
            {
                boletos.Banco = Banco.Instancia(models.CodigoBanco.Value);
            }
            using (var ms = new MemoryStream())
            {
                var remessa = new ArquivoRemessa(boletos.Banco, TipoArquivo.CNAB400, 1);
                remessa.GerarArquivoRemessa(boletos, ms);
                ms.Position = 0;
                using (var lerArquivo = new StreamReader(ms))
                {
                    var    sbRefazArquivo = new StringBuilder();
                    string strTexto;
                    int    conta;
                    while (lerArquivo.Peek() != -1)
                    {
                        strTexto = lerArquivo.ReadLine();
                        if (strTexto != null)
                        {
                            conta = strTexto.Length;
                            if (conta < 240)
                            {
                                conta = 240 - conta;
                                string strEspaco = null;
                                for (int I = 1; I <= conta; I++)
                                {
                                    strEspaco = strEspaco + " ";
                                }
                                sbRefazArquivo.AppendLine(strTexto + strEspaco);
                            }
                            else
                            {
                                sbRefazArquivo.AppendLine(strTexto);
                            }
                        }
                    }

                    return(sbRefazArquivo.ToString().ToBytes());
                }
            }
        }
        public void Uniprime_GerarRemessa()
        {
            var boletoBancario = GerarBoletoCarteira1();
            var remessa        = new ArquivoRemessa(TipoArquivo.CNAB400);
            var mem            = new MemoryStream();
            var boletos        = new Boletos();

            boletos.Add(boletoBancario.Boleto);
            remessa.GerarArquivoRemessa(boletoBancario.Cedente.Convenio.ToString(), new Banco(84), boletoBancario.Cedente, boletos, mem, 1);

            var arquivo           = Encoding.ASCII.GetString(mem.ToArray());
            var dataRemessa       = string.Format("{0}{1}{2}", DateTime.Today.Day.ToString("00"), DateTime.Today.Month.ToString("00"), DateTime.Today.ToString("yy"));
            var dataVencimento    = boletoBancario.Boleto.DataVencimento;
            var dataVencimentoStr = string.Format("{0}{1}{2}", dataVencimento.Day.ToString("00"), dataVencimento.Month.ToString("00"), dataVencimento.ToString("yy"));
            var arquivoTeste      = "01REMESSA01COBRANCA       00000000000000444601EMPRESA MODELO S A            084UNIPRIME       " + dataRemessa + "        MX0000001                                                                                                                                                                                                                                                                                     000001\r\n" +
                                    "1                   00090000100795020DOC 123                  08400000100010001282          1               01000DOC 123" + dataVencimentoStr + "0000000105000        02N010101000000000000000000000000000000000000             00000000000000235342670000170JOSE DA SILVA                           AV. DAS ROSAS, 10                                   86300000      JARDIM FLORIDO000000000000000000000CORNELIO PROCOPIOPR000002\r\n" +
                                    "9                                                                                                                                                                                                                                                                                                                                                                                                         000003\r\n";

            Assert.AreEqual(arquivo, arquivoTeste);
        }
Example #12
0
        public void Uniprime_Homologacao()
        {
            var cedente = new Cedente("35.342.670/0001-70", "EMPRESA MODELO S/A", "0001", "9", "0079502", "0");

            cedente.Codigo        = "444601";
            cedente.Convenio      = 444601;
            cedente.DigitoCedente = 0;
            cedente.Carteira      = "09";

            var sacado = new Sacado("35.342.670/0001-70", "JOSE DA SILVA");

            sacado.Endereco = new Endereco()
            {
                End = "AV. DAS ROSAS", Numero = "10", Bairro = "JARDIM FLORIDO", Cidade = "CORNELIO PROCOPIO", CEP = "86300-000", UF = "PR", Email = "*****@*****.**"
            };

            // Gera 5 boletos e salva em PDF na pasta TEMP
            var bolRemessa = new Boletos();

            for (int i = 1; i <= 5; i++)
            {
                var boleto = new Boleto()
                {
                    NumeroDocumento = "DOC " + i.ToString("00000"),
                    DataVencimento  = DateTime.Today.AddDays(i),
                    ValorBoleto     = 200 * i,
                    NossoNumero     = i.ToString("00000000000"),
                    Carteira        = "09",
                    Cedente         = cedente,
                    Banco           = new Banco(084),
                    Sacado          = new Sacado()
                    {
                        CPFCNPJ  = "35.342.670/0001-70",
                        Nome     = "JOSE DA SILVA",
                        Endereco = new Endereco()
                        {
                            End    = "AV. DAS ROSAS",
                            Numero = "10",
                            Bairro = "JARDIM FLORIDO",
                            Cidade = "CORNELIO PROCOPIO",
                            CEP    = "86300-000",
                            UF     = "PR",
                            Email  = "*****@*****.**"
                        }
                    }
                };
                bolRemessa.Add(boleto);
                var boletoBancarioPDF = new BoletoBancario();
                boletoBancarioPDF.CodigoBanco = 084;
                boletoBancarioPDF.Boleto      = boleto;
                boletoBancarioPDF.Boleto.Valida();
                var bytes         = boletoBancarioPDF.MontaBytesPDF();
                var arquivoBoleto = Path.Combine(Path.GetTempPath(), string.Format("Boleto_Uniprime_{0}.pdf", i));
                if (File.Exists(arquivoBoleto))
                {
                    File.Delete(arquivoBoleto);
                }
                var sw = new FileStream(arquivoBoleto, FileMode.CreateNew);
                sw.Write(bytes, 0, (int)bytes.Length);
                sw.Flush();
                sw.Close();
                boleto.NossoNumero = i.ToString("00000000000");
            }

            // Gera Remessa e salva na pasta TEMP
            var remessa        = new ArquivoRemessa(TipoArquivo.CNAB400);
            var arquivoRemessa = Path.Combine(Path.GetTempPath(), string.Format("Remessa_Uniprime_{0}{1}{2}.REM", DateTime.Today.Day.ToString("00"), DateTime.Today.Month.ToString("00"), DateTime.Today.ToString("yy")));

            if (File.Exists(arquivoRemessa))
            {
                File.Delete(arquivoRemessa);
            }
            var swRemessa = new FileStream(arquivoRemessa, FileMode.CreateNew);

            remessa.GerarArquivoRemessa(cedente.Convenio.ToString(), new Banco(84), cedente, bolRemessa, swRemessa, 1);
        }
Example #13
0
        public string BoletoGenGet(Guid InstitutionId, Guid userId)
        {
            var inst = _institutionRepository.SelectInstitution(InstitutionId);
            var user = _userRepository.SelectUser(userId);

            //Cedente
            string path       = $"C:\\Users\\caiot\\Documents";
            var    objBoletos = new Boletos();

            objBoletos.Banco                 = Banco.Instancia(inst.BankCode);
            objBoletos.Banco.Cedente         = new Cedente();
            objBoletos.Banco.Cedente.CPFCNPJ = inst.CNPJ.Replace(" ", "");
            objBoletos.Banco.Cedente.Nome    = inst.Name;
            //objBoletos.Banco.Cedente.Observacoes = "Pague isso logo cara!";

            var conta = new ContaBancaria();

            conta.Agencia       = inst.BankAgency.ToString();
            conta.DigitoAgencia = inst.BankAgencyDigit.ToString();
            conta.OperacaoConta = string.Empty;
            conta.DigitoConta   = inst.BankAccountDigit.ToString();
            switch (inst.BankCode)
            {
            case 041:
                conta.CarteiraPadrao = "1";
                break;

            case 237:
                conta.CarteiraPadrao = "09";
                break;

            case 104:
                conta.CarteiraPadrao = "SIG14";
                break;

            case 341:
                conta.CarteiraPadrao         = "109";
                conta.VariacaoCarteiraPadrao = "112";
                break;

            case 422:
                conta.CarteiraPadrao = "1";
                break;

            case 033:
                conta.CarteiraPadrao = "101";
                break;

            case 756:
                conta.CarteiraPadrao         = "1";
                conta.VariacaoCarteiraPadrao = "01";
                break;

            case 748:
                conta.CarteiraPadrao         = "1";
                conta.VariacaoCarteiraPadrao = "A";
                break;
            }
            conta.TipoCarteiraPadrao     = TipoCarteira.CarteiraCobrancaSimples;
            conta.TipoFormaCadastramento = TipoFormaCadastramento.ComRegistro;
            conta.TipoImpressaoBoleto    = TipoImpressaoBoleto.Empresa;
            conta.TipoDocumento          = TipoDocumento.Tradicional;

            var ender = new Endereco();

            ender.LogradouroEndereco    = inst.Adress;
            ender.LogradouroComplemento = inst.AdressComplement;
            ender.Bairro = inst.Neighborhood;
            ender.Cidade = inst.City;
            ender.UF     = "SP";
            ender.CEP    = inst.ZIP;

            objBoletos.Banco.Cedente.Codigo            = "60063";
            objBoletos.Banco.Cedente.CodigoDV          = "6";
            objBoletos.Banco.Cedente.CodigoTransmissao = "000000";
            objBoletos.Banco.Cedente.ContaBancaria     = conta;
            objBoletos.Banco.Cedente.Endereco          = ender;

            objBoletos.Banco.FormataCedente();


            var Titulo = new Boleto(objBoletos.Banco);

            Titulo.Sacado = new Sacado()
            {
                CPFCNPJ  = "03861018250",
                Endereco = new Endereco()
                {
                    Bairro                = inst.Neighborhood,
                    CEP                   = inst.ZIP,
                    Cidade                = inst.City,
                    LogradouroEndereco    = inst.Adress,
                    LogradouroNumero      = "596",
                    LogradouroComplemento = inst.AdressComplement,
                    UF = "SP"
                },
                Nome        = user.Name,
                Observacoes = "Pagar com urgênica para não ser protestado"
            };
            Titulo.CodigoOcorrencia           = "01";
            Titulo.DescricaoOcorrencia        = "Remessa Registrar";
            Titulo.NossoNumero                = 1.ToString();
            Titulo.NumeroControleParticipante = "12";
            Titulo.NossoNumero                = "123456" + 1.ToString();
            Titulo.DataEmissao                = DateTime.Now;
            Titulo.DataVencimento             = DateTime.Now.AddDays(15);
            Titulo.ValorTitulo                = 200.0M;
            Titulo.Aceite           = "N";
            Titulo.EspecieDocumento = TipoEspecieDocumento.DM;
            Titulo.ValorDesconto    = 45;

            //multa
            Titulo.DataMulta               = DateTime.Now.AddDays(15);
            Titulo.PercentualMulta         = 2;
            Titulo.ValorMulta              = Titulo.ValorTitulo * (Titulo.PercentualMulta / 100);
            Titulo.MensagemInstrucoesCaixa = $"Cobrar multa de {Titulo.ValorMulta}após a data de vencimento";

            //Juros
            Titulo.DataJuros          = DateTime.Now.AddDays(15);
            Titulo.PercentualJurosDia = 10 / 30;
            Titulo.ValorJurosDia      = Titulo.ValorTitulo * (Titulo.PercentualJurosDia / 100);
            string instrucoes = $"Cobrar Juros de {Titulo.PercentualJurosDia} por dia";

            if (Titulo.MensagemInstrucoesCaixa == null)
            {
                Titulo.MensagemInstrucoesCaixa = instrucoes;
            }
            else
            {
                Titulo.MensagemInstrucoesCaixa += Environment.NewLine + instrucoes;
            }

            Titulo.CodigoProtesto = TipoCodigoProtesto.NaoProtestar;
            Titulo.CodigoProtesto = 0;
            Titulo.ValidarDados();
            objBoletos.Add(Titulo);


            if (File.Exists(path + "\\remessa.txt"))
            {
                File.Delete(path + "\\remessa.txt");
            }

            //gerar arquivo de remessa
            var st = new MemoryStream();

            var remessa = new ArquivoRemessa(objBoletos.Banco, TipoArquivo.CNAB240, 1);

            remessa.GerarArquivoRemessa(objBoletos, st);

            byte[] fileInBytes;
            using (st)
            {
                fileInBytes = st.ToArray();
            }

            var arquivo = new FileStream(path + "\\remessa.txt", FileMode.Create, FileAccess.ReadWrite);

            arquivo.Write(fileInBytes, 0, fileInBytes.Length);

            arquivo.Close();
            st.Close();

            var lerArquivo = new StreamReader(path + "\\remessa.txt");

            var    RefazArquivo = new StreamWriter(path + "\\remessa2.txt");
            string strTexto     = string.Empty;
            int    conta1       = 0;

            while (lerArquivo.Peek() != -1)
            {
                strTexto = lerArquivo.ReadLine();
                conta1   = strTexto.Length;
                if (conta1 < 240)
                {
                    conta1 = 240 - conta1;
                    string strEspaco = string.Empty;
                    for (int i = 0; i < conta1; i++)
                    {
                        strEspaco = strEspaco + " ";
                    }
                    RefazArquivo.WriteLine(strTexto + strEspaco);
                }
                else
                {
                    RefazArquivo.WriteLine(strTexto);
                }
            }
            RefazArquivo.Close();
            lerArquivo.Close();
            //GeraBoleto
            int    numBoletos = 0;
            string pdfBase64;

            foreach (var linha in objBoletos)
            {
                numBoletos += 1;
                var novoBoleto = new BoletoBancario();
                novoBoleto.Boleto = linha;
                var pdf = novoBoleto.MontaBytesPDF(false);
                pdfBase64 = Convert.ToBase64String(pdf);
                return(pdfBase64);
            }
            return(null);
        }
        public void ArquivoRemessaCnab240ModosTest()
        {
            Cedente cedente = new Cedente(
                "12345678000155",
                "TESTE",
                "3559",
                "9",
                "14100",
                "3"
                )
            {
                Convenio = 1234567,
                Codigo   = "123456",
                Carteira = "17"
            };

            var endereco = new Endereco()
            {
                End    = "",
                Bairro = "",
                Cidade = "",
                UF     = "SP",
                CEP    = "08090-284",
            };

            var sacado = new Sacado("11300946008", "", endereco);

            //Inst�ncia de Boleto
            var boleto = new BoletoNet.Boleto(
                DateTime.Today,
                5,
                "17",
                "1000",
                String.Empty,
                cedente)
            {
                NumeroDocumento = "1000",
                DataDocumento   = DateTime.Today.AddDays(-1),
                Sacado          = sacado,
                Banco           = new Banco(1)
            };

            var boletos = new Boletos {
                boleto
            };

            var mem        = new MemoryStream();
            var objREMESSA = new ArquivoRemessa(TipoArquivo.CNAB240EmModoTeste);

            objREMESSA.LinhaDeArquivoGerada += delegate(object sender, LinhaDeArquivoGeradaArgs args)
            {
                if (args.TipoLinha == EnumTipodeLinha.HeaderDeArquivo || args.TipoLinha == EnumTipodeLinha.HeaderDeLote)
                {
                    Assert.IsTrue(args.Linha.Contains("TS"));
                }
            };
            objREMESSA.GerarArquivoRemessa("09", new Banco(001), cedente, boletos, mem, 1000);

            mem        = new MemoryStream();
            objREMESSA = new ArquivoRemessa(TipoArquivo.CNAB240);
            objREMESSA.LinhaDeArquivoGerada += delegate(object sender, LinhaDeArquivoGeradaArgs args)
            {
                if (args.TipoLinha == EnumTipodeLinha.HeaderDeArquivo || args.TipoLinha == EnumTipodeLinha.HeaderDeLote)
                {
                    Assert.IsFalse(args.Linha.Contains("TS"));
                }
            };
            objREMESSA.GerarArquivoRemessa("09", new Banco(001), cedente, boletos, mem, 1000);
        }
        internal static void TestarHomologacao(Banco banco, TipoArquivo tipoArquivo, string nomeCarteira, int quantidadeBoletos, bool gerarPDF, string aceite)
        {
            var boletos = GerarBoletos(banco, quantidadeBoletos, aceite);

            Assert.AreEqual(quantidadeBoletos, boletos.Count, "Quantidade de boletos diferente de " + quantidadeBoletos);

            // Define os nomes dos arquivos, cria pasta e apaga arquivos anteriores
            var nomeArquivoREM = Path.Combine(Path.GetTempPath(), "Boleto2Net", $"{nomeCarteira}_{tipoArquivo}.REM");
            var nomeArquivoPDF = Path.Combine(Path.GetTempPath(), "Boleto2Net", $"{nomeCarteira}_{tipoArquivo}.PDF");

            if (!Directory.Exists(Path.GetDirectoryName(nomeArquivoREM)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(nomeArquivoREM));
            }
            if (File.Exists(nomeArquivoREM))
            {
                File.Delete(nomeArquivoREM);
                if (File.Exists(nomeArquivoREM))
                {
                    Assert.Fail("Arquivo Remessa não foi excluído: " + nomeArquivoREM);
                }
            }
            if (File.Exists(nomeArquivoPDF))
            {
                File.Delete(nomeArquivoPDF);
                if (File.Exists(nomeArquivoPDF))
                {
                    Assert.Fail("Arquivo Boletos (PDF) não foi excluído: " + nomeArquivoPDF);
                }
            }

            // Arquivo Remessa.
            try
            {
                var arquivoRemessa = new ArquivoRemessa(boletos.Banco, tipoArquivo, 1);
                using (var fileStream = new FileStream(nomeArquivoREM, FileMode.Create))
                    arquivoRemessa.GerarArquivoRemessa(boletos, fileStream);
                if (!File.Exists(nomeArquivoREM))
                {
                    Assert.Fail("Arquivo Remessa não encontrado: " + nomeArquivoREM);
                }
            }
            catch (Exception e)
            {
                if (File.Exists(nomeArquivoREM))
                {
                    File.Delete(nomeArquivoREM);
                }
                Assert.Fail(e.InnerException.ToString());
            }

            if (gerarPDF)
            {
                // Gera arquivo PDF
                try
                {
                    var html = new StringBuilder();
                    foreach (var boletoTmp in boletos)
                    {
                        using (var boletoParaImpressao = new BoletoBancario
                        {
                            Boleto = boletoTmp,
                            OcultarInstrucoes = false,
                            MostrarComprovanteEntrega = false,
                            MostrarEnderecoCedente = true,
                            ExibirDemonstrativo = true
                        })
                        {
                            html.Append("<div style=\"page-break-after: always;\">");
                            html.Append(boletoParaImpressao.MontaHtml());
                            html.Append("</div>");
                        }
                        var pdf = new HtmlToPdfConverter().GeneratePdf(html.ToString());
                        using (var fs = new FileStream(nomeArquivoPDF, FileMode.Create))
                            fs.Write(pdf, 0, pdf.Length);
                        if (!File.Exists(nomeArquivoPDF))
                        {
                            Assert.Fail("Arquivo Boletos (PDF) não encontrado: " + nomeArquivoPDF);
                        }
                    }
                }
                catch (Exception e)
                {
                    if (File.Exists(nomeArquivoPDF))
                    {
                        File.Delete(nomeArquivoPDF);
                    }
                    Assert.Fail(e.InnerException.ToString());
                }
            }
        }
Example #16
0
        internal static void TestarHomologacao(IBanco banco, TipoArquivo tipoArquivo, string nomeCarteira, int quantidadeBoletos, bool gerarBoletoPdfHtml, string aceite, int NossoNumeroInicial)
        {
            var boletos = GerarBoletos(banco, quantidadeBoletos, aceite, NossoNumeroInicial);

            Assert.AreEqual(quantidadeBoletos, boletos.Count, "Quantidade de boletos diferente de " + quantidadeBoletos);

            // Define os nomes dos arquivos, cria pasta e apaga arquivos anteriores
            var nomeArquivoREM  = Path.Combine(Path.GetTempPath(), "BoletoNetCore", $"{nomeCarteira}_{tipoArquivo}.REM");
            var nomeArquivoPDF  = Path.Combine(Path.GetTempPath(), "BoletoNetCore", $"{nomeCarteira}_{tipoArquivo}.PDF");
            var nomeArquivoHTML = Path.Combine(Path.GetTempPath(), "BoletoNetCore", $"{nomeCarteira}_{tipoArquivo}.html");

            if (!Directory.Exists(Path.GetDirectoryName(nomeArquivoREM)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(nomeArquivoREM));
            }
            if (File.Exists(nomeArquivoREM))
            {
                File.Delete(nomeArquivoREM);
                if (File.Exists(nomeArquivoREM))
                {
                    Assert.Fail("Arquivo Remessa não foi excluído: " + nomeArquivoREM);
                }
            }
            if (File.Exists(nomeArquivoPDF))
            {
                File.Delete(nomeArquivoPDF);
                if (File.Exists(nomeArquivoPDF))
                {
                    Assert.Fail("Arquivo Boletos (PDF) não foi excluído: " + nomeArquivoPDF);
                }
            }
            if (File.Exists(nomeArquivoHTML))
            {
                File.Delete(nomeArquivoHTML);
                if (File.Exists(nomeArquivoHTML))
                {
                    Assert.Fail("Arquivo Boletos (HTML) não foi excluído: " + nomeArquivoHTML);
                }
            }

            // Arquivo Remessa.
            try
            {
                var arquivoRemessa = new ArquivoRemessa(boletos.Banco, tipoArquivo, 1);
                using (var fileStream = new FileStream(nomeArquivoREM, FileMode.Create))
                    arquivoRemessa.GerarArquivoRemessa(boletos, fileStream);
                if (!File.Exists(nomeArquivoREM))
                {
                    Assert.Fail("Arquivo Remessa não encontrado: " + nomeArquivoREM);
                }
            }
            catch (Exception e)
            {
                if (File.Exists(nomeArquivoREM))
                {
                    File.Delete(nomeArquivoREM);
                }
                Assert.Fail(e.InnerException.ToString());
            }

            if (gerarBoletoPdfHtml)
            {
                RotativaConfiguration.RotativaPath = "Rotativa";
                RotativaConfiguration.IsWindows    = true;

                // Gera arquivo PDF
                try
                {
                    var html = new StringBuilder();
                    foreach (var boletoTmp in boletos)
                    {
                        var boletoParaImpressao = new BoletoBancario
                        {
                            Boleto                      = boletoTmp,
                            OcultarInstrucoes           = false,
                            MostrarComprovanteEntrega   = false,
                            MostrarEnderecoBeneficiario = true,
                            ExibirDemonstrativo         = true
                        };

                        html.Append("<div style=\"page-break-after: always;\">");
                        html.Append(boletoParaImpressao.MontaHtmlEmbedded());
                        html.Append("</div>");
                        var boletoHtml = html.ToString();
                        File.WriteAllText(nomeArquivoHTML, boletoHtml);

                        var pdf = new Wkhtmltopdf.NetCore.HtmlAsPdf().GetPDF(boletoHtml);
                        using (var fs = new FileStream(nomeArquivoPDF, FileMode.Create))
                            fs.Write(pdf, 0, pdf.Length);
                        if (!File.Exists(nomeArquivoPDF))
                        {
                            Assert.Fail("Arquivo Boletos (PDF) não encontrado: " + nomeArquivoPDF);
                        }
                    }
                }
                catch (Exception e)
                {
                    if (File.Exists(nomeArquivoPDF))
                    {
                        File.Delete(nomeArquivoPDF);
                    }
                    Assert.Fail(e.InnerException.ToString());
                }
            }
        }
Example #17
0
        public GeracaoCNABLancamentoCobrancaViewModel GerarBoletosBancariosHtml(List <LancamentoCobranca> lancamentos, DateTime?dtVencimento, TipoValor tipoValorJuros, decimal?juros, TipoValor tipoValorMulta, decimal?multa, TipoOcorrenciaCNAB tipoOcorrenciaCNAB)
        {
            var geracaoCnab = new GeracaoCNABLancamentoCobrancaViewModel();

            using (TransactionScope scope = new TransactionScope())
            {
                var listaBoletoBancario = new List <BoletoBancario>();
                var listaBoletos        = new Boletos();

                var contaFinanceiraLancamento = lancamentos?.FirstOrDefault()?.ContaFinanceira ?? new ContaFinanceira();

                var contaFinanceira = _contaFinanceiraServico.BuscarPorId(contaFinanceiraLancamento.Id);
                var listaParametroBoletoBancario = _parametroBoletoBancarioServico.Buscar()?.ToList() ?? new List <ParametroBoletoBancario>();

                foreach (var item in lancamentos)
                {
                    if (item.Cliente.Pessoa.Enderecos == null || !item.Cliente.Pessoa.Enderecos.Any())
                    {
                        throw new BusinessRuleException($"O cadastro de [{item.Cliente.Pessoa.Nome}], não possui Endereço. É necessário esta informação para prosseguir!");
                    }

                    var boleto = ImprimirBoletoBancario(item, contaFinanceira, dtVencimento, tipoValorJuros, juros, tipoValorMulta, multa, listaParametroBoletoBancario, tipoOcorrenciaCNAB);

                    var boletoBancario = new BoletoBancario()
                    {
                        CodigoBanco           = Convert.ToInt16(contaFinanceira.Banco.CodigoBanco),
                        Boleto                = boleto,
                        MostrarCodigoCarteira = true,
                        TextoAbaixoDoBoleto   = $"UNIDADE: {item.Unidade.Nome} - {item.Unidade?.Endereco?.Logradouro}" +
                                                $"<br/>REF: {(item.DataCompetencia == null ? item.DataVencimento.ToString("yyyyMM") : item.DataCompetencia.Value.ToString("yyyyMM"))}" +
                                                $"{(item.TipoServico == TipoServico.Mensalista ? $"<br/>CONTRATO: {item.NumerosContratos}" : string.Empty)}"
                    };

                    boletoBancario.Boleto.Valida();
                    boletoBancario.MostrarComprovanteEntrega = false;
                    boletoBancario.FormatoCarne = true;
                    boletoBancario.GeraImagemCodigoBarras(boleto);

                    listaBoletos.Add(boleto);
                    listaBoletoBancario.Add(boletoBancario);

                    item.PossueCnab = true;
                    item.StatusLancamentoCobranca = StatusLancamentoCobranca.EmAberto;
                }

                var objCedente = new Cedente(
                    contaFinanceira.Cpf,
                    contaFinanceira.Descricao,
                    contaFinanceira.Agencia,
                    contaFinanceira.Conta,
                    contaFinanceira.DigitoConta
                    )
                {
                    CodigoTransmissao = $"{contaFinanceira.Agencia}0{contaFinanceira.Convenio.Truncate(7).PadLeft(7, '0')}0{contaFinanceira.Conta.Truncate(7).PadLeft(7, '0')}",
                    Convenio          = Convert.ToInt64(contaFinanceira.Convenio),
                    ContaBancaria     = new ContaBancaria(contaFinanceira.Agencia, contaFinanceira.DigitoAgencia ?? string.Empty, contaFinanceira.Conta, contaFinanceira.DigitoConta),
                    Nome = contaFinanceira.Empresa?.RazaoSocial
                };


                var aqvRemessa = new ArquivoRemessa(BoletoNet.TipoArquivo.CNAB400);
                var banco      = new BoletoNet.Banco(Convert.ToInt32(contaFinanceira.Banco.CodigoBanco));

                using (var mem = new MemoryStream())
                {
                    if (listaBoletos.Any())
                    {
                        aqvRemessa.GerarArquivoRemessa(contaFinanceira.Convenio, banco, objCedente, listaBoletos, mem, Convert.ToInt32(contaFinanceira.CodigoTransmissao));
                    }

                    var pdfBytes = new BoletoBancario().MontaBytesListaBoletosPDF(listaBoletoBancario, "Boletos Gerados", null, "Boletos Gerados");

                    geracaoCnab = new GeracaoCNABLancamentoCobrancaViewModel
                    {
                        BoletosHtml = listaBoletoBancario?.Select(x => x.MontaHtmlEmbedded())?.ToList() ?? new List <string>(),
                        ArquivoRemessaMemoryStream = mem,
                        DadosPDF = pdfBytes
                    };
                }
            }

            _lancamentoCobrancaServico.UpdateDetalhesCNAB(lancamentos);

            return(geracaoCnab);
        }
        public GeracaoCNABContaPagarViewModel GerarBoletosBancariosHtml(List <ContasAPagar> listaContaPagar, int usuarioId, GeracaoCNABContaPagarViewModel filtro)
        {
            var listaBoletoBancario = new List <BoletoBancario>();
            var listaBoletos        = new Boletos();

            var contaFinanceira = _contaFinanceiraServico.BuscarPorId(filtro.ContaFinanceira.Id);

            foreach (var item in listaContaPagar)
            {
                if ((item.FormaPagamento == FormaPagamento.Boleto || item.FormaPagamento == FormaPagamento.BoletoConcessionaria) && string.IsNullOrEmpty(item.CodigoDeBarras))
                {
                    throw new BusinessRuleException($"O Boleto de Id [" + item.Id + "], não possuí código de barras!");
                }

                var boleto         = ImprimirBoletoBancario(item, contaFinanceira);
                var boletoBancario = new BoletoBancario()
                {
                    CodigoBanco           = Convert.ToInt16(contaFinanceira.Banco.CodigoBanco),
                    Boleto                = boleto,
                    MostrarCodigoCarteira = true
                };

                boletoBancario.MostrarComprovanteEntrega = false;
                boletoBancario.FormatoCarne = true;
                boletoBancario.GeraImagemCodigoBarras(boleto);

                listaBoletos.Add(boleto);
                listaBoletoBancario.Add(boletoBancario);

                item.PossueCnab = true;
                _contaPagarServico.Workflow(item, new Usuario {
                    Id = usuarioId
                });
            }

            var objCedente = new Cedente(
                contaFinanceira.Cnpj,
                contaFinanceira.Descricao,
                contaFinanceira.Agencia,
                contaFinanceira.Conta,
                contaFinanceira.DigitoConta
                )
            {
                CodigoTransmissao = $"{contaFinanceira.Agencia}0{contaFinanceira.ConvenioPagamento.Truncate(7).PadLeft(7, '0')}0{contaFinanceira.Conta.Truncate(7).PadLeft(7, '0')}",
                Convenio          = Convert.ToInt64(contaFinanceira.ConvenioPagamento),
                ContaBancaria     = new ContaBancaria(contaFinanceira.Agencia, contaFinanceira.DigitoAgencia ?? string.Empty, contaFinanceira.Conta, contaFinanceira.DigitoConta),
                Nome = contaFinanceira.Empresa?.RazaoSocial
            };

            var aqvRemessa = new ArquivoRemessa(PagamentoNet.TipoArquivo.CNAB240);
            var banco      = new PagamentoNet.Banco(Convert.ToInt32(contaFinanceira.Banco.CodigoBanco));

            using (var mem = new MemoryStream())
            {
                if (listaBoletos.Any())
                {
                    aqvRemessa.GerarArquivoRemessa(contaFinanceira.ConvenioPagamento, banco, objCedente, listaBoletos, mem, Convert.ToInt32(contaFinanceira.CodigoTransmissao));
                }

                return(new GeracaoCNABContaPagarViewModel
                {
                    BoletosHtml = new List <string>(),
                    ArquivoRemessaMemoryStream = mem
                });
            }
        }
Example #19
0
        public void Bradesco_Carteira_09_ArquivoRemessa()
        {
            Cedente objCEDENTE = new Cedente(
               "12345678000155",
               "TESTE",
               "1111",
               "11234",
               "1"
               );
            objCEDENTE.Codigo = "123456";
            objCEDENTE.Convenio = 9;

            //Inst�ncia de Boleto
            Boleto objBOLETO = new Boleto();
            //O nosso-numero deve ser de 11 posi��es
            objBOLETO.EspecieDocumento = new EspecieDocumento(237,"12");
            objBOLETO.DataVencimento = DateTime.Now.AddDays(10);
            objBOLETO.ValorBoleto = 90;
            objBOLETO.Carteira ="09";
            objBOLETO.NossoNumero = ("00000012345");
            objBOLETO.Cedente = objCEDENTE;
            //O n� do documento deve ser de 10 posi��es
            objBOLETO.NumeroDocumento = "1234567890";
            //A data do documento � a data de emiss�o do boleto
            objBOLETO.DataDocumento = DateTime.Now;
            //A data de processamento � a data em que foi processado o documento, portanto � da data de emiss�o do boleto
            objBOLETO.DataProcessamento = DateTime.Now;
            objBOLETO.Sacado = new Sacado("12345678000255", "TESTE SACADO");
            objBOLETO.Sacado.Endereco.End = "END SACADO";
            objBOLETO.Sacado.Endereco.Bairro = "BAIRRO SACADO";
            objBOLETO.Sacado.Endereco.Cidade = "CIDADE SACADO";
            objBOLETO.Sacado.Endereco.CEP = "CEP SACADO";
            objBOLETO.Sacado.Endereco.UF = "RR";

            objBOLETO.PercMulta = 10;
            objBOLETO.JurosMora = 5;

            // nao precisa desta parte no boleto do brasdesco.
            /*objBOLETO.Remessa = new Remessa()
            {
                Ambiente = Remessa.TipoAmbiemte.Producao,
                CodigoOcorrencia = "01",
            };*/

            Boletos objBOLETOS = new Boletos();
            objBOLETOS.Add(objBOLETO);

            var mem = new MemoryStream();
            var objREMESSA = new ArquivoRemessa(TipoArquivo.CNAB400);
            objREMESSA.GerarArquivoRemessa("09", new Banco(237), objCEDENTE, objBOLETOS, mem, 1000);


        }
Example #20
0
        public void GeraBoleto(DataRow row)
        {
            //CedenteData cedente = new CedenteData();
            //EnderecoData endereco = new EnderecoData();
            //Títulos

            var boleto = new Boleto2Net.Boleto(boletos.Banco);

            boleto.Sacado = new Sacado
            {
                CPFCNPJ     = row[3].ToString(),
                Nome        = row[1].ToString() + " " + row[2].ToString(),
                Observacoes = string.Empty,
                Endereco    = new Boleto2Net.Endereco
                {
                    LogradouroEndereco    = row[5].ToString(),
                    LogradouroNumero      = row[7].ToString(),
                    LogradouroComplemento = "",
                    Bairro = row[6].ToString(),
                    Cidade = row[10].ToString(),
                    UF     = row[11].ToString(),
                    CEP    = row[8].ToString() + row[9].ToString()
                }
            };

            boleto.CodigoOcorrencia    = "01"; //Registrar remessa
            boleto.DescricaoOcorrencia = "Remessa Registrar";



            boleto.DataEmissao      = DateTime.Today;
            boleto.DataVencimento   = boleto.DataEmissao.AddDays(10);
            boleto.ValorTitulo      = Convert.ToDecimal(row[4].ToString());
            boleto.Aceite           = "N";
            boleto.EspecieDocumento = TipoEspecieDocumento.DM;

            //boleto.DataDesconto = DateTime.Today;
            //boleto.ValorDesconto = 0;
            decimal ValorMulta = Convert.ToDecimal(row[4]) / 10;
            decimal precMulta  = 02;

            bControle = new BoletoControle();
            bControle.NumeroBoleto(Convert.ToInt32(row[0].ToString()), boleto.ValorTitulo, boleto.DataEmissao.Month, boleto.DataEmissao.Year);


            boleto.NumeroDocumento            = bControle.NumeroBoletoControle.ToString();
            boleto.NumeroControleParticipante = bControle.NumeroBoletoControle.ToString();
            boleto.NossoNumero = "401";
            if (ValorMulta > 0)
            {
                boleto.DataMulta       = boleto.DataVencimento.AddDays(1);
                boleto.PercentualMulta = precMulta;
                boleto.ValorMulta      = boleto.ValorTitulo * boleto.PercentualMulta / 100;

                boleto.MensagemInstrucoesCaixa = $"Cobrar Multa de {boleto.ValorMulta} após o vencimento.";
            }

            if (precMulta > 0)
            {
                boleto.DataJuros          = boleto.DataVencimento.AddDays(1);
                boleto.PercentualJurosDia = (precMulta / 30);
                boleto.ValorJurosDia      = boleto.ValorTitulo * boleto.PercentualJurosDia / 100;

                string instrucao = $"Cobrar juros de {boleto.PercentualJurosDia} por dia de atraso";
                if (string.IsNullOrEmpty(boleto.MensagemInstrucoesCaixa))
                {
                    boleto.MensagemInstrucoesCaixa = instrucao;
                }
                else
                {
                    boleto.MensagemInstrucoesCaixa += Environment.NewLine + instrucao;
                }
            }

            /*
             * boleto.CodigoInstrucao1 = string.Empty;
             * boleto.ComplementoInstrucao1 = string.Empty;
             *
             * boleto.CodigoInstrucao2 = string.Empty;
             * boleto.ComplementoInstrucao2 = string.Empty;
             *
             * boleto.CodigoInstrucao3 = string.Empty;
             * boleto.ComplementoInstrucao3 = string.Empty;
             */

            boleto.CodigoProtesto = TipoCodigoProtesto.NaoProtestar;
            boleto.DiasProtesto   = 10;

            boleto.CodigoBaixaDevolucao = TipoCodigoBaixaDevolucao.NaoBaixarNaoDevolver;
            boleto.DiasBaixaDevolucao   = 0;

            boleto.ValidarDados();
            boletos.Add(boleto);



            //Gerar Remessa
            var stream  = new MemoryStream();
            var remessa = new ArquivoRemessa(boletos.Banco, TipoArquivo.CNAB400, 1);

            remessa.GerarArquivoRemessa(boletos, stream);


            //Gerar boletos - aqui eu gravo os arquivos um a um porque mando via e-mail.
            foreach (var boleto1 in boletos)
            {
                var boletoBancario = new BoletoBancario()
                {
                    Boleto = boleto1
                };
                var pdf = boletoBancario.MontaBytesPDF(false);
                pathPDF = @"C:\Teste\" + boleto.Sacado.Nome + " - " + boleto.DataEmissao.Month + "-" + boleto.DataEmissao.Year + ".pdf";
                File.WriteAllBytes(pathPDF, pdf);
            }
        }
Example #21
0
        public string GerarBoleto()
        {
            //Dados do Cedente
            Boletos boletos = null;

            boletos = new Boletos();

            Conta conta = new Conta();

            conta.BancoNumero       = "237";
            conta.Titular           = "FULANO DE TAL DA SILVA";
            conta.Agencia           = "1234";
            conta.AgenciaDigito     = "X";
            conta.Numero            = "123456";
            conta.NumeroDigito      = "X";
            conta.CarteiraBoleto    = "09";
            conta.VariacaoCarteira  = "666";  //M
            conta.Emissor           = "666";  //M
            conta.CedenteNumero     = "6666"; //M
            conta.CedenteDigito     = "6";    //M
            conta.PercentualMulta   = 1;
            conta.PercentualMora    = 2;
            conta.DiasProtesto      = 5;
            conta.LayoutRemessa     = 0;
            conta.SequencialRemessa = 1000;

            EmissaoBoleto emissaoBoleto = new EmissaoBoleto();

            emissaoBoleto.Banco = "Banco Bradesco S.A."; //M

            GlobalsDadosEmpresa globalsDadosEmpresa = new GlobalsDadosEmpresa();

            globalsDadosEmpresa.Cnpj        = "97969747000194";
            globalsDadosEmpresa.Logradouro  = "RUA DAS ESTRELAS";
            globalsDadosEmpresa.Numero      = "666";
            globalsDadosEmpresa.Complemento = "SL 13";
            globalsDadosEmpresa.Bairro      = "CAMANDORA";
            globalsDadosEmpresa.CidadeNome  = "CAMPINAS";
            globalsDadosEmpresa.CidadeUf    = "SP";
            globalsDadosEmpresa.Cep         = "34188130";

            //Dados do Cliente
            Cliente cliente = new Cliente();

            cliente.Cnpj        = "10048848000144";
            cliente.Razao       = "ADAPTUP TI";
            cliente.Logradouro  = "RUA DOS PLANETAS";
            cliente.Numero      = "8541";
            cliente.Complemento = "4 AND";
            cliente.Bairro      = "SERRA";
            cliente.CidadeNome  = "VITÓRIA";
            cliente.Uf          = "ES";
            cliente.Cep         = "23596478";

            //Dados do Boleto
            DadosBoleto dadosBoleto = new DadosBoleto();

            dadosBoleto.CodigoOcorrencia    = "01"; //Registrar remessa
            dadosBoleto.DescricaoOcorrencia = "Remessa Registrar";
            dadosBoleto.Codigo      = "99999";
            dadosBoleto.Lancamento  = DateTime.Today;
            dadosBoleto.Vencimento  = new DateTime(2019, 1, 23);
            dadosBoleto.ValorAberto = 4600.00M;
            dadosBoleto.Aceite      = "N";

            //Cabeçalho
            boletos.Banco         = Banco.Instancia(Int32.Parse(conta.BancoNumero));
            boletos.Banco.Cedente = new Cedente
            {
                CPFCNPJ       = globalsDadosEmpresa.Cnpj,
                Nome          = conta.Titular,
                Observacoes   = string.Empty,
                ContaBancaria = new ContaBancaria
                {
                    Agencia        = conta.Agencia,
                    DigitoAgencia  = conta.AgenciaDigito,
                    OperacaoConta  = string.Empty,
                    Conta          = conta.Numero,
                    DigitoConta    = conta.NumeroDigito,
                    CarteiraPadrao = conta.CarteiraBoleto,
                    //VariacaoCarteiraPadrao = conta.VariacaoCarteira,
                    TipoCarteiraPadrao     = TipoCarteira.CarteiraCobrancaSimples,
                    TipoFormaCadastramento = TipoFormaCadastramento.ComRegistro,
                    TipoImpressaoBoleto    = conta.Emissor == emissaoBoleto.Banco ? TipoImpressaoBoleto.Banco : TipoImpressaoBoleto.Empresa,
                    TipoDocumento          = TipoDocumento.Tradicional
                },
                Codigo            = conta.CedenteNumero,
                CodigoDV          = conta.CedenteDigito.ToString(),
                CodigoTransmissao = string.Empty,
                //Endereco = new Boleto2Net.Endereco
                Endereco = new Endereco
                {
                    LogradouroEndereco    = globalsDadosEmpresa.Logradouro,
                    LogradouroNumero      = globalsDadosEmpresa.Numero,
                    LogradouroComplemento = globalsDadosEmpresa.Complemento,
                    Bairro = globalsDadosEmpresa.Bairro,
                    Cidade = globalsDadosEmpresa.CidadeNome,
                    UF     = globalsDadosEmpresa.CidadeUf,
                    CEP    = globalsDadosEmpresa.Cep
                }
            };
            boletos.Banco.FormataCedente();

            //Título (FOREACH INIT)
            var boleto = new Boleto(boletos.Banco);

            boleto.Sacado = new Sacado
            {
                CPFCNPJ     = cliente.Cnpj,
                Nome        = cliente.Razao,
                Observacoes = string.Empty,
                Endereco    = new Endereco
                {
                    LogradouroEndereco    = cliente.Logradouro,
                    LogradouroNumero      = cliente.Numero,
                    LogradouroComplemento = cliente.Complemento,
                    Bairro = cliente.Bairro,
                    Cidade = cliente.CidadeNome,
                    UF     = cliente.Uf.ToString(),
                    CEP    = cliente.Cep
                }
            };

            boleto.CodigoOcorrencia           = dadosBoleto.CodigoOcorrencia; //Registrar remessa
            boleto.DescricaoOcorrencia        = dadosBoleto.DescricaoOcorrencia;
            boleto.NumeroDocumento            = dadosBoleto.Codigo.ToString();
            boleto.NumeroControleParticipante = dadosBoleto.Codigo.ToString();
            boleto.NossoNumero      = dadosBoleto.Codigo.ToString();
            boleto.DataEmissao      = dadosBoleto.Lancamento;
            boleto.DataVencimento   = dadosBoleto.Vencimento;
            boleto.ValorTitulo      = dadosBoleto.ValorAberto;
            boleto.Aceite           = dadosBoleto.Aceite;
            boleto.EspecieDocumento = TipoEspecieDocumento.DM;

            //boleto.DataDesconto = DateTime.Today;
            //boleto.ValorDesconto = 0;
            if (conta.PercentualMulta > 0)
            {
                boleto.DataMulta       = dadosBoleto.Vencimento.AddDays(1);
                boleto.PercentualMulta = conta.PercentualMulta;
                boleto.ValorMulta      = boleto.ValorTitulo * boleto.PercentualMulta / 100;

                //boleto.MensagemInstrucoesCaixa = $"Cobrar Multa de {boleto.ValorMulta.FormatoMoeda()} após o vencimento.";
                boleto.MensagemInstrucoesCaixa = $"Cobrar Multa de {boleto.ValorMulta} .FormatoMoeda() após o vencimento.";
            }

            if (conta.PercentualMora > 0)
            {
                boleto.DataJuros          = dadosBoleto.Vencimento.AddDays(1);
                boleto.PercentualJurosDia = (conta.PercentualMora / 30);
                boleto.ValorJurosDia      = boleto.ValorTitulo * boleto.PercentualJurosDia / 100;

                //string instrucao = $"Cobrar juros de {boleto.PercentualJurosDia.FormatoPorcentagem()} por dia de atraso";
                string instrucao = $"Cobrar juros de {boleto.PercentualJurosDia} .FormatoPorcentagem() por dia de atraso";
                if (string.IsNullOrEmpty(boleto.MensagemInstrucoesCaixa))
                {
                    boleto.MensagemInstrucoesCaixa = instrucao;
                }
                else
                {
                    boleto.MensagemInstrucoesCaixa += Environment.NewLine + instrucao;
                }
            }

            boleto.CodigoInstrucao1      = string.Empty;
            boleto.ComplementoInstrucao1 = string.Empty;

            boleto.CodigoInstrucao2      = string.Empty;
            boleto.ComplementoInstrucao2 = string.Empty;

            boleto.CodigoInstrucao3      = string.Empty;
            boleto.ComplementoInstrucao3 = string.Empty;

            boleto.CodigoProtesto = conta.DiasProtesto == 0 ? TipoCodigoProtesto.NaoProtestar : TipoCodigoProtesto.ProtestarDiasUteis;
            boleto.DiasProtesto   = conta.DiasProtesto;

            boleto.CodigoBaixaDevolucao = TipoCodigoBaixaDevolucao.NaoBaixarNaoDevolver;
            boleto.DiasBaixaDevolucao   = 0;

            boleto.ValidarDados();
            boletos.Add(boleto);

            //(FOREACH END)

            //Gerar Remessa
            var stream  = new MemoryStream();
            var remessa = new ArquivoRemessa(boletos.Banco, conta.LayoutRemessa == LayoutRemessa.Cnab240
                ? TipoArquivo.CNAB240 : TipoArquivo.CNAB400, conta.SequencialRemessa);

            remessa.GerarArquivoRemessa(boletos, stream);

            var boletoBancario = new BoletoBancario()
            {
                Boleto = boletos[0]
            };
            var html = boletoBancario.MontaHtml();

            return(html);

            //var pdf = boletoBancario.MontaBytesPDF(false);
            //var pathPDF = GArquivos.CombinarDiretorio(PathRemessa, $"{boleto.NumeroControleParticipante}.pdf");
            //var pathPDF = @"C:\boletos\" + $"{boleto.NumeroControleParticipante}.pdf";
            //File.WriteAllBytes(pathPDF, pdf);
        }