fixes bug#20993

dev: Valvevir
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@104454 d1611594-4594-4d17-8e1d-87c2c4800839
master
fabio 2020-11-23 18:10:37 +00:00
parent 114b73da6d
commit 2fc7e9974f
9 changed files with 165 additions and 54 deletions

View File

@ -54,4 +54,6 @@ public interface ParadaDAO {
public List<Parada> buscaParadaRegionMetropolitana(RegionMetropolitana regionMetropolitana);
public List<Parada> buscarListaPorIds(List<Integer> paradaIds);
public Parada buscarPorId(Integer paradaId);
}

View File

@ -4,18 +4,17 @@
*/
package com.rjconsultores.ventaboletos.dao;
import java.math.BigDecimal;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.Moneda;
import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Plaza;
import com.rjconsultores.ventaboletos.entidad.TarifaMinima;
import com.rjconsultores.ventaboletos.entidad.TarifaMinimaCategoria;
import java.math.BigDecimal;
import java.util.List;
/**
*
* @author rodrigo
@ -48,5 +47,7 @@ public interface TarifaMinimaDAO extends GenericDAO<TarifaMinima, Integer> {
public TarifaMinimaCategoria adicionarTarifaMinimaCategoria(TarifaMinimaCategoria tarifaMinimaCategoria);
public void removerTarifaMinimaCategoria(TarifaMinimaCategoria tarifaMinimaCategoria);
public BigDecimal obtenerTarifaMinima(Integer claseServicioId, Integer marcaId, Integer origenConsultaId, Integer destinoConsultaId, Integer plazaId, Integer monedaId, Integer rutaId, Integer categoriaId);
}

View File

@ -44,13 +44,8 @@ public class CategoriaDescuentoHibernateDAO
.add(Restrictions.eq("activo", Boolean.TRUE))
.add(Restrictions.eq("e.empresaId", empresaId))
.add(Restrictions.eq("categoria.categoriaId", categoriaId));
c.setMaxResults(1);
List<CategoriaDescuento> list = c.list();
if (list == null || list.isEmpty()) {
return null;
} else {
return list.get(0);
}
return (CategoriaDescuento) c.uniqueResult();
}
}

View File

@ -361,11 +361,13 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
private void preencherTramosSequencias(final CorridaVO corrida, PuntoVenta puntoVenta, Empresa empresa) {
boolean isTarifaMinimaHabilitado = Boolean.getBoolean(constanteDAO.buscarPorNomeConstante("isTarifaMinimaHabilitado").getValorconstante());
CategoriaDescuento categoriaDescuento = categoriaDescuentoDAO.pesquisarPorCategoriaEmpresa(Constantes.CATEGORIA_NORMAL, corrida.getEmpresaId());
StringBuilder sb = new StringBuilder();
sb.append(" SELECT");
sb.append(" TRM.TRAMO_ID AS tramoId,");
sb.append(" TRM.DESCTRAMO AS desctramo,");
sb.append(" TRM.TRAMO_ID AS tramoId, ");
sb.append(" TRM.DESCTRAMO AS desctramo, ");
sb.append(" TRM.ORIGEN_ID AS origemId,");
sb.append(" ORI.DESCPARADA AS descOrigem,");
sb.append(" ORICID.CIUDAD_ID AS cidadeOrigemId,");
@ -390,7 +392,11 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
sb.append(" TA.PRECIO AS precio,");
sb.append(" TA.RUTA_ID as rutaId, ");
if(isTarifaMinimaHabilitado) {
/*
* Não aplica tarifa minina quando configurado no tipo de passagem ou quando nao tem a constante
* Mantis #10704 & #20931
*/
if(isTarifaMinimaHabilitado && Boolean.TRUE.equals( categoriaDescuento.getIndnaoaplicatarifaminima()) ) {
sb.append(" (");
sb.append(" select IMPORTETARIFA");
sb.append(" from (");
@ -468,7 +474,7 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
sb.append(" and rownum = 1");
sb.append(" ) as tarifaMinima ");
}else {
sb.append(" null as tarifaMinima ");
sb.append(" 0 as tarifaMinima ");
}
sb.append(" FROM RUTA_COMBINACION RC");
@ -536,7 +542,7 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
query.setParameter("corridaId", corrida.getCorridaId());
query.setParameter("feccorrida", corrida.getFeccorrida() + " 00:00:00");
if(isTarifaMinimaHabilitado) {
if(isTarifaMinimaHabilitado && Boolean.TRUE.equals( categoriaDescuento.getIndnaoaplicatarifaminima()) ) {
query.setParameter("plazaId", puntoVenta.getColonia().getCiudad().getPlaza().getPlazaId());
query.setParameter("claseservicioId", corrida.getClaseServicioId());
query.setParameter("categoriaId", Constantes.CATEGORIA_NORMAL);
@ -544,8 +550,6 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
}
List<TramoSequenciaVO> tramosequencia = query.list();
CategoriaDescuento categoriaDescuento = categoriaDescuentoDAO.pesquisarPorCategoriaEmpresa(Constantes.CATEGORIA_NORMAL, corrida.getEmpresaId());
HashSet<TramoVO> setTramo = new HashSet<TramoVO>();
@ -576,14 +580,6 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
BigDecimal tarifaMinima = ts.getTarifaMinima();
/*
* Não aplica tarifa minina quando configurado no tipo de passagem
* Mantis #10704
*/
if (tarifaMinima == null || (categoriaDescuento != null && categoriaDescuento.getIndnaoaplicatarifaminima() != null && categoriaDescuento.getIndnaoaplicatarifaminima())) {
tarifaMinima = BigDecimal.ZERO;
}
TramoVO tramo = new TramoVO(
ts.getTramoId(),
ts.getDesctramo(),

View File

@ -154,4 +154,13 @@ public class ParadaHibernateDAO extends GenericHibernateDAO<Parada, Integer> imp
return c.list();
}
@Override
public Parada buscarPorId(Integer paradaId) {
Criteria c = this.makeCriteria();
c.add(Restrictions.eq("paradaId", paradaId));
c.add(Restrictions.eq("activo", Boolean.TRUE));
return (Parada) c.uniqueResult();
}
}

View File

@ -9,7 +9,6 @@ import java.util.List;
import org.apache.commons.lang.Validate;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
@ -17,12 +16,15 @@ import org.hibernate.SessionFactory;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.transform.Transformers;
import org.hibernate.type.BigDecimalType;
import org.hibernate.type.DateType;
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;
import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.RutaDAO;
import com.rjconsultores.ventaboletos.dao.TarifaDAO;
import com.rjconsultores.ventaboletos.entidad.Categoria;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
@ -45,11 +47,10 @@ import com.rjconsultores.ventaboletos.vo.comissao.TarifaVO;
*
* @author rodrigo
*/
@SuppressWarnings("unchecked")
@Repository("tarifaDAO")
public class TarifaHibernateDAO extends GenericHibernateDAO<Tarifa, Integer> implements TarifaDAO {
@Autowired
private RutaDAO rutaDAO;
private static Logger log = Logger.getLogger(TarifaHibernateDAO.class);
@Autowired
@ -450,7 +451,27 @@ public class TarifaHibernateDAO extends GenericHibernateDAO<Tarifa, Integer> imp
sql.append(" and rc.tramo_id=t.tramo_id and rc.ruta_id=t.ruta_id and rc.activo=1 and rc.INDVENTA="+simNao);
}
Query qr = getSession().createSQLQuery(sql.toString()).addScalar("tarifaid", Hibernate.INTEGER).addScalar("precio", Hibernate.BIG_DECIMAL).addScalar("preciooriginal", Hibernate.BIG_DECIMAL).addScalar("importepedagio", Hibernate.BIG_DECIMAL).addScalar("importetaxaembarque", Hibernate.BIG_DECIMAL).addScalar("importeseguro", Hibernate.BIG_DECIMAL).addScalar("importetpp", Hibernate.BIG_DECIMAL).addScalar("importeoutros", Hibernate.BIG_DECIMAL).addScalar("statustarifa", Hibernate.STRING).addScalar("descparadaOrigem", Hibernate.STRING).addScalar("descparadaDestino", Hibernate.STRING).addScalar("nomeVia", Hibernate.STRING).addScalar("descMarca", Hibernate.STRING).addScalar("feciniciovigencia", Hibernate.DATE).addScalar("fecfimvigencia", Hibernate.DATE).addScalar("descclasse", Hibernate.STRING).addScalar("descorgao", Hibernate.STRING).addScalar("rutaprefixo", Hibernate.STRING).addScalar("numruta", Hibernate.STRING).setResultTransformer(Transformers.aliasToBean(TarifaVO.class));
Query qr = getSession().createSQLQuery(sql.toString())
.addScalar("tarifaid", IntegerType.INSTANCE)
.addScalar("precio", BigDecimalType.INSTANCE)
.addScalar("preciooriginal", BigDecimalType.INSTANCE)
.addScalar("importepedagio", BigDecimalType.INSTANCE)
.addScalar("importetaxaembarque", BigDecimalType.INSTANCE)
.addScalar("importeseguro", BigDecimalType.INSTANCE)
.addScalar("importetpp", BigDecimalType.INSTANCE)
.addScalar("importeoutros", BigDecimalType.INSTANCE)
.addScalar("statustarifa", StringType.INSTANCE)
.addScalar("descparadaOrigem", StringType.INSTANCE)
.addScalar("descparadaDestino", StringType.INSTANCE)
.addScalar("nomeVia", StringType.INSTANCE)
.addScalar("descMarca", StringType.INSTANCE)
.addScalar("feciniciovigencia", DateType.INSTANCE)
.addScalar("fecfimvigencia", DateType.INSTANCE)
.addScalar("descclasse", StringType.INSTANCE)
.addScalar("descorgao", StringType.INSTANCE)
.addScalar("rutaprefixo", StringType.INSTANCE)
.addScalar("numruta", StringType.INSTANCE)
.setResultTransformer(Transformers.aliasToBean(TarifaVO.class));
qr.setMaxResults(5000);
return (List<TarifaVO>) qr.list();

