package com.rjconsultores.ventaboletos.layouts; import java.math.BigDecimal; 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.caixa.CabecalhoRemessaCaixa; import com.rjconsultores.ventaboletos.blocos.caixa.DetalheObrigatorioCaixa; import com.rjconsultores.ventaboletos.enuns.BancoLayout; import com.rjconsultores.ventaboletos.utils.FormataUtil; public class CaixaFlatFile extends AbstractFlatFile implements RemessaInterface { private static BigDecimal valorTotal = BigDecimal.ZERO; private static Integer quantidadeRegistro = 0; public CaixaFlatFile() { super(BancoLayout.CAIXA_400_Envio); valorTotal = BigDecimal.ZERO; quantidadeRegistro = 0; } @Override protected void createHeader(CabecalhoRemessa cabecalhoRemessaParam) { Record header = getFlatFile().createRecord("Header"); CabecalhoRemessaCaixa cabecalhoRemessa = (CabecalhoRemessaCaixa) cabecalhoRemessaParam; header.setValue("AgenciaBeneficiario", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getAgenciaBeneficiario(), 4)); header.setValue("NomeEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNomeEmpresa(), 30)); header.setValue("Beneficiario", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getCodigoEmpresa(), 7)); header.setValue("versaoLayout", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getVersaoLayout(), 3)); header.setValue("DataGravacao", FormataUtil.formataDataToString(cabecalhoRemessa.getDataGravacao(), "000000", "ddMMyy")); header.setValue("NumeroSequencialRemessa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumeroSequencialRemessa().toString(), 7)); quantidadeRegistro = quantidadeRegistro + 1; getFlatFile().addRecord(header); } @Override protected void createTransacaoTitulos(DetalheObrigatorio tituloParam) { Record transacaoTitulos = getFlatFile().createRecord("TransacaoTitulo"); DetalheObrigatorioCaixa titulo = (DetalheObrigatorioCaixa) tituloParam; transacaoTitulos.setValue("NumeroInscricao", FormataUtil.formatarValorPorTamanho(titulo.getNumeroInscricao().toString(), 14)); transacaoTitulos.setValue("NossoNumero", FormataUtil.formatarValorPorTamanho(titulo.getNossoNumero(), 8)); transacaoTitulos.setValue("DataJuros", FormataUtil.formataDataToString(titulo.getVencimento(), "000000", "ddMMyy")); transacaoTitulos.setValue("NumeroDoDocumento", FormataUtil.formatarValorPorTamanho(titulo.getNumeroDoDocumento(), 10)); transacaoTitulos.setValue("Vencimento", FormataUtil.formataDataToString(titulo.getVencimento(), "000000", "ddMMyy")); transacaoTitulos.setValue("ValorTitulo", titulo.getValor()); transacaoTitulos.setValue("DataEmissao", FormataUtil.formataDataToString(titulo.getEmissao(), "000000", "ddMMyy")); transacaoTitulos.setValue("ValorJuros", titulo.getValorAtraso()); transacaoTitulos.setValue("DataDesconto", FormataUtil.formataDataToString(titulo.getDataLimiteDesconto(), "000000", "ddMMyy")); transacaoTitulos.setValue("ValorDesconto", titulo.getValorDesconto()); transacaoTitulos.setValue("ValorIOF", titulo.getValorIOF()); transacaoTitulos.setValue("ValorAbatimento", titulo.getValorAbatimentoConcedido()); transacaoTitulos.setValue("AgenciaCobradora", FormataUtil.formatarValorPorTamanho("", 6)); transacaoTitulos.setValue("TipoSacado", FormataUtil.formatarValorPorTamanho(titulo.getTipoInscricaoPagador().toString(), 2)); transacaoTitulos.setValue("DocumentoSacado", FormataUtil.formatarValorPorTamanho(titulo.getNumeroInscricaoSacado().toString(), 14)); transacaoTitulos.setValue("NomeSacado", FormataUtil.formatarValorPorTamanho(titulo.getNomeSacado(), 40)); transacaoTitulos.setValue("EnderecoSacado", FormataUtil.formatarValorPorTamanho(titulo.getEnderecoSacado(), 40)); transacaoTitulos.setValue("BairroSacado", FormataUtil.formatarValorPorTamanho(titulo.getBairroSacado(), 12)); transacaoTitulos.setValue("CepSacado", FormataUtil.formatarValorPorTamanho(titulo.getCepSacado().toString(), 8)); transacaoTitulos.setValue("CidadeSacado", FormataUtil.formatarValorPorTamanho(titulo.getCidade(), 15)); transacaoTitulos.setValue("EstadoSacado", FormataUtil.formatarValorPorTamanho(titulo.getEstado(), 2)); transacaoTitulos.setValue("DataMulta", FormataUtil.formataDataToString(titulo.getVencimento(), "000000", "ddMMyy")); transacaoTitulos.setValue("ValorMulta", titulo.getValorMulta()); transacaoTitulos.setValue("SacadorAvalista", FormataUtil.formatarValorPorTamanho(titulo.getSacadorAvalista(), 30)); transacaoTitulos.setValue("NumeroSequencialRegistro", FormataUtil.formatarValorPorTamanho(titulo.getNumeroSequencialRegistro().toString(), 6)); valorTotal = valorTotal.add(titulo.getValor()); quantidadeRegistro = quantidadeRegistro + 1; getFlatFile().addRecord(transacaoTitulos); } @Override protected void createTrailler(RodapeRemessa trailler){ Record trailer = getFlatFile().createRecord("Trailler"); trailer.setValue("NumeroSequencialRegistro", FormataUtil.formatarValorPorTamanho(trailler.getNumeroSequencialRegistro().toString(), 6)); getFlatFile().addRecord(trailer); } @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..."); } }