diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php
index d7dbc008a27995505ad6a23fad474866d3bb9905..34dc813b98947d81ea88cfc95031aa4c254c6fd8 100644
--- a/htdocs/exports/export.php
+++ b/htdocs/exports/export.php
@@ -259,7 +259,7 @@ if ($step == 5 && $action == 'confirm_deletefile' && $confirm == 'yes')
 	$file = $upload_dir . "/" . GETPOST('file');	// Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
 
 	$ret=dol_delete_file($file);
-	if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs');
+	if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs');
 	else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), null, 'errors');
 	header('Location: '.$_SERVER["PHP_SELF"].'?step='.$step.'&datatoexport='.$datatoexport);
 	exit;
diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php
index 6613cd8f05cee9ab027906dcfd0f4193f6b85472..c19773653c7ca6d1ea52caeeb7fa975a60cc19e0 100644
--- a/htdocs/fourn/card.php
+++ b/htdocs/fourn/card.php
@@ -375,7 +375,7 @@ if ($object->id > 0)
 			$orders2invoice = $db->num_rows($resql2);
 			$db->free($resql2);
 		} else {
-			setEventMessage($db->lasterror(),'errors');
+			setEventMessages($db->lasterror(), null, 'errors');
 		}
 
 		// TODO move to DAO class
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 1c25e86368316a5f033c60eb60703e731e6b3f44..41837da45c94ed5e75cd631ab6afe0d4ca7fd626 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -5,7 +5,7 @@
  * Copyright (C) 2005		Marc Barilley			<marc@ocebo.fr>
  * Copyright (C) 2005-2013	Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2010-2014	Juanjo Menent			<jmenent@2byte.es>
- * Copyright (C) 2013		Philippe Grand			<philippe.grand@atoo-net.com>
+ * Copyright (C) 2013-2015	Philippe Grand			<philippe.grand@atoo-net.com>
  * Copyright (C) 2013       Florian Henry		  	<florian.henry@open-concept.pro>
  * Copyright (C) 2014       Marcos GarcĂ­a           <marcosgdf@gmail.com>
  *
@@ -128,7 +128,7 @@ if (empty($reshook))
 	        else
 	        {
 	            $langs->load("errors");
-		        setEventMessage($langs->trans($object->error), 'errors');
+		        setEventMessages($langs->trans($object->error), null, 'errors');
 	            $action='';
 	        }
 	//    }
@@ -161,7 +161,7 @@ if (empty($reshook))
 	        if (! $idwarehouse || $idwarehouse == -1)
 	        {
 	            $error++;
-		        setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse")), 'errors');
+		        setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse")), null, 'errors');
 	            $action='';
 	        }
 	    }
@@ -188,7 +188,7 @@ if (empty($reshook))
 	    }
 	    else
 	    {
-		    setEventMessage($object->error, 'errors');
+		    setEventMessages($object->error, $object->errors, 'errors');
 	    }
 	}
 
@@ -219,7 +219,7 @@ if (empty($reshook))
 		}
 		else
 		{
-			setEventMessage($object->error, 'errors');
+			setEventMessages($object->error, $object->errors, 'errors');
 			/* Fix bug 1485 : Reset action to avoid asking again confirmation on failure */
 			$action='';
 		}
@@ -231,7 +231,7 @@ if (empty($reshook))
 	    $result=$object->set_paid($user);
 	    if ($result<0)
 	    {
-	        setEventMessage($object->error,'errors');
+	        setEventMessages($object->error, $object->errors, 'errors');
 	    }
 	}
 
@@ -242,13 +242,13 @@ if (empty($reshook))
 	    if ($result < 0) dol_print_error($db, $object->error);
 	}
 
-	// conditions de reglement
+	// payments conditions
 	if ($action == 'setconditions' && $user->rights->fournisseur->commande->creer)
 	{
 	    $result=$object->setPaymentTerms(GETPOST('cond_reglement_id','int'));
 	}
 