View File

@ -4,20 +4,11 @@
*/
package com.rjconsultores.ventaboletos.dao.hibernate;
import com.rjconsultores.ventaboletos.dao.TarifaMinimaDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.Moneda;
import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Plaza;
import com.rjconsultores.ventaboletos.entidad.TarifaMinima;
import com.rjconsultores.ventaboletos.entidad.TarifaMinimaCategoria;
import java.math.BigDecimal;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Disjunction;
@ -27,10 +18,20 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.TarifaMinimaDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.Moneda;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Plaza;
import com.rjconsultores.ventaboletos.entidad.TarifaMinima;
import com.rjconsultores.ventaboletos.entidad.TarifaMinimaCategoria;
/**
*
* @author rodrigo
*/
@SuppressWarnings("unchecked")
@Repository("tarifaMinimaDAO")
public class TarifaMinimaHibernateDAO extends GenericHibernateDAO<TarifaMinima, Integer>
implements TarifaMinimaDAO {
@ -228,4 +229,69 @@ public class TarifaMinimaHibernateDAO extends GenericHibernateDAO<TarifaMinima,
public void removerTarifaMinimaCategoria(TarifaMinimaCategoria tarifaMinimaCategoria) {
getSession().merge(tarifaMinimaCategoria);
}
@Override
@Transactional
public BigDecimal obtenerTarifaMinima(Integer claseServicioId, Integer marcaId, Integer origenConsultaId,
Integer destinoConsultaId, Integer plazaId, Integer monedaId, Integer rutaId, Integer categoriaId ) {
BigDecimal tarifaMinima = BigDecimal.ZERO;
StringBuilder hql = new StringBuilder("select tm from TarifaMinima tm ")
.append("left join tm.orgaoConcedente oc ")
.append("left join tm.tarifaMinimaCategorias tmc ")
.append("left join tm.vigenciaTarifa vige ")
.append("left join tm.regionMetropolitana.paradaList ori ")
.append("left join tm.regionMetropolitana.paradaList des ")
.append("where tm.activo = 1 ")
.append("and tm.plaza.plazaId in (:plazaId, -1) ")
.append("and tm.claseServicio.claseservicioId in (:claseServId, -1) ")
.append("and tm.marca.marcaId in (:marcaId, -1) ")
.append("and (ori.paradaId in (:origenId, -1) or ori.paradaId is null ) ")
.append("and (des.paradaId in (:destinoId,-1) or des.paradaId is null ) ")
.append("and (tm.origem.paradaId in (:origenId, -1) or tm.origem.paradaId is null) ")
.append("and (tm.destino.paradaId in (:destinoId, -1) or tm.destino.paradaId is null) ")
.append("and (tm.ruta.rutaId is null or tm.ruta.rutaId in (:rutaId, -1)) ");
if (categoriaId != null) {
hql.append("and (tmc is null or tmc.categoria.categoriaId in (:categoriaId, -1)) ");
}
hql.append(" and tm.moneda.monedaId = :monedaId ")
.append(" and (oc is null or oc.orgaoConcedenteId = -1 or oc.orgaoConcedenteId = ")
.append(" (select distinct r.orgaoConcedente.orgaoConcedenteId from Ruta r")
.append(" left join r.rutaCombinacionList rc")
.append(" left join rc.tramo tr")
.append(" left join tr.lsOrgaoTramo ot")
.append(" where rc.ruta.rutaId = :rutaId")
.append(" and (tm.coeficienteTarifa.coeficienteId in ")
.append(" (ot.coeficienteTarifa1.coeficienteId, ot.coeficienteTarifa2.coeficienteId, ot.coeficienteTarifa3.coeficienteId ) ")
.append(" and tr.origem = :origenId ")
.append(" and tr.destino = :destinoId ")
.append(" or tm.coeficienteTarifa is null ) )) ")
.append(" and sysdate between vige.feciniciovigencia and vige.fecfinvigencia ")
.append(" order by tm.plaza.plazaId desc, tm.origem.paradaId desc, ")
.append(" tm.destino.paradaId desc, tm.claseServicio.claseservicioId desc, ")
.append(" tm.marca.marcaId desc");
Query miQry = getSession().createQuery(hql.toString());
miQry.setInteger("plazaId", plazaId);
miQry.setInteger("claseServId", claseServicioId);
miQry.setInteger("marcaId", marcaId);
miQry.setInteger("origenId", origenConsultaId);
miQry.setInteger("destinoId", destinoConsultaId);
miQry.setInteger("monedaId", monedaId);
miQry.setInteger("rutaId", rutaId);
if (categoriaId != null) {
miQry.setInteger("categoriaId", categoriaId);
}
List<TarifaMinima> listTarifaMinima = miQry.list();
if (!listTarifaMinima.isEmpty()) {
tarifaMinima = listTarifaMinima.get(0).getImportetarifa();
}
return tarifaMinima;
}
}

