package com.rjconsultores.ventaboletos.layouts; import java.util.Collection; import java.util.List; import org.jrimum.texgit.Record; import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; import com.rjconsultores.ventaboletos.blocos.CabecalhoRetorno; import com.rjconsultores.ventaboletos.blocos.DadosBoleto; import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; import com.rjconsultores.ventaboletos.blocos.DetalheRetorno; import com.rjconsultores.ventaboletos.blocos.RateioDeCredito; import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; import com.rjconsultores.ventaboletos.blocos.RodapeRetorno; import com.rjconsultores.ventaboletos.blocos.bancobrasil.CabecalhoLoteRemessaBancoBrasil; import com.rjconsultores.ventaboletos.blocos.bancobrasil.CabecalhoRemessaBancoBrasil; import com.rjconsultores.ventaboletos.blocos.bancobrasil.DetalheObrigatorioDadosPagadorBancoBrasil; import com.rjconsultores.ventaboletos.blocos.bancobrasil.DetalheObrigatorioDadosTitulosBancoBrasil; import com.rjconsultores.ventaboletos.blocos.bancobrasil.RodapeRemessaBancoBrasil; import com.rjconsultores.ventaboletos.blocos.bancobrasil.RodapeRemessaLoteBancoBrasil; import com.rjconsultores.ventaboletos.enuns.BancoLayout; import com.rjconsultores.ventaboletos.utils.FormataUtil; public class BancoBrasilFlatFile extends AbstractFlatFile implements RemessaInterface { protected BancoBrasilFlatFile() { super(BancoLayout.BB_240_Envio); } @Override protected void createHeader(CabecalhoRemessa cabecalhoRemessaParam) { Record header = getFlatFile().createRecord("HeaderArquivo"); CabecalhoRemessaBancoBrasil cabecalhoRemessa = (CabecalhoRemessaBancoBrasil) cabecalhoRemessaParam; //header.setValue("CodComp", FormataUtil.formatarValorPorTamanho("001", 3)); if(cabecalhoRemessa.getLoteServico() != null){ header.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoRemessa.getLoteServico().toString(), 4)); } //header.setValue("TipoRegistro", FormataUtil.formatarValorPorTamanho("0", 1)); //header.setValue("UsoExclusivo", FormataUtil.formatarValorPorTamanho(" ", 9)); header.setValue("CpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getCpfCnpj().toString(), 1)); header.setValue("NumCpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumCpfCnpj(), 14)); header.setValue("NumConvenio", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumConvenio(), 9)); //header.setValue("CobrancaCedente", FormataUtil.formatarValorPorTamanho("0014", 4)); header.setValue("NumCarteira", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumCarteira(), 2)); header.setValue("NumVarCarteira", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumVarCarteira(), 3)); //header.setValue("Brancos1", FormataUtil.formatarValorPorTamanho(" ", 2)); header.setValue("NumAgencia", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumAgencia(), 5)); header.setValue("DigAgencia", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getDigAgencia(), 1)); header.setValue("NumContaCorrente", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumContaCorrente(), 12)); header.setValue("DigContaCorrente", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getDigContaCorrente(), 1)); header.setValue("DigAgenciaConta", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getDigAgenciaConta(), 1)); header.setValue("NomeEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNomeEmpresa(), 30)); //header.setValue("NomeBanco", FormataUtil.formatarValorPorTamanho("BANCO DO BRASIL S.A.", 30)); //header.setValue("Brancos3", FormataUtil.formatarValorPorTamanho(" ", 10)); //header.setValue("RemessaRetorno", FormataUtil.formatarValorPorTamanho("1", 1)); header.setValue("DataGeracao", FormataUtil.formataData(cabecalhoRemessa.getDataGeracao())); header.setValue("HoraGeracao", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getHoraGeracao().toString(), 6)); header.setValue("NumRemessa", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoRemessa.getNumeroSequencialRemessa().toString(), 6)); //header.setValue("NumeroVersaoLayout", FormataUtil.formatarValorPorTamanho("083", 6)); header.setValue("DensidadeArquivo", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getDensidadeArquivo(), 5)); //header.setValue("Brancos4", FormataUtil.formatarValorPorTamanho(" ", 20)); //header.setValue("Brancos5", FormataUtil.formatarValorPorTamanho(" ", 20)); //header.setValue("Brancos6", FormataUtil.formatarValorPorTamanho(" ", 29)); getFlatFile().addRecord(header); createHeaderLote(cabecalhoRemessa.getCabecalhoLoteRemessaBancoBrasil()); } private void createHeaderLote(CabecalhoLoteRemessaBancoBrasil cabecalhoLote) { Record header = getFlatFile().createRecord("HeaderLote"); //header.setValue("CodComp", FormataUtil.formatarValorPorTamanho("001", 3)); if(cabecalhoLote.getLoteServico() != null){ header.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoLote.getLoteServico().toString(), 4)); } //header.setValue("TipoRegistro", FormataUtil.formatarValorPorTamanho("1", 1)); //header.setValue("TipoOperacao", FormataUtil.formatarValorPorTamanho("R", 1)); //header.setValue("TipoServico", FormataUtil.formatarValorPorTamanho("02", 2)); //header.setValue("UsoExclusivo", FormataUtil.formatarValorPorTamanho(" ", 2)); //header.setValue("NumeroVersaoLote", FormataUtil.formatarValorPorTamanho("042", 3)); //header.setValue("UsoExclusivo1", FormataUtil.formatarValorPorTamanho(" ", 1)); header.setValue("CpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getCpfCnpj().toString(), 1)); header.setValue("NumCpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumCpfCnpj(), 15)); header.setValue("NumConvenio", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumConvenio(), 9)); //header.setValue("CobrancaCedente", FormataUtil.formatarValorPorTamanho("0014", 4)); header.setValue("NumCarteira", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumCarteira(), 2)); header.setValue("NumVarCarteira", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumVarCarteira(), 3)); header.setValue("RemessaTeste", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getRemessaTesteID(), 2)); header.setValue("NumAgencia", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumAgencia(), 5)); header.setValue("DigAgencia", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getDigAgencia(), 1)); header.setValue("NumContaCorrente", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumContaCorrente(), 12)); header.setValue("DigContaCorrente", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getDigContaCorrente(), 1)); header.setValue("DigAgenciaConta", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getDigAgenciaConta(), 1)); header.setValue("NomeEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNomeEmpresa(), 30)); //header.setValue("Mensagem1", FormataUtil.formatarValorPorTamanho("", 40)); //header.setValue("Mensagem2", FormataUtil.formatarValorPorTamanho("", 40)); header.setValue("NumeroRemessa", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoLote.getNumeroRemessa().toString(), 8)); header.setValue("DataGeracao", FormataUtil.formataData(cabecalhoLote.getDataGeracao())); header.setValue("DataCredito", FormataUtil.formataData(cabecalhoLote.getDataCredito())); //header.setValue("UsoExclusivo2", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNomeEmpresa(), 33)); getFlatFile().addRecord(header); } @Override protected void createTransacaoTitulos(DetalheObrigatorio tituloParam) { Record transacaoTitulos = getFlatFile().createRecord("SegmentoP"); DetalheObrigatorioDadosTitulosBancoBrasil dadosTitulosBancoBrasil = (DetalheObrigatorioDadosTitulosBancoBrasil) tituloParam; //transacaoTitulos.setValue("IDReg", FormataUtil.formatarValorPorTamanho("001", 3)); if(dadosTitulosBancoBrasil.getLoteServico() != null){ transacaoTitulos.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulosBancoBrasil.getLoteServico().toString(), 4)); } //transacaoTitulos.setValue("TipoRegistro", FormataUtil.formatarValorPorTamanho("3", 1)); transacaoTitulos.setValue("NumSeqRegistro", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulosBancoBrasil.getNumeroSequencialRegistro().toString(), 5)); //transacaoTitulos.setValue("CodSegmento", FormataUtil.formatarValorPorTamanho("P", 1)); //transacaoTitulos.setValue("Brancos1", FormataUtil.formatarValorPorTamanho(" ", 1)); //transacaoTitulos.setValue("CodigoRemessa", FormataUtil.formatarValorPorTamanho("01", 2)); transacaoTitulos.setValue("NumAgencia", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getNumAgencia(), 5)); transacaoTitulos.setValue("DigAgencia", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getDigAgencia(), 1)); transacaoTitulos.setValue("NumContaCorrente", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getNumContaCorrente(), 12)); transacaoTitulos.setValue("DigContaCorrente", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getDigContaCorrente(), 1)); transacaoTitulos.setValue("DigAgenciaConta", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getDigAgenciaConta(), 1)); transacaoTitulos.setValue("NossoNumero", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getNossoNumeroBB(), 20)); //transacaoTitulos.setValue("CodCarteira", FormataUtil.formatarValorPorTamanho("7", 1)); //transacaoTitulos.setValue("FormaCadTituloBanco", FormataUtil.formatarValorPorTamanho("0", 1)); //transacaoTitulos.setValue("TipoDocumento", FormataUtil.formatarValorPorTamanho("0", 1)); //transacaoTitulos.setValue("IdentEmissaoBloqueto", FormataUtil.formatarValorPorTamanho("0", 1)); //transacaoTitulos.setValue("IdentDistribuicao", FormataUtil.formatarValorPorTamanho("0", 1)); transacaoTitulos.setValue("NumeroDoDocumento", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getNumeroDoDocumento(), 15)); transacaoTitulos.setValue("Vencimento", FormataUtil.formataData(dadosTitulosBancoBrasil.getVencimento())); transacaoTitulos.setValue("Valor", dadosTitulosBancoBrasil.getValor()); //transacaoTitulos.setValue("AgenciaCobradora", FormataUtil.formatarValorPorTamanho("00000", 5)); //transacaoTitulos.setValue("DigAgenciaCobradora", FormataUtil.formatarValorPorTamanho(" ", 1)); //transacaoTitulos.setValue("EspecieDeTitulo", FormataUtil.formatarValorPorTamanho("2", 1)); transacaoTitulos.setValue("Aceite", dadosTitulosBancoBrasil.getAceite().getValue()); transacaoTitulos.setValue("Emissao", FormataUtil.formataData(dadosTitulosBancoBrasil.getEmissao())); transacaoTitulos.setValue("CodMora", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getCodMora().toString(), 1)); transacaoTitulos.setValue("DataMora", FormataUtil.formataDataToString(dadosTitulosBancoBrasil.getDataMora(), "00000000")); transacaoTitulos.setValue("JurosDeMora", dadosTitulosBancoBrasil.getJurosDeMora()); transacaoTitulos.setValue("CodigoDesconto", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getCodigoDesconto().toString(), 1)); transacaoTitulos.setValue("DataDesconto", FormataUtil.formataDataToString(dadosTitulosBancoBrasil.getDataDesconto(), "00000000")); transacaoTitulos.setValue("DescontoConcedido", dadosTitulosBancoBrasil.getDescontoConcedido()); transacaoTitulos.setValue("IOF_Devido", dadosTitulosBancoBrasil.getIOF_Devido()); transacaoTitulos.setValue("AbatimentoConcedido", dadosTitulosBancoBrasil.getAbatimentoConcedido()); transacaoTitulos.setValue("NossoNumeroEmp", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getNossoNumeroEmp(), 25)); transacaoTitulos.setValue("CodigoProtesto", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getCodigoProtesto().toString(), 1)); transacaoTitulos.setValue("DiasProtesto", FormataUtil.formatarValorPorTamanho(dadosTitulosBancoBrasil.getDiasProtesto().toString(), 2)); //transacaoTitulos.setValue("CodigoBaixa", FormataUtil.formatarValorPorTamanho("0", 1)); //transacaoTitulos.setValue("DiasBaixa", FormataUtil.formatarValorPorTamanho("000", 3)); //transacaoTitulos.setValue("Moeda", FormataUtil.formatarValorPorTamanho("09", 2)); transacaoTitulos.setValue("NumeroContrato", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulosBancoBrasil.getNumeroContrato().toString(), 10)); //transacaoTitulos.setValue("UsoExclusivo", FormataUtil.formatarValorPorTamanho("0", 1)); getFlatFile().addRecord(transacaoTitulos); createTransacaoTitulosSeguimentoQ(transacaoTitulos, dadosTitulosBancoBrasil.getDetalheObrigatorioDadosPagadorBancoBrasil()); } private void createTransacaoTitulosSeguimentoQ(Record recordFather, DetalheObrigatorioDadosPagadorBancoBrasil dadosPagadorBancoBrasil) { Record transacaoTitulos = getFlatFile().createRecord("SegmentoQ"); //transacaoTitulos.setValue("IDReg", FormataUtil.formatarValorPorTamanho("001", 3)); if(dadosPagadorBancoBrasil.getLoteServico() != null){ transacaoTitulos.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorBancoBrasil.getLoteServico().toString(), 4)); } //transacaoTitulos.setValue("TipoRegistro", FormataUtil.formatarValorPorTamanho("3", 1)); transacaoTitulos.setValue("NumSeqRegistro", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorBancoBrasil.getNumeroSequencialRegistro().toString(), 5)); //transacaoTitulos.setValue("CodSegmento", FormataUtil.formatarValorPorTamanho("Q", 1)); transacaoTitulos.setValue("Brancos1", FormataUtil.formatarValorPorTamanho(" ", 1)); transacaoTitulos.setValue("CodigoRemessa", FormataUtil.formatarValorPorTamanho("01", 2)); transacaoTitulos.setValue("TipoInscricaoSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getTipoInscricaoSacado().toString(), 1)); transacaoTitulos.setValue("NumeroInscricaoSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getNumeroInscricaoSacado(), 15)); transacaoTitulos.setValue("NomeSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getNomeSacado(), 40)); transacaoTitulos.setValue("LogradouroSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getLogradouroSacado(), 40)); transacaoTitulos.setValue("BairroSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getBairroSacado(), 15)); transacaoTitulos.setValue("CepSacado", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorBancoBrasil.getCepSacado().toString(), 5)); transacaoTitulos.setValue("SufixoCep", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorBancoBrasil.getSufixoCep().toString(), 3)); transacaoTitulos.setValue("Cidade", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getCidade(), 15)); transacaoTitulos.setValue("Estado", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getEstado(), 2)); try{ transacaoTitulos.setValue("TipoSacadorAvalista", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getTipoSacadorAvalista().toString(), 1)); transacaoTitulos.setValue("SacadorAvalista", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getSacadorAvalista().toString(), 15)); transacaoTitulos.setValue("NomeSacadorAvalista", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getNomeSacadorAvalista(), 40)); }catch(Exception e){ } try{ transacaoTitulos.setValue("CodBancoCorresp", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getCodBancoCorresp().toString(), 3)); }catch(Exception e){ } transacaoTitulos.setValue("NossoNumeroNoBancoCorresp", FormataUtil.formatarValorPorTamanho(dadosPagadorBancoBrasil.getNossoNumeroNoBancoCorresp(), 20)); //transacaoTitulos.setValue("UsoExclusivo", FormataUtil.formatarValorPorTamanho(" ", 8)); recordFather.addInnerRecord(transacaoTitulos); } @Override protected Record createDadosBoletos(DadosBoleto boleto) { throw new UnsupportedOperationException("Não necessário..."); } @Override protected Record createRateioDeCredito(RateioDeCredito rateioDeCredito) { throw new UnsupportedOperationException("Não necessário..."); } @Override protected void createTrailler(RodapeRemessa trailler) { RodapeRemessaBancoBrasil rodapeRemessaBancoBrasil = (RodapeRemessaBancoBrasil) trailler; createTraillerLote(rodapeRemessaBancoBrasil.getRodapeRemessaLoteBancoBrasil()); Record traillerArquivo = getFlatFile().createRecord("TraillerArquivo"); String loteValue = getFlatFile().getRecord("HeaderArquivo").getValue("LoteServico").toString(); //traillerArquivo.setValue("IDReg", FormataUtil.formatarValorPorTamanho("001", 3)); if(!loteValue.equals("0000")){ traillerArquivo.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(loteValue, 4)); }else{ //traillerArquivo.setValue("LoteServico", FormataUtil.formatarValorPorTamanho("9999", 4)); } //traillerArquivo.setValue("TipoRegistro", FormataUtil.formatarValorPorTamanho("9", 1)); //traillerArquivo.setValue("UsoExclusivo1", FormataUtil.formatarValorPorTamanho(" ", 9)); traillerArquivo.setValue("QtdLotes", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaBancoBrasil.getQtdLotes().toString(), 6)); traillerArquivo.setValue("QtdArquivos", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaBancoBrasil.getQtdArquivos().toString(), 6)); traillerArquivo.setValue("QtdContas", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaBancoBrasil.getQtdContas().toString(), 6)); //traillerArquivo.setValue("UsoExclusivo2", FormataUtil.formatarValorPorTamanho(" ", 205)); getFlatFile().addRecord(traillerArquivo); } private void createTraillerLote(RodapeRemessaLoteBancoBrasil rodapeRemessaLoteBancoBrasil) { Record traillerArquivo = getFlatFile().createRecord("TraillerLote"); //traillerArquivo.setValue("IDReg", FormataUtil.formatarValorPorTamanho("001", 3)); traillerArquivo.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaLoteBancoBrasil.getLoteServico().toString(), 4)); //traillerArquivo.setValue("TipoRegistro", FormataUtil.formatarValorPorTamanho("5", 1)); //traillerArquivo.setValue("UsoExclusivo1", FormataUtil.formatarValorPorTamanho(" ", 9)); traillerArquivo.setValue("QtdRegistros", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaLoteBancoBrasil.getQtdRegistros().toString(), 6)); //traillerArquivo.setValue("UsoExclusivo2", FormataUtil.formatarValorPorTamanho(" ", 217)); getFlatFile().addRecord(traillerArquivo); } @Override protected CabecalhoRetorno readHeader(Record header) { // TODO Auto-generated method stub return null; } @Override protected List readTransacaoTitulos(Collection registrosDeTransacoes) { // TODO Auto-generated method stub return null; } @Override protected RodapeRetorno readTrailler(Record trailler) { // TODO Auto-generated method stub return null; } }