-	// mode de reglement
+	// payment mode
 	else if ($action == 'setmode' && $user->rights->fournisseur->commande->creer)
 	{
 	    $result = $object->setPaymentMethods(GETPOST('mode_reglement_id','int'));
@@ -282,7 +282,7 @@ if (empty($reshook))
 	    if (! empty($object->date_echeance) && $object->date_echeance < $object->date)
 	    {
 	    	$object->date_echeance=$object->date;
-	    	setEventMessage($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"),'warnings');
+	    	setEventMessages($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"), null, 'warnings');
 	    }
 	    $result=$object->update($user);
 	    if ($result < 0) dol_print_error($db,$object->error);
@@ -298,7 +298,7 @@ if (empty($reshook))
 	        $result=$paiementfourn->fetch(GETPOST('paiement_id'));
 	        if ($result > 0) $result=$paiementfourn->delete(); // If fetch ok and found
 	        if ($result < 0) {
-		        setEventMessage($paiementfourn->error, 'errors');
+		        setEventMessages($paiementfourn->error, $paiementfourn->errors, 'errors');
 	        }
 	    }
 	}
@@ -313,21 +313,21 @@ if (empty($reshook))
 
 	    if (GETPOST('socid','int')<1)
 	    {
-		    setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')), 'errors');
+		    setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')), null, 'errors');
 	    	$action='create';
 	    	$error++;
 	    }
 
 	    if ($datefacture == '')
 	    {
-		    setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('DateInvoice')), 'errors');
+		    setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('DateInvoice')), null, 'errors');
 	        $action='create';
 	        $_GET['socid']=$_POST['socid'];
 	        $error++;
 	    }
 	    if (! GETPOST('ref_supplier'))
 	    {
-		    setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('RefSupplier')), 'errors');
+		    setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('RefSupplier')), null, 'errors');
 	        $action='create';
 	        $_GET['socid']=$_POST['socid'];
 	        $error++;
@@ -602,7 +602,7 @@ if (empty($reshook))
 	        else
 	        {
 	        	$db->rollback();
-	            setEventMessage($object->error,'errors');
+	            setEventMessages($object->error, $object->errors, 'errors');
 	        }
 	}
 
@@ -657,27 +657,27 @@ if (empty($reshook))
 
 	    if (GETPOST('prod_entry_mode')=='free' && GETPOST('price_ht') < 0 && $qty < 0)
 	    {
-	        setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), 'errors');
+	        setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
 	        $error++;
 	    }
 	    if (GETPOST('prod_entry_mode')=='free'  && ! GETPOST('idprodfournprice') && GETPOST('type') < 0)
 	    {
-	        setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), 'errors');
+	        setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
 	        $error++;
 	    }
 	    if (GETPOST('prod_entry_mode')=='free' && GETPOST('price_ht')==='' && GETPOST('price_ttc')==='') // Unit price can be 0 but not ''
 	    {
-	        setEventMessage($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), 'errors');
+	        setEventMessages($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), null, 'errors');
 	        $error++;
 	    }
 	    if (GETPOST('prod_entry_mode')=='free' && ! GETPOST('dp_desc'))
 	    {
-	        setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), 'errors');
+	        setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors');
 	        $error++;
 	    }
 	    if (! GETPOST('qty'))
 	    {
-	        setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors');
+	        setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
 	        $error++;
 	    }
 
@@ -727,7 +727,7 @@ if (empty($reshook))
 	            // Quantity too low
 	            $error++;
 	            $langs->load("errors");
-		        setEventMessage($langs->trans("ErrorQtyTooLowForThisSupplier"), 'errors');
+		        setEventMessages($langs->trans("ErrorQtyTooLowForThisSupplier"), null, 'errors');
 	        }
 	    }
 	    else if( GETPOST('price_ht')!=='' || GETPOST('price_ttc')!=='' )
@@ -820,7 +820,7 @@ if (empty($reshook))
 	    else
 		{
 	    	$db->rollback();
-		    setEventMessage($object->error, 'errors');
+		    setEventMessages($object->error, $object->errors, 'errors');
 	    }
 
 	    $action = '';
@@ -886,7 +886,7 @@ if (empty($reshook))
 	        }
 	        else
 	        {
-		        setEventMessage($object->error, 'errors');
+		        setEventMessages($object->error, $object->errors, 'errors');
 	        }
 	    }
 	}
