diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index 42d7f432a..a13b56f96 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -33,6 +33,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; @@ -593,9 +594,7 @@ public class CorridaServiceImpl implements CorridaService { for (EsquemaTramo esquemaTramo : lsEsquemaTramo) { CorridaTramo corridaTramo = new CorridaTramo(); - if (esquemaTramo.getNumsecuencia() == 22) { - System.out.println(""); - } + corridaTramo.setAutobus(null); corridaTramo.setConductor(null); corridaTramo.setConductor1(null); @@ -743,11 +742,15 @@ public class CorridaServiceImpl implements CorridaService { private Date calcularHusoHorVeranoLlegada(EsquemaTramo esquemaTramo, CorridaTramo corridaTramo) { - Estado estadoOrigen = esquemaTramo.getTramo().getOrigem().getCiudad().getEstado(); + Ciudad ciudadOrigen = esquemaTramo.getTramo().getOrigem().getCiudad(); + Estado estadoOrigen = ciudadOrigen.getEstado(); + int tiempoOrigen = estadoOrigen.getTiempoHorHuso() == null ? 0 : estadoOrigen.getTiempoHorHuso(); Date fecInicioHorVerano = estadoOrigen.getFecInicioHorVerano(); Date fecFinHorVerano = estadoOrigen.getFecFinoHorVerano(); + + if ((fecInicioHorVerano != null) && (fecFinHorVerano != null)) { if ((DateUtil.compareOnlyDate(fecInicioHorVerano, corridaTramo.getFechorsalida()) <= 0) && (DateUtil.compareOnlyDate(fecFinHorVerano, corridaTramo.getFechorsalida()) >= 0)) { @@ -755,11 +758,14 @@ public class CorridaServiceImpl implements CorridaService { } } // 21688 - Estado estadoDestino = esquemaTramo.getTramo().getDestino().getCiudad().getEstado(); + Ciudad ciudadDestino = esquemaTramo.getTramo().getDestino().getCiudad(); + Estado estadoDestino = ciudadDestino.getEstado(); int tiempoDestino = 0; if (!estadoDestino.equals(estadoOrigen)) { tiempoDestino = estadoDestino.getTiempoHorHuso() == null ? 0 : estadoDestino.getTiempoHorHuso(); + + Date fecInicioHorVeranoDestino = estadoDestino.getFecInicioHorVerano(); Date fecFinHorVeranDestino = estadoDestino.getFecFinoHorVerano(); @@ -770,11 +776,28 @@ public class CorridaServiceImpl implements CorridaService { } } } else { - tiempoDestino = tiempoOrigen; + tiempoDestino =0; + tiempoOrigen=0; } + + //Consideração do fuso por cidade. + //Nesse caso, é mandatório em relação ao estado.Ou seja, equanto que no fuso do estado, + //tem que haver mudança de estado, para a cidade não, pois pode-se considerar cada cidade + //como um único estado. Sendo assim, devendo ser considerado sempre quando preenchido + if ( (ciudadOrigen.getZonaHoraria() != null) && (ciudadOrigen.getZonaHoraria() != 0 )){ + log.info("Fuso da cidade origem " + ciudadOrigen.getNombciudad() + " : " + ciudadOrigen.getZonaHoraria()); + + tiempoOrigen += ciudadOrigen.getZonaHoraria(); + } + + if ( (ciudadDestino.getZonaHoraria() != null) && (ciudadDestino.getZonaHoraria() != 0 )){ + log.info("Fuso da cidade destino " + ciudadDestino.getNombciudad() + " : " + ciudadDestino.getZonaHoraria()); + + tiempoDestino += ciudadDestino.getZonaHoraria(); + } + //Fim consideração fuso por cidade Calendar horLlegada = null; - // Si los tiempos son distintos, hube cambio de huso horario/horario de verano long elapsedMinutes = DateUtil.getElapsedMinutos(corridaTramo.getFechorsalida(), corridaTramo.getFechorllegada()); @@ -782,6 +805,8 @@ public class CorridaServiceImpl implements CorridaService { horLlegada.setTime(corridaTramo.getFechorsalidaH()); horLlegada.add(Calendar.MINUTE, (int) elapsedMinutes); + + // Si los tiempos son distintos, hube cambio de huso horario/horario de verano if (tiempoOrigen != tiempoDestino) { horLlegada.add(Calendar.HOUR, difHuso(tiempoOrigen, tiempoDestino));