Implementação do banco SAFRA feat bug#AL-3376
parent
e0f49557cb
commit
fcce7ed6dc
5
pom.xml
5
pom.xml
|
@ -3,7 +3,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>br.com.rjconsultores</groupId>
|
||||
<artifactId>ModelWeb</artifactId>
|
||||
<version>1.27.1</version>
|
||||
<version>1.28.0</version>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
|
@ -176,7 +176,7 @@
|
|||
<dependency>
|
||||
<groupId>br.com.rjconsultores</groupId>
|
||||
<artifactId>GeneradorBoletosCNAB</artifactId>
|
||||
<version>1.4.0</version>
|
||||
<version>1.5.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -203,6 +203,7 @@
|
|||
<version>3.1.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.nimbusds</groupId>
|
||||
<artifactId>nimbus-jose-jwt</artifactId>
|
||||
|
|
|
@ -26,6 +26,8 @@ public interface RemessaCNABBancosDAO extends GenericDAO<FechamentoBoleto, Long>
|
|||
public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
|
||||
|
||||
public ArquivoRemessa remessaBancoBrasil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
|
||||
|
||||
public ArquivoRemessa remessaSafra(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
|
||||
|
||||
public List<FechamentoBoleto> obtenerTodosParaRemessa(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar);
|
||||
|
||||
|
|
|
@ -51,6 +51,10 @@ import com.rjconsultores.ventaboletos.blocos.itau.DetalheObrigatorioItau;
|
|||
import com.rjconsultores.ventaboletos.blocos.mercantil.ArquivoRemessaMercantil;
|
||||
import com.rjconsultores.ventaboletos.blocos.mercantil.CabecalhoRemessaMercantil;
|
||||
import com.rjconsultores.ventaboletos.blocos.mercantil.DetalheObrigatorioMercantil;
|
||||
import com.rjconsultores.ventaboletos.blocos.safra.ArquivoRemessaSafra;
|
||||
import com.rjconsultores.ventaboletos.blocos.safra.CabecalhoRemessaSafra;
|
||||
import com.rjconsultores.ventaboletos.blocos.safra.DetalheObrigatorioSafra;
|
||||
import com.rjconsultores.ventaboletos.blocos.safra.RodapeRemessaSafra;
|
||||
import com.rjconsultores.ventaboletos.blocos.santander.ArquivoRemessaSantander;
|
||||
import com.rjconsultores.ventaboletos.blocos.santander.CabecalhoRemessaSantander;
|
||||
import com.rjconsultores.ventaboletos.blocos.santander.DetalheObrigatorioSantander;
|
||||
|
@ -66,7 +70,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa;
|
|||
import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto;
|
||||
import com.rjconsultores.ventaboletos.entidad.FechamentoCntcorrente;
|
||||
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
||||
import com.rjconsultores.ventaboletos.enuns.AceiteBB;
|
||||
import com.rjconsultores.ventaboletos.enuns.Aceite;
|
||||
import com.rjconsultores.ventaboletos.enuns.BancoLayout;
|
||||
import com.rjconsultores.ventaboletos.enuns.TipoInscricaoPagador;
|
||||
import com.rjconsultores.ventaboletos.exception.ValidacaoRemessaException;
|
||||
|
@ -164,7 +168,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
|
|||
String nomeEmpresa = tupla[3].toString();
|
||||
|
||||
if(!tupla[8].toString().contains("-")){
|
||||
log.error("NossoNumero não está no formato correto: " + tupla[8].toString() + ". Ignorando o registro FechamentoBoletoId = " + tupla[0].toString());
|
||||
log.error( String.format( "NossoNumero não está no formato correto: %s1 . Ignorando o registro FechamentoBoletoId = %s2 " , tupla[0].toString()));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -274,6 +278,204 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
|
|||
|
||||
}
|
||||
|
||||
public ArquivoRemessa remessaSafra(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception{
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append("SELECT ");
|
||||
sb.append("fb.FECHAMENTOBOLETO_ID AS \"id\", ");
|
||||
sb.append("(NVL(fp.COUNT_REMESSA, 0) + 1) AS \"idRemessa\", ");
|
||||
sb.append("emp.NOMBEMPRESA AS \"nomeEmpresa\", ");
|
||||
sb.append("emp.CNPJ AS \"cnpj\", ");
|
||||
sb.append("fp.BOLETO_BANCO_AGENCIA AS \"agencia\", ");
|
||||
sb.append("fp.BOLETO_BANCO_CONTA AS \"conta\", ");
|
||||
sb.append("fp.BOLETO_BANCO_CONTA_DIGITO AS \"dac\", ");
|
||||
sb.append("fb.NOSSONUMERO AS \"nossoNumero\", ");
|
||||
sb.append("fb.FECVENCIMENTO AS \"vencimento\", ");
|
||||
sb.append("fb.VALORDOCUMENTO AS \"valor\", ");
|
||||
sb.append("fb.FECDOCUMENTO AS \"dataEmissao\", ");
|
||||
sb.append("'01' AS \"instrucao1\", ");
|
||||
sb.append("'01' AS \"instrucao2\", ");
|
||||
sb.append("nvl(fb.porc_multa, 0) AS \"porcentagemMulta\", ");
|
||||
sb.append("nvl(fb.porc_mora, 0) AS \"porcentagemMora\", ");
|
||||
sb.append("fb.MORA AS \"valorAtraso\", ");
|
||||
sb.append("fb.DESCONTOS AS \"valorDesconto\", ");
|
||||
sb.append("fb.DEDUCOES AS \"valorAbatimento\", ");
|
||||
sb.append("pv.NUMDOCPUNTOVENTA AS \"numeroInscricaoPagador\", ");
|
||||
sb.append("pv.NOMBPUNTOVENTA AS \"nomePagador\", ");
|
||||
sb.append("pv.DIRECCIONCALLE || ', ' || pv.DIRECCIONNUMERO AS \"logradouroPagador\", ");
|
||||
sb.append("pl.NOMBPLAZA AS \"bairroPagador\", ");
|
||||
sb.append("pv.CODPOSTAL AS \"cepPagador\", ");
|
||||
sb.append("ci.NOMBCIUDAD AS \"cidadePagador\", ");
|
||||
sb.append("es.CVEESTADO AS \"estadoPagador\" ");
|
||||
|
||||
writeFROMClause(sb, dataDe != null && dataAte != null, reenviar);
|
||||
|
||||
Query query = getSession().createSQLQuery(sb.toString());
|
||||
query.setInteger(EMPRESA_ID, empresa.getEmpresaId());
|
||||
|
||||
if(dataDe != null && dataAte != null){
|
||||
query.setDate(DATA_DE, dataDe);
|
||||
query.setDate(DATA_ATE, dataAte);
|
||||
}
|
||||
List<Object[]> list = query.list();
|
||||
|
||||
ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.SAFRA_400_Envio);
|
||||
|
||||
String nomeArquivo = "CB" + new SimpleDateFormat("ddMM").format(new Date());
|
||||
|
||||
int variavel = 0;
|
||||
int seqRegistro = 0;
|
||||
int qtdeTitulos = 0;
|
||||
|
||||
BigDecimal valorTitulos = BigDecimal.ZERO;
|
||||
ArquivoRemessaItem arquivoRemessaItem = null;
|
||||
CabecalhoRemessaSafra cabecalho = null;
|
||||
|
||||
for(Object[] tupla : list){
|
||||
|
||||
Integer idRemessa = Integer.valueOf(tupla[1].toString());
|
||||
BigDecimal valor = new BigDecimal(tupla[9].toString().replace(",", "."));
|
||||
|
||||
qtdeTitulos++;
|
||||
valorTitulos = valorTitulos.add( valor );
|
||||
String nomeEmpresa = tupla[2].toString();
|
||||
String agencia = tupla[4].toString();
|
||||
String conta = tupla[5].toString();
|
||||
String digiConta = tupla[6].toString();
|
||||
Date vencimento = (Date) tupla[8];
|
||||
|
||||
if(!tupla[7].toString().contains("-")){
|
||||
log.error(String.format( "NossoNumero não está no formato correto: %s1 . Ignorando o registro FechamentoBoletoId = %s2 " , tupla[7], tupla[0]));
|
||||
continue;
|
||||
}
|
||||
|
||||
if(cabecalho == null ){
|
||||
variavel = idRemessa;
|
||||
|
||||
cabecalho = new CabecalhoRemessaSafra();
|
||||
cabecalho.setNumAgencia(agencia);
|
||||
cabecalho.setNumContaCorrente(conta);
|
||||
cabecalho.setDigContaCorrente(digiConta);
|
||||
cabecalho.setNomeEmpresa(nomeEmpresa);
|
||||
cabecalho.setDataGravacao(new Date());
|
||||
cabecalho.setNumeroSequencialRemessa(idRemessa);
|
||||
cabecalho.setNumeroSequencialRegistro(++seqRegistro);
|
||||
|
||||
arquivoRemessaItem = new ArquivoRemessaSafra();
|
||||
arquivoRemessaItem.setCabecalhoRemessa(cabecalho);
|
||||
|
||||
arquivoRemessa.addItem(arquivoRemessaItem);
|
||||
}
|
||||
|
||||
DetalheObrigatorioSafra detalhe = new DetalheObrigatorioSafra();
|
||||
|
||||
detalhe.setCpfCnpj(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId()));
|
||||
detalhe.setNumCpfCnpj(tupla[3].toString());
|
||||
detalhe.setNumAgencia(agencia);
|
||||
detalhe.setNumContaCorrente(conta);
|
||||
detalhe.setDigContaCorrente(digiConta);
|
||||
detalhe.setNossoNumero(tupla[7].toString());
|
||||
detalhe.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString()));
|
||||
detalhe.setVencimento(vencimento);
|
||||
detalhe.setValor(valor);
|
||||
detalhe.setAceite(Aceite.ACEITE);
|
||||
detalhe.setDataEmissao((Date) tupla[10]);
|
||||
detalhe.setInstrucao1(tupla[11].toString());
|
||||
detalhe.setInstrucao2(tupla[12].toString());
|
||||
try{
|
||||
detalhe.setPercMulta( new BigDecimal(tupla[13].toString().replace(",", ".") ) );
|
||||
if( tupla[15] != null ) {
|
||||
detalhe.setJurosDeMora(new BigDecimal(tupla[15].toString().replace(",", ".")));
|
||||
}else {
|
||||
detalhe.setJurosDeMora( calculaValorMora( (BigDecimal) tupla[14], valor ));
|
||||
}
|
||||
detalhe.setDataMulta(vencimento);
|
||||
}catch(NullPointerException e){
|
||||
detalhe.setPercMulta(BigDecimal.ZERO);
|
||||
detalhe.setDataMulta(vencimento);
|
||||
detalhe.setJurosDeMora(BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
try{
|
||||
detalhe.setDataLimiteDesconto(vencimento);
|
||||
detalhe.setValorDesconto(new BigDecimal(tupla[16].toString().replace(",", ".")));
|
||||
}catch(NullPointerException e){
|
||||
detalhe.setDataLimiteDesconto(vencimento);
|
||||
detalhe.setValorDesconto(BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
detalhe.setValorIOF(BigDecimal.ZERO);
|
||||
|
||||
try{
|
||||
detalhe.setValorAbatimentoConcedido(new BigDecimal(tupla[17].toString().replace(",", ".")));
|
||||
}catch(NullPointerException e){
|
||||
detalhe.setValorAbatimentoConcedido(BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
detalhe.setTipoInscricaoPagador(TipoInscricaoPagador.CNPJ);
|
||||
|
||||
try{
|
||||
detalhe.setNumeroInscricaoPagador(tupla[18].toString());
|
||||
}catch(Exception e){
|
||||
throw new ValidacaoRemessaException("O CNPJ do ponto de venda "+tupla[18]+" está fora do padrão, favor corrigir");
|
||||
}
|
||||
|
||||
detalhe.setNomePagador(tupla[19].toString());
|
||||
|
||||
try{
|
||||
detalhe.setEnderecoPagador(tupla[20].toString());
|
||||
}catch(Exception e){
|
||||
throw new ValidacaoRemessaException("O Logradouro do ponto de venda "+tupla[18]+" está fora do padrão, favor corrigir");
|
||||
}
|
||||
|
||||
try{
|
||||
detalhe.setBairroPagador(tupla[21].toString());
|
||||
}catch(Exception e){
|
||||
throw new ValidacaoRemessaException("O Bairro do ponto de venda "+tupla[18]+" está fora do padrão, favor corrigir");
|
||||
}
|
||||
|
||||
detalhe.setCepPagador(tupla[22].toString());
|
||||
|
||||
try{
|
||||
detalhe.setCidadePagador(tupla[23].toString());
|
||||
}catch(Exception e){
|
||||
throw new ValidacaoRemessaException("A cidade do ponto de venda "+tupla[18]+" está fora do padrão, favor corrigir");
|
||||
}
|
||||
|
||||
try{
|
||||
detalhe.setEstadoPagador(tupla[24].toString());
|
||||
}catch(Exception e){
|
||||
throw new ValidacaoRemessaException("O Estado do ponto de venda "+tupla[18]+" está fora do padrão, favor corrigir");
|
||||
}
|
||||
|
||||
detalhe.setSacadorAvalista("");
|
||||
detalhe.setNumeroSequencialRemessa(idRemessa);
|
||||
detalhe.setNumeroSequencialRegistro(++seqRegistro);
|
||||
|
||||
arquivoRemessaItem.addTitulo(detalhe);
|
||||
|
||||
}
|
||||
|
||||
if(arquivoRemessaItem != null){
|
||||
|
||||
RodapeRemessaSafra rodape = new RodapeRemessaSafra();
|
||||
rodape.setQtdTitulos(qtdeTitulos);
|
||||
rodape.setValorTotalTitulos(valorTitulos);
|
||||
|
||||
rodape.setNumeroSequencialRemessa(variavel);
|
||||
rodape.setNumeroSequencialRegistro(++seqRegistro);
|
||||
|
||||
arquivoRemessaItem.setRodapeRemessa(rodape);
|
||||
}
|
||||
|
||||
nomeArquivo = nomeArquivo + new DecimalFormat("##").format(variavel) + ".REM";
|
||||
arquivoRemessa.setNomeArquivo(nomeArquivo);
|
||||
|
||||
return arquivoRemessa;
|
||||
|
||||
}
|
||||
|
||||
public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception{
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
@ -989,7 +1191,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
|
|||
titulosBancoBrasil.setValor(new BigDecimal(tupla[11].toString().replace(",", ".")));
|
||||
titulosBancoBrasil.setAgenciaCobradora(null);
|
||||
titulosBancoBrasil.setDigAgenciaCobradora(null);
|
||||
titulosBancoBrasil.setAceite(AceiteBB.NAO_ACEITE);
|
||||
titulosBancoBrasil.setAceite(Aceite.NAO_ACEITE);
|
||||
titulosBancoBrasil.setEmissao((Date) tupla[13]);
|
||||
try{
|
||||
titulosBancoBrasil.setCodMora(1);
|
||||
|
@ -1185,7 +1387,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
|
|||
String codEmpresaBanco = tupla[2] == null ? "" : ((BigDecimal) tupla[2]).toString();
|
||||
codEmpresaBanco = StringUtils.right("000000000" + codEmpresaBanco, 9);
|
||||
String nomeEmpresa = tupla[4].toString();
|
||||
BigDecimal valor = new BigDecimal(tupla[11].toString().replaceAll(",", "."));
|
||||
BigDecimal valor = new BigDecimal(tupla[11].toString().replace(",", "."));
|
||||
|
||||
qtdeTitulos++;
|
||||
valorTitulos.add( valor );
|
||||
|
|
|
@ -78,6 +78,8 @@ public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB {
|
|||
return remessaCNABBancosDAO.remessaBancoBrasil(empresa, dataDe, dataAte, reenviar);
|
||||
}else if(BancoLayout.SICOOB_240_Envio.equals(banco)){
|
||||
return remessaCNABBancosDAO.remessaSicoob(empresa, dataDe, dataAte, reenviar);
|
||||
}else if(BancoLayout.SAFRA_400_Envio.equals(banco)){
|
||||
return remessaCNABBancosDAO.remessaSafra(empresa, dataDe, dataAte, reenviar);
|
||||
}else if(BancoLayout.CAIXA_400_Envio.equals(banco)){
|
||||
return remessaCNABBancosDAO.remessaCaixa(empresa, dataDe, dataAte, reenviar);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue