Логика только для чтения на основе пользователя, вошедшего в openbravo

У меня есть требование в рамках Openbravo 3.0. У меня есть два пользователя, один - HR, а другой - сотрудник. Это флажок в окне пользователя под названием HR USER. В моем окне мне нужно написать логику только для чтения, чтобы при входе в систему HR запись была доступна для редактирования, а когда сотрудник входит в систему, запись должна быть нередактируемой, я знаю, как это сделать для обычных полей, но я ничего не получаю о проверке пользователя. На экране сотрудника я назначаю идентификатор пользователя этому сотруднику.

Пожалуйста помоги


person Geek    schedule 26.02.2014    source источник


Ответы (1)


Логика только для чтения на основе вошедшего в систему пользователя:

  1. узнать ID (первичный ключ) Пользователя (HR или Сотрудника) с помощью инструмента PGAdmin Query.
  2. Добавьте только для чтения, как показано ниже.

введите здесь описание изображения

Логика только для чтения на основе роли, вошедшей в систему:

Этого можно достичь в три шага

  1. создание вспомогательного входа.
  2. узнать ID (первичный ключ) роли (HR или Employee)
  3. привязка логики только для чтения к столбцу.

Прежде всего, нам нужно добавить вспомогательный ввод, который сделает AD_ROLE_ID текущего пользователя, вошедшего в систему, доступным для окна пользователя. Используя роль системного администратора, перейдите в Словарь приложений || Настройка || Вспомогательный ввод и создайте новую запись, как показано ниже:

введите здесь описание изображения

Это сделает переменную сеанса #AD_ROLE_ID доступной для вкладки [user] окна HR User через переменную @ROLE_ID@.

Во-вторых, вам нужно выяснить, что такое AD_ROLE_ID роли HR. Используйте PgAdmin, чтобы запросить таблицу AD_ROLE и выяснить это. Простой запрос показывает следующее:

 select ad_role_id, name from ad_role;

 ad_role_id                        | name
 ----------------------------------+---------------------------
 ....
 1000001                           | Admin
 SDJFALSDFJKLASJDFKLASDFASLDFJAKLSJ| velmurugan 
 SDFLAKSDJFLKASJDLFALSDFALDSKFJLAS | Employee
 DSKLFJAKLDSJFKLASJFKLADSJFLKAJSDFK| F&B US, Inc. - Admin
 ....
(38 rows)

Первичный ключ (AD_ROLE_ID) роли HR — 054A32701D6D4CE6BF4F695DAB23EDB3. В вашем случае это явно будет иначе.

С помощью этой информации мы теперь можем найти определение поля «Пользователь отдела кадров» и установить его логику «Только для чтения» на @ROLE_ID@!'054A32701D6D4CE6BF4F695DAB23EDB3', как показано ниже:

введите здесь описание изображения

person Velu    schedule 26.02.2014
comment
Основываясь на сценарии, который вы упомянули, на самом деле мне не нужно было жестко кодировать идентификатор. Но я взял значение # (которое, я думаю, принимает значение из сеанса), то, что вы упомянули в ответе, запросил таблицу ad_user и логику только для чтения, которую вы упомянули, написал таким же образом, и он работает. Спасибо и +1 за скриншоты. - person Geek; 26.02.2014
comment
спасибо, что указали на это .. Можете ли вы опубликовать здесь свою логику только для чтения? - person Velu; 26.02.2014
comment
Это было очень легко!!!! У меня есть таблица сотрудников, где есть пользовательское поле. Вспомогательный ввод, который я написал как: @SQL=выберите объединение (ishr, 'N') от сотрудника e слева, присоединитесь к ad_user au на e.user_id=au.ad_user_id, где au.ad_user_id=@#AD_User_ID @ и в логике только для чтения я написал @User@!'Y' - person Geek; 27.02.2014