Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/01/2015, 08:38
jelastic
 
Fecha de Ingreso: diciembre-2014
Ubicación: Lima
Mensajes: 68
Antigüedad: 10 años
Puntos: 0
JSF - Proceso de Venta

Hola nuevamente, tengo una nueva inquietud. Estoy realizando el proceso de venta en JSF - Primefaces y no encuentro la forma de colocar articulos al detalle que es una datatable.
Para escoger el cliente y articulo estoy usando ovelayPanel de tipo dynamix, aqui pueden ver como funciona, lo que hago es seleccionar una fila de la datatable cliente y cargarlo en las cajas de texto, pero luego que hago eso el datatable de articulos no se muestra.
Adjunto mi codigo del xhtml

Código HTML:
Ver original
  1. <h:form id="formFactura">
  2.             <p:fieldset legend="#{msgs.form_factura}" style="margin-bottom:20px">
  3.             <p:panelGrid columns="6" cellpadding="6">
  4.                     <h:outputText value="#{msgs.form_nueva_factura}" />
  5.                     <p:inputText value="#{facturaBean.unaFactura.facCodigo}" size="10"/>
  6.                     <h:outputText value="#{msgs.form_vendedor}" />
  7.                     <p:inputText value="#{loginBean.usuario.usuNombre}" size="50" />
  8.                     <h:outputText value="#{msgs.form_fecha}" />
  9.                     <p:calendar id="fecha" value="#{facturaBean.unaFactura.facFecha}" size="18" />
  10.                 </p:panelGrid>
  11.                 <p:panelGrid columns="5" cellpadding="6">  
  12.                     <h:outputText value="#{msgs.form_id}" />                               
  13.                     <h:outputText value="" />
  14.                     <h:outputText value="#{msgs.form_rsocial}" />
  15.                     <h:outputText value="#{msgs.form_ruc}" />
  16.                     <h:outputText value="#{msgs.form_descuento}" />
  17.                     <p:inputText value="#{facturaBean.unCliente.cliCodigo}" size="10"/>
  18.                     <p:commandButton id="btnCliente" value="Cliente" type="button" />
  19.                     <p:inputText value="#{facturaBean.unCliente.cliRazonsocial}" size="50"/>
  20.                     <p:inputText value="#{facturaBean.unCliente.cliRuc}" size="15"/>
  21.                     <p:inputText value="#{facturaBean.unCliente.cliDescuento}" size="15"/>
  22.                     <p:commandButton id="btnArticulo" value="Articulo" type="button" />
  23.                 </p:panelGrid>
  24.             </p:fieldset>
  25.            
  26.             <p:overlayPanel id="moviePanel2" for="btnArticulo" hideEffect="fade" dynamic="true" style="width:600px">
  27.                 <p:dataTable id="basicDT" var="articulo"  
  28.                 value="#{facturaBean.articulos}" paginator="true" rows="10"
  29.                 paginatorPosition="bottom" rowsPerPageTemplate="5,10,15,20" >
  30.                 <f:facet name="header">
  31.                             #{msgs.lArticulos}
  32.                         </f:facet>
  33.                 <p:column headerText="#{msgs.lId}" width="15">
  34.                     <h:outputText value="#{articulo.artCodigo}" />
  35.                 </p:column>
  36.                 <p:column headerText="#{msgs.lDescripcion}" width="250" >
  37.                     <h:outputText value="#{articulo.artDescripcion}" />
  38.                 </p:column>
  39.                 <p:column headerText="#{msgs.lEfectivo}" width="50">
  40.                     <h:outputText value="#{articulo.artEfectivo}" />
  41.                 </p:column>
  42.                 <p:column headerText="#{msgs.bRubro}" width="80">
  43.                     <h:outputText value="#{articulo.rubro.rubNombre}" />
  44.                 </p:column>        
  45.             </p:dataTable>
  46.             </p:overlayPanel>
  47.            
  48.             <p:overlayPanel id="moviePanel" for="btnCliente" hideEffect="fade" dynamic="true" style="width:600px" >
  49.                 <p:dataTable id="singleDT" var="cliente"
  50.                     value="#{facturaBean.clientes}" selectionMode="single"
  51.                     selection="#{facturaBean.unCliente}" rowKey="#{cliente.cliCodigo}"
  52.                     paginator="true" rows="10" paginatorPosition="bottom"
  53.                     rowsPerPageTemplate="5,10,15" >
  54.                     <f:facet name="header" >
  55.                         #{msgs.lClientes}
  56.                     </f:facet>
  57.                     <p:ajax event="rowSelect" listener="#{facturaBean.onRowSelect}"
  58.                         update=":formFactura"/>
  59.                     <p:ajax event="rowUnselect" listener="#{facturaBean.onRowUnselect()}"
  60.                         update=":formFactura" />
  61.                     <p:column headerText="#{msgs.lId}" width="15">
  62.                         <h:outputText value="#{cliente.cliCodigo}" />
  63.                     </p:column>
  64.                     <p:column headerText="#{msgs.lRSocial}" width="300">
  65.                         <h:outputText value="#{cliente.cliRazonsocial}" />
  66.                     </p:column>
  67.                     <p:column headerText="#{msgs.lRuc}" width="80">
  68.                         <h:outputText value="#{cliente.cliRuc}" />
  69.                     </p:column>
  70.                 </p:dataTable>
  71.             </p:overlayPanel>  
  72.         </h:form>

