diff --git a/src/com/rjconsultores/ventaboletos/dao/CorridaDAO.java b/src/com/rjconsultores/ventaboletos/dao/CorridaDAO.java index ea9b9e3fc..aa921f41a 100644 --- a/src/com/rjconsultores/ventaboletos/dao/CorridaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/CorridaDAO.java @@ -55,11 +55,14 @@ public interface CorridaDAO extends GenericDAO { * @param corridaId * @return */ - public List buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId); + public List buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, + Date horaSalidaFin, ClaseServicio cs, Integer corridaId); - public boolean existe(Ruta ruta, Date dataGeracao, Date horario, ClaseServicio claseServicio, Marca marca, boolean pisoExtra); + public boolean existe(Ruta ruta, Date dataGeracao, Date horario, ClaseServicio claseServicio, + Marca marca, boolean pisoExtra); - public boolean count(Parada origem, Parada destino, Date feccorrida, ClaseServicio claseServicio, boolean pisoExtra); + public boolean count(Parada origem, Parada destino, Date feccorrida, ClaseServicio claseServicio, + boolean pisoExtra); /** * Regresa la cantidad de corridas que fue generada hoy. @@ -70,5 +73,9 @@ public interface CorridaDAO extends GenericDAO { public List buscarGroupCorrridaId(Integer corridaId, Date dateInicio, Date dateFin); - public List buscarGroupCorrridaId(Integer corridaId, Integer origem, Integer destino, Integer ruta, Integer numRuta, Date dateInicio, Date dateFin); + public List buscarGroupCorrridaId(Integer corridaId, Integer origem, Integer destino, + Integer ruta, Integer numRuta, Date dateInicio, Date dateFin); + + public void actualizaFecHusoFecVerano(Corrida corrida); + } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java index 8a632cad0..c5a0e4571 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java @@ -11,6 +11,7 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.List; +import org.apache.commons.lang.math.NumberUtils; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.SessionFactory; @@ -21,6 +22,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; import com.rjconsultores.ventaboletos.dao.CorridaDAO; +import com.rjconsultores.ventaboletos.dao.sqlbuilder.SQLBuilder; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Corrida; import com.rjconsultores.ventaboletos.entidad.Corrida.Id; @@ -37,14 +39,18 @@ import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties; @Repository("corridaDAO") public class CorridaHibernateDAO extends GenericHibernateDAO implements CorridaDAO { - private static final Integer maxResult = new Integer(1); + @Autowired + private SQLBuilder sqlBuilder; + private static final Integer ULTIMA_HORA_DIA = new Integer(23); + private static final Integer ULTIMO_MINUTO_SEGUNDO = new Integer(59); + private static final Integer ULTIMO_MILLISEGUNDO = new Integer(99); @Autowired - public CorridaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + public CorridaHibernateDAO(@Qualifier("sessionFactory") final SessionFactory factory) { setSessionFactory(factory); } - public Boolean existe(Id id) { + public Boolean existe(final Id id) { Criteria c = makeCriteria(); c.setProjection(Projections.rowCount()); @@ -56,10 +62,11 @@ public class CorridaHibernateDAO extends GenericHibernateDAO buscarPorAutobusCorridasFuturas(DiagramaAutobus diagramaAutobus) { + public List buscarPorAutobusCorridasFuturas(final DiagramaAutobus diagramaAutobus) { String hql = " select co from Corrida co, Autobus ab " + " where ab.autobusId = co.autobus.autobusId " + " and ab.diagramaAutobus.diagramaautobusId = " + diagramaAutobus.getDiagramaautobusId() + " and co.id.feccorrida > current_timestamp()"; Query sq = getSession().createQuery(hql); + List lsCorridas = sq.list(); return lsCorridas; } - public List buscarPorRolOperativoCorridasFuturas(DiagramaAutobus diagramaAutobus) { + public List buscarPorRolOperativoCorridasFuturas(final DiagramaAutobus diagramaAutobus) { String hql = " select co from Corrida co, RolOperativo rol " + " where rol.roloperativoId = co.rolOperativo.roloperativoId " + " and rol.diagramaAutobus.diagramaautobusId = " + diagramaAutobus.getDiagramaautobusId() @@ -92,7 +100,7 @@ public class CorridaHibernateDAO extends GenericHibernateDAO buscarPorFecCorrida(Date value) { + public List buscarPorFecCorrida(final Date value) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); @@ -101,7 +109,7 @@ public class CorridaHibernateDAO extends GenericHibernateDAO buscarPorId(Integer idCorrida) { + public List buscarPorId(final Integer idCorrida) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); @@ -121,21 +129,9 @@ public class CorridaHibernateDAO extends GenericHibernateDAO buscarFiltro(Parada ori, Parada des, Date hora, ClaseServicio cs) { + public List buscarFiltro(final Parada ori, final Parada des, final Date hora, final ClaseServicio cs) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); - - // SimpleDateFormat sf = new - // SimpleDateFormat("dd/MM/yyyy HH:mm:ss,SSS"); - // log.debug("Hora Corrida : " + sf.format(hora)); - // log.debug("Hora Corrida INI : " + - // sf.format(getDiaGeracaoHoraIni(hora))); - // log.debug("Hora Corrida FIM : " + - // sf.format(getDiaGeracaoHoraFim(hora))); - // log.debug("Origem : " + ori.getParadaId()); - // log.debug("Destino : " + des.getParadaId()); - // log.debug("Classe de Ser: " + cs.getClaseservicioId()); - c.add(Restrictions.eq("origem", ori)); c.add(Restrictions.eq("destino", des)); c.add(Restrictions.between("fechorsalida", getDiaGeracaoHoraIni(hora), getDiaGeracaoHoraFim(hora))); @@ -145,7 +141,8 @@ public class CorridaHibernateDAO extends GenericHibernateDAO 0); } - private Date getDiaGeracaoHoraIni(Date hora) { + private Date getDiaGeracaoHoraIni(final Date hora) { Date dataCorreta = new Date(); // para pegar a hora e adicionar ao dia da geracao: @@ -179,15 +176,15 @@ public class CorridaHibernateDAO extends GenericHibernateDAO buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId) { + public List buscarDistinct(final Parada ori, final Parada des, final Date horaSalidaInicio, + final Date horaSalidaFin, final ClaseServicio cs, final Integer corridaId) { StringBuilder hql = new StringBuilder(""); hql.append("select distinct "); hql.append(" new com.rjconsultores.ventaboletos.entidad.Corrida("); @@ -243,8 +241,8 @@ public class CorridaHibernateDAO extends GenericHibernateDAO buscarGroupCorrridaId(Integer corridaId, Integer origem, Integer destino, Integer ruta, Integer numRuta, Date dateInicio, Date dateFin) { + public List buscarGroupCorrridaId(final Integer corridaId, final Integer origem, final Integer destino, + final Integer ruta, final Integer numRuta, final Date dateInicio, final Date dateFin) { StringBuffer sql = new StringBuffer(); sql.append(" SELECT c.corrida_id "); sql.append(" FROM corrida c "); @@ -377,7 +379,7 @@ public class CorridaHibernateDAO extends GenericHibernateDAO= t.CANTKMREAL and tepKm.activo = 1 and tepKm.indtipo = 'K' "); + sb.append(" inner join TAXA_EMBARQUE_PARADA tepKm on "); + sb.append(" tepKm.parada_id = t.origen_id and tepKm.KMATE >= "); + sb.append(" t.CANTKMREAL and tepKm.activo = 1 and tepKm.indtipo = 'K' "); sb.append("where "); sb.append(" tepKm.kmate= "); sb.append(" (select min(tepKm1.KMATE) "); @@ -209,7 +231,8 @@ public class SQLBuilderOracle implements SQLBuilder { } @Override - public String getSQLAtualizarTaxaEmbarquePorKmOrgao(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId) { + public String getSQLAtualizarTaxaEmbarquePorKmOrgao(final Integer rutaId, final Integer usuarioId, + final Integer orgaoConcedenteId) { StringBuilder sb = new StringBuilder(""); sb.append("update tarifa_oficial set IMPORTETAXAEMBARQUE = "); sb.append("coalesce( "); @@ -220,14 +243,17 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append("from "); sb.append(" tarifa_oficial tao "); sb.append(" inner join tramo t on t.tramo_id = tao.tramo_id "); - sb.append(" inner join taxa_embarque_km tek on tek.orgaoconcedente_id = tao.ORGAOCONCEDENTE_ID and tek.activo = 1 and t.CANTKMREAL <= tek.kmate "); + sb.append(" inner join taxa_embarque_km tek on "); + sb.append(" tek.orgaoconcedente_id = tao.ORGAOCONCEDENTE_ID "); + sb.append(" and tek.activo = 1 and t.CANTKMREAL <= tek.kmate "); sb.append("where "); sb.append(" tek.kmate= "); sb.append(" (select min(tek1.KMATE) "); sb.append(" from "); sb.append(" taxa_embarque_km tek1 "); sb.append(" where "); - sb.append(" tek1.orgaoconcedente_id = tao.ORGAOCONCEDENTE_ID and t.CANTKMREAL <= tek1.kmate and tek1.activo = 1 "); + sb.append(" tek1.orgaoconcedente_id = tao.ORGAOCONCEDENTE_ID "); + sb.append(" and t.CANTKMREAL <= tek1.kmate and tek1.activo = 1 "); sb.append(" ) "); sb.append(" "); sb.append(" and tao.marca_id = tarifa_oficial.marca_id "); @@ -253,7 +279,8 @@ public class SQLBuilderOracle implements SQLBuilder { } @Override - public String getSQLAtualizarTaxaEmbarquePorParadaFixo(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId) { + public String getSQLAtualizarTaxaEmbarquePorParadaFixo(final Integer rutaId, final Integer usuarioId, + final Integer orgaoConcedenteId) { StringBuilder sb = new StringBuilder(""); sb.append("update tarifa_oficial set IMPORTETAXAEMBARQUE = "); @@ -265,7 +292,9 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append("from "); sb.append(" tarifa_oficial tao "); sb.append(" inner join tramo t on t.tramo_id = tao.tramo_id "); - sb.append(" inner join TAXA_EMBARQUE_PARADA tepFixo on tepFixo.parada_id = t.origen_id and tepFixo.indtipo = 'F' and tepFixo.activo = 1 "); + sb.append(" inner join TAXA_EMBARQUE_PARADA tepFixo on "); + sb.append(" tepFixo.parada_id = t.origen_id "); + sb.append(" and tepFixo.indtipo = 'F' and tepFixo.activo = 1 "); sb.append("where "); sb.append(" tao.marca_id = tarifa_oficial.marca_id "); sb.append(" and tao.orgaoconcedente_id = tepFixo.orgaoconcedente_id "); @@ -289,7 +318,8 @@ public class SQLBuilderOracle implements SQLBuilder { } @Override - public String getSQLAtualizarSeguroPorKm(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId) { + public String getSQLAtualizarSeguroPorKm(final Integer rutaId, final Integer usuarioId, + final Integer orgaoConcedenteId) { StringBuilder sb = new StringBuilder(""); sb.append("update tarifa_oficial set IMPORTESEGURO = "); sb.append("( "); @@ -298,14 +328,17 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append("from "); sb.append(" tarifa_oficial tao "); sb.append(" inner join tramo t on t.tramo_id = tao.tramo_id "); - sb.append(" inner join seguro_km sk on sk.KMATE >= t.CANTKMREAL and sk.activo = 1 and tao.ORGAOCONCEDENTE_ID = sk.ORGAOCONCEDENTE_ID "); + sb.append(" inner join seguro_km sk on "); + sb.append(" sk.KMATE >= t.CANTKMREAL and sk.activo = 1 "); + sb.append(" and tao.ORGAOCONCEDENTE_ID = sk.ORGAOCONCEDENTE_ID "); sb.append("where "); sb.append(" sk.kmate= "); sb.append(" (select min(sk1.KMATE) "); sb.append(" from "); sb.append(" seguro_km sk1 "); sb.append(" where "); - sb.append(" sk1.KMATE >= t.CANTKMREAL and sk1.activo = 1 and tao.ORGAOCONCEDENTE_ID = sk1.ORGAOCONCEDENTE_ID "); + sb.append(" sk1.KMATE >= t.CANTKMREAL and sk1.activo = 1 "); + sb.append(" and tao.ORGAOCONCEDENTE_ID = sk1.ORGAOCONCEDENTE_ID "); sb.append(" ) "); sb.append(" and tao.marca_id = tarifa_oficial.marca_id "); sb.append(" and tao.orgaoconcedente_id = tarifa_oficial.orgaoconcedente_id "); @@ -329,7 +362,8 @@ public class SQLBuilderOracle implements SQLBuilder { } @Override - public String getSQLAtualizarSeguroPorTarifa(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId) { + public String getSQLAtualizarSeguroPorTarifa(final Integer rutaId, final Integer usuarioId, + final Integer orgaoConcedenteId) { StringBuilder sb = new StringBuilder(""); sb.append("update tarifa_oficial set IMPORTESEGURO = "); sb.append("( "); @@ -337,14 +371,17 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" st.VALORTAXA "); sb.append("from "); sb.append(" tarifa_oficial tao "); - sb.append(" inner join seguro_tarifa st on st.VALORTARIFAATE >= tao.precio and st.activo = 1 and tao.ORGAOCONCEDENTE_ID = st.ORGAOCONCEDENTE_ID "); + sb.append(" inner join seguro_tarifa st on "); + sb.append(" st.VALORTARIFAATE >= tao.precio and st.activo = 1 "); + sb.append(" and tao.ORGAOCONCEDENTE_ID = st.ORGAOCONCEDENTE_ID "); sb.append("where "); sb.append(" st.VALORTARIFAATE= "); sb.append(" (select min(st1.VALORTARIFAATE) "); sb.append(" from "); sb.append(" seguro_tarifa st1 "); sb.append(" where "); - sb.append(" st1.VALORTARIFAATE >= tao.precio and st1.activo = 1 and tao.ORGAOCONCEDENTE_ID = st1.ORGAOCONCEDENTE_ID "); + sb.append(" st1.VALORTARIFAATE >= tao.precio and st1.activo = 1 "); + sb.append(" and tao.ORGAOCONCEDENTE_ID = st1.ORGAOCONCEDENTE_ID "); sb.append(" ) "); sb.append(" and tao.marca_id = tarifa_oficial.marca_id "); sb.append(" and tao.orgaoconcedente_id = tarifa_oficial.orgaoconcedente_id "); @@ -368,15 +405,24 @@ public class SQLBuilderOracle implements SQLBuilder { return sb.toString(); } - public String getSQLAtualizarTarifaPorTarifaOfical(Integer vigenciaTarifaId, Integer usuarioId, Boolean calculaPegagio) { + public String getSQLAtualizarTarifaPorTarifaOfical(final Integer vigenciaTarifaId, final Integer usuarioId, + final Boolean calculaPegagio) { StringBuilder sb = new StringBuilder(""); sb.append("update ( "); sb.append(" "); sb.append("select "); - sb.append(" ta.precio as taprecio,ta.preciooriginal as tapreciooriginal,ta.importetaxaembarque as taimportetaxaembarque, "); - sb.append(" ta.importepedagio as taimportepedagio,ta.importeoutros as taimporteoutros,ta.importeseguro as taimporteseguro, "); - sb.append(" tao.precio as taoprecio,tao.preciooriginal as taopreciooriginal,tao.importetaxaembarque as taoimportetaxaembarque, "); - sb.append(" tao.importepedagio as taoimportepedagio,tao.importeoutros as taoimporteoutros,tao.importeseguro as taoimporteseguro, "); + sb.append(" ta.precio as taprecio, "); + sb.append(" ta.preciooriginal as tapreciooriginal, "); + sb.append(" ta.importetaxaembarque as taimportetaxaembarque, "); + sb.append(" ta.importepedagio as taimportepedagio, "); + sb.append(" ta.importeoutros as taimporteoutros, "); + sb.append(" ta.importeseguro as taimporteseguro, "); + sb.append(" tao.precio as taoprecio, "); + sb.append(" tao.preciooriginal as taopreciooriginal, "); + sb.append(" tao.importetaxaembarque as taoimportetaxaembarque, "); + sb.append(" tao.importepedagio as taoimportepedagio, "); + sb.append(" tao.importeoutros as taoimporteoutros, "); + sb.append(" tao.importeseguro as taoimporteseguro, "); sb.append(" ta.fecmodif as tafecmodif,ta.usuario_id as tausuario_id "); sb.append("from "); sb.append(" tarifa_oficial tao "); @@ -390,7 +436,9 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append("where "); sb.append(" ta.vigenciatarifa_id = ").append(vigenciaTarifaId); sb.append(" ) set "); - sb.append(" taprecio = taoprecio , tapreciooriginal = taopreciooriginal,taimportetaxaembarque = taoimportetaxaembarque, "); + sb.append(" taprecio = taoprecio, "); + sb.append(" tapreciooriginal = taopreciooriginal, "); + sb.append(" taimportetaxaembarque = taoimportetaxaembarque, "); if (calculaPegagio) { sb.append(" taimportepedagio = taoimportepedagio,"); } @@ -400,12 +448,17 @@ public class SQLBuilderOracle implements SQLBuilder { return sb.toString(); } - public String getSQLInserirTarifaPelaTarifaOficial(Integer vigenciaTarifaId, Integer usuarioId) { + public String getSQLInserirTarifaPelaTarifaOficial(final Integer vigenciaTarifaId, final Integer usuarioId) { StringBuilder sb = new StringBuilder(""); sb.append(" insert "); sb.append(" into "); sb.append(" TARIFA "); - sb.append(" ( TARIFA_ID, PRECIO, PRECIOREDABIERTO, TRAMO_ID, MARCA_ID, CLASESERVICIO_ID, PRECIOORIGINAL, MONEDA_ID, VIGENCIATARIFA_ID, STATUSTARIFA, ACTIVO, FECMODIF, USUARIO_ID, IMPORTETAXAEMBARQUE, IMPORTEPEDAGIO, IMPORTEOUTROS, IMPORTESEGURO, ORGAOCONCEDENTE_ID, RUTA_ID, ORIGEN_ID, DESTINO_ID ) select "); + sb.append(" ( TARIFA_ID, PRECIO, PRECIOREDABIERTO, TRAMO_ID, "); + sb.append(" MARCA_ID, CLASESERVICIO_ID, PRECIOORIGINAL, MONEDA_ID, "); + sb.append(" VIGENCIATARIFA_ID, STATUSTARIFA, ACTIVO, FECMODIF, "); + sb.append(" USUARIO_ID, IMPORTETAXAEMBARQUE, IMPORTEPEDAGIO, IMPORTEOUTROS, "); + sb.append(" IMPORTESEGURO, ORGAOCONCEDENTE_ID, RUTA_ID, ORIGEN_ID, DESTINO_ID ) "); + sb.append(" select "); sb.append(" TARIFA_SEQ.nextval, "); sb.append(" tao.PRECIO , "); sb.append(" tao.PRECIOREDABIERTO , "); @@ -450,4 +503,94 @@ public class SQLBuilderOracle implements SQLBuilder { return sb.toString(); } + public String getSQLActualizarCorridaFecHusoFecVerano(final Integer corridaId, final Date feccorrida) { + + StringBuffer sb = new StringBuffer(); + + sb.append(" update Corrida cq "); + sb.append(" set cq.fechorSalidaOriginalH = "); + sb.append(" ( "); + sb.append(" select "); + sb.append(" c.fechorSalidaOriginal "); + sb.append(" + nvl((c.origem.ciudad.estado.tiempoHorHuso/").append(HORAS_NO_DIA).append("), 0) "); + sb.append(" + nvl( case when "); + sb.append(" c.fechorSalidaOriginal between "); + sb.append(" c.origem.ciudad.estado.fecInicioHorVerano "); + sb.append(" and c.origem.ciudad.estado.fecFinoHorVerano "); + sb.append(" then (c.origem.ciudad.estado.tiempoHorVerano/").append(HORAS_NO_DIA).append(") "); + sb.append(" else 0 end, 0) "); + sb.append(" from Corrida c "); + sb.append(" where c.id.corridaId = :corridaId "); + sb.append(" and c.id.feccorrida = :feccorrida "); + sb.append(" and c.id.corridaId = cq.id.corridaId "); + sb.append(" and c.id.feccorrida = cq.id.feccorrida "); + sb.append(" ) "); + + return sb.toString(); + } + + public String getSQLActualizarCorridaTramoFecHusoFecVerano(final Integer corridaId, final Date feccorrida) { + StringBuffer sb = new StringBuffer(); + + sb.append(" update CorridaTramo ctq "); + sb.append(" set ctq.fechorSalidaOriginalH = "); + sb.append(" ( "); + sb.append(" select "); + sb.append(" ct.fechorSalidaOriginal "); + sb.append(" + nvl((ct.origem.ciudad.estado.tiempoHorHuso/").append(HORAS_NO_DIA).append("), 0) "); + sb.append(" + nvl( case when "); + sb.append(" ct.fechorSalidaOriginal between "); + sb.append(" ct.origem.ciudad.estado.fecInicioHorVerano "); + sb.append(" and ct.origem.ciudad.estado.fecFinoHorVerano "); + sb.append(" then (ct.origem.ciudad.estado.tiempoHorVerano/").append(HORAS_NO_DIA).append(") "); + sb.append(" else 0 end, 0) "); + sb.append(" from CorridaTramo ct "); + sb.append(" where ct.corrida.id.corridaId = :corridaId "); + sb.append(" and ct.corrida.id.feccorrida = :feccorrida "); + sb.append(" and ctq.corridatramoId = ct.corridatramoId "); + sb.append(" ) "); + + sb.append(" , "); + + sb.append(" ctq.fechorsalidaH = "); + + sb.append(" ( "); + sb.append(" select "); + sb.append(" ct.fechorsalida "); + sb.append(" + nvl((ct.origem.ciudad.estado.tiempoHorHuso/").append(HORAS_NO_DIA).append("), 0) "); + sb.append(" + nvl( case when "); + sb.append(" ct.fechorsalida between "); + sb.append(" ct.origem.ciudad.estado.fecInicioHorVerano "); + sb.append(" and ct.origem.ciudad.estado.fecFinoHorVerano "); + sb.append(" then (ct.origem.ciudad.estado.tiempoHorVerano/").append(HORAS_NO_DIA).append(") "); + sb.append(" else 0 end, 0) "); + sb.append(" from CorridaTramo ct "); + sb.append(" where ct.corrida.id.corridaId = :corridaId "); + sb.append(" and ct.corrida.id.feccorrida = :feccorrida "); + sb.append(" and ctq.corridatramoId = ct.corridatramoId "); + sb.append(" ) "); + + sb.append(" , "); + + sb.append(" ctq.fechorllegadaH = "); + + sb.append(" ( "); + sb.append(" select "); + sb.append(" ct.fechorllegada "); + sb.append(" + nvl((ct.destino.ciudad.estado.tiempoHorHuso/").append(HORAS_NO_DIA).append("), 0) "); + sb.append(" + nvl( case when "); + sb.append(" ct.fechorllegada between "); + sb.append(" ct.destino.ciudad.estado.fecInicioHorVerano "); + sb.append(" and ct.destino.ciudad.estado.fecFinoHorVerano "); + sb.append(" then (ct.destino.ciudad.estado.tiempoHorVerano/").append(HORAS_NO_DIA).append(") "); + sb.append(" else 0 end, 0) "); + sb.append(" from CorridaTramo ct "); + sb.append(" where ct.corrida.id.corridaId = :corridaId "); + sb.append(" and ct.corrida.id.feccorrida = :feccorrida "); + sb.append(" and ctq.corridatramoId = ct.corridatramoId "); + sb.append(" ) "); + + return sb.toString(); + } + } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/entidad/Corrida.java b/src/com/rjconsultores/ventaboletos/entidad/Corrida.java index d8c5777bc..4fb340206 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Corrida.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Corrida.java @@ -199,6 +199,10 @@ public class Corrida implements Serializable { @Column(name = "NUMPISO") private Integer numPiso; + @Column(name = "fechorsalidaoriginalh") + @Temporal(javax.persistence.TemporalType.TIMESTAMP) + private Date fechorSalidaOriginalH; + public String getIndTipoVenta() { return indTipoVenta; } @@ -474,6 +478,14 @@ public class Corrida implements Serializable { this.numPiso = numPiso; } + public Date getFechorSalidaOriginalH() { + return fechorSalidaOriginalH; + } + + public void setFechorSalidaOriginalH(Date fechorSalidaOriginalH) { + this.fechorSalidaOriginalH = fechorSalidaOriginalH; + } + @Override public String toString() { return id.toString(); diff --git a/src/com/rjconsultores/ventaboletos/entidad/CorridaTramo.java b/src/com/rjconsultores/ventaboletos/entidad/CorridaTramo.java index f36f258f6..dc83a339b 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/CorridaTramo.java +++ b/src/com/rjconsultores/ventaboletos/entidad/CorridaTramo.java @@ -105,6 +105,17 @@ public class CorridaTramo implements Serializable { @Column(name = "PLATAFORMA") private String plataforma; + @Column(name = "FECHORSALIDAH") + @Temporal(TemporalType.TIMESTAMP) + private Date fechorsalidaH; + @Column(name = "FECHORLLEGADAH") + @Temporal(TemporalType.TIMESTAMP) + private Date fechorllegadaH; + + @Column(name = "fechorsalidaoriginalh") + @Temporal(javax.persistence.TemporalType.TIMESTAMP) + private Date fechorSalidaOriginalH; + public Boolean getIndmanttarjeta() { return indmanttarjeta; } @@ -313,6 +324,30 @@ public class CorridaTramo implements Serializable { this.plataforma = plataforma; } + public Date getFechorsalidaH() { + return fechorsalidaH; + } + + public void setFechorsalidaH(Date fechorsalidaH) { + this.fechorsalidaH = fechorsalidaH; + } + + public Date getFechorllegadaH() { + return fechorllegadaH; + } + + public void setFechorllegadaH(Date fechorllegadaH) { + this.fechorllegadaH = fechorllegadaH; + } + + public Date getFechorSalidaOriginalH() { + return fechorSalidaOriginalH; + } + + public void setFechorSalidaOriginalH(Date fechorSalidaOriginalH) { + this.fechorSalidaOriginalH = fechorSalidaOriginalH; + } + @Override public int hashCode() { int hash = 0; diff --git a/src/com/rjconsultores/ventaboletos/entidad/Estado.java b/src/com/rjconsultores/ventaboletos/entidad/Estado.java index 842440342..7b6dcb29b 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Estado.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Estado.java @@ -58,6 +58,16 @@ public class Estado implements Serializable { private List ciudadList; @Column(name = "ICMS") private BigDecimal icms; + @Column(name = "TIEMPOHORHUSO") + private Integer tiempoHorHuso; + @Column(name = "FECINICIOHORVERANO") + @Temporal(TemporalType.DATE) + private Date fecInicioHorVerano; + @Column(name = "FECFINOHORVERANO") + @Temporal(TemporalType.DATE) + private Date fecFinoHorVerano; + @Column(name = "TIEMPOHORVERANO") + private Integer tiempoHorVerano; @OneToMany(mappedBy = "estado") private List empresaImpostoList; @@ -148,6 +158,38 @@ public class Estado implements Serializable { this.icms = icms; } + public Integer getTiempoHorHuso() { + return tiempoHorHuso; + } + + public void setTiempoHorHuso(Integer tiempoHorHuso) { + this.tiempoHorHuso = tiempoHorHuso; + } + + public Date getFecInicioHorVerano() { + return fecInicioHorVerano; + } + + public void setFecInicioHorVerano(Date fecInicioHorVerano) { + this.fecInicioHorVerano = fecInicioHorVerano; + } + + public Date getFecFinoHorVerano() { + return fecFinoHorVerano; + } + + public void setFecFinoHorVerano(Date fecFinoHorVerano) { + this.fecFinoHorVerano = fecFinoHorVerano; + } + + public Integer getTiempoHorVerano() { + return tiempoHorVerano; + } + + public void setTiempoHorVerano(Integer tiempoHorVerano) { + this.tiempoHorVerano = tiempoHorVerano; + } + @Override public int hashCode() { int hash = 0; diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index aa9d709d5..19c6158f5 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -586,6 +586,9 @@ public class CorridaServiceImpl implements CorridaService { corrida.setIndTipoVenta(null); corrida = corridaDAO.suscribir(corrida); + + corridaDAO.actualizaFecHusoFecVerano(corrida); + cantCorridaGenerada++; List lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);