Formulario referenciado (Grupoarticulo->Modelo)

Formulario referenciado (Grupoarticulo->Modelo)

Documentos Referenciados

Muchas ocasiones deseamos referenciar dos documentos, en los formularios usaremos un <p:autocomplete> para obtener el documento referenciado.

Definir los Entity

Grupoarticulo

@Getter
@Setter
public class Grupoarticulo {

    @Id
    private String idgrupoarticulo;
    private String descripcion;
    private Double porcentajeventapublico;
    private Double porcentajeventacredito;
    private Integer redondeodecimales;
    private String activo;

    @Embedded
    private List<UserInfo> userInfo;

    public Grupoarticulo() {
    }

    @Override
    public String toString() {
        return "Grupoarticulo{" + "idgrupoarticulo=" + idgrupoarticulo + ", descripcion=" + descripcion + '}';
    }

}

Modelo

@Setter
public class Modelo {

    @Id
    private String idmodelo;
    private String descripcion;
    @Referenced(documment = "Grupoarticulo", repository = "com.avbravo.ejbspard.ejb.GrupoarticuloRepository",
            field = "idgrupoarticulo",javatype = "String",lazy = false)
    private Grupoarticulo grupoarticulo;
    private String activo;


 @Embedded
    private List<UserInfo> userInfo;

    public Modelo() {
    }
 }

Controller

Agregar el services del entity referenciado y generar los get/set. Se usuaran para el autocomplete.

    @Inject
GrupoarticuloServices grupoarticuloServices;

 public GrupoarticuloServices getGrupoarticuloServices() {
        return grupoarticuloServices;
    }

    public void setGrupoarticuloServices(GrupoarticuloServices grupoarticuloServices) {
        this.grupoarticuloServices = grupoarticuloServices;
    }

Formularios:

new.xthml, view.xhtml

Agregar el autocomplete.

Segmento de codigo del autocomplete

<p:outputLabel  value="#{msg['field.grupoarticulo']}"/>
 <p:autoComplete scrollHeight="250" dropdown="false" size="50"
                 emptyMessage="#{app['info.nohayregistros']}"
                 value="#{modeloController.modelo.grupoarticulo}"
                 completeMethod="#{modeloController.grupoarticuloServices.complete}"
                 var="p" itemLabel="#{p.descripcion}" itemValue="#{p}" forceSelection="true"> 
      <f:converter binding="#{grupoarticuloConverter}"/>
      <f:attribute name="field" value="descripcion" />

  </p:autoComplete>

List.xhtml

Colocar en la columna un atributo que describa al documento referenciado,

    <p:column headerText="#{msg['field.grupoarticulo']}" 
                      sortBy="#{item.grupoarticulo.descripcion}"  filterMatchMode="contains" >
                   <h:outputText value="#{item.grupoarticulo.descripcion}" />
     </p:column>

Last updated