diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index 2f83f113c1654cb765726d6a8338fec314deb854..8b0500b08e784e4d5201f536869287315cd9d3d6 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -99,23 +99,25 @@ $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action);
 // Action clone object
 if ($action == 'confirm_clone' && $confirm == 'yes')
 {
-	if (1==0 &&  ! GETPOST('clone_content') && ! GETPOST('clone_receivers') )
+	if (1==0 &&  ! GETPOST('clone_content') && ! GETPOST('clone_receivers'))
 	{
 		$mesg='<div class="error">'.$langs->trans("NoCloneOptionsSpecified").'</div>';
 	}
 	else
 	{
-		$result=$object->createFromClone($id,0,GETPOST('socid'),$hookmanager);
-		if ($result > 0)
-		{
-			header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
-			exit;
-		}
-		else
+		if ($object->fetch($id) > 0)
 		{
-			$mesg=$object->error;
-			$action='';
-			//$_GET['id']=$_REQUEST['id'];
+			$result=$object->createFromClone(GETPOST('socid'),$hookmanager);
+			if ($result > 0)
+			{
+				header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
+				exit;
+			}
+			else
+			{
+				$mesg=$object->error;
+				$action='';
+			}
 		}
 	}
 }
diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php
index 82057f92f648071d4545ac3e82e14d3bfa3b80d9..cc2065e0a0ccde8643b1838c87e359792534d8ec 100644
--- a/htdocs/comm/propal/class/propal.class.php
+++ b/htdocs/comm/propal/class/propal.class.php
@@ -836,53 +836,45 @@ class Propal extends CommonObject
 	/**
 	 *		Load an object from its id and create a new one in database
 	 *
-	 *		@param      int				$fromid     	Id of object to clone
-	 *		@param		int				$invertdetail	Reverse sign of amounts for lines
 	 *		@param		int				$socid			Id of thirdparty
 	 *		@param		HookManager		$hookmanager	Hook manager instance
 	 * 	 	@return		int								New id of clone
 	 */
-	function createFromClone($fromid,$invertdetail=0,$socid=0,$hookmanager=false)
+	function createFromClone($socid=0,$hookmanager=false)
 	{
 		global $user,$langs,$conf;
 
 		$error=0;
-
 		$now=dol_now();
 
-		$object=new Propal($this->db);
-
 		$this->db->begin();
 
 		// Load source object
-		$object->fetch($fromid);
-		$objFrom = $object;
+		$objFrom = dol_clone($this);
 
 		$objsoc=new Societe($this->db);
 
 		// Change socid if needed
-		if (! empty($socid) && $socid != $object->socid)
+		if (! empty($socid) && $socid != $this->socid)
 		{
-			if ($objsoc->fetch($socid)>0)
+			if ($objsoc->fetch($socid) > 0)
 			{
-				$object->socid 					= $objsoc->id;
-				$object->cond_reglement_id		= (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
-				$object->mode_reglement_id		= (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
-				$object->fk_project				= '';
-				$object->fk_delivery_address	= '';
+				$this->socid 				= $objsoc->id;
+				$this->cond_reglement_id	= (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
+				$this->mode_reglement_id	= (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
+				$this->fk_project			= '';
+				$this->fk_delivery_address	= '';
 			}
 
 			// TODO Change product price if multi-prices
 		}
 		else
 		{
-			$objsoc->fetch($object->socid);
+			$objsoc->fetch($this->socid);
 		}
 
-		$object->id=0;
-		$object->statut=0;
-
-		$objsoc->fetch($object->socid);
+		$this->id=0;
+		$this->statut=0;
 
 		if (empty($conf->global->PROPALE_ADDON) || ! is_readable(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php"))
 		{
@@ -891,28 +883,22 @@ class Propal extends CommonObject
 		}
 
 		// Clear fields
-		$object->user_author	= $user->id;
-		$object->user_valid		= '';
-		$object->date			= '';
-		$object->datep			= $now;
-		$object->fin_validite	= $object->datep + ($this->duree_validite * 24 * 3600);
-		$object->ref_client		= '';
+		$this->user_author	= $user->id;
+		$this->user_valid	= '';
+		$this->date			= '';
+		$this->datep		= $now;
+		$this->fin_validite	= $this->datep + ($this->duree_validite * 24 * 3600);
+		$this->ref_client	= '';
 
 		// Set ref
 		require_once(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php");
 		$obj = $conf->global->PROPALE_ADDON;
 		$modPropale = new $obj;
-		$object->ref = $modPropale->getNextValue($objsoc,$object);
+		$this->ref = $modPropale->getNextValue($objsoc,$this);
 
 		// Create clone
-		$result=$object->create($user);
-
-		// Other options
-		if ($result < 0)
-		{
-			$this->error=$object->error;
-			$error++;
-		}
+		$result=$this->create($user);
+		if ($result < 0) $error++;
 
 		if (! $error)
 		{
@@ -921,14 +907,14 @@ class Propal extends CommonObject
 			{
 			    $parameters=array('objFrom'=>$objFrom);
 				$action='';
-				$reshook=$hookmanager->executeHooks('createfrom',$parameters,$object,$action);    // Note that $action and $object may have been modified by some hooks
+				$reshook=$hookmanager->executeHooks('createfrom',$parameters,$this,$action);    // Note that $action and $object may have been modified by some hooks
 				if ($reshook < 0) $error++;
 			}
 
 			// Appel des triggers
 			include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
 			$interface=new Interfaces($this->db);
-			$result=$interface->run_triggers('PROPAL_CLONE',$object,$user,$langs,$conf);
+			$result=$interface->run_triggers('PROPAL_CLONE',$this,$user,$langs,$conf);
 			if ($result < 0) { $error++; $this->errors=$interface->errors; }
 			// Fin appel triggers
 		}
@@ -937,7 +923,7 @@ class Propal extends CommonObject
 		if (! $error)
 		{
 			$this->db->commit();
-			return $object->id;
+			return $this->id;
 		}
 		else
 		{