package com.rjconsultores.ventaboletos.service.impl; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.List; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.OrgaoTramoDAO; import com.rjconsultores.ventaboletos.dao.RutaDAO; import com.rjconsultores.ventaboletos.dao.TramoDAO; import com.rjconsultores.ventaboletos.dao.TramoServicioDAO; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; import com.rjconsultores.ventaboletos.entidad.OrgaoTramo; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.RutaCombinacion; import com.rjconsultores.ventaboletos.entidad.RutaEmpresa; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.TramoServicio; import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.service.RutaCombinacionService; import com.rjconsultores.ventaboletos.service.RutaEmpresaService; import com.rjconsultores.ventaboletos.service.RutaSecuenciaService; import com.rjconsultores.ventaboletos.service.RutaService; import com.rjconsultores.ventaboletos.service.TramoRutaService; import com.rjconsultores.ventaboletos.service.TramoService; import com.rjconsultores.ventaboletos.service.TramoServicioService; import com.rjconsultores.ventaboletos.utilerias.HoraSistema; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.vo.esquemaoperacional.RutaTramoVO; import com.rjconsultores.ventaboletos.vo.esquemaoperacional.SecuenciaRutaTramoCoeficienteVO; import com.rjconsultores.ventaboletos.vo.esquemaoperacional.SecuenciaRutaTramoVO; @Service("tramoRutaService") public class TramoRutaServiceImpl implements TramoRutaService { private static Logger log = Logger.getLogger(TramoRutaServiceImpl.class); @Autowired private RutaService rutaService; @Autowired private RutaCombinacionService rutaCombinacionService; @Autowired private RutaSecuenciaService rutaSecuenciaService; @Autowired private RutaEmpresaService rutaEmpresaService; @Autowired private TramoService tramoService; @Autowired private TramoServicioService tramoServicioService; @Autowired private RutaDAO rutaDAO; @Autowired private OrgaoTramoDAO orgaoTramoDAO; @Autowired private TramoServicioDAO tramoServicioDAO; @Autowired private TramoDAO tramoDAO; /** * Hace la validación de los datos del rutaTramoVO * * @param rutaTramoVO * @throws BusinessException */ private void validarGenerarTramosRutas(RutaTramoVO rutaTramoVO) throws BusinessException { if (rutaTramoVO.getLsSecuenciaRutaTramoVO().isEmpty()) { throw new BusinessException("tramoRutaServiceImpl.msg.secuenciaObligatorio"); } if ((rutaTramoVO.getPrefixo() == null) || (rutaTramoVO.getPrefixo().isEmpty())) { throw new BusinessException("tramoRutaServiceImpl.msg.prefixoObligatorio"); } if (rutaTramoVO.getLsEmpresa().isEmpty()) { throw new BusinessException("tramoRutaServiceImpl.msg.empresaObligatoria"); } if (rutaTramoVO.getLsCombinacionRutaTramoVO().isEmpty()) { throw new BusinessException("tramoRutaServiceImpl.msg.combinacionObligatorio"); } for (SecuenciaRutaTramoCoeficienteVO s : rutaTramoVO.getLsCombinacionRutaTramoVO()) { if (s.getTramoId() != null) { continue; } if ((s.getOrigen() == null) || (s.getDestino() == null) || (s.getVia() == null) || (s.getKmReal() == null) || (s.getSecuencia() == null) || (s.getTiempoRecorrido() == null) || (!rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId().equals(21) && ((s.getCoeficienteTarifa1() == null) || (s.getKmCoeficiente1() == null) || (s.getKmCoeficiente1() == BigDecimal.ZERO)))) { throw new BusinessException("tramoRutaServiceImpl.msg.cambosObligatoriosCombinacion", new Object[] { s.getOrigen(), s.getDestino() }); } } for (SecuenciaRutaTramoVO s : rutaTramoVO.getLsSecuenciaRutaTramoVO()) { if (s.getTramoId() != null) { continue; } if ((s.getOrigen() == null) || (s.getDestino() == null) || (s.getVia() == null) || (s.getKmReal() == null) || (s.getSecuencia() == null) || (s.getTiempoRecorrido() == null)) { throw new BusinessException("tramoRutaServiceImpl.msg.cambosObligatoriosSecuencia", new Object[] { s.getOrigen(), s.getDestino() }); } } } @Transactional(rollbackFor = BusinessException.class) @Override public Ruta generarTramosRutas(RutaTramoVO rutaTramoVO) throws BusinessException { this.validarGenerarTramosRutas(rutaTramoVO); // Genero los tramos y tramos servicios de la combinacion que no existen // Aqui si genera tambien los tramos de la secuencia for (SecuenciaRutaTramoCoeficienteVO s : rutaTramoVO.getLsCombinacionRutaTramoVO()) { log.debug("Origen:" + s.getOrigen() + ";Destino:" + s.getDestino() + ";Via:" + s.getVia()); boolean fueGenerado = generarDatos(s, rutaTramoVO.getClaseServicio(), rutaTramoVO.getOrgaoConcedente()); log.debug("Fue Generado:" + fueGenerado); } // Genero la ruta Ruta ruta = new Ruta(); ruta.setDescruta(rutaTramoVO.getDescRuta()); ruta.setClaseServicio(rutaTramoVO.getClaseServicio()); ruta.setOrgaoConcedente(rutaTramoVO.getOrgaoConcedente()); ruta.setIndNombreObligatorio(rutaTramoVO.getSolicitaNombrePasajero()); ruta.setIndSentidoIda(rutaTramoVO.getIndSentidoIda()); if (rutaTramoVO.getVentaHandHeld() == null) { ruta.setVentaOffLine(false); } else { ruta.setVentaOffLine(rutaTramoVO.getVentaHandHeld()); } ruta.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); ruta.setActivo(Boolean.TRUE); ruta.setFecmodif(new java.util.Date()); ruta.setPrefixo(rutaTramoVO.getPrefixo()); ruta.setNumRuta(rutaTramoVO.getNumRuta()); //valores de tributação para ecf ruta.setIndTribPedagio(Boolean.FALSE); ruta.setIndTribTarifa(Boolean.TRUE); ruta.setIndTribTaxaEmbarque(Boolean.FALSE); ruta = rutaDAO.suscribir(ruta); // Genero la secuencia de la ruta for (SecuenciaRutaTramoVO s : rutaTramoVO.getLsSecuenciaRutaTramoVO()) { RutaSecuencia rutaSecuencia = new RutaSecuencia(); rutaSecuencia.setNumsecuencia(s.getSecuencia().shortValue()); rutaSecuencia.setTramo(tramoService.obtenerTramotPorOrigemDestinoVia(s.getOrigen(), s.getDestino(), s.getVia())); rutaSecuencia.setRuta(ruta); rutaSecuencia = rutaSecuenciaService.suscribir(rutaSecuencia); } for (SecuenciaRutaTramoCoeficienteVO s : rutaTramoVO.getLsCombinacionRutaTramoVO()) { RutaCombinacion rutaCombinacion = new RutaCombinacion(); rutaCombinacion.setIndventa(s.getPermiteVenda() == null ? true : s.getPermiteVenda()); rutaCombinacion.setRuta(ruta); rutaCombinacion.setTramo(tramoService.obtenerTramotPorOrigemDestinoVia(s.getOrigen(), s.getDestino(), s.getVia())); rutaCombinacion = rutaCombinacionService.suscribir(rutaCombinacion); } for (Empresa e : rutaTramoVO.getLsEmpresa()) { RutaEmpresa rutaEmpresa = new RutaEmpresa(); rutaEmpresa.setEmpresa(e); rutaEmpresa.setActivo(Boolean.TRUE); rutaEmpresa.setFecmodif(Calendar.getInstance().getTime()); rutaEmpresa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); rutaEmpresa.setRuta(ruta); rutaEmpresa = rutaEmpresaService.suscribir(rutaEmpresa); } return ruta; } @Override public RutaTramoVO generarRutaRegreso(RutaTramoVO rutaTramoVO) { RutaTramoVO rutaTramoRegresoVO = new RutaTramoVO(); rutaTramoRegresoVO.setClaseServicio(rutaTramoVO.getClaseServicio()); rutaTramoRegresoVO.setOrgaoConcedente(rutaTramoVO.getOrgaoConcedente()); rutaTramoRegresoVO.setSolicitaNombrePasajero(rutaTramoVO.getSolicitaNombrePasajero()); rutaTramoRegresoVO.setVentaHandHeld(rutaTramoVO.getVentaHandHeld() == null ? true : rutaTramoVO.getVentaHandHeld()); rutaTramoRegresoVO.setLsEmpresa(rutaTramoVO.getLsEmpresa()); if (rutaTramoVO.getIndSentidoIda()) { rutaTramoRegresoVO.setIndSentidoIda(Boolean.FALSE); } else { rutaTramoRegresoVO.setIndSentidoIda(Boolean.TRUE); } rutaTramoRegresoVO.setNumRuta(rutaTramoVO.getNumRuta()); rutaTramoRegresoVO.setPrefixo(rutaTramoVO.getPrefixo()); if (rutaTramoVO.getDescRuta() != null) { rutaTramoRegresoVO.setDescRuta(rutaTramoVO.getDescRuta()); } else { rutaTramoRegresoVO.setDescRuta("-"); } List lsSecuenciaRutaTramoRegresoVO = new ArrayList(); List lsSecuenciaRutaTramoIdaVO = new ArrayList(rutaTramoVO.getLsSecuenciaRutaTramoVO()); // Reordena a lista Collections.sort(lsSecuenciaRutaTramoIdaVO, new Comparator() { @Override public int compare(SecuenciaRutaTramoVO o1, SecuenciaRutaTramoVO o2) { return o2.getSecuencia().compareTo(o1.getSecuencia()); } }); int secuencia = 0; for (SecuenciaRutaTramoVO s : lsSecuenciaRutaTramoIdaVO) { TramoServicio tramoServicio = tramoServicioService.buscar(s.getDestino(), s.getOrigen(), s.getVia(), rutaTramoVO.getClaseServicio()); if (tramoServicio != null) { s.setTramoId(tramoServicio.getTramo().getTramoId()); s.setTramoServicioId(tramoServicio.getTramoservicioId()); lsSecuenciaRutaTramoRegresoVO.add(new SecuenciaRutaTramoVO(s.getDestino(), s.getOrigen(), s.getVia(), ++secuencia, s.getKmReal(), s.getTiempoRecorrido(), s.getTramoId(), s.getTramoServicioId(), rutaTramoRegresoVO.getNumRuta(), rutaTramoRegresoVO.getIndSentidoIda())); } else { lsSecuenciaRutaTramoRegresoVO.add(new SecuenciaRutaTramoVO(s.getDestino(), s.getOrigen(), s.getVia(), ++secuencia, s.getKmReal(), s.getTiempoRecorrido(), rutaTramoRegresoVO.getNumRuta(), rutaTramoRegresoVO.getIndSentidoIda())); } } rutaTramoRegresoVO.setLsSecuenciaRutaTramoVO(lsSecuenciaRutaTramoRegresoVO); List lsCombinacionRutaTramoRegresoVO = new ArrayList(); List lsCombinacionTramoIdaVO = new ArrayList(rutaTramoVO.getLsCombinacionRutaTramoVO()); Collections.sort(lsCombinacionTramoIdaVO, new Comparator() { @Override public int compare(SecuenciaRutaTramoCoeficienteVO o1, SecuenciaRutaTramoCoeficienteVO o2) { return o2.getSecuencia().compareTo(o1.getSecuencia()); } }); secuencia = 0; for (SecuenciaRutaTramoCoeficienteVO s : lsCombinacionTramoIdaVO) { TramoServicio tramoServicio = tramoServicioService.buscar(s.getDestino(), s.getOrigen(), s.getVia(), rutaTramoVO.getClaseServicio()); if (tramoServicio != null) { s.setTramoId(tramoServicio.getTramo().getTramoId()); s.setTramoServicioId(tramoServicio.getTramoservicioId()); SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO = new SecuenciaRutaTramoCoeficienteVO(s.getDestino(), s.getOrigen(), s.getVia(), ++secuencia, s.getKmReal(), s.getTiempoRecorrido(), s.getTramoId(), s.getTramoServicioId(), rutaTramoRegresoVO.getNumRuta()); OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(s.getDestino().getParadaId(), s.getOrigen().getParadaId(), s.getVia().getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicio().getClaseservicioId()); if (orgaoTramo != null) { secuenciaRutaTramoCoeficienteVO.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1(orgaoTramo.getCoeficienteTarifa1()); secuenciaRutaTramoCoeficienteVO.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1()); if (orgaoTramo.getCoeficienteTarifa2() != null) { secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa2(orgaoTramo.getCoeficienteTarifa2()); secuenciaRutaTramoCoeficienteVO.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2()); } } secuenciaRutaTramoCoeficienteVO.setPermiteVenda(s.getPermiteVenda()); lsCombinacionRutaTramoRegresoVO.add(secuenciaRutaTramoCoeficienteVO); } else { SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO = new SecuenciaRutaTramoCoeficienteVO(s.getDestino(), s.getOrigen(), s.getVia(), ++secuencia, s.getKmReal(), s.getTiempoRecorrido(), rutaTramoRegresoVO.getNumRuta()); secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1(s.getCoeficienteTarifa1()); secuenciaRutaTramoCoeficienteVO.setKmCoeficiente1(s.getKmCoeficiente1()); secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa2(s.getCoeficienteTarifa2()); secuenciaRutaTramoCoeficienteVO.setKmCoeficiente2(s.getKmCoeficiente2()); secuenciaRutaTramoCoeficienteVO.setPermiteVenda(s.getPermiteVenda()); lsCombinacionRutaTramoRegresoVO.add(secuenciaRutaTramoCoeficienteVO); } } rutaTramoRegresoVO.setLsCombinacionRutaTramoVO(lsCombinacionRutaTramoRegresoVO); return rutaTramoRegresoVO; } @Override public List generarCombinacion(RutaTramoVO rutaTramoVO) { // una nueva lista que va a ser ordenada. Con eso, no afecta la lista original List lsSecuenciaRutaTramoVO = new ArrayList(rutaTramoVO.getLsSecuenciaRutaTramoVO()); List lsSecuenciaCombinacionRutaTramoVO = new ArrayList(); Collections.sort(lsSecuenciaRutaTramoVO, new Comparator() { @Override public int compare(SecuenciaRutaTramoVO o1, SecuenciaRutaTramoVO o2) { return o1.getSecuencia().compareTo(o2.getSecuencia()); } }); int qtdTramos = lsSecuenciaRutaTramoVO.size(); int secuencia = 0; for (int i = 0; i < qtdTramos; i++) { SecuenciaRutaTramoVO secuenciaInicial = lsSecuenciaRutaTramoVO.get(i); Parada origen = secuenciaInicial.getOrigen(); BigDecimal totalKmsReal = secuenciaInicial.getKmReal(); HoraSistema totalTiempoRecorrido = secuenciaInicial.getTiempoRecorrido(); int j = i + 1; for (; j < (qtdTramos); j++) { Parada destino = lsSecuenciaRutaTramoVO.get(j).getOrigen(); Via via = secuenciaInicial.getVia(); SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origen, destino, via, ++secuencia, totalKmsReal, totalTiempoRecorrido, rutaTramoVO.getNumRuta()); if (via != null) { TramoServicio tramoServicio = tramoServicioService.buscar(origen, destino, via, rutaTramoVO.getClaseServicio()); if (tramoServicio != null) { log.debug("TRAMO EXISTE"); nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); } OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(origen.getParadaId(), destino.getParadaId(), via.getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicio().getClaseservicioId()); if (orgaoTramo != null) { nuevaSecuencia.setCoeficienteTarifa1(orgaoTramo.getCoeficienteTarifa1()); nuevaSecuencia.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1()); nuevaSecuencia.setCoeficienteTarifa2(orgaoTramo.getCoeficienteTarifa2()); nuevaSecuencia.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2()); nuevaSecuencia.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); } } if (nuevaSecuencia.getKmCoeficiente1() == null) { nuevaSecuencia.setKmCoeficiente1(nuevaSecuencia.getKmReal()); } lsSecuenciaCombinacionRutaTramoVO.add(nuevaSecuencia); totalKmsReal = totalKmsReal.add(lsSecuenciaRutaTramoVO.get(j).getKmReal()); totalTiempoRecorrido = totalTiempoRecorrido.sumar(lsSecuenciaRutaTramoVO.get(j).getTiempoRecorrido()); log.debug("Origen:" + nuevaSecuencia.getOrigen() + ";Destino:" + nuevaSecuencia.getDestino() + ";Via:" + nuevaSecuencia.getVia() + ";KmsReal:" + nuevaSecuencia.getKmReal() + ";hora:" + nuevaSecuencia.getTiempoRecorrido()); } Parada destino = lsSecuenciaRutaTramoVO.get(qtdTramos - 1).getDestino(); Via via = secuenciaInicial.getVia(); SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origen, destino, via, ++secuencia, totalKmsReal, totalTiempoRecorrido, rutaTramoVO.getNumRuta()); if (via != null) { TramoServicio tramoServicio = tramoServicioService.buscar(origen, destino, via, rutaTramoVO.getClaseServicio()); if (tramoServicio != null) { log.debug("TRAMO EXISTE"); nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); } OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(origen.getParadaId(), destino.getParadaId(), via.getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicio().getClaseservicioId()); if (orgaoTramo != null) { nuevaSecuencia.setCoeficienteTarifa1(orgaoTramo.getCoeficienteTarifa1()); nuevaSecuencia.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1()); nuevaSecuencia.setCoeficienteTarifa2(orgaoTramo.getCoeficienteTarifa2()); nuevaSecuencia.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2()); nuevaSecuencia.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); } } if (nuevaSecuencia.getKmCoeficiente1() == null) { nuevaSecuencia.setKmCoeficiente1(nuevaSecuencia.getKmReal()); } nuevaSecuencia.setNumRuta(rutaTramoVO.getNumRuta()); lsSecuenciaCombinacionRutaTramoVO.add(nuevaSecuencia); log.debug("Origen:" + nuevaSecuencia.getOrigen() + ";Destino:" + nuevaSecuencia.getDestino() + ";Via:" + nuevaSecuencia.getVia() + ";KmsReal:" + nuevaSecuencia.getKmReal() + ";hora:" + nuevaSecuencia.getTiempoRecorrido()); } return lsSecuenciaCombinacionRutaTramoVO; } /** * Genera los datos de tramo, tramo tiempo e coeficiente tarifa sino existen los datos * * @param secuencia * @param claseServicio * @param orgaoConcedente * @return */ private boolean generarDatos(SecuenciaRutaTramoCoeficienteVO secuencia, ClaseServicio claseServicio, OrgaoConcedente orgaoConcedente) { TramoServicio tramoServicio = tramoServicioDAO.buscar(secuencia.getOrigen(), secuencia.getDestino(), secuencia.getVia(), claseServicio); Tramo tramo = null; if (tramoServicio == null) { tramo = tramoService.buscar(secuencia.getOrigen(), secuencia.getDestino(), secuencia.getVia()); if (tramo == null) { tramo = new Tramo(); tramo.setDesctramo(tramoService.gerarDescripcionTramo(secuencia.getOrigen(), secuencia.getDestino(), secuencia.getVia())); tramo.setOrigem(secuencia.getOrigen()); tramo.setDestino(secuencia.getDestino()); tramo.setKmReal(secuencia.getKmReal()); tramo.setVia(secuencia.getVia()); tramo.setActivo(Boolean.TRUE); tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); tramo.setFecmodif(new java.util.Date()); tramo = tramoDAO.suscribir(tramo); } tramoServicio = new TramoServicio(); tramoServicio.setClaseServicio(claseServicio); tramoServicio.setTramo(tramo); tramoServicio.setTiemporecorrido(secuencia.getTiempoRecorrido().getFecha()); tramoServicio = tramoServicioService.suscribir(tramoServicio); if (secuencia.getOrgaoTramoId() == null) { OrgaoTramo orgaoTramo = new OrgaoTramo(); orgaoTramo.setClaseServicio(claseServicio); orgaoTramo.setOrgaoConcedente(orgaoConcedente); orgaoTramo.setTramo(tramo); orgaoTramo.setActivo(Boolean.TRUE); orgaoTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); orgaoTramo.setFecmodif(new java.util.Date()); orgaoTramo.setCoeficienteTarifa1(secuencia.getCoeficienteTarifa1()); orgaoTramo.setKmCoeficiente1(secuencia.getKmCoeficiente1()); if (secuencia.getCoeficienteTarifa2() != null) { orgaoTramo.setCoeficienteTarifa2(secuencia.getCoeficienteTarifa2()); orgaoTramo.setKmCoeficiente2(secuencia.getKmCoeficiente2()); } orgaoTramo = orgaoTramoDAO.suscribir(orgaoTramo); } return true; } return false; } }