@@ -995,7 +995,7 @@ if (empty($reshook))
                 $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt,-1);
                 if ($mailfile->error)
                 {
-                    setEventMessage($mailfile->error,'errors');
+                    setEventMessages($mailfile->error, $mailfile->errors, 'errors');
                 }
                 else
                 {
@@ -1003,7 +1003,7 @@ if (empty($reshook))
                     if ($result)
                     {
                         $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2));		// Must not contain "
-                        setEventMessage($mesg);
+                        setEventMessages($mesg, null, 'mesgs');
 
                         $error=0;
 
@@ -1048,7 +1048,7 @@ if (empty($reshook))
                         {
                             $mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS';
                         }
-	                    setEventMessage($mesg, 'errors');
+	                    setEventMessages($mesg, null, 'errors');
                     }
                 }
             }
@@ -1056,14 +1056,14 @@ if (empty($reshook))
             else
             {
                 $langs->load("other");
-	            setEventMessage($langs->trans('ErrorMailRecipientIsEmpty'), 'errors');
+	            setEventMessages($langs->trans('ErrorMailRecipientIsEmpty'), null, 'errors');
                 dol_syslog('Recipient email is empty');
             }
 	    }
 	    else
 	    {
 	        $langs->load("other");
-		    setEventMessage($langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")), 'errors');
+		    setEventMessages($langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")), null, 'errors');
 	        dol_syslog('Unable to read data from the invoice. The invoice file has perhaps not been generated.');
 	    }
 
@@ -1120,8 +1120,8 @@ if (empty($reshook))
 	        $upload_dir =	$conf->fournisseur->facture->dir_output . "/";
 	        $file =	$upload_dir	. '/' .	GETPOST('file');
 	        $ret=dol_delete_file($file,0,0,0,$object);
-	        if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
-	        else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
+	        if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs');
+	        else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors');
 	    }
 	}
 
@@ -1185,11 +1185,11 @@ if (empty($reshook))
 				if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
 				{
 					$langs->load("errors");
-					setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors');
+					setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors');
 				}
 				else
 				{
-					setEventMessage($object->error, 'errors');
+					setEventMessages($object->error, $object->errors, 'errors');
 				}
 			}
 		}
@@ -1524,7 +1524,7 @@ if ($action == 'create')
         $cntinvoice=count($objectsrc->linkedObjects['invoice_supplier']);
         if ($cntinvoice>=1)
         {
-        	setEventMessage('WarningBillExist','warnings');
+        	setEventMessages('WarningBillExist', null, 'warnings');
         	echo ' ('.$langs->trans('LatestRelatedBill').end($objectsrc->linkedObjects['invoice_supplier'])->getNomUrl(1).')';
         }
         echo '</td></tr>';
diff --git a/htdocs/fourn/facture/contact.php b/htdocs/fourn/facture/contact.php
index 7348f3b75907205bd9075966155f4965582f416c..664101848a637ddad30860cf7fe4ae7ea0ae6cee 100644
--- a/htdocs/fourn/facture/contact.php
+++ b/htdocs/fourn/facture/contact.php
@@ -69,11 +69,11 @@ if ($action == 'addcontact' && $user->rights->fournisseur->facture->creer)
 		if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
 		{
 			$langs->load("errors");
-			setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors');
+			setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors');
 		}
 		else
 		{
-			setEventMessage($object->error, 'errors');
+			setEventMessages($object->error, $object->errors, 'errors');
 		}
 	}
 }
diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php
index 82bccf3df19b4a6cf9e3325ec3ffad1e6e9dcf25..d500f8eceb199962144ac4336fc38c3b5089588a 100644
--- a/htdocs/fourn/facture/paiement.php
+++ b/htdocs/fourn/facture/paiement.php
@@ -117,7 +117,7 @@ if (empty($reshook))
 		            {
 		            	$langs->load("errors");
 		                //$error++;
-		                setEventMessage($langs->transnoentities("WarningPaymentDateLowerThanInvoiceDate", dol_print_date($datepaye,'day'), dol_print_date($tmpinvoice->date, 'day'), $tmpinvoice->ref), 'warnings');
+		                setEventMessages($langs->transnoentities("WarningPaymentDateLowerThanInvoiceDate", dol_print_date($datepaye,'day'), dol_print_date($tmpinvoice->date, 'day'), $tmpinvoice->ref), null, 'warnings');
 		            }
 	            }
 
