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.PtovtaTipoEstoque;
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> buscaPuntoVentaEmpresa(Empresa empresa);
public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa);
public List<PuntoVenta> buscarPuntoVentaSubordinados(PuntoVenta puntoVenta);

View File

@ -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<PuntoVenta, Inte
return c.list();
}
public List<PuntoVenta> 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<PuntoVentaVO> 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<PuntoVentaVO> puntosVenta = sql.list();
return puntosVenta;
return c.list();
}
@Override

View File

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

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.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<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.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<PuntoVenta> lsPuntoVenta;
List<PuntoVentaVO> lsPuntoVenta;
List<ConferenciaComissaoVO> lsConferenciaComissao;
Conferencia conferencia;
// Perocorrer todas as empresas cadastradas
List<Empresa> 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;

View File

@ -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<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa) {
return puntoVentaDAO.buscaPuntoVentaEmpresa(empresa);
public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa) {
return puntoVentaDAO.buscaPuntoVentaEmpresaSemECF(empresa);
}
}