AdmMono/GeneradorBoletosCNAB/src/com/rjconsultores/ventaboletos/layouts/BancoBrasilFlatFile.java

281 lines
19 KiB
Java

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<DetalheRetorno> readTransacaoTitulos(Collection<Record> registrosDeTransacoes) {
// TODO Auto-generated method stub
return null;
}
@Override
protected RodapeRetorno readTrailler(Record trailler) {
// TODO Auto-generated method stub
return null;
}
}