diff --git a/dev/initdemo/initdemo.sql b/dev/initdemo/initdemo.sql index 32515ac6c27..d89a0a9b6e8 100644 --- a/dev/initdemo/initdemo.sql +++ b/dev/initdemo/initdemo.sql @@ -2412,13 +2412,13 @@ SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; CREATE TABLE `llx_element_element` ( `rowid` int(11) NOT NULL auto_increment, - `sourceid` int(11) NOT NULL default '0', + `fk_source` int(11) NOT NULL default '0', `sourcetype` varchar(16) NOT NULL default '', - `targetid` int(11) NOT NULL default '0', + `fk_target` int(11) NOT NULL default '0', `targettype` varchar(16) NOT NULL default '', PRIMARY KEY (`rowid`), - UNIQUE KEY `idx_element_element_idx1` (`sourceid`,`sourcetype`,`targetid`,`targettype`), - KEY `idx_element_element_targetid` (`targetid`) + UNIQUE KEY `idx_element_element_idx1` (`fk_source`,`sourcetype`,`fk_target`,`targettype`), + KEY `idx_element_element_fk_target` (`fk_target`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; SET character_set_client = @saved_cs_client; diff --git a/doc/dev/dbmodel/dolibarr_schema.mwb b/doc/dev/dbmodel/dolibarr_schema.mwb index ac0b0950fc2..badb7842c17 100644 Binary files a/doc/dev/dbmodel/dolibarr_schema.mwb and b/doc/dev/dbmodel/dolibarr_schema.mwb differ diff --git a/htdocs/commonobject.class.php b/htdocs/commonobject.class.php index 56f96481ec8..0c5a64a3cd8 100644 --- a/htdocs/commonobject.class.php +++ b/htdocs/commonobject.class.php @@ -832,6 +832,19 @@ class CommonObject return -1; } } + + /** + * Add objects linked in llx_element_element. + */ + function add_object_linked($sourceid,$sourcetype,$targetid,$targettype) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_element ("; + $sql.= "fk_source"; + $sql.= ", sourcetype"; + $sql.= ", fk_target"; + $sql.= ", targettype"; + $sql.= ") VALUES ("; + } /** * Load array of objects linked to current object. Links are loaded into this->linked_object array. @@ -841,10 +854,11 @@ class CommonObject $this->linked_object=array(); // Links beetween objects are stored in this table - $sql = 'SELECT sourceid, sourcetype, targetid, targettype'; + $sql = 'SELECT fk_source, sourcetype, fk_target, targettype'; $sql.= ' FROM '.MAIN_DB_PREFIX.'element_element'; - $sql.= " WHERE (sourceid = '".$this->id."' AND sourcetype = 'invoice')"; - $sql.= " OR (targetid = '".$this->id."' AND targettype = 'invoice')"; + $sql.= " WHERE (fk_source = '".$this->id."' AND sourcetype = 'invoice')"; + $sql.= " OR (fk_target = '".$this->id."' AND targettype = 'invoice')"; + dol_syslog("CommonObject::load_object_linked sql=".$sql); $resql = $this->db->query($sql); if ($resql) @@ -854,13 +868,13 @@ class CommonObject while ($i < $num) { $obj = $this->db->fetch_object($resql); - if ($obj->sourceid == $this->id) + if ($obj->fk_source == $this->id) { - $this->linked_object[]=array('linkid'=>$obj->targetid, 'type'=>$obj->targettype); + $this->linked_object[]=array('linkid'=>$obj->fk_target, 'type'=>$obj->targettype); } - if ($obj->targetid == $this->id) + if ($obj->fk_target == $this->id) { - $this->linked_object[]=array('linkid'=>$obj->sourceid, 'type'=>$obj->sourcetype); + $this->linked_object[]=array('linkid'=>$obj->fk_source, 'type'=>$obj->sourcetype); } $i++; } diff --git a/htdocs/install/mysql/migration/2.7.0-2.8.0.sql b/htdocs/install/mysql/migration/2.7.0-2.8.0.sql index c6d162d6414..1f2504d79d8 100755 --- a/htdocs/install/mysql/migration/2.7.0-2.8.0.sql +++ b/htdocs/install/mysql/migration/2.7.0-2.8.0.sql @@ -14,3 +14,10 @@ ALTER TABLE llx_stock_mouvement ADD COLUMN label varchar(128); ALTER TABLE llx_deplacement ADD COLUMN ref varchar(30) DEFAULT NULL AFTER rowid; ALTER TABLE llx_deplacement ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER ref; + +ALTER TABLE llx_element_element DROP INDEX idx_element_element_idx1; +ALTER TABLE llx_element_element DROP INDEX idx_element_element_targetid; +ALTER TABLE llx_element_element CHANGE sourceid fk_source integer NOT NULL; +ALTER TABLE llx_element_element CHANGE targetid fk_target integer NOT NULL; +ALTER TABLE llx_element_element ADD UNIQUE INDEX idx_element_element_idx1 (fk_source, sourcetype, fk_target, targettype); +ALTER TABLE llx_element_element ADD INDEX idx_element_element_fk_target (fk_target); diff --git a/htdocs/install/mysql/tables/llx_element_element.key.sql b/htdocs/install/mysql/tables/llx_element_element.key.sql index d065c0f2136..e1b82141ea1 100644 --- a/htdocs/install/mysql/tables/llx_element_element.key.sql +++ b/htdocs/install/mysql/tables/llx_element_element.key.sql @@ -19,10 +19,10 @@ -- ============================================================================ -ALTER TABLE llx_element_element ADD UNIQUE INDEX idx_element_element_idx1 (sourceid, sourcetype, targetid, targettype); +ALTER TABLE llx_element_element ADD UNIQUE INDEX idx_element_element_idx1 (fk_source, sourcetype, fk_target, targettype); -ALTER TABLE llx_element_element ADD INDEX idx_element_element_targetid (targetid); +ALTER TABLE llx_element_element ADD INDEX idx_element_element_fk_target (fk_target); --- Pas de contraite sur sourceid et targetid car pointe sur differentes tables +-- Pas de contraite sur fk_source et fk_target car pointe sur differentes tables \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_element_element.sql b/htdocs/install/mysql/tables/llx_element_element.sql index 53823a62793..3ec5983b008 100644 --- a/htdocs/install/mysql/tables/llx_element_element.sql +++ b/htdocs/install/mysql/tables/llx_element_element.sql @@ -24,9 +24,9 @@ create table llx_element_element ( rowid integer AUTO_INCREMENT PRIMARY KEY, - sourceid integer NOT NULL, + fk_source integer NOT NULL, sourcetype varchar(16) NOT NULL, - targetid integer NOT NULL, + fk_target integer NOT NULL, targettype varchar(16) NOT NULL ) type=innodb; diff --git a/htdocs/livraison/livraison.class.php b/htdocs/livraison/livraison.class.php index b903c1b9589..a4a97eb5d3f 100644 --- a/htdocs/livraison/livraison.class.php +++ b/htdocs/livraison/livraison.class.php @@ -388,7 +388,7 @@ class Livraison extends CommonObject $resql=$this->db->query($sql); if ($resql) { - // Si module stock g�r� et que expedition faite depuis un entrepot + // Si module stock gere et que expedition faite depuis un entrepot if (!$conf->expedition->enabled && $conf->stock->enabled && $this->entrepot_id && $conf->global->STOCK_CALCULATE_ON_SHIPMENT == 1) {