diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php
index ac353478aacf99e14c7a1d932c393784bc9916a0..5b0d0bf9ee6b802664840cbeb7738ccb1b818cfb 100644
--- a/htdocs/fourn/facture/fiche.php
+++ b/htdocs/fourn/facture/fiche.php
@@ -117,17 +117,30 @@ if ($_POST['action'] == 'update' && ! $_POST['cancel'])
 	$result = $db->query( $sql);
 }
 /*
- * Action cr�ation
+ * Action creation
  */
 if ($_POST['action'] == 'add' && $user->rights->fournisseur->facture->creer)
 {
-	if ($_POST['facnumber'])
+	$datefacture=dolibarr_mktime(12,0,0,$_POST['remonth'],$_POST['reday'],$_POST['reyear']);
+	$datedue=dolibarr_mktime(12,0,0,$_POST['echmonth'],$_POST['echday'],$_POST['echyear']);
+	
+	if ($datefacture == '')
+	{
+		$mesg='<div class="error">'.$langs->trans('ErrorFieldRequired',$langs->transnoentities('DateInvoice')).'</div>';
+		$_GET['action']='create';
+		$_GET['socid']=$_POST['socid'];
+		$error++;
+	}
+	if (empty($_POST['facnumber']))
 	{
-		$datefacture = dolibarr_mktime(12,0,0,
-			$_POST['remonth'],
-			$_POST['reday'],
-			$_POST['reyear']);
+		$mesg='<div class="error">'.$langs->trans('ErrorFieldRequired',$langs->transnoentities('RefSupplier')).'</div>';
+		$_GET['action']='create';
+		$_GET['socid']=$_POST['socid'];
+		$error++;
+	}
 
+	if (! $error)		
+	{
 		$db->begin();
 
 		// Creation facture
@@ -137,7 +150,7 @@ if ($_POST['action'] == 'add' && $user->rights->fournisseur->facture->creer)
 		$facfou->socid         = $_POST['socid'];
 		$facfou->libelle       = $_POST['libelle'];
 		$facfou->date          = $datefacture;
-		$facfou->date_echeance = dolibarr_mktime(12,0,0,$_POST['echmonth'],$_POST['echday'],$_POST['echyear']);
+		$facfou->date_echeance = $datedue;
 		$facfou->note          = $_POST['note'];
 
 		$facid = $facfou->create($user);
@@ -190,12 +203,6 @@ if ($_POST['action'] == 'add' && $user->rights->fournisseur->facture->creer)
 			$_GET['socid']=$_POST['socid'];
 		}
 	}
-	else
-	{
-		$mesg='<div class="error">'.$langs->trans('ErrorFieldRequired',$langs->transnoentities('RefSupplier')).'</div>';
-		$_GET['action']='create';
-		$_GET['socid']=$_POST['socid'];
-	}
 }
 
 if ($_GET['action'] == 'del_ligne')
@@ -337,11 +344,17 @@ if ($_GET['action'] == 'create' or $_GET['action'] == 'copy')
 		$societe->fetch($_GET['socid']);
 	}
 
+	$datefacture=dolibarr_mktime(12,0,0,$_POST['remonth'],$_POST['reday'],$_POST['reyear']);
+	$datedue=dolibarr_mktime(12,0,0,$_POST['echmonth'],$_POST['echday'],$_POST['echyear']);
+	
+	$dateinvoice=($datefacture==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0):$datefacture);
+	
 	print '<form name="add" action="fiche.php" method="post">';
 	print '<input type="hidden" name="action" value="add">';
 	print '<table class="border" width="100%">';
+	
+	// Third party
 	print '<tr><td>'.$langs->trans('Company').'</td>';
-
 	print '<td>';
 
 	if ($_GET['socid'])
@@ -356,26 +369,17 @@ if ($_GET['action'] == 'create' or $_GET['action'] == 'copy')
 	print '</td>';
 	print '<td width="50%">'.$langs->trans('NotePublic').'</td></tr>';
 
-	if($_GET['action'] == 'copy'){
-		print '<tr><td>'.$langs->trans('RefSupplier').'</td><td><input name="facnumber" value="'.$fac_ori->ref.'" type="text"></td>';
-	}else{
-		print '<tr><td>'.$langs->trans('RefSupplier').'</td><td><input name="facnumber" type="text"></td>';
-	}
-
+	print '<tr><td>'.$langs->trans('RefSupplier').'</td><td><input name="facnumber" value="'.(isset($_POST['facnumber'])?$_POST['facnumber']:$fac_ori->ref).'" type="text"></td>';
 	print '<td width="50%" rowspan="4" valign="top"><textarea name="note" wrap="soft" cols="60" rows="'.ROWS_5.'"></textarea></td></tr>';
-	if ($_GET['action'] == 'copy')
-	{
-		print '<tr><td>'.$langs->trans('Label').'</td><td><input size="30" name="libelle" value="'.$fac_ori->libelle.'" type="text"></td></tr>';
-	}
-	else
-	{
-		print '<tr><td>'.$langs->trans('Label').'</td><td><input size="30" name="libelle" type="text"></td></tr>';
-	}
 
+	print '<tr><td>'.$langs->trans('Label').'</td><td><input size="30" name="libelle" value="'.(isset($_POST['libelle'])?$_POST['libelle']:$fac_ori->libelle).'" type="text"></td></tr>';
+
+	// Date invoice
 	print '<tr><td>'.$langs->trans('DateInvoice').'</td><td>';
-	$html->select_date('','','','','',"add");
+	$html->select_date($dateinvoice,'','','','',"add");
 	print '</td></tr>';
 
+	// Due date
 	print '<tr><td>'.$langs->trans('DateEcheance').'</td><td>';
 	$html->select_date('','ech','','','',"add");
 	print '</td></tr>';