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.sicoob.CabecalhoLoteRemessaSicoob; import com.rjconsultores.ventaboletos.blocos.sicoob.CabecalhoRemessaSicoob; import com.rjconsultores.ventaboletos.blocos.sicoob.DetalheObrigatorioDadosPagadorSicoob; import com.rjconsultores.ventaboletos.blocos.sicoob.DetalheObrigatorioSicoob; import com.rjconsultores.ventaboletos.blocos.sicoob.RodapeRemessaLoteSicoob; import com.rjconsultores.ventaboletos.blocos.sicoob.RodapeRemessaSicoob; import com.rjconsultores.ventaboletos.enuns.BancoLayout; import com.rjconsultores.ventaboletos.utils.FormataUtil; public class SicoobFlatFile extends AbstractFlatFile implements RemessaInterface { public SicoobFlatFile() { super(BancoLayout.SICOOB_240_Envio); } @Override protected void createHeader(CabecalhoRemessa cabecalhoRemessaParam) { Record header = getFlatFile().createRecord("HeaderArquivo"); CabecalhoRemessaSicoob cabecalhoRemessa = (CabecalhoRemessaSicoob) cabecalhoRemessaParam; header.setValue("CpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getCpfCnpj().toString(), 1)); header.setValue("NumCpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumCpfCnpj(), 14)); 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("NomeEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNomeEmpresa(), 30)); header.setValue("NumRemessa", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoRemessa.getNumRemessa().toString(), 6)); header.setValue("DataGeracao", FormataUtil.formataDataToString(cabecalhoRemessa.getDataGravacao(), "000000", "ddMMyyyy")); header.setValue("HoraGeracao", FormataUtil.formataDataToString(cabecalhoRemessa.getDataGravacao(), "000000", "HHmmss")); getFlatFile().addRecord(header); createHeaderLote(cabecalhoRemessa.getCabecalhoLoteRemessaSicoob()); } private void createHeaderLote(CabecalhoLoteRemessaSicoob cabecalhoLote) { Record header = getFlatFile().createRecord("HeaderLote"); if(cabecalhoLote.getLoteServico() != null){ header.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoLote.getLoteServico().toString(), 4)); } header.setValue("NumCpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumCpfCnpj(), 14)); header.setValue("CpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getCpfCnpj().toString(), 1)); 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("NomeEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNomeEmpresa(), 30)); header.setValue("NumeroRemessa", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoLote.getNumeroRemessa().toString(), 8)); header.setValue("DataGeracao", FormataUtil.formataData(cabecalhoLote.getDataGeracao())); // header.setValue("DataCredito", FormataUtil.formataData(cabecalhoLote.getDataCredito())); getFlatFile().addRecord(header); } @Override protected void createTransacaoTitulos(DetalheObrigatorio tituloParam) { Record transacaoTitulos = getFlatFile().createRecord("SegmentoP"); DetalheObrigatorioSicoob dadosTitulos = (DetalheObrigatorioSicoob) tituloParam; if(dadosTitulos.getLoteServico() != null){ transacaoTitulos.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulos.getLoteServico().toString(), 4)); } transacaoTitulos.setValue("NumSeqRegistro", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulos.getNumSeqRegistro().toString(), 5)); transacaoTitulos.setValue("NumAgencia", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNumAgencia(), 5)); transacaoTitulos.setValue("DigAgencia", FormataUtil.formatarValorPorTamanho(dadosTitulos.getDigAgencia(), 1)); transacaoTitulos.setValue("NumContaCorrente", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNumContaCorrente(), 12)); transacaoTitulos.setValue("DigContaCorrente", FormataUtil.formatarValorPorTamanho(dadosTitulos.getDigContaCorrente(), 1)); transacaoTitulos.setValue("NossoNumero", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNossoNumero(), 20)); transacaoTitulos.setValue("CodCarteira",dadosTitulos.getCodCarteira()); transacaoTitulos.setValue("NumeroDoDocumento", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNumeroDoDocumento(), 15)); transacaoTitulos.setValue("Vencimento", FormataUtil.formataData(dadosTitulos.getVencimento())); transacaoTitulos.setValue("Valor", dadosTitulos.getValor()); transacaoTitulos.setValue("Emissao", FormataUtil.formataData(dadosTitulos.getEmissao())); transacaoTitulos.setValue("CodMora", FormataUtil.formatarValorPorTamanho(dadosTitulos.getCodMora().toString(), 1)); transacaoTitulos.setValue("DataMora", FormataUtil.formataDataToString(dadosTitulos.getDataMora(), "00000000")); transacaoTitulos.setValue("JurosDeMora", dadosTitulos.getJurosDeMora()); transacaoTitulos.setValue("CodigoDesconto", FormataUtil.formatarValorPorTamanho(dadosTitulos.getCodigoDesconto().toString(), 1)); transacaoTitulos.setValue("DataDesconto", FormataUtil.formataDataToString(dadosTitulos.getDataDesconto(), "00000000")); transacaoTitulos.setValue("DescontoConcedido", dadosTitulos.getDescontoConcedido()); transacaoTitulos.setValue("IOF_Devido", dadosTitulos.getIofDevido()); transacaoTitulos.setValue("AbatimentoConcedido", dadosTitulos.getAbatimentoConcedido()); transacaoTitulos.setValue("NossoNumeroEmp", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNossoNumeroEmp(), 25)); transacaoTitulos.setValue("CodigoProtesto", FormataUtil.formatarValorPorTamanho(dadosTitulos.getCodigoProtesto().toString(), 1)); transacaoTitulos.setValue("DiasProtesto", FormataUtil.formatarValorPorTamanho(dadosTitulos.getDiasProtesto().toString(), 2)); transacaoTitulos.setValue("NumeroContrato", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulos.getNumeroContrato().toString(), 10)); getFlatFile().addRecord(transacaoTitulos); createTransacaoTitulosSeguimentoQ(transacaoTitulos, dadosTitulos.getDetalheObrigatorioDadosPagadorSicoob()); } private void createTransacaoTitulosSeguimentoQ(Record recordFather, DetalheObrigatorioDadosPagadorSicoob dadosPagadorSicoobl) { Record transacaoTitulos = getFlatFile().createRecord("SegmentoQ"); if(dadosPagadorSicoobl.getLoteServico() != null){ transacaoTitulos.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorSicoobl.getLoteServico().toString(), 4)); } transacaoTitulos.setValue("NumSeqRegistro", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorSicoobl.getNumeroSequencialRegistro().toString(), 5)); transacaoTitulos.setValue("TipoInscricaoSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getTipoInscricaoSacado().toString(), 1)); transacaoTitulos.setValue("NumeroInscricaoSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getNumeroInscricaoSacado(), 15)); transacaoTitulos.setValue("NomeSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getNomeSacado(), 40)); transacaoTitulos.setValue("LogradouroSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getLogradouroSacado(), 40)); transacaoTitulos.setValue("BairroSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getBairroSacado(), 15)); transacaoTitulos.setValue("CepSacado", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorSicoobl.getCepSacado().toString(), 5)); transacaoTitulos.setValue("SufixoCep", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorSicoobl.getSufixoCep().toString(), 3)); transacaoTitulos.setValue("Cidade", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getCidade(), 15)); transacaoTitulos.setValue("Estado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getCveEstado(), 2)); try{ transacaoTitulos.setValue("CodBancoCorresp", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getCodBancoCorresp().toString(), 3)); }catch(Exception e){ } transacaoTitulos.setValue("NossoNumeroNoBancoCorresp", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getNossoNumeroNoBancoCorresp(), 20)); recordFather.addInnerRecord(transacaoTitulos); } @Override protected void createTrailler(RodapeRemessa trailler){ RodapeRemessaSicoob rodapeRemessaSicoob = (RodapeRemessaSicoob) trailler; createTraillerLote(rodapeRemessaSicoob.getRodapeRemessaLoteSicoob()); Record traillerArquivo = getFlatFile().createRecord("TraillerArquivo"); traillerArquivo.setValue("QtdLotes", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaSicoob.getQtdLotes().toString(), 6)); traillerArquivo.setValue("QtdArquivos", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaSicoob.getQtdArquivos().toString(), 6)); traillerArquivo.setValue("QtdContas", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaSicoob.getQtdContas().toString(), 6)); getFlatFile().addRecord(traillerArquivo); } private void createTraillerLote(RodapeRemessaLoteSicoob rodapeRemessaLoteSicoob) { Record traillerArquivo = getFlatFile().createRecord("TraillerLote"); if(rodapeRemessaLoteSicoob.getLoteServico() != null){ traillerArquivo.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaLoteSicoob.getLoteServico().toString(), 4)); } traillerArquivo.setValue("QtdTitulosSimples", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaLoteSicoob.getQtdRegistros().toString(), 6)); traillerArquivo.setValue("ValorTitulosSimples", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaLoteSicoob.getValorRegistros().toString(), 15) ); getFlatFile().addRecord(traillerArquivo); } @Override protected CabecalhoRetorno readHeader(Record header) { throw new UnsupportedOperationException("Somente classe de Retorno."); } @Override protected List readTransacaoTitulos(Collection registrosDeTransacoes) { throw new UnsupportedOperationException("Somente classe de Retorno."); } @Override protected RodapeRetorno readTrailler(Record trailler) { throw new UnsupportedOperationException("Somente classe de Retorno."); } @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..."); } }