@PostConstruct
  public void initNewAlmacen() {

    // initConversation();
    beginConversation();

    usuarioSession = sessionMain.getUsuarioLogin().getLogin();
    // jalar los usuarios(ENCARGADOS LIBRES=SIN ALMACEN ASIGNADOS)
    listUsuario = usuarioRepository.findAllOrderedByID();

    newAlmacen = new Almacen();
    newAlmacen.setEstado("AC");
    newAlmacen.setFechaRegistro(new Date());
    newAlmacen.setUsuarioRegistro(usuarioSession);
    newAlmacen.setGestion(gestionSession);

    selectedAlmacen = null;

    // tituloPanel
    tituloPanel = "Registrar Almacen";

    // traer todos las almacenes ordenados por ID Desc
    listaAlmacen = almacenRepository.traerAlmacenActivas();

    modificar = false;
    registrar = false;
    crear = true;
    atencionCliente = false;
  }
 public void eliminarAlmacen() {
   try {
     System.out.println("Ingreso a eliminarAlmacen: " + newAlmacen.getId());
     almacenRegistration.remover(newAlmacen);
     FacesUtil.infoMessage("Almacen Borrado!", newAlmacen.getNombre() + "!");
     initNewAlmacen();
   } catch (Exception e) {
     String errorMessage = getRootErrorMessage(e);
     FacesMessage m =
         new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, "Borrado Incorrecto.");
     facesContext.addMessage(null, m);
   }
 }
  // SELECT PRESENTACION CLICK
  public void onRowSelectAlmacenClick(SelectEvent event) {
    try {
      Almacen almacen = (Almacen) event.getObject();
      System.out.println("onRowSelectAlmacenClick  " + almacen.getId());
      selectedAlmacen = almacen;
      newAlmacen = em.find(Almacen.class, almacen.getId());
      newAlmacen.setFechaRegistro(new Date());
      newAlmacen.setUsuarioRegistro(usuarioSession);

      tituloPanel = "Modificar Almacen";
      modificar = false;

    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error in onRowSelectAlmacenClick: " + e.getMessage());
    }
  }
  public void modificarAlmacen() {
    try {
      System.out.println("Ingreso a modificarAlmacen: " + newAlmacen.getId());
      almacenRegistration.updated(newAlmacen);

      FacesMessage m =
          new FacesMessage(
              FacesMessage.SEVERITY_INFO, "Almacen Modificado!", newAlmacen.getNombre() + "!");
      facesContext.addMessage(null, m);
      initNewAlmacen();

    } catch (Exception e) {
      String errorMessage = getRootErrorMessage(e);
      FacesMessage m =
          new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, "Modificado Incorrecto.");
      facesContext.addMessage(null, m);
    }
  }
  public void registrarAlmacen() {
    if (newAlmacen.getNombre().isEmpty()
        || newAlmacen.getCodigo().isEmpty()
        || newAlmacen.getDireccion().isEmpty()
        || newAlmacen.getTelefono().isEmpty()
        || newAlmacen.getEncargado().getId() == 0) {
      FacesUtil.infoMessage("VALIDACION", "No pueden haber campos vacios.");
      return;
    }
    try {
      System.out.println("Ingreso a registrarAlmacen: ");
      almacenRegistration.register(newAlmacen);

      FacesMessage m =
          new FacesMessage(
              FacesMessage.SEVERITY_INFO, "Almacen Registrado!", newAlmacen.getNombre() + "!");
      facesContext.addMessage(null, m);

      initNewAlmacen();
    } catch (Exception e) {
      String errorMessage = getRootErrorMessage(e);
      FacesMessage m =
          new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, "Registro Incorrecto.");
      facesContext.addMessage(null, m);
    }
  }
 // veerifica si el almacen fue cerrado
 public CierreGestionAlmacen finAlmacenGestionCerrado(Almacen almacen, Gestion gestion) {
   try {
     String query =
         "select ser from CierreGestionAlmacen ser where ser.almacen.id="
             + almacen.getId()
             + " and ser.gestion.id="
             + gestion.getId();
     System.out.println("Query isAlmacenGestionCerrado: " + query);
     return (CierreGestionAlmacen) em.createQuery(query).getSingleResult();
   } catch (Exception e) {
     System.out.println(" isAlmacenGestionCerrado ERROR: " + e.getMessage());
     return null;
   }
 }