From 7b757d5cc4de6c8e2837d0816c530ed7d80fd4c8 Mon Sep 17 00:00:00 2001 From: valdevir Date: Mon, 20 Feb 2017 13:28:46 +0000 Subject: [PATCH] fixes bug #8371 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@66065 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/PuntoVentaDAO.java | 3 +- .../dao/hibernate/PuntoVentaHibernateDAO.java | 56 +++++++++++++++---- .../ventaboletos/entidad/PuntoVenta.java | 5 +- .../ventaboletos/entidad/PuntoVentaVO.java | 29 ++++++++++ .../service/PuntoVentaService.java | 3 +- .../impl/ConferenciaComissaoServiceImpl.java | 39 ++++++++----- .../service/impl/PuntoVentaServiceImpl.java | 5 +- 7 files changed, 110 insertions(+), 30 deletions(-) create mode 100644 src/com/rjconsultores/ventaboletos/entidad/PuntoVentaVO.java diff --git a/src/com/rjconsultores/ventaboletos/dao/PuntoVentaDAO.java b/src/com/rjconsultores/ventaboletos/dao/PuntoVentaDAO.java index 3a6aa403c..b153cfddf 100644 --- a/src/com/rjconsultores/ventaboletos/dao/PuntoVentaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/PuntoVentaDAO.java @@ -10,6 +10,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO; /** * @@ -26,7 +27,7 @@ public interface PuntoVentaDAO extends GenericDAO { public List buscaPuntoVentaParada(Parada parada); - public List buscaPuntoVentaEmpresa(Empresa empresa); + public List buscaPuntoVentaEmpresaSemECF(Empresa empresa); public List buscarPuntoVentaSubordinados(PuntoVenta puntoVenta); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/PuntoVentaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/PuntoVentaHibernateDAO.java index 01a338b59..a7da5e90f 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/PuntoVentaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/PuntoVentaHibernateDAO.java @@ -8,16 +8,16 @@ import java.math.BigDecimal; import java.util.List; import org.hibernate.Criteria; -import org.hibernate.FetchMode; import org.hibernate.Query; -import org.hibernate.Session; +import org.hibernate.SQLQuery; import org.hibernate.SessionFactory; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; -import org.hibernate.criterion.Projection; import org.hibernate.criterion.Restrictions; import org.hibernate.transform.AliasToBeanResultTransformer; +import org.hibernate.type.IntegerType; +import org.hibernate.type.StringType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; @@ -28,7 +28,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; -import com.rjconsultores.ventaboletos.entidad.Usuario; +import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO; /** * @@ -109,13 +109,49 @@ public class PuntoVentaHibernateDAO extends GenericHibernateDAO buscaPuntoVentaEmpresa(Empresa empresa) { - Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("activo", Boolean.TRUE)); - c.add(Restrictions.eq("empresa", empresa)); - c.addOrder(Order.asc("nombpuntoventa")); + public List buscaPuntoVentaEmpresaSemECF(Empresa empresa) { + StringBuilder sb = new StringBuilder(); + sb.append(" select "); + sb.append(" DISTINCT "); + sb.append(" pvaux.PUNTOVENTA_ID as puntoventaId, "); + sb.append(" pvaux.NOMBPUNTOVENTA as nombpuntoventa "); + sb.append(" from "); + sb.append(" PUNTO_VENTA pvaux "); + sb.append(" join PTOVTA_EMPRESA PTOVTAE "); + sb.append(" ON (PTOVTAE.PUNTOVENTA_ID = PVAUX.PUNTOVENTA_ID) "); + sb.append(" where "); + sb.append(" pvaux.PUNTOVENTA_ID not in ( "); + sb.append(" SELECT "); + sb.append(" DISTINCT pv.PUNTOVENTA_ID "); + sb.append(" FROM "); + sb.append(" PUNTO_VENTA pv "); + sb.append(" INNER JOIN "); + sb.append(" ESTACION E "); + sb.append(" ON pv.PUNTOVENTA_ID = E .PUNTOVENTA_ID "); + sb.append(" INNER JOIN "); + sb.append(" ESTACION_IMPRESORA ei "); + sb.append(" ON ei.ESTACION_ID = E .ESTACION_ID "); + sb.append(" WHERE "); + sb.append(" ( (ei.TIPOIMPRESSORA = 1 "); + sb.append(" OR ei.TIPOIMPRESSORA = 2) ) "); + sb.append(" AND ei.ACTIVO = 1 "); + sb.append(" AND ei.EMPRESA_ID = :empresa_id "); + sb.append(" /* ORDER BY PUNTOVENTA_ID*/ "); + sb.append(" ) "); + sb.append(" and PTOVTAE.EMPRESA_ID = :empresa_id "); + sb.append(" and PTOVTAE.ACTIVO = 1 "); + sb.append(" AND pvaux.ACTIVO = 1 "); + sb.append(" AND pvaux.PUNTOVENTA_ID <> -1 "); + sb.append(" ORDER BY "); + sb.append(" pvaux.PUNTOVENTA_ID "); + SQLQuery sql = getSession().createSQLQuery(sb.toString()) + .addScalar("puntoventaId", IntegerType.INSTANCE) + .addScalar("nombpuntoventa", StringType.INSTANCE); + sql.setInteger("empresa_id", empresa.getEmpresaId()); + sql.setResultTransformer(new AliasToBeanResultTransformer(PuntoVentaVO.class)); + List puntosVenta = sql.list(); + return puntosVenta; - return c.list(); } @Override diff --git a/src/com/rjconsultores/ventaboletos/entidad/PuntoVenta.java b/src/com/rjconsultores/ventaboletos/entidad/PuntoVenta.java index e0de4719b..7e2081633 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/PuntoVenta.java +++ b/src/com/rjconsultores/ventaboletos/entidad/PuntoVenta.java @@ -291,7 +291,10 @@ public class PuntoVenta implements Serializable { public PuntoVenta(Integer puntoventaId) { this.puntoventaId = puntoventaId; } - + public PuntoVenta(Integer puntoventaId, String nombpuntoventa ) { + this.puntoventaId = puntoventaId; + this.nombpuntoventa = nombpuntoventa; + } public Integer getPuntoventaId() { return puntoventaId; } diff --git a/src/com/rjconsultores/ventaboletos/entidad/PuntoVentaVO.java b/src/com/rjconsultores/ventaboletos/entidad/PuntoVentaVO.java new file mode 100644 index 000000000..3f42649c7 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/entidad/PuntoVentaVO.java @@ -0,0 +1,29 @@ +package com.rjconsultores.ventaboletos.entidad; + +public class PuntoVentaVO { + + private Integer puntoventaId; + public String nombpuntoventa; + + public String getNombpuntoventa() { + return nombpuntoventa; + } + + public void setNombpuntoventa(String nombpuntoventa) { + this.nombpuntoventa = nombpuntoventa; + } + + public Integer getPuntoventaId() { + return puntoventaId; + } + + public void setPuntoventaId(Integer puntoventaId) { + this.puntoventaId = puntoventaId; + } + + + @Override + public String toString(){ + return nombpuntoventa; + } +} diff --git a/src/com/rjconsultores/ventaboletos/service/PuntoVentaService.java b/src/com/rjconsultores/ventaboletos/service/PuntoVentaService.java index 2c7008963..78a6dac08 100644 --- a/src/com/rjconsultores/ventaboletos/service/PuntoVentaService.java +++ b/src/com/rjconsultores/ventaboletos/service/PuntoVentaService.java @@ -9,6 +9,7 @@ import java.util.List; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO; import com.rjconsultores.ventaboletos.entidad.Usuario; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.IntegracionException; @@ -44,5 +45,5 @@ public interface PuntoVentaService { public List buscarPuntosVentaPorUsuario(Usuario usuario); - public List buscaPuntoVentaEmpresa(Empresa empresa); + public List buscaPuntoVentaEmpresaSemECF(Empresa empresa); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java index 77206dc1d..8e93ad3e6 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java @@ -28,6 +28,7 @@ import com.rjconsultores.ventaboletos.entidad.Conferencia; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.LogConferencia; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO; import com.rjconsultores.ventaboletos.enums.IndStatusBoleto; import com.rjconsultores.ventaboletos.enums.comissao.BoletoStatusComissao; import com.rjconsultores.ventaboletos.exception.BusinessException; @@ -629,60 +630,68 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic @Transactional(readOnly = true, propagation = Propagation.SUPPORTS) public void generacionAutomaticaConferencia() { - List lsPuntoVenta; + List lsPuntoVenta; List lsConferenciaComissao; Conferencia conferencia; // Perocorrer todas as empresas cadastradas List lsEmpresa = empresaService.obtenerTodos(); for (Empresa empresa : lsEmpresa) { - lsPuntoVenta = puntoVentaService.buscaPuntoVentaEmpresa(empresa); - for (PuntoVenta puntoVenta : lsPuntoVenta) { + lsPuntoVenta = puntoVentaService.buscaPuntoVentaEmpresaSemECF(empresa); + for (PuntoVentaVO puntoVentaVO : lsPuntoVenta) { + //TODO - Apagar comentários após finalizar testes mantis 8371 + //if(empresa.getEmpresaId() == 20){ + // System.out.println("Teste"); + //} // Valida se cada ponto de venda tem ao menos uma ecf, caso tenha aborta o processo. - Integer qtdadeECF = quantidadeECFPorPuntoVenta(empresa.getEmpresaId(), puntoVenta.getPuntoventaId()); - if (qtdadeECF >= 1) { - log.info("Existe ECF para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDate()); - continue; - } + //Integer qtdadeECF = quantidadeECFPorPuntoVenta(empresa.getEmpresaId(), puntoVenta.getPuntoventaId()); + //if (qtdadeECF >= 1) { + // log.info("Existe ECF para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDate()); + // continue; + //} + //if(empresa.getEmpresaId() == 20 && puntoVentaVO.getPuntoventaId()==636){ + // System.out.println("Teste"); + //} try { + PuntoVenta puntoVenta = new PuntoVenta(puntoVentaVO.getPuntoventaId(), puntoVentaVO.getNombpuntoventa()); // Busca o Movimento para o dia de ontem, caso não exista aborta para este ponto de venda lsConferenciaComissao = carregarConferenciaComissao(null, empresa, puntoVenta, DateUtil.getYesterdayDate()); if ((CollectionUtils.isEmpty(lsConferenciaComissao)) || (!CollectionUtils.isEmpty(lsConferenciaComissao.get(0).getDias()) && lsConferenciaComissao.get(0).getDias().size() < 1)) { - log.info("Não há conferência para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); + log.info("Não há conferência para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); continue; } // Confirma chegada do malote - conferencia = obtenerConferenciaDataMovimento(DateUtil.getYesterdayDate(), puntoVenta.getPuntoventaId(), empresa.getEmpresaId()); + conferencia = obtenerConferenciaDataMovimento(DateUtil.getYesterdayDate(), puntoVentaVO.getPuntoventaId(), empresa.getEmpresaId()); if (conferencia == null) { conferencia = new Conferencia(); conferencia.setActivo(Boolean.TRUE); conferencia.setFecmodif(new Date()); conferencia.setUsuarioId(1); conferencia.setEmpresa(empresa); - conferencia.setPuntoVenta(new PuntoVenta( puntoVenta.getPuntoventaId())); + conferencia.setPuntoVenta(new PuntoVenta( puntoVentaVO.getPuntoventaId())); conferencia.setDatamovimento(DateUtil.getYesterdayDate()); } else{ //Se existe a conferência com status conferido para esta empresa e ponto de venda no dia de ontem, aborta. if(Boolean.TRUE == conferencia.getIndconferido()){ - log.info("Já existe conferência com status conferido para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); + log.info("Já existe conferência com status conferido para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); continue; } } //Valida se existe alguma pendência que impede o fechamento. if(!validaConferencia(conferencia)){ - log.info("Será necessário realizar Conferência Manual para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); + log.info("Não há bilhetes para conferir ou será necessário realizar Conferência Manual para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); continue; } //Confirma chegada do malote conferencia = confirmarChegadaMalote(conferencia); - log.info("Realizado confirmação de chegada do malote para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); + log.info("Realizado confirmação de chegada do malote para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); // Encerra Movimento encerrarMovimentoDiario(conferencia); - log.info("Conferência de Movimento para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString() + "realizada com sucesso."); + log.info("Conferência de Movimento para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString() + "realizada com sucesso."); } catch (BusinessException e) { log.error("Erro ao buscar/validar conferência para o dia " + DateUtil.getYesterdayDateString(), e); continue; diff --git a/src/com/rjconsultores/ventaboletos/service/impl/PuntoVentaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/PuntoVentaServiceImpl.java index 7459ceaf4..f17651f09 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/PuntoVentaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/PuntoVentaServiceImpl.java @@ -30,6 +30,7 @@ import com.rjconsultores.ventaboletos.entidad.Estacion; import com.rjconsultores.ventaboletos.entidad.FormaPagoDet; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO; import com.rjconsultores.ventaboletos.entidad.Usuario; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.IntegracionException; @@ -735,8 +736,8 @@ public class PuntoVentaServiceImpl implements PuntoVentaService { } @Override - public List buscaPuntoVentaEmpresa(Empresa empresa) { - return puntoVentaDAO.buscaPuntoVentaEmpresa(empresa); + public List buscaPuntoVentaEmpresaSemECF(Empresa empresa) { + return puntoVentaDAO.buscaPuntoVentaEmpresaSemECF(empresa); } }