@Override
  public Almacen actualiza(Almacen almacen, Usuario usuario) {
    Session session = currentSession();
    if (usuario != null) {
      almacen.setEmpresa(usuario.getEmpresa());
    }
    try {
      // Actualiza la almacen
      log.debug("Actualizando almacen");
      session.update(almacen);
      session.flush();

    } catch (NonUniqueObjectException e) {
      try {
        session.merge(almacen);
      } catch (Exception ex) {
        log.error("No se pudo actualizar la almacen", ex);
        throw new RuntimeException("No se pudo actualizar la almacen", ex);
      }
    }
    if (usuario != null) {
      usuario.setAlmacen(almacen);
    }
    session.flush();
    return almacen;
  }
  @Override
  public Almacen crea(Almacen almacen, Usuario usuario) {
    Session session = currentSession();
    if (usuario != null) {
      almacen.setEmpresa(usuario.getEmpresa());
    }
    session.save(almacen);
    if (usuario != null) {
      usuario.setAlmacen(almacen);
      session.save(usuario);
    }
    TipoProducto tipoProducto = new TipoProducto("TIPO1", "TIPO1", almacen);
    session.save(tipoProducto);

    reporteDao.inicializaAlmacen(almacen);

    session.flush();
    return almacen;
  }