Todo esto lo traigo de el beanFactura de Tipo Session el cual es este:
Código Java:
Ver original
  1. import java.io.Serializable;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. import javax.faces.application.FacesMessage;
  6. import javax.faces.bean.ManagedBean;
  7. import javax.faces.bean.SessionScoped;
  8. import javax.faces.context.FacesContext;
  9.  
  10. import org.primefaces.event.SelectEvent;
  11. import org.primefaces.event.UnselectEvent;
  12.  
  13. import com.jonathan.dao.ArticuloDao;
  14. import com.jonathan.dao.ClienteDao;
  15. import com.jonathan.dao.FacturaDao;
  16. import com.jonathan.dao.impl.ArticuloDaoImpl;
  17. import com.jonathan.dao.impl.ClienteDaoImpl;
  18. import com.jonathan.dao.impl.FacturaDaoImpl;
  19. import com.jonathan.modelo.Articulo;
  20. import com.jonathan.modelo.Clientes;
  21. import com.jonathan.modelo.DetalleFactura;
  22. import com.jonathan.modelo.Factura;
  23.  
  24. @ManagedBean(name = "facturaBean")
  25. @SessionScoped
  26. public class FacturaBean implements Serializable {
  27.  
  28.     private static final long serialVersionUID = -5236757432748581940L;
  29.  
  30.     private List<Factura> facturas;
  31.     private Factura unaFactura = new Factura();
  32.     private List<DetalleFactura> detalles;
  33.     private DetalleFactura detalle = new DetalleFactura();
  34.    
  35.     /*Clientes*/
  36.     private List<Clientes> clientes;
  37.     private Clientes unCliente = new Clientes();
  38.    
  39.     /*Articulo*/
  40.     private List<Articulo> articulos;
  41.     private Articulo unArticulo = new Articulo();
  42.  
  43.     public FacturaBean() {
  44.         this.facturas = new ArrayList<Factura>();
  45.         this.detalles = new ArrayList<DetalleFactura>();
  46.         this.clientes = new ArrayList<Clientes>();
  47.         this.articulos = new ArrayList<Articulo>();
  48.     }
  49.    
  50.     /*Constructores para la factura*/
  51.     public DetalleFactura getDetalle() {
  52.         return detalle;
  53.     }
  54.  
  55.     public void setDetalle(DetalleFactura detalle) {
  56.         this.detalle = detalle;
  57.     }
  58.  
  59.     public List<DetalleFactura> getDetalles() {
  60.         FacturaDao facturaDao = new FacturaDaoImpl();
  61.         this.detalles = facturaDao.listadoD(this.unaFactura.getFacCodigo());
  62.         return detalles;
  63.     }
  64.  
  65.     public Factura getUnaFactura() {
  66.         return unaFactura;
  67.     }
  68.  
  69.     public void setUnaFactura(Factura unaFactura) {
  70.         this.unaFactura = unaFactura;
  71.     }
  72.  
  73.     public List<Factura> getFacturas() {
  74.         FacturaDao facturaDao = new FacturaDaoImpl();
  75.         this.facturas = facturaDao.listado();
  76.         return facturas;
  77.     }
  78.    
  79.     /*Constructores para el cliente*/
  80.     public List<Clientes> getClientes() {
  81.         ClienteDao clienteDao = new ClienteDaoImpl();
  82.         this.clientes = clienteDao.listado();
  83.         return clientes;
  84.     }
  85.  
  86.     public Clientes getUnCliente() {
  87.         return unCliente;
  88.     }
  89.  
  90.     public void setUnCliente(Clientes unCliente) {
  91.         this.unCliente = unCliente;
  92.     }
  93.    
  94.     /*Constructor para el articulo*/
  95.     public Articulo getUnArticulo() {
  96.         return unArticulo;
  97.     }
  98.  
  99.     public void setUnArticulo(Articulo unArticulo) {
  100.         this.unArticulo = unArticulo;
  101.     }
  102.  
  103.     public List<Articulo> getArticulos() {
  104.         ArticuloDao articuloDao = new ArticuloDaoImpl();
  105.         this.articulos = articuloDao.listado();
  106.         return articulos;
  107.     }
  108.  
  109.     public void onRowSelect(SelectEvent event) {
  110.          FacesMessage msg = new FacesMessage("Seleccionado",
  111.          (event.getObject().toString()));
  112.          FacesContext.getCurrentInstance().addMessage(null, msg);
  113.     }
  114.  
  115.     public void onRowUnselect(UnselectEvent event) {
  116.          FacesMessage msg = new FacesMessage("No Seleccionado",
  117.          (event.getObject().toString()));
  118.          FacesContext.getCurrentInstance().addMessage(null, msg);
  119.     }
  120.  
  121. }

Agradeceria pudieran ayudarme a arreglar esto y como poder agregar articulos al datatable para despues poder registrarlo en la bd...Gracias de antemano