Fix: simplification, on vérifie l'entité du document et pas celle de la société afin

d'avoir la possibilité d'utiliser une base commune des sociétés entre entités
This commit is contained in:
Regis Houssin 2009-05-18 08:01:15 +00:00
parent ef5c7f1caa
commit 475600d948
2 changed files with 6 additions and 20 deletions

View File

@ -43,7 +43,7 @@ $facid = isset($_GET["facid"])?$_GET["facid"]:'';
// Security check // Security check
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'fournisseur', $facid, '', 'facture'); $result = restrictedArea($user, 'fournisseur', $facid, 'facture_fourn', 'facture');
$html = new Form($db); $html = new Form($db);
$mesg=''; $mesg='';

View File

@ -1357,9 +1357,8 @@ function info_admin($texte,$infoonimgalt=0)
* \param feature2 Feature to check (second level of permission) * \param feature2 Feature to check (second level of permission)
* \param dbt_keyfield Field name for socid foreign key if not fk_soc. (optionnal) * \param dbt_keyfield Field name for socid foreign key if not fk_soc. (optionnal)
* \param dbt_select Field name for select if not rowid. (optionnal) * \param dbt_select Field name for select if not rowid. (optionnal)
* \param dbt_tablename2 Secondary table name for compare keyfield. (optionnal)
*/ */
function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $dbtablename2='societe') function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid')
{ {
global $db, $conf; global $db, $conf;
@ -1521,25 +1520,12 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='',
} }
// If multicompany and internal users with all permissions, check user is in correct entity // If multicompany and internal users with all permissions, check user is in correct entity
else if ($conf->global->MAIN_MODULE_MULTICOMPANY) else if ($conf->global->MAIN_MODULE_MULTICOMPANY)
{
// If the objects do not have fk_soc
if ($feature == 'banque' || $feature == 'cheque')
{ {
$sql = "SELECT dbt.".$dbt_select; $sql = "SELECT dbt.".$dbt_select;
$sql.= " FROM ".MAIN_DB_PREFIX.$dbtablename." as dbt"; $sql.= " FROM ".MAIN_DB_PREFIX.$dbtablename." as dbt";
$sql.= " WHERE dbt.".$dbt_select." = ".$objectid; $sql.= " WHERE dbt.".$dbt_select." = ".$objectid;
$sql.= " AND dbt.entity = ".$conf->entity; $sql.= " AND dbt.entity = ".$conf->entity;
} }
else
{
$sql = "SELECT dbt.".$dbt_select;
$sql.= " FROM ".MAIN_DB_PREFIX.$dbtablename." as dbt";
$sql.= ", ".MAIN_DB_PREFIX.$dbtablename2." as dbt2";
$sql.= " WHERE dbt.".$dbt_select." = ".$objectid;
$sql.= " AND dbt2.rowid = dbt.".$dbt_keyfield;
$sql.= " AND dbt2.entity = ".$conf->entity;
}
}
} }
//print $sql."<br>"; //print $sql."<br>";