Arquivo de Remessa CNAB

fixes bug#9100
fixes bug#9803

dev:rafael.henrique

qua:Marcelo

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@80534 d1611594-4594-4d17-8e1d-87c2c4800839
master
rafael.henrique 2018-04-04 20:02:20 +00:00
parent e2dc453306
commit 13e1d933b7
3 changed files with 50 additions and 15 deletions

View File

@ -93,12 +93,14 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
sb.append("pv.NOMBPUNTOVENTA AS \"nomePagador\", "); sb.append("pv.NOMBPUNTOVENTA AS \"nomePagador\", ");
sb.append("pv.DIRECCIONCALLE || ', ' || pv.DIRECCIONNUMERO || ', ' || pl.NOMBPLAZA || ', ' || ci.NOMBCIUDAD || ', ' || es.NOMBESTADO AS \"enderecoCompletoPagador\", "); sb.append("pv.DIRECCIONCALLE || ', ' || pv.DIRECCIONNUMERO || ', ' || pl.NOMBPLAZA || ', ' || ci.NOMBCIUDAD || ', ' || es.NOMBESTADO AS \"enderecoCompletoPagador\", ");
sb.append("pv.CODPOSTAL AS \"cepPagador\" "); sb.append("pv.CODPOSTAL AS \"cepPagador\" ");
writeFROMClause(sb); writeFROMClause(sb, dataDe != null && dataAte != null);
Query query = getSession().createSQLQuery(sb.toString()); Query query = getSession().createSQLQuery(sb.toString());
query.setInteger("empresaId", empresa.getEmpresaId()); query.setInteger("empresaId", empresa.getEmpresaId());
query.setDate("dataDe", dataDe); if(dataDe != null && dataAte != null){
query.setDate("dataAte", dataAte); query.setDate("dataDe", dataDe);
query.setDate("dataAte", dataAte);
}
List<Object[]> list = query.list(); List<Object[]> list = query.list();
ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.BRADESCO_Envio); ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.BRADESCO_Envio);
@ -113,7 +115,6 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
for(Object[] tupla : list){ for(Object[] tupla : list){
//Date dataGravacao = new SimpleDateFormat("dd/MM/yy").parse(tupla[1].toString());
Integer idRemessa = Integer.valueOf(tupla[1].toString()); Integer idRemessa = Integer.valueOf(tupla[1].toString());
variavel = idRemessa; variavel = idRemessa;
String codEmpresaBanco = tupla[2] != null ? tupla[2].toString() : "0"; String codEmpresaBanco = tupla[2] != null ? tupla[2].toString() : "0";
@ -244,12 +245,14 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
sb.append("pv.CODPOSTAL AS \"cepPagador\", "); sb.append("pv.CODPOSTAL AS \"cepPagador\", ");
sb.append("ci.NOMBCIUDAD AS \"cidadePagador\", "); sb.append("ci.NOMBCIUDAD AS \"cidadePagador\", ");
sb.append("es.NOMBESTADO AS \"estadoPagador\" "); sb.append("es.NOMBESTADO AS \"estadoPagador\" ");
writeFROMClause(sb); writeFROMClause(sb, dataDe != null && dataAte != null);
Query query = getSession().createSQLQuery(sb.toString()); Query query = getSession().createSQLQuery(sb.toString());
query.setInteger("empresaId", empresa.getEmpresaId()); query.setInteger("empresaId", empresa.getEmpresaId());
query.setDate("dataDe", dataDe); if(dataDe != null && dataAte != null){
query.setDate("dataAte", dataAte); query.setDate("dataDe", dataDe);
query.setDate("dataAte", dataAte);
}
List<Object[]> list = query.list(); List<Object[]> list = query.list();
ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.ITAU_Envio); ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.ITAU_Envio);
@ -367,12 +370,11 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
return arquivoRemessa; return arquivoRemessa;
} }
private void writeFROMClause(StringBuilder sb) { private void writeFROMClause(StringBuilder sb, boolean hasDate) {
sb.append("FROM "); sb.append("FROM ");
sb.append("FECHAMENTO_BOLETO fb "); sb.append("FECHAMENTO_BOLETO fb ");
sb.append("LEFT JOIN FECHAMENTO_CNTCORRENTE fc on fb.FECHAMENTOCNTCORRENTE_ID = fc.FECHAMENTOCNTCORRENTE_ID AND fc.ACTIVO = 1 "); sb.append("LEFT JOIN FECHAMENTO_CNTCORRENTE fc on fb.FECHAMENTOCNTCORRENTE_ID = fc.FECHAMENTOCNTCORRENTE_ID AND fc.ACTIVO = 1 ");
sb.append("LEFT JOIN PUNTO_VENTA pv on pv.PUNTOVENTA_ID = fc.PUNTOVENTA_ID AND pv.ACTIVO = 1 "); sb.append("LEFT JOIN PUNTO_VENTA pv on pv.PUNTOVENTA_ID = fc.PUNTOVENTA_ID AND pv.ACTIVO = 1 ");
//sb.append("LEFT JOIN EMPRESA emp on emp.EMPRESA_ID = pv.EMPRESA_ID AND emp.ACTIVO = 1 ");
sb.append("LEFT JOIN EMPRESA emp on emp.EMPRESA_ID = fc.EMPRESA_ID AND emp.ACTIVO = 1 "); sb.append("LEFT JOIN EMPRESA emp on emp.EMPRESA_ID = fc.EMPRESA_ID AND emp.ACTIVO = 1 ");
sb.append("LEFT JOIN FECHAMENTO_PARAMGERAL fp on fp.EMPRESA_ID = emp.EMPRESA_ID AND fp.ACTIVO = 1 "); sb.append("LEFT JOIN FECHAMENTO_PARAMGERAL fp on fp.EMPRESA_ID = emp.EMPRESA_ID AND fp.ACTIVO = 1 ");
sb.append("LEFT JOIN PARADA pa on pa.PARADA_ID = pv.PARADA_ID AND pa.ACTIVO = 1 "); sb.append("LEFT JOIN PARADA pa on pa.PARADA_ID = pv.PARADA_ID AND pa.ACTIVO = 1 ");
@ -380,11 +382,12 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
sb.append("LEFT JOIN PLAZA pl on pl.PLAZA_ID = ci.PLAZA_ID AND pl.ACTIVO = 1 "); sb.append("LEFT JOIN PLAZA pl on pl.PLAZA_ID = ci.PLAZA_ID AND pl.ACTIVO = 1 ");
sb.append("LEFT JOIN ESTADO es on es.ESTADO_ID = ci.ESTADO_ID AND es.ACTIVO = 1 "); sb.append("LEFT JOIN ESTADO es on es.ESTADO_ID = ci.ESTADO_ID AND es.ACTIVO = 1 ");
sb.append("WHERE "); sb.append("WHERE ");
//sb.append("fb.STATUS = 'I' "); sb.append("fb.STATUS = 'I' ");
//sb.append("AND fb.REMESSA_ID US NOT NULL "); sb.append("AND fb.REMESSA_ID IS NULL ");
sb.append("fp.EMPRESA_ID = :empresaId ");
sb.append("AND fp.EMPRESA_ID = :empresaId "); sb.append("AND fp.EMPRESA_ID = :empresaId ");
sb.append("AND fb.FECDOCUMENTO BETWEEN :dataDe AND :dataAte "); if(hasDate){
sb.append("AND fb.FECDOCUMENTO BETWEEN :dataDe AND :dataAte ");
}
sb.append("ORDER BY "); sb.append("ORDER BY ");
sb.append("fb.FECMODIF, fb.FECDOCUMENTO "); sb.append("fb.FECMODIF, fb.FECDOCUMENTO ");
} }
@ -404,7 +407,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
sb.append("AND fc.activo = 1 "); sb.append("AND fc.activo = 1 ");
sb.append("AND emp.activo = 1"); sb.append("AND emp.activo = 1");
sb.append("AND fb.remessaId IS NULL "); sb.append("AND fb.remessaId IS NULL ");
//sb.append("AND fb.status = 'I' "); sb.append("AND fb.status = 'I' ");
if (empresa != null && empresa.getEmpresaId() != null) { if (empresa != null && empresa.getEmpresaId() != null) {
sb.append("AND emp.empresaId = " + empresa.getEmpresaId()); sb.append("AND emp.empresaId = " + empresa.getEmpresaId());
} }

