From 7055b75a36fc5be9f20666927c24488b44daa383 Mon Sep 17 00:00:00 2001 From: gleimar Date: Wed, 8 Nov 2017 21:07:41 +0000 Subject: [PATCH] git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/GeneradorBoletosCNAB/trunk@76219 d1611594-4594-4d17-8e1d-87c2c4800839 --- .classpath | 21 + .project | 36 ++ .settings/org.eclipse.jdt.core.prefs | 13 + .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 95 +++++ .../ventaboletos/ArquivoRemessa.java | 49 +++ .../ventaboletos/ArquivoRemessaItem.java | 44 ++ .../ArquivoRemessaItemInteface.java | 23 + .../ventaboletos/ArquivoRetorno.java | 26 ++ .../ventaboletos/ArquivoRetornoItem.java | 48 +++ .../ArquivoRetornoItemInteface.java | 23 + src/com/rjconsultores/ventaboletos/Main.java | 97 +++++ .../ventaboletos/blocos/CabecalhoRemessa.java | 10 + .../ventaboletos/blocos/CabecalhoRetorno.java | 21 + .../ventaboletos/blocos/DadosBoleto.java | 78 ++++ .../blocos/DetalheObrigatorio.java | 9 + .../ventaboletos/blocos/DetalheRetorno.java | 39 ++ .../ventaboletos/blocos/RateioDeCredito.java | 20 + .../ventaboletos/blocos/RodapeRemessa.java | 15 + .../ventaboletos/blocos/RodapeRetorno.java | 5 + .../bradesco/ArquivoRemessaBradesco.java | 36 ++ .../bradesco/CabecalhoRemessaBradesco.java | 95 +++++ .../bradesco/DetalheObrigatorioBradesco.java | 285 +++++++++++++ .../blocos/itau/ArquivoRemessaItau.java | 35 ++ .../blocos/itau/CabecalhoRemessaItau.java | 125 ++++++ .../blocos/itau/DetalheObrigatorioItau.java | 361 ++++++++++++++++ .../ventaboletos/enuns/BancoLayout.java | 49 +++ .../enuns/MotivoOcorrenciaBradesco.java | 333 +++++++++++++++ .../enuns/MotivoOcorrenciaItau.java | 152 +++++++ .../enuns/OcorrenciaBradesco.java | 48 +++ .../ventaboletos/enuns/OcorrenciaItau.java | 126 ++++++ .../enuns/TipoInscricaoPagador.java | 49 +++ .../layouts/AbstractFlatFile.java | 402 ++++++++++++++++++ .../layouts/BradescoFlatFile.java | 142 +++++++ .../layouts/BradescoProcessaRetorno.java | 138 ++++++ .../ventaboletos/layouts/CNABFactory.java | 37 ++ .../ventaboletos/layouts/ItauFlatFile.java | 160 +++++++ .../layouts/RemessaInterface.java | 15 + .../ventaboletos/layouts/RetornoInteface.java | 12 + .../ventaboletos/utils/FormataUtil.java | 27 ++ .../ventaboletos/utils/NossoNumeroUtils.java | 172 ++++++++ .../LayoutBradescoCNAB400Envio.txg.xml | 127 ++++++ .../LayoutBradescoCNAB400Retorno.txg.xml | 124 ++++++ ...ayoutBradescoCNAB400RetornoParaLer.txg.xml | 124 ++++++ ...adescoCNAB400RetornoParaReEscrever.txg.xml | 68 +++ src/layouts/LayoutItauCNAB400Envio.txg.xml | 133 ++++++ src/layouts/LayoutItauCNAB400Retorno.txg.xml | 131 ++++++ 47 files changed, 4182 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/com/rjconsultores/ventaboletos/ArquivoRemessa.java create mode 100644 src/com/rjconsultores/ventaboletos/ArquivoRemessaItem.java create mode 100644 src/com/rjconsultores/ventaboletos/ArquivoRemessaItemInteface.java create mode 100644 src/com/rjconsultores/ventaboletos/ArquivoRetorno.java create mode 100644 src/com/rjconsultores/ventaboletos/ArquivoRetornoItem.java create mode 100644 src/com/rjconsultores/ventaboletos/ArquivoRetornoItemInteface.java create mode 100644 src/com/rjconsultores/ventaboletos/Main.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/CabecalhoRemessa.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/CabecalhoRetorno.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/DadosBoleto.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/DetalheObrigatorio.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/DetalheRetorno.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/RateioDeCredito.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/RodapeRemessa.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/RodapeRetorno.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/bradesco/ArquivoRemessaBradesco.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/bradesco/CabecalhoRemessaBradesco.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/bradesco/DetalheObrigatorioBradesco.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/itau/ArquivoRemessaItau.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/itau/CabecalhoRemessaItau.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/itau/DetalheObrigatorioItau.java create mode 100644 src/com/rjconsultores/ventaboletos/enuns/BancoLayout.java create mode 100644 src/com/rjconsultores/ventaboletos/enuns/MotivoOcorrenciaBradesco.java create mode 100644 src/com/rjconsultores/ventaboletos/enuns/MotivoOcorrenciaItau.java create mode 100644 src/com/rjconsultores/ventaboletos/enuns/OcorrenciaBradesco.java create mode 100644 src/com/rjconsultores/ventaboletos/enuns/OcorrenciaItau.java create mode 100644 src/com/rjconsultores/ventaboletos/enuns/TipoInscricaoPagador.java create mode 100644 src/com/rjconsultores/ventaboletos/layouts/AbstractFlatFile.java create mode 100644 src/com/rjconsultores/ventaboletos/layouts/BradescoFlatFile.java create mode 100644 src/com/rjconsultores/ventaboletos/layouts/BradescoProcessaRetorno.java create mode 100644 src/com/rjconsultores/ventaboletos/layouts/CNABFactory.java create mode 100644 src/com/rjconsultores/ventaboletos/layouts/ItauFlatFile.java create mode 100644 src/com/rjconsultores/ventaboletos/layouts/RemessaInterface.java create mode 100644 src/com/rjconsultores/ventaboletos/layouts/RetornoInteface.java create mode 100644 src/com/rjconsultores/ventaboletos/utils/FormataUtil.java create mode 100644 src/com/rjconsultores/ventaboletos/utils/NossoNumeroUtils.java create mode 100644 src/layouts/LayoutBradescoCNAB400Envio.txg.xml create mode 100644 src/layouts/LayoutBradescoCNAB400Retorno.txg.xml create mode 100644 src/layouts/LayoutBradescoCNAB400RetornoParaLer.txg.xml create mode 100644 src/layouts/LayoutBradescoCNAB400RetornoParaReEscrever.txg.xml create mode 100644 src/layouts/LayoutItauCNAB400Envio.txg.xml create mode 100644 src/layouts/LayoutItauCNAB400Retorno.txg.xml diff --git a/.classpath b/.classpath new file mode 100644 index 000000000..f3fd3b4ab --- /dev/null +++ b/.classpath @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 000000000..d3e6ad25a --- /dev/null +++ b/.project @@ -0,0 +1,36 @@ + + + GeneradorBoletosCNAB + + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..6472c7cc0 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 000000000..14b697b7b --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 000000000..2614b1542 --- /dev/null +++ b/pom.xml @@ -0,0 +1,95 @@ + + 4.0.0 + br.com.rjconsultores + GeneradorBoletosCNAB + 0.0.1-SNAPSHOT + + + src + + + src + + **/*.java + + + + + + maven-compiler-plugin + 3.3 + + 1.6 + 1.6 + + + + maven-assembly-plugin + + + package + + single + + + + + + jar-with-dependencies + + + + + ${project.artifactId} + + + + + org.apache.logging.log4j + log4j-api + 2.9.0 + + + org.apache.logging.log4j + log4j-core + 2.9.0 + + + + commons-lang + commons-lang + 2.4 + + + + commons-io + commons-io + 1.4 + + + com.itextpdf + itextpdf + 5.0.6 + + + br.com.rjconsultores + JRimum-Bopepo + 0.2.3 + + + br.com.rjconsultores + JRimum-Texgit + 0.2.0 + + + diff --git a/src/com/rjconsultores/ventaboletos/ArquivoRemessa.java b/src/com/rjconsultores/ventaboletos/ArquivoRemessa.java new file mode 100644 index 000000000..1a0b0f41c --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/ArquivoRemessa.java @@ -0,0 +1,49 @@ +package com.rjconsultores.ventaboletos; + +import java.util.ArrayList; +import java.util.List; + +import com.rjconsultores.ventaboletos.enuns.BancoLayout; + +public class ArquivoRemessa { + + private BancoLayout bancoLayout; + private String nomeArquivo; + private List itens; + + public ArquivoRemessa(BancoLayout bancoLayout) { + this.bancoLayout = bancoLayout; + } + + public BancoLayout getBancoLayout() { + return bancoLayout; + } + + public String getNomeArquivo() { + return nomeArquivo; + } + + public void setNomeArquivo(String nomeArquivo) { + this.nomeArquivo = nomeArquivo; + } + + public List getItens() { + return itens; + } + + public void setItens(List itens) { + this.itens = itens; + } + + public void addItem(ArquivoRemessaItemInteface item) { + + if(this.itens == null){ + this.itens = new ArrayList(); + } + + item.getCabecalhoRemessa().setNumeroSequencialRegistro(itens.size() + 1); + + this.itens.add(item); + } + +} diff --git a/src/com/rjconsultores/ventaboletos/ArquivoRemessaItem.java b/src/com/rjconsultores/ventaboletos/ArquivoRemessaItem.java new file mode 100644 index 000000000..202606cf2 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/ArquivoRemessaItem.java @@ -0,0 +1,44 @@ +package com.rjconsultores.ventaboletos; + +import java.util.List; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; +import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; + +public abstract class ArquivoRemessaItem implements ArquivoRemessaItemInteface, Cloneable{ + + protected CabecalhoRemessa cabecalhoRemessa; + protected List titulos; + protected RodapeRemessa rodapeRemessa; + + + public CabecalhoRemessa getCabecalhoRemessa() { + return cabecalhoRemessa; + } + public void setCabecalhoRemessa(CabecalhoRemessa cabecalhoRemessa) { + this.cabecalhoRemessa = cabecalhoRemessa; + } + public List getTitulos() { + return titulos; + } + public RodapeRemessa getRodapeRemessa() { + this.rodapeRemessa = this.rodapeRemessa == null ? new RodapeRemessa() : this.rodapeRemessa; + rodapeRemessa.setNumeroSequencialRegistro(titulos.size()); + return rodapeRemessa; + } + public void setRodapeRemessa(RodapeRemessa rodapeRemessa) { + this.rodapeRemessa = rodapeRemessa == null ? new RodapeRemessa() : rodapeRemessa; + this.rodapeRemessa = rodapeRemessa; + } + + public abstract void addTitulo(DetalheObrigatorio titulo); + + + public ArquivoRemessaItemInteface clone() throws CloneNotSupportedException { + // TODO Auto-generated method stub + return (ArquivoRemessaItemInteface) super.clone(); + } + + +} diff --git a/src/com/rjconsultores/ventaboletos/ArquivoRemessaItemInteface.java b/src/com/rjconsultores/ventaboletos/ArquivoRemessaItemInteface.java new file mode 100644 index 000000000..c82b71add --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/ArquivoRemessaItemInteface.java @@ -0,0 +1,23 @@ +package com.rjconsultores.ventaboletos; + +import java.util.List; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; +import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; + +public interface ArquivoRemessaItemInteface { + + public void setCabecalhoRemessa(CabecalhoRemessa cabecalhoRemessa); + + public void addTitulo(DetalheObrigatorio titulo); + + public void setRodapeRemessa(RodapeRemessa rodapeRemessa); + + public CabecalhoRemessa getCabecalhoRemessa(); + + public List getTitulos(); + + public RodapeRemessa getRodapeRemessa(); + +} \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/ArquivoRetorno.java b/src/com/rjconsultores/ventaboletos/ArquivoRetorno.java new file mode 100644 index 000000000..350c5c66f --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/ArquivoRetorno.java @@ -0,0 +1,26 @@ +package com.rjconsultores.ventaboletos; + +import java.util.ArrayList; +import java.util.List; + +public class ArquivoRetorno { + + private List itens; + + public List getItens() { + return itens; + } + + public void setItens(List itens) { + this.itens = itens; + } + + public void addItem(ArquivoRetornoItemInteface item) { + + if(this.itens == null){ + this.itens = new ArrayList(); + } + + this.itens.add(item); + } +} diff --git a/src/com/rjconsultores/ventaboletos/ArquivoRetornoItem.java b/src/com/rjconsultores/ventaboletos/ArquivoRetornoItem.java new file mode 100644 index 000000000..d7c9f8bd0 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/ArquivoRetornoItem.java @@ -0,0 +1,48 @@ +package com.rjconsultores.ventaboletos; + +import java.util.ArrayList; +import java.util.List; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRetorno; +import com.rjconsultores.ventaboletos.blocos.DetalheRetorno; +import com.rjconsultores.ventaboletos.blocos.RodapeRetorno; + +public class ArquivoRetornoItem implements ArquivoRetornoItemInteface, Cloneable { + + + private CabecalhoRetorno cabecalhoRetorno; + protected List titulos; + protected RodapeRetorno rodapeRetorno; + + + @Override + public void setCabecalhoRetorno(CabecalhoRetorno cabecalhoRetorno) { + this.cabecalhoRetorno = cabecalhoRetorno; + + } + @Override + public void addTitulo(DetalheRetorno titulo) { + if(this.titulos == null){ + this.titulos = new ArrayList(); + } + this.titulos.add(titulo); + + } + @Override + public void setRodapeRetorno(RodapeRetorno rodapeRetorno) { + this.rodapeRetorno = rodapeRetorno; + } + + @Override + public CabecalhoRetorno getCabecalhoRetorno() { + return cabecalhoRetorno; + } + @Override + public List getTitulos() { + return titulos; + } + @Override + public RodapeRetorno getRodapeRetorno() { + return rodapeRetorno; + } +} diff --git a/src/com/rjconsultores/ventaboletos/ArquivoRetornoItemInteface.java b/src/com/rjconsultores/ventaboletos/ArquivoRetornoItemInteface.java new file mode 100644 index 000000000..86638f8e3 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/ArquivoRetornoItemInteface.java @@ -0,0 +1,23 @@ +package com.rjconsultores.ventaboletos; + +import java.util.List; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRetorno; +import com.rjconsultores.ventaboletos.blocos.DetalheRetorno; +import com.rjconsultores.ventaboletos.blocos.RodapeRetorno; + +public interface ArquivoRetornoItemInteface { + + public void setCabecalhoRetorno(CabecalhoRetorno cabecalhoRetorno); + + public void addTitulo(DetalheRetorno titulo); + + public void setRodapeRetorno(RodapeRetorno rodapeRetorno); + + public CabecalhoRetorno getCabecalhoRetorno(); + + public List getTitulos(); + + public RodapeRetorno getRodapeRetorno(); + +} diff --git a/src/com/rjconsultores/ventaboletos/Main.java b/src/com/rjconsultores/ventaboletos/Main.java new file mode 100644 index 000000000..895d4c522 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/Main.java @@ -0,0 +1,97 @@ +package com.rjconsultores.ventaboletos; + +import java.io.File; +import java.math.BigDecimal; +import java.util.Date; + +import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; +import com.rjconsultores.ventaboletos.blocos.bradesco.ArquivoRemessaBradesco; +import com.rjconsultores.ventaboletos.blocos.bradesco.CabecalhoRemessaBradesco; +import com.rjconsultores.ventaboletos.blocos.bradesco.DetalheObrigatorioBradesco; +import com.rjconsultores.ventaboletos.enuns.BancoLayout; +import com.rjconsultores.ventaboletos.enuns.MotivoOcorrenciaBradesco; +import com.rjconsultores.ventaboletos.enuns.OcorrenciaBradesco; +import com.rjconsultores.ventaboletos.enuns.TipoInscricaoPagador; +import com.rjconsultores.ventaboletos.layouts.BradescoFlatFile; +import com.rjconsultores.ventaboletos.layouts.RemessaInterface; + +public class Main { + + public static void main(String[] args) { + + ArquivoRemessaItem arquivoRemessaItem = new ArquivoRemessaBradesco(); + + + + CabecalhoRemessaBradesco cabecalhoRemessa = new CabecalhoRemessaBradesco(); + + //cabecalhoRemessa.setCodigoBanco("123"); + cabecalhoRemessa.setCodigoEmpresa("123456"); + //cabecalhoRemessa.setCodigoServico("1222"); + //cabecalhoRemessa.setLiteralRemessa("REMESSA"); + cabecalhoRemessa.setDataGravacao(new Date()); + //cabecalhoRemessa.setLiteralServico("COBRANCA"); + cabecalhoRemessa.setNumeroSequencialRemessa(1); + cabecalhoRemessa.setNumeroSequencialRegistro(9); + cabecalhoRemessa.setNomeEmpresa("RJ Consultores"); + + arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessa); + + DetalheObrigatorioBradesco tituloBradesco = new DetalheObrigatorioBradesco(); + + tituloBradesco.setValor(BigDecimal.TEN); + tituloBradesco.setVencimento(new Date()); + tituloBradesco.setTipoInscricaoPagador(TipoInscricaoPagador.getInstanceByName("cpf")); + tituloBradesco.setNumeroInscricaoPagador(new Long(1452265658)); + tituloBradesco.setCEP_Prefixo("32015"); + tituloBradesco.setCEP_Sufixo("490"); + //tituloBradesco.setOrigemDoPagamento(999); + + + try { + arquivoRemessaItem.addTitulo(tituloBradesco.clone()); + arquivoRemessaItem.addTitulo(tituloBradesco.clone()); + arquivoRemessaItem.addTitulo(tituloBradesco.clone()); + arquivoRemessaItem.addTitulo(tituloBradesco.clone()); + arquivoRemessaItem.addTitulo(tituloBradesco.clone()); + arquivoRemessaItem.addTitulo(tituloBradesco.clone()); + arquivoRemessaItem.addTitulo(tituloBradesco.clone()); + } catch (CloneNotSupportedException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + + RemessaInterface remessaInterface = new BradescoFlatFile(); + + RodapeRemessa rodapeRemessa = new RodapeRemessa(); + rodapeRemessa.setNumeroSequencialRegistro(9999); + + arquivoRemessaItem.setRodapeRemessa(rodapeRemessa); + + File arquivoRemessaFisico = new File("C:\\Users\\Rafael\\rafael.txt"); + + + OcorrenciaBradesco oco = OcorrenciaBradesco.getInstance("02"); + MotivoOcorrenciaBradesco mo = MotivoOcorrenciaBradesco.getInstance(oco, "00"); + System.out.println(mo.getMotivo()); + + ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.BRADESCO_Envio); + + try { + arquivoRemessa.addItem(arquivoRemessaItem.clone()); + arquivoRemessa.addItem(arquivoRemessaItem.clone()); + } catch (CloneNotSupportedException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + try { + remessaInterface.gerarRemessa(arquivoRemessaFisico, arquivoRemessa); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/CabecalhoRemessa.java b/src/com/rjconsultores/ventaboletos/blocos/CabecalhoRemessa.java new file mode 100644 index 000000000..a621dfd9b --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/CabecalhoRemessa.java @@ -0,0 +1,10 @@ +package com.rjconsultores.ventaboletos.blocos; + +public interface CabecalhoRemessa { + + public Integer getNumeroSequencialRemessa(); + public void setNumeroSequencialRemessa(Integer numeroSequencialRemessa); + public Integer getNumeroSequencialRegistro(); + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro); + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/CabecalhoRetorno.java b/src/com/rjconsultores/ventaboletos/blocos/CabecalhoRetorno.java new file mode 100644 index 000000000..dd35213c9 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/CabecalhoRetorno.java @@ -0,0 +1,21 @@ +package com.rjconsultores.ventaboletos.blocos; + +public class CabecalhoRetorno { + + private String codEmpresa; + private String numeroDoAvisoBancario; + + public String getCodEmpresa() { + return codEmpresa; + } + public void setCodEmpresa(String codEmpresa) { + this.codEmpresa = codEmpresa; + } + public String getNumeroDoAvisoBancario() { + return numeroDoAvisoBancario; + } + public void setNumeroDoAvisoBancario(String numeroDoAvisoBancario) { + this.numeroDoAvisoBancario = numeroDoAvisoBancario; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/DadosBoleto.java b/src/com/rjconsultores/ventaboletos/blocos/DadosBoleto.java new file mode 100644 index 000000000..6e578760f --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/DadosBoleto.java @@ -0,0 +1,78 @@ +package com.rjconsultores.ventaboletos.blocos; + +public class DadosBoleto { + + private String mensagem1; + private String mensagem2; + private String mensagem3; + private String mensagem4; + private Integer carteira; + private Integer agencia; + private Integer contaCorrente; + private String digitoCC; + private String nossoNumero; + private String digitoNN; + + public String getMensagem1() { + return mensagem1; + } + public void setMensagem1(String mensagem1) { + this.mensagem1 = mensagem1; + } + public String getMensagem2() { + return mensagem2; + } + public void setMensagem2(String mensagem2) { + this.mensagem2 = mensagem2; + } + public String getMensagem3() { + return mensagem3; + } + public void setMensagem3(String mensagem3) { + this.mensagem3 = mensagem3; + } + public String getMensagem4() { + return mensagem4; + } + public void setMensagem4(String mensagem4) { + this.mensagem4 = mensagem4; + } + public Integer getCarteira() { + return carteira; + } + public void setCarteira(Integer carteira) { + this.carteira = carteira; + } + public Integer getAgencia() { + return agencia; + } + public void setAgencia(Integer agencia) { + this.agencia = agencia; + } + public Integer getContaCorrente() { + return contaCorrente; + } + public void setContaCorrente(Integer contaCorrente) { + this.contaCorrente = contaCorrente; + } + public String getDigitoCC() { + return digitoCC; + } + public void setDigitoCC(String digitoCC) { + this.digitoCC = digitoCC; + } + public String getNossoNumero() { + return nossoNumero; + } + public void setNossoNumero(String nossoNumero) { + this.nossoNumero = nossoNumero; + } + public String getDigitoNN() { + return digitoNN; + } + public void setDigitoNN(String digitoNN) { + this.digitoNN = digitoNN; + } + + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/DetalheObrigatorio.java b/src/com/rjconsultores/ventaboletos/blocos/DetalheObrigatorio.java new file mode 100644 index 000000000..da068b503 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/DetalheObrigatorio.java @@ -0,0 +1,9 @@ +package com.rjconsultores.ventaboletos.blocos; + +public interface DetalheObrigatorio { + + public void setIdBoletoFechamento(Integer id); + public Integer getIdBoletoFechamento(); + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro); + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/DetalheRetorno.java b/src/com/rjconsultores/ventaboletos/blocos/DetalheRetorno.java new file mode 100644 index 000000000..c5597168b --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/DetalheRetorno.java @@ -0,0 +1,39 @@ +package com.rjconsultores.ventaboletos.blocos; + +import java.util.ArrayList; +import java.util.List; + +import com.rjconsultores.ventaboletos.enuns.MotivoOcorrenciaBradesco; +import com.rjconsultores.ventaboletos.enuns.OcorrenciaBradesco; + +public class DetalheRetorno { + + private String numeroControleDoParticipante; + private OcorrenciaBradesco ocorrencia; + private List motivoOcorrencias; + + public String getNumeroControleDoParticipante() { + return numeroControleDoParticipante; + } + public void setNumeroControleDoParticipante(String numeroControleDoParticipante) { + this.numeroControleDoParticipante = numeroControleDoParticipante; + } + public OcorrenciaBradesco getOcorrencia() { + return ocorrencia; + } + public void setOcorrencia(OcorrenciaBradesco ocorrencia) { + this.ocorrencia = ocorrencia; + } + public List getMotivoOcorrencias() { + return motivoOcorrencias; + } + public void addMotivoOcorrencia(MotivoOcorrenciaBradesco motivoOcorrencias) { + + if(this.motivoOcorrencias == null){ + this.motivoOcorrencias = new ArrayList(); + } + + this.motivoOcorrencias.add(motivoOcorrencias); + } + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/RateioDeCredito.java b/src/com/rjconsultores/ventaboletos/blocos/RateioDeCredito.java new file mode 100644 index 000000000..17c5c950b --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/RateioDeCredito.java @@ -0,0 +1,20 @@ +package com.rjconsultores.ventaboletos.blocos; + +public class RateioDeCredito { + + private String identificacaoEmpresa; + private String nossoNumero; + + public String getIdentificacaoEmpresa() { + return identificacaoEmpresa; + } + public void setIdentificacaoEmpresa(String identificacaoEmpresa) { + this.identificacaoEmpresa = identificacaoEmpresa; + } + public String getNossoNumero() { + return nossoNumero; + } + public void setNossoNumero(String nossoNumero) { + this.nossoNumero = nossoNumero; + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/RodapeRemessa.java b/src/com/rjconsultores/ventaboletos/blocos/RodapeRemessa.java new file mode 100644 index 000000000..930ac40d6 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/RodapeRemessa.java @@ -0,0 +1,15 @@ +package com.rjconsultores.ventaboletos.blocos; + +public class RodapeRemessa { + + private Integer numeroSequencialRegistro; + + public Integer getNumeroSequencialRegistro() { + return numeroSequencialRegistro; + } + + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + this.numeroSequencialRegistro = numeroSequencialRegistro; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/RodapeRetorno.java b/src/com/rjconsultores/ventaboletos/blocos/RodapeRetorno.java new file mode 100644 index 000000000..e41b0c7d5 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/RodapeRetorno.java @@ -0,0 +1,5 @@ +package com.rjconsultores.ventaboletos.blocos; + +public class RodapeRetorno { + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/bradesco/ArquivoRemessaBradesco.java b/src/com/rjconsultores/ventaboletos/blocos/bradesco/ArquivoRemessaBradesco.java new file mode 100644 index 000000000..708a4c636 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/bradesco/ArquivoRemessaBradesco.java @@ -0,0 +1,36 @@ +package com.rjconsultores.ventaboletos.blocos.bradesco; + +import java.util.ArrayList; + +import com.rjconsultores.ventaboletos.ArquivoRemessaItem; +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; + +public class ArquivoRemessaBradesco extends ArquivoRemessaItem { + + @Override + public void setCabecalhoRemessa(CabecalhoRemessa cabecalhoRemessa) { + + if(cabecalhoRemessa instanceof CabecalhoRemessaBradesco){ + super.setCabecalhoRemessa(cabecalhoRemessa); + }else{ + throw new ClassCastException("Somente cabecalho tipo: " + CabecalhoRemessaBradesco.class.getName()); + } + } + + @Override + public void addTitulo(DetalheObrigatorio titulo){ + if(this.titulos == null){ + this.titulos = new ArrayList(); + } + + if(titulo instanceof DetalheObrigatorioBradesco){ + + titulo.setNumeroSequencialRegistro(titulos.size() + 1); + + this.titulos.add(titulo); + }else{ + throw new ClassCastException("Somente cabecalho tipo: " + DetalheObrigatorioBradesco.class.getName()); + } + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/bradesco/CabecalhoRemessaBradesco.java b/src/com/rjconsultores/ventaboletos/blocos/bradesco/CabecalhoRemessaBradesco.java new file mode 100644 index 000000000..74dd3e467 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/bradesco/CabecalhoRemessaBradesco.java @@ -0,0 +1,95 @@ +package com.rjconsultores.ventaboletos.blocos.bradesco; + +import java.util.Date; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; + +public class CabecalhoRemessaBradesco implements CabecalhoRemessa { + + //private String identificacaoRemessa; + //private String literalRemessa; + //private String codigoServico; + //private String literalServico; + private String codigoEmpresa; + private String nomeEmpresa; + //private String codigoBanco; + //private String nomeBanco; + private Date dataGravacao; + //private String identificacaoSistema; + private Integer numeroSequencialRemessa; + private Integer numeroSequencialRegistro; + +// public String getIdentificacaoRemessa() { +// return identificacaoRemessa; +// } +// public void setIdentificacaoRemessa(String identificacaoRemessa) { +// this.identificacaoRemessa = identificacaoRemessa; +// } +// public String getLiteralRemessa() { +// return literalRemessa; +// } +// public void setLiteralRemessa(String literalRemessa) { +// this.literalRemessa = literalRemessa; +// } +// public String getCodigoServico() { +// return codigoServico; +// } +// public void setCodigoServico(String codigoServico) { +// this.codigoServico = codigoServico; +// } +// public String getLiteralServico() { +// return literalServico; +// } +// public void setLiteralServico(String literalServico) { +// this.literalServico = literalServico; +// } + public String getCodigoEmpresa() { + return codigoEmpresa; + } + public void setCodigoEmpresa(String codigoEmpresa) { + this.codigoEmpresa = codigoEmpresa; + } + public String getNomeEmpresa() { + return nomeEmpresa; + } + public void setNomeEmpresa(String nomeEmpresa) { + this.nomeEmpresa = nomeEmpresa; + } +// public String getCodigoBanco() { +// return codigoBanco; +// } +// public void setCodigoBanco(String codigoBanco) { +// this.codigoBanco = codigoBanco; +// } +// public String getNomeBanco() { +// return nomeBanco; +// } +// public void setNomeBanco(String nomeBanco) { +// this.nomeBanco = nomeBanco; +// } + public Date getDataGravacao() { + return dataGravacao; + } + public void setDataGravacao(Date dataGravacao) { + this.dataGravacao = dataGravacao; + } +// public String getIdentificacaoSistema() { +// return identificacaoSistema; +// } +// public void setIdentificacaoSistema(String identificacaoSistema) { +// this.identificacaoSistema = identificacaoSistema; +// } + public Integer getNumeroSequencialRemessa() { + return numeroSequencialRemessa; + } + public void setNumeroSequencialRemessa(Integer numeroSequencialRemessa) { + this.numeroSequencialRemessa = numeroSequencialRemessa; + } + public Integer getNumeroSequencialRegistro() { + return numeroSequencialRegistro; + } + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + this.numeroSequencialRegistro = numeroSequencialRegistro; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/bradesco/DetalheObrigatorioBradesco.java b/src/com/rjconsultores/ventaboletos/blocos/bradesco/DetalheObrigatorioBradesco.java new file mode 100644 index 000000000..ca56f7011 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/bradesco/DetalheObrigatorioBradesco.java @@ -0,0 +1,285 @@ +package com.rjconsultores.ventaboletos.blocos.bradesco; + +import java.math.BigDecimal; +import java.util.Date; + +import com.rjconsultores.ventaboletos.blocos.DadosBoleto; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; +import com.rjconsultores.ventaboletos.blocos.RateioDeCredito; +import com.rjconsultores.ventaboletos.enuns.TipoInscricaoPagador; + +public class DetalheObrigatorioBradesco implements DetalheObrigatorio, Cloneable { + + private String numeroControleDoParticipante; + private String nossoNumeroComDigito; + private Integer QtdPagamento = 0; + private Integer codigoDeOcorrencia = 0; + private Date dataOcorrencia; + private String numeroDoDocumento; + private Date vencimento; + private BigDecimal valor; + private String especieDeTitulo; + private Date emissao; + private String instrucao1; + private String instrucao2; + private BigDecimal valorAtraso = BigDecimal.ZERO; + private Date dataLimiteDesconto; + private BigDecimal valorDesconto = BigDecimal.ZERO; + private BigDecimal valorIOF = BigDecimal.ZERO; + private BigDecimal valorAbatimentoConcedido = BigDecimal.ZERO; + private TipoInscricaoPagador tipoInscricaoPagador; + private Long numeroInscricaoPagador; + private String nomePagador; + private String enderecoCompletoPagador; + private String mensagem1; + private String CEP_Prefixo; + private String CEP_Sufixo; + private String sacador_Avalista_Mensagem2; + private Integer numeroSequencialRegistro; + + private DadosBoleto dadosBoleto; + + private RateioDeCredito rateioDeCredito; + + + public String getNumeroControleDoParticipante() { + return numeroControleDoParticipante; + } + + public void setNumeroControleDoParticipante(String numeroControleDoParticipante) { + this.numeroControleDoParticipante = numeroControleDoParticipante; + } + + public String getNossoNumeroComDigito() { + return nossoNumeroComDigito; + } + + public void setNossoNumeroComDigito(String nossoNumeroComDigito) { + this.nossoNumeroComDigito = nossoNumeroComDigito; + } + + public Integer getQtdPagamento() { + return QtdPagamento; + } + + public void setQtdPagamento(Integer qtdPagamento) { + QtdPagamento = qtdPagamento; + } + + public Integer getCodigoDeOcorrencia() { + return codigoDeOcorrencia; + } + + public void setCodigoDeOcorrencia(Integer codigoDeOcorrencia) { + this.codigoDeOcorrencia = codigoDeOcorrencia; + } + + public Date getDataOcorrencia() { + return dataOcorrencia; + } + + public void setDataOcorrencia(Date dataOcorrencia) { + this.dataOcorrencia = dataOcorrencia; + } + + public String getNumeroDoDocumento() { + return numeroDoDocumento; + } + + public void setNumeroDoDocumento(String numeroDoDocumento) { + this.numeroDoDocumento = numeroDoDocumento; + } + + public Date getVencimento() { + return vencimento; + } + + public void setVencimento(Date vencimento) { + this.vencimento = vencimento; + } + + public BigDecimal getValor() { + return valor; + } + + public void setValor(BigDecimal valor) { + this.valor = valor; + } + + public String getEspecieDeTitulo() { + return especieDeTitulo; + } + + public void setEspecieDeTitulo(String especieDeTitulo) { + this.especieDeTitulo = especieDeTitulo; + } + + public Date getEmissao() { + return emissao; + } + + public void setEmissao(Date emissao) { + this.emissao = emissao; + } + + public String getInstrucao1() { + return instrucao1; + } + + public void setInstrucao1(String instrucao1) { + this.instrucao1 = instrucao1; + } + + public String getInstrucao2() { + return instrucao2; + } + + public void setInstrucao2(String instrucao2) { + this.instrucao2 = instrucao2; + } + + public BigDecimal getValorAtraso() { + return valorAtraso; + } + + public void setValorAtraso(BigDecimal valorAtraso) { + this.valorAtraso = valorAtraso; + } + + public Date getDataLimiteDesconto() { + return dataLimiteDesconto; + } + + public void setDataLimiteDesconto(Date dataLimiteDesconto) { + this.dataLimiteDesconto = dataLimiteDesconto; + } + + public BigDecimal getValorDesconto() { + return valorDesconto; + } + + public void setValorDesconto(BigDecimal valorDesconto) { + this.valorDesconto = valorDesconto; + } + + public BigDecimal getValorIOF() { + return valorIOF; + } + + public void setValorIOF(BigDecimal valorIOF) { + this.valorIOF = valorIOF; + } + + public BigDecimal getValorAbatimentoConcedido() { + return valorAbatimentoConcedido; + } + + public void setValorAbatimentoConcedido(BigDecimal valorAbatimentoConcedido) { + this.valorAbatimentoConcedido = valorAbatimentoConcedido; + } + + public TipoInscricaoPagador getTipoInscricaoPagador() { + return tipoInscricaoPagador; + } + + public void setTipoInscricaoPagador(TipoInscricaoPagador tipoInscricaoPagador) { + this.tipoInscricaoPagador = tipoInscricaoPagador; + } + + public Long getNumeroInscricaoPagador() { + return numeroInscricaoPagador; + } + + public void setNumeroInscricaoPagador(Long numeroInscricaoPagador) { + this.numeroInscricaoPagador = numeroInscricaoPagador; + } + + public String getNomePagador() { + return nomePagador; + } + + public void setNomePagador(String nomePagador) { + this.nomePagador = nomePagador; + } + + public String getEnderecoCompletoPagado() { + return enderecoCompletoPagador; + } + + public void setEnderecoCompletoPagador(String enderecoCompletoPagador) { + this.enderecoCompletoPagador = enderecoCompletoPagador; + } + + public String getMensagem1() { + return mensagem1; + } + + public void setMensagem1(String mensagem1) { + this.mensagem1 = mensagem1; + } + + public String getCEP_Prefixo() { + return CEP_Prefixo; + } + + public void setCEP_Prefixo(String cEP_Prefixo) { + CEP_Prefixo = cEP_Prefixo; + } + + public String getCEP_Sufixo() { + return CEP_Sufixo; + } + + public void setCEP_Sufixo(String cEP_Sufixo) { + CEP_Sufixo = cEP_Sufixo; + } + + public String getSacador_Avalista_Mensagem2() { + return sacador_Avalista_Mensagem2; + } + + public void setSacador_Avalista_Mensagem2(String sacador_Avalista_Mensagem2) { + this.sacador_Avalista_Mensagem2 = sacador_Avalista_Mensagem2; + } + + public Integer getNumeroSequencialRegistro() { + return numeroSequencialRegistro; + } + + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + this.numeroSequencialRegistro = numeroSequencialRegistro; + } + + public DadosBoleto getDadosBoleto() { + return dadosBoleto; + } + + public void setDadosBoleto(DadosBoleto dadosBoleto) { + this.dadosBoleto = dadosBoleto; + } + + public RateioDeCredito getRateioDeCredito() { + return rateioDeCredito; + } + + public void setRateioDeCredito(RateioDeCredito rateioDeCredito) { + this.rateioDeCredito = rateioDeCredito; + } + + private Integer idBoletoFechamento; + + @Override + public void setIdBoletoFechamento(Integer id) { + this.idBoletoFechamento = id; + + } + @Override + public Integer getIdBoletoFechamento(){ + return this.idBoletoFechamento; + } + + public DetalheObrigatorioBradesco clone() throws CloneNotSupportedException { + // TODO Auto-generated method stub + return (DetalheObrigatorioBradesco) super.clone(); + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/itau/ArquivoRemessaItau.java b/src/com/rjconsultores/ventaboletos/blocos/itau/ArquivoRemessaItau.java new file mode 100644 index 000000000..082970608 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/itau/ArquivoRemessaItau.java @@ -0,0 +1,35 @@ +package com.rjconsultores.ventaboletos.blocos.itau; + +import java.util.ArrayList; + +import com.rjconsultores.ventaboletos.ArquivoRemessaItem; +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; + +public class ArquivoRemessaItau extends ArquivoRemessaItem { + + @Override + public void setCabecalhoRemessa(CabecalhoRemessa cabecalhoRemessa) { + + if(cabecalhoRemessa instanceof CabecalhoRemessaItau){ + super.setCabecalhoRemessa(cabecalhoRemessa); + }else{ + throw new ClassCastException("Somente cabecalho tipo: " + CabecalhoRemessaItau.class.getName()); + } + } + + public void addTitulo(DetalheObrigatorio titulo){ + if(this.titulos == null){ + this.titulos = new ArrayList(); + } + + if(titulo instanceof DetalheObrigatorioItau){ + + titulo.setNumeroSequencialRegistro(titulos.size() + 1); + + this.titulos.add(titulo); + }else{ + throw new ClassCastException("Somente cabecalho tipo: " + DetalheObrigatorioItau.class.getName()); + } + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/itau/CabecalhoRemessaItau.java b/src/com/rjconsultores/ventaboletos/blocos/itau/CabecalhoRemessaItau.java new file mode 100644 index 000000000..bda621892 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/itau/CabecalhoRemessaItau.java @@ -0,0 +1,125 @@ +package com.rjconsultores.ventaboletos.blocos.itau; + +import java.util.Date; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; + +public class CabecalhoRemessaItau implements CabecalhoRemessa{ + + //private String identificacaoRemessa; + //private String literalRemessa; + //private String codigoDeServico; + //private String literalServico; + private Integer agencia; + //private String zeros; + private Integer conta; + private Integer dacConta; + //private String brancos1; + private String nomeEmpresa; + //private String codigoCompensacao; + //private String nomeBanco; + private Date dataGeracao; + //private String brancos2; + private Integer numeroSequencialRegistro; + private Integer numeroSequencialRemessa; + +// public String getIdentificacaoRemessa() { +// return identificacaoRemessa; +// } +// public void setIdentificacaoRemessa(String identificacaoRemessa) { +// this.identificacaoRemessa = identificacaoRemessa; +// } +// public String getLiteralRemessa() { +// return literalRemessa; +// } +// public void setLiteralRemessa(String literalRemessa) { +// this.literalRemessa = literalRemessa; +// } +// public String getCodigoDeServico() { +// return codigoDeServico; +// } +// public void setCodigoDeServico(String codigoDeServico) { +// this.codigoDeServico = codigoDeServico; +// } +// public String getLiteralServico() { +// return literalServico; +// } +// public void setLiteralServico(String literalServico) { +// this.literalServico = literalServico; +// } + public Integer getAgencia() { + return agencia; + } + public void setAgencia(Integer agencia) { + this.agencia = agencia; + } +// public String getZeros() { +// return zeros; +// } +// public void setZeros(String zeros) { +// this.zeros = zeros; +// } + public Integer getConta() { + return conta; + } + public void setConta(Integer conta) { + this.conta = conta; + } + public Integer getDacConta() { + return dacConta; + } + public void setDacConta(Integer dacConta) { + this.dacConta = dacConta; + } +// public String getBrancos1() { +// return brancos1; +// } +// public void setBrancos1(String brancos1) { +// this.brancos1 = brancos1; +// } + public String getNomeEmpresa() { + return nomeEmpresa; + } + public void setNomeEmpresa(String nomeEmpresa) { + this.nomeEmpresa = nomeEmpresa; + } +// public String getCodigoCompensacao() { +// return codigoCompensacao; +// } +// public void setCodigoCompensacao(String codigoCompensacao) { +// this.codigoCompensacao = codigoCompensacao; +// } +// public String getNomeBanco() { +// return nomeBanco; +// } +// public void setNomeBanco(String nomeBanco) { +// this.nomeBanco = nomeBanco; +// } + public Date getDataGeracao() { + return dataGeracao; + } + public void setDataGeracao(Date dataGeracao) { + this.dataGeracao = dataGeracao; + } +// public String getBrancos2() { +// return brancos2; +// } +// public void setBrancos2(String brancos2) { +// this.brancos2 = brancos2; +// } + public Integer getNumeroSequencialRegistro() { + return numeroSequencialRegistro; + } + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + this.numeroSequencialRegistro = numeroSequencialRegistro; + } + @Override + public Integer getNumeroSequencialRemessa() { + // TODO Auto-generated method stub + return numeroSequencialRemessa; + } + @Override + public void setNumeroSequencialRemessa(Integer numeroSequencialRemessa) { + this.numeroSequencialRemessa = numeroSequencialRemessa; + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/itau/DetalheObrigatorioItau.java b/src/com/rjconsultores/ventaboletos/blocos/itau/DetalheObrigatorioItau.java new file mode 100644 index 000000000..e14316fae --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/itau/DetalheObrigatorioItau.java @@ -0,0 +1,361 @@ +package com.rjconsultores.ventaboletos.blocos.itau; + +import java.math.BigDecimal; +import java.util.Date; + +import com.rjconsultores.ventaboletos.blocos.DadosBoleto; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; +import com.rjconsultores.ventaboletos.blocos.RateioDeCredito; +import com.rjconsultores.ventaboletos.enuns.TipoInscricaoPagador; + +public class DetalheObrigatorioItau implements DetalheObrigatorio{ + + private Integer codigoInscricao; + private Integer numeroInscricao; + private Integer agencia; + //private String zeros; + private Integer conta; + private Integer dacConta; + //private String Brancos1; // + private Integer instrucaoAlegacao; + private String usoDaEmpresa; + private Integer nossoNumero; + private BigDecimal qtdMoeda; + private Integer nrCarteira; + private String usoDoBanco; + private String codigoCarteira; + private Integer codigoDeOcorrencia; + private String numeroDoDocumento; + private Date vencimento; + private BigDecimal valor; + private String codigoCompensacaoBancoRecebedor; + private Integer agenciaCobradora; + private String especieDeTitulo; + private String aceite; // + private Date emissao; + private String instrucao1; + private String instrucao2; + private BigDecimal jurosDeMora; + private Date dataDesconto; + private BigDecimal descontoConcedido; + private BigDecimal IOF_Devido; + private BigDecimal abatimentoConcedido; + private TipoInscricaoPagador tipoInscricaoSacado; + private Long numeroInscricaoSacado; + private String nomeSacado; + //private String brancos2; // + private String logradouroSacado; + private String bairroSacado; + private Integer cepSacado; + private String cidade; + private String estado; + private String sacadorAvalista; + //private String brancos3; // + private Date dataDeMora; + private Integer prazo; + //private String brancos4; // + private Integer numeroSequencialRegistro; + + private DadosBoleto dadosBoleto; + + private RateioDeCredito rateioDeCredito; + + public DadosBoleto getDadosBoleto() { + return dadosBoleto; + } + public void setDadosBoleto(DadosBoleto dadosBoleto) { + this.dadosBoleto = dadosBoleto; + } + public RateioDeCredito getRateioDeCredito() { + return rateioDeCredito; + } + public void setRateioDeCredito(RateioDeCredito rateioDeCredito) { + this.rateioDeCredito = rateioDeCredito; + } + public Integer getCodigoInscricao() { + return codigoInscricao; + } + public void setCodigoInscricao(Integer codigoInscricao) { + this.codigoInscricao = codigoInscricao; + } + public Integer getNumeroInscricao() { + return numeroInscricao; + } + public void setNumeroInscricao(Integer numeroInscricao) { + this.numeroInscricao = numeroInscricao; + } + public Integer getAgencia() { + return agencia; + } + public void setAgencia(Integer agencia) { + this.agencia = agencia; + } +// public String getZeros() { +// return zeros; +// } +// public void setZeros(String zeros) { +// this.zeros = zeros; +// } + public Integer getConta() { + return conta; + } + public void setConta(Integer conta) { + this.conta = conta; + } + public Integer getDacConta() { + return dacConta; + } + public void setDacConta(Integer dacConta) { + this.dacConta = dacConta; + } +// public String getBrancos1() { +// return Brancos1; +// } +// public void setBrancos1(String brancos1) { +// Brancos1 = brancos1; +// } + public Integer getInstrucaoAlegacao() { + return instrucaoAlegacao; + } + public void setInstrucaoAlegacao(Integer instrucaoAlegacao) { + this.instrucaoAlegacao = instrucaoAlegacao; + } + public String getUsoDaEmpresa() { + return usoDaEmpresa; + } + public void setUsoDaEmpresa(String usoDaEmpresa) { + this.usoDaEmpresa = usoDaEmpresa; + } + public Integer getNossoNumero() { + return nossoNumero; + } + public void setNossoNumero(Integer nossoNumero) { + this.nossoNumero = nossoNumero; + } + public BigDecimal getQtdMoeda() { + return qtdMoeda; + } + public void setQtdMoeda(BigDecimal qtdMoeda) { + this.qtdMoeda = qtdMoeda; + } + public Integer getNrCarteira() { + return nrCarteira; + } + public void setNrCarteira(Integer nrCarteira) { + this.nrCarteira = nrCarteira; + } + public String getUsoDoBanco() { + return usoDoBanco; + } + public void setUsoDoBanco(String usoDoBanco) { + this.usoDoBanco = usoDoBanco; + } + public String getCodigoCarteira() { + return codigoCarteira; + } + public void setCodigoCarteira(String codigoCarteira) { + this.codigoCarteira = codigoCarteira; + } + public Integer getCodigoDeOcorrencia() { + return codigoDeOcorrencia; + } + public void setCodigoDeOcorrencia(Integer codigoDeOcorrencia) { + this.codigoDeOcorrencia = codigoDeOcorrencia; + } + public String getNumeroDoDocumento() { + return numeroDoDocumento; + } + public void setNumeroDoDocumento(String numeroDoDocumento) { + this.numeroDoDocumento = numeroDoDocumento; + } + public Date getVencimento() { + return vencimento; + } + public void setVencimento(Date vencimento) { + this.vencimento = vencimento; + } + public BigDecimal getValor() { + return valor; + } + public void setValor(BigDecimal valor) { + this.valor = valor; + } + public String getCodigoCompensacaoBancoRecebedor() { + return codigoCompensacaoBancoRecebedor; + } + public void setCodigoCompensacaoBancoRecebedor(String codigoCompensacaoBancoRecebedor) { + this.codigoCompensacaoBancoRecebedor = codigoCompensacaoBancoRecebedor; + } + public Integer getAgenciaCobradora() { + return agenciaCobradora; + } + public void setAgenciaCobradora(Integer agenciaCobradora) { + this.agenciaCobradora = agenciaCobradora; + } + public String getEspecieDeTitulo() { + return especieDeTitulo; + } + public void setEspecieDeTitulo(String especieDeTitulo) { + this.especieDeTitulo = especieDeTitulo; + } + public String getAceite() { + return aceite; + } + public void setAceite(String aceite) { + this.aceite = aceite; + } + public Date getEmissao() { + return emissao; + } + public void setEmissao(Date emissao) { + this.emissao = emissao; + } + public String getInstrucao1() { + return instrucao1; + } + public void setInstrucao1(String instrucao1) { + this.instrucao1 = instrucao1; + } + public String getInstrucao2() { + return instrucao2; + } + public void setInstrucao2(String instrucao2) { + this.instrucao2 = instrucao2; + } + public BigDecimal getJurosDeMora() { + return jurosDeMora; + } + public void setJurosDeMora(BigDecimal jurosDeMora) { + this.jurosDeMora = jurosDeMora; + } + public Date getDataDesconto() { + return dataDesconto; + } + public void setDataDesconto(Date dataDesconto) { + this.dataDesconto = dataDesconto; + } + public BigDecimal getDescontoConcedido() { + return descontoConcedido; + } + public void setDescontoConcedido(BigDecimal descontoConcedido) { + this.descontoConcedido = descontoConcedido; + } + public BigDecimal getIOF_Devido() { + return IOF_Devido; + } + public void setIOF_Devido(BigDecimal iOF_Devido) { + IOF_Devido = iOF_Devido; + } + public BigDecimal getAbatimentoConcedido() { + return abatimentoConcedido; + } + public void setAbatimentoConcedido(BigDecimal abatimentoConcedido) { + this.abatimentoConcedido = abatimentoConcedido; + } + public TipoInscricaoPagador getTipoInscricaoSacado() { + return tipoInscricaoSacado; + } + public void setTipoInscricaoSacado(TipoInscricaoPagador tipoInscricaoSacado) { + this.tipoInscricaoSacado = tipoInscricaoSacado; + } + public Long getNumeroInscricaoSacado() { + return numeroInscricaoSacado; + } + public void setNumeroInscricaoSacado(Long numeroInscricaoSacado) { + this.numeroInscricaoSacado = numeroInscricaoSacado; + } + public String getNomeSacado() { + return nomeSacado; + } + public void setNomeSacado(String nomeSacado) { + this.nomeSacado = nomeSacado; + } +// public String getBrancos2() { +// return brancos2; +// } +// public void setBrancos2(String brancos2) { +// this.brancos2 = brancos2; +// } + public String getLogradouroSacado() { + return logradouroSacado; + } + public void setLogradouroSacado(String logradouroSacado) { + this.logradouroSacado = logradouroSacado; + } + public String getBairroSacado() { + return bairroSacado; + } + public void setBairroSacado(String bairroSacado) { + this.bairroSacado = bairroSacado; + } + public Integer getCepSacado() { + return cepSacado; + } + public void setCepSacado(Integer cepSacado) { + this.cepSacado = cepSacado; + } + public String getCidade() { + return cidade; + } + public void setCidade(String cidade) { + this.cidade = cidade; + } + public String getEstado() { + return estado; + } + public void setEstado(String estado) { + this.estado = estado; + } + public String getSacadorAvalista() { + return sacadorAvalista; + } + public void setSacadorAvalista(String sacadorAvalista) { + this.sacadorAvalista = sacadorAvalista; + } +// public String getBrancos3() { +// return brancos3; +// } +// public void setBrancos3(String brancos3) { +// this.brancos3 = brancos3; +// } + public Date getDataDeMora() { + return dataDeMora; + } + public void setDataDeMora(Date dataDeMora) { + this.dataDeMora = dataDeMora; + } + public Integer getPrazo() { + return prazo; + } + public void setPrazo(Integer prazo) { + this.prazo = prazo; + } +// public String getBrancos4() { +// return brancos4; +// } +// public void setBrancos4(String brancos4) { +// this.brancos4 = brancos4; +// } + public Integer getNumeroSequencialRegistro() { + return numeroSequencialRegistro; + } + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + this.numeroSequencialRegistro = numeroSequencialRegistro; + } + + private Integer idBoletoFechamento; + + @Override + public void setIdBoletoFechamento(Integer id) { + this.idBoletoFechamento = id; + + } + @Override + public Integer getIdBoletoFechamento(){ + return this.idBoletoFechamento; + } + + public DetalheObrigatorioItau clone() throws CloneNotSupportedException { + return (DetalheObrigatorioItau) super.clone(); + } +} diff --git a/src/com/rjconsultores/ventaboletos/enuns/BancoLayout.java b/src/com/rjconsultores/ventaboletos/enuns/BancoLayout.java new file mode 100644 index 000000000..23dcba3cb --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enuns/BancoLayout.java @@ -0,0 +1,49 @@ +package com.rjconsultores.ventaboletos.enuns; + +public enum BancoLayout { + + BRADESCO_Envio("237", false, "/layouts/LayoutBradescoCNAB400Envio.txg.xml"), + ITAU_Envio("341", false, "/layouts/LayoutItauCNAB400Envio.txg.xml"), + BRADESCO_Retorno("237", true, "/layouts/LayoutBradescoCNAB400Retorno.txg.xml"), + ITAU_Retorno("341", true, "/layouts/LayoutItauCNAB400Envio.txg.xml"); + + private BancoLayout(String codBanco, boolean retorno, String path) { + this.codBanco = codBanco; + this.retorno = retorno; + this.path = path; + } + + private String codBanco; + private boolean retorno; + private String path; + + + public String getCodBanco() { + return codBanco; + } + + public boolean isRetorno() { + return retorno; + } + + public String getPath() { + return path; + } + + public String getTemp() { + return path.substring(path.lastIndexOf("/")); + } + + public static BancoLayout getInstanceByCodBanco(String codBanco){ + + for(BancoLayout o : BancoLayout.values()){ + + if(o.getCodBanco().equals(codBanco) && !o.isRetorno()){ + return o; + } + } + + return null; + + } +} diff --git a/src/com/rjconsultores/ventaboletos/enuns/MotivoOcorrenciaBradesco.java b/src/com/rjconsultores/ventaboletos/enuns/MotivoOcorrenciaBradesco.java new file mode 100644 index 000000000..969b92c9d --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enuns/MotivoOcorrenciaBradesco.java @@ -0,0 +1,333 @@ +package com.rjconsultores.ventaboletos.enuns; + +public enum MotivoOcorrenciaBradesco { + + //Ocorrência = 02 + EntConf_00("Ocorrência aceita"), + EntConf_01("Código do Banco inválido"), + EntConf_04("Código do movimento não permitido para a carteira"), + EntConf_15("Características da cobrança incompatíveis"), + EntConf_17("Data de vencimento anterior a data de emissão"), + EntConf_21("Espécie do Título inválido"), + EntConf_24("Data da emissão inválida"), + EntConf_27("Valor/taxa de juros mora inválido"), + EntConf_38("Prazo para protesto/ Negativação inválido"), + EntConf_39("Pedido para protesto/ Negativação não permitido para o título"), + EntConf_43("Prazo para baixa e devolução inválido"), + EntConf_45("Nome do Pagador inválido"), + EntConf_46("Tipo/num. de inscrição do Pagador inválidos"), + EntConf_47("Endereço do Pagador não informado"), + EntConf_48("CEP Inválido"), + EntConf_50("CEP referente a Banco correspondente"), + EntConf_53("Nº de inscrição do Pagador/avalista inválidos (CPF/CNPJ)"), + EntConf_54("Pagadorr/avalista não informado"), + EntConf_67("Débito automático agendado"), + EntConf_68("Débito não agendado - erro nos dados de remessa"), + EntConf_69("Débito não agendado - Pagador não consta no cadastro de autorizante"), + EntConf_70("Débito não agendado - Beneficiário não autorizado pelo Pagador"), + EntConf_71("Débito não agendado - Beneficiário não participa da modalidade de déb.automático"), + EntConf_72("Débito não agendado - Código de moeda diferente de R$"), + EntConf_73("Débito não agendado - Data de vencimento inválida/vencida"), + EntConf_75("Débito não agendado - Tipo do número de inscrição do pagador debitado inválido"), + EntConf_76("Pagador Eletrônico DDA - Esse motivo somente será disponibilizado no arquivo retorno para as empresas cadastradas nessa condição"), + EntConf_86("Seu número do documento inválido"), + EntConf_89("Email Pagador não enviado – título com débito automático"), + EntConf_90("Email pagador não enviado – título de cobrança sem registro"), + + //Ocorrência = 03 + EntReje_02("Código do registro detalhe inválido"), + EntReje_03("Código da ocorrência inválida"), + EntReje_04("Código de ocorrência não permitida para a carteira"), + EntReje_05("Código de ocorrência não numérico"), + EntReje_07("Agência/conta/Digito - |Inválido"), + EntReje_08("Nosso número inválido"), + EntReje_09("Nosso número duplicado"), + EntReje_10("Carteira inválida"), + EntReje_13("Identificação da emissão do bloqueto inválida"), + EntReje_16("Data de vencimento inválida"), + EntReje_18("Vencimento fora do prazo de operação"), + EntReje_20("Valor do Título inválido"), + EntReje_21("Espécie do Título inválida"), + EntReje_22("Espécie não permitida para a carteira"), + EntReje_24("Data de emissão inválida"), + EntReje_28("Código do desconto inválido"), + EntReje_38("Prazo para protesto/ Negativação inválido"), + EntReje_44("Agência Beneficiário não prevista"), + EntReje_45("Nome do pagador não informado"), + EntReje_46("Tipo/número de inscrição do pagador inválidos"), + EntReje_47("Endereço do pagador não informado"), + EntReje_48("CEP Inválido"), + EntReje_50("CEP irregular - Banco Correspondente"), + EntReje_63("Entrada para Título já cadastrado"), + EntReje_65("Limite excedido"), + EntReje_66("Número autorização inexistente"), + EntReje_68("Débito não agendado - erro nos dados de remessa"), + EntReje_69("Débito não agendado - Pagador não consta no cadastro de autorizante"), + EntReje_70("Débito não agendado - Beneficiário não autorizado pelo Pagador"), + EntReje_71("Débito não agendado - Beneficiário não participa do débito Automático"), + EntReje_72("Débito não agendado - Código de moeda diferente de R$"), + EntReje_73("Débito não agendado - Data de vencimento inválida"), + EntReje_74("Débito não agendado - Conforme seu pedido, Título não registrado"), + EntReje_75("Débito não agendado – Tipo de número de inscrição do debitado inválido"), + + //Ocorrência = 06 + Liquida_00("Título pago com dinheiro"), + Liquida_15("Título pago com cheque"), + Liquida_18("Pagamento Parcial"), + Liquida_42("Rateio não efetuado"), + + //Ocorrência = 09 + BaixAut_00("Ocorrência Aceita"), + BaixAut_10("Baixa Comandada pelo cliente"), + + //Ocorrência = 10 + BaixBan_00("Baixado Conforme Instruções da Agência"), + BaixBan_14("Título Protestado"), + BaixBan_15("Título excluído"), + BaixBan_16("Título Baixado pelo Banco por decurso Prazo"), + BaixBan_17("Titulo Baixado Transferido Carteira"), + BaixBan_20("Titulo Baixado e Transferido para Desconto"), + + //Ocorrência = 15 e 17 + LiquC_B_00("Título pago com dinheiro"), + LiquC_B_15("Título pago com cheque"), + + //Ocorrência = 24 + CEPIrre_48("CEP inválido"), + + //Ocorrência = 27 + BaixRej_04("Código de ocorrência não permitido para a carteira"), + BaixRej_07("Agência/Conta/dígito inválidos"), + BaixRej_08("Nosso número inválido"), + BaixRej_10("Carteira inválida"), + BaixRej_15("Carteira/Agência/Conta/nosso número inválidos"), + BaixRej_40("Título com ordem de protesto emitido"), + BaixRej_42("Código para baixa/devolução via Tele Bradesco inválido"), + BaixRej_60("Movimento para Título não cadastrado"), + BaixRej_77("Transferência para desconto não permitido para a carteira"), + BaixRej_85("Título com pagamento vinculado"), + + //Ocorrência = 28 + DebTari_02("Tarifa de permanência título cadastrado"), + DebTari_03("Tarifa de sustação/Excl Negativação"), + DebTari_04("Tarifa de protesto/Incl Negativação"), + DebTari_05("Tarifa de outras instruções"), + DebTari_06("Tarifa de outras ocorrências"), + DebTari_08("Custas de protesto"), + DebTari_12("Tarifa de registro"), + DebTari_13("Tarifa título pago no Bradesco"), + DebTari_14("Tarifa título pago compensação"), + DebTari_15("Tarifa título baixado não pago"), + DebTari_16("Tarifa alteração de vencimento"), + DebTari_17("Tarifa concessão abatimento"), + DebTari_18("Tarifa cancelamento de abatimento"), + DebTari_19("Tarifa concessão desconto"), + DebTari_20("Tarifa cancelamento desconto"), + DebTari_21("Tarifa título pago cics"), + DebTari_22("Tarifa título pago Internet"), + DebTari_23("Tarifa título pago term. gerencial serviços"), + DebTari_24("Tarifa título pago Pág-Contas"), + DebTari_25("Tarifa título pago Fone Fácil"), + DebTari_26("Tarifa título Déb. Postagem"), + DebTari_27("Tarifa impressão de títulos pendentes"), + DebTari_28("Tarifa título pago BDN"), + DebTari_29("Tarifa título pago Term. Multi Função"), + DebTari_30("Impressão de títulos baixados"), + DebTari_31("Impressão de títulos pagos"), + DebTari_32("Tarifa título pago Pagfor"), + DebTari_33("Tarifa reg/pgto – guichê caixa"), + DebTari_34("Tarifa título pago retaguarda"), + DebTari_35("Tarifa título pago Subcentro"), + DebTari_36("Tarifa título pago Cartão de Crédito"), + DebTari_37("Tarifa título pago Comp Eletrônica"), + DebTari_38("Tarifa título Baix. Pg. Cartório"), + DebTari_39("Tarifa título baixado acerto BCO"), + DebTari_40("Baixa registro em duplicidade"), + DebTari_41("Tarifa título baixado decurso prazo"), + DebTari_42("Tarifa título baixado Judicialmente"), + DebTari_43("Tarifa título baixado via remessa"), + DebTari_44("Tarifa título baixado rastreamento"), + DebTari_45("Tarifa título baixado conf. Pedido"), + DebTari_46("Tarifa título baixado protestado"), + DebTari_47("Tarifa título baixado p/ devolução"), + DebTari_48("Tarifa título baixado franco pagto"), + DebTari_49("Tarifa título baixado SUST/RET/CARTÓRIO"), + DebTari_50("Tarifa título baixado SUS/SEM/REM/CARTÓRIO"), + DebTari_51("Tarifa título transferido desconto"), + DebTari_52("Cobrado baixa manual"), + DebTari_53("Baixa por acerto cliente"), + DebTari_54("Tarifa baixa por contabilidade"), + DebTari_55("Tr. tentativa cons deb aut"), + DebTari_56("Tr. credito online"), + DebTari_57("Tarifa reg/pagto Bradesco Expresso"), + DebTari_58("Tarifa emissão Papeleta"), + DebTari_59("Tarifa fornec papeleta semi preenchida"), + DebTari_60("Acondicionador de papeletas (RPB)S"), + DebTari_61("Acond. De papelatas (RPB)s PERSONAL"), + DebTari_62("Papeleta formulário branco"), + DebTari_63("Formulário A4 serrilhado"), + DebTari_64("Fornecimento de softwares transmiss"), + DebTari_65("Fornecimento de softwares consulta"), + DebTari_66("Fornecimento Micro Completo"), + DebTari_67("Fornecimento MODEN"), + DebTari_68("Fornecimento de máquina FAX"), + DebTari_69("Fornecimento de máquinas óticas"), + DebTari_70("Fornecimento de Impressoras"), + DebTari_71("Reativação de título"), + DebTari_72("Alteração de produto negociado"), + DebTari_73("Tarifa emissão de contra recibo"), + DebTari_74("Tarifa emissão 2ª via papeleta"), + DebTari_75("Tarifa regravação arquivo retorno"), + DebTari_76("Arq. Títulos a vencer mensal"), + DebTari_77("Listagem auxiliar de crédito"), + DebTari_78("Tarifa cadastro cartela instrução permanente"), + DebTari_79("Canalização de Crédito"), + DebTari_80("Cadastro de Mensagem Fixa"), + DebTari_81("Tarifa reapresentação automática título"), + DebTari_82("Tarifa registro título déb. Automático"), + DebTari_83("Tarifa Rateio de Crédito"), + DebTari_84("Emissão papeleta sem valor"), + DebTari_85("Sem uso"), + DebTari_86("Cadastro de reembolso de diferença"), + DebTari_87("Relatório fluxo de pagto"), + DebTari_88("Emissão Extrato mov. Carteira"), + DebTari_89("Mensagem campo local de pagto"), + DebTari_90("Cadastro Concessionária serv. Publ."), + DebTari_91("Classif. Extrato Conta Corrente"), + DebTari_92("Contabilidade especial"), + DebTari_93("Realimentação pagto"), + DebTari_94("Repasse de Créditos"), + DebTari_96("Tarifa reg. Pagto outras mídias"), + DebTari_97("Tarifa Reg/Pagto – Net Empresa"), + DebTari_98("Tarifa título pago vencido"), + DebTari_99("TR Tít. Baixado por decurso prazo"), + DebTari_100("Arquivo Retorno Antecipado"), + DebTari_101("Arq retorno Hora/Hora"), + DebTari_102("TR. Agendamento Déb Aut"), + DebTari_105("TR. Agendamento rat. Crédito"), + DebTari_106("TR Emissão aviso rateio"), + DebTari_107("Extrato de protesto"), + + //Ocorrência = 29 + OcorPag_78("Pagador alega que faturamento e indevido"), + OcorPag_95("Pagador aceita/reconhece o faturamento"), + + //Ocorrência = 30 + AltDado_01("Código do Banco inválido"), + AltDado_04("Código de ocorrência não permitido para a carteira"), + AltDado_05("Código da ocorrência não numérico"), + AltDado_08("Nosso número inválido"), + AltDado_15("Característica da cobrança incompatível"), + AltDado_16("Data de vencimento inválido"), + AltDado_17("Data de vencimento anterior a data de emissão"), + AltDado_18("Vencimento fora do prazo de operação"), + AltDado_24("Data de emissão Inválida"), + AltDado_26("Código de juros de mora inválido"), + AltDado_27("Valor/taxa de juros de mora inválido"), + AltDado_28("Código de desconto inválido"), + AltDado_29("Valor do desconto maior/igual ao valor do Título"), + AltDado_30("Desconto a conceder não confere"), + AltDado_31("Concessão de desconto já existente"), + AltDado_32("Valor do IOF inválido"), + AltDado_33("Valor do abatimento inválido"), + AltDado_34("Valor do abatimento maior/igual ao valor do Título"), + AltDado_38("Prazo para protesto/ Negativação inválido"), + AltDado_39("Pedido para protesto/ Negativação não permitido para o título"), + AltDado_40("Título com ordem/pedido de protesto/Negativação emitido"), + AltDado_42("Código para baixa/devolução inválido"), + AltDado_46("Tipo/número de inscrição do pagador inválidos"), + AltDado_48("Cep Inválido"), + AltDado_53("Tipo/Número de inscrição do pagador/avalista inválidos"), + AltDado_54("Pagadorr/avalista não informado"), + AltDado_57("Código da multa inválido"), + AltDado_58("Data da multa inválida"), + AltDado_60("Movimento para Título não cadastrado"), + AltDado_79("Data de Juros de mora Inválida"), + AltDado_80("Data do desconto inválida"), + AltDado_85("Título com Pagamento Vinculado"), + AltDado_88("E-mail Pagador não lido no prazo 5 dias"), + AltDado_91("E-mail pagador não recebido"), + + //Ocorrência = 32 + InstRej_01("Código do Banco inválido"), + InstRej_02("Código do registro detalhe inválido"), + InstRej_04("Código de ocorrência não permitido para a carteira"), + InstRej_05("Código de ocorrência não numérico"), + InstRej_07("Agência/Conta/dígito inválidos"), + InstRej_08("Nosso número inválido"), + InstRej_10("Carteira inválida"), + InstRej_15("Características da cobrança incompatíveis"), + InstRej_16("Data de vencimento inválida"), + InstRej_17("Data de vencimento anterior a data de emissão"), + InstRej_18("Vencimento fora do prazo de operação"), + InstRej_20("Valor do título inválido"), + InstRej_21("Espécie do Título inválida"), + InstRej_22("Espécie não permitida para a carteira"), + InstRej_24("Data de emissão inválida"), + InstRej_28("Código de desconto via Telebradesco inválido"), + InstRej_29("Valor do desconto maior/igual ao valor do Título"), + InstRej_30("Desconto a conceder não confere"), + InstRej_31("Concessão de desconto - Já existe desconto anterior"), + InstRej_33("Valor do abatimento inválido"), + InstRej_34("Valor do abatimento maior/igual ao valor do Título"), + InstRej_36("Concessão abatimento - Já existe abatimento anterior"), + InstRej_38("Prazo para protesto/ Negativação inválido"), + InstRej_39("Pedido para protesto/ Negativação não permitido para o título"), + InstRej_40("Título com ordem/pedido de protesto/Negativação emitido"), + InstRej_41("Pedido de sustação/excl p/ Título sem instrução de protesto/Negativação"), + InstRej_42("Código para baixa/devolução inválido"), + InstRej_45("Nome do Pagador não informado"), + InstRej_46("Tipo/número de inscrição do Pagador inválidos"), + InstRej_47("Endereço do Pagador não informado"), + InstRej_48("CEP Inválido"), + InstRej_50("CEP referente a um Banco correspondente"), + InstRej_53("Tipo de inscrição do pagador avalista inválidos"), + InstRej_60("Movimento para Título não cadastrado"), + InstRej_85("Título com pagamento vinculado"), + InstRej_86("Seu número inválido"), + InstRej_94("Título Penhorado – Instrução Não Liberada pela Agência"), + InstRej_97("Instrução não permitida título negativado"), + InstRej_98("Inclusão Bloqueada face a determinação Judicial"), + InstRej_99("Telefone beneficiário não informado / inconsistente"), + + //Ocorrência = 35 + DesDedA_81("Tentativas esgotadas, baixado"), + DesDedA_82("Tentativas esgotadas, pendente"), + DesDedA_83(" Cancelado pelo Pagador e Mantido Pendente, conforme negociação"), + DesDedA_84("Cancelado pelo pagador e baixado, conforme negociação"); + + + private MotivoOcorrenciaBradesco (String motivo){ + this.motivo = motivo; + } + + private String motivo; + + public String getMotivo() { + return motivo; + } + + public String getLabelMotivo(){ + return this.name().substring(0, 7); + } + + public String getCodMotivo(){ + return this.name().substring(8); + } + + public static MotivoOcorrenciaBradesco getInstance(OcorrenciaBradesco o, String codMotivo){ + + String label = o.name() + "_" + codMotivo; + + for(MotivoOcorrenciaBradesco mo : MotivoOcorrenciaBradesco.values()){ + + if(mo.name().equals(label)){ + return mo; + } + + } + + return null; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/enuns/MotivoOcorrenciaItau.java b/src/com/rjconsultores/ventaboletos/enuns/MotivoOcorrenciaItau.java new file mode 100644 index 000000000..6eaab3626 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enuns/MotivoOcorrenciaItau.java @@ -0,0 +1,152 @@ +package com.rjconsultores.ventaboletos.enuns; + +public enum MotivoOcorrenciaItau { + + Ocorrencia02_01("", "CEP SEM ATENDIMENTO DE PROTESTO NO MOMENTO"), + Ocorrencia02_02("", "ESTADO COM DETERMINAÇÃO LEGAL QUE IMPEDE A INSCRIÇÃO DE INADIMPLENTES NOS CADASTROS DE PROTEÇÃO AO CRÉDITO NO PRAZO SOLICITADO – PRAZO SUPERIOR AO SOLICITADO"), + Ocorrencia02_03("", "BOLETO NÃO LIQUIDADO NO DESCONTO DE DUPLICATAS E TRANSFERIDO PARA COBRANÇA SIMPLES"), + + Ocorrencia03_03("AG. COBRADORA", "CEP SEM ATENDIMENTO DE PROTESTO NO MOMENTO"), + Ocorrencia03_04("ESTADO", "SIGLA DO ESTADO INVÁLIDA 05 DATA VENCIMENTO PRAZO DA OPERAÇÃO MENOR QUE PRAZO MÍNIMO OU MAIOR QUE O MÁXIMO"), + Ocorrencia03_07("VALOR DO TÍTULO", "VALOR DO TÍTULO MAIOR QUE 10.000.000,00"), + Ocorrencia03_08("NOME DO PAGADOR", "NÃO INFORMADO OU DESLOCADO"), + Ocorrencia03_09("AGENCIA/CONTA", "AGÊNCIA ENCERRADA"), + Ocorrencia03_10("LOGRADOURO", "NÃO INFORMADO OU DESLOCADO"), + Ocorrencia03_11("CEP", "CEP NÃO NUMÉRICO OU CEP INVÁLIDO"), + Ocorrencia03_12("SACADOR / AVALISTA", "NOME NÃO INFORMADO OU DESLOCADO"), + Ocorrencia03_13("ESTADO/CEP", "CEP INCOMPATÍVEL COM A SIGLA DO ESTADO"), + Ocorrencia03_14("NOSSO NÚMERO", "NOSSO NÚMERO JÁ REGISTRADO NO CADASTRO DO BANCO OU FORA DA FAIXA"), + Ocorrencia03_15("NOSSO NÚMERO", "NOSSO NÚMERO EM DUPLICIDADE NO MESMO MOVIMENTO"), + Ocorrencia03_18("DATA DE ENTRADA", "DATA DE ENTRADA INVÁLIDA PARA OPERAR COM ESTA CARTEIRA"), + Ocorrencia03_19("OCORRÊNCIA", "OCORRÊNCIA INVÁLIDA"), + Ocorrencia03_21("AG. COBRADORA", "CARTEIRA NÃO ACEITA DEPOSITÁRIA CORRESPONDENTE ESTADO DA AGÊNCIA DIFERENTE DO ESTADO DO PAGADOR AG. COBRADORA NÃO CONSTA NO CADASTRO OU ENCERRANDO"), + Ocorrencia03_22("CARTEIRA", "CARTEIRA NÃO PERMITIDA"), + Ocorrencia03_26("AGÊNCIA/CONTA", "AGÊNCIA/CONTA NÃO LIBERADA PARA OPERAR COM COBRANÇA"), + Ocorrencia03_27("CNPJ INAPTO", "CNPJ DO BENEFICIÁRIO INAPTO - DEVOLUÇÃO DE TÍTULO EM GARANTIA"), + Ocorrencia03_29("CÓDIGO EMPRESA", "CATEGORIA DA CONTA INVÁLIDA"), + Ocorrencia03_30("ENTRADA BLOQUEADA", "ENTRADAS BLOQUEADAS, CONTA SUSPENSA EM COBRANÇA"), + Ocorrencia03_31("AGÊNCIA/CONTA", "CONTA NÃO TEM PERMISSÃO PARA PROTESTAR"), + Ocorrencia03_35("VALOR DO IOF", "IOF MAIOR QUE 5%"), + Ocorrencia03_36("QTDADE DE MOEDA", "QUANTIDADE DE MOEDA INCOMPATÍVEL COM VALOR DO TÍTULO"), + Ocorrencia03_37("CNPJ/CPF DO PAGADOR", "NÃO NUMÉRICO OU IGUAL A ZEROS"), + Ocorrencia03_42("NOSSO NÚMERO", "NOSSO NÚMERO FORA DE FAIXA"), + Ocorrencia03_52("AG. COBRADORA", "EMPRESA NÃO ACEITA BANCO CORRESPONDENTE"), + Ocorrencia03_53("AG. COBRADORA", "EMPRESA NÃO ACEITA BANCO CORRESPONDENTE - COBRANÇA MENSAGEM"), + Ocorrencia03_54("DATA DE VENCTO", "BANCO CORRESPONDENTE - TÍTULO COM VENCIMENTO INFERIOR A 15 DIAS"), + Ocorrencia03_55("DEP/BCO CORRESP", "CEP NÃO PERTENCE À DEPOSITÁRIA INFORMADA"), + Ocorrencia03_56("DT VENCTO/BCO CORRESP", "VENCTO SUPERIOR A 180 DIAS DA DATA DE ENTRADA"), + Ocorrencia03_57("DATA DE VENCTO", "CEP SÓ DEPOSITÁRIA BCO DO BRASIL COM VENCTO INFERIOR A 8 DIAS"), + Ocorrencia03_60("ABATIMENTO", "VALOR DO ABATIMENTO INVÁLIDO"), + Ocorrencia03_61("JUROS DE MORA", "JUROS DE MORA MAIOR QUE O PERMITIDO"), + Ocorrencia03_62("DESCONTO", "VALOR DO DESCONTO MAIOR QUE VALOR DO TÍTULO"), + Ocorrencia03_63("DESCONTO DE ANTECIPAÇÃO", "VALOR DA IMPORTÂNCIA POR DIA DE DESCONTO (IDD) NÃO PERMITIDO"), + Ocorrencia03_64("DATA DE EMISSÃO", "DATA DE EMISSÃO DO TÍTULO INVÁLIDA"), + Ocorrencia03_65("TAXA FINANCTO", "TAXA INVÁLIDA"), + Ocorrencia03_66("DATA DE VENCTO", "INVALIDA/FORA DE PRAZO DE OPERAÇÃO"), + Ocorrencia03_67("VALOR/QTIDADE", " VALOR DO TÍTULO/QUANTIDADE DE MOEDA INVÁLIDO"), + Ocorrencia03_68("CARTEIRA,CARTEIRA", "INVÁLIDA OU NÃO CADASTRADA NO INTERCÂMBIO DA COBRANÇA"), + Ocorrencia03_69("CARTEIRA CARTEIRA", "INVÁLIDA PARA TÍTULOS COM RATEIO DE CRÉDITO"), + Ocorrencia03_70("AGÊNCIA/CONTA", "BENEFICIÁRIO NÃO CADASTRADO PARA FAZER RATEIO DE CRÉDITO"), + Ocorrencia03_78("AGÊNCIA/CONTA", "DUPLICIDADE DE AGÊNCIA/CONTA BENEFICIÁRIA DO RATEIO DE CRÉDITO"), + Ocorrencia03_80("AGÊNCIA/CONTA", "QUANTIDADE DE CONTAS BENEFICIÁRIAS DO RATEIO MAIOR DO QUE O PERMITIDO"), + Ocorrencia03_81("AGÊNCIA/CONTA", "CONTA PARA RATEIO DE CRÉDITO INVÁLIDA / NÃO PERTENCE AO ITAÚ"), + Ocorrencia03_82("DESCONTO/ABATI-MENTO", "DESCONTO/ABATIMENTO NÃO PERMITIDO PARA TÍTULOS COM RATEIO DE CRÉDITO"), + Ocorrencia03_83("VALOR DO TÍTULO", "VALOR DO TÍTULO MENOR QUE A SOMA DOS VALORES ESTIPULADOS PARA RATEIO"), + Ocorrencia03_84("AGÊNCIA/CONTA", "AGÊNCIA/CONTA BENEFICIÁRIA DO RATEIO É A CENTRALIZADORA DE CRÉDITO DO BENEFICIÁRIO"), + Ocorrencia03_85("AGÊNCIA/CONTA", "AGÊNCIA/CONTA DO BENEFICIÁRIO É CONTRATUAL / RATEIO DE CRÉDITO NÃO PERMITIDO"), + Ocorrencia03_86("TIPO DE VALOR", "CÓDIGO DO TIPO DE VALOR INVÁLIDO / NÃO PREVISTO PARA TÍTULOS COM RATEIO DE CRÉDITO"), + Ocorrencia03_87("AGÊNCIA/CONTA", "REGISTRO TIPO 4 SEM INFORMAÇÃO DE AGÊNCIAS/CONTAS BENEFICIÁRIAS DO RATEIO"), + Ocorrencia03_90("NRO DA LINHA", "COBRANÇA MENSAGEM - NÚMERO DA LINHA DA MENSAGEM INVÁLIDO OU QUANTIDADE DE LINHAS EXCEDIDAS"), + Ocorrencia03_97("SEM MENSAGEM", "COBRANÇA MENSAGEM SEM MENSAGEM (SÓ DE CAMPOS FIXOS), PORÉM COM REGISTRO DO TIPO 7 OU 8"), + Ocorrencia03_98("FLASH INVÁLIDO", "REGISTRO MENSAGEM SEM FLASH CADASTRADO OU FLASH INFORMADO DIFERENTE DO CADASTRADO"), + Ocorrencia03_99("FLASH INVÁLIDO", "CONTA DE COBRANÇA COM FLASH CADASTRADO E SEM REGISTRO DE MENSAGEM CORRESPONDENTE"), + + Ocorrencia15_01("", "CARTEIRA/Nº NÚMERO NÃO NUMÉRICO"), + Ocorrencia15_04("", "NOSSO NÚMERO EM DUPLICIDADE NO MESMO MOVIMENTO"), + Ocorrencia15_05("", "SOLICITAÇÃO DE BAIXA PARA TÍTULO JÁ BAIXADO OU LIQUIDADO"), + Ocorrencia15_06("", "SOLICITAÇÃO DE BAIXA PARA TÍTULO NÃO REGISTRADO NO SISTEMA"), + Ocorrencia15_07("", "COBRANÇA PRAZO CURTO – SOLICITAÇÃO DE BAIXA P/ TÍTULO NÃO REGISTRADO NO SISTEMA"), + Ocorrencia15_08("", "SOLICITAÇÃO DE BAIXA PARA TÍTULO EM FLOATING"), + Ocorrencia15_10("", "VALOR DO TITULO FAZ PARTE DE GARANTIA DE EMPRESTIMO"), + Ocorrencia15_11("", "PAGO ATRAVÉS DO SISPAG POR CRÉDITO EM C/C E NÃO BAIXADO"), + + Ocorrencia16_01("", "INSTRUÇÃO/OCORRÊNCIA NÃO EXISTENTE"), + Ocorrencia16_03("", "CONTA NÃO TEM PERMISSÃO PARA PROTESTAR (CONTATE SEU GERENTE)"), + Ocorrencia16_06("", "NOSSO NÚMERO IGUAL A ZEROS"), + Ocorrencia16_09("", "CNPJ/CPF DO SACADOR/AVALISTA INVÁLIDO"), + Ocorrencia16_10("", "VALOR DO ABATIMENTO IGUAL OU MAIOR QUE O VALOR DO TÍTULO"), + Ocorrencia16_11("", "SEGUNDA INSTRUÇÃO/OCORRÊNCIA NÃO EXISTENTE"), + Ocorrencia16_14("", "REGISTRO EM DUPLICIDADE"), + Ocorrencia16_15("", "CNPJ/CPF INFORMADO SEM NOME DO SACADOR/AVALISTA"), + Ocorrencia16_19("", "VALOR DO ABATIMENTO MAIOR QUE 90% DO VALOR DO TÍTULO"), + Ocorrencia16_20("", "EXISTE SUSTACAO DE PROTESTO PENDENTE PARA O TITULO"), + Ocorrencia16_21("", "TÍTULO NÃO REGISTRADO NO SISTEMA"), + Ocorrencia16_22("", "TÍTULO BAIXADO OU LIQUIDADO"), + Ocorrencia16_23("", "INSTRUÇÃO NÃO ACEITA"), + Ocorrencia16_24("", "INSTRUÇÃO INCOMPATÍVEL – EXISTE INSTRUÇÃO DE PROTESTO PARA O TÍTULO"), + Ocorrencia16_25("", "INSTRUÇÃO INCOMPATÍVEL – NÃO EXISTE INSTRUÇÃO DE PROTESTO PARA O TÍTULO"), + Ocorrencia16_26("", "INSTRUÇÃO NÃO ACEITA POR JÁ TER SIDO EMITIDA A ORDEM DE PROTESTO AO CARTÓRIO"), + Ocorrencia16_27("", "INSTRUÇÃO NÃO ACEITA POR NÃO TER SIDO EMITIDA A ORDEM DE PROTESTO AO CARTÓRIO"), + Ocorrencia16_28("", "JÁ EXISTE UMA MESMA INSTRUÇÃO CADASTRADA ANTERIORMENTE PARA O TÍTULO"), + Ocorrencia16_29("", "VALOR LÍQUIDO + VALOR DO ABATIMENTO DIFERENTE DO VALOR DO TÍTULO REGISTRADO"), + Ocorrencia16_30("", "EXISTE UMA INSTRUÇÃO DE NÃO PROTESTAR ATIVA PARA O TÍTULO"), + Ocorrencia16_31("", "EXISTE UMA OCORRÊNCIA DO PAGADOR QUE BLOQUEIA A INSTRUÇÃO"), + Ocorrencia16_32("", "DEPOSITÁRIA DO TÍTULO = 9999 OU CARTEIRA NÃO ACEITA PROTESTO"), + Ocorrencia16_33("", "ALTERAÇÃO DE VENCIMENTO IGUAL À REGISTRADA NO SISTEMA OU QUE TORNA O TÍTULO VENCIDO"), + Ocorrencia16_34("", "INSTRUÇÃO DE EMISSÃO DE AVISO DE COBRANÇA PARA TÍTULO VENCIDO ANTES DO VENCIMENTO"), + Ocorrencia16_35("", "SOLICITAÇÃO DE CANCELAMENTO DE INSTRUÇÃO INEXISTENTE"), + Ocorrencia16_36("", "TÍTULO SOFRENDO ALTERAÇÃO DE CONTROLE (AGÊNCIA/CONTA/CARTEIRA/NOSSO NÚMERO)"), + Ocorrencia16_37("", "INSTRUÇÃO NÃO PERMITIDA PARA A CARTEIRA"), + Ocorrencia16_38("", "INSTRUÇÃO NÃO PERMITIDA PARA TÍTULO COM RATEIO DE CRÉDITO"), + Ocorrencia16_40("", "INSTRUÇÃO INCOMPATÍVEL – NÃO EXISTE INSTRUÇÃO DE NEGATIVAÇÃO EXPRESSA PARA O TÍTULO"), + Ocorrencia16_41("", "INSTRUÇÃO NÃO PERMITIDA – TÍTULO COM ENTRADA EM NEGATIVAÇÃO EXPRESSA"), + Ocorrencia16_42("", "INSTRUÇÃO NÃO PERMITIDA – TÍTULO COM NEGATIVAÇÃO EXPRESSA CONCLUÍDA"), + Ocorrencia16_43("", "PRAZO INVÁLIDO PARA NEGATIVAÇÃO EXPRESSA – MÍNIMO: 02 DIAS CORRIDOS APÓS O VENCIMENTO"), + Ocorrencia16_45("", "INSTRUÇÃO INCOMPATÍVEL PARA O MESMO TÍTULO NESTA DATA"), + Ocorrencia16_47("", "INSTRUÇÃO NÃO PERMITIDA – ESPÉCIE INVÁLIDA 48 DADOS DO PAGADOR INVÁLIDOS ( CPF / CNPJ / NOME )"), + Ocorrencia16_49("", "DADOS DO ENDEREÇO DO PAGADOR INVÁLIDOS 50 DATA DE EMISSÃO DO TÍTULO INVÁLIDA"), + Ocorrencia16_51("", "INSTRUÇÃO NÃO PERMITIDA – TÍTULO COM NEGATIVAÇÃO EXPRESSA AGENDADA"), + + Ocorrencia17_02("", "AGÊNCIA COBRADORA INVÁLIDA OU COM O MESMO CONTEÚDO"), + Ocorrencia17_04("", "SIGLA DO ESTADO INVÁLIDA"), + Ocorrencia17_05("", "DATA DE VENCIMENTO INVÁLIDA OU COM O MESMO CONTEÚDO"), + Ocorrencia17_06("", "VALOR DO TÍTULO COM OUTRA ALTERAÇÃO SIMULTÂNEA"), + Ocorrencia17_08("", "NOME DO PAGADOR COM O MESMO CONTEÚDO"), + Ocorrencia17_09("", "AGÊNCIA/CONTA INCORRETA"), + Ocorrencia17_11("", "CEP INVÁLIDO"), + Ocorrencia17_12("", "NÚMERO INSCRIÇÃO INVÁLIDO DO SACADOR AVALISTA"), + Ocorrencia17_13("", "SEU NÚMERO COM O MESMO CONTEÚDO"), + Ocorrencia17_16("", "ABATIMENTO/ALTERAÇÃO DO VALOR DO TÍTULO OU SOLICITAÇÃO DE BAIXA BLOQUEADA"), + Ocorrencia17_20("", "ESPÉCIE INVÁLIDA"), + Ocorrencia17_21("", "AGÊNCIA COBRADORA NÃO CONSTA NO CADASTRO DE DEPOSITÁRIA OU EM ENCERRAMENTO"), + Ocorrencia17_23("", "DATA DE EMISSÃO DO TÍTULO INVÁLIDA OU COM MESMO CONTEÚDO"), + Ocorrencia17_41("", "CAMPO ACEITE INVÁLIDO OU COM MESMO CONTEÚDO"), + Ocorrencia17_42("", "ALTERAÇÃO INVÁLIDA PARA TÍTULO VENCIDO"), + Ocorrencia17_43("", "ALTERAÇÃO BLOQUEADA – VENCIMENTO JÁ ALTERADO"), + Ocorrencia17_53("", "INSTRUÇÃO COM O MESMO CONTEÚDO"), + Ocorrencia17_54("", "DATA VENCIMENTO PARA BANCOS CORRESPONDENTES INFERIOR AO ACEITO PELO BANCO"), + Ocorrencia17_55("", "ALTERAÇÕES IGUAIS PARA O MESMO CONTROLE (AGÊNCIA/CONTA/CARTEIRA/NOSSO NÚMERO)"), + Ocorrencia17_56("", "CNPJ/CPF INVÁLIDO NÃO NUMÉRICO OU ZERADO"), + Ocorrencia17_57("", "PRAZO DE VENCIMENTO INFERIOR A 15 DIAS"), + Ocorrencia17_60("", "VALOR DE IOF – ALTERAÇÃO NÃO PERMITIDA PARA CARTEIRAS DE N.S. – MOEDA VARIÁVEL"), + Ocorrencia17_61("", "TÍTULO JÁ BAIXADO OU LIQUIDADO OU NÃO EXISTE TÍTULO CORRESPONDENTE NO SISTEMA"), + Ocorrencia17_66("", "ALTERAÇÃO NÃO PERMITIDA PARA CARTEIRAS DE NOTAS DE SEGUROS – MOEDA VARIÁVEL"), + Ocorrencia17_67("", "NOME INVÁLIDO DO SACADOR AVALISTA"), + Ocorrencia17_72("", "ENDEREÇO INVÁLIDO – SACADOR AVALISTA"), + Ocorrencia17_73("", "BAIRRO INVÁLIDO – SACADOR AVALISTA"), + Ocorrencia17_74("", "CIDADE INVÁLIDA – SACADOR AVALISTA"), + Ocorrencia17_75("", "SIGLA ESTADO INVÁLIDO – SACADOR AVALISTA"), + Ocorrencia17_76("", "CEP INVÁLIDO – SACADOR AVALISTA"), + Ocorrencia17_81("", "ALTERAÇÃO BLOQUEADA – TÍTULO COM NEGATIVAÇÃO EXPRESSA/PROTESTO"), + Ocorrencia17_87("", "ALTERAÇÃO BLOQUEADA – TÍTULO COM RATEIO DE CRÉDITO"), + + Ocorrencia18_16("", "ABATIMENTO/ALTERAÇÃO DO VALOR DO TÍTULO OU SOLICITAÇÃO DE BAIXA BLOQUEADOS"), + Ocorrencia18_40("", "NÃO APROVADA DEVIDO AO IMPACTO NA ELEGIBILIDADE DE GARANTIAS"), + Ocorrencia18_41("", "AUTOMATICAMENTE REJEITADA"), + Ocorrencia18_42("", "CONFIRMA RECEBIMENTO DE INSTRUÇÃO – PENDENTE DE ANÁLISE"); + + + private MotivoOcorrenciaItau(String campo, String msg) { + // TODO Auto-generated constructor stub + } +} diff --git a/src/com/rjconsultores/ventaboletos/enuns/OcorrenciaBradesco.java b/src/com/rjconsultores/ventaboletos/enuns/OcorrenciaBradesco.java new file mode 100644 index 000000000..2a54ef255 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enuns/OcorrenciaBradesco.java @@ -0,0 +1,48 @@ +package com.rjconsultores.ventaboletos.enuns; + +public enum OcorrenciaBradesco { + + EntConf("02","Entrada confirmada"), + EntReje("03","Entrada Rejeitada"), + Liquida("06","Liquidação"), + BaixAut("09","Baixado Automaticamente via Arquivo"), + BaixBan("10","Baixado pelo Banco"), + LiquC_B("15","Liquidação em cartório/Liquidação após baixa ou Título não registrado"), + CEPIrre("24","Entrada Rejeitada por CEP irregular"), + BaixRej("27","Baixa Rejeitada"), + DebTari("28","Débito de Tarifas/Custas"), + OcorPag("29","Ocorrência do Pagador"), + AltDado("30","Alteração de Outros Dados Rejeitados"), + InstRej("32","Instrução Rejeitada"), + DesDedA("35","Desagendamento do Débito Automático"); + + private OcorrenciaBradesco(String id, String label){ + this.id = id; + this.label = label; + } + + private String id; + private String label; + + public String getId() { + return id; + } + + public String getLabel() { + return label; + } + + public static OcorrenciaBradesco getInstance(String id){ + + for(OcorrenciaBradesco o : OcorrenciaBradesco.values()){ + + if(o.getId().equals(id)){ + return o; + + } + } + + return null; + + } +} diff --git a/src/com/rjconsultores/ventaboletos/enuns/OcorrenciaItau.java b/src/com/rjconsultores/ventaboletos/enuns/OcorrenciaItau.java new file mode 100644 index 000000000..9d0395d08 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enuns/OcorrenciaItau.java @@ -0,0 +1,126 @@ +package com.rjconsultores.ventaboletos.enuns; + +public enum OcorrenciaItau { + + Ocorrencia02("02","ENTRADA CONFIRMADA COM POSSIBILIDADE DE MENSAGEM"), + Ocorrencia03("03","ENTRADA REJEITADA"), + Ocorrencia04("04","ALTERAÇÃO DE DADOS – NOVA ENTRADA OU ALTERAÇÃO/EXCLUSÃO DE DADOS ACATADA"), + Ocorrencia05("05","ALTERAÇÃO DE DADOS – BAIXA"), + Ocorrencia06("06","LIQUIDAÇÃO NORMAL"), + Ocorrencia07("07","LIQUIDAÇÃO PARCIAL – COBRANÇA INTELIGENTE"), + Ocorrencia08("08","LIQUIDAÇÃO EM CARTÓRIO 09 BAIXA SIMPLES"), + Ocorrencia10("10","BAIXA POR TER SIDO LIQUIDADO"), + Ocorrencia11("11","EM SER"), + Ocorrencia12("12","ABATIMENTO CONCEDIDO"), + Ocorrencia13("13","ABATIMENTO CANCELADO"), + Ocorrencia14("14","VENCIMENTO ALTERADO"), + Ocorrencia15("15","BAIXAS REJEITADAS"), + Ocorrencia16("16","INSTRUÇÕES REJEITADAS"), + Ocorrencia17("17","ALTERAÇÃO/EXCLUSÃO DE DADOS REJEITADOS"), + Ocorrencia18("18","COBRANÇA CONTRATUAL – INSTRUÇÕES/ALTERAÇÕES REJEITADAS/PENDENTES"), + Ocorrencia19("19","CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE PROTESTO"), + Ocorrencia20("20","CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE SUSTAÇÃO DE PROTESTO /TARIFA"), + Ocorrencia21("21","CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE NÃO PROTESTAR"), + Ocorrencia23("23","TÍTULO ENVIADO A CARTÓRIO/TARIFA"), + Ocorrencia24("24","INSTRUÇÃO DE PROTESTO REJEITADA / SUSTADA / PENDENTE"), + Ocorrencia25("25","ALEGAÇÕES DO PAGADOR"), + Ocorrencia26("26","TARIFA DE AVISO DE COBRANÇA"), + Ocorrencia27("27","TARIFA DE EXTRATO POSIÇÃO"), + Ocorrencia28("28","TARIFA DE RELAÇÃO DAS LIQUIDAÇÕES"), + Ocorrencia29("29","TARIFA DE MANUTENÇÃO DE TÍTULOS VENCIDOS"), + Ocorrencia30("30","DÉBITO MENSAL DE TARIFAS (PARA ENTRADAS E BAIXAS),"), + Ocorrencia32("32","BAIXA POR TER SIDO PROTESTADO"), + Ocorrencia33("33","CUSTAS DE PROTESTO"), + Ocorrencia34("34","CUSTAS DE SUSTAÇÃO"), + Ocorrencia35("35","CUSTAS DE CARTÓRIO DISTRIBUIDOR"), + Ocorrencia36("36","CUSTAS DE EDITAL"), + Ocorrencia37("37","TARIFA DE EMISSÃO DE BOLETO/TARIFA DE ENVIO DE DUPLICATA"), + Ocorrencia38("38","TARIFA DE INSTRUÇÃO"), + Ocorrencia39("39","TARIFA DE OCORRÊNCIAS"), + Ocorrencia40("40","TARIFA MENSAL DE EMISSÃO DE BOLETO/TARIFA MENSAL DE ENVIO DE DUPLICATA"), + Ocorrencia41("41","DÉBITO MENSAL DE TARIFAS – EXTRATO DE POSIÇÃO (B4EP/B4OX),"), + Ocorrencia42("42","DÉBITO MENSAL DE TARIFAS – OUTRAS INSTRUÇÕES"), + Ocorrencia43("43","DÉBITO MENSAL DE TARIFAS – MANUTENÇÃO DE TÍTULOS VENCIDOS"), + Ocorrencia44("44","DÉBITO MENSAL DE TARIFAS – OUTRAS OCORRÊNCIAS"), + Ocorrencia45("45","DÉBITO MENSAL DE TARIFAS – PROTESTO"), + Ocorrencia46("46","DÉBITO MENSAL DE TARIFAS – SUSTAÇÃO DE PROTESTO"), + Ocorrencia47("47","BAIXA COM TRANSFERÊNCIA PARA DESCONTO"), + Ocorrencia48("48","CUSTAS DE SUSTAÇÃO JUDICIAL"), + Ocorrencia51("51","TARIFA MENSAL REF A ENTRADAS BANCOS CORRESPONDENTES NA CARTEIRA"), + Ocorrencia52("52","TARIFA MENSAL BAIXAS NA CARTEIRA"), + Ocorrencia53("53","TARIFA MENSAL BAIXAS EM BANCOS CORRESPONDENTES NA CARTEIRA"), + Ocorrencia54("54","TARIFA MENSAL DE LIQUIDAÇÕES NA CARTEIRA"), + Ocorrencia55("55","TARIFA MENSAL DE LIQUIDAÇÕES EM BANCOS CORRESPONDENTES NA CARTEIRA"), + Ocorrencia56("56","CUSTAS DE IRREGULARIDADE"), + Ocorrencia57("57","INSTRUÇÃO CANCELADA"), + Ocorrencia59("59","BAIXA POR CRÉDITO EM C/C ATRAVÉS DO SISPAG"), + Ocorrencia60("60","ENTRADA REJEITADA CARNÊ"), + Ocorrencia61("61","TARIFA EMISSÃO AVISO DE MOVIMENTAÇÃO DE TÍTULOS)"), + Ocorrencia62("62","DÉBITO MENSAL DE TARIFA – AVISO DE MOVIMENTAÇÃO DE TÍTULOS"), + Ocorrencia63("63","TÍTULO SUSTADO JUDICIALMENTE"), + Ocorrencia64("64","ENTRADA CONFIRMADA COM RATEIO DE CRÉDITO"), + Ocorrencia65("65","PAGAMENTO COM CHEQUE – AGUARDANDO COMPENSAÇÃO"), + Ocorrencia69("69","CHEQUE DEVOLVIDO"), + Ocorrencia71("71","ENTRADA REGISTRADA, AGUARDANDO AVALIAÇÃO"), + Ocorrencia72("72","BAIXA POR CRÉDITO EM C/C ATRAVÉS DO SISPAG SEM TÍTULO CORRESPONDENTE"), + Ocorrencia73("73","CONFIRMAÇÃO DE ENTRADA NA COBRANÇA SIMPLES – ENTRADA NÃO ACEITA NA COBRANÇA CONTRATUAL"), + Ocorrencia74("74","INSTRUÇÃO DE NEGATIVAÇÃO EXPRESSA REJEITADA"), + Ocorrencia75("75","CONFIRMAÇÃO DE RECEBIMENTO DE INSTRUÇÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA"), + Ocorrencia76("76","CHEQUE COMPENSADO"), + Ocorrencia77("77","CONFIRMAÇÃO DE RECEBIMENTO DE INSTRUÇÃO DE EXCLUSÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA"), + Ocorrencia78("78","CONFIRMAÇÃO DE RECEBIMENTO DE INSTRUÇÃO DE CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA"), + Ocorrencia79("79","NEGATIVAÇÃO EXPRESSA INFORMACIONAL"), + Ocorrencia80("80","CONFIRMAÇÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA – TARIFA"), + Ocorrencia82("82","CONFIRMAÇÃO DO CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA – TARIFA"), + Ocorrencia83("83","CONFIRMAÇÃO DE EXCLUSÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA POR LIQUIDAÇÃO – TARIFA"), + Ocorrencia85("85","TARIFA POR BOLETO (ATÉ 03 ENVIOS) COBRANÇA ATIVA ELETRÔNICA"), + Ocorrencia86("86","TARIFA EMAIL COBRANÇA ATIVA ELETRÔNICA"), + Ocorrencia87("87","TARIFA SMS COBRANÇA ATIVA ELETRÔNICA"), + Ocorrencia88("88","TARIFA MENSAL POR BOLETO (ATÉ 03 ENVIOS) COBRANÇA ATIVA ELETRÔNICA"), + Ocorrencia89("89","TARIFA MENSAL EMAIL COBRANÇA ATIVA ELETRÔNICA"), + Ocorrencia90("90","TARIFA MENSAL SMS COBRANÇA ATIVA ELETRÔNICA"), + Ocorrencia91("91","TARIFA MENSAL DE EXCLUSÃO DE ENTRADA DE NEGATIVAÇÃO EXPRESSA"), + Ocorrencia92("92","TARIFA MENSAL DE CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA"), + Ocorrencia93("93","TARIFA MENSAL DE EXCLUSÃO DE NEGATIVAÇÃO EXPRESSA POR LIQUIDAÇÃO"); + + private OcorrenciaItau(String cod, String label) { + this.cod = cod; + this.label = label; + } + + private String cod; + private String label; + + public String getCod() { + return cod; + } + + public String getLabel() { + return label; + } + + public OcorrenciaItau getInstaceByCod(String cod){ + + + for (OcorrenciaItau oItau : values()) { + + if (oItau.getCod().equals(cod)) { + return oItau; + } + } + + return null; + } + + public OcorrenciaItau getInstaceByCod(int cod){ + + String codigo = ""; + if(cod < 10){ + codigo = "0" + cod; + }else{ + codigo = "" + cod; + } + + return getInstaceByCod(codigo); + } +} diff --git a/src/com/rjconsultores/ventaboletos/enuns/TipoInscricaoPagador.java b/src/com/rjconsultores/ventaboletos/enuns/TipoInscricaoPagador.java new file mode 100644 index 000000000..49d31bb19 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enuns/TipoInscricaoPagador.java @@ -0,0 +1,49 @@ +package com.rjconsultores.ventaboletos.enuns; + +public enum TipoInscricaoPagador { + + CPF("01"), + CNPJ("02"); + + private TipoInscricaoPagador(String id) { + + this.id = id; + } + + private String id; + + + public String getId() { + return id; + } + + @Override + public String toString() { + return getId(); + } + + public static TipoInscricaoPagador getInstanceById(String id){ + + for (TipoInscricaoPagador o : values()) { + if(o.getId().equalsIgnoreCase(id)){ + return o; + } + + } + + return null; + } + + public static TipoInscricaoPagador getInstanceByName(String name){ + + for (TipoInscricaoPagador o : values()) { + if(o.name().equalsIgnoreCase(name)){ + return o; + } + + } + + return null; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/layouts/AbstractFlatFile.java b/src/com/rjconsultores/ventaboletos/layouts/AbstractFlatFile.java new file mode 100644 index 000000000..5b392d145 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/layouts/AbstractFlatFile.java @@ -0,0 +1,402 @@ +package com.rjconsultores.ventaboletos.layouts; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.jrimum.texgit.FlatFile; +import org.jrimum.texgit.Record; +import org.jrimum.texgit.Texgit; +import org.jrimum.utilix.ClassLoaders; +import org.jrimum.utilix.Collections; +import org.jrimum.utilix.Objects; +import org.jrimum.utilix.text.Strings; + +import com.rjconsultores.ventaboletos.ArquivoRemessa; +import com.rjconsultores.ventaboletos.ArquivoRemessaItemInteface; +import com.rjconsultores.ventaboletos.ArquivoRetorno; +import com.rjconsultores.ventaboletos.ArquivoRetornoItem; +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.enuns.BancoLayout; + +/** + *

+ * Implementação base para classes utilizadoras do JRimum-Texgit . + *

+ * + * @author Gilmar P.S.L. + */ +public abstract class AbstractFlatFile{ + + //protected static Logger log = LoggerFactory.getLogger(AbstractFlatFile.class); + + /** + * Nome do arquivo xml de configuração. + */ + protected BancoLayout cfgFile; + + /** + * FlatFile Texgit. + */ + private FlatFile flatFile; + + /** + * Linhas do Arquivo + */ + private List lines = new ArrayList(); + + /** + * Construtor para inicializção com layout xml. + * + * @param cfgFile + * - nome do arquivo layout em xml. + */ + protected AbstractFlatFile(BancoLayout cfgFile) { + + init(cfgFile); + } + + /** + * Inicializador e validador do nome do e layout do arquivo. + * + * @param cfgFile + */ + protected final void init(BancoLayout cfgFile) { + + //Strings.checkNotBlank(cfgFile.getPath(), "Arquivo invalido!"); + + this.cfgFile = cfgFile; + + configure(); + } + + /** + * Retorna o Texgit flatfile da instância. + * + * @return the flatFile + */ + protected final FlatFile getFlatFile() { + + return flatFile; + } + + /** + * Configura o flat file a partir do nome do arquivo layout xml da instância + * procurando no classpath. + */ + private void configure() { + + InputStream in = null; + + try { + + in = ClassLoaders.getResourceAsStream(cfgFile.getPath(), this.getClass()); + + File config = File.createTempFile(cfgFile.getTemp(), null); + + copyInputStreamToFile(in, config); + + //FileUtils.copyInputStreamToFile(in, config); + + flatFile = Texgit.createFlatFile(config); + + } catch (Exception e) { + + throw new IllegalStateException(e); + + }finally { + + if (in != null) { + + try { + + in.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + Objects.checkNotNull(flatFile, "NAO FOI POSSIVEL INICIALIZAR A LIB TEXGIT!"); + } + + public void copyInputStreamToFile(InputStream initialStream, File targetFile) throws IOException { + + OutputStream outStream = new FileOutputStream(targetFile); + + byte[] buffer = new byte[8 * 1024]; + int bytesRead; + while ((bytesRead = initialStream.read(buffer)) != -1) { + outStream.write(buffer, 0, bytesRead); + } + + IOUtils.closeQuietly(initialStream); + IOUtils.closeQuietly(outStream); + } + + /** + *

+ * Lê um arquivo do layout da instancia. + *

+ * + * @param lines + * linhas do arquivo + */ + @SuppressWarnings("unchecked") + public FF read(final List lines) { + + Collections.checkNotEmpty(lines, "Linhas ausentes!"); + + try { + + getFlatFile().read(lines); + + } catch (Exception e) { + e.printStackTrace(); + } + + return (FF) this; + } + + /** + *

+ * Lê um arquivo do layout da instancia com enconding UTF-8. + *

+ * + * @param file + * arquivo texto + */ + @SuppressWarnings("unchecked") + public FF read(final File file) { + + Objects.checkNotNull(file, "Arquivo TXT a ser importado nulo!"); + + try { + + getFlatFile().read(FileUtils.readLines(file)); + + } catch (Exception e) { + e.printStackTrace(); + } + + return (FF) this; + } + + /** + *

+ * Lê um arquivo do layout da instancia. + *

+ * + * @param file + * - Arquivo texto + * @param encoding + * - Econding em que o arquivo será lido + */ + @SuppressWarnings("unchecked") + public FF read(final File file, String encoding) { + + Objects.checkNotNull(file, "Arquivo TXT a ser importado nulo!"); + Strings.checkNotBlank(encoding, "Encoding inválido!"); + + try { + + getFlatFile().read(FileUtils.readLines(file, encoding)); + + } catch (IOException e) { + + e.printStackTrace(); + } + + return (FF) this; + } + + /** + *

+ * Escreve um arquivo do layout da instancia com enconding UTF-8. + *

+ * + * @return arquivo texto + * @throws IOException + */ + public File write() throws IOException { + + Objects.checkNotNull(getFlatFile(), "Arquivo TXT a ser importado nulo!"); + + File f = File.createTempFile(this.getClass().getName() + "" + + new Date().getTime(), "_jnfmtmp.txt"); + + FileUtils.writeLines(f, getFlatFile().write()); + + return f; + } + + /** + *

+ * Escreve um arquivo do layout da instancia. + *

+ * @param encoding - Econding em que o arquivo será escrito + * @return arquivo texto + * @throws IOException + */ + public File write(String encoding) throws IOException { + + if (getFlatFile() != null) { + + File f = File.createTempFile(this.getClass().getName() + "" + + new Date().getTime(), "_jnfmtmp.txt"); + + FileUtils.writeLines(f, getFlatFile().write(), encoding); + + return f; + + } else{ + + throw new IllegalArgumentException(new NullPointerException( + "Arquivo TXT a ser importado nulo!")); + } + } + + /** + *

+ * Escreve um arquivo do layout da instancia. + *

+ * @param arquivoRemessaFisico + * @throws IOException + */ + protected void write(File arquivoRemessaFisico) throws IOException{ + + if(arquivoRemessaFisico == null){ + throw new IllegalArgumentException(new NullPointerException( + "Arquivo TXT a ser importado nulo!")); + } + + FileUtils.writeLines(arquivoRemessaFisico, getFlatFile().write(), "\r\n"); + } + + protected void writeLines(File arquivoRemessaFisico) throws IOException{ + + if(arquivoRemessaFisico == null){ + throw new IllegalArgumentException(new NullPointerException( + "Arquivo TXT a ser importado nulo!")); + } + + FileUtils.writeLines(arquivoRemessaFisico, this.lines, "\r\n"); + } + + protected void writeLines() throws IOException{ + this.lines.addAll(getFlatFile().write()); + + flatFile = null; + configure(); + } + + /** + * + * @param arquivoRemessaFisico + * @param arquivoRemessa + * @throws FileNotFoundException + * @throws IOException + */ + public List gerarRemessa(File arquivoRemessaFisico, ArquivoRemessa arquivoRemessa) throws FileNotFoundException, IOException{ + + //log.info("Gerando Remessa: " + cfgFile.name()); + //log.info("INICIO - Bloco de Header..."); + + for(ArquivoRemessaItemInteface arquivoRemessaItem : arquivoRemessa.getItens()){ + createHeader(arquivoRemessaItem.getCabecalhoRemessa()); + //log.info("FIM - Bloco de Header..."); + + //log.info("INICIO - Bloco de Titulos..."); + for (DetalheObrigatorio titulo : arquivoRemessaItem.getTitulos()) { + createTransacaoTitulos(titulo); + } + //log.info("FIM - Bloco de Titulos..."); + + //log.info("INICIO - Bloco de Trailler..."); + createTrailler(arquivoRemessaItem.getRodapeRemessa()); + //log.info("FIM - Bloco de Trailler..."); + + //log.info("INICIO - Gerando arquivo..."); + writeLines(); + //log.info("FIM - Gerando arquivo..."); + } + + writeLines(arquivoRemessaFisico); + + return this.lines; + } + + + public ArquivoRetorno lerRetorno(File arquivoRetornoFisico) throws FileNotFoundException, IOException{ + + //log.info("Gerando Retorno: " + cfgFile.name()); + //log.info("INICIO - Bloco de Header..."); + + read(arquivoRetornoFisico); + + return loadInfo(); + } + + private ArquivoRetorno loadInfo() { + + ArquivoRetorno arquivoRetorno = new ArquivoRetorno(); + + Record header = getFlatFile().getRecord("Header"); + + ArquivoRetornoItem arquivoRetornoItem = new ArquivoRetornoItem(); + + arquivoRetornoItem.setCabecalhoRetorno(readHeader(header)); + + Collection registrosDeTransacoes = getFlatFile().getRecords( + "TransacaoTitulo"); + + List titulos = readTransacaoTitulos(registrosDeTransacoes); + + for(DetalheRetorno titulo : titulos){ + arquivoRetornoItem.addTitulo(titulo); + } + + + Record trailler = getFlatFile().getRecord("Trailler"); + + arquivoRetornoItem.setRodapeRetorno(readTrailler(trailler)); + + arquivoRetorno.addItem(arquivoRetornoItem); + + return arquivoRetorno; + } + + + protected abstract void createHeader(CabecalhoRemessa cabecalhoRemessaParam); + + protected abstract void createTransacaoTitulos(DetalheObrigatorio tituloParam); + + protected abstract Record createDadosBoletos(DadosBoleto boleto); + + protected abstract Record createRateioDeCredito(RateioDeCredito rateioDeCredito); + + protected abstract void createTrailler(RodapeRemessa trailler); + + protected abstract CabecalhoRetorno readHeader(Record header); + + protected abstract List readTransacaoTitulos(Collection registrosDeTransacoes); + + protected abstract RodapeRetorno readTrailler(Record trailler); +} diff --git a/src/com/rjconsultores/ventaboletos/layouts/BradescoFlatFile.java b/src/com/rjconsultores/ventaboletos/layouts/BradescoFlatFile.java new file mode 100644 index 000000000..89a65b090 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/layouts/BradescoFlatFile.java @@ -0,0 +1,142 @@ +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.RodapeRemessa; +import com.rjconsultores.ventaboletos.blocos.RodapeRetorno; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; +import com.rjconsultores.ventaboletos.blocos.DetalheRetorno; +import com.rjconsultores.ventaboletos.blocos.RateioDeCredito; +import com.rjconsultores.ventaboletos.blocos.bradesco.CabecalhoRemessaBradesco; +import com.rjconsultores.ventaboletos.blocos.bradesco.DetalheObrigatorioBradesco; +import com.rjconsultores.ventaboletos.enuns.BancoLayout; +import com.rjconsultores.ventaboletos.utils.FormataUtil; + +public class BradescoFlatFile extends AbstractFlatFile implements RemessaInterface { + + public BradescoFlatFile() { + super(BancoLayout.BRADESCO_Envio); + } + + @Override + protected void createHeader(CabecalhoRemessa cabecalhoRemessaParam) { + + Record header = getFlatFile().createRecord("Header"); + + CabecalhoRemessaBradesco cabecalhoRemessa = (CabecalhoRemessaBradesco) cabecalhoRemessaParam; + + //header.setValue("IdentificacaoRemessa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getIdentificacaoRemessa(), 1)); + //header.setValue("LiteralRemessa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getLiteralRemessa(), 7)); + //header.setValue("CodigoServico", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getCodigoServico(), 2)); + //header.setValue("LiteralServico", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getLiteralServico(), 8)); + header.setValue("CodigoDaEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getCodigoEmpresa().toString(), 20)); + header.setValue("NomeDaEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNomeEmpresa(), 30)); + //header.setValue("CodigoCompensacao", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getCodigoBanco().toString(), 3)); + //header.setValue("NomeBanco", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNomeBanco(), 8)); + header.setValue("DataGravacaoArquivo", FormataUtil.formataData(cabecalhoRemessa.getDataGravacao())); + //header.setValue("IdentificacaoSistema", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getIdentificacaoSistema(), 2)); + header.setValue("NumeroSequencialRemessa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumeroSequencialRemessa().toString(), 7)); + header.setValue("NumeroSequencialRegistro", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumeroSequencialRegistro().toString(), 6)); + + getFlatFile().addRecord(header); + } + + @Override + protected void createTransacaoTitulos(DetalheObrigatorio tituloParam) { + + Record transacaoTitulos = getFlatFile().createRecord("TransacaoTitulo"); + + DetalheObrigatorioBradesco titulo = (DetalheObrigatorioBradesco) tituloParam; + + transacaoTitulos.setValue("DadosIgnorados1", FormataUtil.formatarValorPorTamanho(" ", 36)); + transacaoTitulos.setValue("NumeroControleDoParticipante", FormataUtil.formatarValorPorTamanho(titulo.getNumeroControleDoParticipante(), 25)); + transacaoTitulos.setValue("Filler1", FormataUtil.formatarValorPorTamanho("0", 8)); + transacaoTitulos.setValue("NossoNumeroComDigito", FormataUtil.formatarValorPorTamanho(titulo.getNossoNumeroComDigito(), 12)); + transacaoTitulos.setValue("DadosIgnorados2", FormataUtil.formatarValorPorTamanho("", 25)); + transacaoTitulos.setValue("QtdPagamento", FormataUtil.formatarValorPorTamanho(titulo.getQtdPagamento().toString(), 25)); + //transacaoTitulos.setValue("CodigoDeOcorrencia", FormataUtil.formatarValorPorTamanho(titulo.getCodigoDeOcorrencia().toString(), 2)); + transacaoTitulos.setValue("NumeroDoDocumento", FormataUtil.formatarValorPorTamanho(titulo.getNumeroDoDocumento(), 10)); + transacaoTitulos.setValue("Vencimento", FormataUtil.formataData(titulo.getVencimento())); + transacaoTitulos.setValue("Valor", titulo.getValor()); + //transacaoTitulos.setValue("BancoCobranca", FormataUtil.formatarValorPorTamanho("0", 3)); + //transacaoTitulos.setValue("AgenciaAgencia", FormataUtil.formatarValorPorTamanho("0", 5)); + transacaoTitulos.setValue("EspecieDeTitulo", FormataUtil.formatarValorPorTamanho(titulo.getEspecieDeTitulo(), 2)); + //transacaoTitulos.setValue("Identificação", FormataUtil.formatarValorPorTamanho("N", 1)); + transacaoTitulos.setValue("Emissao", FormataUtil.formataData(titulo.getEmissao())); + transacaoTitulos.setValue("Instrucao1", FormataUtil.formatarValorPorTamanho(titulo.getInstrucao1(), 2)); + transacaoTitulos.setValue("Instrucao2", FormataUtil.formatarValorPorTamanho(titulo.getInstrucao2(), 2)); + transacaoTitulos.setValue("ValorAtraso", titulo.getValorAtraso()); + transacaoTitulos.setValue("DataLimiteDesconto", FormataUtil.formataData(titulo.getDataLimiteDesconto())); + transacaoTitulos.setValue("ValorDesconto", titulo.getValorDesconto()); + transacaoTitulos.setValue("ValorIOF", titulo.getValorIOF()); + transacaoTitulos.setValue("ValorAbatimentoConcedido", titulo.getValorAbatimentoConcedido()); + transacaoTitulos.setValue("TipoInscricaoPagador", FormataUtil.formatarValorPorTamanho(titulo.getTipoInscricaoPagador().toString(), 2)); + transacaoTitulos.setValue("NumeroInscricaoPagador", FormataUtil.formatarValorPorTamanho(titulo.getNumeroInscricaoPagador().toString(), 14)); + transacaoTitulos.setValue("NomePagador", FormataUtil.formatarValorPorTamanho(titulo.getNomePagador(), 40)); + transacaoTitulos.setValue("EnderecoCompletoPagador", FormataUtil.formatarValorPorTamanho(titulo.getEnderecoCompletoPagado(), 40)); + transacaoTitulos.setValue("Mensagem1", FormataUtil.formatarValorPorTamanho(titulo.getMensagem1(), 12)); + transacaoTitulos.setValue("CEP_Prefixo", FormataUtil.formatarValorPorTamanho(titulo.getCEP_Prefixo().toString(), 5)); + transacaoTitulos.setValue("CEP_Sufixo", FormataUtil.formatarValorPorTamanho(titulo.getCEP_Sufixo().toString(), 3)); + transacaoTitulos.setValue("Sacador_Avalista_Mensagem2", FormataUtil.formatarValorPorTamanho(titulo.getSacador_Avalista_Mensagem2(), 60)); + transacaoTitulos.setValue("NumeroSequencialRegistro", FormataUtil.formatarValorPorTamanho(titulo.getNumeroSequencialRegistro().toString(), 6)); + + DadosBoleto dadosBoleto = titulo.getDadosBoleto(); + + try{ + if(dadosBoleto != null){ + transacaoTitulos.addInnerRecord(createDadosBoletos(dadosBoleto)); + } + }catch(UnsupportedOperationException e){ } + + RateioDeCredito rateioDeCredito = titulo.getRateioDeCredito(); + + try{ + if(dadosBoleto != null){ + transacaoTitulos.addInnerRecord(createRateioDeCredito(rateioDeCredito)); + } + }catch(UnsupportedOperationException e){ } + + getFlatFile().addRecord(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){ + + 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."); + } +} diff --git a/src/com/rjconsultores/ventaboletos/layouts/BradescoProcessaRetorno.java b/src/com/rjconsultores/ventaboletos/layouts/BradescoProcessaRetorno.java new file mode 100644 index 000000000..a3e65fc01 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/layouts/BradescoProcessaRetorno.java @@ -0,0 +1,138 @@ +package com.rjconsultores.ventaboletos.layouts; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +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.enuns.BancoLayout; +import com.rjconsultores.ventaboletos.enuns.MotivoOcorrenciaBradesco; +import com.rjconsultores.ventaboletos.enuns.OcorrenciaBradesco; + +public class BradescoProcessaRetorno extends AbstractFlatFile implements RetornoInteface { + + protected BradescoProcessaRetorno() { + super(BancoLayout.BRADESCO_Retorno); + } + + @Override + protected void createHeader(CabecalhoRemessa cabecalhoRemessaParam) { + throw new UnsupportedOperationException("Somente classe de Envio."); + } + + @Override + protected void createTransacaoTitulos(DetalheObrigatorio tituloParam) { + throw new UnsupportedOperationException("Somente classe de Envio."); + } + + @Override + protected Record createDadosBoletos(DadosBoleto boleto) { + throw new UnsupportedOperationException("Somente classe de Envio."); + } + + @Override + protected Record createRateioDeCredito(RateioDeCredito rateioDeCredito) { + throw new UnsupportedOperationException("Somente classe de Envio."); + } + + @Override + protected void createTrailler(RodapeRemessa trailler) { + throw new UnsupportedOperationException("Somente classe de Envio."); + } + + @Override + protected CabecalhoRetorno readHeader(Record header) { + + CabecalhoRetorno cabecalhoRetorno = new CabecalhoRetorno(); + String codEmpresa = header.getValue("CodigoDaEmpresa"); + String numeroDoAvisoBancario = header.getValue("NumeroDoAvisoBancario"); + + cabecalhoRetorno.setCodEmpresa(codEmpresa); + cabecalhoRetorno.setNumeroDoAvisoBancario(numeroDoAvisoBancario); + + return cabecalhoRetorno; + } + + @Override + protected List readTransacaoTitulos(Collection registrosDeTransacoes) { + + List retornos = new ArrayList(); + + for (Record record : registrosDeTransacoes) { + + DetalheRetorno detalheRetorno = new DetalheRetorno(); + + String numeroControleDoParticipante = record.getValue("NumeroControleDoParticipante"); + String codigoDeOcorrencia = record.getValue("CodigoDeOcorrencia"); + String codigoDeMotivo1 = record.getValue("CodigoDeMotivo1"); + String codigoDeMotivo2 = record.getValue("CodigoDeMotivo2"); + String codigoDeMotivo3 = record.getValue("CodigoDeMotivo3"); + String codigoDeMotivo4 = record.getValue("CodigoDeMotivo4"); + String codigoDeMotivo5 = record.getValue("CodigoDeMotivo5"); + + OcorrenciaBradesco ocorrencia = OcorrenciaBradesco.getInstance(codigoDeOcorrencia); + detalheRetorno.setNumeroControleDoParticipante(numeroControleDoParticipante); + detalheRetorno.setOcorrencia(ocorrencia); + + if(checkIsNullOrBlank(codigoDeMotivo1)){ + MotivoOcorrenciaBradesco motivoOcorrencia = MotivoOcorrenciaBradesco.getInstance(ocorrencia, codigoDeMotivo1); + detalheRetorno.addMotivoOcorrencia(motivoOcorrencia); + } + + if(checkIsNullOrBlank(codigoDeMotivo2)){ + MotivoOcorrenciaBradesco motivoOcorrencia = MotivoOcorrenciaBradesco.getInstance(ocorrencia, codigoDeMotivo2); + detalheRetorno.addMotivoOcorrencia(motivoOcorrencia); + } + + if(checkIsNullOrBlank(codigoDeMotivo3)){ + MotivoOcorrenciaBradesco motivoOcorrencia = MotivoOcorrenciaBradesco.getInstance(ocorrencia, codigoDeMotivo3); + detalheRetorno.addMotivoOcorrencia(motivoOcorrencia); + } + + if(checkIsNullOrBlank(codigoDeMotivo4)){ + MotivoOcorrenciaBradesco motivoOcorrencia = MotivoOcorrenciaBradesco.getInstance(ocorrencia, codigoDeMotivo4); + detalheRetorno.addMotivoOcorrencia(motivoOcorrencia); + } + + if(checkIsNullOrBlank(codigoDeMotivo5)){ + MotivoOcorrenciaBradesco motivoOcorrencia = MotivoOcorrenciaBradesco.getInstance(ocorrencia, codigoDeMotivo5); + detalheRetorno.addMotivoOcorrencia(motivoOcorrencia); + } + + + retornos.add(detalheRetorno); + } + + return retornos; + } + + private boolean checkIsNullOrBlank(String value){ + + if(value != null){ + return StringUtils.isEmpty(value); + } + + return Boolean.TRUE; + } + + @Override + protected RodapeRetorno readTrailler(Record trailler) { + + RodapeRetorno rodapeRetorno = new RodapeRetorno(); + + + return rodapeRetorno; + + + } +} diff --git a/src/com/rjconsultores/ventaboletos/layouts/CNABFactory.java b/src/com/rjconsultores/ventaboletos/layouts/CNABFactory.java new file mode 100644 index 000000000..4abbe4e35 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/layouts/CNABFactory.java @@ -0,0 +1,37 @@ +package com.rjconsultores.ventaboletos.layouts; + +import com.rjconsultores.ventaboletos.enuns.BancoLayout; + +public class CNABFactory { + + + public static RemessaInterface createRemessa(BancoLayout bancoLayout){ + + switch (bancoLayout) { + case BRADESCO_Envio: + return new BradescoFlatFile(); + case ITAU_Envio: + return new ItauFlatFile(); + default: + break; + } + + + return null; + } + + public static RetornoInteface createRetorno(BancoLayout bancoLayout){ + + switch (bancoLayout) { + case BRADESCO_Retorno: + return new BradescoProcessaRetorno(); + case ITAU_Retorno: + return null; + default: + break; + } + + + return null; + } +} diff --git a/src/com/rjconsultores/ventaboletos/layouts/ItauFlatFile.java b/src/com/rjconsultores/ventaboletos/layouts/ItauFlatFile.java new file mode 100644 index 000000000..fb6f0dafe --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/layouts/ItauFlatFile.java @@ -0,0 +1,160 @@ +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.itau.CabecalhoRemessaItau; +import com.rjconsultores.ventaboletos.blocos.itau.DetalheObrigatorioItau; +import com.rjconsultores.ventaboletos.enuns.BancoLayout; +import com.rjconsultores.ventaboletos.utils.FormataUtil; + +public class ItauFlatFile extends AbstractFlatFile implements RemessaInterface { + + public ItauFlatFile() { + super(BancoLayout.ITAU_Envio); + } + + @Override + protected void createHeader(CabecalhoRemessa cabecalhoRemessaParam) { + + Record header = getFlatFile().createRecord("Header"); + + CabecalhoRemessaItau cabecalhoRemessa = (CabecalhoRemessaItau) cabecalhoRemessaParam; + + //header.setValue("IdentificacaoRemessa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getIdentificacaoRemessa(), 1)); + //header.setValue("LiteralRemessa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getLiteralRemessa(), 7)); + //header.setValue("CodigoDeServico", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getCodigoDeServico(), 2)); + //header.setValue("LiteralServico", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getLiteralServico(), 15)); + //header.setValue("Agencia", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getIdentificacaoRemessa(), 4)); + //header.setValue("Zeros", "00"); + header.setValue("Conta", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getConta().toString(), 5)); + header.setValue("DacConta", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getDacConta().toString(), 1)); + header.setValue("Brancos1", FormataUtil.formatarValorPorTamanho(" ", 8)); + header.setValue("NomeEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNomeEmpresa().toString(), 30)); + //header.setValue("CodigoCompensacao", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getIdentificacaoRemessa(), 3)); + //header.setValue("NomeBanco", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getIdentificacaoRemessa(), 15)); + header.setValue("DataGeracao", FormataUtil.formataData(cabecalhoRemessa.getDataGeracao())); + header.setValue("Brancos2", FormataUtil.formatarValorPorTamanho(" ", 294)); + header.setValue("NumeroSequencialRegistro", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumeroSequencialRegistro().toString(), 6)); + + getFlatFile().addRecord(header); + + } + + @Override + protected void createTransacaoTitulos(DetalheObrigatorio tituloParam) { + + Record transacaoTitulos = getFlatFile().createRecord("TransacaoTitulo"); + + DetalheObrigatorioItau titulo = (DetalheObrigatorioItau) tituloParam; + + //transacaoTitulos.setValue("CodigoInscricao", FormataUtil.formatarValorPorTamanho(titulo.getCodigoInscricao().toString(), 2)); + transacaoTitulos.setValue("NumeroInscricao", FormataUtil.formatarValorPorTamanho(titulo.getNumeroInscricao().toString(), 14)); + transacaoTitulos.setValue("Agencia", FormataUtil.formatarValorPorTamanho(titulo.getAgencia().toString(), 4)); + transacaoTitulos.setValue("Zeros", "00"); + transacaoTitulos.setValue("Conta", FormataUtil.formatarValorPorTamanho(titulo.getConta().toString(), 5)); + transacaoTitulos.setValue("DacConta", FormataUtil.formatarValorPorTamanho(titulo.getDacConta().toString(), 1)); + transacaoTitulos.setValue("Brancos1", FormataUtil.formatarValorPorTamanho(" ", 4)); + transacaoTitulos.setValue("InstrucaoAlegacao", FormataUtil.formatarValorPorTamanho(titulo.getInstrucaoAlegacao().toString(), 4)); + transacaoTitulos.setValue("UsoDaEmpresa", FormataUtil.formatarValorPorTamanho(titulo.getUsoDaEmpresa(), 25)); + transacaoTitulos.setValue("NossoNumeroSemDigito", FormataUtil.formatarValorPorTamanho(titulo.getNossoNumero().toString(), 8)); + transacaoTitulos.setValue("QtdMoeda", titulo.getQtdMoeda()); + transacaoTitulos.setValue("NrCarteira", FormataUtil.formatarValorPorTamanho(titulo.getNrCarteira().toString(), 3)); + transacaoTitulos.setValue("UsoDoBanco", FormataUtil.formatarValorPorTamanho(titulo.getUsoDoBanco(), 21)); + transacaoTitulos.setValue("CodigoCarteira", FormataUtil.formatarValorPorTamanho(titulo.getCodigoCarteira(), 1)); + transacaoTitulos.setValue("CodigoDeOcorrencia", FormataUtil.formatarValorPorTamanho(titulo.getCodigoDeOcorrencia().toString(), 2)); + transacaoTitulos.setValue("NumeroDoDocumento", FormataUtil.formatarValorPorTamanho(titulo.getNumeroDoDocumento().toString(), 10)); + transacaoTitulos.setValue("Vencimento", FormataUtil.formataData(titulo.getVencimento())); + transacaoTitulos.setValue("Valor", titulo.getValor()); + //transacaoTitulos.setValue("CodigoCompensacaoBancoRecebedor", FormataUtil.formatarValorPorTamanho(titulo.getCodigoCompensacaoBancoRecebedor().toString(), 3)); + transacaoTitulos.setValue("AgenciaCobradora", FormataUtil.formatarValorPorTamanho(titulo.getAgenciaCobradora().toString(), 5)); + transacaoTitulos.setValue("EspecieDeTitulo", FormataUtil.formatarValorPorTamanho(titulo.getEspecieDeTitulo().toString(), 2)); + transacaoTitulos.setValue("Aceite", FormataUtil.formatarValorPorTamanho(titulo.getAceite(), 1)); + transacaoTitulos.setValue("Emissao", FormataUtil.formataData(titulo.getEmissao())); + transacaoTitulos.setValue("Instrucao1", FormataUtil.formatarValorPorTamanho(titulo.getInstrucao1(), 2)); + transacaoTitulos.setValue("Instrucao2", FormataUtil.formatarValorPorTamanho(titulo.getInstrucao2(), 2)); + transacaoTitulos.setValue("JurosDeMora", titulo.getJurosDeMora()); + transacaoTitulos.setValue("DataDesconto", FormataUtil.formataData(titulo.getDataDesconto())); + transacaoTitulos.setValue("DescontoConcedido", titulo.getDescontoConcedido()); + transacaoTitulos.setValue("IOF_Devido", titulo.getIOF_Devido()); + transacaoTitulos.setValue("AbatimentoConcedido", titulo.getAbatimentoConcedido()); + transacaoTitulos.setValue("TipoInscricaoSacado", FormataUtil.formatarValorPorTamanho(titulo.getTipoInscricaoSacado().getId(), 2)); + transacaoTitulos.setValue("NumeroInscricaoSacado", FormataUtil.formatarValorPorTamanho(titulo.getNumeroInscricaoSacado().toString(), 14)); + transacaoTitulos.setValue("NomeSacado", FormataUtil.formatarValorPorTamanho(titulo.getNomeSacado().toString(), 30)); + transacaoTitulos.setValue("Brancos2", FormataUtil.formatarValorPorTamanho(" ", 2)); + transacaoTitulos.setValue("LogradouroSacado", FormataUtil.formatarValorPorTamanho(titulo.getLogradouroSacado().toString(), 40)); + transacaoTitulos.setValue("BairroSacado", FormataUtil.formatarValorPorTamanho(titulo.getBairroSacado().toString(), 12)); + transacaoTitulos.setValue("CepSacado", FormataUtil.formatarValorPorTamanho(titulo.getCepSacado().toString(), 8)); + transacaoTitulos.setValue("Cidade", FormataUtil.formatarValorPorTamanho(titulo.getCidade(), 15)); + transacaoTitulos.setValue("Estado", FormataUtil.formatarValorPorTamanho(titulo.getEstado(), 2)); + transacaoTitulos.setValue("SacadorAvalista", FormataUtil.formatarValorPorTamanho(titulo.getSacadorAvalista(), 30)); + transacaoTitulos.setValue("Brancos3", FormataUtil.formatarValorPorTamanho(" ", 2)); + transacaoTitulos.setValue("DataDeMora", FormataUtil.formataData(titulo.getDataDeMora())); + transacaoTitulos.setValue("Prazo", FormataUtil.formatarValorPorTamanho(titulo.getPrazo().toString(), 2)); + transacaoTitulos.setValue("Brancos4", FormataUtil.formatarValorPorTamanho(" ", 2)); + transacaoTitulos.setValue("NumeroSequencialRegistro", FormataUtil.formatarValorPorTamanho(titulo.getNumeroSequencialRegistro().toString(), 6)); + + DadosBoleto dadosBoleto = titulo.getDadosBoleto(); + + try{ + if(dadosBoleto != null){ + transacaoTitulos.addInnerRecord(createDadosBoletos(dadosBoleto)); + } + }catch(UnsupportedOperationException e){ } + + RateioDeCredito rateioDeCredito = titulo.getRateioDeCredito(); + + try{ + if(dadosBoleto != null){ + transacaoTitulos.addInnerRecord(createRateioDeCredito(rateioDeCredito)); + } + }catch(UnsupportedOperationException e){ } + + getFlatFile().addRecord(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) { + + 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."); + } +} diff --git a/src/com/rjconsultores/ventaboletos/layouts/RemessaInterface.java b/src/com/rjconsultores/ventaboletos/layouts/RemessaInterface.java new file mode 100644 index 000000000..196811d68 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/layouts/RemessaInterface.java @@ -0,0 +1,15 @@ +package com.rjconsultores.ventaboletos.layouts; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.List; + +import com.rjconsultores.ventaboletos.ArquivoRemessa; +import com.rjconsultores.ventaboletos.ArquivoRemessaItem; + +public interface RemessaInterface { + + public List gerarRemessa(File arquivoRemessaFisico, ArquivoRemessa arquivoRemessa) throws FileNotFoundException, IOException; + +} \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/layouts/RetornoInteface.java b/src/com/rjconsultores/ventaboletos/layouts/RetornoInteface.java new file mode 100644 index 000000000..7fee44a9d --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/layouts/RetornoInteface.java @@ -0,0 +1,12 @@ +package com.rjconsultores.ventaboletos.layouts; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +import com.rjconsultores.ventaboletos.ArquivoRetorno; + +public interface RetornoInteface { + + public ArquivoRetorno lerRetorno(File arquivoRetornoFisico) throws FileNotFoundException, IOException; +} diff --git a/src/com/rjconsultores/ventaboletos/utils/FormataUtil.java b/src/com/rjconsultores/ventaboletos/utils/FormataUtil.java new file mode 100644 index 000000000..e6b293fe2 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/utils/FormataUtil.java @@ -0,0 +1,27 @@ +package com.rjconsultores.ventaboletos.utils; + +import java.util.Date; + +public class FormataUtil { + + public static String formatarValorPorTamanho(String value, int tamanho) { + + value = value == null ? "" : value; + + if(value.length() > tamanho){ + value = value.substring(0, tamanho); + } + + return value; + } + + public static Date formataData(Date dataGravacao) { + + if(dataGravacao == null){ + dataGravacao = new Date(); + } + + return dataGravacao; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/utils/NossoNumeroUtils.java b/src/com/rjconsultores/ventaboletos/utils/NossoNumeroUtils.java new file mode 100644 index 000000000..b3f3a9740 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/utils/NossoNumeroUtils.java @@ -0,0 +1,172 @@ +package com.rjconsultores.ventaboletos.utils; + +import java.math.BigInteger; + +import org.apache.commons.lang.StringUtils; + +public class NossoNumeroUtils { + + /** + * Devolve o nosso numero do Bradesco com o DV calculado (Tamanho 12)... + * @param numCarteira + * @param nossoNumero + * @return + */ + public static String calcularNossonumeroBradesco(Integer numCarteira, BigInteger nossoNumero){ + + + return StringUtils.right("00000000000" + nossoNumero, 11) + dacBradesco(numCarteira, nossoNumero); + + } + + /** + * Devolve o nosso numero do Itau com o DV calculado (Tamanho 9)... + * @param codAgencia + * @param numConta + * @param numCarteira + * @param nossoNumero + * @return + */ + public static String calcularNossoNumeroItau(Integer codAgencia, Integer numConta, Integer numCarteira, BigInteger nossoNumero){ + + + return StringUtils.right("00000000" + nossoNumero, 8) + dacItau(codAgencia, numConta, numCarteira, nossoNumero); + + } + + /** + * Calcula do DV para o Bradesco + * @param numCarteira + * @param nossoNumero + * @return + */ + public static String dacBradesco(Integer numCarteira, BigInteger nossoNumero){ + + + int multiplicadores[] = {2,7,6,5,4,3,2,7,6,5,4,3,2}; + int multiplicandos[] = new int[13]; + + String carteira = StringUtils.right("00" + numCarteira, 2); + String nNumero = StringUtils.right("00000000000" + nossoNumero, 11); + + String base = carteira + nNumero; + + for (int i = 0; i < multiplicandos.length; i++) { + + String d = base.charAt(i) + ""; + + multiplicandos[i] = Integer.valueOf(d) * multiplicadores[i]; + } + + int dac = 0; + + for(Integer v : multiplicandos){ + + dac += v; + } + + dac = 11 - (dac % 11); + + return (dac == 10) ? "P" : dac + ""; + + } + + /** + * Calcula do DV para o Itau + * @param codAgencia + * @param numConta + * @param numCarteira + * @param nossoNumero + * @return + */ + public static String dacItau(Integer codAgencia, Integer numConta, Integer numCarteira, BigInteger nossoNumero){ + + + int multiplicadores[] = {1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2}; + int multiplicandos[] = new int[20]; + + String agencia = StringUtils.right("0000" + codAgencia, 4); + String conta = StringUtils.right("00000" + numConta, 5); + String carteira = StringUtils.right("000" + numCarteira, 3); + String nNumero = StringUtils.right("00000000" + nossoNumero, 8); + + String base = agencia + conta + carteira + nNumero; + + for (int i = 0; i < multiplicandos.length; i++) { + + String d = base.charAt(i) + ""; + + multiplicandos[i] = Integer.valueOf(d) * multiplicadores[i]; + } + + int dac = 0; + + for(Integer v : multiplicandos){ + + if(v < 10){ + dac += v; + }else{ + dac += 1 + (v - 10); + } + } + + dac = 10 - (dac % 10); + + + + return dac + ""; + } + + + /** + * Calcula do DV para o Itau (Numero Documento) + * @param codAgencia + * @param numConta + * @param numCarteira + * @param nossoNumero + * @return + */ + public static String dvDocumentoItau(Integer numeroDoc){ + + + int multiplicadores[] = {1,2,1,2,1,2,1,2,1,2}; + int multiplicandos[] = new int[10]; + + String doc = StringUtils.right("0000000000" + numeroDoc, 10); + + String base = doc; + + for (int i = 0; i < multiplicandos.length; i++) { + + String d = base.charAt(i) + ""; + + multiplicandos[i] = Integer.valueOf(d) * multiplicadores[i]; + } + + int dac = 0; + + for(Integer v : multiplicandos){ + + if(v < 10){ + dac += v; + }else{ + dac += 1 + (v - 10); + } + } + + dac = 10 - (dac % 10); + + + + return dac + ""; + } + + + public static void main(String[] args) { + + System.out.println(calcularNossonumeroBradesco(19, new BigInteger("00166509652"))); + System.out.println(calcularNossonumeroBradesco(19, new BigInteger("00000000001"))); + System.out.println(calcularNossoNumeroItau(57, 72192, 109, new BigInteger("987123451"))); + System.out.println(dvDocumentoItau(1108954)); + } +} diff --git a/src/layouts/LayoutBradescoCNAB400Envio.txg.xml b/src/layouts/LayoutBradescoCNAB400Envio.txg.xml new file mode 100644 index 000000000..ee25d798c --- /dev/null +++ b/src/layouts/LayoutBradescoCNAB400Envio.txg.xml @@ -0,0 +1,127 @@ + + + + + + Arquivo-Remessa_BradescoCNAB400 + Version 08, Published: 2009/09/30 + + Layout para Cobrança. + + Arquivo texto - padrão CNAB + Meio de Registro Transmissão de Dados + Descrição de Registro - Tamanho 400 Bytes + Organização Sequencial + + ARQUIVO FORMATO CNAB REMESSA, REGISTROS: + + 0 - Header Label + 1 - Cobrança - Transação + 2 - Mensagem (opcional) + 3 - Rateio de Crédito (opcional) + 7 – Sacador Avalista (opcional) + 9 - Trailler (Papel de finalizador de lote) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/layouts/LayoutBradescoCNAB400Retorno.txg.xml b/src/layouts/LayoutBradescoCNAB400Retorno.txg.xml new file mode 100644 index 000000000..2512eaf3d --- /dev/null +++ b/src/layouts/LayoutBradescoCNAB400Retorno.txg.xml @@ -0,0 +1,124 @@ + + + + + + Arquivo-Retorno_BradescoCNAB400 + Version 08, Published: 2009/09/30 + + Layout para Cobrança. + + Arquivo texto - padrão CNAB + Meio de Registro Transmissão de Dados + Descrição de Registro - Tamanho 400 Bytes + Organização Sequencial + + ARQUIVO FORMATO CNAB RETORNO, REGISTROS: + + 0 - Header Label + 1 - Cobrança - Transação + 3 - Rateio de Crédito (opcional) + 9 - Trailler (Papel de finalizador de lote e totalizador) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/layouts/LayoutBradescoCNAB400RetornoParaLer.txg.xml b/src/layouts/LayoutBradescoCNAB400RetornoParaLer.txg.xml new file mode 100644 index 000000000..9164b0f1f --- /dev/null +++ b/src/layouts/LayoutBradescoCNAB400RetornoParaLer.txg.xml @@ -0,0 +1,124 @@ + + + + + + Arquivo-Retorno_BradescoCNAB400 + Version 08, Published: 2009/09/30 + + Layout para Cobrança. + + Arquivo texto - padrão CNAB + Meio de Registro Transmissão de Dados + Descrição de Registro - Tamanho 400 Bytes + Organização Sequencial + + ARQUIVO FORMATO CNAB RETORNO, REGISTROS: + + 0 - Header Label + 1 - Cobrança - Transação + 3 - Rateio de Crédito (opcional) + 9 - Trailler (Papel de finalizador de lote e totalizador) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/layouts/LayoutBradescoCNAB400RetornoParaReEscrever.txg.xml b/src/layouts/LayoutBradescoCNAB400RetornoParaReEscrever.txg.xml new file mode 100644 index 000000000..a79b4ae1e --- /dev/null +++ b/src/layouts/LayoutBradescoCNAB400RetornoParaReEscrever.txg.xml @@ -0,0 +1,68 @@ + + + + + + Arquivo-Retorno_BradescoCNAB400 + Version 08, Published: 2009/09/30 + + + Arquivo para ler e reescrever ocorrencias e motivos. + + Layout para Cobrança. + + Arquivo texto - padrão CNAB + Meio de Registro Transmissão de Dados + Descrição de Registro - Tamanho 400 Bytes + Organização Sequencial + + ARQUIVO FORMATO CNAB RETORNO, REGISTROS: + + 0 - Header Label + 1 - Cobrança - Transação + 3 - Rateio de Crédito (opcional) + 9 - Trailler (Papel de finalizador de lote e totalizador) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/layouts/LayoutItauCNAB400Envio.txg.xml b/src/layouts/LayoutItauCNAB400Envio.txg.xml new file mode 100644 index 000000000..4db6d63fc --- /dev/null +++ b/src/layouts/LayoutItauCNAB400Envio.txg.xml @@ -0,0 +1,133 @@ + + + + + + Arquivo-Remessa_ItauCNAB400 + Version 01, Published: 2012/05/25 + + Layout para Cobrança. + + Arquivo texto - padrão CNAB + Meio de Registro Transmissão de Dados + Descrição de Registro - Tamanho 400 Bytes + Organização Sequencial + + ARQUIVO FORMATO CNAB REMESSA, REGISTROS: + + 0 - Registro Header do Arquivo + 1 - Registro de Detalhe (Obrigatório) + 1 - Registro de Transação (Opcional – Cheque Devolvido) + 4 - Registro de Detalhe (Opcional) + 5 - Registro de Detalhe (Opcional) + 9 - Trailler (Papel de finalizador de lote) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/layouts/LayoutItauCNAB400Retorno.txg.xml b/src/layouts/LayoutItauCNAB400Retorno.txg.xml new file mode 100644 index 000000000..7ee46c1c7 --- /dev/null +++ b/src/layouts/LayoutItauCNAB400Retorno.txg.xml @@ -0,0 +1,131 @@ + + + + + + Arquivo-Retorno_ItauCNAB400 + Version 01, Published: 2012/05/25 + + Layout para Cobrança. + + Arquivo texto - padrão CNAB + Meio de Registro Transmissão de Dados + Descrição de Registro - Tamanho 400 Bytes + Organização Sequencial + + ARQUIVO FORMATO CNAB RETORNO, REGISTROS: + + 0 - Header Label + 1 - Cobrança - Transação + 3 - Rateio de Crédito (opcional) + 9 - Trailler (Papel de finalizador de lote e totalizador) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file