From a12a58bd7f881de23bc576f31d1a52fac403ef90 Mon Sep 17 00:00:00 2001 From: gleimar Date: Thu, 27 Sep 2012 19:43:16 +0000 Subject: [PATCH] =?UTF-8?q?-=20Valida=C3=A7=C3=A3o=20na=20remo=C3=A7=C3=A3?= =?UTF-8?q?o/adi=C3=A7=C3=A3o=20de=20tramos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@21839 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/RutaCombinacionDAO.java | 9 + .../ventaboletos/dao/TarifaDAO.java | 67 ++++---- .../RutaCombinacionHibernateDAO.java | 27 ++- .../dao/hibernate/TarifaHibernateDAO.java | 102 ++--------- .../service/RutaCombinacionService.java | 7 + .../ventaboletos/service/TarifaService.java | 14 +- .../ventaboletos/service/TramoService.java | 16 +- .../impl/RutaCombinacionServiceImpl.java | 5 + .../service/impl/TarifaServiceImpl.java | 149 ++-------------- .../service/impl/TramoServiceImpl.java | 160 +++++++++++++++--- .../impl/TramoServicioServiceImpl.java | 8 +- 11 files changed, 268 insertions(+), 296 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/RutaCombinacionDAO.java b/src/com/rjconsultores/ventaboletos/dao/RutaCombinacionDAO.java index 7ff4178ac..8cee72629 100644 --- a/src/com/rjconsultores/ventaboletos/dao/RutaCombinacionDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/RutaCombinacionDAO.java @@ -69,4 +69,13 @@ public interface RutaCombinacionDAO extends GenericDAO public List pesquisaTarifaOficialGroupObj(List lsAddRmvMonedas, List lsAddRmvMarcas, List lsAddRmvClaseServico, List lsAddRmvEmpresas, List lsAddRmvRutas, List lsAddRmvVigenciaTarifa); public List pesquisaTarifaOficialObj(List lsAddRmvMonedas, List lsAddRmvMarcas, List lsAddRmvClaseServico, List lsAddRmvEmpresas, List lsAddRmvRutas, List lsAddRmvVigenciaTarifa); + + /** + * Indica se existe alguma combinação ativa com o tramo informado + * @param tramo + * @return + */ + public boolean existeTramo(Tramo tramo); + + public boolean existeTramo(Tramo tramo, ClaseServicio claseServicio); } diff --git a/src/com/rjconsultores/ventaboletos/dao/TarifaDAO.java b/src/com/rjconsultores/ventaboletos/dao/TarifaDAO.java index 9ae26b3df..2306c59c0 100644 --- a/src/com/rjconsultores/ventaboletos/dao/TarifaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/TarifaDAO.java @@ -23,41 +23,48 @@ import java.util.List; import org.zkoss.web.fn.ServletFns; /** - * + * * @author rodrigo */ public interface TarifaDAO extends GenericDAO { - public List pesquisar(Marca marca, Parada origem, Parada destino, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, - Categoria categoria, TipoPuntoVenta tipoPuntoVenta); + public List pesquisar(Marca marca, Parada origem, Parada destino, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa,Categoria categoria, TipoPuntoVenta tipoPuntoVenta); - /** - * {@link TarifaService#existe(Marca, Tramo, Moneda, ClaseServicio, VigenciaTarifa, Ruta, OrgaoConcedente)} - * - * @param marca - * @param tramo - * @param moneda - * @param claseServicio - * @param vigenciaTarifa - * @param ruta - * @param orgaoConcedente - * @return - */ - public boolean existe(Marca marca, Tramo tramo, Moneda moneda, ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente); - - public List pesquisar(Marca marca, Tramo tramo, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa); + /** + * {@link TarifaService#existe(Marca, Tramo, Moneda, ClaseServicio, VigenciaTarifa, Ruta, OrgaoConcedente)} + * + * @param marca + * @param tramo + * @param moneda + * @param claseServicio + * @param vigenciaTarifa + * @param ruta + * @param orgaoConcedente + * @return + */ + public boolean existe(Marca marca, Tramo tramo, Moneda moneda, ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente); + + public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio,VigenciaTarifa vigenciaTarifa, Moneda moneda, Ruta ruta); - public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio, - VigenciaTarifa vigenciaTarifa, Moneda moneda); + /** + * Lista as tarifas que tem a vigencia informada.
+ * + * As tarifas listadas podem estar ativas ou inativas
+ * + * @param vigencia + * @return + */ + public List buscarTarifasAtivasInativasPorVigencia(VigenciaTarifa vigencia); - public List buscarPorVigencia(VigenciaTarifa vigencia); - - public List pesquisar(List lsMoneda, List lsMarca, - List lsClaseServicio, List lsCategoria, - List lsEmpresa, List lsRuta, - List lsTipoPuntoVenta, List lsVigenciaTarifa); - - public List buscarExisteVigencia(VigenciaTarifa vigenciaTarifa); + /** + * Lista as tarifas que tem a vigencia informada.
+ * + * Só é listado as tarifas ativas
+ * + * @param vigenciaTarifa + * @return + */ + public List buscarTarifasAtivasPorVigencia(VigenciaTarifa vigenciaTarifa); + + public boolean buscarTarifaExisteTramo(Tramo tramo) ; } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaCombinacionHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaCombinacionHibernateDAO.java index 06c33e057..c6227f41e 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaCombinacionHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaCombinacionHibernateDAO.java @@ -46,8 +46,7 @@ import org.hibernate.transform.AliasToBeanResultTransformer; * @author Rafius */ @Repository("rutaCombinacionDAO") -public class RutaCombinacionHibernateDAO extends GenericHibernateDAO - implements RutaCombinacionDAO { +public class RutaCombinacionHibernateDAO extends GenericHibernateDAO implements RutaCombinacionDAO { private static Logger log = LoggerFactory.getLogger(RutaCombinacionHibernateDAO.class); @Autowired @@ -755,5 +754,29 @@ public class RutaCombinacionHibernateDAO extends GenericHibernateDAO 0l; + + } + + @Override + public boolean existeTramo(Tramo tramo, ClaseServicio claseServicio) { + Criteria c = this.makeCriteria(); + c.add(Restrictions.eq("tramo", tramo)); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.setProjection(Projections.rowCount()); + + Criteria cRuta = c.createCriteria("ruta"); + cRuta.add(Restrictions.eq("claseServicio", claseServicio)); + cRuta.add(Restrictions.eq("activo", Boolean.TRUE)); + + return HibernateFix.count(c.list()) > 0l; + + } } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java index b23dd20bd..14265804f 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java @@ -37,8 +37,7 @@ import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa; * @author rodrigo */ @Repository("tarifaDAO") -public class TarifaHibernateDAO extends GenericHibernateDAO - implements TarifaDAO { +public class TarifaHibernateDAO extends GenericHibernateDAO implements TarifaDAO { @Autowired private RutaDAO rutaDAO; @@ -57,33 +56,6 @@ public class TarifaHibernateDAO extends GenericHibernateDAO return c.list(); } - public List pesquisar(Marca marca, Tramo tramo, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa) { - - Criteria c = getSession().createCriteria(getPersistentClass()); - - if (marca != null) { - c.add(Restrictions.eq("marca", marca)); - } - - if (tramo != null) { - c.add(Restrictions.eq("tramo", tramo)); - } - - if (moneda != null) { - c.add(Restrictions.eq("moneda", moneda)); - } - - if (claseServicio != null) { - c.add(Restrictions.eq("claseServicio", claseServicio)); - } - - if (vigenciaTarifa != null) { - c.add(Restrictions.eq("vigenciaTarifa", vigenciaTarifa)); - } - - return c.list(); - } - public boolean existe(Marca marca, Tramo tramo, Moneda moneda, ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente) { Validate.notNull(marca); @@ -157,7 +129,7 @@ public class TarifaHibernateDAO extends GenericHibernateDAO return c.list(); } - public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio,VigenciaTarifa vigenciaTarifa, Moneda moneda) { + public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio,VigenciaTarifa vigenciaTarifa, Moneda moneda, Ruta ruta) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("marca", marca)); @@ -169,12 +141,13 @@ public class TarifaHibernateDAO extends GenericHibernateDAO c.add(Restrictions.eq("claseServicio", claseServicio)); c.add(Restrictions.eq("vigenciaTarifa", vigenciaTarifa)); c.add(Restrictions.eq("moneda", moneda)); + c.add(Restrictions.eq("ruta", ruta)); c.add(Restrictions.eq("activo", Boolean.TRUE)); return (Tarifa) c.uniqueResult(); } - public List buscarPorVigencia(VigenciaTarifa vigencia) { + public List buscarTarifasAtivasInativasPorVigencia(VigenciaTarifa vigencia) { Criteria c = getSession().createCriteria(getPersistentClass()); if (vigencia != null) { @@ -184,67 +157,20 @@ public class TarifaHibernateDAO extends GenericHibernateDAO return c.list(); } - public List pesquisar(List lsMoneda, List lsMarca,List lsClaseServicio, List lsCategoria,List lsEmpresa, List lsRuta,List lsTipoPuntoVenta, List lsVigenciaTarifa) { - - StringBuilder hql = new StringBuilder(" SELECT T FROM "); - hql.append(" Tarifa as T "); - hql.append(" inner join T.marca as M "); - hql.append(" inner join T.moneda as MON "); - hql.append(" inner join T.vigenciaTarifa as VT "); - hql.append(" inner join T.claseServicio as CS "); - hql.append(" ,RutaCombinacion as RC,RutaEmpresa as RE,Ruta as R "); - hql.append(" WHERE T.activo = 1 AND RC.activo = 1 AND RE.activo = 1 AND R.activo = 1 "); - hql.append(" AND RC.tramo = T.tramo "); - hql.append(" AND RE.ruta = RC.ruta "); - hql.append(" AND RE.ruta.rutaId = R.rutaId "); - hql.append(" AND R.claseServicio = CS "); - - if (!lsVigenciaTarifa.isEmpty()) { - hql.append(" AND VT in (:lsVigencia) "); - } - if (!lsEmpresa.isEmpty()) { - hql.append(" AND RE.empresa in (:lsEmpresa) "); - } - if (!lsRuta.isEmpty()) { - hql.append(" AND RC.ruta in (:lsRuta)"); - } - if (!lsMarca.isEmpty()) { - hql.append(" AND M in (:lsMarca) "); - } - if (!lsMoneda.isEmpty()) { - hql.append(" AND MON in (:lsMoneda) "); - } - if (!lsClaseServicio.isEmpty()) { - hql.append(" AND CS in (:lsClaseServicio) "); - } - - Query sq = getSession().createQuery(hql.toString()); - sq.setParameterList("lsVigencia", lsVigenciaTarifa); - - if (!lsEmpresa.isEmpty()) { - sq.setParameterList("lsEmpresa", lsEmpresa); - } - if (!lsRuta.isEmpty()) { - sq.setParameterList("lsRuta", lsRuta); - } - if (!lsMarca.isEmpty()) { - sq.setParameterList("lsMarca", lsMarca); - } - if (!lsMoneda.isEmpty()) { - sq.setParameterList("lsMoneda", lsMoneda); - } - if (!lsClaseServicio.isEmpty()) { - sq.setParameterList("lsClaseServicio", lsClaseServicio); - } - return sq.list(); - - } - - public List buscarExisteVigencia(VigenciaTarifa vigenciaTarifa) { + public List buscarTarifasAtivasPorVigencia(VigenciaTarifa vigenciaTarifa) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.eq("vigenciaTarifa", vigenciaTarifa)); return c.list(); } + + public boolean buscarTarifaExisteTramo(Tramo tramo) { + Criteria c = this.makeCriteria(); + c.add(Restrictions.eq("tramo", tramo)); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.setProjection(Projections.rowCount()); + + return (HibernateFix.count(c.list()) > 0); + } } diff --git a/src/com/rjconsultores/ventaboletos/service/RutaCombinacionService.java b/src/com/rjconsultores/ventaboletos/service/RutaCombinacionService.java index 66dca877c..f9e086266 100644 --- a/src/com/rjconsultores/ventaboletos/service/RutaCombinacionService.java +++ b/src/com/rjconsultores/ventaboletos/service/RutaCombinacionService.java @@ -58,4 +58,11 @@ public interface RutaCombinacionService extends GenericService lsAddRmvMonedas, List lsAddRmvMarcas, List lsAddRmvClaseServico, ArrayList arrayList, List lsAddRmvEmpresas, List lsAddRmvRutas, ArrayList arrayList0, List lsAddRmvVigenciaTarifa); public List pesquisaTarifaOficialObj(List lsAddRmvMonedas, List lsAddRmvMarcas, List lsAddRmvClaseServico, ArrayList arrayList, List lsAddRmvEmpresas, List lsAddRmvRutas, ArrayList arrayList0, List lsAddRmvVigenciaTarifa); + + /** + * Indica se existe alguma combinação ativa com o tramo informado + * @param tramo + * @return + */ + public boolean existeTramo(Tramo tramo); } diff --git a/src/com/rjconsultores/ventaboletos/service/TarifaService.java b/src/com/rjconsultores/ventaboletos/service/TarifaService.java index 18933c3f0..f1efe5ea7 100644 --- a/src/com/rjconsultores/ventaboletos/service/TarifaService.java +++ b/src/com/rjconsultores/ventaboletos/service/TarifaService.java @@ -4,9 +4,10 @@ */ package com.rjconsultores.ventaboletos.service; +import java.util.List; + import com.rjconsultores.ventaboletos.entidad.Categoria; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; -import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Marca; import com.rjconsultores.ventaboletos.entidad.Moneda; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; @@ -17,7 +18,6 @@ import com.rjconsultores.ventaboletos.entidad.Tarifa; import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta; import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa; -import java.util.List; /** * @@ -25,12 +25,9 @@ import java.util.List; */ public interface TarifaService extends GenericService { - public List pesquisar(Marca marca, Parada origem, Parada destino, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, + public List pesquisar(Marca marca, Parada origem, Parada destino, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Categoria categoria, TipoPuntoVenta tipoPuntoVenta); - public List pesquisar(Marca marca, Tramo tramo, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa); - /** * Método usado para checar se uma tarifa já está cadastrada no sistema. * @@ -47,16 +44,15 @@ public interface TarifaService extends GenericService { */ public boolean existe(Marca marca, Tramo tramo, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente); - public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio,VigenciaTarifa vigenciaTarifa, Moneda moneda); + public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio,VigenciaTarifa vigenciaTarifa, Moneda moneda, Ruta ruta); public List buscarPorVigencia(VigenciaTarifa vigencia); - public List pesquisar(List lsMoneda, List lsMarca,List lsClaseServicio, List lsCategoria,List lsEmpresa, List lsRuta,List lsTipoPuntoVenta, List lsVigenciaTarifa); - public Boolean podeAlterarTarifaMinima(Tarifa tarifa, Marca marca, Parada origem,Parada destino, ClaseServicio claseServicio, Plaza plaza, Moneda moneda); public List buscarExisteVigencia(VigenciaTarifa vigenciaTarifa); public Boolean generarTarifas(VigenciaTarifa vigencia, Marca marca); + public boolean buscarTarifaExisteTramo(Tramo tramo); } diff --git a/src/com/rjconsultores/ventaboletos/service/TramoService.java b/src/com/rjconsultores/ventaboletos/service/TramoService.java index 070816ad9..0322a8ad9 100644 --- a/src/com/rjconsultores/ventaboletos/service/TramoService.java +++ b/src/com/rjconsultores/ventaboletos/service/TramoService.java @@ -4,17 +4,26 @@ */ package com.rjconsultores.ventaboletos.service; +import java.util.List; + import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Via; -import java.util.List; +import com.rjconsultores.ventaboletos.exception.BusinessException; /** * * @author Administrador */ -public interface TramoService extends GenericService { +public interface TramoService { + + + public List obtenerTodos(); + + public Tramo obtenerID(Integer id); + + public void borrar(Tramo entidad) throws BusinessException; public Tramo obtenerPorOrigemDestino(Parada origem, Parada destino); @@ -52,5 +61,8 @@ public interface TramoService extends GenericService { public void guardarTramosKm(List lsTramos,Via via); public List obtenerViasOrigemDestino(Parada origem, Parada destino); + public List obtenerPorOrigemDestinoFetchLazy(Parada origem, Parada destino) ; + + public Tramo suscribirActualizar(Tramo tramo) throws BusinessException ; } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/RutaCombinacionServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/RutaCombinacionServiceImpl.java index ae3a111b4..1085a6b1c 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/RutaCombinacionServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/RutaCombinacionServiceImpl.java @@ -432,4 +432,9 @@ public class RutaCombinacionServiceImpl implements RutaCombinacionService { return rutaCombinacionDAO.pesquisaTarifaOficialObj(lsAddRmvMonedas, lsAddRmvMarcas, lsAddRmvClaseServico, lsAddRmvEmpresas, lsAddRmvRutas, lsAddRmvVigenciaTarifa); } + + @Override + public boolean existeTramo(Tramo tramo) { + return rutaCombinacionDAO.existeTramo(tramo); + } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java index fbe6d72b4..480af2332 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java @@ -88,120 +88,7 @@ public class TarifaServiceImpl implements TarifaService { th = tarifaHistService.suscribir(th); } - private void cadastrarTarifaMonedaEstrangeira(Tarifa tarifa) { - Constante constMonedaNacional =constanteService.buscarPorNomeConstante("MONEDANACIONAL_ID"); - Integer idMonedaNacional = new Integer(constMonedaNacional.getValorconstante()); - - Constante constMonedaEstrangeira = constanteService.buscarPorNomeConstante("MONEDAEXTRANJERA_ID"); - Integer idMonedaEstrangeira = new Integer(constMonedaEstrangeira.getValorconstante()); - - Constante constCalculoTarifa =constanteService.buscarPorNomeConstante("CAMBIO_CALCULO_TARIFA"); - BigDecimal valorCalculoTarifa = new BigDecimal(constCalculoTarifa.getValorconstante()); - - Moneda monedaEstrangeira =monedaService.obtenerID(idMonedaEstrangeira); - - if (monedaEstrangeira == null){ - return; - } - - if (tarifa.getMoneda() != null) { - if (tarifa.getMoneda().getMonedaId().equals(idMonedaNacional)) { - - Tramo tramo = tarifa.getTramo(); - ClaseServicio claseServicio = tarifa.getClaseServicio(); - VigenciaTarifa vigenciaTarifa = tarifa.getVigenciaTarifa(); - Marca marca = tarifa.getMarca(); - - List lsTarifasEstrangeiraEquivalente =pesquisar(marca, tramo, monedaEstrangeira,claseServicio, vigenciaTarifa); - - // se a tarifa estrangeira nao existe, cria: - if (lsTarifasEstrangeiraEquivalente.isEmpty()) { - - Tarifa tarifaEstrangeira = new Tarifa(); - tarifaEstrangeira.setActivo(Boolean.TRUE); - tarifaEstrangeira.setClaseServicio(tarifa.getClaseServicio()); - tarifaEstrangeira.setFecmodif(Calendar.getInstance().getTime()); - tarifaEstrangeira.setLsTarifaCategoria(tarifa.getLsTarifaCategoria()); - tarifaEstrangeira.setLsTarifaTipoptovta(tarifa.getLsTarifaTipoptovta()); - tarifaEstrangeira.setMarca(tarifa.getMarca()); - tarifaEstrangeira.setMoneda(monedaEstrangeira); - tarifaEstrangeira.setStatustarifa(tarifa.getStatustarifa()); - tarifaEstrangeira.setTramo(tarifa.getTramo()); - tarifaEstrangeira.setVigenciaTarifa(tarifa.getVigenciaTarifa()); - tarifaEstrangeira.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - - // Moneda Nacional -> Moneda Estrangeria: - BigDecimal precioCambiar = tarifa.getPrecio(); - precioCambiar = precioCambiar.divide(valorCalculoTarifa, 2, java.math.RoundingMode.HALF_UP); - tarifaEstrangeira.setPrecio(precioCambiar); - - BigDecimal precioOriginalCambiar = tarifa.getPreciooriginal(); - precioOriginalCambiar = precioOriginalCambiar.divide(valorCalculoTarifa, 2, java.math.RoundingMode.HALF_UP); - tarifaEstrangeira.setPreciooriginal(precioOriginalCambiar); - - BigDecimal preciorEdAbiertoCambiar = tarifa.getPrecioredabierto();// esse valor tem q vir preenchido ou eu posso desconsiderá-lo? - if (preciorEdAbiertoCambiar != null) { - preciorEdAbiertoCambiar = preciorEdAbiertoCambiar.divide(valorCalculoTarifa, 2, java.math.RoundingMode.HALF_UP); - tarifaEstrangeira.setPrecioredabierto(preciorEdAbiertoCambiar); - } - - Boolean podeAlterar = true; - podeAlterar = - podeAlterarTarifaMinima(tarifaEstrangeira, tarifa.getMarca(), - tarifa.getTramo().getOrigem(), tarifa.getTramo().getDestino(), - claseServicio, null, tarifaEstrangeira.getMoneda()); - - if (podeAlterar) { - cadastrarTarifaHistorico(tarifaEstrangeira); - - tarifaDAO.suscribir(tarifaEstrangeira); - } - - } else { - for (Tarifa tarifaEstrangeira : lsTarifasEstrangeiraEquivalente) { - tarifaEstrangeira.setActivo(Boolean.TRUE); - tarifaEstrangeira.setClaseServicio(tarifa.getClaseServicio()); - tarifaEstrangeira.setFecmodif(Calendar.getInstance().getTime()); - tarifaEstrangeira.setLsTarifaCategoria(tarifa.getLsTarifaCategoria()); - tarifaEstrangeira.setLsTarifaTipoptovta(tarifa.getLsTarifaTipoptovta()); - tarifaEstrangeira.setMarca(tarifa.getMarca()); - tarifaEstrangeira.setMoneda(monedaEstrangeira); - tarifaEstrangeira.setStatustarifa(tarifa.getStatustarifa()); - tarifaEstrangeira.setTramo(tarifa.getTramo()); - tarifaEstrangeira.setVigenciaTarifa(tarifa.getVigenciaTarifa()); - tarifaEstrangeira.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - - // Moneda Nacional -> Moneda Estrangeria: - BigDecimal precioCambiar = tarifa.getPrecio(); - precioCambiar = precioCambiar.divide(valorCalculoTarifa, 2, java.math.RoundingMode.HALF_UP); - tarifaEstrangeira.setPrecio(precioCambiar); - - BigDecimal precioOriginalCambiar = tarifa.getPreciooriginal(); - precioOriginalCambiar = precioOriginalCambiar.divide(valorCalculoTarifa, 2, java.math.RoundingMode.HALF_UP); - tarifaEstrangeira.setPreciooriginal(precioOriginalCambiar); - - BigDecimal preciorEdAbiertoCambiar = tarifa.getPrecioredabierto(); - if (preciorEdAbiertoCambiar != null) { - preciorEdAbiertoCambiar = preciorEdAbiertoCambiar.divide(valorCalculoTarifa, 2, java.math.RoundingMode.HALF_UP); - tarifaEstrangeira.setPrecioredabierto(preciorEdAbiertoCambiar); - } - Boolean podeAlterar = true; - podeAlterar = - podeAlterarTarifaMinima(tarifaEstrangeira, tarifa.getMarca(), - tarifa.getTramo().getOrigem(), tarifa.getTramo().getDestino(), - tarifaEstrangeira.getClaseServicio(), null, tarifaEstrangeira.getMoneda()); - - if (podeAlterar) { - cadastrarTarifaHistorico(tarifaEstrangeira); - - tarifaDAO.suscribir(tarifaEstrangeira); - } - } - } - } - } - } - + @Transactional public Tarifa suscribir(Tarifa entidad) { entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); @@ -209,7 +96,6 @@ public class TarifaServiceImpl implements TarifaService { entidad.setActivo(Boolean.TRUE); cadastrarTarifaHistorico(entidad); - cadastrarTarifaMonedaEstrangeira(entidad); return tarifaDAO.suscribir(entidad); } @@ -256,11 +142,6 @@ public class TarifaServiceImpl implements TarifaService { tarifaDAO.actualizacion(entidad); } - public List pesquisar(Marca marca, Tramo tramo, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa) { - return tarifaDAO.pesquisar(marca, tramo, moneda, claseServicio, vigenciaTarifa); - } - public boolean existe(Marca marca, Tramo tramo, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente) { return tarifaDAO.existe(marca, tramo, moneda, claseServicio, vigenciaTarifa, ruta, orgaoConcedente); } @@ -273,22 +154,14 @@ public class TarifaServiceImpl implements TarifaService { } public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio, - VigenciaTarifa vigenciaTarifa, Moneda moneda) { - return tarifaDAO.buscar(tramo, marca, claseServicio, vigenciaTarifa, moneda); + VigenciaTarifa vigenciaTarifa, Moneda moneda, Ruta ruta) { + return tarifaDAO.buscar(tramo, marca, claseServicio, vigenciaTarifa, moneda, ruta); } public List buscarPorVigencia(VigenciaTarifa vigencia) { - return tarifaDAO.buscarPorVigencia(vigencia); + return tarifaDAO.buscarTarifasAtivasInativasPorVigencia(vigencia); } - public List pesquisar(List lsMoneda, List lsMarca, - List lsClaseServicio, List lsCategoria, - List lsEmpresa, List lsRuta, - List lsTipoPuntoVenta, List lsVigenciaTarifa) { - - return tarifaDAO.pesquisar(lsMoneda, lsMarca, lsClaseServicio, lsCategoria, - lsEmpresa, lsRuta, lsTipoPuntoVenta, lsVigenciaTarifa); - } public Boolean podeAlterarTarifaMinima(Tarifa tarifa, Marca marca, Parada origem, Parada destino, ClaseServicio claseServicio, Plaza plaza, Moneda moneda) { @@ -321,7 +194,7 @@ public class TarifaServiceImpl implements TarifaService { } public List buscarExisteVigencia(VigenciaTarifa vigenciaTarifa) { - return tarifaDAO.buscarExisteVigencia(vigenciaTarifa); + return tarifaDAO.buscarTarifasAtivasPorVigencia(vigenciaTarifa); } // Metodo para gerar todas as tarifas possiveis @@ -353,10 +226,9 @@ public class TarifaServiceImpl implements TarifaService { tarifa.setTramo(rc.getTramo()); // Tramo-Marca-Classe-Vigencia-Moneda - Tarifa existeTarifa = tarifaDAO.buscar(tarifa.getTramo(), tarifa.getMarca(), tarifa.getClaseServicio(), - tarifa.getVigenciaTarifa(), tarifa.getMoneda()); + boolean existe = tarifaDAO.existe(tarifa.getMarca(), tarifa.getTramo(), tarifa.getMoneda(), tarifa.getClaseServicio(), tarifa.getVigenciaTarifa(), tarifa.getRuta(), tarifa.getOrgaoConcedente()) ; - if (existeTarifa == null) { + if (!existe) { tarifa.setFecmodif(Calendar.getInstance().getTime()); tarifa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); tarifa.setActivo(Boolean.TRUE); @@ -370,9 +242,14 @@ public class TarifaServiceImpl implements TarifaService { } } } catch (Exception e) { - log.debug("ERRO:" + e); + log.debug("ERRO al generar tarifas" , e); return false; } return true; } + + @Override + public boolean buscarTarifaExisteTramo(Tramo tramo) { + return tarifaDAO.buscarTarifaExisteTramo(tramo); + } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TramoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TramoServiceImpl.java index cc5bbe2e8..b053241c2 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TramoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TramoServiceImpl.java @@ -4,6 +4,17 @@ */ package com.rjconsultores.ventaboletos.service.impl; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.Predicate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.rjconsultores.ventaboletos.dao.RutaCombinacionDAO; import com.rjconsultores.ventaboletos.dao.TramoDAO; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Parada; @@ -11,15 +22,11 @@ import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.TramoServicio; import com.rjconsultores.ventaboletos.entidad.TramoTiempo; import com.rjconsultores.ventaboletos.entidad.Via; +import com.rjconsultores.ventaboletos.exception.BusinessException; +import com.rjconsultores.ventaboletos.service.EsquemaCorridaService; +import com.rjconsultores.ventaboletos.service.TarifaService; import com.rjconsultores.ventaboletos.service.TramoService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; /** * @@ -30,6 +37,12 @@ public class TramoServiceImpl implements TramoService { @Autowired private TramoDAO tramoDAO; + @Autowired + private RutaCombinacionDAO rutaCombinacionDAO; + @Autowired + private EsquemaCorridaService esquemaCorridaService; + @Autowired + private TarifaService tarifaService; public List obtenerTodos() { return tramoDAO.obtenerTodos(); @@ -39,29 +52,26 @@ public class TramoServiceImpl implements TramoService { return tramoDAO.obtenerID(id); } - @Transactional - public Tramo suscribir(Tramo entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.TRUE); - - return tramoDAO.suscribir(entidad); - } - - @Transactional - public Tramo actualizacion(Tramo entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.TRUE); - - return tramoDAO.actualizacion(entidad); - } - - @Transactional - public void borrar(Tramo entidad) { - entidad = tramoDAO.obtenerID(entidad.getTramoId()); + @Transactional(rollbackFor = BusinessException.class) + public void borrar(Tramo entidad) throws BusinessException { + + boolean rutaOcupaTramo = rutaCombinacionDAO.existeTramo(entidad); + if (rutaOcupaTramo){ + throw new BusinessException("editarTramosController.MSG.borrarFalse"); + } + + boolean existeEsquemaCorrida = esquemaCorridaService.buscarEsquemaCorridaExisteTramo(entidad); + if (existeEsquemaCorrida){ + throw new BusinessException("editarTramosController.MSG.borrarFalse"); + } + + boolean existeTarifa = tarifaService.buscarTarifaExisteTramo(entidad); + if (existeTarifa){ + throw new BusinessException("editarTramosController.MSG.borrarFalse"); + } + entidad = tramoDAO.obtenerID(entidad.getTramoId()); if (entidad.getLsTramoTiempo() != null) { for (TramoTiempo tramo : entidad.getLsTramoTiempo()) { tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); @@ -155,4 +165,98 @@ public class TramoServiceImpl implements TramoService { public List obtenerPorOrigemDestinoFetchLazy(Parada origem, Parada destino) { return tramoDAO.obtenerPorOrigemDestinoFetchLazy(origem, destino); } + + @Override + @Transactional(rollbackFor = BusinessException.class) + public Tramo suscribirActualizar(Tramo tramo) throws BusinessException { + + Tramo tramoBusqueda = buscar(tramo.getOrigem(), tramo.getDestino(), tramo.getVia()); + + if (tramo.getOrigem().equals(tramo.getDestino())) { + throw new BusinessException("editarTramosController.MSG.OrigemDestinoIguais"); + } + + if ((tramoBusqueda != null) && (tramo.getTramoId() == null)) { + throw new BusinessException("MSG.Registro.Existe.Origem.Destino.Via"); + } + + if ((tramoBusqueda != null) && (!tramo.equals(tramoBusqueda))) { + throw new BusinessException("MSG.Registro.Existe.Origem.Destino.Via"); + } + + if (tramo.getTramoId() != null) { + boolean rutaOcupaTramo = rutaCombinacionDAO.existeTramo(tramo); + + if (rutaOcupaTramo) { + Tramo tramoOriginal = tramoDAO.obtenerID(tramo.getTramoId()); + + if (!tramo.getVia().equals(tramoOriginal.getVia())) { + throw new BusinessException("TramoServiceImpl.msg.validacionVia"); + } + + if (!tramo.getOrigem().equals(tramoOriginal.getOrigem())) { + throw new BusinessException("TramoServiceImpl.msg.validacionOrigen"); + } + + if (!tramo.getDestino().equals(tramoOriginal.getDestino())) { + throw new BusinessException("TramoServiceImpl.msg.validacionDestino"); + } + + // Validación: No es posible quitar ClaseServicio de un tramo que esta asociado a una ruta e esa ruta tenga la misma clase de servicio + // Esa validación tambien permite que el usuario quite una clase y la agregue de nuevo con otro tiempo de recorrido + List lsTramoServicioOriginal = tramoOriginal.getTramoServicioList(); + for (final TramoServicio ts : lsTramoServicioOriginal) { + boolean existe = CollectionUtils.exists(tramo.getTramoServicioList(), new Predicate() { + + @Override + public boolean evaluate(Object o) { + TramoServicio t = (TramoServicio) o; + if (t.getActivo()) { + return t.getClaseServicio().equals(ts.getClaseServicio()); + } + return false; + } + }); + + if (!existe) { + if (rutaCombinacionDAO.existeTramo(tramo, ts.getClaseServicio())) { + throw new BusinessException("TramoServiceImpl.msg.validacionTramoServicio"); + } + } + } + + List lsTramoTiempoOriginal = tramoOriginal.getLsTramoTiempo(); + for (final TramoTiempo tt : lsTramoTiempoOriginal) { + boolean existe = CollectionUtils.exists(tramo.getLsTramoTiempo(), new Predicate() { + + @Override + public boolean evaluate(Object o) { + TramoTiempo t = (TramoTiempo) o; + if (t.getActivo()) { + return t.getClaseServicio().equals(tt.getClaseServicio()); + } + return false; + } + }); + + if (!existe) { + if (rutaCombinacionDAO.existeTramo(tramo, tt.getClaseServicio())) { + throw new BusinessException("TramoServiceImpl.msg.validacionTramoTiempo"); + } + } + } + + } + } + + tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + tramo.setFecmodif(Calendar.getInstance().getTime()); + tramo.setActivo(Boolean.TRUE); + + if (tramo.getTramoId() == null) { + return tramoDAO.suscribir(tramo); + } else { + return tramoDAO.actualizacion(tramo); + } + } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TramoServicioServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TramoServicioServiceImpl.java index 9ab1df035..4d479c496 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TramoServicioServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TramoServicioServiceImpl.java @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.rjconsultores.ventaboletos.dao.TramoDAO; import com.rjconsultores.ventaboletos.dao.TramoServicioDAO; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Parada; @@ -34,6 +35,8 @@ public class TramoServicioServiceImpl implements TramoServicioService { private TramoServicioDAO tramoServicioDAO; @Autowired private TramoService tramoService; + @Autowired + private TramoDAO tramoDAO; public List obtenerTodos() { return tramoServicioDAO.obtenerTodos(); @@ -104,8 +107,11 @@ public class TramoServicioServiceImpl implements TramoServicioService { tramo.setDestino(destino); tramo.setKmReal(kmsReal); tramo.setVia(via); + tramo.setActivo(Boolean.TRUE); + tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + tramo.setFecmodif(new java.util.Date()); - tramo = tramoService.suscribir(tramo); + tramo = tramoDAO.suscribir(tramo); } tramoServicio = new TramoServicio(); tramoServicio.setClaseServicio(claseServicio);