@@ -128,7 +128,7 @@ if (empty($reshook))
 	    // Check parameters
 	    if ($_POST['paiementid'] <= 0)
 	    {
-	    	setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('PaymentMode')), 'errors');
+	    	setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('PaymentMode')), null, 'errors');
 	        $error++;
 	    }
 
@@ -137,20 +137,20 @@ if (empty($reshook))
 	        // If bank module is on, account is required to enter a payment
 	        if (GETPOST('accountid') <= 0)
 	        {
-	        	setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), 'errors');
+	        	setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), null, 'errors');
 	            $error++;
 	        }
 	    }
 
 	    if (empty($totalpayment) && empty($atleastonepaymentnotnull))
 	    {
-	    	setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')), 'errors');
+	    	setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')), null, 'errors');
 	        $error++;
 	    }
 
 	    if (empty($datepaye))
 	    {
-	    	setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('Date')), 'errors');
+	    	setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('Date')), null, 'errors');
 	        $error++;
 	    }
 	}
@@ -193,7 +193,7 @@ if (empty($reshook))
 	            $paiement_id = $paiement->create($user,(GETPOST('closepaidinvoices')=='on'?1:0));
 	            if ($paiement_id < 0)
 	            {
-	            	setEventMessage($paiement->error, 'errors');
+	            	setEventMessages($paiement->error, $paiement->errors, 'errors');
 	                $error++;
 	            }
 	        }
@@ -203,7 +203,7 @@ if (empty($reshook))
 	            $result=$paiement->addPaymentToBank($user,'payment_supplier','(SupplierInvoicePayment)',$accountid,'','');
 	            if ($result < 0)
 	            {
-	            	setEventMessage($paiement->error, 'errors');
+	            	setEventMessages($paiement->error, $paiement->errors, 'errors');
 	                $error++;
 	            }
 	        }
diff --git a/htdocs/fourn/paiement/card.php b/htdocs/fourn/paiement/card.php
index de070a2b3b089bfd93c2e88a003e068b74d52736..f3295bf744c89a3572b87aed3fe1f74d1fddf377 100644
--- a/htdocs/fourn/paiement/card.php
+++ b/htdocs/fourn/paiement/card.php
@@ -59,7 +59,7 @@ if ($action == 'setnote' && $user->rights->fournisseur->facture->creer)
     }
     else
     {
-	    setEventMessage($object->error, 'errors');
+	    setEventMessages($object->error, $object->errors, 'errors');
         $db->rollback();
     }
 }
@@ -78,7 +78,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->fournisse
 	}
 	else
 	{
-		setEventMessage($object->error, 'errors');
+		setEventMessages($object->error, $object->errors, 'errors');
 		$db->rollback();
 	}
 }
@@ -99,7 +99,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' &&
 	}
 	else
 	{
-		setEventMessage($object->error, 'errors');
+		setEventMessages($object->error, $object->errors, 'errors');
 		$db->rollback();
 	}
 }
@@ -110,11 +110,11 @@ if ($action == 'setnum_paiement' && ! empty($_POST['num_paiement']))
     $res = $object->update_num($_POST['num_paiement']);
 	if ($res === 0)
 	{
-		setEventMessage($langs->trans('PaymentNumberUpdateSucceeded'));
+		setEventMessages($langs->trans('PaymentNumberUpdateSucceeded'), null, 'mesgs');
 	}
 	else
 	{
-		setEventMessage($langs->trans('PaymentNumberUpdateFailed'), 'errors');
+		setEventMessages($langs->trans('PaymentNumberUpdateFailed'), null, 'errors');
 	}
 }
 
@@ -125,11 +125,11 @@ if ($action == 'setdatep' && ! empty($_POST['datepday']))
 	$res = $object->update_date($datepaye);
 	if ($res === 0)
 	{
-		setEventMessage($langs->trans('PaymentDateUpdateSucceeded'));
+		setEventMessages($langs->trans('PaymentDateUpdateSucceeded'), null, 'mesgs');
 	}
 	else
 	{
-		setEventMessage($langs->trans('PaymentDateUpdateFailed'), 'errors');
+		setEventMessages($langs->trans('PaymentDateUpdateFailed'), null, 'errors');
 	}
 }