diff --git a/htdocs/comm/askpricesupplier/card.php b/htdocs/comm/askpricesupplier/card.php
index 3fe244c739681bff6217d5cedc1db38bcc4e00fe..51368cb09a71e61fb12729e255eaa514dce9db49 100644
--- a/htdocs/comm/askpricesupplier/card.php
+++ b/htdocs/comm/askpricesupplier/card.php
@@ -1761,7 +1761,7 @@ if ($action == 'create')
 			$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 			if ($result <= 0)
 			{
-				dol_print_error($db, $result);
+				dol_print_error($db, $object->error, $object->errors);
 				exit();
 			}
 			$fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index 4b9f84553ce5cd67f7cabcf21a57b7ee03e78214..5c3b77fc391652185fa5717cccd2da04dee60511 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -2327,7 +2327,7 @@ if ($action == 'create')
 		if (! $file || ! is_readable($file)) {
 			$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 			if ($result <= 0) {
-				dol_print_error($db, $result);
+				dol_print_error($db, $object->error, $object->errors);
 				exit();
 			}
 			$fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 5c860eee1f67fae9260f4e8657689475f0e7ce5f..bd76ec1646ddf8eb0a758355f3bab636621c1661 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -2360,7 +2360,7 @@ if ($action == 'create' && $user->rights->commande->creer)
 			if (! $file || ! is_readable($file)) {
 				$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 				if ($result <= 0) {
-					dol_print_error($db, $result);
+					dol_print_error($db, $object->error, $object->errors);
 					exit();
 				}
 				$fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 927819843a4117f2c1cb237105b1060be4307837..33734d2a84ba9dc31a90c95586f1581f0732cffb 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -442,7 +442,7 @@ if (empty($reshook))
 					$ret = $object->fetch($id); // Reload to get new records
 
 					$result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
-	    			if ($result < 0) dol_print_error($db,$result);
+	    			if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
 				}
 			}
 			else
@@ -1421,10 +1421,7 @@ if (empty($reshook))
 						$ret = $object->fetch($id); // Reload to get new records
 
 						$result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
-						if ($result < 0)
-						{
-							setEventMessages($object->error, $object->errors, 'errors');
-						}
+						if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
 					}
 
 					unset($_POST['prod_entry_mode']);
@@ -3809,7 +3806,7 @@ else if ($id > 0 || ! empty($ref))
 		if (! $file || ! is_readable($file)) {
 			$result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 			if ($result <= 0) {
-				dol_print_error($db, $result);
+				dol_print_error($db, $object->error, $object->errors);
 				exit();
 			}
 			$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index ed80a1526650fda69b6be261e6621cf94b726156..a4136d880f08e8a7f3979827ff66cc36675bac38 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -3470,11 +3470,20 @@ abstract class CommonObject
 
 				if (empty($srctemplatepath))
 				{
-					$this->error='ErrorGenerationAskedForOdtTemplateWithNoSrcFileFound';
+					$this->error='ErrorGenerationAskedForOdtTemplateWithSrcFileNotDefined';
 					return -1;
 				}
 			}
 
+            if ($obj->type == 'odt' && ! empty($srctemplatepath))
+            {
+                if (! dol_is_file($srctemplatepath))
+                {
+                    $this->error='ErrorGenerationAskedForOdtTemplateWithSrcFileNotFound';
+                    return -1;
+                }
+            }
+    
 			// We save charset_output to restore it because write_file can change it if needed for
 			// output format that does not support UTF8.
 			$sav_charset_output=$outputlangs->charset_output;
diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php
index e72af4de60105c384b8bd804394d4ffd55153165..1b871136235c5805ba3280867c938c3f149051e2 100644
--- a/htdocs/expedition/card.php
+++ b/htdocs/expedition/card.php
@@ -1597,7 +1597,7 @@ else if ($id || $ref)
 			$result = $object->generateDocument(GETPOST('model')?GETPOST('model'):$object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 			if ($result <= 0)
 			{
-				dol_print_error($db,$result);
+				dol_print_error($db,$object->error,$object->errors);
 				exit;
 			}
 			$fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref, '/').'[^\-]+');
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 38d11843714b240a636cf1f5131f81e7a476636b..6032a7a5036ba6b59b952b524aca1d13c8ba16d5 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -526,7 +526,7 @@ if (empty($reshook))
 		            $result = $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 	            	if ($result	<= 0)
 	            	{
-	            		dol_print_error($db,$result);
+	            		dol_print_error($db,$object->error,$object->errors);
 	            		exit;
 	            	}
 	            }
@@ -2296,7 +2296,7 @@ else
 	            $result = $object->generateDocument(GETPOST('model')?GETPOST('model'):$object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
                 if ($result <= 0)
                 {
-                    dol_print_error($db,$result);
+                    dol_print_error($db,$object->error,$object->errors);
                     exit;
                 }
                 $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/').'([^\-])+');