package com.fp.frontend.controller.armas.solicitud; import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import org.primefaces.context.RequestContext; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.query.Filter; import com.fp.dto.query.SubQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; import com.fp.frontend.controller.pcustomer.PersonAddressController; import com.fp.frontend.controller.pcustomer.PersonDetailController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.general.mail.EnvioMail; import com.fp.general.mail.dto.EnvioCorreoDTO; import com.fp.general.mail.exception.EnvioMailException; import com.fp.general.mail.factory.EnvioMailFactory; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; import com.fp.persistence.parmas.param.TarmTramite; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmSolicitud; import com.fp.persistence.parmas.soli.TarmSolicitudArmas; import com.fp.persistence.parmas.soli.TarmSolicitudTramite; import com.fp.persistence.pcustomer.gene.TcustPersonAddress; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pgeneral.gene.TgeneCanton; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneCity; import com.fp.persistence.pgeneral.gene.TgeneParroquia; import com.fp.persistence.pgeneral.gene.TgeneProvince; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; @SuppressWarnings("serial") @ManagedBean @ViewScoped public class ValidacionTramiteLibreTransitoController extends AbstractController { /** * */ private static final long serialVersionUID = 1L; TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); TarmTramite tramite=new TarmTramite(); TcustPersonDetail detallesPersona=new TcustPersonDetail(); TarmSolicitudArmas solicitudArmas=new TarmSolicitudArmas(); private String provincia; private String canton; private String ciudad; private TgeneParroquia parroquia; private TcustPersonAddress direccionCliente; String tipoDireccion=""; private List lArmas; private String direccion; private String estadoTramite; private String tipoDocumento; private String tipoTramite; private String usoActividad; private String observaciones="Prueba observaciones"; private String gradoFuncionario=""; private TcustPersonDetail usuario; private String nombreInstitucion; private TarmCentroControl centroControl; private String csolicitud=""; private String opcion=""; private String numeroSolicitud; @ManagedProperty(value = "#{personAddressController}") private PersonAddressController personAddressController; @ManagedProperty(value = "#{tarmSolicitudTramiteController}") private TarmSolicitudTramiteController tarmSolicitudTramiteController; @ManagedProperty(value = "#{tarmSolicitudArmasController}") private TarmSolicitudArmasController tarmSolicitudArmasController; public ValidacionTramiteLibreTransitoController() throws Exception { super(TarmSolicitud.class); } @PostConstruct private void postconstruct() { try { startQuery(); this.init(); // Inicializa autoconsulta super.getMfilters().clear(); super.query(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void startQuery() { try { this.pasteBpmScreenParameters(); csolicitud=super.getMfilters().get("csolicitud"); super.getMfilters().clear(); } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. */ private void init() { try { recperpage = 15; // Cambiar al # reg a mirar. lrecord = new ArrayList<>(); beanalias = "VALIDACIONTRANSITO"; // this.csolicitud="1"; } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. * * @throws Exception */ @Override public void create() throws Exception { super.create(); } @Override public void query() throws Exception { // TODO Auto-generated method stub MessageHelper.setMessageError("msg_notQuery"); super.query(); } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { DtoQuery dto = super.getDtoQuery(true); //Filtrando las armas tarmSolicitudArmasController.setCsolicitud(csolicitud); tarmSolicitudArmasController.getMfilters().clear(); tarmSolicitudArmasController.query(); Filter filtro=new Filter("pk", csolicitud); dto.addFiltro(filtro); SubQuery sNumeroTramite= new SubQuery ("TarmSolicitudTramite", "numerotramite", "ntramite", "i.pk.csolicitud = t.pk"); dto.addSubQuery(sNumeroTramite); SubQuery sEstadoSolicitud= new SubQuery ("TarmSolicitudTramite", "numerotramite", "ntramite", "i.pk.csolicitud = t.pk"); dto.addSubQuery(sEstadoSolicitud); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { lrecord = (List) resp.get(beanalias); super.postQuery(lrecord); if(!lrecord.isEmpty()){ record=lrecord.get(0); //Obteniendo la solicitud TarmSolicitud solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(this.csolicitud); numeroSolicitud =solicitud.getNumerosolicitud(); //Obteniendo el tramite solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(record.getPk()); if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ tarmSolicitudTramiteController=new TarmSolicitudTramiteController(); tarmSolicitudTramiteController.setRecord(solicitudTramite); tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); //Estado tramite TgeneCatalogDetail catalogDetailTramite=null; if(solicitudTramite.getEstadotramite()!=null && solicitudTramite.getEstadotramitecodigo()!=null){ catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); } if(catalogDetailTramite!=null){ estadoTramite=catalogDetailTramite.getDescription(); } //Tipo tramite if(tramite.getTipotramite()!=null && tramite.getTipotramitecodigo()!=null){ catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); if(catalogDetailTramite!=null){ tipoTramite=catalogDetailTramite.getDescription(); } //Uso actividad catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); if(catalogDetailTramite!=null && tramite.getUsoactividad()!=null && tramite.getUsoactividadcodigo()!=null){ usoActividad=catalogDetailTramite.getDescription(); } } } //Datos de la persona detallesPersona = PersonDetailController.find(String.valueOf(record.getPersoncode().toString())); switch(detallesPersona.getIdentificationcatalog()){ case "CED": tipoDireccion = "1"; break; case "RUC": tipoDireccion= "2"; break; default: tipoDireccion= ""; break; } //Tipo de documento TgeneCatalogDetail catalogDetailDocumento=null; if(detallesPersona.getIdentificationcatalog()!=null && detallesPersona.getIdentificationcatalogcode()!=null){ catalogDetailDocumento=CatalogDetailController.findxCodigoCodcatalogo(detallesPersona.getIdentificationcatalog(), detallesPersona.getIdentificationcatalogcode()); if(catalogDetailDocumento!=null){ tipoDocumento=catalogDetailDocumento.getDescription(); } } //Obteniendo la direccion del cliente //this.direccionCliente=personAddressController.findPersonaPorDireccionTipoCatalogo(String.valueOf(record.getPersoncode()), tipoDireccion); this.direccionCliente=personAddressController.findPrincipal(String.valueOf(record.getPersoncode())) ; provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || personAddressController.getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); direccion= direccionCliente.getAddress(); //Obteniendo las armas lArmas = new ArrayList(); List listaSolicitudArmas=TarmSolicitudArmasController.findPorCSolicitud(record.getPk()); for (TarmSolicitudArmas sa : listaSolicitudArmas) { TarmArmas arma=ArmasController.find(sa.getPk().getCarma(),"REG"); lArmas.add(arma); } //Obteniendo los datos del usuario logueado TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); //Obteniendo el grado del funcionario TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(usuario.getMilitarygrade(), usuario.getMilitarygradecode()); if(grado!=null){ gradoFuncionario=grado.getDescription()+" - "; } //Obteniendo el centro de control centroControl=CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); if(centroControl!=null && centroControl.getNombreinstitucion()!=null && !centroControl.getNombreinstitucion().isEmpty() && centroControl.getNombreinstitucioncodigo()!=null && !centroControl.getNombreinstitucioncodigo().isEmpty()){ TgeneCatalogDetail catalogoInstitucion=CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); this.nombreInstitucion=catalogoInstitucion.getDescription(); } } } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @SuppressWarnings("unchecked") protected void querydatabaseSolicitud() { try { DtoQuery dto = super.getDtoQuery(true); SubQuery sNumeroTramite= new SubQuery ("TarmSolicitudTramite", "numerotramite", "ntramite", "i.pk.csolicitud = t.pk"); dto.addSubQuery(sNumeroTramite); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { lrecord = (List) resp.get(beanalias); if(!lrecord.isEmpty()){ record=lrecord.get(0); } super.postQuery(lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void save() { try { Request request = callerhelper.getRequest(); HashMap msave = new HashMap(); DtoSave dtosave = super.getDtoSave(); dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. //Aqui se le cambia el estado a TarmSolicitudTramite //segun se apruebe o se anule /* if(condicionAprobado){ this.tarmSolicitudTramiteController.cambiarEstado(estadoTramiteAprobado, estadoTramiteAprobadoCodigo); }else{ this.tarmSolicitudTramiteController.cambiarEstado(estadoTramiteAnulado, estadoTramiteAnuladoCodigo); }*/ DtoSave dtosaveSolicitudTramite = this.tarmSolicitudTramiteController.getDtoSave(); if(dtosaveSolicitudTramite.pendingProcess()){ dtosaveSolicitudTramite.setReturnpk(true); msave.put(this.tarmSolicitudTramiteController.getBeanalias(), dtosaveSolicitudTramite); } request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); this.tarmSolicitudTramiteController.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void postCommit(Response response) throws Exception { super.postCommitGeneric(response, beanalias); } /** * Metodo que envia un mail de notificacion de tramite anulado */ public void enviarNotificacion(){ try { if(this.opcion!=null && !this.opcion.isEmpty() && this.opcion.equalsIgnoreCase("D")){ String asunto = MsgControlArmas.getProperty("msg_asuntoNotificacionGuiaTranistoAnulada"); String cuerpo = MessageFormat.format(MsgControlArmas.getProperty("msg_cuerpoNotificacionGuiaTransitoAnulada"), detallesPersona.getName(), this.record.getModifiedData().get("ntramite"), this.observaciones,this.gradoFuncionario+usuario.getName(),this.nombreInstitucion); EnvioCorreoDTO envioCorreo = new EnvioCorreoDTO(); envioCorreo.setCorreoDesde(MsgControlArmas.getProperty("correoDesde")); //Cambiar por el correo del cliente envioCorreo.setCorreoPara(new String[]{MsgControlArmas.getProperty("correoDestino")}); envioCorreo.setAsunto(asunto); envioCorreo.setMensajeHTML(cuerpo); EnvioMail envioMail = EnvioMailFactory.getInstancia(); envioMail.envioMail(envioCorreo); } completarTarea(); } catch(EnvioMailException e){ MessageHelper.setMessageError(new Throwable("Se produjo un error al enviar el correo.")); } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo para finalizar la tarea del flujo */ public void completarTarea() { try { Request request = callerhelper.getRequest(); // limpiar request para finalizar la tarea. super.cleanRequest(request); request.modifiedData().put("csolicitud", csolicitud); request.modifiedData().put("TID", tid); request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R if(bpmDataStatus!= null && bpmDataStatus.equals("D")){ Mapdatosmail = new HashMap(); datosmail.put("razons",detallesPersona.getName()); datosmail.put("sol",numeroSolicitud); datosmail.put("observaciones",bpmDataComment); //grado funcionario de la persona logeada TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); datosmail.put("grado",personDetailObj.getMilitarygrade()); datosmail.put("funcionario",personDetailObj.getName()); // Centro de control de armas datosmail.put("centrocontrol",centroControl.getModifiedData().get("desinstitucion")); request.modifiedData().put("datosmail", datosmail); } request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { MessageHelper.setMessageInfo(resp); RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Busca una solicitud por su codigo * @param codigoSolicitud * @return */ public static TarmSolicitud findPorSolicitud(String codigoSolicitud) { try { ValidacionTramiteLibreTransitoController cc = new ValidacionTramiteLibreTransitoController(); cc.init(); cc.recperpage = 300; cc.addFilter("pk", codigoSolicitud); cc.querydatabase(); if (cc.record != null) { return cc.record; } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Busca una solicitud por su codigo * @param codigoSolicitud * @return */ public static TarmSolicitud findPorSolicitudSimple(String codigoSolicitud) { try { ValidacionTramiteLibreTransitoController cc = new ValidacionTramiteLibreTransitoController(); cc.init(); cc.recperpage = 300; cc.addFilter("pk", codigoSolicitud); cc.querydatabaseSolicitud(); if (cc.record != null) { return cc.record; } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Incrementa el numero del arma * @param arma * @return */ public int incrementarRowkey(TarmArmas arma){ int n=0; for (int i = 0; i < lArmas.size(); i++) { if(arma.getPk()==lArmas.get(i).getPk()){ n=i+1; break; } } return n; } /** * Obtiene los detalles de las armas segun el catalogo * @param catalogo * @param catalogoCode * @return */ public String aspectoArmaCatalogo(String catalogo, String catalogoCode){ if(catalogo!=null && catalogoCode!=null && !catalogo.isEmpty() && !catalogoCode.isEmpty()){ return CatalogDetailController.findxCodigoCodcatalogo(catalogo, catalogoCode).getDescription(); } return null; } /** * Devuelve una descripcion de catalogo segun un tipo de aspecto * @param arma * @param tipoAspecto * @return */ public String aspectoArmaExplosivoCatalogo(TarmArmas arma,String tipoAspecto){ String aspecto=""; try { TarmTipoArmaExplosivo explosivo=TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); if(explosivo!=null){ if(tipoAspecto.equalsIgnoreCase("clase") && explosivo.getClase()!=null && !explosivo.getClase().isEmpty() && explosivo.getClasecodigo()!=null && !explosivo.getClasecodigo().isEmpty()){ aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getClase(), explosivo.getClasecodigo()).getDescription(); }else if(tipoAspecto.equalsIgnoreCase("tipo") && explosivo.getTipoarmaexplosivo()!=null && !explosivo.getTipoarmaexplosivo().isEmpty() && explosivo.getTipoarmaexplosivocodigo()!=null && !explosivo.getTipoarmaexplosivocodigo().isEmpty()){ aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getTipoarmaexplosivo(), explosivo.getTipoarmaexplosivocodigo()).getDescription(); }else if(tipoAspecto.equalsIgnoreCase("calibre") && explosivo.getCalibre()!=null && !explosivo.getCalibre().isEmpty() && explosivo.getCalibrecodigo()!=null && !explosivo.getCalibrecodigo().isEmpty()){ aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getCalibre(), explosivo.getCalibrecodigo()).getDescription(); } } } catch (Throwable e) { MessageHelper.setMessageError(e); } return aspecto; } public TarmTipoArmaExplosivo explosivoPorArma(TarmArmas arma){ TarmTipoArmaExplosivo explosivo=new TarmTipoArmaExplosivo(); try { explosivo=TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); } catch (Throwable e) { MessageHelper.setMessageError(e); } return explosivo; } public TarmSolicitudTramite getSolicitudTramite() { return solicitudTramite; } public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { this.solicitudTramite = solicitudTramite; } public TarmTramite getTramite() { return tramite; } public void setTramite(TarmTramite tramite) { this.tramite = tramite; } public TcustPersonDetail getDetallesPersona() { return detallesPersona; } public void setDetallesPersona(TcustPersonDetail detallesPersona) { this.detallesPersona = detallesPersona; } public String getProvincia() { return provincia; } public void setProvincia(String provincia) { this.provincia = provincia; } public String getCanton() { return canton; } public void setCanton(String canton) { this.canton = canton; } public String getCiudad() { return ciudad; } public void setCiudad(String ciudad) { this.ciudad = ciudad; } public String getNumeroSolicitud() { return numeroSolicitud; } public void setNumeroSolicitud(String numeroSolicitud) { this.numeroSolicitud = numeroSolicitud; } public List getlArmas() { return lArmas; } public void setlArmas(List lArmas) { this.lArmas = lArmas; } public PersonAddressController getPersonAddressController() { return personAddressController; } public void setPersonAddressController( PersonAddressController personAddressController) { this.personAddressController = personAddressController; } public TarmSolicitudArmas getSolicitudArmas() { return solicitudArmas; } public void setSolicitudArmas(TarmSolicitudArmas solicitudArmas) { this.solicitudArmas = solicitudArmas; } public String getDireccion() { return direccion; } public void setDireccion(String direccion) { this.direccion = direccion; } public String getEstadoTramite() { return estadoTramite; } public void setEstadoTramite(String estadoTramite) { this.estadoTramite = estadoTramite; } public String getTipoDocumento() { return tipoDocumento; } public void setTipoDocumento(String tipoDocumento) { this.tipoDocumento = tipoDocumento; } public String getTipoTramite() { return tipoTramite; } public void setTipoTramite(String tipoTramite) { this.tipoTramite = tipoTramite; } public String getUsoActividad() { return usoActividad; } public void setUsoActividad(String usoActividad) { this.usoActividad = usoActividad; } public TarmSolicitudTramiteController getTarmSolicitudTramiteController() { return tarmSolicitudTramiteController; } public void setTarmSolicitudTramiteController( TarmSolicitudTramiteController tarmSolicitudTramiteController) { this.tarmSolicitudTramiteController = tarmSolicitudTramiteController; } public TarmSolicitudArmasController getTarmSolicitudArmasController() { return tarmSolicitudArmasController; } public void setTarmSolicitudArmasController( TarmSolicitudArmasController tarmSolicitudArmasController) { this.tarmSolicitudArmasController = tarmSolicitudArmasController; } public TgeneParroquia getParroquia() { return parroquia; } public void setParroquia(TgeneParroquia parroquia) { this.parroquia = parroquia; } public TcustPersonAddress getDireccionCliente() { return direccionCliente; } public void setDireccionCliente(TcustPersonAddress direccionCliente) { this.direccionCliente = direccionCliente; } public String getTipoDireccion() { return tipoDireccion; } public void setTipoDireccion(String tipoDireccion) { this.tipoDireccion = tipoDireccion; } public String getObservaciones() { return observaciones; } public void setObservaciones(String observaciones) { this.observaciones = observaciones; } public String getGradoFuncionario() { return gradoFuncionario; } public void setGradoFuncionario(String gradoFuncionario) { this.gradoFuncionario = gradoFuncionario; } public TcustPersonDetail getUsuario() { return usuario; } public void setUsuario(TcustPersonDetail usuario) { this.usuario = usuario; } public String getNombreInstitucion() { return nombreInstitucion; } public void setNombreInstitucion(String nombreInstitucion) { this.nombreInstitucion = nombreInstitucion; } public TarmCentroControl getCentroControl() { return centroControl; } public void setCentroControl(TarmCentroControl centroControl) { this.centroControl = centroControl; } public String getCsolicitud() { return csolicitud; } public void setCsolicitud(String csolicitud) { this.csolicitud = csolicitud; } public String getOpcion() { return opcion; } public void setOpcion(String opcion) { this.opcion = opcion; } public static long getSerialversionuid() { return serialVersionUID; } }