View File

@ -153,13 +153,13 @@ public class TramoHibernateDAO extends GenericHibernateDAO<Tramo, Integer>
c.add(Restrictions.eq("via", via));
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.setFetchMode("origem", FetchMode.LAZY);
c.setFetchMode("destino", FetchMode.LAZY);
c.setFetchMode("lsTramoTiempo", FetchMode.LAZY);
c.setFetchMode("rutaSecuenciaList", FetchMode.LAZY);
c.setFetchMode("rutaCombinacionList", FetchMode.LAZY);
c.setFetchMode("tramoServicioList", FetchMode.LAZY);
c.setFetchMode("tramoKms", FetchMode.LAZY);
c.setFetchMode("origem", FetchMode.SELECT);
c.setFetchMode("destino", FetchMode.SELECT);
c.setFetchMode("lsTramoTiempo", FetchMode.SELECT);
c.setFetchMode("rutaSecuenciaList", FetchMode.SELECT);
c.setFetchMode("rutaCombinacionList", FetchMode.SELECT);
c.setFetchMode("tramoServicioList", FetchMode.SELECT);
c.setFetchMode("tramoKms", FetchMode.SELECT);
Criteria c2 = c.createCriteria("tramoServicioList");
c2.add(Restrictions.eq("claseServicio", claseServicio));
@ -204,15 +204,17 @@ public class TramoHibernateDAO extends GenericHibernateDAO<Tramo, Integer>
StringBuilder sql = new StringBuilder();
sql.append(" SELECT ");
sql.append(" trm.tramo_id AS tramoid, ");
sql.append(" trm.desctramo AS desctramo, ");
sql.append(" trm.origen_id AS origemId, ");
sql.append(" trm.destino_id AS destinoId, ");
sql.append(" trm.tramo_id AS tramoid, ");
sql.append(" trm.desctramo AS desctramo, ");
sql.append(" trm.origen_id AS origemId, ");
sql.append(" trm.destino_id AS destinoId, ");
sql.append(" ta.moneda_id AS monedaId, ");
sql.append(" coalesce(ta.importetaxaembarque, 0) AS valorTaxa, ");
sql.append(" coalesce(ta.importepedagio, 0) AS valorPedagio, ");
sql.append(" coalesce(ta.importeoutros, 0) AS valorOutros, ");
sql.append(" coalesce(ta.importeseguro, 0) AS valorSeguro, ");
sql.append(" coalesce(ta.precio, 0) AS valorTarifa ");
sql.append(" coalesce(ta.precio, 0) AS valorTarifa, ");
sql.append(" 0 AS tarifaMinima ");
sql.append(" FROM ");
sql.append(" ruta_combinacion rc ");
sql.append(" JOIN tramo trm ON trm.tramo_id = rc.tramo_id AND trm.activo = 1 ");
@ -255,12 +257,13 @@ public class TramoHibernateDAO extends GenericHibernateDAO<Tramo, Integer>
.addScalar("desctramo", StringType.INSTANCE)
.addScalar("origemId", IntegerType.INSTANCE)
.addScalar("destinoId", IntegerType.INSTANCE)
// .addScalar("rutaId", IntegerType.INSTANCE)
.addScalar("monedaId", IntegerType.INSTANCE)
.addScalar("valorTaxa", BigDecimalType.INSTANCE)
.addScalar("valorPedagio", BigDecimalType.INSTANCE)
.addScalar("valorOutros", BigDecimalType.INSTANCE)
.addScalar("valorSeguro", BigDecimalType.INSTANCE)
.addScalar("valorTarifa", BigDecimalType.INSTANCE)
.addScalar("tarifaMinima", BigDecimalType.INSTANCE)
.setResultTransformer(Transformers.aliasToBean(TramoVO.class));
String[] split = chaveCorrida.split(";");

View File

@ -20,6 +20,7 @@ public class TramoVO implements Serializable{
private BigDecimal valorSeguro;
private BigDecimal valorPedagio;
private BigDecimal valorOutros;
private BigDecimal tarifaMinima;
private Integer aliasorigenId;
private Integer aliasdestinoId;
private String descAliasorigen;
@ -28,6 +29,7 @@ public class TramoVO implements Serializable{
private Integer origemId;
private Integer destinoId;
private Integer rutaId;
private Integer monedaId;
public TramoVO() {
//construtor default
@ -208,4 +210,20 @@ public class TramoVO implements Serializable{
this.rutaId = rutaId;
}
public BigDecimal getTarifaMinima() {
return tarifaMinima;
}
public void setTarifaMinima(BigDecimal tarifaMinima) {
this.tarifaMinima = tarifaMinima;
}
public Integer getMonedaId() {
return monedaId;
}
public void setMonedaId(Integer monedaId) {
this.monedaId = monedaId;
}
}