valdevir 2017-02-20 13:28:46 +00:00
parent 98755d5ceb
commit 7b757d5cc4
7 changed files with 110 additions and 30 deletions

View File

@ -10,6 +10,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque; import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
/** /**
* *
@ -26,7 +27,7 @@ public interface PuntoVentaDAO extends GenericDAO<PuntoVenta, Integer> {
public List<PuntoVenta> buscaPuntoVentaParada(Parada parada); public List<PuntoVenta> buscaPuntoVentaParada(Parada parada);
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa); public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa);
public List<PuntoVenta> buscarPuntoVentaSubordinados(PuntoVenta puntoVenta); public List<PuntoVenta> buscarPuntoVentaSubordinados(PuntoVenta puntoVenta);

View File

@ -8,16 +8,16 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
import org.hibernate.Criteria; import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Query; import org.hibernate.Query;
import org.hibernate.Session; import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order; import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.hibernate.transform.AliasToBeanResultTransformer; 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.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository; 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.Parada;
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque; import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta; 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<PuntoVenta, Inte
return c.list(); return c.list();
} }
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa) { public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa) {
Criteria c = getSession().createCriteria(getPersistentClass()); StringBuilder sb = new StringBuilder();
c.add(Restrictions.eq("activo", Boolean.TRUE)); sb.append(" select ");
c.add(Restrictions.eq("empresa", empresa)); sb.append(" DISTINCT ");
c.addOrder(Order.asc("nombpuntoventa")); 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<PuntoVentaVO> puntosVenta = sql.list();
return puntosVenta;
return c.list();
} }
@Override @Override

View File

@ -291,7 +291,10 @@ public class PuntoVenta implements Serializable {
public PuntoVenta(Integer puntoventaId) { public PuntoVenta(Integer puntoventaId) {
this.puntoventaId = puntoventaId; this.puntoventaId = puntoventaId;
} }
public PuntoVenta(Integer puntoventaId, String nombpuntoventa ) {
this.puntoventaId = puntoventaId;
this.nombpuntoventa = nombpuntoventa;
}
public Integer getPuntoventaId() { public Integer getPuntoventaId() {
return puntoventaId; return puntoventaId;
} }

View File

@ -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;
}
}

View File

@ -9,6 +9,7 @@ import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
import com.rjconsultores.ventaboletos.entidad.Usuario; import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.exception.IntegracionException; import com.rjconsultores.ventaboletos.exception.IntegracionException;
@ -44,5 +45,5 @@ public interface PuntoVentaService {
public List<PuntoVenta> buscarPuntosVentaPorUsuario(Usuario usuario); public List<PuntoVenta> buscarPuntosVentaPorUsuario(Usuario usuario);
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa); public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa);
} }

View File

@ -28,6 +28,7 @@ import com.rjconsultores.ventaboletos.entidad.Conferencia;
import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.LogConferencia; import com.rjconsultores.ventaboletos.entidad.LogConferencia;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
import com.rjconsultores.ventaboletos.enums.IndStatusBoleto; import com.rjconsultores.ventaboletos.enums.IndStatusBoleto;
import com.rjconsultores.ventaboletos.enums.comissao.BoletoStatusComissao; import com.rjconsultores.ventaboletos.enums.comissao.BoletoStatusComissao;
import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.BusinessException;
@ -629,60 +630,68 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public void generacionAutomaticaConferencia() { public void generacionAutomaticaConferencia() {
List<PuntoVenta> lsPuntoVenta; List<PuntoVentaVO> lsPuntoVenta;
List<ConferenciaComissaoVO> lsConferenciaComissao; List<ConferenciaComissaoVO> lsConferenciaComissao;
Conferencia conferencia; Conferencia conferencia;
// Perocorrer todas as empresas cadastradas // Perocorrer todas as empresas cadastradas
List<Empresa> lsEmpresa = empresaService.obtenerTodos(); List<Empresa> lsEmpresa = empresaService.obtenerTodos();
for (Empresa empresa : lsEmpresa) { for (Empresa empresa : lsEmpresa) {
lsPuntoVenta = puntoVentaService.buscaPuntoVentaEmpresa(empresa); lsPuntoVenta = puntoVentaService.buscaPuntoVentaEmpresaSemECF(empresa);
for (PuntoVenta puntoVenta : lsPuntoVenta) { 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. // Valida se cada ponto de venda tem ao menos uma ecf, caso tenha aborta o processo.
Integer qtdadeECF = quantidadeECFPorPuntoVenta(empresa.getEmpresaId(), puntoVenta.getPuntoventaId()); //Integer qtdadeECF = quantidadeECFPorPuntoVenta(empresa.getEmpresaId(), puntoVenta.getPuntoventaId());
if (qtdadeECF >= 1) { //if (qtdadeECF >= 1) {
log.info("Existe ECF para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDate()); // log.info("Existe ECF para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDate());
continue; // continue;
} //}
//if(empresa.getEmpresaId() == 20 && puntoVentaVO.getPuntoventaId()==636){
// System.out.println("Teste");
//}
try { 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 // 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()); lsConferenciaComissao = carregarConferenciaComissao(null, empresa, puntoVenta, DateUtil.getYesterdayDate());
if ((CollectionUtils.isEmpty(lsConferenciaComissao)) || (!CollectionUtils.isEmpty(lsConferenciaComissao.get(0).getDias()) && lsConferenciaComissao.get(0).getDias().size() < 1)) { 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; continue;
} }
// Confirma chegada do malote // Confirma chegada do malote
conferencia = obtenerConferenciaDataMovimento(DateUtil.getYesterdayDate(), puntoVenta.getPuntoventaId(), empresa.getEmpresaId()); conferencia = obtenerConferenciaDataMovimento(DateUtil.getYesterdayDate(), puntoVentaVO.getPuntoventaId(), empresa.getEmpresaId());
if (conferencia == null) { if (conferencia == null) {
conferencia = new Conferencia(); conferencia = new Conferencia();
conferencia.setActivo(Boolean.TRUE); conferencia.setActivo(Boolean.TRUE);
conferencia.setFecmodif(new Date()); conferencia.setFecmodif(new Date());
conferencia.setUsuarioId(1); conferencia.setUsuarioId(1);
conferencia.setEmpresa(empresa); conferencia.setEmpresa(empresa);
conferencia.setPuntoVenta(new PuntoVenta( puntoVenta.getPuntoventaId())); conferencia.setPuntoVenta(new PuntoVenta( puntoVentaVO.getPuntoventaId()));
conferencia.setDatamovimento(DateUtil.getYesterdayDate()); conferencia.setDatamovimento(DateUtil.getYesterdayDate());
} }
else{ else{
//Se existe a conferência com status conferido para esta empresa e ponto de venda no dia de ontem, aborta. //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()){ 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; continue;
} }
} }
//Valida se existe alguma pendência que impede o fechamento. //Valida se existe alguma pendência que impede o fechamento.
if(!validaConferencia(conferencia)){ 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; continue;
} }
//Confirma chegada do malote //Confirma chegada do malote
conferencia = confirmarChegadaMalote(conferencia); 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 // Encerra Movimento
encerrarMovimentoDiario(conferencia); 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) { } catch (BusinessException e) {
log.error("Erro ao buscar/validar conferência para o dia " + DateUtil.getYesterdayDateString(), e); log.error("Erro ao buscar/validar conferência para o dia " + DateUtil.getYesterdayDateString(), e);
continue; continue;

View File

@ -30,6 +30,7 @@ import com.rjconsultores.ventaboletos.entidad.Estacion;
import com.rjconsultores.ventaboletos.entidad.FormaPagoDet; import com.rjconsultores.ventaboletos.entidad.FormaPagoDet;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
import com.rjconsultores.ventaboletos.entidad.Usuario; import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.exception.IntegracionException; import com.rjconsultores.ventaboletos.exception.IntegracionException;
@ -735,8 +736,8 @@ public class PuntoVentaServiceImpl implements PuntoVentaService {
} }
@Override @Override
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa) { public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa) {
return puntoVentaDAO.buscaPuntoVentaEmpresa(empresa); return puntoVentaDAO.buscaPuntoVentaEmpresaSemECF(empresa);
} }
} }