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<h:form id="formFactura">
<p:fieldset legend="#{msgs.form_factura}" style="margin-bottom:20px">
<p:panelGrid columns="6" cellpadding="6">
<h:outputText value="#{msgs.form_nueva_factura}" />
<p:inputText value="#{facturaBean.unaFactura.facCodigo}" size="10"/>
<h:outputText value="#{msgs.form_vendedor}" />
<p:inputText value="#{loginBean.usuario.usuNombre}" size="50" />
<h:outputText value="#{msgs.form_fecha}" />
<p:calendar id="fecha" value="#{facturaBean.unaFactura.facFecha}" size="18" />
</p:panelGrid>
<p:panelGrid columns="5" cellpadding="6">
<h:outputText value="#{msgs.form_id}" />
<h:outputText value="" />
<h:outputText value="#{msgs.form_rsocial}" />
<h:outputText value="#{msgs.form_ruc}" />
<h:outputText value="#{msgs.form_descuento}" />
<p:inputText value="#{facturaBean.unCliente.cliCodigo}" size="10"/>
<p:commandButton id="btnCliente" value="Cliente" type="button" />
<p:inputText value="#{facturaBean.unCliente.cliRazonsocial}" size="50"/>
<p:inputText value="#{facturaBean.unCliente.cliRuc}" size="15"/>
<p:inputText value="#{facturaBean.unCliente.cliDescuento}" size="15"/>
<p:commandButton id="btnArticulo" value="Articulo" type="button" />
</p:panelGrid>
</p:fieldset>
<p:overlayPanel id="moviePanel2" for="btnArticulo" hideEffect="fade" dynamic="true" style="width:600px">
<p:dataTable id="basicDT" var="articulo"
value="#{facturaBean.articulos}" paginator="true" rows="10"
paginatorPosition="bottom" rowsPerPageTemplate="5,10,15,20" >
<f:facet name="header">
#{msgs.lArticulos}
</f:facet>
<p:column headerText="#{msgs.lId}" width="15">
<h:outputText value="#{articulo.artCodigo}" />
</p:column>
<p:column headerText="#{msgs.lDescripcion}" width="250" >
<h:outputText value="#{articulo.artDescripcion}" />
</p:column>
<p:column headerText="#{msgs.lEfectivo}" width="50">
<h:outputText value="#{articulo.artEfectivo}" />
</p:column>
<p:column headerText="#{msgs.bRubro}" width="80">
<h:outputText value="#{articulo.rubro.rubNombre}" />
</p:column>
</p:dataTable>
</p:overlayPanel>
<p:overlayPanel id="moviePanel" for="btnCliente" hideEffect="fade" dynamic="true" style="width:600px" >
<p:dataTable id="singleDT" var="cliente"
value="#{facturaBean.clientes}" selectionMode="single"
selection="#{facturaBean.unCliente}" rowKey="#{cliente.cliCodigo}"
paginator="true" rows="10" paginatorPosition="bottom"
rowsPerPageTemplate="5,10,15" >
<f:facet name="header" >
#{msgs.lClientes}
</f:facet>
<p:ajax event="rowSelect" listener="#{facturaBean.onRowSelect}"
update=":formFactura"/>
<p:ajax event="rowUnselect" listener="#{facturaBean.onRowUnselect()}"
update=":formFactura" />
<p:column headerText="#{msgs.lId}" width="15">
<h:outputText value="#{cliente.cliCodigo}" />
</p:column>
<p:column headerText="#{msgs.lRSocial}" width="300">
<h:outputText value="#{cliente.cliRazonsocial}" />
</p:column>
<p:column headerText="#{msgs.lRuc}" width="80">
<h:outputText value="#{cliente.cliRuc}" />
</p:column>
</p:dataTable>
</p:overlayPanel>
</h:form>
Todo esto lo traigo de el beanFactura de Tipo Session el cual es este:
Código Java:
Ver originalimport java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;
import com.jonathan.dao.ArticuloDao;
import com.jonathan.dao.ClienteDao;
import com.jonathan.dao.FacturaDao;
import com.jonathan.dao.impl.ArticuloDaoImpl;
import com.jonathan.dao.impl.ClienteDaoImpl;
import com.jonathan.dao.impl.FacturaDaoImpl;
import com.jonathan.modelo.Articulo;
import com.jonathan.modelo.Clientes;
import com.jonathan.modelo.DetalleFactura;
import com.jonathan.modelo.Factura;
@ManagedBean(name = "facturaBean")
@SessionScoped
private static final long serialVersionUID = -5236757432748581940L;
private List<Factura> facturas;
private Factura unaFactura = new Factura();
private List<DetalleFactura> detalles;
private DetalleFactura detalle = new DetalleFactura();
/*Clientes*/
private List<Clientes> clientes;
private Clientes unCliente = new Clientes();
/*Articulo*/
private List<Articulo> articulos;
private Articulo unArticulo = new Articulo();
public FacturaBean() {
this.facturas = new ArrayList<Factura>();
this.detalles = new ArrayList<DetalleFactura>();
this.clientes = new ArrayList<Clientes>();
this.articulos = new ArrayList<Articulo>();
}
/*Constructores para la factura*/
public DetalleFactura getDetalle() {
return detalle;
}
public void setDetalle(DetalleFactura detalle) {
this.detalle = detalle;
}
public List<DetalleFactura> getDetalles() {
FacturaDao facturaDao = new FacturaDaoImpl();
this.detalles = facturaDao.listadoD(this.unaFactura.getFacCodigo());
return detalles;
}
public Factura getUnaFactura() {
return unaFactura;
}
public void setUnaFactura(Factura unaFactura) {
this.unaFactura = unaFactura;
}
public List<Factura> getFacturas() {
FacturaDao facturaDao = new FacturaDaoImpl();
this.facturas = facturaDao.listado();
return facturas;
}
/*Constructores para el cliente*/
public List<Clientes> getClientes() {
ClienteDao clienteDao = new ClienteDaoImpl();
this.clientes = clienteDao.listado();
return clientes;
}
public Clientes getUnCliente() {
return unCliente;
}
public void setUnCliente(Clientes unCliente) {
this.unCliente = unCliente;
}
/*Constructor para el articulo*/
public Articulo getUnArticulo() {
return unArticulo;
}
public void setUnArticulo(Articulo unArticulo) {
this.unArticulo = unArticulo;
}
public List<Articulo> getArticulos() {
ArticuloDao articuloDao = new ArticuloDaoImpl();
this.articulos = articuloDao.listado();
return articulos;
}
public void onRowSelect(SelectEvent event) {
FacesMessage msg = new FacesMessage("Seleccionado",
(event.getObject().toString()));
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onRowUnselect(UnselectEvent event) {
FacesMessage msg = new FacesMessage("No Seleccionado",
(event.getObject().toString()));
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
Agradeceria pudieran ayudarme a arreglar esto y como poder agregar articulos al datatable para despues poder registrarlo en la bd...Gracias de antemano