diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index 0270b0327dd75a3912b47fc304528ab56a65b049..b6e11a64065043e1b2df57067332f00d4fba6674 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -2783,7 +2783,6 @@ class Commande extends CommonOrder
      *	Update value of extrafields on the proposal
      *
      *	@param      User	$user       Object user that modify
-     *	@param      double	$remise      Amount discount
      *	@return     int         		<0 if ko, >0 if ok
      */
     function update_extrafields($user)
diff --git a/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php b/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php
index 4b621b705a2fe35d6f095846bb47539644732171..3865cfe8f66e49447a1c74a83f366e9439d93f7c 100755
--- a/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php
+++ b/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php
@@ -175,6 +175,7 @@ class mailing_thirdparties_services_expired extends MailingTargets
      *	For example if this selector is used to extract 500 different
      *	emails from a text file, this function must return 500.
      *
+     *  @param	string	$sql		SQL request to get recipitien
      *	@param	int		$filter		Filter
      *	@param	string	$option		Option
      *	@return	int					Number of recipients
diff --git a/htdocs/core/modules/project/pdf/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/pdf/doc_generic_project_odt.modules.php
index 34cd23a0a7f93c2d42dbd7d93123e20518968134..912c9fd25ad979e51851fc7bb48253849371a643 100644
--- a/htdocs/core/modules/project/pdf/doc_generic_project_odt.modules.php
+++ b/htdocs/core/modules/project/pdf/doc_generic_project_odt.modules.php
@@ -209,7 +209,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 	function get_substitutionarray_project_reference($refdetail,$outputlangs)
 	{
 		global $conf;
-		
+
 		return array(
 		'projref_type'=>$refdetail['type'],
 		'projref_ref'=>$refdetail['ref'],
@@ -220,7 +220,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 		'projref_status'=>$refdetail['status']
 		);
 	}
