diff --git a/htdocs/adherents/fiche_subscription.php b/htdocs/adherents/fiche_subscription.php
index 28fb2268d4c9aecb28d610f79b13f9dd5e2d1127..2e149dbc028b4ea4e3d3e1141cb1fd3d46e8fd9f 100644
--- a/htdocs/adherents/fiche_subscription.php
+++ b/htdocs/adherents/fiche_subscription.php
@@ -424,7 +424,7 @@ if ($rowid && $action != 'edit')
     
     // Show links to link elements
     /*$linktoelem = $form->showLinkToObjectBlock($object,array('order'));
-    if ($linktoelem) print '<br>'.$linktoelem;
+	if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
     
     // Link for paypal payment
     if (! empty($conf->paypal->enabled) && $object->statut != 0) {
diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php
index 1e580826e964b5b5bc040d6f7a6f77a421cd30ea..0e2a4219e554b3257374a5f4c43e71c2abac6955 100644
--- a/htdocs/comm/propal/card.php
+++ b/htdocs/comm/propal/card.php
@@ -2324,9 +2324,9 @@ if ($action == 'create')
 		$somethingshown = $form->showLinkedObjectBlock($object);
 
 		// Show links to link elements
-		$linktoelem = $form->showLinkToObjectBlock($object);
-		if ($linktoelem) print '<br>'.$linktoelem;
-
+		$linktoelem = $form->showLinkToObjectBlock($object, null, array('propal'));
+		if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
+		
 
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 		// print '</td><td valign="top" width="50%">';
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index f3240443a6eae462152b37cbffba0eebb583aadf..21a6ed5fc97fa3c188861606ce0e19efea11d6fb 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -2614,9 +2614,9 @@ if ($action == 'create' && $user->rights->commande->creer)
 			$somethingshown = $form->showLinkedObjectBlock($object);
 
 			// Show links to link elements
-			//$linktoelem = $form->showLinkToObjectBlock($object);
-			//if ($linktoelem) print '<br>'.$linktoelem;
-
+			$linktoelem = $form->showLinkToObjectBlock($object, null, array('order'));
+			if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
+			
 
 			print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 6535cee7c98f54a35fb2f86152f970c55114f91a..7a7cb0c8e625d79461f97f8acf998fd084670216 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -134,14 +134,6 @@ if (empty($reshook))
 
 	include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php';	// Must be include, not include_once
 
-	// Link invoice to order
-	if (GETPOST('linkedOrder') && empty($cancel) && $id > 0)
-	{
-	    $object->fetch($id);
-	    $object->fetch_thirdparty();
-	    $result = $object->add_object_linked('commande', GETPOST('linkedOrder'));
-	}
-	
 	// Action clone object
 	if ($action == 'confirm_clone' && $confirm == 'yes' && $user->rights->facture->creer) {
 	//	if (1 == 0 && empty($_REQUEST["clone_content"]) && empty($_REQUEST["clone_receivers"])) {
@@ -4103,9 +4095,9 @@ else if ($id > 0 || ! empty($ref))
 		$somethingshown = $form->showLinkedObjectBlock($object);
 
 		// Show links to link elements
-		$linktoelem = $form->showLinkToObjectBlock($object,array('order'));
-		if ($linktoelem) print '<br>'.$linktoelem;
-
+		$linktoelem = $form->showLinkToObjectBlock($object, null, array('invoice'));
+		if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
+		
 		// Link for paypal payment
 		if (! empty($conf->paypal->enabled) && $object->statut != 0) {
 			include_once DOL_DOCUMENT_ROOT . '/paypal/lib/paypal.lib.php';
diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php
index 5a87d3b3d517762b828b9151a8941603d9375d05..dfa61513f9eb6aad406ad8aa0ffb441e89387579 100644
--- a/htdocs/contrat/card.php
+++ b/htdocs/contrat/card.php
@@ -2021,8 +2021,8 @@ else
 		$somethingshown = $form->showLinkedObjectBlock($object);
 
 		// Show links to link elements
-		$linktoelem = $form->showLinkToObjectBlock($object);
-		if ($linktoelem) print '<br>'.$linktoelem;
+		$linktoelem = $form->showLinkToObjectBlock($object, null, array('contrat'));
+		if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
 
 
         print '</div><div class="fichehalfright"><div class="ficheaddleft">';
diff --git a/htdocs/core/actions_dellink.inc.php b/htdocs/core/actions_dellink.inc.php
index 45fb8c5f9ec2134f178efe0d82bf8f5185673a15..63218dde739c21bfbe7ecf5fa78d1c93a666fae2 100644
--- a/htdocs/core/actions_dellink.inc.php
+++ b/htdocs/core/actions_dellink.inc.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2015 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2015-2016 Laurent Destailleur  <eldy@users.sourceforge.net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,22 +18,29 @@
 
 /**
  *	\file			htdocs/core/actions_dellink.inc.php
- *  \brief			Code for actions on deleting link between elements
+ *  \brief			Code for actions on linking and deleting link between elements
  */
 
 
 // $action must be defined
 // $object must be defined
 // $permissiondellink must be defined
