En algunas ocasiones necesitamos establecer múltiples referencias entre los mismos documentos.
<e:autocompleteusuario_rol listener="#{orden.handleSelect}"
value="#{ordenController.encargadobodeda}"
itemLabel=" #{p.nombre}"
field="nombre"
dropdown="true"
required="true"
fromstart="true"
minQueryLength="0"
size="45"
rolValue="ENCARGADOBODEGA"
/>
<p:outputLabel value="#{msg['field.encargadotienda']}"/>
<e:autocompleteusuario_rol listener="#{orden.handleSelect}"
value="#{ordenController.encargadotienda}"
itemLabel=" #{p.nombre}"
field="nombre"
dropdown="true"
required="true"
fromstart="true"
minQueryLength="0"
size="45"
rolValue="ENCARGADOTIENDA"/>
public class Orden {
@Id
private Integer idorden;
private Date fecha;
private String tipoorden;
private String subtipoorden;
private String observacion;
private Integer idemisor;
private String tipoemisor;
@Referenced(documment = "Almacen", repository = "com.avbravo.storeejb.repository.AlmacenRepository",
field = "idalmacen", javatype = "Integer", lazy = false)
private Almacen almacen;
@Referenced(documment = "Usuario", repository = "com.avbravo.storeejb.repository.UsuarioRepository",
field = "username", javatype = "String", lazy = false)
private List<Usuario> usuario;
private String activo;
@Embedded
private List<UserInfo> userInfo;
public Orden() {
}
}
public class Usuario {
@Id
private String username;
private String nombre;
private String apellido;
private String password;
private String email;
private String telefono;
private Double porcentajecomision;
private String activo;
private String direccion;
@Referenced(documment = "Almacen",
repository = "com.avbravo.storeejb.repository.AlmacenRepository",
field = "idalmacen", javatype = "Integer", lazy = false)
private List<Almacen> almacen;
@Referenced(documment = "Rol", repository = "com.avbravo.storeejb.repository.RolRepository",
field = "idrol", javatype = "String", lazy = false)
private List<Rol> rol;
@Referenced(documment = "Empresa", repository = "com.avbravo.storeejb.repository.EmpresaRepository",
field = "idempresa", javatype = "Integer", lazy = false)
private Empresa empresa;
@Embedded
private List<UserInfo> userInfo;
public Usuario() {
}
Formulario 1
//Usuarios
Usuario autorizado = new Usuario();
Usuario encargadotienda = new Usuario();
Usuario encargadobodeda = new Usuario();
Usuario encargadoganga = new Usuario();
Usuario chofer = new Usuario();
Usuario ayudante = new Usuario();
creamos los get/set.
try {
if (!valid()) {
return "";
}
Integer identity = autoincrementableStoreejbServices.getContador("orden");
orden.setIdorden(identity);
orden.setFecha(JsfUtil.getFechaActual());
orden.setTipoorden(tipoorden);
orden.setSubtipoorden(subtipoorden);
orden.setActivo("si");
orden.setIdemisor(0);
orden.setTipoemisor("");
Optional<Orden> optional = ordenServices.asignarEmisorReceptorUsuarios(orden, subtipoorden, emisor, receptor, proveedorSelected,
autorizado,encargadotienda, encargadobodeda, encargadoganga,chofer, ayudante);
if (!optional.isPresent()) {
return "";
}
orden = optional.get();
orden.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (ordenRepository.save(orden)) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(orden.getIdorden().toString(), loginController.getUsername(),
"create", "orden", ordenRepository.toDocument(orden).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.save"));
//---
//Guardar el detalle de la orden
for (Ordendetalle o : ordendetalleList) {
Ordendetalle ordendetalle = new Ordendetalle();
Integer identitydetalle = autoincrementableStoreejbServices.getContador("ordendetalle");
ordendetalle.setIdordendetalle(identitydetalle);
ordendetalle.setOrden(orden);
ordendetalle.setArticulo(o.getArticulo());
ordendetalle.setCantidad(o.getCantidad());
if (subtipoorden.equals("proveedorabodega")) {
ordendetalle.setCantidadanterioremisor(0); //porque es un proveedor
} else {
ordendetalle.setCantidadanterioremisor(o.getCantidadanterioremisor());
}
ordendetalle.setCantidadanteriorreceptor(o.getCantidadanteriorreceptor());
ordendetalle.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (ordendetalleRepository.save(ordendetalle)) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(ordendetalle.getIdordendetalle().toString(), loginController.getUsername(),
"create", "ordendetalle", ordendetalleRepository.toDocument(ordendetalle).toString()));
}
//Actualiza el inventario
inventarioServices.saveFromOrden(ordendetalle, subtipoorden, loginController.getUsername(), emisor, receptor, proveedorSelected);
}
//Limpia los datos
orden = new Orden();
proveedorSelected = new Proveedor();
ordendetalleList = new ArrayList<>();
ordendetalleFiltered = new ArrayList<>();
ordendetalleDataModel = new OrdendetalleDataModel(ordendetalleList);
reset();
} else {
JsfUtil.successMessage("save() " + ordenRepository.getException().toString());
}
} catch (Exception e) {
JsfUtil.errorMessage("save()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
public Optional<Orden> asignarEmisorReceptorUsuarios(Orden orden, String subtipoorden, Almacen emisor,
Almacen receptor, Proveedor proveedor, Usuario autorizado, Usuario encargadotienda, Usuario encargadobodega,
Usuario encargadoganga, Usuario chofer, Usuario ayudante) {
try {
List<Usuario> list = new ArrayList<>();
orden.setAlmacen(receptor);
if (autorizado == null || autorizado.getUsername() == null || JsfUtil.isVacio(autorizado.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione la persona que Autoriza");
return Optional.empty();
}
list.add(autorizado);
if (!subtipoorden.equals("proveedorabodega") && (emisor == null || emisor.getDescripcion() == null || JsfUtil.isVacio(emisor.getDescripcion()))) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el Emisor");
return Optional.empty();
}
if (receptor == null || receptor.getDescripcion() == null || JsfUtil.isVacio(receptor.getDescripcion())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el Receptor");
return Optional.empty();
}
orden.setAlmacen(receptor);
switch (subtipoorden) {
case "proveedorabodega":
if (proveedor == null || proveedor.getCodigo() == null || JsfUtil.isVacio(proveedor.getCodigo())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el proveedor");
return Optional.empty();
}
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
list.add(encargadobodega);
orden.setIdemisor(proveedor.getIdproveedor());
orden.setTipoemisor("proveedor");
orden.setUsuario(list);
break;
case "tiendaabodega":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadotienda);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
case "gangaabodega":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadoganga == null || encargadoganga.getUsername() == null || JsfUtil.isVacio(encargadoganga.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ganga");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadoganga);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
//Salida
case "bodegaatienda":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
orden.setAlmacen(receptor);
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadotienda);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
case "bodegaaganga":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
orden.setAlmacen(receptor);
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadoganga == null || encargadoganga.getUsername() == null || JsfUtil.isVacio(encargadoganga.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ganga");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadoganga);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
//MovimientoInterno
case "tiendaainterno":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
list.add(encargadotienda);
break;
case "gangaainterno":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadoganga == null || encargadoganga.getUsername() == null || JsfUtil.isVacio(encargadoganga.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ganga");
return Optional.empty();
}
list.add(encargadoganga);
break;
case "bodegaainterno":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadotienda);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
case "internoatienda":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
list.add(encargadotienda);
break;
case "internoaganga":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadoganga == null || encargadoganga.getUsername() == null || JsfUtil.isVacio(encargadoganga.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ganga");
return Optional.empty();
}
list.add(encargadoganga);
break;
case "internoabodega":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadotienda);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
default:
JsfUtil.warningMessage("subtipoorden: " + subtipoorden + " no se ha contemplado saveFromOrden()");
break;
}
} catch (Exception e) {
JsfUtil.successMessage("asignarEmisorReceptor() " + e.getLocalizedMessage().toString());
}
return Optional.of(orden);
}
// </editor-fold>
- Por ejemplo imaginemos que deseamos manejar múltiples Usuarios con roles diferentes en la que se asignaran , estos pueden tener un orden diferente en base al formulario donde se utilicen.
- Usaremos un List<Usuario> en el Entity
- No usaremos <p:autocomplete/> multiples, ya que los elementos dependerán del tipo de orden, este indicar a que corresponden los usuarios almacenados.
- Usaremos autocomplete individuales.
<e:autocompleteusuario_rol listener="#{orden.handleSelect}"
value="#{ordenController.encargadobodeda}"
itemLabel=" #{p.nombre}"
field="nombre"
dropdown="true"
required="true"
fromstart="true"
minQueryLength="0"
size="45"
rolValue="ENCARGADOBODEGA"
/>
<p:outputLabel value="#{msg['field.encargadotienda']}"/>
<e:autocompleteusuario_rol listener="#{orden.handleSelect}"
value="#{ordenController.encargadotienda}"
itemLabel=" #{p.nombre}"
field="nombre"
dropdown="true"
required="true"
fromstart="true"
minQueryLength="0"
size="45"
rolValue="ENCARGADOTIENDA"/>
Imaginemos que tenemos dos Entitys
Las posibles reglas para los valores que almacenaremos en List<Usuario> usuario.
public class Orden {
@Id
private Integer idorden;
private Date fecha;
private String tipoorden;
private String subtipoorden;
private String observacion;
private Integer idemisor;
private String tipoemisor;
@Referenced(documment = "Almacen", repository = "com.avbravo.storeejb.repository.AlmacenRepository",
field = "idalmacen", javatype = "Integer", lazy = false)
private Almacen almacen;
@Referenced(documment = "Usuario", repository = "com.avbravo.storeejb.repository.UsuarioRepository",
field = "username", javatype = "String", lazy = false)
private List<Usuario> usuario;
private String activo;
@Embedded
private List<UserInfo> userInfo;
public Orden() {
}
}
public class Usuario {
@Id
private String username;
private String nombre;
private String apellido;
private String password;
private String email;
private String telefono;
private Double porcentajecomision;
private String activo;
private String direccion;
@Referenced(documment = "Almacen",
repository = "com.avbravo.storeejb.repository.AlmacenRepository",
field = "idalmacen", javatype = "Integer", lazy = false)
private List<Almacen> almacen;
@Referenced(documment = "Rol", repository = "com.avbravo.storeejb.repository.RolRepository",
field = "idrol", javatype = "String", lazy = false)
private List<Rol> rol;
@Referenced(documment = "Empresa", repository = "com.avbravo.storeejb.repository.EmpresaRepository",
field = "idempresa", javatype = "Integer", lazy = false)
private Empresa empresa;
@Embedded
private List<UserInfo> userInfo;
public Usuario() {
}
}
Por ejemplo:
- Si el tipo de orden es de Proveedor a Bodega solo almacenamos un usuario que corresponde al encargado de Bodega.
- Si es una orden de Bodega a Tienda almacenamos el encargado de Tienda, Encargado de Bodega y Chofer, todos estos corresponden a documentos en la colección Usuario.
- Según las opciones que se seleccionen se mostrara uno u otro usuario.
Agregar leyenda |
Formulario 1
- La posición 0 del List<Usuario> representa a quien autoriza
- La posición 1 del List<Usuario> representa al encargado de bodega
si realizamos una consulta en MongoDB
Formulario 2:
- La posición 0 del List<Usuario> representa a quien autoriza
- La posición 1 del List<Usuario> representa al encargado de bodega
- La posición 2 del List<Usuario> representa al encargado de tienda
- La posición 3 del List<Usuario> representa al encargado de chofer
- La posición 1 del List<Usuario> representa al encargado de ayudante
Mongodb
En el Controller
Definimos los objetos Usuario para cada autocomplete que usaremos.//Usuarios
Usuario autorizado = new Usuario();
Usuario encargadotienda = new Usuario();
Usuario encargadobodeda = new Usuario();
Usuario encargadoganga = new Usuario();
Usuario chofer = new Usuario();
Usuario ayudante = new Usuario();
creamos los get/set.
método save
public String save(String tipoorden, String subtipoorden) {try {
if (!valid()) {
return "";
}
Integer identity = autoincrementableStoreejbServices.getContador("orden");
orden.setIdorden(identity);
orden.setFecha(JsfUtil.getFechaActual());
orden.setTipoorden(tipoorden);
orden.setSubtipoorden(subtipoorden);
orden.setActivo("si");
orden.setIdemisor(0);
orden.setTipoemisor("");
Optional<Orden> optional = ordenServices.asignarEmisorReceptorUsuarios(orden, subtipoorden, emisor, receptor, proveedorSelected,
autorizado,encargadotienda, encargadobodeda, encargadoganga,chofer, ayudante);
if (!optional.isPresent()) {
return "";
}
orden = optional.get();
orden.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (ordenRepository.save(orden)) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(orden.getIdorden().toString(), loginController.getUsername(),
"create", "orden", ordenRepository.toDocument(orden).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.save"));
//---
//Guardar el detalle de la orden
for (Ordendetalle o : ordendetalleList) {
Ordendetalle ordendetalle = new Ordendetalle();
Integer identitydetalle = autoincrementableStoreejbServices.getContador("ordendetalle");
ordendetalle.setIdordendetalle(identitydetalle);
ordendetalle.setOrden(orden);
ordendetalle.setArticulo(o.getArticulo());
ordendetalle.setCantidad(o.getCantidad());
if (subtipoorden.equals("proveedorabodega")) {
ordendetalle.setCantidadanterioremisor(0); //porque es un proveedor
} else {
ordendetalle.setCantidadanterioremisor(o.getCantidadanterioremisor());
}
ordendetalle.setCantidadanteriorreceptor(o.getCantidadanteriorreceptor());
ordendetalle.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (ordendetalleRepository.save(ordendetalle)) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(ordendetalle.getIdordendetalle().toString(), loginController.getUsername(),
"create", "ordendetalle", ordendetalleRepository.toDocument(ordendetalle).toString()));
}
//Actualiza el inventario
inventarioServices.saveFromOrden(ordendetalle, subtipoorden, loginController.getUsername(), emisor, receptor, proveedorSelected);
}
//Limpia los datos
orden = new Orden();
proveedorSelected = new Proveedor();
ordendetalleList = new ArrayList<>();
ordendetalleFiltered = new ArrayList<>();
ordendetalleDataModel = new OrdendetalleDataModel(ordendetalleList);
reset();
} else {
JsfUtil.successMessage("save() " + ordenRepository.getException().toString());
}
} catch (Exception e) {
JsfUtil.errorMessage("save()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
OrdenServices
Creamos el método para asignar el usuario en la posición correspondiente:public Optional<Orden> asignarEmisorReceptorUsuarios(Orden orden, String subtipoorden, Almacen emisor,
Almacen receptor, Proveedor proveedor, Usuario autorizado, Usuario encargadotienda, Usuario encargadobodega,
Usuario encargadoganga, Usuario chofer, Usuario ayudante) {
try {
List<Usuario> list = new ArrayList<>();
orden.setAlmacen(receptor);
if (autorizado == null || autorizado.getUsername() == null || JsfUtil.isVacio(autorizado.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione la persona que Autoriza");
return Optional.empty();
}
list.add(autorizado);
if (!subtipoorden.equals("proveedorabodega") && (emisor == null || emisor.getDescripcion() == null || JsfUtil.isVacio(emisor.getDescripcion()))) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el Emisor");
return Optional.empty();
}
if (receptor == null || receptor.getDescripcion() == null || JsfUtil.isVacio(receptor.getDescripcion())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el Receptor");
return Optional.empty();
}
orden.setAlmacen(receptor);
switch (subtipoorden) {
case "proveedorabodega":
if (proveedor == null || proveedor.getCodigo() == null || JsfUtil.isVacio(proveedor.getCodigo())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el proveedor");
return Optional.empty();
}
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
list.add(encargadobodega);
orden.setIdemisor(proveedor.getIdproveedor());
orden.setTipoemisor("proveedor");
orden.setUsuario(list);
break;
case "tiendaabodega":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadotienda);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
case "gangaabodega":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadoganga == null || encargadoganga.getUsername() == null || JsfUtil.isVacio(encargadoganga.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ganga");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadoganga);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
//Salida
case "bodegaatienda":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
orden.setAlmacen(receptor);
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadotienda);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
case "bodegaaganga":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
orden.setAlmacen(receptor);
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadoganga == null || encargadoganga.getUsername() == null || JsfUtil.isVacio(encargadoganga.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ganga");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadoganga);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
//MovimientoInterno
case "tiendaainterno":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
list.add(encargadotienda);
break;
case "gangaainterno":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadoganga == null || encargadoganga.getUsername() == null || JsfUtil.isVacio(encargadoganga.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ganga");
return Optional.empty();
}
list.add(encargadoganga);
break;
case "bodegaainterno":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadotienda);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
case "internoatienda":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
list.add(encargadotienda);
break;
case "internoaganga":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadoganga == null || encargadoganga.getUsername() == null || JsfUtil.isVacio(encargadoganga.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ganga");
return Optional.empty();
}
list.add(encargadoganga);
break;
case "internoabodega":
orden.setIdemisor(emisor.getIdalmacen());
orden.setTipoemisor("almacen");
if (encargadobodega == null || encargadobodega.getUsername() == null || JsfUtil.isVacio(encargadobodega.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Bodega");
return Optional.empty();
}
if (encargadotienda == null || encargadotienda.getUsername() == null || JsfUtil.isVacio(encargadotienda.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Tienda");
return Optional.empty();
}
if (chofer == null || chofer.getUsername() == null || JsfUtil.isVacio(chofer.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Chofer");
return Optional.empty();
}
if (ayudante == null || ayudante.getUsername() == null || JsfUtil.isVacio(ayudante.getUsername())) {
JsfUtil.warningDialog("Advertencia", "Por favor seleccione el encargado de Ayudante");
return Optional.empty();
}
list.add(encargadobodega);
list.add(encargadotienda);
list.add(chofer);
list.add(ayudante);
orden.setUsuario(list);
break;
default:
JsfUtil.warningMessage("subtipoorden: " + subtipoorden + " no se ha contemplado saveFromOrden()");
break;
}
} catch (Exception e) {
JsfUtil.successMessage("asignarEmisorReceptor() " + e.getLocalizedMessage().toString());
}
return Optional.of(orden);
}
// </editor-fold>
Comments