-	
+
 	/**
 	 *	Define array with couple substitution key => substitution value
 	 *
@@ -242,7 +242,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 		'taskressource_email'=>$taskressource['email']
 		);
 	}
-	
+
 	/**
 	 *	Define array with couple substitution key => substitution value
 	 *
@@ -254,7 +254,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 	{
 		global $conf;
 
-		return array(		
+		return array(
 		'tasktime_rowid'=>$tasktime['rowid'],
 		'tasktime_task_date'=>dol_print_date($tasktime['task_date'],'day'),
 		'tasktime_task_duration'=>convertSecondToTime($tasktime['task_duration'],'all'),
@@ -265,7 +265,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 		'tasktime_fullcivname'=>$tasktime['fullcivname']
 		);
 	}
-	
+
 	/**
 	 *	Define array with couple substitution key => substitution value
 	 *
@@ -276,7 +276,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 	function get_substitutionarray_task_file($file,$outputlangs)
 	{
 		global $conf;
-	
+
 		return array(
 		'tasksfile_name'=>$file['name'],
 		'tasksfile_date'=>dol_print_date($file['date'],'day'),
@@ -384,6 +384,14 @@ class doc_generic_project_odt extends ModelePDFProjects
 			return -1;
 		}
 
+		// Add odtgeneration hook
+		if (! is_object($hookmanager))
+		{
+			include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
+			$hookmanager=new HookManager($this->db);
+		}
+		$hookmanager->initHooks(array('odtgeneration'));
+		global $action;
 		if (! is_object($outputlangs)) $outputlangs=$langs;
 		$sav_charset_output=$outputlangs->charset_output;
 		$outputlangs->charset_output='UTF-8';
@@ -534,6 +542,9 @@ class doc_generic_project_odt extends ModelePDFProjects
 				// Replace tags of object + external modules
 				$tmparray=$this->get_substitutionarray_object($object,$outputlangs);
 				complete_substitutions_array($tmparray, $outputlangs, $object);
+				// Call the ODTSubstitution hook
+				$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray);
+				$reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action);    // Note that $action and $object may have been modified by some hooks
 				foreach($tmparray as $key=>$value)
 				{
 					try {
@@ -564,7 +575,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 					if (!empty($object->fk_soc)) $socid = $object->fk_soc;
 
 					$tasksarray=$taskstatic->getTasksArray(0, 0, $object->id, $socid, 0);
-					
+						
 
 
 					foreach ($tasksarray as $task)
@@ -584,10 +595,10 @@ class doc_generic_project_odt extends ModelePDFProjects
 							{
 							}
 						}
-						
+
 						$taskobj=new Task($this->db);
 						$taskobj->fetch($task->id);
-						
+
 						// Replace tags of lines for contacts task
 						$sourcearray=array('internal','external');
 						$contact_arrray=array();
@@ -601,7 +612,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 						if ((is_array($contact_arrray) && count($contact_arrray) > 0))
 						{
 							$listlinestaskres = $listlines->__get('tasksressources');
-						
+
 							foreach ($contact_arrray as $contact)
 							{
 								if ($contact['source']=='internal') {
@@ -611,15 +622,15 @@ class doc_generic_project_odt extends ModelePDFProjects
 								} elseif ($contact['source']=='external') {
 									$objectdetail=new Contact($this->db);
 									$objectdetail->fetch($contact['id']);
-						
+
 									$soc=new Societe($this->db);
 									$soc->fetch($contact['socid']);
 									$contact['socname']=$soc->name;
 								}
 								$contact['fullname']=$objectdetail->getFullName($outputlangs,1);
-						
+
 								$tmparray=$this->get_substitutionarray_tasksressource($contact,$outputlangs);
-								
+
 								foreach($tmparray as $key => $val)
 								{
 									try
@@ -645,7 +656,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 						$sql .= " WHERE t.fk_task =".$task->id;
 						$sql .= " AND t.fk_user = u.rowid";
 						$sql .= " ORDER BY t.task_date DESC";
-						
+
 						$resql = $this->db->query($sql);
 						if ($resql)
 						{
@@ -663,9 +674,9 @@ class doc_generic_project_odt extends ModelePDFProjects
 								} else {
 									$row['fullcivname']='';
 								}
-								
+
 								$tmparray=$this->get_substitutionarray_taskstime($row,$outputlangs);
-								
+
 								foreach($tmparray as $key => $val)
 								{
 									try
@@ -684,15 +695,15 @@ class doc_generic_project_odt extends ModelePDFProjects
 							}
 							$this->db->free($resql);
 						}
-						
-						
+
+
 						// Replace tags of project files
 						$listtasksfiles = $listlines->__get('tasksfiles');
-						
+
 						$upload_dir = $conf->projet->dir_output.'/'.dol_sanitizeFileName($object->ref).'/'.dol_sanitizeFileName($task->ref);
 						$filearray=dol_dir_list($upload_dir,"files",0,'','\.meta$','name',SORT_ASC,1);
-						
-						
+
+
 						foreach ($filearray as $filedetail)
 						{
 							$tmparray=$this->get_substitutionarray_task_file($filedetail,$outputlangs);
@@ -731,7 +742,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 					$upload_dir = $conf->projet->dir_output.'/'.dol_sanitizeFileName($object->ref);
 					$filearray=dol_dir_list($upload_dir,"files",0,'','\.meta$','name',SORT_ASC,1);
 
-						
+
 					foreach ($filearray as $filedetail)
 					{
 						//dol_syslog(get_class($this).'::main $filedetail'.var_export($filedetail,true));
@@ -891,27 +902,27 @@ class doc_generic_project_odt extends ModelePDFProjects
 								{
 									$ref_array=array();
 									$ref_array['type']=$langs->trans($classname);
-									
+										
 									$element = new $classname($this->db);
 									$element->fetch($elementarray[$i]);
 									$element->fetch_thirdparty();
-										
+
 									//Ref object
 									$ref_array['ref']=$element->ref;
-									
+										
 									//Date object
 									$dateref=$element->date;
 									if (empty($dateref)) $dateref=$element->datep;
 									if (empty($dateref)) $dateref=$element->date_contrat;
 									$ref_array['date']=$dateref;
-										
+
 									//Soc object
 									if (is_object($element->thirdparty)) {
 										$ref_array['socname']=$element->thirdparty->name;
 									} else {
 										$ref_array['socname']='';
 									}
-										
+
 									//Amount object
 									if (empty($valueref['disableamount'])) {
 										if (!empty($element->total_ht)) {
@@ -925,9 +936,9 @@ class doc_generic_project_odt extends ModelePDFProjects
 										$ref_array['amountht']='';
 										$ref_array['amountttc']='';
 									}
-										
+
 									$ref_array['status']=html_entity_decode($element->getLibStatut(0));
-										
+
 									$tmparray=$this->get_substitutionarray_project_reference($ref_array,$outputlangs);
 
 									foreach($tmparray as $key => $val)
@@ -945,7 +956,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 									}
 									$listlines->merge();
 								}
-								
+
 							}
 						}
 						$odfHandler->mergeSegment($listlines);
@@ -958,6 +969,11 @@ class doc_generic_project_odt extends ModelePDFProjects
 					return -1;
 				}
 
+				// Call the beforeODTSave hook
+				$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs);
+				$reshook=$hookmanager->executeHooks('beforeODTSave',$parameters,$this,$action);    // Note that $action and $object may have been modified by some hooks
+
+
 				// Write new file
 				$odfHandler->saveToDisk($file);
 
diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php
index 09843191692b6961d57c86e95aafda7d2ab16d51..d310943bbed5282f24a202c75ab7a508ff134ca2 100644
--- a/htdocs/fourn/class/fournisseur.product.class.php
+++ b/htdocs/fourn/class/fournisseur.product.class.php
@@ -146,6 +146,7 @@ class ProductFournisseur extends Product
      *    @param  	string		$charges			costs affering to product
 	 *    @param  	float		$remise_percent		Discount  regarding qty (percent)
 	 *    @param  	float		$remise				Discount  regarding qty (amount)
+	 *    @param  	float		$newnpr				new infobit tva npr
      *    @return	int								<0 if KO, >=0 if OK
      */
     function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges=0, $remise_percent=0, $remise=0, $newnpr=0)