-// $uploaddir (example $conf->projet->dir_output . "/";)
 
 $dellinkid = GETPOST('dellinkid','int');
+$addlinkid = GETPOST('idtolinkto','int');
 
-// Set public note
+// Link invoice to order
+if ($action == 'addlink' && ! empty($permissiondellink) && ! GETPOST('cancel') && $id > 0 && $addlinkid > 0)
+{
+    $object->fetch($id);
+    $object->fetch_thirdparty();
+    $result = $object->add_object_linked(GETPOST('addlink'), $addlinkid);
+}
+
+// Delete link
 if ($action == 'dellink' && ! empty($permissiondellink) && ! GETPOST('cancel') && $dellinkid > 0)
 {
 	$result=$object->deleteObjectLinked(0, '', 0, '', $dellinkid);
 	if ($result < 0) setEventMessages($object->error,$object->errors,'errors');
 }
 
-
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 71540cf16d76bce54b750dc4bb071e447e160df2..221e9c8306244c179d12f445211c9a9b82eee3f0 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -2364,6 +2364,10 @@ abstract class CommonObject
     	$origin = (! empty($origin) ? $origin : $this->origin);
     	$origin_id = (! empty($origin_id) ? $origin_id : $this->origin_id);
 
+    	// Special case
+    	if ($origin == 'order') $origin='commande';
+    	if ($origin == 'invoice') $origin='facture';
+    	
         $this->db->begin();
 
         $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_element (";
@@ -2548,7 +2552,10 @@ abstract class CommonObject
                     // Set classfile
                     $classfile = strtolower($subelement); $classname = ucfirst($subelement);
 
-                    if ($objecttype == 'invoice_supplier') {
+                    if ($objecttype == 'order') {
+                        $classfile = 'commande'; $classname = 'Commande';
+                    }
+                    else if ($objecttype == 'invoice_supplier') {
                         $classfile = 'fournisseur.facture'; $classname = 'FactureFournisseur';
                     }
                     else if ($objecttype == 'order_supplier')   {
@@ -2568,15 +2575,18 @@ abstract class CommonObject
                     if ($conf->$module->enabled && (($element != $this->element) || $alsosametype))
                     {
                         dol_include_once('/'.$classpath.'/'.$classfile.'.class.php');
-
-                        foreach($objectids as $i => $objectid)	// $i is rowid into llx_element_element
+                        //print '/'.$classpath.'/'.$classfile.'.class.php';
+                        if (class_exists($classname))
                         {
-                            $object = new $classname($this->db);
-                            $ret = $object->fetch($objectid);
-                            if ($ret >= 0)
-                            {
-                                $this->linkedObjects[$objecttype][$i] = $object;
-                            }
+	                        foreach($objectids as $i => $objectid)	// $i is rowid into llx_element_element
+	                        {
+	                            $object = new $classname($this->db);
+	                            $ret = $object->fetch($objectid);
+	                            if ($ret >= 0)
+	                            {
+	                                $this->linkedObjects[$objecttype][$i] = $object;
+	                            }
+	                        }
                         }
                     }
                 }
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 813e1aa9a12d47d4a92e2a197e155b803c611bf7..ccc6c7b2d0ff4d84cb0f8f3ddd6666a161ff38ed 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -5264,12 +5264,13 @@ class Form
 
     /**
      *  Show block with links to link to other objects.
-     *
+     * 
      *  @param	CommonObject	$object				Object we want to show links to
      *  @param	array			$restrictlinksto	Restrict links to some elements, for exemple array('order') or array('supplier_order'). null or array() if no restriction.
+     *  @param	array			$excludelinksto		Do not show links of this type, for exemple array('order') or array('supplier_order'). null or array() if no exclusion.
      *  @return	string								<0 if KO, >0 if OK
      */
-    function showLinkToObjectBlock($object, $restrictlinksto=array())
+    function showLinkToObjectBlock($object, $restrictlinksto=array(), $excludelinksto=array())
     {
         global $conf, $langs, $hookmanager;
         global $bc;
@@ -5278,201 +5279,90 @@ class Form
 
 		if (! is_object($object->thirdparty)) $object->fetch_thirdparty();
 
-		if ((empty($restrictlinksto) || in_array('order',$restrictlinksto))
-			&& ! empty($conf->commande->enabled))
-		{
-			$linktoelem.=($linktoelem?' &nbsp; ':'').'<a href="#linktoorder" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>';
-
-			print '
-				<script type="text/javascript" language="javascript">
-				jQuery(document).ready(function() {
-					jQuery("#linktoorder").click(function() {
-						jQuery("#orderlist").toggle();
-						jQuery("#linktoorder").toggle();
-					});
-				});
-				</script>
-				';
-
-			print '<div id="orderlist"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>';
-
-			$sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_client, c.total_ht";
-			$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
-			$sql .= ", " . MAIN_DB_PREFIX . "commande as c";
-			$sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $object->thirdparty->id . '';
-
-			$resqlorderlist = $this->db->query($sql);
-			if ($resqlorderlist)
-			{
-				$num = $this->db->num_rows($resqlorderlist);
-				$i = 0;
-
-				print '<br><form action="" method="POST" name="LinkedOrder">';
-				print '<table class="noborder">';
-				print '<tr class="liste_titre">';
-				print '<td class="nowrap"></td>';
-				print '<td align="center">' . $langs->trans("Ref") . '</td>';
-				print '<td align="left">' . $langs->trans("RefCustomer") . '</td>';
-				print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>';
-				print '<td align="left">' . $langs->trans("Company") . '</td>';
-				print '</tr>';
-				while ($i < $num)
-				{
-					$objp = $this->db->fetch_object($resqlorderlist);
-
-					$var = ! $var;
-					print '<tr ' . $bc [$var] . '>';
-					print '<td aling="left">';
-					print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>';
-					print '</td>';
-					print '<td align="center">' . $objp->ref . '</td>';
-					print '<td>' . $objp->ref_client . '</td>';
-					print '<td>' . price($objp->total_ht) . '</td>';
-					print '<td>' . $objp->name . '</td>';
-					print '</tr>';
-
-					$i ++;
-				}
-				print '</table>';
-				print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>';
-				
-				print '</form>';
-				$this->db->free($resqlorderlist);
-			} else {
-				dol_print_error($this->db);
-			}
-
-			print '</div>';
-		}
-
-		if ((empty($restrictlinksto) || (in_array('fichinter',$restrictlinksto))) && ! empty($conf->ficheinter->enabled))
+		$possiblelinks=array(
+			'propal'=>array('enabled'=>$conf->propale->enabled, 'perms'=>1, 'label'=>'LinkToProposal', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as t WHERE t.fk_soc = s.rowid AND t.fk_soc = ".$object->thirdparty->id),
+			'order'=>array('enabled'=>$conf->commande->enabled, 'perms'=>1, 'label'=>'LinkToOrder', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."commande as t WHERE t.fk_soc = s.rowid AND t.fk_soc = ".$object->thirdparty->id),
+			'invoice'=>array('enabled'=>$conf->facture->enabled, 'perms'=>1, 'label'=>'LinkToInvoice', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.facnumber as ref, t.ref_client, t.total as total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture as t WHERE t.fk_soc = s.rowid AND t.fk_soc = ".$object->thirdparty->id),
+			'contrat'=>array('enabled'=>$conf->contrat->enabled , 'perms'=>1, 'label'=>'LinkToContract', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_supplier, '' as total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as t WHERE t.fk_soc = s.rowid AND t.fk_soc = ".$object->thirdparty->id),
+			'fichinter'=>array('enabled'=>$conf->ficheinter->enabled, 'perms'=>1, 'label'=>'LinkToIntervention', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."fichinter as t WHERE t.fk_soc = s.rowid AND t.fk_soc = ".$object->thirdparty->id),
+			'supplier_proposal'=>array('enabled'=>$conf->supplier_proposal->enabled , 'perms'=>1, 'label'=>'LinkToSupplierProposal', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, '' as ref_supplier, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."supplier_proposal as t WHERE t.fk_soc = s.rowid AND t.fk_soc = ".$object->thirdparty->id),
+			'order_supplier'=>array('enabled'=>$conf->fournisseur->commande->enabled , 'perms'=>1, 'label'=>'LinkToSupplierOrder', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_supplier, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."commande_fournisseur as t WHERE t.fk_soc = s.rowid AND t.fk_soc = ".$object->thirdparty->id),
+			'invoice_supplier'=>array('enabled'=>$conf->fournisseur->facture->enabled , 'perms'=>1, 'label'=>'LinkToSupplierInvoice', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_supplier, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_fourn as t WHERE t.fk_soc = s.rowid AND t.fk_soc = ".$object->thirdparty->id)
+		);
+		
+		foreach($possiblelinks as $key => $possiblelink)
 		{
-			$linktoelem.=($linktoelem?' &nbsp; ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedFichinter') . '</a>';
-
-			print '
-				<script type="text/javascript" language="javascript">
-				jQuery(document).ready(function() {
-					jQuery("#linktoorder").click(function() {
-						jQuery("#orderlist").toggle();
-						jQuery("#linktoorder").toggle();
-					});
-				});
-				</script>
-				';
-
-			print '<div id="orderlist"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>';
-
-			$sql = "SELECT s.rowid as socid, s.nom as name, s.client, f.rowid, f.ref";
-			$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
-			$sql .= ", " . MAIN_DB_PREFIX . "fichinter as f";
-			$sql .= ' WHERE f.fk_soc = s.rowid';
-
-			$resqlorderlist = $this->db->query($sql);
-			if ($resqlorderlist)
+			$num = 0;
+			
+			if (! empty($possiblelink['perms']) && (empty($restrictlinksto) || in_array($key, $restrictlinksto)) && (empty($excludelinksto) || ! in_array($key, $excludelinksto)))
 			{
-				$num = $this->db->num_rows($resqlorderlist);
-				$i = 0;
-
-				print '<br><form action="" method="POST" name="LinkedFichinter">';
-				print '<table class="noborder">';
-				print '<tr class="liste_titre">';
-				print '<td class="nowrap"></td>';
-				print '<td align="center">' . $langs->trans("Ref") . '</td>';
-				print '<td align="left">' . $langs->trans("Company") . '</td>';
-				print '</tr>';
-				while ($i < $num)
+				print '<div id="'.$key.'list"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>';
+				$sql = $possiblelink['sql'];
+				$resqllist = $this->db->query($sql);
+				if ($resqllist)
 				{
-					$objp = $this->db->fetch_object($resqlorderlist);
-
-					$var = ! $var;
-					print '<tr ' . $bc [$var] . '>';
-					print '<td aling="left">';
-					print '<input type="radio" name="LinkedFichinter" value=' . $objp->rowid . '>';
-					print '<td align="center">' . $objp->ref . '</td>';
-					print '<td>' . $objp->name . '</td>';
-					print '</td>';
+					$num = $this->db->num_rows($resqllist);
+					$i = 0;
+	
+					print '<br><form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="formlinked'.$key.'">';
+					print '<input type="hidden" name="id" value="'.$object->id.'">';
+					print '<input type="hidden" name="action" value="addlink">';
+					print '<input type="hidden" name="addlink" value="'.$key.'">';
+					print '<table class="noborder">';
+					print '<tr class="liste_titre">';
+					print '<td class="nowrap"></td>';
+					print '<td align="center">' . $langs->trans("Ref") . '</td>';
+					print '<td align="left">' . $langs->trans("RefCustomer") . '</td>';
+					print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>';
+					print '<td align="left">' . $langs->trans("Company") . '</td>';
 					print '</tr>';
-
-					$i ++;
+					while ($i < $num)
+					{
+						$objp = $this->db->fetch_object($resqlorderlist);
+	
+						$var = ! $var;
+						print '<tr ' . $bc [$var] . '>';
+						print '<td aling="left">';
+						print '<input type="radio" name="idtolinkto" value=' . $objp->rowid . '>';
+						print '</td>';
+						print '<td align="center">' . $objp->ref . '</td>';
+						print '<td>' . $objp->ref_client . '</td>';
+						print '<td>' . price($objp->total_ht) . '</td>';
+						print '<td>' . $objp->name . '</td>';
+						print '</tr>';
+						$i++;
+					}
+					print '</table>';
+					print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>';
+					
+					print '</form>';
+					$this->db->free($resqllist);
+				} else {
+					dol_print_error($this->db);
 				}
-				print '</table>';
-				print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>';
-				print '</form>';
-				$this->db->free($resqlorderlist);
-			} else {
-				dol_print_error($this->db);
-			}
-
-			print '</div>';
-		}
-
-        if ((empty($restrictlinksto) || in_array('supplier_order',$restrictlinksto))
-			&& ! empty($conf->fournisseur->enabled))
-		{
-			$linktoelem.=($linktoelem?' &nbsp; ':'').'<a href="#linktoorder" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>';
-
-			print '
-			<script type="text/javascript" language="javascript">
-			jQuery(document).ready(function() {
-				jQuery("#linktoorder").click(function() {
-					jQuery("#orderlist").toggle();
-					jQuery("#linktoorder").toggle();
-				});
-			});
-			</script>
-			';
-
-			print '<div id="orderlist"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>';
-
-			$sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_supplier, c.total_ht";
-			$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
-			$sql .= ", " . MAIN_DB_PREFIX . "commande_fournisseur as c";
-			$sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $object->thirdparty->id;
-
-			$resqlorderlist = $this->db->query($sql);
-			if ($resqlorderlist)
-			{
-				$num = $this->db->num_rows($resqlorderlist);
-				$i = 0;
-
-				print '<br><form action="" method="POST" name="LinkedOrder">';
-				print '<table class="noborder">';
-				print '<tr class="liste_titre">';
-				print '<td class="nowrap"></td>';
-				print '<td align="center">' . $langs->trans("Ref") . '</td>';
-				print '<td align="left">' . $langs->trans("RefSupplier") . '</td>';
-				print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>';
-				print '<td align="left">' . $langs->trans("Company") . '</td>';
-				print '</tr>';
-				while ($i < $num)
+				print '</div>';
+				if ($num > 0)
 				{
-					$objp = $this->db->fetch_object($resqlorderlist);
-
-					$var = ! $var;
-					print '<tr ' . $bc [$var] . '>';
-					print '<td aling="left">';
-					print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>';
-					print '</td>';
-					print '<td align="center">' . $objp->ref . '</td>';
-					print '<td>' . $objp->ref_supplier . '</td>';
-					print '<td>' . price($objp->total_ht) . '</td>';
-					print '<td>' . $objp->name . '</td>';
-					print '</tr>';
-
-					$i ++;
-				}
-				print '</table>';
-				print '<br><div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '"> &nbsp; <input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>';
-				print '</form>';
-				$this->db->free($resqlorderlist);
-			} else {
-				dol_print_error($this->db);
+					print '
+						<!-- Add js to show linkto box for '.$key.' ('.$num.' records) -->
+						<script type="text/javascript" language="javascript">
+						jQuery(document).ready(function() {
+							jQuery("#linkto'.$key.'").click(function() {
+								jQuery("#'.$key.'list").toggle();
+								jQuery("#linkto'.$key.'").toggle();
+							});
+						});
+						</script>
+						';
+				}	
 			}
 
-			print '</div>';
+			$linktoelem.=($linktoelem?' &nbsp; ':'');
+			if ($num > 0) $linktoelem.='<a href="#linkto'.$key.'" id="linkto'.$key.'">' . $langs->trans($possiblelink['label']) .' ('.$num.')</a>';
+			//else $linktoelem.=$langs->trans($possiblelink['label']);
+			else $linktoelem.='<a href="#linkto'.$key.'" class="disabled" id="linkto'.$key.'">' . $langs->trans($possiblelink['label']) . '</a>';
 		}
 
-
 		return $linktoelem;
     }
 
diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php
index e38ebd977e1e07ded2b9533a14ab226bf9b35cf7..cbcee84451f67cf8f1a8edab713cd4a1a3407b36 100644
--- a/htdocs/expedition/card.php
+++ b/htdocs/expedition/card.php
@@ -1836,8 +1836,8 @@ else if ($id || $ref)
 
 		// Show links to link elements
 		//$linktoelem = $form->showLinkToObjectBlock($object);
-		//if ($linktoelem) print '<br>'.$linktoelem;
-
+		//if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
+		
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 
 		// List of actions on element
diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php
index e177312a7d6cacdfc441dfeb32b433c6b75b7bb5..1b9bd2592ea886ca8c3d6808f516778138b072f8 100644
--- a/htdocs/expensereport/card.php
+++ b/htdocs/expensereport/card.php
@@ -2099,11 +2099,9 @@ if ($action != 'create' && $action != 'edit' && ($id || $ref))
 
     // Show links to link elements
     $linktoelements=array();
-    if($conf->global->EXPENSES_LINK_TO_INTERVENTION) $linktoelements[]='fichinter';
-    $linktoelem='';
-    $linktoelem = $form->showLinkToObjectBlock($object,$linktoelements);
-    if ($linktoelem) print '<br>'.$linktoelem;
-
+    if (! empty($conf->global->EXPENSES_LINK_TO_INTERVENTION)) $linktoelements[]='fichinter';
+    $linktoelem = $form->showLinkToObjectBlock($object, $linktoelements, array('expensereport'));
+	if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
 }
 llxFooter();
 
diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php
index 2a4ec4337f2397bdea1fd01eeed937c77f05d429..833f2140de9b530ba28e1ba1b8cc4d061843e5ec 100644
--- a/htdocs/fichinter/card.php
+++ b/htdocs/fichinter/card.php
@@ -1667,9 +1667,9 @@ else if ($id > 0 || ! empty($ref))
 		$somethingshown = $form->showLinkedObjectBlock($object);
 
 		// Show links to link elements
-		//$linktoelem = $form->showLinkToObjectBlock($object);
-		//if ($linktoelem) print '<br>'.$linktoelem;
-
+		$linktoelem = $form->showLinkToObjectBlock($object, null, array('fichinter'));
+		if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
+		
 
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 
diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php
index fa93be5020d63c40d5f04014423e9c6286999e82..a642855a241f9a85a3a9219c079051cc7c2ebe12 100644
--- a/htdocs/fourn/commande/card.php
+++ b/htdocs/fourn/commande/card.php
@@ -2834,8 +2834,8 @@ elseif (! empty($object->id))
 		$somethingshown = $form->showLinkedObjectBlock($object);
 		
 		// Show links to link elements
-		//$linktoelem = $form->showLinkToObjectBlock($object);
-		//if ($linktoelem) print '<br>'.$linktoelem;
+		$linktoelem = $form->showLinkToObjectBlock($object, null, array('order_supplier'));
+		if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
 
 
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 280664ea421c709ebddc1aa0da403ad9ae9675aa..b2c823d68fdb330eb3ec8aec23e2349d9958a393 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -2239,9 +2239,9 @@ else
 					$somethingshown = $form->showLinkedObjectBlock($object);
 	
 					// Show links to link elements
-					$linktoelem = $form->showLinkToObjectBlock($object,array('supplier_order'));
-					if ($linktoelem) print '<br>'.$linktoelem;
-	
+					$linktoelem = $form->showLinkToObjectBlock($object, null, array('invoice_supplier'));
+					if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
+						
 	
 					print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 	                //print '</td><td valign="top" width="50%">';
diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang
index 5eb99eb0f4306970c688bd10adc4b7f6bc1ba76f..fd7d8068f15543cc6edfd2feb1125d2a9c755033 100644
--- a/htdocs/langs/fr_FR/main.lang
+++ b/htdocs/langs/fr_FR/main.lang
@@ -640,6 +640,14 @@ NewAttribute=Nouvel attribut
 AttributeCode=Code de l'attribut
 URLPhoto=URL de la photo/logo
 SetLinkToAnotherThirdParty=Lier vers un autre tiers
+LinkToProposal=Link to proposal
+LinkToOrder=Link to order
+LinkToInvoice=Link to invoice
+LinkToSupplierOrder=Link to supplier order
+LinkToSupplierProposal=Link to supplier proposal
+LinkToSupplierInvoice=Link to supplier invoice
+LinkToContract=Link to contract
+LinkToIntervention=Link to intervention
 CreateDraft=Créer brouillon
 SetToDraft=Retour en brouillon
 ClickToEdit=Cliquer ici pour éditer
diff --git a/htdocs/product/stock/productlot_card.php b/htdocs/product/stock/productlot_card.php
index 4af5b8a4d591af2c8abd619c356af08ac7f66858..d13460886925d3c4312d74efc7b77d8519699428 100644
--- a/htdocs/product/stock/productlot_card.php
+++ b/htdocs/product/stock/productlot_card.php
@@ -366,8 +366,8 @@ print '<tr><td class="fieldrequired">'.$langs->trans("Fieldimport_key").'</td><t
 	// Example 2 : Adding links to objects
 	//$somethingshown=$form->showLinkedObjectBlock($object);
 	//$linktoelem = $form->showLinkToObjectBlock($object);
-	//if ($linktoelem) print '<br>'.$linktoelem;
-
+	//if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
+	
 }
 
 
diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php
index 3e7871b2c4a175919071948e5b81eb23a4d0d265..16029c5a95e1e089c86edcf3d49c7bf14b428f4a 100644
--- a/htdocs/supplier_proposal/card.php
+++ b/htdocs/supplier_proposal/card.php
@@ -1809,9 +1809,10 @@ if ($action == 'create')
 		$somethingshown = $form->showLinkedObjectBlock($object);
 
 		// Show links to link elements
-		//$linktoelem = $form->showLinkToObjectBlock($object);
-		//if ($linktoelem) print '<br>'.$linktoelem;
+		$linktoelem = $form->showLinkToObjectBlock($object, null, array('supplier_proposal'));
+		if ($linktoelem) print ($somethingshown?'':'<br>').$linktoelem;
 
+		
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 
 		// List of actions on element