diff --git a/src/java/com/rjconsultores/ventaboletos/rest/service/SincronizarTramoService.java b/src/java/com/rjconsultores/ventaboletos/rest/service/SincronizarTramoService.java index 33ab29f51..99595eba8 100644 --- a/src/java/com/rjconsultores/ventaboletos/rest/service/SincronizarTramoService.java +++ b/src/java/com/rjconsultores/ventaboletos/rest/service/SincronizarTramoService.java @@ -1,5 +1,6 @@ package com.rjconsultores.ventaboletos.rest.service; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -8,9 +9,15 @@ import org.apache.commons.collections.Predicate; import org.springframework.stereotype.Service; import com.rjconsultores.routing.ReadOnlyConnection; +import com.rjconsultores.ventaboletos.constantes.Constantes; import com.rjconsultores.ventaboletos.dao.AliasServicoDAO; +import com.rjconsultores.ventaboletos.dao.CategoriaDescuentoDAO; +import com.rjconsultores.ventaboletos.dao.ParadaDAO; +import com.rjconsultores.ventaboletos.dao.TarifaMinimaDAO; import com.rjconsultores.ventaboletos.dao.TramoDAO; +import com.rjconsultores.ventaboletos.dao.hibernate.ConstanteHibernateDAO; import com.rjconsultores.ventaboletos.entidad.AliasServico; +import com.rjconsultores.ventaboletos.entidad.CategoriaDescuento; import com.rjconsultores.ventaboletos.rest.bean.ParamsSincronizarTramo; import com.rjconsultores.ventaboletos.vo.corrida.CorridaVO; import com.rjconsultores.ventaboletos.vo.tramo.TramoTarifaVO; @@ -34,14 +41,43 @@ public class SincronizarTramoService { @ReadOnlyConnection public List buscarListaTramosPorId(CorridaVO corridaVO) throws Exception { TramoDAO tramoDAO = (TramoDAO)AppContext.getApplicationContext().getBean("tramoDAO"); + ParadaDAO paradaDAO = (ParadaDAO)AppContext.getApplicationContext().getBean("paradaDAO"); + TarifaMinimaDAO tarifaMinimaDAO = (TarifaMinimaDAO)AppContext.getApplicationContext().getBean("tarifaMinimaDAO"); AliasServicoDAO aliasServicoDAO = (AliasServicoDAO)AppContext.getApplicationContext().getBean("aliasServicoDAO"); + CategoriaDescuentoDAO categoriaDescuentoDAO = (CategoriaDescuentoDAO)AppContext.getApplicationContext().getBean("categoriaDescuentoDAO"); + ConstanteHibernateDAO constanteDAO = (ConstanteHibernateDAO)AppContext.getApplicationContext().getBean("constanteDAO"); List listaTramoVO = tramoDAO.buscarListaPorIds(corridaVO.getListTramos(), corridaVO.getChaveCorrida() ); + + boolean isTarifaMinimaHabilitado = Boolean.getBoolean(constanteDAO.buscarPorNomeConstante("isTarifaMinimaHabilitado").getValorconstante()); + CategoriaDescuento categoriaDescuento = categoriaDescuentoDAO.pesquisarPorCategoriaEmpresa(Constantes.CATEGORIA_NORMAL, corridaVO.getEmpresaId()); List aliasLs = aliasServicoDAO.buscarPorRuta( corridaVO.getRutaId() ); final Integer corridaId = Integer.valueOf( corridaVO.getChaveCorrida().split(";")[0] ); + Integer praca = null; for (TramoVO vo : listaTramoVO) { + //caso valide que algum cliente use mais de uma praça no cadastro, passar a buscar praça a cada tramo + if( praca == null ) { + praca = paradaDAO.buscarPorId(vo.getOrigemId()).getCiudad().getPlaza().getPlazaId(); + } + + if(isTarifaMinimaHabilitado && Boolean.FALSE.equals( categoriaDescuento.getIndnaoaplicatarifaminima()) ) { + BigDecimal tarifaMinima = tarifaMinimaDAO.obtenerTarifaMinima( + corridaVO.getClaseServicioId(), + corridaVO.getMarcaId(), + vo.getOrigemId(), + vo.getDestinoId(), + praca, + vo.getMonedaId(), + corridaVO.getRutaId(), + Constantes.CATEGORIA_NORMAL); + + if( tarifaMinima !=null && tarifaMinima.compareTo(vo.getValorTarifa()) > 0) { + vo.setValorTarifa(tarifaMinima); + } + } + if( aliasLs != null && !aliasLs.isEmpty() ) { final Integer origemId = vo.getOrigemId(); final Integer destinoId = vo.getDestinoId();