Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package ec.com.vipsoft.ce.ui; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.StringTokenizer; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.inject.Inject; import org.apache.shiro.SecurityUtils; import com.vaadin.cdi.CDIView; import com.vaadin.data.Container; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.util.BeanContainer; import com.vaadin.data.util.BeanItem; import com.vaadin.data.util.BeanItemContainer; import com.vaadin.data.util.filter.SimpleStringFilter; import com.vaadin.event.FieldEvents; import com.vaadin.navigator.View; import com.vaadin.navigator.ViewChangeListener; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Grid; import com.vaadin.ui.Grid.SelectionMode; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; import com.vaadin.ui.Notification; import com.vaadin.ui.Notification.Type; import com.vaadin.ui.TextField; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; import ec.com.vipsoft.ce.backend.managedbean.UserInfo; import ec.com.vipsoft.ce.backend.remoteinterface.ListadorBienEconomicoRemote; import ec.com.vipsoft.ce.backend.remoteinterface.ReceptorFacturaNeutraRemote; import ec.com.vipsoft.ce.backend.service.RegistradorDemografia; import ec.com.vipsoft.ce.comprobantesNeutros.FacturaBinding; import ec.com.vipsoft.ce.comprobantesNeutros.FacturaDetalleBinding; import ec.com.vipsoft.ce.utils.UtilClaveAcceso; import ec.com.vipsoft.erp.abinadi.dominio.BienEconomico; import ec.com.vipsoft.erp.abinadi.dominio.DemografiaCliente; import ec.com.vipsoft.erp.gui.componentesbasicos.BotonAnadir; import ec.com.vipsoft.erp.gui.componentesbasicos.BotonBuscar; import ec.com.vipsoft.erp.gui.componentesbasicos.BotonCancelar; import ec.com.vipsoft.erp.gui.componentesbasicos.BotonRegistrar; import ec.com.vipsoft.erp.gui.componentesbasicos.BotonRemoverDetalle; import ec.com.vipsoft.erp.gui.componentesbasicos.CampoCantidad; import ec.com.vipsoft.erp.gui.componentesbasicos.CampoCodigo; import ec.com.vipsoft.erp.gui.componentesbasicos.CampoDinero; import ec.com.vipsoft.erp.gui.componentesbasicos.CampoDireccion; import ec.com.vipsoft.erp.gui.componentesbasicos.CampoFecha; import ec.com.vipsoft.erp.gui.componentesbasicos.CampoNumeroComprobante; import ec.com.vipsoft.erp.gui.componentesbasicos.CampoNumeroIdentificacion; import ec.com.vipsoft.erp.gui.componentesbasicos.CampoRazonSocial; /** * * @author chrisvv */ @CDIView("FACTURA") public class FacturaView extends VerticalLayout implements View { /** * */ private static final long serialVersionUID = 3811283001931905044L; private BeanItemContainer<FacturaDetalleBinding> beanContainerDetalles; private BeanContainer beanContainerInfoAdicional; private BeanContainer beanContainertotales; private TextField bienSeleccionado; private BotonAnadir botonAnadirDetalle; private BotonAnadir botonAnadirInfoAdiconal; private BotonBuscar botonBuscarDetalle; private BotonCancelar botonCancelar; private BotonRemoverDetalle botonEliminarDetalle; private BotonRegistrar botonRegistrar; private CampoCantidad cantidad; private TextField codigoEstablecimientoDestino; private TextField codigoP; private CampoDinero descuento; private CampoDireccion direccion; private CampoFecha fechaEmision; private TextField formaPago; private TextField informacion_adicional; @EJB private RegistradorDemografia demografia; //private //private @EJB private ReceptorFacturaNeutraRemote recepcionFactura; @EJB private ListadorBienEconomicoRemote listadorBienes; @Inject private UserInfo userInfo; private TextField lote; private TextField nombreInfoAdicional; private CampoNumeroComprobante numeroGuiaRemision; private TextField ordenCompra; private CampoRazonSocial razonSocialBeneficiario; private CampoNumeroIdentificacion rucBeneficiario; private Grid tablaDetalles; private ComboBox tipoFactura; private ComboBox tipoIdentificacion; private ComboBox codigoIVA; private CampoDinero valorUnitario; private ComboBox comboPaisDestino; private Label subtotal; private Label iva12; private Label ice; private Label total; @Inject private UtilClaveAcceso utilClaveAcceso; private Button botonSeleccionaDesdeVentanar; private TextField campoBusquedaProducto = new TextField(); private Grid gridBusqueda; private BeanItemContainer<BienEconomico> beaitem; private Window ventana = new Window(); protected void actualizarTablaTotales() { BigDecimal _subtotal = BigDecimal.ZERO; BigDecimal _iva12 = BigDecimal.ZERO; BigDecimal _ice = BigDecimal.ZERO; BigDecimal _total = BigDecimal.ZERO; for (FacturaDetalleBinding itemIds : beanContainerDetalles.getItemIds()) { _subtotal = _subtotal.add(itemIds.calculaBaeImponible()); if (itemIds.getCodigoIVA().equalsIgnoreCase("2")) { _iva12 = _iva12.add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.12"))); _total = _total.add(itemIds.calculaBaeImponible() .add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.12"))).add(itemIds.getIce())); } else { _iva12 = _iva12.add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.0"))); _total = _total.add(itemIds.calculaBaeImponible() .add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.0"))).add(itemIds.getIce())); } _ice = _ice.add(itemIds.getIce()); // _total=_total.add(itemIds.calculaBaeImponible().add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.12"))).add(itemIds.getIce())); //_total=_total.add(itemIds.getValorTotal()); } subtotal.setValue("SUBTOTAL $" + _subtotal.setScale(2, RoundingMode.HALF_UP)); iva12.setValue("IVA 12% $" + _iva12.setScale(2, RoundingMode.HALF_UP)); ice.setValue("ICE $" + _ice.setScale(2, RoundingMode.HALF_UP)); total.setValue("TOTAL $" + _total.setScale(2, RoundingMode.HALF_UP)); } public void construirGui() { HorizontalLayout l1 = new HorizontalLayout(); l1.setSpacing(true); tipoFactura = new ComboBox(); tipoFactura.addItem("regular"); tipoFactura.setItemCaption("regular", "REGULAR"); tipoFactura.addItem("exportacion"); tipoFactura.setItemCaption("exportacion", "EXPORTACION"); tipoFactura.addItem("reembolso"); tipoFactura.setItemCaption("reembolso", "REEMBOLSO"); tipoFactura.setNullSelectionAllowed(false); tipoFactura.setValue("regular"); tipoIdentificacion = new ComboBox(); tipoIdentificacion.addItem("05"); tipoIdentificacion.setItemCaption("05", "CEDULA"); tipoIdentificacion.addItem("06"); tipoIdentificacion.setItemCaption("06", "PASAPORTE"); tipoIdentificacion.addItem("07"); tipoIdentificacion.setItemCaption("07", "FINAL"); tipoIdentificacion.addItem("08"); tipoIdentificacion.setItemCaption("08", "ID EXTERIOR"); tipoIdentificacion.addItem("04"); tipoIdentificacion.setItemCaption("04", "RUC"); tipoIdentificacion.setNullSelectionAllowed(false); tipoIdentificacion.setValue("04"); l1.addComponent(tipoIdentificacion); rucBeneficiario = new CampoNumeroIdentificacion(); l1.addComponent(rucBeneficiario); Label lrazonSocial = new Label("R. Social"); l1.addComponent(lrazonSocial); razonSocialBeneficiario = new CampoRazonSocial(); l1.addComponent(razonSocialBeneficiario); Label ldireccion = new Label("Dir."); l1.addComponent(ldireccion); direccion = new CampoDireccion(); l1.addComponent(direccion); fechaEmision = new CampoFecha(); l1.addComponent(fechaEmision); ////////////////////////////////////////// HorizontalLayout l2 = new HorizontalLayout(); l2.setSpacing(true); Label lordenCompra = new Label("OC"); setMargin(true); l2.addComponent(lordenCompra); ordenCompra = new TextField(); ordenCompra.setWidth("70px"); l2.addComponent(ordenCompra); Label lvencimiento = new Label("Cond. Pago"); l2.addComponent(lvencimiento); formaPago = new CampoCodigo(); formaPago.setWidth("100px"); l2.addComponent(formaPago); Label lguia = new Label("Gua Remisin"); l2.addComponent(lguia); numeroGuiaRemision = new CampoNumeroComprobante(); l2.addComponent(numeroGuiaRemision); Label lsucursalCliente = new Label("Sucursal cliente"); l2.addComponent(lsucursalCliente); codigoEstablecimientoDestino = new CampoCodigo(); codigoEstablecimientoDestino.setInputPrompt("001"); codigoEstablecimientoDestino.setWidth("70px"); l2.addComponent(codigoEstablecimientoDestino); //////////////////////////////// codigoIVA = new ComboBox(); codigoIVA.addItem("0"); codigoIVA.addItem("2"); codigoIVA.setNullSelectionAllowed(false); codigoIVA.setValue("2"); codigoIVA.setItemCaption("0", "0%"); codigoIVA.setItemCaption("2", "12%"); codigoIVA.setWidth("80px"); HorizontalLayout l3 = new HorizontalLayout(); l3.setSpacing(true); botonBuscarDetalle = new BotonBuscar(); l3.addComponent(botonBuscarDetalle); codigoP = new TextField(); codigoP.setWidth("80px"); l3.addComponent(codigoP); bienSeleccionado = new TextField(); bienSeleccionado.setWidth("150px"); l3.addComponent(bienSeleccionado); l3.addComponent(new Label("IVA")); l3.addComponent(codigoIVA); Label lcantidad = new Label("Cant."); l3.addComponent(lcantidad); cantidad = new CampoCantidad(); l3.addComponent(cantidad); Label lvalorU = new Label("V. Unitario"); l3.addComponent(lvalorU); valorUnitario = new CampoDinero(); l3.addComponent(valorUnitario); Label ldescuento = new Label("Dcto."); l3.addComponent(ldescuento); descuento = new CampoDinero(); l3.addComponent(descuento); Label labelLote = new Label("lote"); l3.addComponent(labelLote); lote = new TextField(); lote.setInputPrompt("lote 323, expira 2016-05-22"); lote.setWidth("165px"); botonAnadirDetalle = new BotonAnadir(); l3.addComponent(lote); l3.addComponent(botonAnadirDetalle); botonEliminarDetalle = new BotonRemoverDetalle(); l3.addComponent(botonEliminarDetalle); botonRegistrar = new BotonRegistrar(); botonCancelar = new BotonCancelar(); //l3.addComponent(botonRegistrar); //l3.addComponent(botonCancelar); //////////////////////////////////////// HorizontalLayout l4 = new HorizontalLayout(); l4.setSizeFull(); tablaDetalles = new Grid(); beanContainerDetalles = new BeanItemContainer<FacturaDetalleBinding>(FacturaDetalleBinding.class); tablaDetalles.setContainerDataSource(beanContainerDetalles); // tablaDetalles.setEditorEnabled(true); // tablaDetalles.setPageLength(5); // tablaDetalles.setSelectable(true); // tablaDetalles.setMultiSelect(false); tablaDetalles.setWidth("100%"); tablaDetalles.setReadOnly(true); tablaDetalles.removeColumn("infoAdicional3"); tablaDetalles.removeColumn("infoAdicional2"); tablaDetalles.removeColumn("codigoAlterno"); tablaDetalles.removeColumn("codigoIVA"); tablaDetalles.removeColumn("ice"); tablaDetalles.setColumnOrder("cantidad", "codigo", "descripcion", "infoAdicional1", "valorUnitario", "descuento", "iva12", "valorTotal"); l4.addComponent(tablaDetalles); l4.setComponentAlignment(tablaDetalles, Alignment.MIDDLE_CENTER); ///////////////////////////////////////////////////////7 HorizontalLayout l5 = new HorizontalLayout(); l5.setSpacing(true); l5.addComponent(tipoFactura); Label lcountry = new Label("PAIS DETINO"); l5.addComponent(lcountry); comboPaisDestino = construirComboPaises(); l5.addComponent(comboPaisDestino); HorizontalLayout l6 = new HorizontalLayout(); l6.setSpacing(true); subtotal = new Label("Subtotal $0.00"); iva12 = new Label("IVA12% $0.00"); ice = new Label("ICE $0.00"); total = new Label("TOTAL $0.00"); l6.addComponent(subtotal); l6.addComponent(iva12); l6.addComponent(ice); l6.addComponent(total); l6.addComponent(botonRegistrar); l6.addComponent(botonCancelar); l5.addComponent(l6); // l5.addComponent(botonRegistrar); // l5.addComponent(botonCancelar); // l5.setSizeFull(); // VerticalLayout v1=new VerticalLayout(); // Label linfo=new Label("Info"); // HorizontalLayout vl1=new HorizontalLayout(); // vl1.setSpacing(true); // vl1.addComponent(linfo); // // v1.addComponent(vl1); // VerticalLayout v2=new VerticalLayout(); // v2.setSizeFull(); // // HorizontalLayout v2l1=new HorizontalLayout(); // v2l1.addComponent(botonRegistrar); // v2l1.addComponent(botonCancelar); // v2.addComponent(v2l1); // v2.setComponentAlignment(v2l1, Alignment.TOP_RIGHT); // l5.addComponent(v1); // l5.addComponent(v2); ////////////////////////////////////////////// setSpacing(true); addComponent(l1); addComponent(l2); addComponent(l3); addComponent(l4); addComponent(l5); setComponentAlignment(l1, Alignment.MIDDLE_CENTER); setComponentAlignment(l2, Alignment.MIDDLE_CENTER); setComponentAlignment(l3, Alignment.MIDDLE_CENTER); setComponentAlignment(l4, Alignment.MIDDLE_CENTER); // setComponentAlignment(l5, Alignment.MIDDLE_CENTER); } @Override public void enter(ViewChangeListener.ViewChangeEvent event) { if (SecurityUtils.getSubject().isAuthenticated()) { if (!SecurityUtils.getSubject().hasRole("operador")) { UI.getCurrent().getNavigator().navigateTo("login"); } } else { UI.getCurrent().getNavigator().navigateTo("login"); } } private void iniciarEventos() { tipoFactura.addValueChangeListener(event -> { tipoFactura.setReadOnly(true); String _eltipoFActura = (String) tipoFactura.getValue(); if (_eltipoFActura.equalsIgnoreCase("exportacion")) { comboPaisDestino.setReadOnly(false); comboPaisDestino.setEnabled(true); } else { comboPaisDestino.setReadOnly(true); comboPaisDestino.setEnabled(false); } }); botonCancelar.addClickListener(event -> UI.getCurrent().getNavigator().navigateTo("menu")); botonAnadirDetalle.addClickListener(event -> { FacturaDetalleBinding fd = new FacturaDetalleBinding(); fd.setCodigo(codigoP.getValue()); fd.setDescripcion(bienSeleccionado.getValue()); fd.setCantidad(new BigDecimal(cantidad.getValue())); fd.setValorUnitario(new BigDecimal(valorUnitario.getValue())); if (lote.getValue().length() > 0) { String texto = lote.getValue(); StringTokenizer st = new StringTokenizer(texto, ";"); if (st.hasMoreTokens()) { fd.setInfoAdicional1(st.nextToken().toString()); } if (st.hasMoreTokens()) { fd.setInfoAdicional2(st.nextToken()); } } fd.setDescuento(new BigDecimal(descuento.getValue())); if (!tipoFactura.getValue().toString().equalsIgnoreCase("regular")) { fd.setCodigoIVA("7"); fd.setIva12(new BigDecimal("0.00")); } else { fd.setCodigoIVA("2"); } fd.setCodigoIVA((String) codigoIVA.getValue()); fd.calcularIva(); fd.calcularValorTotal(); beanContainerDetalles.addBean(fd); actualizarTablaTotales(); }); botonEliminarDetalle.addClickListener(event -> { beanContainerDetalles.removeItem(tablaDetalles.getSelectedRow()); actualizarTablaTotales(); }); botonRegistrar.addClickListener(event -> { FacturaBinding factura = new FacturaBinding(); String codigoEstablecimiento = userInfo.getCodigoEstablecimiento(); if (codigoEstablecimiento == null) { codigoEstablecimiento = "002"; } factura.setCodigoEstablecimiento(codigoEstablecimiento); String puntoEmision = userInfo.getPuntoEmision(); if (puntoEmision == null) { puntoEmision = "002"; } factura.setCodigoPuntoVenta(puntoEmision); String rucEmisor = userInfo.getRucEmisor(); if (rucEmisor == null) { rucEmisor = "1791739477001"; } factura.setRucEmisor(rucEmisor); String _elTipoFactura = (String) tipoFactura.getValue(); factura.setTipoFactura(_elTipoFactura); if (_elTipoFactura.equalsIgnoreCase("exportacion")) { factura.setCodigoPaisDestino((String) comboPaisDestino.getValue()); } factura.setIdentificacionBeneficiario(rucBeneficiario.getValue()); factura.setRazonSocialBeneficiario(razonSocialBeneficiario.getValue()); factura.setDireccionBeneficiario(direccion.getValue()); factura.setFechaEmision(fechaEmision.getValue()); factura.setFormaPago(formaPago.getValue()); factura.setOrdenCompra(ordenCompra.getValue()); if (codigoEstablecimientoDestino.getValue() != null) { factura.setSucursalCliente(codigoEstablecimientoDestino.getValue()); } //////////////////////////// BigDecimal _subtotal = BigDecimal.ZERO; BigDecimal _iva12 = BigDecimal.ZERO; BigDecimal _ice = BigDecimal.ZERO; BigDecimal _total = BigDecimal.ZERO; // for (FacturaDetalleBinding itemIds : beanContainerDetalles.getItemIds()){ // _subtotal=_subtotal.add(itemIds.calculaBaeImponible()); // _iva12=_iva12.add(itemIds.getIva12()); // _ice=_ice.add(itemIds.getIce()); // _total=_total.add(itemIds.getValorTotal()); // factura.getDetalles().add(itemIds); // } for (FacturaDetalleBinding itemIds : beanContainerDetalles.getItemIds()) { _subtotal = _subtotal.add(itemIds.calculaBaeImponible()); if (itemIds.getCodigoIVA().equalsIgnoreCase("2")) { _iva12 = _iva12.add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.12"))); _total = _total.add(itemIds.calculaBaeImponible() .add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.12"))) .add(itemIds.getIce())); } else { _iva12 = _iva12.add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.0"))); _total = _total.add(itemIds.calculaBaeImponible() .add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.0"))) .add(itemIds.getIce())); } _ice = _ice.add(itemIds.getIce()); //_total=_total.add(itemIds.calculaBaeImponible().add(itemIds.calculaBaeImponible().multiply(new BigDecimal("0.12"))).add(itemIds.getIce())); factura.getDetalles().add(itemIds); //_total=_total.add(itemIds.getValorTotal()); } String numeroAcceso = recepcionFactura.recibirFactura(factura); String numeroDoc = utilClaveAcceso.obtenerCodigoEstablecimiento(numeroAcceso) + "-" + utilClaveAcceso.obtenerCodigoPuntoEmision(numeroAcceso) + "-" + utilClaveAcceso.obtenerSecuanciaDocumento(numeroAcceso); Notification.show(numeroDoc, numeroAcceso, Type.HUMANIZED_MESSAGE); }); // tfiltro.addTextChangeListener(event1 -> { // SimpleStringFilter filter = null; // Container.Filterable f=(Container.Filterable)gridBusqueda.getContainerDataSource(); // if(filter!=null){ // f.removeContainerFilter(filter); // } // filter=new SimpleStringFilter((Object)"codigo", tfiltro.getValue(), true, false); // f.addContainerFilter((Container.Filter)filter); // // }); botonSeleccionaDesdeVentanar.addClickListener(eventa -> { ventana.close(); }); botonBuscarDetalle.addClickListener(event -> { // gridBusqueda.setSelectable(true); // gridBusqueda.setMultiSelect(false); // gridBusqueda.setImmediate(true); // gridBusqueda.setNullSelectionAllowed(false); // gridBusqueda.addItemClickListener(new ItemClickListener() { // // @Override // public void itemClick(ItemClickEvent event) { // BeanItem<BienEconomico> item = beaitem.getItem(gridBusqueda.getValue()); // codigoP.setValue(item.getBean().getCodigo()); // bienSeleccionado.setValue(item.getBean().getDescripcion()); // ventana.close(); // // } // }); gridBusqueda.addSelectionListener(e -> { // Java 8 // Get the item of the selected row BeanItem<BienEconomico> item = beaitem.getItem(gridBusqueda.getSelectedRow()); codigoP.setValue(item.getBean().getCodigo()); bienSeleccionado.setValue(item.getBean().getDescripcion()); if (item.getBean().getCodigoIva().equalsIgnoreCase("2")) { codigoIVA.setValue("2"); } if (item.getBean().getCodigoIva().equalsIgnoreCase("0")) { codigoIVA.setValue("0"); } ventana.close(); }); UI.getCurrent().addWindow(ventana); }); rucBeneficiario.addTextChangeListener(event -> { int len = event.getText().length(); if (len >= 6) { DemografiaCliente clienteEncontrado = demografia.buscarCliente(event.getText(), userInfo.getRucEmisor()); if (clienteEncontrado.getRazonSocial() != null) { razonSocialBeneficiario.setValue(clienteEncontrado.getRazonSocial()); } if (clienteEncontrado.getDireccion() != null) { direccion.setValue(clienteEncontrado.getDireccion()); } } }); } public ComboBox construirComboPaises() { ComboBox retorno = new ComboBox(); retorno.addItem("074"); retorno.setItemCaption("074", "BOUVET ISLAND"); retorno.addItem("101"); retorno.setItemCaption("101", "ARGENTINA"); retorno.addItem("102"); retorno.setItemCaption("102", "BOLIVIA"); retorno.addItem("103"); retorno.setItemCaption("103", "BRASIL"); retorno.addItem("104"); retorno.setItemCaption("104", "CANADA"); retorno.addItem("105"); retorno.setItemCaption("105", "COLOMBIA"); retorno.addItem("106"); retorno.setItemCaption("106", "COSTA RICA"); retorno.addItem("107"); retorno.setItemCaption("107", "CUBA"); retorno.addItem("108"); retorno.setItemCaption("108", "CHILE"); retorno.addItem("109"); retorno.setItemCaption("109", "ANGILA"); retorno.addItem("110"); retorno.setItemCaption("110", "ESTADOS UNIDOS"); return retorno; } @PostConstruct public void postconstructor() { construirGui(); tipoIdentificacion.addValueChangeListener(event -> { String seleccionado = (String) tipoIdentificacion.getValue(); if (seleccionado.equalsIgnoreCase("07")) { razonSocialBeneficiario.setValue("Consumidor Final"); rucBeneficiario.setValue("9999999999999"); direccion.setValue("Consumidor Final"); razonSocialBeneficiario.setReadOnly(true); rucBeneficiario.setReadOnly(true); direccion.setReadOnly(true); } else { razonSocialBeneficiario.setReadOnly(false); rucBeneficiario.setReadOnly(false); direccion.setReadOnly(false); } }); final SimpleStringFilter filtro; gridBusqueda = new Grid(); beaitem = new BeanItemContainer<BienEconomico>(BienEconomico.class); gridBusqueda.setContainerDataSource(beaitem); gridBusqueda.setSizeFull(); // gridBusqueda.setVisibleColumns(new Object[]{"codigo","descripcion"}); gridBusqueda.removeColumn("id"); gridBusqueda.removeColumn("codigoIva"); gridBusqueda.removeColumn("codigoIce"); gridBusqueda.removeColumn("entidad"); gridBusqueda.setColumnOrder("codigo", "descripcion"); gridBusqueda.setSelectionMode(SelectionMode.SINGLE); // tfiltro.setImmediate(true); botonSeleccionaDesdeVentanar = new Button("seleccionar"); HorizontalLayout lbus = new HorizontalLayout(); lbus.setSpacing(true); lbus.setMargin(true); lbus.addComponent(new Label("cdigo")); lbus.addComponent(campoBusquedaProducto); lbus.addComponent(botonSeleccionaDesdeVentanar); beaitem.addAll(listadorBienes.listarBienesDisponibles(userInfo.getRucEmisor())); VerticalLayout layoutventana = new VerticalLayout(); layoutventana.setSpacing(true); layoutventana.setMargin(true); layoutventana.addComponent(lbus); layoutventana.addComponent(gridBusqueda); ventana.setContent(layoutventana); ventana.center(); iniciarEventos(); this.campoBusquedaProducto .addTextChangeListener((FieldEvents.TextChangeListener) new FieldEvents.TextChangeListener() { private static final long serialVersionUID = 5128049403423426140L; SimpleStringFilter filter; public void textChange(FieldEvents.TextChangeEvent event) { Container.Filterable f = (Container.Filterable) gridBusqueda.getContainerDataSource(); if (this.filter != null) { f.removeContainerFilter((Container.Filter) this.filter); } this.filter = new SimpleStringFilter((Object) "codigo", event.getText(), true, false); f.addContainerFilter((Container.Filter) this.filter); } }); } }