diff --git a/src/java/com/rjconsultores/ventaboletos/rest/service/SincronizarOperadoresService.java b/src/java/com/rjconsultores/ventaboletos/rest/service/SincronizarOperadoresService.java index 30690bcd5..05ed85a6c 100644 --- a/src/java/com/rjconsultores/ventaboletos/rest/service/SincronizarOperadoresService.java +++ b/src/java/com/rjconsultores/ventaboletos/rest/service/SincronizarOperadoresService.java @@ -1,22 +1,41 @@ package com.rjconsultores.ventaboletos.rest.service; +import java.util.ArrayList; import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.rjconsultores.routing.ReadOnlyConnection; import com.rjconsultores.ventaboletos.dao.PuntoVentaDAO; +import com.rjconsultores.ventaboletos.entidad.EmbarcadaDispOperador; import com.rjconsultores.ventaboletos.rest.bean.ParamsDadosOperador; +import com.rjconsultores.ventaboletos.service.EmbarcadaDispOperadorService; +import com.rjconsultores.ventaboletos.service.UsuarioService; import com.rjconsultores.ventaboletos.vo.embarcada.UsuarioEmbarcadaVO; import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; @Service("sincronizarOperadoresService") public class SincronizarOperadoresService { + @Autowired + EmbarcadaDispOperadorService embarcadaDispOperadorService; + + @Autowired + UsuarioService usuarioService; @ReadOnlyConnection public List buscarDadosOperador(ParamsDadosOperador params) { - PuntoVentaDAO puntoVentaDAO = (PuntoVentaDAO)AppContext.getApplicationContext().getBean("puntoVentaDAO"); - return puntoVentaDAO.buscaUsuariosDoPuntoVenta(params.getPuntoVentaId()); - } - + PuntoVentaDAO puntoVentaDAO = (PuntoVentaDAO) AppContext.getApplicationContext().getBean("puntoVentaDAO"); + List embDispOperadorList = embarcadaDispOperadorService.buscarEmbarcadaDispOperadorPorPuntoVenta(params.getPuntoVentaId()); + if (embDispOperadorList != null && !embDispOperadorList.isEmpty()) { + List usuariosIds = new ArrayList(); + for (EmbarcadaDispOperador embarcadaDispOperador : embDispOperadorList) { + usuariosIds.add(embarcadaDispOperador.getUsuarioId()); + } + return usuarioService.buscarUsuarioEmbarcadaPorUsuariosIds(usuariosIds); + } else { + return puntoVentaDAO.buscaUsuariosDoPuntoVenta(params.getPuntoVentaId()); + } + } + } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaDispositivoOperadorVendaEmbarcadaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaDispositivoOperadorVendaEmbarcadaController.java new file mode 100644 index 000000000..291adfb7c --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaDispositivoOperadorVendaEmbarcadaController.java @@ -0,0 +1,252 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.gui.controladores.catalogos; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.Combobox; +import org.zkoss.zul.Comboitem; +import org.zkoss.zul.Paging; +import org.zkoss.zul.Textbox; + +import com.rjconsultores.ventaboletos.entidad.DispositivoEmbarcada; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.enums.SistemaEnum; +import com.rjconsultores.ventaboletos.service.DispositivoEmbarcadaService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxPuntoVenta; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderOperadorDispositivoVendaEmbarcada; +import com.trg.search.Search; + +/** + * + * @author Fabricio + */ +@Controller("busquedaDispositivoOperadorVendaEmbarcadaController") +@Scope("prototype") +public class BusquedaDispositivoOperadorVendaEmbarcadaController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + @Autowired + private transient PagedListWrapper plwDispositivoVendaEmbarcada; + private MyComboboxEstandar cmbEmpresa; + private List lsEmpresa; + private List lsSistemaEnum; + private MyComboboxPuntoVenta cmbPuntoVenta; + private Textbox txtDescricao; + private Textbox txtRegistro; + private MyComboboxEstandar cmbVersaoUltimaSinc; + private Textbox txtMei; + private Paging pagingDispositivoVendaEmbarcada; + private MyListbox dispositivoVendaEmbarcadaList; + private Search dispositivoVendaEmbarcadaBusqueda; + private List lsVersoesDispoitivos; + @Autowired + private DispositivoEmbarcadaService dispositivoEmbarcadaService; + + + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + this.lsEmpresa = UsuarioLogado.getUsuarioLogado().getEmpresa(); + setLsVersoesDispoitivos(dispositivoEmbarcadaService.buscarAllVersaoUltimaSinc()); + lsSistemaEnum = Arrays.asList(SistemaEnum.values()); + + dispositivoVendaEmbarcadaList.setItemRenderer(new RenderOperadorDispositivoVendaEmbarcada()); + dispositivoVendaEmbarcadaList.addEventListener("onDoubleClick", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + DispositivoEmbarcada a = (DispositivoEmbarcada) dispositivoVendaEmbarcadaList.getSelected(); + verDispositivoVendaEmbarcada(a); + } + }); + + refreshLista(); + + cmbEmpresa.focus(); + } + + private void verDispositivoVendaEmbarcada(DispositivoEmbarcada a) { + if (a == null) { + return; + } + + Map args = new HashMap(); + args.put("dispositivoVendaEmbarcada", a); + args.put("dispositivoVendaEmbarcadaList", dispositivoVendaEmbarcadaList); + + openWindow("/gui/esquema_operacional/editarOperadoresDispositivo.zul", + Labels.getLabel("editarOperadoresDispositivoController.window.title"), args, MODAL); + } + + private void refreshLista() { + HibernateSearchObject dispositivoEmbarcadaBusqueda = new HibernateSearchObject(DispositivoEmbarcada.class, + pagingDispositivoVendaEmbarcada.getPageSize()); + + dispositivoEmbarcadaBusqueda.addFilterLike("descricao", + "%" + txtDescricao.getText().trim().concat("%")); + + dispositivoEmbarcadaBusqueda.addFilterLike("registro", + "%" + txtRegistro.getText().trim().concat("%")); + + + dispositivoEmbarcadaBusqueda.addFilterLike("imei", + "%" + txtMei.getText().trim().concat("%")); + + Comboitem cbiEmpresa = cmbEmpresa.getSelectedItem(); + if (cbiEmpresa != null) { + Empresa dab = (Empresa) cbiEmpresa.getValue(); + dispositivoEmbarcadaBusqueda.addFilterEqual("empresa.empresaId", dab.getEmpresaId()); + } + + Comboitem cbiPuntoVenta = cmbPuntoVenta.getSelectedItem(); + if (cbiPuntoVenta != null) { + PuntoVenta dab = (PuntoVenta) cbiPuntoVenta.getValue(); + dispositivoEmbarcadaBusqueda.addFilterEqual("puntoVenta.puntoventaId", dab.getPuntoventaId()); + } + + plwDispositivoVendaEmbarcada.init(dispositivoEmbarcadaBusqueda, dispositivoVendaEmbarcadaList, pagingDispositivoVendaEmbarcada); + + if (dispositivoVendaEmbarcadaList.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("dispositivoVendaEmbarcadaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + } + } + + public void onClick$btnPesquisa(Event ev) { + refreshLista(); + } + + public void onClick$btnRefresh(Event ev) { + refreshLista(); + } + + + public List getLsSistemaEnum() { + return lsSistemaEnum; + } + + public void setLsSistemaEnum(List lsSistemaEnum) { + this.lsSistemaEnum = lsSistemaEnum; + } + + public PagedListWrapper getPlwplwDispositivoVendaEmbarcada() { + return plwDispositivoVendaEmbarcada; + } + + public void setPlwDispositivoVendaEmbarcada(PagedListWrapper plwDispositivoVendaEmbarcada) { + this.plwDispositivoVendaEmbarcada = plwDispositivoVendaEmbarcada; + } + + public Combobox getCmbEmpresa() { + return cmbEmpresa; + } + + public void setCmbEmpresa(MyComboboxEstandar cmbEmpresa) { + this.cmbEmpresa = cmbEmpresa; + } + + public List getLsEmpresa() { + return lsEmpresa; + } + + public void setLsEmpresa(List lsEmpresa) { + this.lsEmpresa = lsEmpresa; + } + + public Textbox getTxtDescricao() { + return txtDescricao; + } + + public void setTxtDescricao(Textbox txtDescricao) { + this.txtDescricao = txtDescricao; + } + + public Textbox getTxtRegistro() { + return txtRegistro; + } + + public void setTxtRegistro(Textbox txtRegistro) { + this.txtRegistro = txtRegistro; + } + + + public Textbox getTxtMei() { + return txtMei; + } + + public void setTxtMei(Textbox txtMei) { + this.txtMei = txtMei; + } + + public Paging getPagingDispositivoVendaEmbarcada() { + return pagingDispositivoVendaEmbarcada; + } + + public void setPagingDispositivoVendaEmbarcada(Paging pagingDispositivoVendaEmbarcada) { + this.pagingDispositivoVendaEmbarcada = pagingDispositivoVendaEmbarcada; + } + + public MyListbox getDispositivoVendaEmbarcadaList() { + return dispositivoVendaEmbarcadaList; + } + + public void setDispositivoVendaEmbarcadaList(MyListbox dispositivoVendaEmbarcadaList) { + this.dispositivoVendaEmbarcadaList = dispositivoVendaEmbarcadaList; + } + + public Search getDispositivoVendaEmbarcadaBusqueda() { + return dispositivoVendaEmbarcadaBusqueda; + } + + public void setDispositivoVendaEmbarcadaBusqueda(Search dispositivoVendaEmbarcadaBusqueda) { + this.dispositivoVendaEmbarcadaBusqueda = dispositivoVendaEmbarcadaBusqueda; + } + + public PagedListWrapper getPlwDispositivoVendaEmbarcada() { + return plwDispositivoVendaEmbarcada; + } + + public MyComboboxEstandar getCmbVersaoUltimaSinc() { + return cmbVersaoUltimaSinc; + } + + public void setCmbVersaoUltimaSinc(MyComboboxEstandar cmbVersaoUltimaSinc) { + this.cmbVersaoUltimaSinc = cmbVersaoUltimaSinc; + } + + public List getLsVersoesDispoitivos() { + return lsVersoesDispoitivos; + } + + public void setLsVersoesDispoitivos(List lsVersoesDispoitivos) { + this.lsVersoesDispoitivos = lsVersoesDispoitivos; + } + + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOperadoresDispositivoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOperadoresDispositivoController.java new file mode 100644 index 000000000..95c433e94 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOperadoresDispositivoController.java @@ -0,0 +1,341 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.gui.controladores.catalogos; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.util.Clients; +import org.zkoss.zul.Textbox; +import org.zkoss.zul.Window; + +import com.rjconsultores.ventaboletos.entidad.DispositivoEmbarcada; +import com.rjconsultores.ventaboletos.entidad.EmbarcadaDispOperador; +import com.rjconsultores.ventaboletos.service.EmbarcadaDispOperadorService; +import com.rjconsultores.ventaboletos.service.UsuarioService; +import com.rjconsultores.ventaboletos.vo.embarcada.UsuarioEmbarcadaVO; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderUsuarioDispositivo; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderUsuarioDispositivoSelecao; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderUsuarioDispositivoSelecionados; + +/** + * + * @author rodrigo + */ +@Controller("editarOperadoresDispositivoController") +@Scope("prototype") +public class EditarOperadoresDispositivoController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + private static Logger log = Logger.getLogger(EditarOperadoresDispositivoController.class); + + /** + * ListBox dos usuários que estão atrelados ao dispositivo + */ + private MyListbox usuariosDispositivoListBox; + private Textbox txtDescImei; + private Textbox txtPuntoVenta; + private List lsTodosUsuariosPontoVendaAtualizado; + private List lsTodosUsuariosPontoVendaInicial; + private List lsUsuariosAtreladosDispositivo; + private List lsUsuariosAdicionadosAtreladosDispositivo; + private List lsUsuariosRemovidosAtreladosDispositivo; + private Window winEditarOperadoresDispositivo; + /** + * Parametro + */ + private DispositivoEmbarcada dispositivoVendaEmbarcada; + + @Autowired + private UsuarioService usuarioService; + + @Autowired + EmbarcadaDispOperadorService embarcadaDispOperadorService; + + /** + * Campo pesquisa Textbox + */ + private Textbox txtPalavraPesquisaUsuario; + /** + * ListBox do campo de pesuisa dos usuários + */ + private MyListbox usuarioPesquisaSelecaoListBox; + + /** + * ListBox dos usuários selecionados + */ + private MyListbox usuarioSelecionadoListBox; + + private Textbox txtFiltro; + + + public List getLsUsuarios() { + return lsTodosUsuariosPontoVendaAtualizado; + } + + public void setLsUsuarios(List lsUsuarios) { + this.lsTodosUsuariosPontoVendaAtualizado = lsUsuarios; + } + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + // Instancia listas vazias + lsTodosUsuariosPontoVendaAtualizado = new ArrayList(); + lsUsuariosAtreladosDispositivo = new ArrayList(); + lsTodosUsuariosPontoVendaInicial = new ArrayList(); + lsUsuariosRemovidosAtreladosDispositivo = new ArrayList(); + lsUsuariosAdicionadosAtreladosDispositivo = new ArrayList(); + + dispositivoVendaEmbarcada = (DispositivoEmbarcada) Executions.getCurrent().getArg().get("dispositivoVendaEmbarcada"); + // Preenche usuários do Ponto de Venda + lsTodosUsuariosPontoVendaAtualizado.addAll(usuarioService.buscarUsuariosEmbarcadaPorPontoVenda(dispositivoVendaEmbarcada.getPuntoVenta().getPuntoventaId().longValue())); + lsTodosUsuariosPontoVendaInicial = lsTodosUsuariosPontoVendaAtualizado; + // Preenche usuários atrelados ao dispositivo + lsUsuariosAtreladosDispositivo.addAll(usuarioService.buscarUsuariosEmbarcadaPorDispositivo(dispositivoVendaEmbarcada.getDispositivoEmbarcadaId())); + // Remove da lista de usuários do ponto de venda os usuários que já estão atrelados ao dispositivo + for (UsuarioEmbarcadaVO usuarioEmbarcadaVO : lsUsuariosAtreladosDispositivo) { + lsTodosUsuariosPontoVendaAtualizado.remove(usuarioEmbarcadaVO); + } + // Preenche campos de texto + txtDescImei.setText(dispositivoVendaEmbarcada != null && dispositivoVendaEmbarcada.getImei() != null ? dispositivoVendaEmbarcada.getImei() : ""); + txtDescImei.setDisabled(true); + + txtPuntoVenta.setText(dispositivoVendaEmbarcada != null && dispositivoVendaEmbarcada.getPuntoVenta() != null ? dispositivoVendaEmbarcada.getPuntoVenta().getNombpuntoventa() : ""); + + // Instancia reinderizador da Listbox dos usuários selecionados (Grid de usuários selecionados) + usuarioSelecionadoListBox.setItemRenderer(new RenderUsuarioDispositivoSelecionados(new EventListener() { + + @Override + public void onEvent(Event arg0) throws Exception { + + UsuarioEmbarcadaVO usuarioClicado = (UsuarioEmbarcadaVO) arg0.getTarget().getAttribute("data"); + for (Object usuario : usuarioSelecionadoListBox.getListData()) { + if (((UsuarioEmbarcadaVO) usuario).equals(usuarioClicado)) { + usuarioSelecionadoListBox.removeItem(usuarioClicado); + executarPesquisaUsuario(); + break; + } + } + } + })); + + // Instancia Reinderizador da Listbox dos usuários atrelados ao dispositivo + usuariosDispositivoListBox.setItemRenderer(new RenderUsuarioDispositivo()); + + usuariosDispositivoListBox.addEventListener("onDoubleClick", new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + + } + }); + + if (usuariosDispositivoListBox != null && lsUsuariosAtreladosDispositivo != null) { + usuariosDispositivoListBox.setData(lsUsuariosAtreladosDispositivo); + } + + winEditarOperadoresDispositivo.addEventListener("onClose", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + + txtDescImei.getText(); + // Caso tenha preenchido lista de usuários atrelados ou removidos pergunta usuário se ele deseja fechar a tela, se listas vazias fecha tela sem perguntar + if (!lsUsuariosAdicionadosAtreladosDispositivo.isEmpty() && !lsUsuariosRemovidosAtreladosDispositivo.isEmpty()) { + + int resp = Messagebox.show( + Labels.getLabel("editarOperadoresDispositivoController.MSG.existemUsuariosAtrelados"), + Labels.getLabel("editarOperadoresDispositivoController.window.title"), + Messagebox.YES | Messagebox.NO, Messagebox.QUESTION); + if (resp == Messagebox.YES) { + closeWindow(); + + } else { + event.stopPropagation(); + txtDescImei.focus(); + } + } else { + //closeWindow(); + + } + } + }); + + } + + public void onClick$btnSalva(Event ev) { + limparFiltro(); + txtDescImei.getText(); + try { + if ((lsUsuariosAdicionadosAtreladosDispositivo == null && lsUsuariosRemovidosAtreladosDispositivo == null) || + (lsUsuariosAdicionadosAtreladosDispositivo.isEmpty() && lsUsuariosRemovidosAtreladosDispositivo.isEmpty())) { + Clients.alert(Labels.getLabel("editarOperadoresDispositivoController.MSG.naoAdicionadoItemNovo"), + Labels.getLabel("editarOperadoresDispositivoController.window.title"), + Messagebox.INFORMATION); + + return; + } + + // Salvar lista usuários adicionados + if (lsUsuariosAdicionadosAtreladosDispositivo != null && !lsUsuariosAdicionadosAtreladosDispositivo.isEmpty()) { + embarcadaDispOperadorService.inserirListEmbarcadaDispOperador(converteParaEmbarcadaDispOperador(lsUsuariosAdicionadosAtreladosDispositivo, + dispositivoVendaEmbarcada.getDispositivoEmbarcadaId(), dispositivoVendaEmbarcada.getPuntoVenta().getPuntoventaId().longValue())); + lsUsuariosAtreladosDispositivo.addAll(lsUsuariosAdicionadosAtreladosDispositivo); + lsUsuariosAdicionadosAtreladosDispositivo.clear(); + } + + // Salvar lista usuários removidos + if (lsUsuariosRemovidosAtreladosDispositivo != null && !lsUsuariosRemovidosAtreladosDispositivo.isEmpty()) { + embarcadaDispOperadorService.removerListEmbarcadaDispOperador(converteParaEmbarcadaDispOperador(lsUsuariosRemovidosAtreladosDispositivo, + dispositivoVendaEmbarcada.getDispositivoEmbarcadaId(), dispositivoVendaEmbarcada.getPuntoVenta().getPuntoventaId().longValue())); + lsUsuariosRemovidosAtreladosDispositivo.clear(); + } + Messagebox.show( + Labels.getLabel("editarOperadoresDispositivoController.MSG.suscribirOK"), + Labels.getLabel("editarOperadoresDispositivoController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + + closeWindow(); + } catch (Exception ex) { + log.error(ex); + Clients.alert( + Labels.getLabel("MSG.Error"), + Labels.getLabel("editarEstacionController.window.title"), + Messagebox.INFORMATION); + } + } + + public void onClick$btnAplicarFiltro(Event ev) { + aplicarFiltro(); + } + + public void onOK$txtFiltro(Event ev) { + + } + + public void onClick$btnRemoverFiltro(Event ev) { + limparFiltro(); + } + + private void limparFiltro() { + txtFiltro.setText(""); + usuariosDispositivoListBox.setData(lsUsuariosAtreladosDispositivo); + } + + public void onClick$btnAdicionarUsuario(Event ev) { + for (Object usuario : usuarioSelecionadoListBox.getListData()) { + UsuarioEmbarcadaVO usuarioSelecionado = (UsuarioEmbarcadaVO) usuario; + + if (!lsUsuariosAtreladosDispositivo.contains(usuarioSelecionado)) { + lsUsuariosAtreladosDispositivo.add(usuarioSelecionado); + lsUsuariosAdicionadosAtreladosDispositivo.add(usuarioSelecionado); + } + } + usuariosDispositivoListBox.setData(lsUsuariosAtreladosDispositivo); + usuarioSelecionadoListBox.getListData().clear(); + usuariosDispositivoListBox.renderAll(); + } + + public void onClick$btnRemoverUsuario(Event ev) { + UsuarioEmbarcadaVO usuarioSelecionado = (UsuarioEmbarcadaVO) usuariosDispositivoListBox.getSelected(); + if (usuarioSelecionado != null && usuarioSelecionado.getUsuarioId() != null) { + lsUsuariosRemovidosAtreladosDispositivo.add(usuarioSelecionado); + lsUsuariosAtreladosDispositivo.remove(usuarioSelecionado); + usuariosDispositivoListBox.setData(lsUsuariosAtreladosDispositivo); + } + usuariosDispositivoListBox.renderAll(); + } + + public void onClick$btnPesquisaUsuario(Event ev) { + executarPesquisaUsuario(); + } + + private void aplicarFiltro() { + String filtro = txtFiltro.getText(); + if (filtro.isEmpty()) { + usuariosDispositivoListBox.setData(lsUsuariosAtreladosDispositivo); + return; + } + List lsUsuariosFiltrado = new ArrayList(); + for (UsuarioEmbarcadaVO usuarioEmbarcadaVO : lsUsuariosAtreladosDispositivo) { + if (usuarioEmbarcadaVO.getCveusuario().toUpperCase().contains(filtro.toUpperCase())) { + lsUsuariosFiltrado.add(usuarioEmbarcadaVO); + } + } + usuariosDispositivoListBox.setData(lsUsuariosFiltrado); + usuariosDispositivoListBox.renderAll(); + } + + private void executarPesquisaUsuario() { + usuarioPesquisaSelecaoListBox.setItemRenderer(new RenderUsuarioDispositivoSelecao(new EventListener() { + // Este evento será acionado quando for clicado no botão (+) para adicionar + @Override + public void onEvent(Event arg0) throws Exception { + UsuarioEmbarcadaVO usuarioClicado = (UsuarioEmbarcadaVO) arg0.getTarget().getAttribute("data"); + if (usuarioSelecionadoListBox.getListData().isEmpty()) { + usuarioSelecionadoListBox.addItemNovo(usuarioClicado); + } else { + for (Object usuarioEmbarcadaVO : usuarioSelecionadoListBox.getListData()) { + if (!((UsuarioEmbarcadaVO) usuarioEmbarcadaVO).equals(usuarioClicado)) { + usuarioSelecionadoListBox.addItemNovo(usuarioClicado); + break; + } + } + } + usuarioPesquisaSelecaoListBox.removeItem(usuarioClicado); + } + })); + + String termoPesquisaLogin = txtPalavraPesquisaUsuario.getText(); + List lsUsuariosSemAdicionadas = new ArrayList(); + + for (UsuarioEmbarcadaVO usuarioEmbarcadaVO : lsTodosUsuariosPontoVendaInicial) { + if (usuarioEmbarcadaVO.getCveusuario() != null && usuarioEmbarcadaVO.getCveusuario().toUpperCase().contains(termoPesquisaLogin.toUpperCase())) { + lsUsuariosSemAdicionadas.add(usuarioEmbarcadaVO); + } + } + + usuarioPesquisaSelecaoListBox.setData(lsUsuariosSemAdicionadas); + + if (usuarioPesquisaSelecaoListBox.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioLinhasHorarioController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + } + } + + /** + * Converte lista para List + * + * @param usuarioEmbarcadaVOList + * @param dispositivoId + * @param puntoVentaId + * @return + */ + private List converteParaEmbarcadaDispOperador(List usuarioEmbarcadaVOList, Long dispositivoId, Long puntoVentaId) { + List embarcadaDispOperadorList = new ArrayList(); + for (UsuarioEmbarcadaVO usuarioEmbarcadaVO : usuarioEmbarcadaVOList) { + EmbarcadaDispOperador embarcadaDispOperador = new EmbarcadaDispOperador(usuarioEmbarcadaVO.getUsuarioId(), dispositivoId, puntoVentaId, null, null); + embarcadaDispOperadorList.add(embarcadaDispOperador); + } + return embarcadaDispOperadorList; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/esquemaoperacional/ItemMenuCadastroOperadorPorDispositivoEmbarcada.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/esquemaoperacional/ItemMenuCadastroOperadorPorDispositivoEmbarcada.java new file mode 100644 index 000000000..13ea6331f --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/esquemaoperacional/ItemMenuCadastroOperadorPorDispositivoEmbarcada.java @@ -0,0 +1,26 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.esquemaoperacional; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuCadastroOperadorPorDispositivoEmbarcada extends DefaultItemMenuSistema { + + public ItemMenuCadastroOperadorPorDispositivoEmbarcada() { + super("indexController.mniConfVendaEmbarcada.cadastroDispositivoOperador.label"); + } + + @Override + public String getClaveMenu() { + return ConstantesFuncionSistema.CLAVE_OPERADORES_DISPOSITIVO_VENDA_EMBARCADA; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/esquema_operacional/busquedaDispositivoOperadorEmbarcada.zul", + Labels.getLabel("busquedaDispositvoOperadorEmbarcada.titulo"), getArgs() ,desktop); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties index c35b4b47e..01b645fe3 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties @@ -94,6 +94,7 @@ esquemaOperacional.atualizacorridafechusofecverano=com.rjconsultores.ventaboleto esquemaOperacional.geracaoArquivoEMTU=com.rjconsultores.ventaboletos.web.utilerias.menu.item.esquemaoperacional.ItemGeracaoArquivoEMTU esquemaOperacional.configuracaoVendaEmbarcada=com.rjconsultores.ventaboletos.web.utilerias.menu.item.esquemaoperacional.SubMenuConfiguracaoVendaEmbarcada esquemaOperacional.configuracaoVendaEmbarcada.ItemMenuCadastroOperadorEmbarcada=com.rjconsultores.ventaboletos.web.utilerias.menu.item.esquemaoperacional.ItemMenuCadastroOperadorEmbarcada +esquemaOperacional.configuracaoVendaEmbarcada.ItemMenuCadastroOperadorPorDispositivoEmbarcada=com.rjconsultores.ventaboletos.web.utilerias.menu.item.esquemaoperacional.ItemMenuCadastroOperadorPorDispositivoEmbarcada esquemaOperacional.trocoSimples=com.rjconsultores.ventaboletos.web.utilerias.menu.item.esquemaoperacional.SubMenuTrocoSimples esquemaOperacional.trocoSimples.ItemMenuCadastroEmpresaTrocoSimples=com.rjconsultores.ventaboletos.web.utilerias.menu.item.esquemaoperacional.ItemMenuCadastroEmpresaTrocoSimples esquemaOperacional.trocoSimples.ItemMenuRelatorioTrocoSimples=com.rjconsultores.ventaboletos.web.utilerias.menu.item.esquemaoperacional.ItemMenuRelatorioTrocoSimples diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderOperadorDispositivoVendaEmbarcada.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderOperadorDispositivoVendaEmbarcada.java new file mode 100644 index 000000000..8acdb9c0d --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderOperadorDispositivoVendaEmbarcada.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.entidad.DispositivoEmbarcada; + +/** + * + * @author valdevir.pinheiro + */ +public class RenderOperadorDispositivoVendaEmbarcada implements ListitemRenderer { + + public void render(Listitem lstm, Object o) throws Exception { + DispositivoEmbarcada dispositivoEmbarcada = (DispositivoEmbarcada) o; + + Listcell lc = new Listcell(dispositivoEmbarcada.getDispositivoEmbarcadaId().toString()); + lc.setParent(lstm); + + lc = new Listcell(dispositivoEmbarcada.getDescricao().toString()); + lc.setParent(lstm); + + lc = new Listcell(dispositivoEmbarcada.getRegistro()); + lc.setParent(lstm); + + lc = new Listcell(dispositivoEmbarcada.getImei()); + lc.setParent(lstm); + + lc = new Listcell(String.format("%s - %s", dispositivoEmbarcada.getPuntoVenta().getPuntoventaId().toString(), dispositivoEmbarcada.getPuntoVenta().getNombpuntoventa())); + lc.setParent(lstm); + + lstm.setAttribute("data", dispositivoEmbarcada); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivo.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivo.java new file mode 100644 index 000000000..97d4bde7a --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivo.java @@ -0,0 +1,36 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.vo.embarcada.UsuarioEmbarcadaVO; + +/** + * + * @author valdevir + */ +public class RenderUsuarioDispositivo implements ListitemRenderer { + + public void render(Listitem lstm, Object o) throws Exception { + UsuarioEmbarcadaVO usuario = (UsuarioEmbarcadaVO) o; + + Listcell lc = new Listcell(usuario.getCveusuario()); + lc.setParent(lstm); + + lc = new Listcell(usuario == null ? "" : usuario.getCveusuario()); + lc.setParent(lstm); + + lc = new Listcell(usuario.getNome()); + lc.setParent(lstm); + + + + lstm.setAttribute("data", usuario); + + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivoSelecao.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivoSelecao.java new file mode 100644 index 000000000..bffce81f2 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivoSelecao.java @@ -0,0 +1,55 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.Button; +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.vo.embarcada.UsuarioEmbarcadaVO; + +/** + * + * @author valdevir + */ +public class RenderUsuarioDispositivoSelecao implements ListitemRenderer { + + private EventListener listenerGenerico; + + public RenderUsuarioDispositivoSelecao(EventListener listenerGenerico) { + super(); + this.listenerGenerico = listenerGenerico; + } + + public RenderUsuarioDispositivoSelecao() { + super(); + } + + public void render(Listitem lstm, Object o) throws Exception { + UsuarioEmbarcadaVO usuario = (UsuarioEmbarcadaVO) o; + + Listcell lc = new Listcell(usuario.getCveusuario()); + lc.setParent(lstm); + + lc = new Listcell(); + + lc = new Listcell(usuario.getNome()); + lc.setParent(lstm); + + lc = new Listcell(); + Button btnAdicionarUsuario = new Button(""); + btnAdicionarUsuario.setAttribute("data", o); + btnAdicionarUsuario.setAttribute("tipo", "btnAdicionarUsuario"); + btnAdicionarUsuario.addEventListener("onClick", listenerGenerico); + btnAdicionarUsuario.setImage("/gui/img/add.png"); + lc.appendChild(btnAdicionarUsuario); + + lc.setParent(lstm); + + lstm.setAttribute("data", usuario); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivoSelecionados.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivoSelecionados.java new file mode 100644 index 000000000..a823b4c4e --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderUsuarioDispositivoSelecionados.java @@ -0,0 +1,54 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.Button; +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.vo.embarcada.UsuarioEmbarcadaVO; + +/** + * + * @author Valdevir Pinheiro + */ +public class RenderUsuarioDispositivoSelecionados implements ListitemRenderer { + + private EventListener listenerGenerico; + + public RenderUsuarioDispositivoSelecionados(EventListener listenerGenerico) { + super(); + this.listenerGenerico = listenerGenerico; + } + + public void render(Listitem lstm, Object o) throws Exception { + + + UsuarioEmbarcadaVO usuario = (UsuarioEmbarcadaVO) o; + + Listcell lc = new Listcell(usuario.getCveusuario()); + lc.setParent(lstm); + + lc = new Listcell(usuario == null ? "" : usuario.getCveusuario()); + lc.setParent(lstm); + + lc = new Listcell(usuario.getNome()); + lc.setParent(lstm); + + lc = new Listcell(); + Button btnRemoverUsuario = new Button(); + btnRemoverUsuario.setAttribute("data", o); + btnRemoverUsuario.addEventListener("onClick",listenerGenerico); + btnRemoverUsuario.setImage("/gui/img/remove.png"); + lc.appendChild(btnRemoverUsuario); + + lc.setParent(lstm); + + + lstm.setAttribute("data", usuario); + } +} diff --git a/src/java/spring-config.xml b/src/java/spring-config.xml index 0f9f00e24..b4b1a6a47 100644 --- a/src/java/spring-config.xml +++ b/src/java/spring-config.xml @@ -500,6 +500,7 @@ com.rjconsultores.ventaboletos.entidad.ConfRestricaoRutas com.rjconsultores.ventaboletos.entidad.ConfRestricaoTramoOC com.rjconsultores.ventaboletos.entidad.LogAuditoria + com.rjconsultores.ventaboletos.entidad.EmbarcadaDispOperador diff --git a/web/WEB-INF/i3-label_en.label b/web/WEB-INF/i3-label_en.label index 5287471da..5723ce90d 100644 --- a/web/WEB-INF/i3-label_en.label +++ b/web/WEB-INF/i3-label_en.label @@ -9184,3 +9184,32 @@ painelVendaEmbarcadaController.msg.usuariosempermisao = Usuário não tem permis painelVendaEmbarcadaController.msg.confirmacaoaltecaourl = Tem certeza que deseja alterar a URL? painelVendaEmbarcadaController.msg.urlformatoinvalido = URL tem formato formato inválido. painelVendaEmbarcadaController.msg.scusso = URL atualizada com sucesso + +#DispositivoOperadorVendaEmbarcada +dispositivoVendaEmbarcadaController.window.title= Operador por Dispositivo Venda Embarcada +indexController.mniConfVendaEmbarcada.cadastroDispositivoOperador.label=Operadores por dispositivo +busquedaDispositvoOperadorEmbarcada.titulo=Dipositivo por Operador Venda Embarcada + + +#Editar Operadores Dispositvo +editarOperadoresDispositivoController.window.title = Editar Operadores por Dispostivo +editarOperadoresDispositivoController.lbImei.value = Imei +editarOperadoresDispositivoController.lhUsuario.label = Usuário +editarOperadoresDispositivoController.btnPesquisa.label = Pesquisar +editarOperadoresDispositivoController.btnLimpar.label = Limpar +editarOperadoresDispositivoController.lhLogin.label = Login +editarOperadoresDispositivoController.lhNomeUsuario.label = Nome Usuário +editarOperadoresDispositivoController.lbFiltro.value=Filtrar Usuário +editarOperadoresDispositivoController.btnAddUsuario.tooltiptext = Incluir +editarOperadoresDispositivoController.btnBorrarUsuario.tooltiptext = Eliminar +editarOperadoresDispositivoController.lhCveUsuario.label = CVE Usuario +editarOperadoresDispositivoController.btnFiltrar.tooltiptext=Aplicar Filtro +editarOperadoresDispositivoController.btnRemoverFiltro.tooltiptext=Limpar Filtro +editarOperadoresDispositivoController.lbPuntoVenta.value = Ponto Venda +editarOperadoresDispositivoController.lbUsuariosSelecionados.value = Usuarios Selecionados +editarOperadoresDispositivoController.lbUsuariosAtrelados.value = Usuarios Atrelados ao Dispositivo +editarOperadoresDispositivoController.btnAddUsuario.tooltiptext = Incluir +editarOperadoresDispositivoController.btnBorrarUsuario.tooltiptext = Eliminar +editarOperadoresDispositivoController.btnSalvar.tooltiptext = Salvar +editarOperadoresDispositivoController.MSG.naoAdicionadoItemNovo = Não foi adicionado ítem novo na lista +editarOperadoresDispositivoController.MSG.suscribirOK = Usuario do dipositivo alterados com sucesso diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 88329dbd1..b519873f5 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -8836,4 +8836,33 @@ busquedaLogAuditoriaController.lblValorNovo = Valor actual busquedaLogAuditoriaController.lblValorAnterior = Valor Anterior busquedaLogAuditoriaController.lblClasseAlterada = Clase cambiada busquedaLogAuditoriaController.lblClassePrincipal = Clase Principal -busquedaLogAuditoriaController.lblIdAuditado = ID Auditado \ No newline at end of file +busquedaLogAuditoriaController.lblIdAuditado = ID Auditado + +#DispositivoOperadorVendaEmbarcada +dispositivoVendaEmbarcadaController.window.title= Operador por Dispositivo Venda Embarcada +indexController.mniConfVendaEmbarcada.cadastroDispositivoOperador.label=Operadores por dispositivo +busquedaDispositvoOperadorEmbarcada.titulo=Dipositivo por Operador Venda Embarcada + + +#Editar Operadores Dispositvo +editarOperadoresDispositivoController.window.title = Editar Operadores por Dispostivo +editarOperadoresDispositivoController.lbImei.value = Imei +editarOperadoresDispositivoController.lhUsuario.label = Usuário +editarOperadoresDispositivoController.btnPesquisa.label = Pesquisar +editarOperadoresDispositivoController.btnLimpar.label = Limpar +editarOperadoresDispositivoController.lhLogin.label = Login +editarOperadoresDispositivoController.lhNomeUsuario.label = Nome Usuário +editarOperadoresDispositivoController.lbFiltro.value=Filtrar Usuário +editarOperadoresDispositivoController.btnAddUsuario.tooltiptext = Incluir +editarOperadoresDispositivoController.btnBorrarUsuario.tooltiptext = Eliminar +editarOperadoresDispositivoController.lhCveUsuario.label = CVE Usuario +editarOperadoresDispositivoController.btnFiltrar.tooltiptext=Aplicar Filtro +editarOperadoresDispositivoController.btnRemoverFiltro.tooltiptext=Limpar Filtro +editarOperadoresDispositivoController.lbPuntoVenta.value = Ponto Venda +editarOperadoresDispositivoController.lbUsuariosSelecionados.value = Usuarios Selecionados +editarOperadoresDispositivoController.lbUsuariosAtrelados.value = Usuarios Atrelados ao Dispositivo +editarOperadoresDispositivoController.btnAddUsuario.tooltiptext = Incluir +editarOperadoresDispositivoController.btnBorrarUsuario.tooltiptext = Eliminar +editarOperadoresDispositivoController.btnSalvar.tooltiptext = Salvar +editarOperadoresDispositivoController.MSG.naoAdicionadoItemNovo = Não foi adicionado ítem novo na lista +editarOperadoresDispositivoController.MSG.suscribirOK = Usuario do dipositivo alterados com sucesso \ No newline at end of file diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index bbd55d05a..4ca8c8043 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -9348,4 +9348,34 @@ busquedaLogAuditoriaController.lblValorNovo = Valor Atual busquedaLogAuditoriaController.lblValorAnterior = Valor Anterior busquedaLogAuditoriaController.lblClasseAlterada = Classe Alterada busquedaLogAuditoriaController.lblClassePrincipal = Classe Principal -busquedaLogAuditoriaController.lblIdAuditado = ID Auditado \ No newline at end of file +busquedaLogAuditoriaController.lblIdAuditado = ID Auditado + +#DispositivoOperadorVendaEmbarcada +dispositivoVendaEmbarcadaController.window.title= Operador por Dispositivo Venda Embarcada +indexController.mniConfVendaEmbarcada.cadastroDispositivoOperador.label=Operadores por dispositivo +busquedaDispositvoOperadorEmbarcada.titulo=Dipositivo por Operador Venda Embarcada + + +#Editar Operadores Dispositvo +editarOperadoresDispositivoController.window.title = Editar Operadores por Dispostivo +editarOperadoresDispositivoController.lbImei.value = Imei +editarOperadoresDispositivoController.lhUsuario.label = Usuário (Login) +editarOperadoresDispositivoController.btnPesquisa.label = Pesquisar +editarOperadoresDispositivoController.btnLimpar.label = Limpar +editarOperadoresDispositivoController.lhLogin.label = Login +editarOperadoresDispositivoController.lhNomeUsuario.label = Nome Usuário +editarOperadoresDispositivoController.lbFiltro.value=Filtrar Usuário +editarOperadoresDispositivoController.btnAddUsuario.tooltiptext = Incluir +editarOperadoresDispositivoController.btnBorrarUsuario.tooltiptext = Eliminar +editarOperadoresDispositivoController.lhCveUsuario.label = CVE Usuario +editarOperadoresDispositivoController.btnFiltrar.tooltiptext=Aplicar Filtro +editarOperadoresDispositivoController.btnRemoverFiltro.tooltiptext=Limpar Filtro +editarOperadoresDispositivoController.lbPuntoVenta.value = Ponto Venda +editarOperadoresDispositivoController.lbUsuariosSelecionados.value = Usuarios Selecionados +editarOperadoresDispositivoController.lbUsuariosAtrelados.value = Usuarios Atrelados ao Dispositivo +editarOperadoresDispositivoController.btnAddUsuario.tooltiptext = Incluir +editarOperadoresDispositivoController.btnBorrarUsuario.tooltiptext = Eliminar +editarOperadoresDispositivoController.btnSalvar.tooltiptext = Salvar +editarOperadoresDispositivoController.MSG.naoAdicionadoItemNovo = Não foi adicionado ítem novo na lista +editarOperadoresDispositivoController.MSG.suscribirOK = Usuario do dipositivo alterados com sucesso +editarOperadoresDispositivoController.MSG.existemUsuariosAtrelados = Existem usuários atrelados não foram. Deseja sair mesmo assim ? \ No newline at end of file diff --git a/web/gui/esquema_operacional/busquedaDispositivoOperadorEmbarcada.zul b/web/gui/esquema_operacional/busquedaDispositivoOperadorEmbarcada.zul new file mode 100644 index 000000000..d6e036458 --- /dev/null +++ b/web/gui/esquema_operacional/busquedaDispositivoOperadorEmbarcada.zul @@ -0,0 +1,135 @@ + + + + + + + + + +