diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index 42d7f432a..3b63dfd52 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -8,6 +8,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; @@ -33,6 +34,7 @@ import com.rjconsultores.ventaboletos.dao.CorridaDAO; import com.rjconsultores.ventaboletos.dao.EsquemaCorridaDAO; import com.rjconsultores.ventaboletos.dao.TramoTiempoDAO; import com.rjconsultores.ventaboletos.entidad.AsientoExclusivo; +import com.rjconsultores.ventaboletos.entidad.Ciudad; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Constante; import com.rjconsultores.ventaboletos.entidad.Corrida; @@ -410,7 +412,6 @@ public class CorridaServiceImpl implements CorridaService { * @return - La corrida generada o null si no fue generada. */ private Corrida generarCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, boolean isPisoExtra, Boolean isFeriado) { - GregorianCalendar calendario = new GregorianCalendar(); calendario.setTime(dataGeracao); @@ -743,34 +744,33 @@ public class CorridaServiceImpl implements CorridaService { private Date calcularHusoHorVeranoLlegada(EsquemaTramo esquemaTramo, CorridaTramo corridaTramo) { - Estado estadoOrigen = esquemaTramo.getTramo().getOrigem().getCiudad().getEstado(); - int tiempoOrigen = estadoOrigen.getTiempoHorHuso() == null ? 0 : estadoOrigen.getTiempoHorHuso(); + Ciudad ciudadOrigem = esquemaTramo.getTramo().getOrigem().getCiudad(); + int tiempoOrigen = ciudadOrigem.getZonaHoraria() != null ? ciudadOrigem.getZonaHoraria() + : ciudadOrigem.getEstado().getTiempoHorHuso() != null ? ciudadOrigem.getEstado().getTiempoHorHuso() : 0; - Date fecInicioHorVerano = estadoOrigen.getFecInicioHorVerano(); - Date fecFinHorVerano = estadoOrigen.getFecFinoHorVerano(); + Date fecInicioHorVerano = ciudadOrigem.getEstado().getFecInicioHorVerano(); + Date fecFinHorVerano = ciudadOrigem.getEstado().getFecFinoHorVerano(); - if ((fecInicioHorVerano != null) && (fecFinHorVerano != null)) { - if ((DateUtil.compareOnlyDate(fecInicioHorVerano, corridaTramo.getFechorsalida()) <= 0) && (DateUtil.compareOnlyDate(fecFinHorVerano, corridaTramo.getFechorsalida()) >= 0)) { - tiempoOrigen += estadoOrigen.getTiempoHorVerano(); - } + if (fecInicioHorVerano != null + && fecFinHorVerano != null + && DateUtil.compareOnlyDate(fecInicioHorVerano, corridaTramo.getFechorsalida()) <= 0 + && DateUtil.compareOnlyDate(fecFinHorVerano, corridaTramo.getFechorsalida()) >= 0) { + tiempoOrigen += ciudadOrigem.getEstado().getTiempoHorVerano(); } + // 21688 - Estado estadoDestino = esquemaTramo.getTramo().getDestino().getCiudad().getEstado(); - int tiempoDestino = 0; + Ciudad ciudadDestino = esquemaTramo.getTramo().getDestino().getCiudad(); + int tiempoDestino = ciudadDestino.getZonaHoraria() != null ? ciudadDestino.getZonaHoraria() + : ciudadDestino.getEstado().getTiempoHorHuso() != null ? ciudadDestino.getEstado().getTiempoHorHuso() : 0; - if (!estadoDestino.equals(estadoOrigen)) { - tiempoDestino = estadoDestino.getTiempoHorHuso() == null ? 0 : estadoDestino.getTiempoHorHuso(); + Date fecInicioHorVeranoDestino = ciudadDestino.getEstado().getFecInicioHorVerano(); + Date fecFinHorVeranDestino = ciudadDestino.getEstado().getFecFinoHorVerano(); - Date fecInicioHorVeranoDestino = estadoDestino.getFecInicioHorVerano(); - Date fecFinHorVeranDestino = estadoDestino.getFecFinoHorVerano(); - - if ((fecInicioHorVeranoDestino != null) && (fecFinHorVeranDestino != null)) { - if ((DateUtil.compareOnlyDate(fecInicioHorVeranoDestino, corridaTramo.getFechorllegada()) <= 0) && (DateUtil.compareOnlyDate(fecFinHorVeranDestino, corridaTramo.getFechorllegada()) >= 0)) { - tiempoDestino += estadoDestino.getTiempoHorVerano(); - } - } - } else { - tiempoDestino = tiempoOrigen; + if (fecInicioHorVeranoDestino != null + && fecFinHorVeranDestino != null + && DateUtil.compareOnlyDate(fecInicioHorVeranoDestino, corridaTramo.getFechorllegada()) <= 0 + && DateUtil.compareOnlyDate(fecFinHorVeranDestino, corridaTramo.getFechorllegada()) >= 0) { + tiempoDestino += ciudadDestino.getEstado().getTiempoHorVerano(); } Calendar horLlegada = null; @@ -784,7 +784,6 @@ public class CorridaServiceImpl implements CorridaService { horLlegada.add(Calendar.MINUTE, (int) elapsedMinutes); if (tiempoOrigen != tiempoDestino) { horLlegada.add(Calendar.HOUR, difHuso(tiempoOrigen, tiempoDestino)); - } return (horLlegada == null) ? null : horLlegada.getTime();