diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php
index 991a92ec445..a35a73546bb 100644
--- a/htdocs/core/class/html.formother.class.php
+++ b/htdocs/core/class/html.formother.class.php
@@ -372,9 +372,10 @@ class FormOther
* @param string $morecss More CSS
* @return string Html combo list code
*/
- function select_salesrepresentatives($selected,$htmlname,$user,$showstatus=0,$showempty=1,$morecss='')
+ function select_salesrepresentatives($selected, $htmlname, $user, $showstatus=0, $showempty=1, $morecss='')
{
- global $conf,$langs;
+ // phpcs:enable
+ global $conf, $langs;
$langs->load('users');
$out = '';
@@ -396,17 +397,48 @@ class FormOther
// Get list of users allowed to be viewed
$sql_usr = "SELECT u.rowid, u.lastname, u.firstname, u.statut, u.login";
$sql_usr.= " FROM ".MAIN_DB_PREFIX."user as u";
- $sql_usr.= " WHERE u.entity IN (0,".$conf->entity.")";
+
+ if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE))
+ {
+ if (! empty($user->admin) && empty($user->entity) && $conf->entity == 1) {
+ $sql_usr.= " WHERE u.entity IS NOT NULL"; // Show all users
+ } else {
+ $sql_usr.= ",".MAIN_DB_PREFIX."usergroup_user as ug";
+ $sql_usr.= " WHERE ((ug.fk_user = u.rowid";
+ $sql_usr.= " AND ug.entity IN (".getEntity('user')."))";
+ $sql_usr.= " OR u.entity = 0)"; // Show always superadmin
+ }
+ }
+ else
+ {
+ $sql_usr.= " WHERE u.entity IN (".getEntity('user').")";
+ }
+
if (empty($user->rights->user->user->lire)) $sql_usr.=" AND u.rowid = ".$user->id;
- if (! empty($user->societe_id)) $sql_usr.=" AND u.fk_soc = ".$user->societe_id;
+ if (! empty($user->socid)) $sql_usr.=" AND u.fk_soc = ".$user->socid;
// Add existing sales representatives of thirdparty of external user
- if (empty($user->rights->user->user->lire) && $user->societe_id)
+ if (empty($user->rights->user->user->lire) && $user->socid)
{
$sql_usr.=" UNION ";
$sql_usr.= "SELECT u2.rowid, u2.lastname, u2.firstname, u2.statut, u2.login";
$sql_usr.= " FROM ".MAIN_DB_PREFIX."user as u2, ".MAIN_DB_PREFIX."societe_commerciaux as sc";
- $sql_usr.= " WHERE u2.entity IN (0,".$conf->entity.")";
- $sql_usr.= " AND u2.rowid = sc.fk_user AND sc.fk_soc=".$user->societe_id;
+
+ if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE))
+ {
+ if (! empty($user->admin) && empty($user->entity) && $conf->entity == 1) {
+ $sql_usr.= " WHERE u2.entity IS NOT NULL"; // Show all users
+ } else {
+ $sql_usr.= ",".MAIN_DB_PREFIX."usergroup_user as ug2";
+ $sql_usr.= " WHERE ug2.fk_user = u2.rowid";
+ $sql_usr.= " AND ug2.entity IN (".getEntity('user').")";
+ }
+ }
+ else
+ {
+ $sql_usr.= " WHERE u2.entity IN (".getEntity('user').")";
+ }
+
+ $sql_usr.= " AND u2.rowid = sc.fk_user AND sc.fk_soc=".$user->socid;
}
$sql_usr.= " ORDER BY statut DESC, lastname ASC"; // Do not use 'ORDER BY u.statut' here, not compatible with the UNION.
//print $sql_usr;exit;