View File

@ -16,4 +16,8 @@ public interface ArquivoRemessaCNAB extends GenericService<FechamentoBoleto, Lon
public Boolean atualizaRemessa(Empresa empresa, ArquivoRemessa arquivoRemessa) throws Exception; public Boolean atualizaRemessa(Empresa empresa, ArquivoRemessa arquivoRemessa) throws Exception;
public List<Empresa> getEmpresas(); public List<Empresa> getEmpresas();
public boolean temPermissao();
public boolean boletosOk(List<FechamentoBoleto> boletos);
} }

View File

@ -8,11 +8,13 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.ArquivoRemessa; import com.rjconsultores.ventaboletos.ArquivoRemessa;
import com.rjconsultores.ventaboletos.dao.ConstanteDAO;
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;
import com.rjconsultores.ventaboletos.enuns.BancoLayout; import com.rjconsultores.ventaboletos.enuns.BancoLayout;
import com.rjconsultores.ventaboletos.service.ArquivoRemessaCNAB; import com.rjconsultores.ventaboletos.service.ArquivoRemessaCNAB;
import com.rjconsultores.ventaboletos.utils.NossoNumeroUtils;
@Service("arquivoRemessaCNAB") @Service("arquivoRemessaCNAB")
public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB { public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB {
@ -20,6 +22,9 @@ public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB {
@Autowired @Autowired
private RemessaCNABBancosDAO remessaCNABBancosDAO; private RemessaCNABBancosDAO remessaCNABBancosDAO;
@Autowired
private ConstanteDAO constanteDAO;
@Override @Override
public List<FechamentoBoleto> obtenerTodos() { public List<FechamentoBoleto> obtenerTodos() {
return remessaCNABBancosDAO.obtenerTodos(); return remessaCNABBancosDAO.obtenerTodos();
@ -82,5 +87,28 @@ public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB {
public List<Empresa> getEmpresas() { public List<Empresa> getEmpresas() {
return remessaCNABBancosDAO.getEmpresas(); return remessaCNABBancosDAO.getEmpresas();
} }
@Override
public boolean temPermissao(){
return constanteDAO.buscarPorNomeConstante("USA_REMESSA_CNAB") != null;
}
@Override
public boolean boletosOk(List<FechamentoBoleto> boletos) {
BancoLayout banco = null;
for (FechamentoBoleto fechamentoBoleto : boletos) {
if(banco == null){
banco = BancoLayout.getInstanceByCodBanco(remessaCNABBancosDAO.findBanco(fechamentoBoleto.getFechamentoCntcorrente().getEmpresa()));
}
if(!NossoNumeroUtils.validaNossoNumero(fechamentoBoleto.getNossonumero(), banco)){
return Boolean.FALSE;
}
}
return Boolean.TRUE;
}
} }