diff --git a/htdocs/opensurvey/adminstuds_preview.php b/htdocs/opensurvey/adminstuds_preview.php
index 7e7bb6a6967204f492cb69de255f55db802b269e..bbb5f8b09ac87423d52422be9e26f07f1c5138b5 100755
--- a/htdocs/opensurvey/adminstuds_preview.php
+++ b/htdocs/opensurvey/adminstuds_preview.php
@@ -202,7 +202,7 @@ if (isset($_POST["ajoutercolonne"]) && ($object->format == "D" || $object->forma
 
 		//on rajoute la valeur dans les valeurs
 		$datesbase = explode(",",$object->sujet);
-		$taillebase = sizeof($datesbase);
+		$taillebase = count($datesbase);
 
 		//recherche de l'endroit de l'insertion de la nouvelle date dans les dates deja entrées dans le tableau
 		if ($nouvelledate < $datesbase[0]) {
diff --git a/htdocs/opensurvey/fonctions.php b/htdocs/opensurvey/fonctions.php
index 6068ca965f1e65f81ce15ddc6e70451c0c2fe7d2..a1375e15f0a9781801e736d6fd1b0d47c9ba017f 100755
--- a/htdocs/opensurvey/fonctions.php
+++ b/htdocs/opensurvey/fonctions.php
@@ -120,7 +120,7 @@ function get_server_name()
 /**
  * is_error
  *
- * @param unknown_type $cerr
+ * @param unknown_type $cerr error number
  * @return boolean
  */
 function is_error($cerr)
diff --git a/htdocs/opensurvey/public/choix_date.php b/htdocs/opensurvey/public/choix_date.php
index 72a24357436a3c3360666e521f82a1fab8bb7ed5..faf67137942818c4726e6752809572682e3c7124 100755
--- a/htdocs/opensurvey/public/choix_date.php
+++ b/htdocs/opensurvey/public/choix_date.php
@@ -257,9 +257,9 @@ if (issetAndNoEmpty('choixjourajout')) {
 
 	// Si le test est passé, alors on insere la valeur dans la variable de session qui contient les dates
 	if ($journeuf && issetAndNoEmpty('choixjourajout') === true) {
-		array_push ($_SESSION["totalchoixjour"],mktime (0,0,0, $_SESSION["mois"], $_POST["choixjourajout"][0], $_SESSION["annee"]));
-		sort ($_SESSION["totalchoixjour"]);
-		$cle=array_search (mktime (0,0,0, $_SESSION["mois"], $_POST["choixjourajout"][0], $_SESSION["annee"]), $_SESSION["totalchoixjour"]);
+		array_push($_SESSION["totalchoixjour"],mktime (0,0,0, $_SESSION["mois"], $_POST["choixjourajout"][0], $_SESSION["annee"]));
+		sort($_SESSION["totalchoixjour"]);
+		$cle=array_search(mktime (0,0,0, $_SESSION["mois"], $_POST["choixjourajout"][0], $_SESSION["annee"]), $_SESSION["totalchoixjour"]);
 
 		//On sauvegarde les heures deja entrées
 		for ($i = 0; $i < $cle; $i++) {
diff --git a/htdocs/opensurvey/public/create_survey.php b/htdocs/opensurvey/public/create_survey.php
index c5af8db0cabc6bcb4f9ac1725feb7ac8efa075c9..f94898ac6929b88f9cb3c12cd8e645d1a2655489 100755
--- a/htdocs/opensurvey/public/create_survey.php
+++ b/htdocs/opensurvey/public/create_survey.php
@@ -162,7 +162,7 @@ print '</script>'."\n";
 
 print '<br>'."\n";
 
-#affichage du cochage par défaut
+//affichage du cochage par défaut
 $cocheplus='';
 if ($_SESSION["canedit"]) $cocheplus="checked";
 
diff --git a/htdocs/opensurvey/public/exportcsv.php b/htdocs/opensurvey/public/exportcsv.php
index b2ee0cc1eea9cb23e64188465971e632ecdc489d..a6d0b0216a4170e8c10aacf73fd5a23daea2f5b8 100755
--- a/htdocs/opensurvey/public/exportcsv.php
+++ b/htdocs/opensurvey/public/exportcsv.php
@@ -64,7 +64,7 @@ $now=dol_now();
 
 $nbcolonnes=substr_count($object->sujet,',')+1;
 $toutsujet=explode(",",$object->sujet);
-#$toutsujet=str_replace("°","'",$toutsujet);
+//$toutsujet=str_replace("°","'",$toutsujet);
 
 // affichage des sujets du sondage
 $input.=$langs->trans("Name").";";
@@ -139,15 +139,15 @@ if ($resql)
 else dol_print_error($db);
 
 
-$filesize = strlen( $input );
+$filesize = strlen($input);
 $filename=$numsondage."_".dol_print_date($now,'%Y%m%d%H%M').".csv";
 
 
 
-header( 'Content-Type: text/csv; charset=utf-8' );
-header( 'Content-Length: '.$filesize );
-header( 'Content-Disposition: attachment; filename="'.$filename.'"' );
-header( 'Cache-Control: max-age=10' );
+header('Content-Type: text/csv; charset=utf-8');
+header('Content-Length: '.$filesize);
+header('Content-Disposition: attachment; filename="'.$filename.'"');
+header('Cache-Control: max-age=10');
 echo $input;
 
 exit;
diff --git a/htdocs/public/paybox/paymentko.php b/htdocs/public/paybox/paymentko.php
index 4db0684005bf0c7e555d6a7c2316346dcd08613f..b2c3954c1e92d18332ccc62dc580f0f6504fd507 100644
--- a/htdocs/public/paybox/paymentko.php
+++ b/htdocs/public/paybox/paymentko.php
@@ -73,8 +73,7 @@ if (! empty($conf->global->MEMBER_PAYONLINE_SENDEMAIL) && preg_match('/MEM=',$fu
 		'New subscription payed',
 		$sendto,
 		$from,
-		'New subscription payed '.$fulltag
-	);
+		'New subscription payed '.$fulltag);
 
 	$result=$mailfile->sendfile();
 	if ($result)
diff --git a/htdocs/public/paybox/paymentok.php b/htdocs/public/paybox/paymentok.php
index ebd3c834d09e29ecf3c466a87dd27a2cf2c744c3..0c25e2e3039ded2533ff62dcce84cdbd48687874 100644
--- a/htdocs/public/paybox/paymentok.php
+++ b/htdocs/public/paybox/paymentok.php
@@ -103,8 +103,7 @@ if (! empty($conf->global->MEMBER_PAYONLINE_SENDEMAIL) && preg_match('/MEM=',$fu
 		'New subscription payed',
 		$sendto,
 		$from,
-		'New subscription payed '.$fulltag
-	);
+		'New subscription payed '.$fulltag);
 
 	$result=$mailfile->sendfile();
 	if ($result)
diff --git a/htdocs/public/paypal/paymentko.php b/htdocs/public/paypal/paymentko.php
index c6fe53ac7b06d80aa1ec38e7517a391fe3ceae5f..ff83d6d831a9dab59f86fdaa8faa1826397bc5e4 100755
--- a/htdocs/public/paypal/paymentko.php
+++ b/htdocs/public/paypal/paymentko.php
@@ -81,8 +81,7 @@ if (! empty($conf->global->MEMBER_PAYONLINE_SENDEMAIL) && preg_match('/MEM=',$fu
 		'New subscription payed',
 		$sendto,
 		$from,
-		'New subscription payed '.$fulltag
-	);
+		'New subscription payed '.$fulltag);
 
 	$result=$mailfile->sendfile();
 	if ($result)
diff --git a/htdocs/public/paypal/paymentok.php b/htdocs/public/paypal/paymentok.php
index ca11bcb54226d99afd37558dfb664e5fc6e594c8..0b425ea8cead6324709add1cd2c96a3c6c167bd2 100755
--- a/htdocs/public/paypal/paymentok.php
+++ b/htdocs/public/paypal/paymentok.php
@@ -140,8 +140,7 @@ if ($PAYPALTOKEN)
 			'New subscription payed',
 			$sendto,
 			$from,
-			'New subscription payed '.$fulltag
-		);
+			'New subscription payed '.$fulltag);
 
 		$result=$mailfile->sendfile();
 		if ($result)