Fix: some bugs for multicompany sharings

This commit is contained in:
Regis Houssin 2012-02-11 08:03:26 +01:00
parent f161d185b3
commit 645d72c4a6
12 changed files with 41 additions and 35 deletions

View File

@ -452,7 +452,7 @@ if ($showbirthday)
$sql = 'SELECT sp.rowid, sp.name, sp.firstname, sp.birthday'; $sql = 'SELECT sp.rowid, sp.name, sp.firstname, sp.birthday';
$sql.= ' FROM '.MAIN_DB_PREFIX.'socpeople as sp'; $sql.= ' FROM '.MAIN_DB_PREFIX.'socpeople as sp';
$sql.= ' WHERE (priv=0 OR (priv=1 AND fk_user_creat='.$user->id.'))'; $sql.= ' WHERE (priv=0 OR (priv=1 AND fk_user_creat='.$user->id.'))';
$sql.= ' AND sp.entity = '.$conf->entity; $sql.= " AND sp.entity IN (".getEntity('societe', 1).")";
if ($action == 'show_day') if ($action == 'show_day')
{ {
$sql.= ' AND MONTH(birthday) = '.$month; $sql.= ' AND MONTH(birthday) = '.$month;

View File

@ -397,11 +397,11 @@ class Contact extends CommonObject
$result=false; $result=false;
// Mis a jour contact // Mis a jour contact
$sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET rowid=".$id; $sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET";
$sql .= ", birthday=".($this->birthday ? "'".$this->db->idate($this->birthday)."'" : "null"); $sql.= " birthday=".($this->birthday ? "'".$this->db->idate($this->birthday)."'" : "null");
if ($user) $sql .= ", fk_user_modif=".$user->id; if ($user) $sql .= ", fk_user_modif=".$user->id;
$sql.= " WHERE rowid=".$id; $sql.= " WHERE rowid=".$id;
//print "update_perso: ".$this->birthday.'-'.$this->db->idate($this->birthday);
dol_syslog(get_class($this)."::update_perso this->birthday=".$this->birthday." - sql=".$sql); dol_syslog(get_class($this)."::update_perso this->birthday=".$this->birthday." - sql=".$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) if (! $resql)

View File

@ -72,13 +72,13 @@ include_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php");
if ($user->rights->societe->lire) if ($user->rights->societe->lire)
{ {
$sql = "SELECT s.rowid, s.name, s.firstname, s.civilite, s.datec, s.tms"; $sql = "SELECT sp.rowid, sp.name, sp.firstname, sp.civilite, sp.datec, sp.tms";
$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as s"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp";
if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE s.entity IN (".getEntity('societe', 1).")"; $sql.= " WHERE sp.entity IN (".getEntity('societe', 1).")";
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= " AND sp.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if ($user->societe_id) $sql.= " AND s.rowid = $user->societe_id"; if ($user->societe_id) $sql.= " AND sp.rowid = $user->societe_id";
$sql.= " ORDER BY s.tms DESC"; $sql.= " ORDER BY sp.tms DESC";
$sql.= $db->plimit($max, 0); $sql.= $db->plimit($max, 0);
$result = $db->query($sql); $result = $db->query($sql);

View File

@ -483,7 +483,8 @@ abstract class CommonObject
$sql.= " ".MAIN_DB_PREFIX."c_type_contact as tc"; $sql.= " ".MAIN_DB_PREFIX."c_type_contact as tc";
$sql.= " WHERE ec.element_id = ".$this->id; $sql.= " WHERE ec.element_id = ".$this->id;
$sql.= " AND ec.fk_socpeople = c.rowid"; $sql.= " AND ec.fk_socpeople = c.rowid";
$sql.= " AND c.entity IN (0,".$conf->entity.")"; if ($source == 'internal') $sql.= " AND c.entity IN (0,".$conf->entity.")";
if ($source == 'external') $sql.= " AND c.entity IN (".getEntity('societe', 1).")";
$sql.= " AND ec.fk_c_type_contact = tc.rowid"; $sql.= " AND ec.fk_c_type_contact = tc.rowid";
$sql.= " AND tc.element = '".$this->element."'"; $sql.= " AND tc.element = '".$this->element."'";
$sql.= " AND tc.source = '".$source."'"; $sql.= " AND tc.source = '".$source."'";

View File

@ -885,11 +885,11 @@ class Form
global $conf,$langs; global $conf,$langs;
// On recherche les societes // On recherche les societes
$sql = "SELECT s.rowid, s.name as name, s.firstname, s.poste FROM"; $sql = "SELECT sp.rowid, sp.name as name, sp.firstname, sp.poste";
$sql.= " ".MAIN_DB_PREFIX ."socpeople as s"; $sql.= " FROM ".MAIN_DB_PREFIX ."socpeople as sp";
$sql.= " WHERE entity = ".$conf->entity; $sql.= " WHERE sp.entity IN (".getEntity('societe', 1).")";
if ($socid > 0) $sql.= " AND fk_soc=".$socid; if ($socid > 0) $sql.= " AND sp.fk_soc=".$socid;
$sql.= " ORDER BY s.name ASC"; $sql.= " ORDER BY sp.name ASC";
dol_syslog(get_class($this)."::select_contacts sql=".$sql); dol_syslog(get_class($this)."::select_contacts sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);

View File

@ -650,6 +650,7 @@ function show_actions_todo($conf,$langs,$db,$object,$objcon='',$noprint=0)
$sql.= " FROM ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."user as u, ".MAIN_DB_PREFIX."actioncomm as a"; $sql.= " FROM ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."user as u, ".MAIN_DB_PREFIX."actioncomm as a";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON a.fk_contact = sp.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON a.fk_contact = sp.rowid";
$sql.= " WHERE u.rowid = a.fk_user_author"; $sql.= " WHERE u.rowid = a.fk_user_author";
$sql.= " AND u.entity = ".$conf->entity;
if ($object->id) $sql.= " AND a.fk_soc = ".$object->id; if ($object->id) $sql.= " AND a.fk_soc = ".$object->id;
if (is_object($objcon) && $objcon->id) $sql.= " AND a.fk_contact = ".$objcon->id; if (is_object($objcon) && $objcon->id) $sql.= " AND a.fk_contact = ".$objcon->id;
$sql.= " AND c.id=a.fk_action"; $sql.= " AND c.id=a.fk_action";
@ -777,6 +778,7 @@ function show_actions_done($conf,$langs,$db,$object,$objcon='',$noprint=0)
$sql.= " FROM ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."user as u, ".MAIN_DB_PREFIX."actioncomm as a"; $sql.= " FROM ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."user as u, ".MAIN_DB_PREFIX."actioncomm as a";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON a.fk_contact = sp.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON a.fk_contact = sp.rowid";
$sql.= " WHERE u.rowid = a.fk_user_author"; $sql.= " WHERE u.rowid = a.fk_user_author";
$sql.= " AND u.entity = ".$conf->entity;
if ($object->id) $sql.= " AND a.fk_soc = ".$object->id; if ($object->id) $sql.= " AND a.fk_soc = ".$object->id;
if (is_object($objcon) && $objcon->id) $sql.= " AND a.fk_contact = ".$objcon->id; if (is_object($objcon) && $objcon->id) $sql.= " AND a.fk_contact = ".$objcon->id;
$sql.= " AND c.id=a.fk_action"; $sql.= " AND c.id=a.fk_action";

View File

@ -85,7 +85,7 @@ class mailing_contacts2 extends MailingTargets
$sql.= " WHERE s.rowid = sp.fk_soc"; $sql.= " WHERE s.rowid = sp.fk_soc";
$sql.= " AND sp.email != ''"; // Note that null != '' is false $sql.= " AND sp.email != ''"; // Note that null != '' is false
//$sql.= " AND sp.poste != ''"; //$sql.= " AND sp.poste != ''";
$sql.= " AND sp.entity = ".$conf->entity; $sql.= " AND sp.entity IN (".getEntity('societe', 1).")";
if ($filtersarray[0]<>'all') $sql.= " AND sp.poste ='".$filtersarray[0]."'"; if ($filtersarray[0]<>'all') $sql.= " AND sp.poste ='".$filtersarray[0]."'";
$sql.= " ORDER BY sp.name, sp.firstname"; $sql.= " ORDER BY sp.name, sp.firstname";
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
@ -137,7 +137,7 @@ class mailing_contacts2 extends MailingTargets
$statssql[$i].= " WHERE s.rowid = sp.fk_soc"; $statssql[$i].= " WHERE s.rowid = sp.fk_soc";
$statssql[$i].= " AND sp.email != ''"; // Note that null != '' is false $statssql[$i].= " AND sp.email != ''"; // Note that null != '' is false
$statssql[$i].= " AND (sp.poste IS NOT NULL AND sp.poste != '')"; $statssql[$i].= " AND (sp.poste IS NOT NULL AND sp.poste != '')";
$statssql[$i].= " AND sp.entity = ".$conf->entity; $statssql[$i].= " AND sp.entity IN (".getEntity('societe', 1).")";
$statssql[$i].= " GROUP BY label"; $statssql[$i].= " GROUP BY label";
$statssql[$i].= " ORDER BY nb DESC"; $statssql[$i].= " ORDER BY nb DESC";
$statssql[$i].= " LIMIT $i,1"; $statssql[$i].= " LIMIT $i,1";
@ -187,7 +187,7 @@ class mailing_contacts2 extends MailingTargets
$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp,"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp,";
$sql.= " ".MAIN_DB_PREFIX."societe as s"; $sql.= " ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE s.rowid = sp.fk_soc"; $sql.= " WHERE s.rowid = sp.fk_soc";
$sql.= " AND sp.entity = ".$conf->entity; $sql.= " AND sp.entity IN (".getEntity('societe', 1).")";
$sql.= " AND sp.email != ''"; // Note that null != '' is false $sql.= " AND sp.email != ''"; // Note that null != '' is false
$sql.= " AND (sp.poste IS NOT NULL AND sp.poste != '')"; $sql.= " AND (sp.poste IS NOT NULL AND sp.poste != '')";
$sql.= " GROUP BY sp.poste"; $sql.= " GROUP BY sp.poste";

View File

@ -85,7 +85,7 @@ class mailing_contacts3 extends MailingTargets
if ($filtersarray[0] <> 'all') $sql.= " ".MAIN_DB_PREFIX."categorie_societe as cs"; if ($filtersarray[0] <> 'all') $sql.= " ".MAIN_DB_PREFIX."categorie_societe as cs";
$sql.= " WHERE s.rowid = sp.fk_soc"; $sql.= " WHERE s.rowid = sp.fk_soc";
$sql.= " AND sp.email != ''"; // Note that null != '' is false $sql.= " AND sp.email != ''"; // Note that null != '' is false
$sql.= " AND sp.entity = ".$conf->entity; $sql.= " AND sp.entity IN (".getEntity('societe', 1).")";
if ($filtersarray[0] <> 'all') $sql.= " AND cs.fk_categorie = c.rowid"; if ($filtersarray[0] <> 'all') $sql.= " AND cs.fk_categorie = c.rowid";
if ($filtersarray[0] <> 'all') $sql.= " AND cs.fk_societe = sp.fk_soc"; if ($filtersarray[0] <> 'all') $sql.= " AND cs.fk_societe = sp.fk_soc";
if ($filtersarray[0] <> 'all') $sql.= " AND c.label = '".$this->db->escape($filtersarray[0])."'"; if ($filtersarray[0] <> 'all') $sql.= " AND c.label = '".$this->db->escape($filtersarray[0])."'";
@ -141,7 +141,7 @@ class mailing_contacts3 extends MailingTargets
$statssql[$i].= " ".MAIN_DB_PREFIX."categorie_societe as cs"; $statssql[$i].= " ".MAIN_DB_PREFIX."categorie_societe as cs";
$statssql[$i].= " WHERE s.rowid = sp.fk_soc"; $statssql[$i].= " WHERE s.rowid = sp.fk_soc";
$statssql[$i].= " AND sp.email != ''"; // Note that null != '' is false $statssql[$i].= " AND sp.email != ''"; // Note that null != '' is false
$statssql[$i].= " AND sp.entity = ".$conf->entity; $statssql[$i].= " AND sp.entity IN (".getEntity('societe', 1).")";
$statssql[$i].= " AND cs.fk_categorie = c.rowid"; $statssql[$i].= " AND cs.fk_categorie = c.rowid";
$statssql[$i].= " AND cs.fk_societe = sp.fk_soc"; $statssql[$i].= " AND cs.fk_societe = sp.fk_soc";
$statssql[$i].= " GROUP BY c.label"; $statssql[$i].= " GROUP BY c.label";
@ -207,7 +207,7 @@ class mailing_contacts3 extends MailingTargets
$sql.= " ".MAIN_DB_PREFIX."categorie_societe as cs"; $sql.= " ".MAIN_DB_PREFIX."categorie_societe as cs";
$sql.= " WHERE s.rowid = sp.fk_soc"; $sql.= " WHERE s.rowid = sp.fk_soc";
$sql.= " AND sp.email != ''"; // Note that null != '' is false $sql.= " AND sp.email != ''"; // Note that null != '' is false
$sql.= " AND sp.entity = ".$conf->entity; $sql.= " AND sp.entity IN (".getEntity('societe', 1).")";
$sql.= " AND cs.fk_categorie = c.rowid"; $sql.= " AND cs.fk_categorie = c.rowid";
$sql.= " AND cs.fk_societe = sp.fk_soc"; $sql.= " AND cs.fk_societe = sp.fk_soc";
$sql.= " GROUP BY c.label"; $sql.= " GROUP BY c.label";

View File

@ -255,7 +255,7 @@ class modSociete extends DolibarrModules
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'socpeople as c'; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'socpeople as c';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON c.fk_soc = s.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON c.fk_soc = s.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_pays as p ON c.fk_pays = p.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_pays as p ON c.fk_pays = p.rowid';
$this->export_sql_end[$r] .=' WHERE c.entity = '.$conf->entity; $this->export_sql_end[$r] .=' WHERE c.entity IN ('.getEntity("societe", 1).')';
// Imports // Imports

View File

@ -61,7 +61,10 @@ $sql = "SELECT s.rowid as socid, s.nom, st.libelle as stcomm, p.rowid as cidp, p
if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", sc.fk_soc, sc.fk_user "; if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", sc.fk_soc, sc.fk_user ";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."socpeople as p, ".MAIN_DB_PREFIX."c_stcomm as st"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."socpeople as p, ".MAIN_DB_PREFIX."c_stcomm as st";
if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql .= " WHERE s.fk_stcomm = st.id AND s.fournisseur = 1 AND s.rowid = p.fk_soc"; $sql.= " WHERE s.fk_stcomm = st.id";
$sql.= " AND s.fournisseur = 1";
$sql.= " AND s.rowid = p.fk_soc";
$sql.= " AND s.entity IN (".getEntity('societe', 1).")";
if (! $user->rights->societe->client->voir && ! $socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if (! $user->rights->societe->client->voir && ! $socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if (dol_strlen($stcomm)) { if (dol_strlen($stcomm)) {
@ -69,11 +72,11 @@ if (dol_strlen($stcomm)) {
} }
if (dol_strlen($begin)) { if (dol_strlen($begin)) {
$sql .= " AND p.name like '$begin%'"; $sql .= " AND p.name LIKE '$begin%'";
} }
if ($contactname) { if ($contactname) {
$sql .= " AND p.name like '%".strtolower($contactname)."%'"; $sql .= " AND p.name LIKE '%".strtolower($contactname)."%'";
$sortfield = "p.name"; $sortfield = "p.name";
$sortorder = "ASC"; $sortorder = "ASC";
} }