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")); }
/// <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); }
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); }
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); } }
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); } }
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); }
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); } }
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); }
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); }
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); }
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()); } } }
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()); } } }
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 }); } }
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); }
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); } }
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); }