fixes bug#20438

dev: Valdir
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@104722 d1611594-4594-4d17-8e1d-87c2c4800839
master
fabio 2020-12-15 13:28:50 +00:00
parent ef75341ed2
commit e12cfc1ded
3 changed files with 211 additions and 0 deletions

View File

@ -15,6 +15,8 @@ public interface RemessaCNABBancosDAO extends GenericDAO<FechamentoBoleto, Long>
public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception; public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaSicoob(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaMercantil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception; public ArquivoRemessa remessaMercantil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception; public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;

View File

@ -42,6 +42,13 @@ import com.rjconsultores.ventaboletos.blocos.mercantil.DetalheObrigatorioMercant
import com.rjconsultores.ventaboletos.blocos.santander.ArquivoRemessaSantander; import com.rjconsultores.ventaboletos.blocos.santander.ArquivoRemessaSantander;
import com.rjconsultores.ventaboletos.blocos.santander.CabecalhoRemessaSantander; import com.rjconsultores.ventaboletos.blocos.santander.CabecalhoRemessaSantander;
import com.rjconsultores.ventaboletos.blocos.santander.DetalheObrigatorioSantander; import com.rjconsultores.ventaboletos.blocos.santander.DetalheObrigatorioSantander;
import com.rjconsultores.ventaboletos.blocos.sicoob.ArquivoRemessaSicoob;
import com.rjconsultores.ventaboletos.blocos.sicoob.CabecalhoLoteRemessaSicoob;
import com.rjconsultores.ventaboletos.blocos.sicoob.CabecalhoRemessaSicoob;
import com.rjconsultores.ventaboletos.blocos.sicoob.DetalheObrigatorioDadosPagadorSicoob;
import com.rjconsultores.ventaboletos.blocos.sicoob.DetalheObrigatorioSicoob;
import com.rjconsultores.ventaboletos.blocos.sicoob.RodapeRemessaLoteSicoob;
import com.rjconsultores.ventaboletos.blocos.sicoob.RodapeRemessaSicoob;
import com.rjconsultores.ventaboletos.dao.RemessaCNABBancosDAO; import com.rjconsultores.ventaboletos.dao.RemessaCNABBancosDAO;
import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto; import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto;
@ -235,6 +242,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
} }
public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception{ public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception{
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@ -915,6 +923,205 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
return arquivoRemessa; return arquivoRemessa;
} }
@Override
public ArquivoRemessa remessaSicoob(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("fp.COD_EMP_BANCO AS \"codEmpresaBanco\", ");
sb.append("emp.CNPJ AS \"cnpj\", ");
sb.append("emp.NOMBEMPRESA AS \"nomeEmpresa\", ");
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("fp.BOLETO_BANCO_CARTEIRA AS \"carteira\", ");
sb.append("fb.NOSSONUMERO AS \"nossoNumero\", ");
sb.append("fb.FECVENCIMENTO AS \"vencimento\", ");
sb.append("fb.VALORDOCUMENTO AS \"valor\", ");
sb.append("99 AS \"especieTitulo\", ");
sb.append("fb.FECDOCUMENTO AS \"dataEmissao\", ");
sb.append("' ' AS \"instrucao1\", ");
sb.append("' ' AS \"instrucao2\", ");
sb.append("fb.MORA AS \"valorAtraso\", ");
sb.append("fb.DESCONTOS AS \"valorDesconto\", ");
sb.append("fb.DEDUCOES AS \"valorAbatimento\", ");
sb.append("'cnpj' as \"tipoInscricaoPagador\", ");
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.NOMBESTADO AS \"estadoPagador\", ");
sb.append("fp.BOLETO_BANCO_AGENCIA_DIGITO AS \"digitoAgencia\", ");
sb.append("fp.BOLETO_BANCO_CARTEIRA_VARIAVEL AS \"variavelCarteira\" ");
writeFROMClause(sb, dataDe != null && dataAte != null, reenviar);
Query query = getSession().createSQLQuery(sb.toString());
query.setInteger("empresaId", empresa.getEmpresaId());
if(dataDe != null && dataAte != null){
query.setDate("dataDe", dataDe);
query.setDate("dataAte", dataAte);
}
List<Object[]> list = query.list();
ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.SICOOB_240_Envio);
String nomeArquivo = "Sicoob" + new SimpleDateFormat("ddMM").format(new Date());
int variavel = 0;
int seqRegistro = 0;
int qtdeTitulos = 0;
BigDecimal valorTitulos = BigDecimal.ZERO;
ArquivoRemessaItem arquivoRemessaItem = null;
CabecalhoRemessaSicoob cabecalhoRemessaSicoob = null;
CabecalhoLoteRemessaSicoob cabecalhoLoteRemessaSicoob = null;
RodapeRemessaLoteSicoob rodapeRemessaLoteSicoob = null;
RodapeRemessaSicoob rodapeRemessaSicoob = null;
for(Object[] tupla : list){
Integer idRemessa = Integer.valueOf(tupla[1].toString());
variavel = idRemessa;
String codEmpresaBanco = ((BigDecimal) tupla[2]).toString();
codEmpresaBanco = StringUtils.right("000000000" + codEmpresaBanco, 9);
String nomeEmpresa = tupla[4].toString();
BigDecimal valor = new BigDecimal(tupla[11].toString().replaceAll(",", "."));
qtdeTitulos++;
valorTitulos.add( valor );
if(cabecalhoRemessaSicoob == null || !(cabecalhoRemessaSicoob.getNumConvenio()).equals(codEmpresaBanco)){
cabecalhoRemessaSicoob = new CabecalhoRemessaSicoob();
cabecalhoRemessaSicoob.setCpfCnpj(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId()));
cabecalhoRemessaSicoob.setNumCpfCnpj(tupla[3].toString());
cabecalhoRemessaSicoob.setNumAgencia(tupla[5].toString());
cabecalhoRemessaSicoob.setDigAgencia(((BigDecimal) tupla[27]).toString());
cabecalhoRemessaSicoob.setNumContaCorrente(tupla[6].toString());
cabecalhoRemessaSicoob.setDigContaCorrente(tupla[7].toString());
cabecalhoRemessaSicoob.setNomeEmpresa(nomeEmpresa);
cabecalhoRemessaSicoob.setNumeroSequencialRemessa(idRemessa);
cabecalhoRemessaSicoob.setDataGravacao(new Date());
cabecalhoLoteRemessaSicoob = new CabecalhoLoteRemessaSicoob();
cabecalhoLoteRemessaSicoob.setCpfCnpj(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId()));
cabecalhoLoteRemessaSicoob.setNumCpfCnpj(tupla[3].toString());
cabecalhoLoteRemessaSicoob.setNumAgencia(tupla[5].toString());
cabecalhoLoteRemessaSicoob.setDigAgencia(((BigDecimal) tupla[27]).toString());
cabecalhoLoteRemessaSicoob.setNumContaCorrente(tupla[6].toString());
cabecalhoLoteRemessaSicoob.setDigContaCorrente(tupla[7].toString());
cabecalhoLoteRemessaSicoob.setNomeEmpresa(nomeEmpresa);
cabecalhoLoteRemessaSicoob.setNumeroRemessa(idRemessa);
cabecalhoLoteRemessaSicoob.setDataGeracao(new Date());
cabecalhoRemessaSicoob.setCabecalhoLoteRemessaSicoob(cabecalhoLoteRemessaSicoob);
arquivoRemessaItem = new ArquivoRemessaSicoob();
arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaSicoob);
arquivoRemessa.addItem(arquivoRemessaItem);
}
String []doc = tupla[9].toString().split("-");
DetalheObrigatorioSicoob titulosSicoob = new DetalheObrigatorioSicoob();
titulosSicoob.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString()));
titulosSicoob.setNumSeqRegistro( seqRegistro++ );
titulosSicoob.setNumAgencia(tupla[5].toString());
titulosSicoob.setDigAgencia(((BigDecimal) tupla[27]).toString());
titulosSicoob.setNumContaCorrente(tupla[6].toString());
titulosSicoob.setDigContaCorrente(tupla[7].toString());
titulosSicoob.setNossoNumero(doc[0]);
titulosSicoob.setNumeroDoDocumento(tupla[0].toString());
titulosSicoob.setVencimento((Date) tupla[10]);
titulosSicoob.setValor( valor );
titulosSicoob.setEmissao((Date) tupla[13]);
try{
titulosSicoob.setCodMora(1);
titulosSicoob.setJurosDeMora(new BigDecimal(tupla[16].toString().replaceAll(",", ".")));
titulosSicoob.setDataMora((Date) tupla[10]);
}catch(NullPointerException e){
titulosSicoob.setCodMora(1);
titulosSicoob.setDataMora((Date) tupla[10]);
titulosSicoob.setJurosDeMora(BigDecimal.ZERO);
}
try{
titulosSicoob.setCodigoDesconto(1);
titulosSicoob.setDataDesconto((Date) tupla[10]);
titulosSicoob.setDescontoConcedido(new BigDecimal(tupla[17].toString().replaceAll(",", ".")));
}catch(NullPointerException e){
titulosSicoob.setCodigoDesconto(1);
titulosSicoob.setDataDesconto((Date) tupla[10]);
titulosSicoob.setDescontoConcedido(BigDecimal.ZERO);
}
titulosSicoob.setIofDevido(BigDecimal.ZERO);
try{
titulosSicoob.setAbatimentoConcedido(new BigDecimal(tupla[18].toString().replaceAll(",", ".")));
}catch(NullPointerException e){
titulosSicoob.setAbatimentoConcedido(BigDecimal.ZERO);
}
titulosSicoob.setNossoNumeroEmp(tupla[0].toString());
titulosSicoob.setCodigoProtesto(3);
titulosSicoob.setDiasProtesto(0);
titulosSicoob.setCodigoBaixa(2);
titulosSicoob.setDiasBaixa(0);
titulosSicoob.setNumeroContrato(Integer.parseInt(tupla[0].toString()));
DetalheObrigatorioDadosPagadorSicoob pagadorSicoob = new DetalheObrigatorioDadosPagadorSicoob();
pagadorSicoob.setNumeroSequencialRegistro( seqRegistro++ );
pagadorSicoob.setTipoInscricaoSacado(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId()));
pagadorSicoob.setNumeroInscricaoSacado(tupla[20].toString());
pagadorSicoob.setNomeSacado(tupla[21].toString());
pagadorSicoob.setLogradouroSacado(tupla[22].toString());
pagadorSicoob.setBairroSacado(tupla[23].toString());
String cep = "";
try{
cep = StringUtils.right("00000000" + tupla[24].toString(), 8);
}catch(Exception e){
cep = "00000000";
}
int cepPrefix = Integer.parseInt(cep.substring(0, 5));
int cepSufix = Integer.parseInt(cep.substring(5));
pagadorSicoob.setCepSacado(cepPrefix);
pagadorSicoob.setSufixoCep(cepSufix);
pagadorSicoob.setCidade(tupla[25].toString());
pagadorSicoob.setEstado(tupla[26].toString());
pagadorSicoob.setCodBancoCorresp(0);
pagadorSicoob.setNossoNumeroNoBancoCorresp("");
titulosSicoob.setDetalheObrigatorioDadosPagadorSicoob(pagadorSicoob);
arquivoRemessaItem.addTitulo(titulosSicoob);
}
if(arquivoRemessaItem != null){
rodapeRemessaLoteSicoob = new RodapeRemessaLoteSicoob();
rodapeRemessaLoteSicoob.setValorRegistros( valorTitulos );
rodapeRemessaSicoob = new RodapeRemessaSicoob();
rodapeRemessaSicoob.setQtdLotes(1);
rodapeRemessaSicoob.setQtdArquivos(qtdeTitulos);
rodapeRemessaSicoob.setQtdContas(0);
rodapeRemessaSicoob.setRodapeRemessaLoteSicoob(rodapeRemessaLoteSicoob);
arquivoRemessaItem.setRodapeRemessa(rodapeRemessaSicoob);
}
nomeArquivo = nomeArquivo + new DecimalFormat("##").format(variavel) + ".REM";
arquivoRemessa.setNomeArquivo(nomeArquivo);
return arquivoRemessa;
}
private void writeFROMClause(StringBuilder sb, boolean hasDate, Boolean reenviar) { private void writeFROMClause(StringBuilder sb, boolean hasDate, Boolean reenviar) {
sb.append(" FROM "); sb.append(" FROM ");
sb.append(" FECHAMENTO_BOLETO fb "); sb.append(" FECHAMENTO_BOLETO fb ");

View File

@ -76,6 +76,8 @@ public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB {
return remessaCNABBancosDAO.remessaItau(empresa, dataDe, dataAte, reenviar); return remessaCNABBancosDAO.remessaItau(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.BB_240_Envio.equals(banco)){ }else if(BancoLayout.BB_240_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaBancoBrasil(empresa, dataDe, dataAte, reenviar); return remessaCNABBancosDAO.remessaBancoBrasil(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.SICOOB_240_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaSicoob(empresa, dataDe, dataAte, reenviar);
} }
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();