From cae761d522642888fbe409b21d04aafd3fc52f39 Mon Sep 17 00:00:00 2001
From: fhenry <florian.henry@open-concept.pro>
Date: Sat, 20 Apr 2013 17:10:03 +0200
Subject: [PATCH] [ task #640 ] Better deposit invoice management

---
 htdocs/compta/facture.php     | 3557 +++++++++++++++++----------------
 htdocs/langs/en_US/bills.lang |    2 +
 htdocs/langs/es_ES/bills.lang |    2 +
 htdocs/langs/fr_FR/bills.lang |    2 +
 4 files changed, 1824 insertions(+), 1739 deletions(-)

diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 590901a937a..2a02522bbcc 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -794,6 +794,8 @@ else if ($action == 'add' && $user->rights->facture->creer)
 		}
 	}
 
+
+
 	// Standard or deposit or proforma invoice
 	if (($_POST['type'] == 0 || $_POST['type'] == 3 || $_POST['type'] == 4) && $_POST['fac_rec'] <= 0)
 	{
@@ -872,126 +874,197 @@ else if ($action == 'add' && $user->rights->facture->creer)
 
 				if ($id > 0)
 				{
-					dol_include_once('/'.$element.'/class/'.$subelement.'.class.php');
-
-					$classname = ucfirst($subelement);
-					$srcobject = new $classname($db);
-
-					dol_syslog("Try to find source object origin=".$object->origin." originid=".$object->origin_id." to add lines");
-					$result=$srcobject->fetch($object->origin_id);
-					if ($result > 0)
-					{
-						$lines = $srcobject->lines;
-						if (empty($lines) && method_exists($srcobject,'fetch_lines'))  $lines = $srcobject->fetch_lines();
-
-						$fk_parent_line=0;
-						$num=count($lines);
-
-						for ($i=0;$i<$num;$i++)
-						{
-							$label=(! empty($lines[$i]->label)?$lines[$i]->label:'');
-							$desc=(! empty($lines[$i]->desc)?$lines[$i]->desc:$lines[$i]->libelle);
-
-							if ($lines[$i]->subprice < 0)
+					//If deposit invoice
+					if ($_POST['type'] == 3) {
+						$typeamount=GETPOST('typedeposit','alpha');
+						$valuedeposit=GETPOST('valuedeposit','int');
+						
+						if ($typeamount=='amount') {
+							$amountdeposit=$valuedeposit;
+						}else {
+							$amountdeposit=0;
+							
+							dol_include_once('/'.$element.'/class/'.$subelement.'.class.php');
+							
+							$classname = ucfirst($subelement);
+							$srcobject = new $classname($db);
+							
+							dol_syslog("Try to find source object origin=".$object->origin." originid=".$object->origin_id." to add deposit line");
+							$result=$srcobject->fetch($object->origin_id);
+							if ($result > 0)
 							{
-								// Negative line, we create a discount line
-								$discount = new DiscountAbsolute($db);
-								$discount->fk_soc=$object->socid;
-								$discount->amount_ht=abs($lines[$i]->total_ht);
-								$discount->amount_tva=abs($lines[$i]->total_tva);
-								$discount->amount_ttc=abs($lines[$i]->total_ttc);
-								$discount->tva_tx=$lines[$i]->tva_tx;
-								$discount->fk_user=$user->id;
-								$discount->description=$desc;
-								$discountid=$discount->create($user);
-								if ($discountid > 0)
+								$totalamount=0;
+								$lines = $srcobject->lines;
+								$num=count($lines);
+								for ($i=0;$i<$num;$i++)
 								{
-									$result=$object->insert_discount($discountid);    // This include link_to_invoice
+									$totalamount=+$lines[$i]->subprice;
 								}
-								else
-								{
-									$mesgs[]=$discount->error;
-									$error++;
-									break;
+								
+								if ($totalamount!=0) {
+									$amountdeposit=($totalamount*$valuedeposit)/100;
 								}
 							}
 							else
 							{
-								// Positive line
-								$product_type=($lines[$i]->product_type?$lines[$i]->product_type:0);
-
-								// Date start
-								$date_start=false;
-								if ($lines[$i]->date_debut_prevue) $date_start=$lines[$i]->date_debut_prevue;
-								if ($lines[$i]->date_debut_reel) $date_start=$lines[$i]->date_debut_reel;
-								if ($lines[$i]->date_start) $date_start=$lines[$i]->date_start;
-
-								//Date end
-								$date_end=false;
-								if ($lines[$i]->date_fin_prevue) $date_end=$lines[$i]->date_fin_prevue;
-								if ($lines[$i]->date_fin_reel) $date_end=$lines[$i]->date_fin_reel;
-								if ($lines[$i]->date_end) $date_end=$lines[$i]->date_end;
-
-								// Reset fk_parent_line for no child products and special product
-								if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
-									$fk_parent_line = 0;
-								}
+								$mesgs[]=$srcobject->error;
+								$error++;
+							}
+							
+						}
+						
+						$result = $object->addline(
+							$id,
+							$langs->trans('Deposit'),
+							$amountdeposit, //subprice
+							1, //quantity
+							$lines[$i]->tva_tx,
+							0, //localtax1_tx
+							0, //localtax2_tx
+							0, //fk_product
+							0, //remise_percent
+							0, //date_start
+							0, //date_end
+							0,
+							$lines[$i]->info_bits, //info_bits
+							0, //info_bits
+							'HT',
+							0,
+							0, //product_type
+							1,
+							$lines[$i]->special_code,
+							$object->origin,
+							0,
+							0,
+							0,
+							0,
+							$langs->trans('Deposit')
+						);
+						
+
+					}else {
+
+						dol_include_once('/'.$element.'/class/'.$subelement.'.class.php');
+
+						$classname = ucfirst($subelement);
+						$srcobject = new $classname($db);
+
+						dol_syslog("Try to find source object origin=".$object->origin." originid=".$object->origin_id." to add lines");
+						$result=$srcobject->fetch($object->origin_id);
+						if ($result > 0)
+						{
+							$lines = $srcobject->lines;
+							if (empty($lines) && method_exists($srcobject,'fetch_lines'))  $lines = $srcobject->fetch_lines();
+
+							$fk_parent_line=0;
+							$num=count($lines);
 
-								$result = $object->addline(
-									$id,
-									$desc,
-									$lines[$i]->subprice,
-									$lines[$i]->qty,
-									$lines[$i]->tva_tx,
-									$lines[$i]->localtax1_tx,
-									$lines[$i]->localtax2_tx,
-									$lines[$i]->fk_product,
-									$lines[$i]->remise_percent,
-									$date_start,
-									$date_end,
-									0,
-									$lines[$i]->info_bits,
-									$lines[$i]->fk_remise_except,
-									'HT',
-									0,
-									$product_type,
-									$lines[$i]->rang,
-									$lines[$i]->special_code,
-									$object->origin,
-									$lines[$i]->rowid,
-									$fk_parent_line,
-									$lines[$i]->fk_fournprice,
-									$lines[$i]->pa_ht,
-									$label
-								);
-
-								if ($result > 0)
+							for ($i=0;$i<$num;$i++)
+							{
+								$label=(! empty($lines[$i]->label)?$lines[$i]->label:'');
+								$desc=(! empty($lines[$i]->desc)?$lines[$i]->desc:$lines[$i]->libelle);
+
+								if ($lines[$i]->subprice < 0)
 								{
-									$lineid=$result;
+									// Negative line, we create a discount line
+									$discount = new DiscountAbsolute($db);
+									$discount->fk_soc=$object->socid;
+									$discount->amount_ht=abs($lines[$i]->total_ht);
+									$discount->amount_tva=abs($lines[$i]->total_tva);
+									$discount->amount_ttc=abs($lines[$i]->total_ttc);
+									$discount->tva_tx=$lines[$i]->tva_tx;
+									$discount->fk_user=$user->id;
+									$discount->description=$desc;
+									$discountid=$discount->create($user);
+									if ($discountid > 0)
+									{
+										$result=$object->insert_discount($discountid);    // This include link_to_invoice
+									}
+									else
+									{
+										$mesgs[]=$discount->error;
+										$error++;
+										break;
+									}
 								}
 								else
 								{
-									$lineid=0;
-									$error++;
-									break;
-								}
+									// Positive line
+									$product_type=($lines[$i]->product_type?$lines[$i]->product_type:0);
+
+									// Date start
+									$date_start=false;
+									if ($lines[$i]->date_debut_prevue) $date_start=$lines[$i]->date_debut_prevue;
+									if ($lines[$i]->date_debut_reel) $date_start=$lines[$i]->date_debut_reel;
+									if ($lines[$i]->date_start) $date_start=$lines[$i]->date_start;
+
+									//Date end
+									$date_end=false;
+									if ($lines[$i]->date_fin_prevue) $date_end=$lines[$i]->date_fin_prevue;
+									if ($lines[$i]->date_fin_reel) $date_end=$lines[$i]->date_fin_reel;
+									if ($lines[$i]->date_end) $date_end=$lines[$i]->date_end;
+
+									// Reset fk_parent_line for no child products and special product
+									if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
+										$fk_parent_line = 0;
+									}
+
+									$result = $object->addline(
+										$id,
+										$desc,
+										$lines[$i]->subprice,
+										$lines[$i]->qty,
+										$lines[$i]->tva_tx,
+										$lines[$i]->localtax1_tx,
+										$lines[$i]->localtax2_tx,
+										$lines[$i]->fk_product,
+										$lines[$i]->remise_percent,
+										$date_start,
+										$date_end,
+										0,
+										$lines[$i]->info_bits,
+										$lines[$i]->fk_remise_except,
+										'HT',
+										0,
+										$product_type,
+										$lines[$i]->rang,
+										$lines[$i]->special_code,
+										$object->origin,
+										$lines[$i]->rowid,
+										$fk_parent_line,
+										$lines[$i]->fk_fournprice,
+										$lines[$i]->pa_ht,
+										$label
+									);
+
+									if ($result > 0)
+									{
+										$lineid=$result;
+									}
+									else
+									{
+										$lineid=0;
+										$error++;
+										break;
+									}
 
-								// Defined the new fk_parent_line
-								if ($result > 0 && $lines[$i]->product_type == 9) {
-									$fk_parent_line = $result;
+									// Defined the new fk_parent_line
+									if ($result > 0 && $lines[$i]->product_type == 9) {
+										$fk_parent_line = $result;
+									}
 								}
 							}
-						}
 
-						// Hooks
-						$parameters=array('objFrom'=>$srcobject);
-						$reshook=$hookmanager->executeHooks('createFrom',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
-						if ($reshook < 0) $error++;
-					}
-					else
-					{
-						$mesgs[]=$srcobject->error;
-						$error++;
+							// Hooks
+							$parameters=array('objFrom'=>$srcobject);
+							$reshook=$hookmanager->executeHooks('createFrom',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
+							if ($reshook < 0) $error++;
+						}
+						else
+						{
+							$mesgs[]=$srcobject->error;
+							$error++;
+						}
 					}
 				}
 				else
@@ -1513,7 +1586,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
 		//        $file = $conf->facture->dir_output . '/' . $ref . '/' . $ref . '.pdf';
 
 		//        if (is_readable($file))
-			//        {
+		//        {
 		if ($_POST['sendto'])
 		{
 			// Le destinataire a ete fourni via le champ libre
@@ -1658,2055 +1731,2061 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
 			$mesgs[]='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>';
 			dol_syslog('Failed to read file: '.$file);
 		}
-			}
-			else
-			{
-				$langs->load("other");
-				$mesgs[]='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>';
-				dol_syslog('Impossible de lire les donnees de la facture. Le fichier facture n\'a peut-etre pas ete genere.');
-			}
+	}
+	else
+	{
+		$langs->load("other");
+		$mesgs[]='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>';
+		dol_syslog('Impossible de lire les donnees de la facture. Le fichier facture n\'a peut-etre pas ete genere.');
+	}
 
-			$action = 'presend';
+	$action = 'presend';
+}
+
+/*
+ * Generate document
+*/
+else if ($action == 'builddoc')	// En get ou en post
+{
+	$object->fetch($id);
+	$object->fetch_thirdparty();
+
+	if (GETPOST('model'))   $object->setDocModel($user, GETPOST('model'));
+	if (GETPOST('fk_bank')) $object->fk_bank=GETPOST('fk_bank');
+
+	// Define output language
+	$outputlangs = $langs;
+	$newlang='';
+	if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id');
+	if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
+	if (! empty($newlang))
+	{
+		$outputlangs = new Translate("",$conf);
+		$outputlangs->setDefaultLang($newlang);
+	}
+	$result=facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
+	if ($result <= 0)
+	{
+		dol_print_error($db,$result);
+		exit;
+	}
+	else
+	{
+		header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$object->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc'));
+		exit;
 	}
+}
 
-	/*
-	 * Generate document
-	*/
-	else if ($action == 'builddoc')	// En get ou en post
+// Remove file in doc form
+else if ($action == 'remove_file')
+{
+	if ($object->fetch($id))
 	{
-		$object->fetch($id);
+		require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+
 		$object->fetch_thirdparty();
 
-		if (GETPOST('model'))   $object->setDocModel($user, GETPOST('model'));
-		if (GETPOST('fk_bank')) $object->fk_bank=GETPOST('fk_bank');
+		$langs->load("other");
+		$upload_dir = $conf->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');
+		$action='';
+	}
+}
+
+if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->facture->creer)
+{
+	if ($action == 'addcontact')
+	{
+		$result = $object->fetch($id);
 
-		// Define output language
-		$outputlangs = $langs;
-		$newlang='';
-		if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id');
-		if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
-		if (! empty($newlang))
+		if ($result > 0 && $id > 0)
 		{
-			$outputlangs = new Translate("",$conf);
-			$outputlangs->setDefaultLang($newlang);
+			$contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+			$result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
 		}
-		$result=facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
-		if ($result <= 0)
+
+		if ($result >= 0)
 		{
-			dol_print_error($db,$result);
+			header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
 			exit;
 		}
 		else
 		{
-			header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$object->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc'));
-			exit;
+			if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
+			{
+				$langs->load("errors");
+				$mesgs[] = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
+			}
+			else
+			{
+				$mesgs[] = '<div class="error">'.$object->error.'</div>';
+			}
 		}
 	}
 
-	// Remove file in doc form
-	else if ($action == 'remove_file')
+	// bascule du statut d'un contact
+	else if ($action == 'swapstatut')
 	{
 		if ($object->fetch($id))
 		{
-			require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
-
-			$object->fetch_thirdparty();
-
-			$langs->load("other");
-			$upload_dir = $conf->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');
-			$action='';
+			$result=$object->swapContactStatus(GETPOST('ligne'));
+		}
+		else
+		{
+			dol_print_error($db);
 		}
 	}
 
-	if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->facture->creer)
+	// Efface un contact
+	else if ($action == 'deletecontact')
 	{
-		if ($action == 'addcontact')
-		{
-			$result = $object->fetch($id);
-
-			if ($result > 0 && $id > 0)
-			{
-				$contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
-				$result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
-			}
-
-			if ($result >= 0)
-			{
-				header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
-				exit;
-			}
-			else
-			{
-				if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
-				{
-					$langs->load("errors");
-					$mesgs[] = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
-				}
-				else
-				{
-					$mesgs[] = '<div class="error">'.$object->error.'</div>';
-				}
-			}
-		}
+		$object->fetch($id);
+		$result = $object->delete_contact($lineid);
 
-		// bascule du statut d'un contact
-		else if ($action == 'swapstatut')
+		if ($result >= 0)
 		{
-			if ($object->fetch($id))
-			{
-				$result=$object->swapContactStatus(GETPOST('ligne'));
-			}
-			else
-			{
-				dol_print_error($db);
-			}
+			header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
+			exit;
 		}
-
-		// Efface un contact
-		else if ($action == 'deletecontact')
-		{
-			$object->fetch($id);
-			$result = $object->delete_contact($lineid);
-
-			if ($result >= 0)
-			{
-				header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
-				exit;
-			}
-			else {
-				dol_print_error($db);
-			}
+		else {
+			dol_print_error($db);
 		}
 	}
+}
 
-	if ($action == 'update_extras')
+if ($action == 'update_extras')
+{
+	// Fill array 'array_options' with data from add form
+	$extralabels=$extrafields->fetch_name_optionals_label('facture');
+	$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
+
+	// Actions on extra fields (by external module or standard code)
+	// FIXME le hook fait double emploi avec le trigger !!
+	$hookmanager->initHooks(array('invoicedao'));
+	$parameters=array('id'=>$object->id);
+	$reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
+	if (empty($reshook))
 	{
-		// Fill array 'array_options' with data from add form
-		$extralabels=$extrafields->fetch_name_optionals_label('facture');
-		$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
-
-		// Actions on extra fields (by external module or standard code)
-		// FIXME le hook fait double emploi avec le trigger !!
-		$hookmanager->initHooks(array('invoicedao'));
-		$parameters=array('id'=>$object->id);
-		$reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
-		if (empty($reshook))
+		if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
 		{
-			if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
+			$result=$object->insertExtraFields();
+			if ($result < 0)
 			{
-				$result=$object->insertExtraFields();
-				if ($result < 0)
-				{
-					$error++;
-				}
+				$error++;
 			}
 		}
-		else if ($reshook < 0) $error++;
-
 	}
+	else if ($reshook < 0) $error++;
 
+}
 
-	/*
-	 * View
-	*/
 
-	$form = new Form($db);
-	$formother=new FormOther($db);
-	$formfile = new FormFile($db);
-	$bankaccountstatic=new Account($db);
-	$now=dol_now();
+/*
+ * View
+*/
 
-	llxHeader('',$langs->trans('Bill'),'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes');
+$form = new Form($db);
+$formother=new FormOther($db);
+$formfile = new FormFile($db);
+$bankaccountstatic=new Account($db);
+$now=dol_now();
 
+llxHeader('',$langs->trans('Bill'),'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes');
 
 
-	/*********************************************************************
-	 *
-	* Mode creation
-	*
-	**********************************************************************/
-	if ($action == 'create')
-	{
-		$facturestatic=new Facture($db);
-		$extralabels=$extrafields->fetch_name_optionals_label('facture');
 
-		print_fiche_titre($langs->trans('NewBill'));
+/*********************************************************************
+ *
+* Mode creation
+*
+**********************************************************************/
+if ($action == 'create')
+{
+	$facturestatic=new Facture($db);
+	$extralabels=$extrafields->fetch_name_optionals_label('facture');
 
-		$soc = new Societe($db);
-		if ($socid>0) $res=$soc->fetch($socid);
+	print_fiche_titre($langs->trans('NewBill'));
 
-		if (! empty($origin) && ! empty($originid))
+	$soc = new Societe($db);
+	if ($socid>0) $res=$soc->fetch($socid);
+
+	if (! empty($origin) && ! empty($originid))
+	{
+		// Parse element/subelement (ex: project_task)
+		$element = $subelement = $origin;
+		if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs))
 		{
-			// Parse element/subelement (ex: project_task)
-			$element = $subelement = $origin;
-			if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs))
-			{
-				$element = $regs[1];
-				$subelement = $regs[2];
-			}
+			$element = $regs[1];
+			$subelement = $regs[2];
+		}
 
-			if ($element == 'project')
-			{
-				$projectid=$originid;
+		if ($element == 'project')
+		{
+			$projectid=$originid;
+		}
+		else
+		{
+			// For compatibility
+			if ($element == 'order' || $element == 'commande')    {
+				$element = $subelement = 'commande';
+			}
+			if ($element == 'propal')   {
+				$element = 'comm/propal'; $subelement = 'propal';
+			}
+			if ($element == 'contract') {
+				$element = $subelement = 'contrat';
+			}
+			if ($element == 'shipping') {
+				$element = $subelement = 'expedition';
 			}
-			else
-			{
-				// For compatibility
-				if ($element == 'order' || $element == 'commande')    {
-					$element = $subelement = 'commande';
-				}
-				if ($element == 'propal')   {
-					$element = 'comm/propal'; $subelement = 'propal';
-				}
-				if ($element == 'contract') {
-					$element = $subelement = 'contrat';
-				}
-				if ($element == 'shipping') {
-					$element = $subelement = 'expedition';
-				}
 
-				dol_include_once('/'.$element.'/class/'.$subelement.'.class.php');
+			dol_include_once('/'.$element.'/class/'.$subelement.'.class.php');
 
-				$classname = ucfirst($subelement);
-				$objectsrc = new $classname($db);
-				$objectsrc->fetch($originid);
-				if (empty($objectsrc->lines) && method_exists($objectsrc,'fetch_lines'))  $objectsrc->fetch_lines();
-				$objectsrc->fetch_thirdparty();
+			$classname = ucfirst($subelement);
+			$objectsrc = new $classname($db);
+			$objectsrc->fetch($originid);
+			if (empty($objectsrc->lines) && method_exists($objectsrc,'fetch_lines'))  $objectsrc->fetch_lines();
+			$objectsrc->fetch_thirdparty();
 
-				$projectid			= (! empty($objectsrc->fk_project)?$objectsrc->fk_project:'');
-				$ref_client			= (! empty($objectsrc->ref_client)?$objectsrc->ref_client:'');
-				$ref_int			= (! empty($objectsrc->ref_int)?$objectsrc->ref_int:'');
+			$projectid			= (! empty($objectsrc->fk_project)?$objectsrc->fk_project:'');
+			$ref_client			= (! empty($objectsrc->ref_client)?$objectsrc->ref_client:'');
+			$ref_int			= (! empty($objectsrc->ref_int)?$objectsrc->ref_int:'');
 
-				$soc = $objectsrc->thirdparty;
-				$cond_reglement_id 	= (! empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(! empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1));
-				$mode_reglement_id 	= (! empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(! empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0));
-				$remise_percent 	= (! empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(! empty($soc->remise_percent)?$soc->remise_percent:0));
-				$remise_absolue 	= (! empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(! empty($soc->remise_absolue)?$soc->remise_absolue:0));
-				$dateinvoice		= empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0;
-			}
-		}
-		else
-		{
-			$cond_reglement_id 	= $soc->cond_reglement_id;
-			$mode_reglement_id 	= $soc->mode_reglement_id;
-			$remise_percent 	= $soc->remise_percent;
-			$remise_absolue 	= 0;
+			$soc = $objectsrc->thirdparty;
+			$cond_reglement_id 	= (! empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(! empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1));
+			$mode_reglement_id 	= (! empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(! empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0));
+			$remise_percent 	= (! empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(! empty($soc->remise_percent)?$soc->remise_percent:0));
+			$remise_absolue 	= (! empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(! empty($soc->remise_absolue)?$soc->remise_absolue:0));
 			$dateinvoice		= empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0;
 		}
-		$absolute_discount=$soc->getAvailableDiscounts();
+	}
+	else
+	{
+		$cond_reglement_id 	= $soc->cond_reglement_id;
+		$mode_reglement_id 	= $soc->mode_reglement_id;
+		$remise_percent 	= $soc->remise_percent;
+		$remise_absolue 	= 0;
+		$dateinvoice		= empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0;
+	}
+	$absolute_discount=$soc->getAvailableDiscounts();
 
 
-		if (! empty($conf->use_javascript_ajax))
-		{
-			print ajax_combobox('fac_replacement');
-			print ajax_combobox('fac_avoir');
-		}
+	if (! empty($conf->use_javascript_ajax))
+	{
+		print ajax_combobox('fac_replacement');
+		print ajax_combobox('fac_avoir');
+	}
 
-		print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
-		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-		print '<input type="hidden" name="action" value="add">';
-		if ($soc->id > 0)
-			print '<input type="hidden" name="socid" value="'.$soc->id.'">' ."\n";
-		print '<input name="facnumber" type="hidden" value="provisoire">';
-		print '<input name="ref_client" type="hidden" value="'.$ref_client.'">';
-		print '<input name="ref_int" type="hidden" value="'.$ref_int.'">';
-		print '<input type="hidden" name="origin" value="'.$origin.'">';
-		print '<input type="hidden" name="originid" value="'.$originid.'">';
+	print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
+	print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+	print '<input type="hidden" name="action" value="add">';
+	if ($soc->id > 0)
+		print '<input type="hidden" name="socid" value="'.$soc->id.'">' ."\n";
+	print '<input name="facnumber" type="hidden" value="provisoire">';
+	print '<input name="ref_client" type="hidden" value="'.$ref_client.'">';
+	print '<input name="ref_int" type="hidden" value="'.$ref_int.'">';
+	print '<input type="hidden" name="origin" value="'.$origin.'">';
+	print '<input type="hidden" name="originid" value="'.$originid.'">';
 
-		print '<table class="border" width="100%">';
+	print '<table class="border" width="100%">';
 
-		// Ref
-		print '<tr><td class="fieldrequired">'.$langs->trans('Ref').'</td><td colspan="2">'.$langs->trans('Draft').'</td></tr>';
+	// Ref
+	print '<tr><td class="fieldrequired">'.$langs->trans('Ref').'</td><td colspan="2">'.$langs->trans('Draft').'</td></tr>';
+
+	// Factures predefinies
+	if (empty($origin) && empty($originid) && $socid>0)
+	{
+		$sql = 'SELECT r.rowid, r.titre, r.total_ttc';
+		$sql.= ' FROM '.MAIN_DB_PREFIX.'facture_rec as r';
+		$sql.= ' WHERE r.fk_soc = '.$soc->id;
 
-		// Factures predefinies
-		if (empty($origin) && empty($originid) && $socid>0)
+		$resql=$db->query($sql);
+		if ($resql)
 		{
-			$sql = 'SELECT r.rowid, r.titre, r.total_ttc';
-			$sql.= ' FROM '.MAIN_DB_PREFIX.'facture_rec as r';
-			$sql.= ' WHERE r.fk_soc = '.$soc->id;
+			$num = $db->num_rows($resql);
+			$i = 0;
 
-			$resql=$db->query($sql);
-			if ($resql)
+			if ($num > 0)
 			{
-				$num = $db->num_rows($resql);
-				$i = 0;
-
-				if ($num > 0)
+				print '<tr><td>'.$langs->trans('CreateFromRepeatableInvoice').'</td><td>';
+				print '<select class="flat" name="fac_rec">';
+				print '<option value="0" selected="selected"></option>';
+				while ($i < $num)
 				{
-					print '<tr><td>'.$langs->trans('CreateFromRepeatableInvoice').'</td><td>';
-					print '<select class="flat" name="fac_rec">';
-					print '<option value="0" selected="selected"></option>';
-					while ($i < $num)
-					{
-						$objp = $db->fetch_object($resql);
-						print '<option value="'.$objp->rowid.'"';
-						if (GETPOST('fac_rec') == $objp->rowid) print ' selected="selected"';
-						print '>'.$objp->titre.' ('.price($objp->total_ttc).' '.$langs->trans("TTC").')</option>';
-						$i++;
-					}
-					print '</select></td></tr>';
+					$objp = $db->fetch_object($resql);
+					print '<option value="'.$objp->rowid.'"';
+					if (GETPOST('fac_rec') == $objp->rowid) print ' selected="selected"';
+					print '>'.$objp->titre.' ('.price($objp->total_ttc).' '.$langs->trans("TTC").')</option>';
+					$i++;
 				}
-				$db->free($resql);
-			}
-			else
-			{
-				dol_print_error($db);
+				print '</select></td></tr>';
 			}
-		}
-
-		// Tiers
-		print '<tr>';
-		print '<td class="fieldrequired">'.$langs->trans('Customer').'</td>';
-		if($soc->id > 0)
-		{
-			print '<td colspan="2">';
-			print $soc->getNomUrl(1);
-			print '<input type="hidden" name="socid" value="'.$soc->id.'">';
-			print '</td>';
+			$db->free($resql);
 		}
 		else
 		{
-			print '<td colspan="2">';
-			print $form->select_company('','socid','s.client = 1 OR s.client = 3',1);
-			print '</td>';
+			dol_print_error($db);
 		}
-		print '</tr>'."\n";
+	}
 
-		// Type de facture
-		$facids=$facturestatic->list_replacable_invoices($soc->id);
-		if ($facids < 0)
-		{
-			dol_print_error($db,$facturestatic);
-			exit;
-		}
-		$options="";
-		foreach ($facids as $facparam)
-		{
-			$options.='<option value="'.$facparam['id'].'"';
-			if ($facparam['id'] == $_POST['fac_replacement']) $options.=' selected="selected"';
-			$options.='>'.$facparam['ref'];
-			$options.=' ('.$facturestatic->LibStatut(0,$facparam['status']).')';
-			$options.='</option>';
-		}
+	// Tiers
+	print '<tr>';
+	print '<td class="fieldrequired">'.$langs->trans('Customer').'</td>';
+	if($soc->id > 0)
+	{
+		print '<td colspan="2">';
+		print $soc->getNomUrl(1);
+		print '<input type="hidden" name="socid" value="'.$soc->id.'">';
+		print '</td>';
+	}
+	else
+	{
+		print '<td colspan="2">';
+		print $form->select_company('','socid','s.client = 1 OR s.client = 3',1);
+		print '</td>';
+	}
+	print '</tr>'."\n";
 
-		$facids=$facturestatic->list_qualified_avoir_invoices($soc->id);
-		if ($facids < 0)
-		{
-			dol_print_error($db,$facturestatic);
-			exit;
-		}
-		$optionsav="";
-		$newinvoice_static=new Facture($db);
-		foreach ($facids as $key => $valarray)
-		{
-			$newinvoice_static->id=$key;
-			$newinvoice_static->ref=$valarray['ref'];
-			$newinvoice_static->statut=$valarray['status'];
-			$newinvoice_static->type=$valarray['type'];
-			$newinvoice_static->paye=$valarray['paye'];
+	// Type de facture
+	$facids=$facturestatic->list_replacable_invoices($soc->id);
+	if ($facids < 0)
+	{
+		dol_print_error($db,$facturestatic);
+		exit;
+	}
+	$options="";
+	foreach ($facids as $facparam)
+	{
+		$options.='<option value="'.$facparam['id'].'"';
+		if ($facparam['id'] == $_POST['fac_replacement']) $options.=' selected="selected"';
+		$options.='>'.$facparam['ref'];
+		$options.=' ('.$facturestatic->LibStatut(0,$facparam['status']).')';
+		$options.='</option>';
+	}
 
-			$optionsav.='<option value="'.$key.'"';
-			if ($key == $_POST['fac_avoir']) $optionsav.=' selected="selected"';
-			$optionsav.='>';
-			$optionsav.=$newinvoice_static->ref;
-			$optionsav.=' ('.$newinvoice_static->getLibStatut(1,$valarray['paymentornot']).')';
-			$optionsav.='</option>';
-		}
+	$facids=$facturestatic->list_qualified_avoir_invoices($soc->id);
+	if ($facids < 0)
+	{
+		dol_print_error($db,$facturestatic);
+		exit;
+	}
+	$optionsav="";
+	$newinvoice_static=new Facture($db);
+	foreach ($facids as $key => $valarray)
+	{
+		$newinvoice_static->id=$key;
+		$newinvoice_static->ref=$valarray['ref'];
+		$newinvoice_static->statut=$valarray['status'];
+		$newinvoice_static->type=$valarray['type'];
+		$newinvoice_static->paye=$valarray['paye'];
+
+		$optionsav.='<option value="'.$key.'"';
+		if ($key == $_POST['fac_avoir']) $optionsav.=' selected="selected"';
+		$optionsav.='>';
+		$optionsav.=$newinvoice_static->ref;
+		$optionsav.=' ('.$newinvoice_static->getLibStatut(1,$valarray['paymentornot']).')';
+		$optionsav.='</option>';
+	}
+
+	print '<tr><td valign="top" class="fieldrequired">'.$langs->trans('Type').'</td><td colspan="2">';
+	print '<table class="nobordernopadding">'."\n";
 
-		print '<tr><td valign="top" class="fieldrequired">'.$langs->trans('Type').'</td><td colspan="2">';
-		print '<table class="nobordernopadding">'."\n";
+	// Standard invoice
+	print '<tr height="18"><td width="16px" valign="middle">';
+	print '<input type="radio" name="type" value="0"'.(GETPOST('type')==0?' checked="checked"':'').'>';
+	print '</td><td valign="middle">';
+	$desc=$form->textwithpicto($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
+	print $desc;
+	print '</td></tr>'."\n";
 
-		// Standard invoice
+	// Proforma
+	if (! empty($conf->global->FACTURE_USE_PROFORMAT))
+	{
 		print '<tr height="18"><td width="16px" valign="middle">';
-		print '<input type="radio" name="type" value="0"'.(GETPOST('type')==0?' checked="checked"':'').'>';
+		print '<input type="radio" name="type" value="4"'.(GETPOST('type')==4?' checked="checked"':'').'>';
 		print '</td><td valign="middle">';
-		$desc=$form->textwithpicto($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
+		$desc=$form->textwithpicto($langs->trans("InvoiceProForma"),$langs->transnoentities("InvoiceProFormaDesc"),1);
 		print $desc;
 		print '</td></tr>'."\n";
+	}
 
-		// Proforma
-		if (! empty($conf->global->FACTURE_USE_PROFORMAT))
-		{
-			print '<tr height="18"><td width="16px" valign="middle">';
-			print '<input type="radio" name="type" value="4"'.(GETPOST('type')==4?' checked="checked"':'').'>';
-			print '</td><td valign="middle">';
-			$desc=$form->textwithpicto($langs->trans("InvoiceProForma"),$langs->transnoentities("InvoiceProFormaDesc"),1);
-			print $desc;
-			print '</td></tr>'."\n";
-		}
+	if ((empty($origin)) || (($origin=='propal') && (!empty($originid))))
+	{
+		// Deposit
+		print '<tr height="18"><td width="16px" valign="middle">';
+		print '<input type="radio" name="type" value="3"'.(GETPOST('type')==3?' checked="checked"':'').'>';
+		print '</td><td valign="middle" nowrap="nowrap">';
+		$desc=$form->textwithpicto($langs->trans("InvoiceDeposit"),$langs->transnoentities("InvoiceDepositDesc"),1);
+		print '<table class="nobordernopadding"><tr><td>'.$desc.'</td>';
+		if (($origin=='propal') ) {
+			print '<td><select name="typedeposit"><option value="amount">'.$langs->trans('FixAmount').'</option>';
+			print '<option value="variable">'.$langs->trans('VarAmount').'</option></select></td>';
+			print '<td>'.$langs->trans('Value').':<input type="text" name="valuedeposit" size="3" value="'.GETPOST('valuedeposit','int').'"/>';
+		}
+		print '</td></tr></table>';
+		print '</td></tr>'."\n";
+	}
 
-		if (empty($origin))
+	if ($socid > 0)
+	{
+		// Replacement
+		print '<tr height="18"><td valign="middle">';
+		print '<input type="radio" name="type" value="1"'.(GETPOST('type')==1?' checked="checked"':'');
+		if (! $options) print ' disabled="disabled"';
+		print '>';
+		print '</td><td valign="middle">';
+		$text=$langs->trans("InvoiceReplacementAsk").' ';
+		$text.='<select class="flat" name="fac_replacement" id="fac_replacement"';
+		if (! $options) $text.=' disabled="disabled"';
+		$text.='>';
+		if ($options)
 		{
-			// Deposit
-			print '<tr height="18"><td width="16px" valign="middle">';
-			print '<input type="radio" name="type" value="3"'.(GETPOST('type')==3?' checked="checked"':'').'>';
-			print '</td><td valign="middle">';
-			$desc=$form->textwithpicto($langs->trans("InvoiceDeposit"),$langs->transnoentities("InvoiceDepositDesc"),1);
-			print $desc;
-			print '</td></tr>'."\n";
+			$text.='<option value="-1"></option>';
+			$text.=$options;
 		}
-
-		if ($socid > 0)
+		else
 		{
-			// Replacement
-			print '<tr height="18"><td valign="middle">';
-			print '<input type="radio" name="type" value="1"'.(GETPOST('type')==1?' checked="checked"':'');
-			if (! $options) print ' disabled="disabled"';
-			print '>';
-			print '</td><td valign="middle">';
-			$text=$langs->trans("InvoiceReplacementAsk").' ';
-			$text.='<select class="flat" name="fac_replacement" id="fac_replacement"';
-			if (! $options) $text.=' disabled="disabled"';
-			$text.='>';
-			if ($options)
-			{
-				$text.='<option value="-1"></option>';
-				$text.=$options;
-			}
-			else
-			{
-				$text.='<option value="-1">'.$langs->trans("NoReplacableInvoice").'</option>';
-			}
-			$text.='</select>';
-			$desc=$form->textwithpicto($text,$langs->transnoentities("InvoiceReplacementDesc"),1);
-			print $desc;
-			print '</td></tr>'."\n";
+			$text.='<option value="-1">'.$langs->trans("NoReplacableInvoice").'</option>';
 		}
+		$text.='</select>';
+		$desc=$form->textwithpicto($text,$langs->transnoentities("InvoiceReplacementDesc"),1);
+		print $desc;
+		print '</td></tr>'."\n";
+	}
 
-		if (empty($origin) && $socid > 0)
+	if (empty($origin) && $socid > 0)
+	{
+		// Credit note
+		print '<tr height="18"><td valign="middle">';
+		print '<input type="radio" name="type" value="2"'.(GETPOST('type')==2?' checked=true':'');
+		if (! $optionsav) print ' disabled="disabled"';
+		print '>';
+		print '</td><td valign="middle">';
+		$text=$langs->transnoentities("InvoiceAvoirAsk").' ';
+		//	$text.='<input type="text" value="">';
+		$text.='<select class="flat" name="fac_avoir" id="fac_avoir"';
+		if (! $optionsav) $text.=' disabled="disabled"';
+		$text.='>';
+		if ($optionsav)
 		{
-			// Credit note
-			print '<tr height="18"><td valign="middle">';
-			print '<input type="radio" name="type" value="2"'.(GETPOST('type')==2?' checked=true':'');
-			if (! $optionsav) print ' disabled="disabled"';
-			print '>';
-			print '</td><td valign="middle">';
-			$text=$langs->transnoentities("InvoiceAvoirAsk").' ';
-			//	$text.='<input type="text" value="">';
-			$text.='<select class="flat" name="fac_avoir" id="fac_avoir"';
-			if (! $optionsav) $text.=' disabled="disabled"';
-			$text.='>';
-			if ($optionsav)
-			{
-				$text.='<option value="-1"></option>';
-				$text.=$optionsav;
-			}
-			else
-			{
-				$text.='<option value="-1">'.$langs->trans("NoInvoiceToCorrect").'</option>';
-			}
-			$text.='</select>';
-			$desc=$form->textwithpicto($text,$langs->transnoentities("InvoiceAvoirDesc"),1);
-			print $desc;
-			print '</td></tr>'."\n";
+			$text.='<option value="-1"></option>';
+			$text.=$optionsav;
 		}
-
-		print '</table>';
-		print '</td></tr>';
-
-		if ($socid > 0)
+		else
 		{
-			// Discounts for third party
-			print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="2">';
-			if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",'<a href="'.DOL_URL_ROOT.'/comm/remise.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?socid='.$soc->id.'&action='.$action.'&origin='.GETPOST('origin').'&originid='.GETPOST('originid')).'">'.$soc->remise_client.'</a>');
-			else print $langs->trans("CompanyHasNoRelativeDiscount");
-			print ' <a href="'.DOL_URL_ROOT.'/comm/remise.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?socid='.$soc->id.'&action='.$action.'&origin='.GETPOST('origin').'&originid='.GETPOST('originid')).'">('.$langs->trans("EditRelativeDiscount").')</a>';
-			print '. ';
-			print '<br>';
-			if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",'<a href="'.DOL_URL_ROOT.'/comm/remx.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?socid='.$soc->id.'&action='.$action.'&origin='.GETPOST('origin').'&originid='.GETPOST('originid')).'">'.price($absolute_discount).'</a>',$langs->trans("Currency".$conf->currency));
-			else print $langs->trans("CompanyHasNoAbsoluteDiscount");
-			print ' <a href="'.DOL_URL_ROOT.'/comm/remx.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?socid='.$soc->id.'&action='.$action.'&origin='.GETPOST('origin').'&originid='.GETPOST('originid')).'">('.$langs->trans("EditGlobalDiscounts").')</a>';
-			print '.';
-			print '</td></tr>';
+			$text.='<option value="-1">'.$langs->trans("NoInvoiceToCorrect").'</option>';
 		}
+		$text.='</select>';
+		$desc=$form->textwithpicto($text,$langs->transnoentities("InvoiceAvoirDesc"),1);
+		print $desc;
+		print '</td></tr>'."\n";
+	}
 
-		// Date invoice
-		print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td colspan="2">';
-		$form->select_date($dateinvoice,'','','','',"add",1,1);
-		print '</td></tr>';
+	print '</table>';
+	print '</td></tr>';
 
-		// Payment term
-		print '<tr><td nowrap>'.$langs->trans('PaymentConditionsShort').'</td><td colspan="2">';
-		$form->select_conditions_paiements(isset($_POST['cond_reglement_id'])?$_POST['cond_reglement_id']:$cond_reglement_id,'cond_reglement_id');
+	if ($socid > 0)
+	{
+		// Discounts for third party
+		print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="2">';
+		if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",'<a href="'.DOL_URL_ROOT.'/comm/remise.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?socid='.$soc->id.'&action='.$action.'&origin='.GETPOST('origin').'&originid='.GETPOST('originid')).'">'.$soc->remise_client.'</a>');
+		else print $langs->trans("CompanyHasNoRelativeDiscount");
+		print ' <a href="'.DOL_URL_ROOT.'/comm/remise.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?socid='.$soc->id.'&action='.$action.'&origin='.GETPOST('origin').'&originid='.GETPOST('originid')).'">('.$langs->trans("EditRelativeDiscount").')</a>';
+		print '. ';
+		print '<br>';
+		if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",'<a href="'.DOL_URL_ROOT.'/comm/remx.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?socid='.$soc->id.'&action='.$action.'&origin='.GETPOST('origin').'&originid='.GETPOST('originid')).'">'.price($absolute_discount).'</a>',$langs->trans("Currency".$conf->currency));
+		else print $langs->trans("CompanyHasNoAbsoluteDiscount");
+		print ' <a href="'.DOL_URL_ROOT.'/comm/remx.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?socid='.$soc->id.'&action='.$action.'&origin='.GETPOST('origin').'&originid='.GETPOST('originid')).'">('.$langs->trans("EditGlobalDiscounts").')</a>';
+		print '.';
 		print '</td></tr>';
+	}
+
+	// Date invoice
+	print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td colspan="2">';
+	$form->select_date($dateinvoice,'','','','',"add",1,1);
+	print '</td></tr>';
 
-		// Payment mode
-		print '<tr><td>'.$langs->trans('PaymentMode').'</td><td colspan="2">';
-		$form->select_types_paiements(isset($_POST['mode_reglement_id'])?$_POST['mode_reglement_id']:$mode_reglement_id,'mode_reglement_id');
+	// Payment term
+	print '<tr><td nowrap>'.$langs->trans('PaymentConditionsShort').'</td><td colspan="2">';
+	$form->select_conditions_paiements(isset($_POST['cond_reglement_id'])?$_POST['cond_reglement_id']:$cond_reglement_id,'cond_reglement_id');
+	print '</td></tr>';
+
+	// Payment mode
+	print '<tr><td>'.$langs->trans('PaymentMode').'</td><td colspan="2">';
+	$form->select_types_paiements(isset($_POST['mode_reglement_id'])?$_POST['mode_reglement_id']:$mode_reglement_id,'mode_reglement_id');
+	print '</td></tr>';
+
+	// Project
+	if (! empty($conf->projet->enabled) && $socid>0)
+	{
+		$langs->load('projects');
+		print '<tr><td>'.$langs->trans('Project').'</td><td colspan="2">';
+		select_projects($soc->id, $projectid, 'projectid');
 		print '</td></tr>';
+	}
 
-		// Project
-		if (! empty($conf->projet->enabled) && $socid>0)
-		{
-			$langs->load('projects');
-			print '<tr><td>'.$langs->trans('Project').'</td><td colspan="2">';
-			select_projects($soc->id, $projectid, 'projectid');
-			print '</td></tr>';
-		}
+	// Other attributes
+	$parameters=array('objectsrc' => $objectsrc, 'colspan' => ' colspan="3"');
+	$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
+	if (empty($reshook) && ! empty($extrafields->attribute_label))
+	{
+		print $object->showOptionals($extrafields,'edit');
+	}
 
-		// Other attributes
-		$parameters=array('objectsrc' => $objectsrc, 'colspan' => ' colspan="3"');
-		$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
-		if (empty($reshook) && ! empty($extrafields->attribute_label))
-		{
-			print $object->showOptionals($extrafields,'edit');
-		}
+	// Modele PDF
+	print '<tr><td>'.$langs->trans('Model').'</td>';
+	print '<td>';
+	include_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php';
+	$liste=ModelePDFFactures::liste_modeles($db);
+	print $form->selectarray('model',$liste,$conf->global->FACTURE_ADDON_PDF);
+	print "</td></tr>";
+
+	// Public note
+	print '<tr>';
+	print '<td class="border" valign="top">'.$langs->trans('NotePublic').'</td>';
+	print '<td valign="top" colspan="2">';
+	$note_public='';
+	if (is_object($objectsrc))    // Take value from source object
+	{
+		$note_public=$objectsrc->note_public;
+	}
+	$doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
+	print $doleditor->Create(1);
 
-		// Modele PDF
-		print '<tr><td>'.$langs->trans('Model').'</td>';
-		print '<td>';
-		include_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php';
-		$liste=ModelePDFFactures::liste_modeles($db);
-		print $form->selectarray('model',$liste,$conf->global->FACTURE_ADDON_PDF);
-		print "</td></tr>";
+	//print '<textarea name="note_public" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_public.'</textarea></td></tr>';
 
-		// Public note
+	// Private note
+	if (empty($user->societe_id))
+	{
 		print '<tr>';
-		print '<td class="border" valign="top">'.$langs->trans('NotePublic').'</td>';
+		print '<td class="border" valign="top">'.$langs->trans('NotePrivate').'</td>';
 		print '<td valign="top" colspan="2">';
-		$note_public='';
-		if (is_object($objectsrc))    // Take value from source object
+		$note_private='';
+		if (! empty($origin) && ! empty($originid) && is_object($objectsrc))    // Take value from source object
 		{
-			$note_public=$objectsrc->note_public;
+			$note_private=$objectsrc->note_private;
 		}
-		$doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
+		$doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
 		print $doleditor->Create(1);
+		//print '<textarea name="note_private" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_private.'.</textarea></td></tr>';
+	}
 
-		//print '<textarea name="note_public" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_public.'</textarea></td></tr>';
-
-		// Private note
-		if (empty($user->societe_id))
+	if (! empty($origin) && ! empty($originid) && is_object($objectsrc))
+	{
+		// TODO for compatibility
+		if ($origin == 'contrat')
 		{
-			print '<tr>';
-			print '<td class="border" valign="top">'.$langs->trans('NotePrivate').'</td>';
-			print '<td valign="top" colspan="2">';
-			$note_private='';
-			if (! empty($origin) && ! empty($originid) && is_object($objectsrc))    // Take value from source object
-			{
-				$note_private=$objectsrc->note_private;
-			}
-			$doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
-			print $doleditor->Create(1);
-			//print '<textarea name="note_private" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_private.'.</textarea></td></tr>';
+			// Calcul contrat->price (HT), contrat->total (TTC), contrat->tva
+			$objectsrc->remise_absolue=$remise_absolue;
+			$objectsrc->remise_percent=$remise_percent;
+			$objectsrc->update_price(1,-1,1);
 		}
 
-		if (! empty($origin) && ! empty($originid) && is_object($objectsrc))
-		{
-			// TODO for compatibility
-			if ($origin == 'contrat')
-			{
-				// Calcul contrat->price (HT), contrat->total (TTC), contrat->tva
-				$objectsrc->remise_absolue=$remise_absolue;
-				$objectsrc->remise_percent=$remise_percent;
-				$objectsrc->update_price(1,-1,1);
-			}
+		print "\n<!-- ".$classname." info -->";
+		print "\n";
+		print '<input type="hidden" name="amount"         value="'.$objectsrc->total_ht.'">'."\n";
+		print '<input type="hidden" name="total"          value="'.$objectsrc->total_ttc.'">'."\n";
+		print '<input type="hidden" name="tva"            value="'.$objectsrc->total_tva.'">'."\n";
+		print '<input type="hidden" name="origin"         value="'.$objectsrc->element.'">';
+		print '<input type="hidden" name="originid"       value="'.$objectsrc->id.'">';
 
-			print "\n<!-- ".$classname." info -->";
-			print "\n";
-			print '<input type="hidden" name="amount"         value="'.$objectsrc->total_ht.'">'."\n";
-			print '<input type="hidden" name="total"          value="'.$objectsrc->total_ttc.'">'."\n";
-			print '<input type="hidden" name="tva"            value="'.$objectsrc->total_tva.'">'."\n";
-			print '<input type="hidden" name="origin"         value="'.$objectsrc->element.'">';
-			print '<input type="hidden" name="originid"       value="'.$objectsrc->id.'">';
+		$newclassname=$classname;
+		if ($newclassname == 'Propal') $newclassname = 'CommercialProposal';
+		elseif ($newclassname == 'Commande') $newclassname = 'Order';
 
-			$newclassname=$classname;
-			if ($newclassname == 'Propal') $newclassname = 'CommercialProposal';
-			elseif ($newclassname == 'Commande') $newclassname = 'Order';
+		print '<tr><td>'.$langs->trans($newclassname).'</td><td colspan="2">'.$objectsrc->getNomUrl(1).'</td></tr>';
+		print '<tr><td>'.$langs->trans('TotalHT').'</td><td colspan="2">'.price($objectsrc->total_ht).'</td></tr>';
+		print '<tr><td>'.$langs->trans('TotalVAT').'</td><td colspan="2">'.price($objectsrc->total_tva)."</td></tr>";
+		if ($mysoc->localtax1_assuj=="1") //Localtax1 RE
+		{
+			print '<tr><td>'.$langs->transcountry("AmountLT1",$mysoc->country_code).'</td><td colspan="2">'.price($objectsrc->total_localtax1)."</td></tr>";
+		}
 
-			print '<tr><td>'.$langs->trans($newclassname).'</td><td colspan="2">'.$objectsrc->getNomUrl(1).'</td></tr>';
-			print '<tr><td>'.$langs->trans('TotalHT').'</td><td colspan="2">'.price($objectsrc->total_ht).'</td></tr>';
-			print '<tr><td>'.$langs->trans('TotalVAT').'</td><td colspan="2">'.price($objectsrc->total_tva)."</td></tr>";
-			if ($mysoc->localtax1_assuj=="1") //Localtax1 RE
-			{
-				print '<tr><td>'.$langs->transcountry("AmountLT1",$mysoc->country_code).'</td><td colspan="2">'.price($objectsrc->total_localtax1)."</td></tr>";
-			}
+		if ($mysoc->localtax2_assuj=="1") //Localtax2 IRPF
+		{
+			print '<tr><td>'.$langs->transcountry("AmountLT2",$mysoc->country_code).'</td><td colspan="2">'.price($objectsrc->total_localtax2)."</td></tr>";
+		}
+		print '<tr><td>'.$langs->trans('TotalTTC').'</td><td colspan="2">'.price($objectsrc->total_ttc)."</td></tr>";
+	}
+	else
+	{
+		// Show deprecated optional form to add product line here
+		if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE))
+		{
+			print '<tr><td colspan="3">';
 
-			if ($mysoc->localtax2_assuj=="1") //Localtax2 IRPF
+			// Zone de choix des produits predefinis a la creation
+			print '<table class="noborder" width="100%">';
+			print '<tr>';
+			print '<td>'.$langs->trans('ProductsAndServices').'</td>';
+			print '<td>'.$langs->trans('Qty').'</td>';
+			print '<td>'.$langs->trans('ReductionShort').'</td>';
+			print '<td> &nbsp; &nbsp; </td>';
+			if (! empty($conf->service->enabled))
 			{
-				print '<tr><td>'.$langs->transcountry("AmountLT2",$mysoc->country_code).'</td><td colspan="2">'.price($objectsrc->total_localtax2)."</td></tr>";
+				print '<td>'.$langs->trans('ServiceLimitedDuration').'</td>';
 			}
-			print '<tr><td>'.$langs->trans('TotalTTC').'</td><td colspan="2">'.price($objectsrc->total_ttc)."</td></tr>";
-		}
-		else
-		{
-			// Show deprecated optional form to add product line here
-			if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE))
+			print '</tr>';
+			for ($i = 1 ; $i <= $NBLINES ; $i++)
 			{
-				print '<tr><td colspan="3">';
-
-				// Zone de choix des produits predefinis a la creation
-				print '<table class="noborder" width="100%">';
 				print '<tr>';
-				print '<td>'.$langs->trans('ProductsAndServices').'</td>';
-				print '<td>'.$langs->trans('Qty').'</td>';
-				print '<td>'.$langs->trans('ReductionShort').'</td>';
-				print '<td> &nbsp; &nbsp; </td>';
+				print '<td>';
+				// multiprix
+				if (! empty($conf->global->PRODUIT_MULTIPRICES))
+					$form->select_produits('','idprod'.$i,'',$conf->product->limit_size,$soc->price_level);
+				else
+					$form->select_produits('','idprod'.$i,'',$conf->product->limit_size);
+				print '</td>';
+				print '<td><input type="text" size="2" name="qty'.$i.'" value="1"></td>';
+				print '<td nowrap="nowrap"><input type="text" size="1" name="remise_percent'.$i.'" value="'.$soc->remise_client.'">%</td>';
+				print '<td>&nbsp;</td>';
+				// Si le module service est actif, on propose des dates de debut et fin a la ligne
 				if (! empty($conf->service->enabled))
 				{
-					print '<td>'.$langs->trans('ServiceLimitedDuration').'</td>';
-				}
-				print '</tr>';
-				for ($i = 1 ; $i <= $NBLINES ; $i++)
-				{
-					print '<tr>';
-					print '<td>';
-					// multiprix
-					if (! empty($conf->global->PRODUIT_MULTIPRICES))
-						$form->select_produits('','idprod'.$i,'',$conf->product->limit_size,$soc->price_level);
-					else
-						$form->select_produits('','idprod'.$i,'',$conf->product->limit_size);
+					print '<td nowrap="nowrap">';
+					print '<table class="nobordernopadding"><tr class="nocellnopadd">';
+					print '<td class="nobordernopadding" nowrap="nowrap">';
+					print $langs->trans('From').' ';
+					print '</td><td class="nobordernopadding" nowrap="nowrap">';
+					print $form->select_date('','date_start'.$i,$usehm,$usehm,1,"add");
+					print '</td></tr>';
+					print '<td class="nobordernopadding" nowrap="nowrap">';
+					print $langs->trans('to').' ';
+					print '</td><td class="nobordernopadding" nowrap="nowrap">';
+					print $form->select_date('','date_end'.$i,$usehm,$usehm,1,"add");
+					print '</td></tr></table>';
 					print '</td>';
-					print '<td><input type="text" size="2" name="qty'.$i.'" value="1"></td>';
-					print '<td nowrap="nowrap"><input type="text" size="1" name="remise_percent'.$i.'" value="'.$soc->remise_client.'">%</td>';
-					print '<td>&nbsp;</td>';
-					// Si le module service est actif, on propose des dates de debut et fin a la ligne
-					if (! empty($conf->service->enabled))
-					{
-						print '<td nowrap="nowrap">';
-						print '<table class="nobordernopadding"><tr class="nocellnopadd">';
-						print '<td class="nobordernopadding" nowrap="nowrap">';
-						print $langs->trans('From').' ';
-						print '</td><td class="nobordernopadding" nowrap="nowrap">';
-						print $form->select_date('','date_start'.$i,$usehm,$usehm,1,"add");
-						print '</td></tr>';
-						print '<td class="nobordernopadding" nowrap="nowrap">';
-						print $langs->trans('to').' ';
-						print '</td><td class="nobordernopadding" nowrap="nowrap">';
-						print $form->select_date('','date_end'.$i,$usehm,$usehm,1,"add");
-						print '</td></tr></table>';
-						print '</td>';
-					}
-					print "</tr>\n";
 				}
-
-				print '</table>';
-				print '</td></tr>';
+				print "</tr>\n";
 			}
-		}
 
-		print "</table>\n";
+			print '</table>';
+			print '</td></tr>';
+		}
+	}
 
-		// Button "Create Draft"
-		print '<br><center><input type="submit" class="button" name="bouton" value="'.$langs->trans('CreateDraft').'"></center>';
+	print "</table>\n";
 
-		print "</form>\n";
+	// Button "Create Draft"
+	print '<br><center><input type="submit" class="button" name="bouton" value="'.$langs->trans('CreateDraft').'"></center>';
 
-		// Show origin lines
-		if (! empty($origin) && ! empty($originid) && is_object($objectsrc))
-		{
-			print '<br>';
+	print "</form>\n";
 
-			$title=$langs->trans('ProductsAndServices');
-			print_titre($title);
+	// Show origin lines
+	if (! empty($origin) && ! empty($originid) && is_object($objectsrc))
+	{
+		print '<br>';
 
-			print '<table class="noborder" width="100%">';
+		$title=$langs->trans('ProductsAndServices');
+		print_titre($title);
 
-			$objectsrc->printOriginLinesList();
+		print '<table class="noborder" width="100%">';
 
-			print '</table>';
-		}
+		$objectsrc->printOriginLinesList();
 
+		print '</table>';
 	}
-	else if ($id > 0 || ! empty($ref))
-	{
-		/*
-		 * Show object in view mode
-		*/
 
-		$result=$object->fetch($id,$ref);
+}
+else if ($id > 0 || ! empty($ref))
+{
+	/*
+	 * Show object in view mode
+	*/
 
-		// fetch optionals attributes and labels
-		$extralabels=$extrafields->fetch_name_optionals_label('facture');
+	$result=$object->fetch($id,$ref);
 
-		if ($result > 0)
-		{
-			if ($user->societe_id>0 && $user->societe_id!=$object->socid)  accessforbidden('',0);
+	// fetch optionals attributes and labels
+	$extralabels=$extrafields->fetch_name_optionals_label('facture');
 
-			$result=$object->fetch_thirdparty();
+	if ($result > 0)
+	{
+		if ($user->societe_id>0 && $user->societe_id!=$object->socid)  accessforbidden('',0);
 
-			$soc = new Societe($db);
-			$soc->fetch($object->socid);
-			$selleruserevenustamp=$mysoc->useRevenueStamp();
+		$result=$object->fetch_thirdparty();
 
-			$totalpaye  = $object->getSommePaiement();
-			$totalcreditnotes = $object->getSumCreditNotesUsed();
-			$totaldeposits = $object->getSumDepositsUsed();
-			//print "totalpaye=".$totalpaye." totalcreditnotes=".$totalcreditnotes." totaldeposts=".$totaldeposits." selleruserrevenuestamp=".$selleruserevenustamp;
+		$soc = new Societe($db);
+		$soc->fetch($object->socid);
+		$selleruserevenustamp=$mysoc->useRevenueStamp();
 
-			// We can also use bcadd to avoid pb with floating points
-			// For example print 239.2 - 229.3 - 9.9; does not return 0.
-			//$resteapayer=bcadd($object->total_ttc,$totalpaye,$conf->global->MAIN_MAX_DECIMALS_TOT);
-			//$resteapayer=bcadd($resteapayer,$totalavoir,$conf->global->MAIN_MAX_DECIMALS_TOT);
-			$resteapayer = price2num($object->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits,'MT');
+		$totalpaye  = $object->getSommePaiement();
+		$totalcreditnotes = $object->getSumCreditNotesUsed();
+		$totaldeposits = $object->getSumDepositsUsed();
+		//print "totalpaye=".$totalpaye." totalcreditnotes=".$totalcreditnotes." totaldeposts=".$totaldeposits." selleruserrevenuestamp=".$selleruserevenustamp;
 
-			if ($object->paye) $resteapayer=0;
-			$resteapayeraffiche=$resteapayer;
+		// We can also use bcadd to avoid pb with floating points
+		// For example print 239.2 - 229.3 - 9.9; does not return 0.
+		//$resteapayer=bcadd($object->total_ttc,$totalpaye,$conf->global->MAIN_MAX_DECIMALS_TOT);
+		//$resteapayer=bcadd($resteapayer,$totalavoir,$conf->global->MAIN_MAX_DECIMALS_TOT);
+		$resteapayer = price2num($object->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits,'MT');
 
-			if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS))
-			{
-				$filterabsolutediscount="fk_facture_source IS NULL";  // If we want deposit to be substracted to payments only and not to total of final invoice
-				$filtercreditnote="fk_facture_source IS NOT NULL";    // If we want deposit to be substracted to payments only and not to total of final invoice
-			}
-			else
-			{
-				$filterabsolutediscount="fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description='(DEPOSIT)')";
-				$filtercreditnote="fk_facture_source IS NOT NULL AND description <> '(DEPOSIT)'";
-			}
+		if ($object->paye) $resteapayer=0;
+		$resteapayeraffiche=$resteapayer;
 
-			$absolute_discount=$soc->getAvailableDiscounts('',$filterabsolutediscount);
-			$absolute_creditnote=$soc->getAvailableDiscounts('',$filtercreditnote);
-			$absolute_discount=price2num($absolute_discount,'MT');
-			$absolute_creditnote=price2num($absolute_creditnote,'MT');
+		if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS))
+		{
+			$filterabsolutediscount="fk_facture_source IS NULL";  // If we want deposit to be substracted to payments only and not to total of final invoice
+			$filtercreditnote="fk_facture_source IS NOT NULL";    // If we want deposit to be substracted to payments only and not to total of final invoice
+		}
+		else
+		{
+			$filterabsolutediscount="fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description='(DEPOSIT)')";
+			$filtercreditnote="fk_facture_source IS NOT NULL AND description <> '(DEPOSIT)'";
+		}
 
-			$author = new User($db);
-			if ($object->user_author)
-			{
-				$author->fetch($object->user_author);
-			}
+		$absolute_discount=$soc->getAvailableDiscounts('',$filterabsolutediscount);
+		$absolute_creditnote=$soc->getAvailableDiscounts('',$filtercreditnote);
+		$absolute_discount=price2num($absolute_discount,'MT');
+		$absolute_creditnote=price2num($absolute_creditnote,'MT');
+
+		$author = new User($db);
+		if ($object->user_author)
+		{
+			$author->fetch($object->user_author);
+		}
 
-			$objectidnext=$object->getIdReplacingInvoice();
+		$objectidnext=$object->getIdReplacingInvoice();
 
 
-			$head = facture_prepare_head($object);
+		$head = facture_prepare_head($object);
 
-			dol_fiche_head($head, 'compta', $langs->trans('InvoiceCustomer'), 0, 'bill');
+		dol_fiche_head($head, 'compta', $langs->trans('InvoiceCustomer'), 0, 'bill');
 
-			$formconfirm='';
+		$formconfirm='';
 
-			// Confirmation de la conversion de l'avoir en reduc
-			if ($action == 'converttoreduc')
+		// Confirmation de la conversion de l'avoir en reduc
+		if ($action == 'converttoreduc')
+		{
+			$text=$langs->trans('ConfirmConvertToReduc');
+			$formconfirm=$form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id,$langs->trans('ConvertToReduc'),$text,'confirm_converttoreduc','',"yes",2);
+		}
+
+		// Confirmation to delete invoice
+		if ($action == 'delete')
+		{
+			$text=$langs->trans('ConfirmDeleteBill',$object->ref);
+			$formquestion=array();
+
+			$qualified_for_stock_change=0;
+			if (empty($conf->global->STOCK_SUPPORTS_SERVICES))
 			{
-				$text=$langs->trans('ConfirmConvertToReduc');
-				$formconfirm=$form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id,$langs->trans('ConvertToReduc'),$text,'confirm_converttoreduc','',"yes",2);
+				$qualified_for_stock_change=$object->hasProductsOrServices(2);
 			}
-
-			// Confirmation to delete invoice
-			if ($action == 'delete')
+			else
 			{
-				$text=$langs->trans('ConfirmDeleteBill',$object->ref);
-				$formquestion=array();
-				
-				$qualified_for_stock_change=0;
-				if (empty($conf->global->STOCK_SUPPORTS_SERVICES))
-				{
-					$qualified_for_stock_change=$object->hasProductsOrServices(2);
-				}
-				else
-				{
-					$qualified_for_stock_change=$object->hasProductsOrServices(1);
-				}
-				
-				if ($object->type != 3 && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change && $object->statut>=1)
-				{
-					$langs->load("stocks");
-					require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
-					$formproduct=new FormProduct($db);
-					$label=$object->type==2?$langs->trans("SelectWarehouseForStockDecrease"):$langs->trans("SelectWarehouseForStockIncrease");
-					$formquestion=array(
-					//'text' => $langs->trans("ConfirmClone"),
-					//array('type' => 'checkbox', 'name' => 'clone_content',   'label' => $langs->trans("CloneMainAttributes"),   'value' => 1),
-					//array('type' => 'checkbox', 'name' => 'update_prices',   'label' => $langs->trans("PuttingPricesUpToDate"),   'value' => 1),
-					array('type' => 'other', 'name' => 'idwarehouse',   'label' => $label,   'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'),'idwarehouse','',1,0,0,$langs->trans("NoStockAction"))));
-					$formconfirm=$form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id,$langs->trans('DeleteBill'),$text,'confirm_delete',$formquestion,"yes",1);
-				}else {
-					$formconfirm=$form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id,$langs->trans('DeleteBill'),$text,'confirm_delete','','',1);
-				}
+				$qualified_for_stock_change=$object->hasProductsOrServices(1);
 			}
 
-			// Confirmation de la validation
-			if ($action == 'valid')
+			if ($object->type != 3 && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change && $object->statut>=1)
 			{
-				// on verifie si l'objet est en numerotation provisoire
-				$objectref = substr($object->ref, 1, 4);
-				if ($objectref == 'PROV')
-				{
-					$savdate=$object->date;
-					if (! empty($conf->global->FAC_FORCE_DATE_VALIDATION))
-					{
-						$object->date=dol_now();
-						$object->date_lim_reglement=$object->calculate_date_lim_reglement();
-					}
-					$numref = $object->getNextNumRef($soc);
-					//$object->date=$savdate;
-				}
-				else
-				{
-					$numref = $object->ref;
-				}
-
-				$text=$langs->trans('ConfirmValidateBill',$numref);
-				if (! empty($conf->notification->enabled))
-				{
-					require_once DOL_DOCUMENT_ROOT .'/core/class/notify.class.php';
-					$notify=new Notify($db);
-					$text.='<br>';
-					$text.=$notify->confirmMessage('NOTIFY_VAL_FAC',$object->socid);
-				}
-				$formquestion=array();
-
-				$qualified_for_stock_change=0;
-				if (empty($conf->global->STOCK_SUPPORTS_SERVICES))
-				{
-					$qualified_for_stock_change=$object->hasProductsOrServices(2);
-				}
-				else
-				{
-					$qualified_for_stock_change=$object->hasProductsOrServices(1);
-				}
-
-				if ($object->type != 3 && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change)
-				{
-					$langs->load("stocks");
-					require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
-					$formproduct=new FormProduct($db);
-					$label=$object->type==2?$langs->trans("SelectWarehouseForStockIncrease"):$langs->trans("SelectWarehouseForStockDecrease");
-					$formquestion=array(
-					//'text' => $langs->trans("ConfirmClone"),
-					//array('type' => 'checkbox', 'name' => 'clone_content',   'label' => $langs->trans("CloneMainAttributes"),   'value' => 1),
-					//array('type' => 'checkbox', 'name' => 'update_prices',   'label' => $langs->trans("PuttingPricesUpToDate"),   'value' => 1),
-					array('type' => 'other', 'name' => 'idwarehouse',   'label' => $label,   'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'),'idwarehouse','',1)));
-				}
-				if ($object->type != 2 && $object->total_ttc < 0)    // Can happen only if $conf->global->FACTURE_ENABLE_NEGATIVE is on
-				{
-					$text.='<br>'.img_warning().' '.$langs->trans("ErrorInvoiceOfThisTypeMustBePositive");
-				}
-				$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('ValidateBill'),$text,'confirm_valid',$formquestion,(($object->type != 2 && $object->total_ttc < 0)?"no":"yes"),($conf->notification->enabled?0:2));
+				$langs->load("stocks");
+				require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
+				$formproduct=new FormProduct($db);
+				$label=$object->type==2?$langs->trans("SelectWarehouseForStockDecrease"):$langs->trans("SelectWarehouseForStockIncrease");
+				$formquestion=array(
+				//'text' => $langs->trans("ConfirmClone"),
+				//array('type' => 'checkbox', 'name' => 'clone_content',   'label' => $langs->trans("CloneMainAttributes"),   'value' => 1),
+				//array('type' => 'checkbox', 'name' => 'update_prices',   'label' => $langs->trans("PuttingPricesUpToDate"),   'value' => 1),
+				array('type' => 'other', 'name' => 'idwarehouse',   'label' => $label,   'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'),'idwarehouse','',1,0,0,$langs->trans("NoStockAction"))));
+				$formconfirm=$form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id,$langs->trans('DeleteBill'),$text,'confirm_delete',$formquestion,"yes",1);
+			}else {
+				$formconfirm=$form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id,$langs->trans('DeleteBill'),$text,'confirm_delete','','',1);
 			}
+		}
 
-			// Confirm back to draft status
-			if ($action == 'modif')
+		// Confirmation de la validation
+		if ($action == 'valid')
+		{
+			// on verifie si l'objet est en numerotation provisoire
+			$objectref = substr($object->ref, 1, 4);
+			if ($objectref == 'PROV')
 			{
-				$text=$langs->trans('ConfirmUnvalidateBill',$object->ref);
-				$formquestion=array();
-
-				$qualified_for_stock_change=0;
-				if (empty($conf->global->STOCK_SUPPORTS_SERVICES))
-				{
-					$qualified_for_stock_change=$object->hasProductsOrServices(2);
-				}
-				else
-				{
-					$qualified_for_stock_change=$object->hasProductsOrServices(1);
-				}
-				if ($object->type != 3 && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change)
+				$savdate=$object->date;
+				if (! empty($conf->global->FAC_FORCE_DATE_VALIDATION))
 				{
-					$langs->load("stocks");
-					require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
-					$formproduct=new FormProduct($db);
-					$label=$object->type==2?$langs->trans("SelectWarehouseForStockDecrease"):$langs->trans("SelectWarehouseForStockIncrease");
-					$formquestion=array(
-					//'text' => $langs->trans("ConfirmClone"),
-					//array('type' => 'checkbox', 'name' => 'clone_content',   'label' => $langs->trans("CloneMainAttributes"),   'value' => 1),
-					//array('type' => 'checkbox', 'name' => 'update_prices',   'label' => $langs->trans("PuttingPricesUpToDate"),   'value' => 1),
-					array('type' => 'other', 'name' => 'idwarehouse',   'label' => $label,   'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'),'idwarehouse','',1)));
+					$object->date=dol_now();
+					$object->date_lim_reglement=$object->calculate_date_lim_reglement();
 				}
-
-				$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('UnvalidateBill'),$text,'confirm_modif',$formquestion,"yes",1);
+				$numref = $object->getNextNumRef($soc);
+				//$object->date=$savdate;
 			}
-
-			// Confirmation du classement paye
-			if ($action == 'paid' && $resteapayer <= 0)
+			else
 			{
-				$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('ClassifyPaid'),$langs->trans('ConfirmClassifyPaidBill',$object->ref),'confirm_paid','',"yes",1);
+				$numref = $object->ref;
 			}
-			if ($action == 'paid' && $resteapayer > 0)
-			{
-				// Code
-				$i=0;
-				$close[$i]['code']='discount_vat';$i++;
-				$close[$i]['code']='badcustomer';$i++;
-				// Help
-				$i=0;
-				$close[$i]['label']=$langs->trans("HelpEscompte").'<br><br>'.$langs->trans("ConfirmClassifyPaidPartiallyReasonDiscountVatDesc");$i++;
-				$close[$i]['label']=$langs->trans("ConfirmClassifyPaidPartiallyReasonBadCustomerDesc");$i++;
-				// Texte
-				$i=0;
-				$close[$i]['reason']=$form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonDiscountVat",$resteapayer,$langs->trans("Currency".$conf->currency)),$close[$i]['label'],1);$i++;
-				$close[$i]['reason']=$form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonBadCustomer",$resteapayer,$langs->trans("Currency".$conf->currency)),$close[$i]['label'],1);$i++;
-				// arrayreasons[code]=reason
-				foreach($close as $key => $val)
-				{
-					$arrayreasons[$close[$key]['code']]=$close[$key]['reason'];
-				}
 
-				// Cree un tableau formulaire
-				$formquestion=array(
-				'text' => $langs->trans("ConfirmClassifyPaidPartiallyQuestion"),
-				array('type' => 'radio', 'name' => 'close_code', 'label' => $langs->trans("Reason"),  'values' => $arrayreasons),
-				array('type' => 'text',  'name' => 'close_note', 'label' => $langs->trans("Comment"), 'value' => '', 'size' => '100')
-				);
-				// Paiement incomplet. On demande si motif = escompte ou autre
-				$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('ClassifyPaid'),$langs->trans('ConfirmClassifyPaidPartially',$object->ref),'confirm_paid_partially',$formquestion,"yes");
+			$text=$langs->trans('ConfirmValidateBill',$numref);
+			if (! empty($conf->notification->enabled))
+			{
+				require_once DOL_DOCUMENT_ROOT .'/core/class/notify.class.php';
+				$notify=new Notify($db);
+				$text.='<br>';
+				$text.=$notify->confirmMessage('NOTIFY_VAL_FAC',$object->socid);
 			}
+			$formquestion=array();
 
-			// Confirmation du classement abandonne
-			if ($action == 'canceled')
+			$qualified_for_stock_change=0;
+			if (empty($conf->global->STOCK_SUPPORTS_SERVICES))
 			{
-				// S'il y a une facture de remplacement pas encore validee (etat brouillon),
-				// on ne permet pas de classer abandonner la facture.
-				if ($objectidnext)
-				{
-					$facturereplacement=new Facture($db);
-					$facturereplacement->fetch($objectidnext);
-					$statusreplacement=$facturereplacement->statut;
-				}
-				if ($objectidnext && $statusreplacement == 0)
-				{
-					print '<div class="error">'.$langs->trans("ErrorCantCancelIfReplacementInvoiceNotValidated").'</div>';
-				}
-				else
-				{
-					// Code
-					$close[1]['code']='badcustomer';
-					$close[2]['code']='abandon';
-					// Help
-					$close[1]['label']=$langs->trans("ConfirmClassifyPaidPartiallyReasonBadCustomerDesc");
-					$close[2]['label']=$langs->trans("ConfirmClassifyAbandonReasonOtherDesc");
-					// Texte
-					$close[1]['reason']=$form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonBadCustomer",$object->ref),$close[1]['label'],1);
-					$close[2]['reason']=$form->textwithpicto($langs->transnoentities("ConfirmClassifyAbandonReasonOther"),$close[2]['label'],1);
-					// arrayreasons
-					$arrayreasons[$close[1]['code']]=$close[1]['reason'];
-					$arrayreasons[$close[2]['code']]=$close[2]['reason'];
-
-					// Cree un tableau formulaire
-					$formquestion=array(
-					'text' => $langs->trans("ConfirmCancelBillQuestion"),
-					array('type' => 'radio', 'name' => 'close_code', 'label' => $langs->trans("Reason"),  'values' => $arrayreasons),
-					array('type' => 'text',  'name' => 'close_note', 'label' => $langs->trans("Comment"), 'value' => '', 'size' => '100')
-					);
-
-					$formconfirm=$form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id,$langs->trans('CancelBill'),$langs->trans('ConfirmCancelBill',$object->ref),'confirm_canceled',$formquestion,"yes");
-				}
+				$qualified_for_stock_change=$object->hasProductsOrServices(2);
 			}
-
-			// Confirmation de la suppression d'une ligne produit
-			if ($action == 'ask_deleteline')
+			else
 			{
-				$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 'no', 1);
+				$qualified_for_stock_change=$object->hasProductsOrServices(1);
 			}
 
-			// Clone confirmation
-			if ($action == 'clone')
+			if ($object->type != 3 && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change)
 			{
-				// Create an array for form
+				$langs->load("stocks");
+				require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
+				$formproduct=new FormProduct($db);
+				$label=$object->type==2?$langs->trans("SelectWarehouseForStockIncrease"):$langs->trans("SelectWarehouseForStockDecrease");
 				$formquestion=array(
 				//'text' => $langs->trans("ConfirmClone"),
-				//array('type' => 'checkbox', 'name' => 'clone_content',   'label' => $langs->trans("CloneMainAttributes"),   'value' => 1)
-				);
-				// Paiement incomplet. On demande si motif = escompte ou autre
-				$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('CloneInvoice'),$langs->trans('ConfirmCloneInvoice',$object->ref),'confirm_clone',$formquestion,'yes',1);
+				//array('type' => 'checkbox', 'name' => 'clone_content',   'label' => $langs->trans("CloneMainAttributes"),   'value' => 1),
+				//array('type' => 'checkbox', 'name' => 'update_prices',   'label' => $langs->trans("PuttingPricesUpToDate"),   'value' => 1),
+				array('type' => 'other', 'name' => 'idwarehouse',   'label' => $label,   'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'),'idwarehouse','',1)));
 			}
-
-			if (! $formconfirm)
+			if ($object->type != 2 && $object->total_ttc < 0)    // Can happen only if $conf->global->FACTURE_ENABLE_NEGATIVE is on
 			{
-				$parameters=array('lineid'=>$lineid);
-				$formconfirm=$hookmanager->executeHooks('formConfirm',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
+				$text.='<br>'.img_warning().' '.$langs->trans("ErrorInvoiceOfThisTypeMustBePositive");
 			}
+			$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('ValidateBill'),$text,'confirm_valid',$formquestion,(($object->type != 2 && $object->total_ttc < 0)?"no":"yes"),($conf->notification->enabled?0:2));
+		}
 
-			// Print form confirm
-			print $formconfirm;
-
-
-			// Invoice content
-
-			print '<table class="border" width="100%">';
-
-			$linkback = '<a href="'.DOL_URL_ROOT.'/compta/facture/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
-
-			// Ref
-			print '<tr><td width="20%">'.$langs->trans('Ref').'</td>';
-			print '<td colspan="5">';
-			$morehtmlref='';
-			$discount=new DiscountAbsolute($db);
-			$result=$discount->fetch(0,$object->id);
-			if ($result > 0)
-			{
-				$morehtmlref=' ('.$langs->trans("CreditNoteConvertedIntoDiscount",$discount->getNomUrl(1,'discount')).')';
-			}
-			if ($result < 0)
-			{
-				dol_print_error('',$discount->error);
-			}
-			print $form->showrefnav($object, 'ref', $linkback, 1, 'facnumber', 'ref', $morehtmlref);
-			print '</td></tr>';
+		// Confirm back to draft status
+		if ($action == 'modif')
+		{
+			$text=$langs->trans('ConfirmUnvalidateBill',$object->ref);
+			$formquestion=array();
 
-			// Ref customer
-			print '<tr><td width="20%">';
-			print '<table class="nobordernopadding" width="100%"><tr><td>';
-			print $langs->trans('RefCustomer');
-			print '</td>';
-			if ($action != 'refclient' && ! empty($object->brouillon)) print '<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=refclient&amp;id='.$object->id.'">'.img_edit($langs->trans('Modify')).'</a></td>';
-			print '</tr></table>';
-			print '</td>';
-			print '<td colspan="5">';
-			if ($user->rights->facture->creer && $action == 'refclient')
+			$qualified_for_stock_change=0;
+			if (empty($conf->global->STOCK_SUPPORTS_SERVICES))
 			{
-				print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="post">';
-				print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-				print '<input type="hidden" name="action" value="set_ref_client">';
-				print '<input type="text" class="flat" size="20" name="ref_client" value="'.$object->ref_client.'">';
-				print ' <input type="submit" class="button" value="'.$langs->trans('Modify').'">';
-				print '</form>';
+				$qualified_for_stock_change=$object->hasProductsOrServices(2);
 			}
 			else
 			{
-				print $object->ref_client;
+				$qualified_for_stock_change=$object->hasProductsOrServices(1);
 			}
-			print '</td></tr>';
-
-			// Third party
-			print '<tr><td>';
-			print '<table class="nobordernopadding" width="100%">';
-			print '<tr><td>'.$langs->trans('Company').'</td>';
-			print '</td><td colspan="5">';
-			if (! empty($conf->global->FACTURE_CHANGE_THIRDPARTY) && $action != 'editthirdparty' && $object->brouillon && $user->rights->facture->creer)
-				print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editthirdparty&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetLinkToThirdParty'),1).'</a></td>';
-			print '</tr></table>';
-			print '</td><td colspan="5">';
-			if ($action == 'editthirdparty')
+			if ($object->type != 3 && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change)
 			{
-				$form->form_thirdparty($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->socid,'socid');
+				$langs->load("stocks");
+				require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
+				$formproduct=new FormProduct($db);
+				$label=$object->type==2?$langs->trans("SelectWarehouseForStockDecrease"):$langs->trans("SelectWarehouseForStockIncrease");
+				$formquestion=array(
+				//'text' => $langs->trans("ConfirmClone"),
+				//array('type' => 'checkbox', 'name' => 'clone_content',   'label' => $langs->trans("CloneMainAttributes"),   'value' => 1),
+				//array('type' => 'checkbox', 'name' => 'update_prices',   'label' => $langs->trans("PuttingPricesUpToDate"),   'value' => 1),
+				array('type' => 'other', 'name' => 'idwarehouse',   'label' => $label,   'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'),'idwarehouse','',1)));
 			}
-			else
+
+			$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('UnvalidateBill'),$text,'confirm_modif',$formquestion,"yes",1);
+		}
+
+		// Confirmation du classement paye
+		if ($action == 'paid' && $resteapayer <= 0)
+		{
+			$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('ClassifyPaid'),$langs->trans('ConfirmClassifyPaidBill',$object->ref),'confirm_paid','',"yes",1);
+		}
+		if ($action == 'paid' && $resteapayer > 0)
+		{
+			// Code
+			$i=0;
+			$close[$i]['code']='discount_vat';$i++;
+			$close[$i]['code']='badcustomer';$i++;
+			// Help
+			$i=0;
+			$close[$i]['label']=$langs->trans("HelpEscompte").'<br><br>'.$langs->trans("ConfirmClassifyPaidPartiallyReasonDiscountVatDesc");$i++;
+			$close[$i]['label']=$langs->trans("ConfirmClassifyPaidPartiallyReasonBadCustomerDesc");$i++;
+			// Texte
+			$i=0;
+			$close[$i]['reason']=$form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonDiscountVat",$resteapayer,$langs->trans("Currency".$conf->currency)),$close[$i]['label'],1);$i++;
+			$close[$i]['reason']=$form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonBadCustomer",$resteapayer,$langs->trans("Currency".$conf->currency)),$close[$i]['label'],1);$i++;
+			// arrayreasons[code]=reason
+			foreach($close as $key => $val)
 			{
-				print ' &nbsp;'.$soc->getNomUrl(1,'compta');
-				print ' &nbsp; (<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?socid='.$object->socid.'">'.$langs->trans('OtherBills').'</a>)';
+				$arrayreasons[$close[$key]['code']]=$close[$key]['reason'];
 			}
-			print '</tr>';
 
-			// Type
-			print '<tr><td>'.$langs->trans('Type').'</td><td colspan="5">';
-			print $object->getLibType();
-			if ($object->type == 1)
+			// Cree un tableau formulaire
+			$formquestion=array(
+			'text' => $langs->trans("ConfirmClassifyPaidPartiallyQuestion"),
+			array('type' => 'radio', 'name' => 'close_code', 'label' => $langs->trans("Reason"),  'values' => $arrayreasons),
+			array('type' => 'text',  'name' => 'close_note', 'label' => $langs->trans("Comment"), 'value' => '', 'size' => '100')
+			);
+			// Paiement incomplet. On demande si motif = escompte ou autre
+			$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('ClassifyPaid'),$langs->trans('ConfirmClassifyPaidPartially',$object->ref),'confirm_paid_partially',$formquestion,"yes");
+		}
+
+		// Confirmation du classement abandonne
+		if ($action == 'canceled')
+		{
+			// S'il y a une facture de remplacement pas encore validee (etat brouillon),
+			// on ne permet pas de classer abandonner la facture.
+			if ($objectidnext)
 			{
-				$facreplaced=new Facture($db);
-				$facreplaced->fetch($object->fk_facture_source);
-				print ' ('.$langs->transnoentities("ReplaceInvoice",$facreplaced->getNomUrl(1)).')';
+				$facturereplacement=new Facture($db);
+				$facturereplacement->fetch($objectidnext);
+				$statusreplacement=$facturereplacement->statut;
 			}
-			if ($object->type == 2)
+			if ($objectidnext && $statusreplacement == 0)
 			{
-				$facusing=new Facture($db);
-				$facusing->fetch($object->fk_facture_source);
-				print ' ('.$langs->transnoentities("CorrectInvoice",$facusing->getNomUrl(1)).')';
+				print '<div class="error">'.$langs->trans("ErrorCantCancelIfReplacementInvoiceNotValidated").'</div>';
 			}
-
-			$facidavoir=$object->getListIdAvoirFromInvoice();
-			if (count($facidavoir) > 0)
+			else
 			{
-				print ' ('.$langs->transnoentities("InvoiceHasAvoir");
-				$i=0;
-				foreach($facidavoir as $id)
-				{
-					if ($i==0) print ' ';
-					else print ',';
-					$facavoir=new Facture($db);
-					$facavoir->fetch($id);
-					print $facavoir->getNomUrl(1);
-				}
-				print ')';
+				// Code
+				$close[1]['code']='badcustomer';
+				$close[2]['code']='abandon';
+				// Help
+				$close[1]['label']=$langs->trans("ConfirmClassifyPaidPartiallyReasonBadCustomerDesc");
+				$close[2]['label']=$langs->trans("ConfirmClassifyAbandonReasonOtherDesc");
+				// Texte
+				$close[1]['reason']=$form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonBadCustomer",$object->ref),$close[1]['label'],1);
+				$close[2]['reason']=$form->textwithpicto($langs->transnoentities("ConfirmClassifyAbandonReasonOther"),$close[2]['label'],1);
+				// arrayreasons
+				$arrayreasons[$close[1]['code']]=$close[1]['reason'];
+				$arrayreasons[$close[2]['code']]=$close[2]['reason'];
+
+				// Cree un tableau formulaire
+				$formquestion=array(
+				'text' => $langs->trans("ConfirmCancelBillQuestion"),
+				array('type' => 'radio', 'name' => 'close_code', 'label' => $langs->trans("Reason"),  'values' => $arrayreasons),
+				array('type' => 'text',  'name' => 'close_note', 'label' => $langs->trans("Comment"), 'value' => '', 'size' => '100')
+				);
+
+				$formconfirm=$form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id,$langs->trans('CancelBill'),$langs->trans('ConfirmCancelBill',$object->ref),'confirm_canceled',$formquestion,"yes");
 			}
-			if ($objectidnext > 0)
+		}
+
+		// Confirmation de la suppression d'une ligne produit
+		if ($action == 'ask_deleteline')
+		{
+			$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 'no', 1);
+		}
+
+		// Clone confirmation
+		if ($action == 'clone')
+		{
+			// Create an array for form
+			$formquestion=array(
+			//'text' => $langs->trans("ConfirmClone"),
+			//array('type' => 'checkbox', 'name' => 'clone_content',   'label' => $langs->trans("CloneMainAttributes"),   'value' => 1)
+			);
+			// Paiement incomplet. On demande si motif = escompte ou autre
+			$formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('CloneInvoice'),$langs->trans('ConfirmCloneInvoice',$object->ref),'confirm_clone',$formquestion,'yes',1);
+		}
+
+		if (! $formconfirm)
+		{
+			$parameters=array('lineid'=>$lineid);
+			$formconfirm=$hookmanager->executeHooks('formConfirm',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
+		}
+
+		// Print form confirm
+		print $formconfirm;
+
+
+		// Invoice content
+
+		print '<table class="border" width="100%">';
+
+		$linkback = '<a href="'.DOL_URL_ROOT.'/compta/facture/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
+
+		// Ref
+		print '<tr><td width="20%">'.$langs->trans('Ref').'</td>';
+		print '<td colspan="5">';
+		$morehtmlref='';
+		$discount=new DiscountAbsolute($db);
+		$result=$discount->fetch(0,$object->id);
+		if ($result > 0)
+		{
+			$morehtmlref=' ('.$langs->trans("CreditNoteConvertedIntoDiscount",$discount->getNomUrl(1,'discount')).')';
+		}
+		if ($result < 0)
+		{
+			dol_print_error('',$discount->error);
+		}
+		print $form->showrefnav($object, 'ref', $linkback, 1, 'facnumber', 'ref', $morehtmlref);
+		print '</td></tr>';
+
+		// Ref customer
+		print '<tr><td width="20%">';
+		print '<table class="nobordernopadding" width="100%"><tr><td>';
+		print $langs->trans('RefCustomer');
+		print '</td>';
+		if ($action != 'refclient' && ! empty($object->brouillon)) print '<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=refclient&amp;id='.$object->id.'">'.img_edit($langs->trans('Modify')).'</a></td>';
+		print '</tr></table>';
+		print '</td>';
+		print '<td colspan="5">';
+		if ($user->rights->facture->creer && $action == 'refclient')
+		{
+			print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="post">';
+			print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+			print '<input type="hidden" name="action" value="set_ref_client">';
+			print '<input type="text" class="flat" size="20" name="ref_client" value="'.$object->ref_client.'">';
+			print ' <input type="submit" class="button" value="'.$langs->trans('Modify').'">';
+			print '</form>';
+		}
+		else
+		{
+			print $object->ref_client;
+		}
+		print '</td></tr>';
+
+		// Third party
+		print '<tr><td>';
+		print '<table class="nobordernopadding" width="100%">';
+		print '<tr><td>'.$langs->trans('Company').'</td>';
+		print '</td><td colspan="5">';
+		if (! empty($conf->global->FACTURE_CHANGE_THIRDPARTY) && $action != 'editthirdparty' && $object->brouillon && $user->rights->facture->creer)
+			print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editthirdparty&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetLinkToThirdParty'),1).'</a></td>';
+		print '</tr></table>';
+		print '</td><td colspan="5">';
+		if ($action == 'editthirdparty')
+		{
+			$form->form_thirdparty($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->socid,'socid');
+		}
+		else
+		{
+			print ' &nbsp;'.$soc->getNomUrl(1,'compta');
+			print ' &nbsp; (<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?socid='.$object->socid.'">'.$langs->trans('OtherBills').'</a>)';
+		}
+		print '</tr>';
+
+		// Type
+		print '<tr><td>'.$langs->trans('Type').'</td><td colspan="5">';
+		print $object->getLibType();
+		if ($object->type == 1)
+		{
+			$facreplaced=new Facture($db);
+			$facreplaced->fetch($object->fk_facture_source);
+			print ' ('.$langs->transnoentities("ReplaceInvoice",$facreplaced->getNomUrl(1)).')';
+		}
+		if ($object->type == 2)
+		{
+			$facusing=new Facture($db);
+			$facusing->fetch($object->fk_facture_source);
+			print ' ('.$langs->transnoentities("CorrectInvoice",$facusing->getNomUrl(1)).')';
+		}
+
+		$facidavoir=$object->getListIdAvoirFromInvoice();
+		if (count($facidavoir) > 0)
+		{
+			print ' ('.$langs->transnoentities("InvoiceHasAvoir");
+			$i=0;
+			foreach($facidavoir as $id)
 			{
-				$facthatreplace=new Facture($db);
-				$facthatreplace->fetch($objectidnext);
-				print ' ('.$langs->transnoentities("ReplacedByInvoice",$facthatreplace->getNomUrl(1)).')';
+				if ($i==0) print ' ';
+				else print ',';
+				$facavoir=new Facture($db);
+				$facavoir->fetch($id);
+				print $facavoir->getNomUrl(1);
 			}
-			print '</td></tr>';
+			print ')';
+		}
+		if ($objectidnext > 0)
+		{
+			$facthatreplace=new Facture($db);
+			$facthatreplace->fetch($objectidnext);
+			print ' ('.$langs->transnoentities("ReplacedByInvoice",$facthatreplace->getNomUrl(1)).')';
+		}
+		print '</td></tr>';
 
-			// Relative and absolute discounts
-			$addrelativediscount='<a href="'.DOL_URL_ROOT.'/comm/remise.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'?facid='.$object->id.'">'.$langs->trans("EditRelativeDiscounts").'</a>';
-			$addabsolutediscount='<a href="'.DOL_URL_ROOT.'/comm/remx.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'?facid='.$object->id.'">'.$langs->trans("EditGlobalDiscounts").'</a>';
-			$addcreditnote='<a href="'.DOL_URL_ROOT.'/compta/facture.php?action=create&socid='.$soc->id.'&type=2&backtopage='.urlencode($_SERVER["PHP_SELF"]).'?facid='.$object->id.'">'.$langs->trans("AddCreditNote").'</a>';
+		// Relative and absolute discounts
+		$addrelativediscount='<a href="'.DOL_URL_ROOT.'/comm/remise.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'?facid='.$object->id.'">'.$langs->trans("EditRelativeDiscounts").'</a>';
+		$addabsolutediscount='<a href="'.DOL_URL_ROOT.'/comm/remx.php?id='.$soc->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'?facid='.$object->id.'">'.$langs->trans("EditGlobalDiscounts").'</a>';
+		$addcreditnote='<a href="'.DOL_URL_ROOT.'/compta/facture.php?action=create&socid='.$soc->id.'&type=2&backtopage='.urlencode($_SERVER["PHP_SELF"]).'?facid='.$object->id.'">'.$langs->trans("AddCreditNote").'</a>';
 
-			print '<tr><td>'.$langs->trans('Discounts');
-			print '</td><td colspan="5">';
-			if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client);
-			else print $langs->trans("CompanyHasNoRelativeDiscount");
-			//print ' ('.$addrelativediscount.')';
+		print '<tr><td>'.$langs->trans('Discounts');
+		print '</td><td colspan="5">';
+		if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client);
+		else print $langs->trans("CompanyHasNoRelativeDiscount");
+		//print ' ('.$addrelativediscount.')';
 
-			if ($absolute_discount > 0)
+		if ($absolute_discount > 0)
+		{
+			print '. ';
+			if ($object->statut > 0 || $object->type == 2 || $object->type == 3)
 			{
-				print '. ';
-				if ($object->statut > 0 || $object->type == 2 || $object->type == 3)
+				if ($object->statut == 0)
+				{
+					print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
+					print '. ';
+				}
+				else
 				{
-					if ($object->statut == 0)
+					if ($object->statut < 1 || $object->type == 2 || $object->type == 3)
 					{
-						print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
-						print '. ';
+						$text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
+						print '<br>'.$text.'.<br>';
 					}
 					else
 					{
-						if ($object->statut < 1 || $object->type == 2 || $object->type == 3)
-						{
-							$text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
-							print '<br>'.$text.'.<br>';
-						}
-						else
-						{
-							$text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
-							$text2=$langs->trans("AbsoluteDiscountUse");
-							print $form->textwithpicto($text,$text2);
-						}
+						$text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
+						$text2=$langs->trans("AbsoluteDiscountUse");
+						print $form->textwithpicto($text,$text2);
 					}
 				}
-				else
-				{
-					// Remise dispo de type remise fixe (not credit note)
-					print '<br>';
-					$form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, GETPOST('discountid'), 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount, $resteapayer, ' ('.$addabsolutediscount.')');
-				}
 			}
 			else
 			{
-				if ($absolute_creditnote > 0)    // If not, link will be added later
-				{
-					if ($object->statut == 0 && $object->type != 2 && $object->type != 3) print ' ('.$addabsolutediscount.')<br>';
-					else print '. ';
-				}
+				// Remise dispo de type remise fixe (not credit note)
+				print '<br>';
+				$form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, GETPOST('discountid'), 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount, $resteapayer, ' ('.$addabsolutediscount.')');
+			}
+		}
+		else
+		{
+			if ($absolute_creditnote > 0)    // If not, link will be added later
+			{
+				if ($object->statut == 0 && $object->type != 2 && $object->type != 3) print ' ('.$addabsolutediscount.')<br>';
 				else print '. ';
 			}
-			if ($absolute_creditnote > 0)
+			else print '. ';
+		}
+		if ($absolute_creditnote > 0)
+		{
+			// If validated, we show link "add credit note to payment"
+			if ($object->statut != 1 || $object->type == 2 || $object->type == 3)
 			{
-				// If validated, we show link "add credit note to payment"
-				if ($object->statut != 1 || $object->type == 2 || $object->type == 3)
+				if ($object->statut == 0 && $object->type != 3)
 				{
-					if ($object->statut == 0 && $object->type != 3)
-					{
-						$text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency));
-						print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse"));
-					}
-					else
-					{
-						print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency)).'.';
-					}
+					$text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency));
+					print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse"));
 				}
 				else
 				{
-					// Remise dispo de type avoir
-					if (! $absolute_discount) print '<br>';
-					//$form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, $resteapayer);
-					$form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, 0);    // We must allow credit not even if amount is higher
+					print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency)).'.';
 				}
 			}
-			if (! $absolute_discount && ! $absolute_creditnote)
+			else
 			{
-				print $langs->trans("CompanyHasNoAbsoluteDiscount");
-				if ($object->statut == 0 && $object->type != 2 && $object->type != 3) print ' ('.$addabsolutediscount.')<br>';
-				else print '. ';
+				// Remise dispo de type avoir
+				if (! $absolute_discount) print '<br>';
+				//$form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, $resteapayer);
+				$form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, 0);    // We must allow credit not even if amount is higher
 			}
-			/*if ($object->statut == 0 && $object->type != 2 && $object->type != 3)
-			 {
-			if (! $absolute_discount && ! $absolute_creditnote) print '<br>';
-			//print ' &nbsp; - &nbsp; ';
-			print $addabsolutediscount;
-			//print ' &nbsp; - &nbsp; '.$addcreditnote;      // We disbale link to credit note
-			}*/
-			print '</td></tr>';
+		}
+		if (! $absolute_discount && ! $absolute_creditnote)
+		{
+			print $langs->trans("CompanyHasNoAbsoluteDiscount");
+			if ($object->statut == 0 && $object->type != 2 && $object->type != 3) print ' ('.$addabsolutediscount.')<br>';
+			else print '. ';
+		}
+		/*if ($object->statut == 0 && $object->type != 2 && $object->type != 3)
+		 {
+		if (! $absolute_discount && ! $absolute_creditnote) print '<br>';
+		//print ' &nbsp; - &nbsp; ';
+		print $addabsolutediscount;
+		//print ' &nbsp; - &nbsp; '.$addcreditnote;      // We disbale link to credit note
+		}*/
+		print '</td></tr>';
 
-			// Date invoice
-			print '<tr><td>';
-			print '<table class="nobordernopadding" width="100%"><tr><td>';
-			print $langs->trans('Date');
-			print '</td>';
-			if ($object->type != 2 && $action != 'editinvoicedate' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editinvoicedate&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetDate'),1).'</a></td>';
-			print '</tr></table>';
-			print '</td><td colspan="3">';
+		// Date invoice
+		print '<tr><td>';
+		print '<table class="nobordernopadding" width="100%"><tr><td>';
+		print $langs->trans('Date');
+		print '</td>';
+		if ($object->type != 2 && $action != 'editinvoicedate' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editinvoicedate&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetDate'),1).'</a></td>';
+		print '</tr></table>';
+		print '</td><td colspan="3">';
 
-			if ($object->type != 2)
+		if ($object->type != 2)
+		{
+			if ($action == 'editinvoicedate')
 			{
-				if ($action == 'editinvoicedate')
-				{
-					$form->form_date($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->date,'invoicedate');
-				}
-				else
-				{
-					print dol_print_date($object->date,'daytext');
-				}
+				$form->form_date($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->date,'invoicedate');
 			}
 			else
 			{
 				print dol_print_date($object->date,'daytext');
 			}
-			print '</td>';
-
-
-			/*
-			 * List of payments
-			*/
-
-			$sign=1;
-			if ($object->type == 2) $sign=-1;
-
-			$nbrows=8; $nbcols=2;
-			if (! empty($conf->projet->enabled)) $nbrows++;
-			if (! empty($conf->banque->enabled)) $nbcols++;
-			if($mysoc->localtax1_assuj=="1") $nbrows++;
-			if($mysoc->localtax2_assuj=="1") $nbrows++;
-			if ($selleruserevenustamp) $nbrows++;
-
-			print '<td rowspan="'.$nbrows.'" colspan="2" valign="top">';
+		}
+		else
+		{
+			print dol_print_date($object->date,'daytext');
+		}
+		print '</td>';
 
-			print '<table class="nobordernopadding" width="100%">';
 
-			// List of payments already done
-			print '<tr class="liste_titre">';
-			print '<td>'.($object->type == 2 ? $langs->trans("PaymentsBack") : $langs->trans('Payments')).'</td>';
-			print '<td>'.$langs->trans('Type').'</td>';
-			if (! empty($conf->banque->enabled)) print '<td align="right">'.$langs->trans('BankAccount').'</td>';
-			print '<td align="right">'.$langs->trans('Amount').'</td>';
-			print '<td width="18">&nbsp;</td>';
-			print '</tr>';
+		/*
+		 * List of payments
+		*/
 
-			$var=true;
+		$sign=1;
+		if ($object->type == 2) $sign=-1;
+
+		$nbrows=8; $nbcols=2;
+		if (! empty($conf->projet->enabled)) $nbrows++;
+		if (! empty($conf->banque->enabled)) $nbcols++;
+		if($mysoc->localtax1_assuj=="1") $nbrows++;
+		if($mysoc->localtax2_assuj=="1") $nbrows++;
+		if ($selleruserevenustamp) $nbrows++;
+
+		print '<td rowspan="'.$nbrows.'" colspan="2" valign="top">';
+
+		print '<table class="nobordernopadding" width="100%">';
+
+		// List of payments already done
+		print '<tr class="liste_titre">';
+		print '<td>'.($object->type == 2 ? $langs->trans("PaymentsBack") : $langs->trans('Payments')).'</td>';
+		print '<td>'.$langs->trans('Type').'</td>';
+		if (! empty($conf->banque->enabled)) print '<td align="right">'.$langs->trans('BankAccount').'</td>';
+		print '<td align="right">'.$langs->trans('Amount').'</td>';
+		print '<td width="18">&nbsp;</td>';
+		print '</tr>';
+
+		$var=true;
+
+		// Payments already done (from payment on this invoice)
+		$sql = 'SELECT p.datep as dp, p.num_paiement, p.rowid, p.fk_bank,';
+		$sql.= ' c.code as payment_code, c.libelle as payment_label,';
+		$sql.= ' pf.amount,';
+		$sql.= ' ba.rowid as baid, ba.ref, ba.label';
+		$sql.= ' FROM '.MAIN_DB_PREFIX.'c_paiement as c, '.MAIN_DB_PREFIX.'paiement_facture as pf, '.MAIN_DB_PREFIX.'paiement as p';
+		$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid';
+		$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank_account as ba ON b.fk_account = ba.rowid';
+		$sql.= ' WHERE pf.fk_facture = '.$object->id.' AND p.fk_paiement = c.id AND pf.fk_paiement = p.rowid';
+		$sql.= ' ORDER BY p.datep, p.tms';
 
-			// Payments already done (from payment on this invoice)
-			$sql = 'SELECT p.datep as dp, p.num_paiement, p.rowid, p.fk_bank,';
-			$sql.= ' c.code as payment_code, c.libelle as payment_label,';
-			$sql.= ' pf.amount,';
-			$sql.= ' ba.rowid as baid, ba.ref, ba.label';
-			$sql.= ' FROM '.MAIN_DB_PREFIX.'c_paiement as c, '.MAIN_DB_PREFIX.'paiement_facture as pf, '.MAIN_DB_PREFIX.'paiement as p';
-			$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid';
-			$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank_account as ba ON b.fk_account = ba.rowid';
-			$sql.= ' WHERE pf.fk_facture = '.$object->id.' AND p.fk_paiement = c.id AND pf.fk_paiement = p.rowid';
-			$sql.= ' ORDER BY p.datep, p.tms';
+		$result = $db->query($sql);
+		if ($result)
+		{
+			$num = $db->num_rows($result);
+			$i = 0;
 
-			$result = $db->query($sql);
-			if ($result)
+			//if ($object->type != 2)
+			//{
+			if ($num > 0)
 			{
-				$num = $db->num_rows($result);
-				$i = 0;
-
-				//if ($object->type != 2)
-				//{
-				if ($num > 0)
+				while ($i < $num)
 				{
+					$objp = $db->fetch_object($result);
+					$var=!$var;
+					print '<tr '.$bc[$var].'><td>';
+					print '<a href="'.DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$objp->rowid.'">'.img_object($langs->trans('ShowPayment'),'payment').' ';
+					print dol_print_date($db->jdate($objp->dp),'day').'</a></td>';
+					$label=($langs->trans("PaymentType".$objp->payment_code)!=("PaymentType".$objp->payment_code))?$langs->trans("PaymentType".$objp->payment_code):$objp->payment_label;
+					print '<td>'.$label.' '.$objp->num_paiement.'</td>';
+					if (! empty($conf->banque->enabled))
+					{
+						$bankaccountstatic->id=$objp->baid;
+						$bankaccountstatic->ref=$objp->ref;
+						$bankaccountstatic->label=$objp->ref;
+						print '<td align="right">';
+						if ($bankaccountstatic->id) print $bankaccountstatic->getNomUrl(1,'transactions');
+						print '</td>';
+					}
+					print '<td align="right">'.price($sign * $objp->amount).'</td>';
+					print '<td>&nbsp;</td>';
+					print '</tr>';
+					$i++;
+				}
+			}
+			else
+			{
+				print '<tr '.$bc[$var].'><td colspan="'.$nbcols.'">'.$langs->trans("None").'</td><td></td><td></td></tr>';
+			}
+			//}
+			$db->free($result);
+			}
+			else
+			{
+				dol_print_error($db);
+			}
+
+			if ($object->type != 2)
+			{
+				// Total already paid
+				print '<tr><td colspan="'.$nbcols.'" align="right">';
+				if ($object->type != 3) print $langs->trans('AlreadyPaidNoCreditNotesNoDeposits');
+				else print $langs->trans('AlreadyPaid');
+				print ' :</td><td align="right">'.price($totalpaye).'</td><td>&nbsp;</td></tr>';
+
+				$resteapayeraffiche=$resteapayer;
+
+				// Loop on each credit note or deposit amount applied
+				$creditnoteamount=0;
+				$depositamount=0;
+				$sql = "SELECT re.rowid, re.amount_ht, re.amount_tva, re.amount_ttc,";
+				$sql.= " re.description, re.fk_facture_source";
+				$sql.= " FROM ".MAIN_DB_PREFIX ."societe_remise_except as re";
+				$sql.= " WHERE fk_facture = ".$object->id;
+				$resql=$db->query($sql);
+				if ($resql)
+				{
+					$num = $db->num_rows($resql);
+					$i = 0;
+					$invoice=new Facture($db);
 					while ($i < $num)
 					{
-						$objp = $db->fetch_object($result);
-						$var=!$var;
-						print '<tr '.$bc[$var].'><td>';
-						print '<a href="'.DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$objp->rowid.'">'.img_object($langs->trans('ShowPayment'),'payment').' ';
-						print dol_print_date($db->jdate($objp->dp),'day').'</a></td>';
-						$label=($langs->trans("PaymentType".$objp->payment_code)!=("PaymentType".$objp->payment_code))?$langs->trans("PaymentType".$objp->payment_code):$objp->payment_label;
-						print '<td>'.$label.' '.$objp->num_paiement.'</td>';
-						if (! empty($conf->banque->enabled))
-						{
-							$bankaccountstatic->id=$objp->baid;
-							$bankaccountstatic->ref=$objp->ref;
-							$bankaccountstatic->label=$objp->ref;
-							print '<td align="right">';
-							if ($bankaccountstatic->id) print $bankaccountstatic->getNomUrl(1,'transactions');
-							print '</td>';
-						}
-						print '<td align="right">'.price($sign * $objp->amount).'</td>';
-						print '<td>&nbsp;</td>';
-						print '</tr>';
+						$obj = $db->fetch_object($resql);
+						$invoice->fetch($obj->fk_facture_source);
+						print '<tr><td colspan="'.$nbcols.'" align="right">';
+						if ($invoice->type == 2) print $langs->trans("CreditNote").' ';
+						if ($invoice->type == 3) print $langs->trans("Deposit").' ';
+						print $invoice->getNomUrl(0);
+						print ' :</td>';
+						print '<td align="right">'.price($obj->amount_ttc).'</td>';
+						print '<td align="right">';
+						print '<a href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&action=unlinkdiscount&discountid='.$obj->rowid.'">'.img_delete().'</a>';
+						print '</td></tr>';
 						$i++;
+						if ($invoice->type == 2) $creditnoteamount += $obj->amount_ttc;
+						if ($invoice->type == 3) $depositamount += $obj->amount_ttc;
 					}
 				}
 				else
 				{
-					print '<tr '.$bc[$var].'><td colspan="'.$nbcols.'">'.$langs->trans("None").'</td><td></td><td></td></tr>';
+					dol_print_error($db);
 				}
-				//}
-				$db->free($result);
+
+				// Paye partiellement 'escompte'
+				if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'discount_vat')
+				{
+					print '<tr><td colspan="'.$nbcols.'" align="right" nowrap="1">';
+					print $form->textwithpicto($langs->trans("Discount").':',$langs->trans("HelpEscompte"),-1);
+					print '</td><td align="right">'.price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye).'</td><td>&nbsp;</td></tr>';
+					$resteapayeraffiche=0;
 				}
-				else
+				// Paye partiellement ou Abandon 'badcustomer'
+				if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'badcustomer')
 				{
-					dol_print_error($db);
+					print '<tr><td colspan="'.$nbcols.'" align="right" nowrap="1">';
+					print $form->textwithpicto($langs->trans("Abandoned").':',$langs->trans("HelpAbandonBadCustomer"),-1);
+					print '</td><td align="right">'.price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye).'</td><td>&nbsp;</td></tr>';
+					//$resteapayeraffiche=0;
 				}
-
-				if ($object->type != 2)
+				// Paye partiellement ou Abandon 'product_returned'
+				if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'product_returned')
 				{
-					// Total already paid
-					print '<tr><td colspan="'.$nbcols.'" align="right">';
-					if ($object->type != 3) print $langs->trans('AlreadyPaidNoCreditNotesNoDeposits');
-					else print $langs->trans('AlreadyPaid');
-					print ' :</td><td align="right">'.price($totalpaye).'</td><td>&nbsp;</td></tr>';
-
-					$resteapayeraffiche=$resteapayer;
-
-					// Loop on each credit note or deposit amount applied
-					$creditnoteamount=0;
-					$depositamount=0;
-					$sql = "SELECT re.rowid, re.amount_ht, re.amount_tva, re.amount_ttc,";
-					$sql.= " re.description, re.fk_facture_source";
-					$sql.= " FROM ".MAIN_DB_PREFIX ."societe_remise_except as re";
-					$sql.= " WHERE fk_facture = ".$object->id;
-					$resql=$db->query($sql);
-					if ($resql)
-					{
-						$num = $db->num_rows($resql);
-						$i = 0;
-						$invoice=new Facture($db);
-						while ($i < $num)
-						{
-							$obj = $db->fetch_object($resql);
-							$invoice->fetch($obj->fk_facture_source);
-							print '<tr><td colspan="'.$nbcols.'" align="right">';
-							if ($invoice->type == 2) print $langs->trans("CreditNote").' ';
-							if ($invoice->type == 3) print $langs->trans("Deposit").' ';
-							print $invoice->getNomUrl(0);
-							print ' :</td>';
-							print '<td align="right">'.price($obj->amount_ttc).'</td>';
-							print '<td align="right">';
-							print '<a href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&action=unlinkdiscount&discountid='.$obj->rowid.'">'.img_delete().'</a>';
-							print '</td></tr>';
-							$i++;
-							if ($invoice->type == 2) $creditnoteamount += $obj->amount_ttc;
-							if ($invoice->type == 3) $depositamount += $obj->amount_ttc;
-						}
-					}
-					else
-					{
-						dol_print_error($db);
-					}
-
-					// Paye partiellement 'escompte'
-					if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'discount_vat')
-					{
-						print '<tr><td colspan="'.$nbcols.'" align="right" nowrap="1">';
-						print $form->textwithpicto($langs->trans("Discount").':',$langs->trans("HelpEscompte"),-1);
-						print '</td><td align="right">'.price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye).'</td><td>&nbsp;</td></tr>';
-						$resteapayeraffiche=0;
-					}
-					// Paye partiellement ou Abandon 'badcustomer'
-					if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'badcustomer')
-					{
-						print '<tr><td colspan="'.$nbcols.'" align="right" nowrap="1">';
-						print $form->textwithpicto($langs->trans("Abandoned").':',$langs->trans("HelpAbandonBadCustomer"),-1);
-						print '</td><td align="right">'.price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye).'</td><td>&nbsp;</td></tr>';
-						//$resteapayeraffiche=0;
-					}
-					// Paye partiellement ou Abandon 'product_returned'
-					if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'product_returned')
-					{
-						print '<tr><td colspan="'.$nbcols.'" align="right" nowrap="1">';
-						print $form->textwithpicto($langs->trans("ProductReturned").':',$langs->trans("HelpAbandonProductReturned"),-1);
-						print '</td><td align="right">'.price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye).'</td><td>&nbsp;</td></tr>';
-						$resteapayeraffiche=0;
-					}
-					// Paye partiellement ou Abandon 'abandon'
-					if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'abandon')
-					{
-						print '<tr><td colspan="'.$nbcols.'" align="right" nowrap="1">';
-						$text=$langs->trans("HelpAbandonOther");
-						if ($object->close_note) $text.='<br><br><b>'.$langs->trans("Reason").'</b>:'.$object->close_note;
-						print $form->textwithpicto($langs->trans("Abandoned").':',$text,-1);
-						print '</td><td align="right">'.price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye).'</td><td>&nbsp;</td></tr>';
-						$resteapayeraffiche=0;
-					}
-
-					// Billed
-					print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans("Billed").' :</td><td align="right" style="border: 1px solid;">'.price($object->total_ttc).'</td><td>&nbsp;</td></tr>';
-
-					// Remainder to pay
-					print '<tr><td colspan="'.$nbcols.'" align="right">';
-					if ($resteapayeraffiche >= 0) print $langs->trans('RemainderToPay');
-					else print $langs->trans('ExcessReceived');
-					print ' :</td>';
-					print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($resteapayeraffiche).'</b></td>';
-					print '<td nowrap="nowrap">&nbsp;</td></tr>';
+					print '<tr><td colspan="'.$nbcols.'" align="right" nowrap="1">';
+					print $form->textwithpicto($langs->trans("ProductReturned").':',$langs->trans("HelpAbandonProductReturned"),-1);
+					print '</td><td align="right">'.price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye).'</td><td>&nbsp;</td></tr>';
+					$resteapayeraffiche=0;
 				}
-				else	// Credit note
+				// Paye partiellement ou Abandon 'abandon'
+				if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'abandon')
 				{
-					// Total already paid back
-					print '<tr><td colspan="'.$nbcols.'" align="right">';
-					print $langs->trans('AlreadyPaidBack');
-					print ' :</td><td align="right">'.price($sign * $totalpaye).'</td><td>&nbsp;</td></tr>';
-
-					// Billed
-					print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans("Billed").' :</td><td align="right" style="border: 1px solid;">'.price($sign * $object->total_ttc).'</td><td>&nbsp;</td></tr>';
-
-					// Remainder to pay back
-					print '<tr><td colspan="'.$nbcols.'" align="right">';
-					if ($resteapayeraffiche <= 0) print $langs->trans('RemainderToPayBack');
-					else print $langs->trans('ExcessPaydBack');
-					print ' :</td>';
-					print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($sign * $resteapayeraffiche).'</b></td>';
-					print '<td nowrap="nowrap">&nbsp;</td></tr>';
-
-					// Sold credit note
-					//print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('TotalTTC').' :</td>';
-					//print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($sign * $object->total_ttc).'</b></td><td>&nbsp;</td></tr>';
+					print '<tr><td colspan="'.$nbcols.'" align="right" nowrap="1">';
+					$text=$langs->trans("HelpAbandonOther");
+					if ($object->close_note) $text.='<br><br><b>'.$langs->trans("Reason").'</b>:'.$object->close_note;
+					print $form->textwithpicto($langs->trans("Abandoned").':',$text,-1);
+					print '</td><td align="right">'.price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye).'</td><td>&nbsp;</td></tr>';
+					$resteapayeraffiche=0;
 				}
 
-				print '</table>';
+				// Billed
+				print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans("Billed").' :</td><td align="right" style="border: 1px solid;">'.price($object->total_ttc).'</td><td>&nbsp;</td></tr>';
 
-				// Margin Infos
-				if (! empty($conf->margin->enabled))
-				{
-			  print '<br>';
-			  $object->displayMarginInfos($object->statut > 0);
-				}
+				// Remainder to pay
+				print '<tr><td colspan="'.$nbcols.'" align="right">';
+				if ($resteapayeraffiche >= 0) print $langs->trans('RemainderToPay');
+				else print $langs->trans('ExcessReceived');
+				print ' :</td>';
+				print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($resteapayeraffiche).'</b></td>';
+				print '<td nowrap="nowrap">&nbsp;</td></tr>';
+			}
+			else	// Credit note
+			{
+				// Total already paid back
+				print '<tr><td colspan="'.$nbcols.'" align="right">';
+				print $langs->trans('AlreadyPaidBack');
+				print ' :</td><td align="right">'.price($sign * $totalpaye).'</td><td>&nbsp;</td></tr>';
 
-				print '</td></tr>';
+				// Billed
+				print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans("Billed").' :</td><td align="right" style="border: 1px solid;">'.price($sign * $object->total_ttc).'</td><td>&nbsp;</td></tr>';
 
-				// Conditions de reglement
-				print '<tr><td>';
-				print '<table class="nobordernopadding" width="100%"><tr><td>';
-				print $langs->trans('PaymentConditionsShort');
-				print '</td>';
-				if ($object->type != 2 && $action != 'editconditions' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editconditions&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetConditions'),1).'</a></td>';
-				print '</tr></table>';
-				print '</td><td colspan="3">';
-				if ($object->type != 2)
+				// Remainder to pay back
+				print '<tr><td colspan="'.$nbcols.'" align="right">';
+				if ($resteapayeraffiche <= 0) print $langs->trans('RemainderToPayBack');
+				else print $langs->trans('ExcessPaydBack');
+				print ' :</td>';
+				print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($sign * $resteapayeraffiche).'</b></td>';
+				print '<td nowrap="nowrap">&nbsp;</td></tr>';
+
+				// Sold credit note
+				//print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('TotalTTC').' :</td>';
+				//print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($sign * $object->total_ttc).'</b></td><td>&nbsp;</td></tr>';
+			}
+
+			print '</table>';
+
+			// Margin Infos
+			if (! empty($conf->margin->enabled))
+			{
+				print '<br>';
+				$object->displayMarginInfos($object->statut > 0);
+			}
+
+			print '</td></tr>';
+
+			// Conditions de reglement
+			print '<tr><td>';
+			print '<table class="nobordernopadding" width="100%"><tr><td>';
+			print $langs->trans('PaymentConditionsShort');
+			print '</td>';
+			if ($object->type != 2 && $action != 'editconditions' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editconditions&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetConditions'),1).'</a></td>';
+			print '</tr></table>';
+			print '</td><td colspan="3">';
+			if ($object->type != 2)
+			{
+				if ($action == 'editconditions')
 				{
-					if ($action == 'editconditions')
-					{
-						$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->cond_reglement_id,'cond_reglement_id');
-					}
-					else
-					{
-						$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->cond_reglement_id,'none');
-					}
+					$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->cond_reglement_id,'cond_reglement_id');
 				}
 				else
 				{
-					print '&nbsp;';
+					$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->cond_reglement_id,'none');
 				}
-				print '</td></tr>';
+			}
+			else
+			{
+				print '&nbsp;';
+			}
+			print '</td></tr>';
 
-				// Date payment term
-				print '<tr><td>';
-				print '<table class="nobordernopadding" width="100%"><tr><td>';
-				print $langs->trans('DateMaxPayment');
-				print '</td>';
-				if ($object->type != 2 && $action != 'editpaymentterm' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editpaymentterm&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetDate'),1).'</a></td>';
-				print '</tr></table>';
-				print '</td><td colspan="3">';
-				if ($object->type != 2)
+			// Date payment term
+			print '<tr><td>';
+			print '<table class="nobordernopadding" width="100%"><tr><td>';
+			print $langs->trans('DateMaxPayment');
+			print '</td>';
+			if ($object->type != 2 && $action != 'editpaymentterm' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editpaymentterm&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetDate'),1).'</a></td>';
+			print '</tr></table>';
+			print '</td><td colspan="3">';
+			if ($object->type != 2)
+			{
+				if ($action == 'editpaymentterm')
 				{
-					if ($action == 'editpaymentterm')
-					{
-						$form->form_date($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->date_lim_reglement,'paymentterm');
-					}
-					else
-					{
-						print dol_print_date($object->date_lim_reglement,'daytext');
-						if ($object->date_lim_reglement < ($now - $conf->facture->client->warning_delay) && ! $object->paye && $object->statut == 1 && ! isset($object->am)) print img_warning($langs->trans('Late'));
-					}
+					$form->form_date($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->date_lim_reglement,'paymentterm');
 				}
 				else
 				{
-					print '&nbsp;';
+					print dol_print_date($object->date_lim_reglement,'daytext');
+					if ($object->date_lim_reglement < ($now - $conf->facture->client->warning_delay) && ! $object->paye && $object->statut == 1 && ! isset($object->am)) print img_warning($langs->trans('Late'));
 				}
-				print '</td></tr>';
+			}
+			else
+			{
+				print '&nbsp;';
+			}
+			print '</td></tr>';
 
-				// Payment mode
+			// Payment mode
+			print '<tr><td>';
+			print '<table class="nobordernopadding" width="100%"><tr><td>';
+			print $langs->trans('PaymentMode');
+			print '</td>';
+			if ($action != 'editmode' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editmode&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetMode'),1).'</a></td>';
+			print '</tr></table>';
+			print '</td><td colspan="3">';
+			if ($action == 'editmode')
+			{
+				$form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->mode_reglement_id,'mode_reglement_id');
+			}
+			else
+			{
+				$form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->mode_reglement_id,'none');
+			}
+			print '</td></tr>';
+
+			// Amount
+			print '<tr><td>'.$langs->trans('AmountHT').'</td>';
+			print '<td align="right" colspan="3" nowrap>'.price($object->total_ht,1,'',1,-1,-1,$conf->currency).'</td></tr>';
+			print '<tr><td>'.$langs->trans('AmountVAT').'</td><td align="right" colspan="3" nowrap>'.price($object->total_tva,1,'',1,-1,-1,$conf->currency).'</td></tr>';
+			print '</tr>';
+
+			// Amount Local Taxes
+			if ($mysoc->localtax1_assuj=="1" && $mysoc->useLocalTax(1)) //Localtax1 (example RE)
+			{
+				print '<tr><td>'.$langs->transcountry("AmountLT1",$mysoc->country_code).'</td>';
+				print '<td align="right" colspan="3" nowrap>'.price($object->total_localtax1,1,'',1,-1,-1,$conf->currency).'</td></tr>';
+			}
+			if ($mysoc->localtax2_assuj=="1" && $mysoc->useLocalTax(2)) //Localtax2 (example IRPF)
+			{
+				print '<tr><td>'.$langs->transcountry("AmountLT2",$mysoc->country_code).'</td>';
+				print '<td align="right" colspan="3" nowrap>'.price($object->total_localtax2,1,'',1,-1,-1,$conf->currency).'</td></tr>';
+			}
+
+			// Revenue stamp
+			if ($selleruserevenustamp)		// Test company use revenue stamp
+			{
 				print '<tr><td>';
 				print '<table class="nobordernopadding" width="100%"><tr><td>';
-				print $langs->trans('PaymentMode');
+				print $langs->trans('RevenueStamp');
 				print '</td>';
-				if ($action != 'editmode' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editmode&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetMode'),1).'</a></td>';
+				if ($action != 'editrevenuestamp' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editrevenuestamp&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetRevenuStamp'),1).'</a></td>';
 				print '</tr></table>';
-				print '</td><td colspan="3">';
-				if ($action == 'editmode')
+				print '</td><td colspan="3" align="right">';
+				if ($action == 'editrevenuestamp')
 				{
-					$form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->mode_reglement_id,'mode_reglement_id');
+					print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="post">';
+					print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+					print '<input type="hidden" name="action" value="setrevenuestamp">';
+					print $formother->select_revenue_stamp(GETPOST('revenuestamp'), 'revenuestamp', $mysoc->country_code);
+					//print '<input type="text" class="flat" size="4" name="revenuestamp" value="'.price2num($object->revenuestamp).'">';
+					print ' <input type="submit" class="button" value="'.$langs->trans('Modify').'">';
+					print '</form>';
 				}
 				else
 				{
-					$form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->mode_reglement_id,'none');
+					print price($object->revenuestamp,1,'',1,-1,-1,$conf->currency);
 				}
 				print '</td></tr>';
+			}
 
-				// Amount
-				print '<tr><td>'.$langs->trans('AmountHT').'</td>';
-				print '<td align="right" colspan="3" nowrap>'.price($object->total_ht,1,'',1,-1,-1,$conf->currency).'</td></tr>';
-				print '<tr><td>'.$langs->trans('AmountVAT').'</td><td align="right" colspan="3" nowrap>'.price($object->total_tva,1,'',1,-1,-1,$conf->currency).'</td></tr>';
-				print '</tr>';
+			// Total with tax
+			print '<tr><td>'.$langs->trans('AmountTTC').'</td><td align="right" colspan="3" nowrap>'.price($object->total_ttc,1,'',1,-1,-1,$conf->currency).'</td></tr>';
+
+			// Statut
+			print '<tr><td>'.$langs->trans('Status').'</td>';
+			print '<td align="left" colspan="3">'.($object->getLibStatut(4,$totalpaye)).'</td></tr>';
 
-				// Amount Local Taxes
-				if ($mysoc->localtax1_assuj=="1" && $mysoc->useLocalTax(1)) //Localtax1 (example RE)
+			// Project
+			if (! empty($conf->projet->enabled))
+			{
+				$langs->load('projects');
+				print '<tr>';
+				print '<td>';
+
+				print '<table class="nobordernopadding" width="100%"><tr><td>';
+				print $langs->trans('Project');
+				print '</td>';
+				if ($action != 'classify')
 				{
-					print '<tr><td>'.$langs->transcountry("AmountLT1",$mysoc->country_code).'</td>';
-					print '<td align="right" colspan="3" nowrap>'.price($object->total_localtax1,1,'',1,-1,-1,$conf->currency).'</td></tr>';
+					print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=classify&amp;facid='.$object->id.'">';
+					print img_edit($langs->trans('SetProject'),1);
+					print '</a></td>';
 				}
-				if ($mysoc->localtax2_assuj=="1" && $mysoc->useLocalTax(2)) //Localtax2 (example IRPF)
+				print '</tr></table>';
+
+				print '</td><td colspan="3">';
+				if ($action == 'classify')
+				{
+					$form->form_project($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->socid,$object->fk_project,'projectid');
+				}
+				else
 				{
-					print '<tr><td>'.$langs->transcountry("AmountLT2",$mysoc->country_code).'</td>';
-					print '<td align="right" colspan="3" nowrap>'.price($object->total_localtax2,1,'',1,-1,-1,$conf->currency).'</td></tr>';
+					$form->form_project($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->socid,$object->fk_project,'none');
 				}
+				print '</td>';
+				print '</tr>';
+			}
+
+			// Other attributes
+			$res=$object->fetch_optionals($object->id,$extralabels);
+			$parameters=array('colspan' => ' colspan="2"');
+			$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
+			if (empty($reshook) && ! empty($extrafields->attribute_label))
+			{
 
-				// Revenue stamp
-				if ($selleruserevenustamp)		// Test company use revenue stamp
+				if ($action == 'edit_extras')
 				{
-					print '<tr><td>';
-					print '<table class="nobordernopadding" width="100%"><tr><td>';
-					print $langs->trans('RevenueStamp');
-					print '</td>';
-					if ($action != 'editrevenuestamp' && ! empty($object->brouillon) && $user->rights->facture->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editrevenuestamp&amp;facid='.$object->id.'">'.img_edit($langs->trans('SetRevenuStamp'),1).'</a></td>';
-					print '</tr></table>';
-					print '</td><td colspan="3" align="right">';
-					if ($action == 'editrevenuestamp')
-					{
-						print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="post">';
-						print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-						print '<input type="hidden" name="action" value="setrevenuestamp">';
-						print $formother->select_revenue_stamp(GETPOST('revenuestamp'), 'revenuestamp', $mysoc->country_code);
-						//print '<input type="text" class="flat" size="4" name="revenuestamp" value="'.price2num($object->revenuestamp).'">';
-						print ' <input type="submit" class="button" value="'.$langs->trans('Modify').'">';
-						print '</form>';
-					}
-					else
-					{
-						print price($object->revenuestamp,1,'',1,-1,-1,$conf->currency);
-					}
-					print '</td></tr>';
+					print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
+					print '<input type="hidden" name="action" value="update_extras">';
+					print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+					print '<input type="hidden" name="id" value="'.$object->id.'">';
 				}
 
-				// Total with tax
-				print '<tr><td>'.$langs->trans('AmountTTC').'</td><td align="right" colspan="3" nowrap>'.price($object->total_ttc,1,'',1,-1,-1,$conf->currency).'</td></tr>';
-
-				// Statut
-				print '<tr><td>'.$langs->trans('Status').'</td>';
-				print '<td align="left" colspan="3">'.($object->getLibStatut(4,$totalpaye)).'</td></tr>';
-
-				// Project
-				if (! empty($conf->projet->enabled))
+				foreach($extrafields->attribute_label as $key=>$label)
 				{
-					$langs->load('projects');
-					print '<tr>';
-					print '<td>';
-
-					print '<table class="nobordernopadding" width="100%"><tr><td>';
-					print $langs->trans('Project');
-					print '</td>';
-					if ($action != 'classify')
-					{
-						print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=classify&amp;facid='.$object->id.'">';
-						print img_edit($langs->trans('SetProject'),1);
-						print '</a></td>';
-					}
-					print '</tr></table>';
-
-					print '</td><td colspan="3">';
-					if ($action == 'classify')
+					$value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]);
+					if ($extrafields->attribute_type[$key] == 'separate')
 					{
-						$form->form_project($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->socid,$object->fk_project,'projectid');
+						print $extrafields->showSeparator($key);
 					}
 					else
 					{
-						$form->form_project($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->socid,$object->fk_project,'none');
-					}
-					print '</td>';
-					print '</tr>';
-				}
-
-				// Other attributes
-				$res=$object->fetch_optionals($object->id,$extralabels);
-				$parameters=array('colspan' => ' colspan="2"');
-				$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
-				if (empty($reshook) && ! empty($extrafields->attribute_label))
-				{
-
-					if ($action == 'edit_extras')
-					{
-						print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
-						print '<input type="hidden" name="action" value="update_extras">';
-						print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-						print '<input type="hidden" name="id" value="'.$object->id.'">';
-					}
+						print '<tr><td';
+						if (! empty($extrafields->attribute_required[$key])) print ' class="fieldrequired"';
+						print '>'.$label.'</td><td colspan="5">';
+						// Convert date into timestamp format
+						if (in_array($extrafields->attribute_type[$key],array('date','datetime')))
+						{
+							$value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$object->array_options['options_'.$key];
+						}
 
-					foreach($extrafields->attribute_label as $key=>$label)
-					{
-						$value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]);
-						if ($extrafields->attribute_type[$key] == 'separate')
+						if ($action == 'edit_extras' && $user->rights->facture->creer)
 						{
-							print $extrafields->showSeparator($key);
+							print $extrafields->showInputField($key,$value);
 						}
 						else
 						{
-							print '<tr><td';
-							if (! empty($extrafields->attribute_required[$key])) print ' class="fieldrequired"';
-							print '>'.$label.'</td><td colspan="5">';
-							// Convert date into timestamp format
-							if (in_array($extrafields->attribute_type[$key],array('date','datetime')))
-							{
-								$value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$object->array_options['options_'.$key];
-							}
-
-							if ($action == 'edit_extras' && $user->rights->facture->creer)
-							{
-								print $extrafields->showInputField($key,$value);
-							}
-							else
-							{
-								print $extrafields->showOutputField($key,$value);
-							}
-							print '</td></tr>'."\n";
+							print $extrafields->showOutputField($key,$value);
 						}
+						print '</td></tr>'."\n";
 					}
+				}
 
-					if(count($extrafields->attribute_label) > 0) {
+				if(count($extrafields->attribute_label) > 0) {
 
-						if ($action == 'edit_extras' && $user->rights->facture->creer)
-						{
-							print '<tr><td></td><td colspan="5">';
-							print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
-							print '</form>';
-							print '</td></tr>';
+					if ($action == 'edit_extras' && $user->rights->facture->creer)
+					{
+						print '<tr><td></td><td colspan="5">';
+						print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
+						print '</form>';
+						print '</td></tr>';
 
-						}
-						else {
-							if ($object->statut == 0 && $user->rights->facture->creer)
-							{
-								print '<tr><td></td><td><a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras">'.img_picto('','edit').' '.$langs->trans('Modify').'</a></td></tr>';
-							}
+					}
+					else {
+						if ($object->statut == 0 && $user->rights->facture->creer)
+						{
+							print '<tr><td></td><td><a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras">'.img_picto('','edit').' '.$langs->trans('Modify').'</a></td></tr>';
 						}
 					}
 				}
+			}
 
-				print '</table><br>';
+			print '</table><br>';
 
-				if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
-				{
-					$blocname = 'contacts';
-					$title = $langs->trans('ContactsAddresses');
-					include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php';
-				}
+			if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
+			{
+				$blocname = 'contacts';
+				$title = $langs->trans('ContactsAddresses');
+				include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php';
+			}
 
-				if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB))
-				{
-					$blocname = 'notes';
-					$title = $langs->trans('Notes');
-					include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php';
-				}
+			if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB))
+			{
+				$blocname = 'notes';
+				$title = $langs->trans('Notes');
+				include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php';
+			}
 
-				/*
-				 * Lines
-				*/
-				$result = $object->getLinesArray();
+			/*
+			 * Lines
+			*/
+			$result = $object->getLinesArray();
 
-				if (! empty($conf->use_javascript_ajax) && $object->statut == 0)
-				{
-					include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
-				}
+			if (! empty($conf->use_javascript_ajax) && $object->statut == 0)
+			{
+				include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
+			}
 
-				print '<table id="tablelines" class="noborder noshadow" width="100%">';
+			print '<table id="tablelines" class="noborder noshadow" width="100%">';
 
-				// Show object lines
-				if (! empty($object->lines))
-					$ret=$object->printObjectLines($action,$mysoc,$soc,$lineid,1);
+			// Show object lines
+			if (! empty($object->lines))
+				$ret=$object->printObjectLines($action,$mysoc,$soc,$lineid,1);
 
-				/*
-				 * Form to add new line
-				*/
-				if ($object->statut == 0 && $user->rights->facture->creer && $action <> 'valid' && $action <> 'editline')
+			/*
+			 * Form to add new line
+			*/
+			if ($object->statut == 0 && $user->rights->facture->creer && $action <> 'valid' && $action <> 'editline')
+			{
+				$var=true;
+
+				if ($conf->global->MAIN_FEATURES_LEVEL > 1)
+				{
+					// Add free or predefined products/services
+					$object->formAddObjectLine(1,$mysoc,$soc);
+				}
+				else
 				{
-					$var=true;
+					// Add free products/services
+					$object->formAddFreeProduct(1,$mysoc,$soc);
 
-					if ($conf->global->MAIN_FEATURES_LEVEL > 1)
-					{
-						// Add free or predefined products/services
-						$object->formAddObjectLine(1,$mysoc,$soc);
-					}
-					else
+					// Add predefined products/services
+					if (! empty($conf->product->enabled) || ! empty($conf->service->enabled))
 					{
-						// Add free products/services
-						$object->formAddFreeProduct(1,$mysoc,$soc);
-
-						// Add predefined products/services
-						if (! empty($conf->product->enabled) || ! empty($conf->service->enabled))
-						{
-							$var=!$var;
-							$object->formAddPredefinedProduct(1,$mysoc,$soc);
-						}
+						$var=!$var;
+						$object->formAddPredefinedProduct(1,$mysoc,$soc);
 					}
-
-					$parameters=array();
-					$reshook=$hookmanager->executeHooks('formAddObjectLine',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
 				}
 
-				print "</table>\n";
+				$parameters=array();
+				$reshook=$hookmanager->executeHooks('formAddObjectLine',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
+			}
 
-				print "</div>\n";
+			print "</table>\n";
 
+			print "</div>\n";
 
-				/*
-				 * Boutons actions
-				*/
 
-				if ($action != 'prerelance' && $action != 'presend')
+			/*
+			 * Boutons actions
+			*/
+
+			if ($action != 'prerelance' && $action != 'presend')
+			{
+				if ($user->societe_id == 0 && $action <> 'valid' && $action <> 'editline')
 				{
-					if ($user->societe_id == 0 && $action <> 'valid' && $action <> 'editline')
+					print '<div class="tabsAction">';
+
+					// Editer une facture deja validee, sans paiement effectue et pas exporte en compta
+					if ($object->statut == 1)
 					{
-						print '<div class="tabsAction">';
+						// On verifie si les lignes de factures ont ete exportees en compta et/ou ventilees
+						$ventilExportCompta = $object->getVentilExportCompta();
 
-						// Editer une facture deja validee, sans paiement effectue et pas exporte en compta
-						if ($object->statut == 1)
+						if ($resteapayer == $object->total_ttc	&& $object->paye == 0 && $ventilExportCompta == 0)
 						{
-							// On verifie si les lignes de factures ont ete exportees en compta et/ou ventilees
-							$ventilExportCompta = $object->getVentilExportCompta();
-
-							if ($resteapayer == $object->total_ttc	&& $object->paye == 0 && $ventilExportCompta == 0)
+							if (! $objectidnext)
 							{
-								if (! $objectidnext)
+								if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->facture->valider) || $user->rights->facture->invoice_advance->unvalidate)
 								{
-									if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->facture->valider) || $user->rights->facture->invoice_advance->unvalidate)
-									{
-										print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=modif">'.$langs->trans('Modify').'</a></div>';
-									}
-									else
-									{
-										print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans('Modify').'</span></div>';
-									}
+									print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=modif">'.$langs->trans('Modify').'</a></div>';
 								}
 								else
 								{
-									print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('Modify').'</span></div>';
+									print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans('Modify').'</span></div>';
 								}
 							}
-						}
-
-						// Reopen a standard paid invoice
-						if (($object->type == 0 || $object->type == 1) && ($object->statut == 2 || $object->statut == 3))				// A paid invoice (partially or completely)
-						{
-							if (! $objectidnext && $object->close_code != 'replaced')	// Not replaced by another invoice
-							{
-								print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=reopen">'.$langs->trans('ReOpen').'</a></div>';
-							}
 							else
 							{
-								print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('ReOpen').'</span></div>';
+								print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('Modify').'</span></div>';
 							}
 						}
+					}
 
-						// Validate
-						if ($object->statut == 0 && count($object->lines) > 0 &&
-							(
-								(($object->type == 0 || $object->type == 1 || $object->type == 3 || $object->type == 4) && (! empty($conf->global->FACTURE_ENABLE_NEGATIVE) || $object->total_ttc >= 0))
-								|| ($object->type == 2 && $object->total_ttc <= 0))
-						)
+					// Reopen a standard paid invoice
+					if (($object->type == 0 || $object->type == 1) && ($object->statut == 2 || $object->statut == 3))				// A paid invoice (partially or completely)
+					{
+						if (! $objectidnext && $object->close_code != 'replaced')	// Not replaced by another invoice
 						{
-							if ($user->rights->facture->valider)
-							{
-								print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=valid">'.$langs->trans('Validate').'</a></div>';
-							}
+							print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=reopen">'.$langs->trans('ReOpen').'</a></div>';
+						}
+						else
+						{
+							print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('ReOpen').'</span></div>';
 						}
+					}
 
-						// Send by mail
-						if (($object->statut == 1 || $object->statut == 2))
+					// Validate
+					if ($object->statut == 0 && count($object->lines) > 0 &&
+						(
+							(($object->type == 0 || $object->type == 1 || $object->type == 3 || $object->type == 4) && (! empty($conf->global->FACTURE_ENABLE_NEGATIVE) || $object->total_ttc >= 0))
+							|| ($object->type == 2 && $object->total_ttc <= 0))
+					)
+					{
+						if ($user->rights->facture->valider)
 						{
-							if ($objectidnext)
-							{
-								print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('SendByMail').'</span></div>';
-							}
-							else
-							{
-								if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->facture->invoice_advance->send)
-								{
-									print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=presend&amp;mode=init">'.$langs->trans('SendByMail').'</a></div>';
-								}
-								else print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">'.$langs->trans('SendByMail').'</a></div>';
-							}
+							print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=valid">'.$langs->trans('Validate').'</a></div>';
 						}
+					}
 
-						if (! empty($conf->global->FACTURE_SHOW_SEND_REMINDER))	// For backward compatibility
+					// Send by mail
+					if (($object->statut == 1 || $object->statut == 2))
+					{
+						if ($objectidnext)
+						{
+							print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('SendByMail').'</span></div>';
+						}
+						else
 						{
-							if (($object->statut == 1 || $object->statut == 2) && $resteapayer > 0)
+							if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->facture->invoice_advance->send)
 							{
-								if ($objectidnext)
-								{
-									print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('SendRemindByMail').'</span></div>';
-								}
-								else
-								{
-									if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->facture->invoice_advance->send)
-									{
-										print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=prerelance&amp;mode=init">'.$langs->trans('SendRemindByMail').'</a></div>';
-									}
-									else print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">'.$langs->trans('SendRemindByMail').'</a></div>';
-								}
+								print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=presend&amp;mode=init">'.$langs->trans('SendByMail').'</a></div>';
 							}
+							else print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">'.$langs->trans('SendByMail').'</a></div>';
 						}
+					}
 
-						// Create payment
-						if ($object->type != 2 && $object->statut == 1 && $object->paye == 0 && $user->rights->facture->paiement)
+					if (! empty($conf->global->FACTURE_SHOW_SEND_REMINDER))	// For backward compatibility
+					{
+						if (($object->statut == 1 || $object->statut == 2) && $resteapayer > 0)
 						{
 							if ($objectidnext)
 							{
-								print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('DoPayment').'</span></div>';
+								print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('SendRemindByMail').'</span></div>';
 							}
 							else
 							{
-								if ($resteapayer == 0)
-								{
-									print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseRemainderToPayIsZero").'">'.$langs->trans('DoPayment').'</span></div>';
-								}
-								else
+								if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->facture->invoice_advance->send)
 								{
-									print '<div class="inline-block divButAction"><a class="butAction" href="paiement.php?facid='.$object->id.'&amp;action=create">'.$langs->trans('DoPayment').'</a></div>';
+									print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=prerelance&amp;mode=init">'.$langs->trans('SendRemindByMail').'</a></div>';
 								}
+								else print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">'.$langs->trans('SendRemindByMail').'</a></div>';
 							}
 						}
+					}
 
-						// Reverse back money or convert to reduction
-						if ($object->type == 2 || $object->type == 3)
+					// Create payment
+					if ($object->type != 2 && $object->statut == 1 && $object->paye == 0 && $user->rights->facture->paiement)
+					{
+						if ($objectidnext)
 						{
-							// For credit note only
-							if ($object->type == 2 && $object->statut == 1 && $object->paye == 0 && $user->rights->facture->paiement)
-							{
-								print '<div class="inline-block divButAction"><a class="butAction" href="paiement.php?facid='.$object->id.'&amp;action=create">'.$langs->trans('DoPaymentBack').'</a></div>';
-							}
-							// For credit note
-							if ($object->type == 2 && $object->statut == 1 && $object->paye == 0 && $user->rights->facture->creer && $object->getSommePaiement() == 0)
+							print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('DoPayment').'</span></div>';
+						}
+						else
+						{
+							if ($resteapayer == 0)
 							{
-								print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=converttoreduc">'.$langs->trans('ConvertToReduc').'</a></div>';
+								print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseRemainderToPayIsZero").'">'.$langs->trans('DoPayment').'</span></div>';
 							}
-							// For deposit invoice
-							if ($object->type == 3 && $object->statut == 1 && $resteapayer == 0 && $user->rights->facture->creer)
+							else
 							{
-								print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=converttoreduc">'.$langs->trans('ConvertToReduc').'</a></div>';
+								print '<div class="inline-block divButAction"><a class="butAction" href="paiement.php?facid='.$object->id.'&amp;action=create">'.$langs->trans('DoPayment').'</a></div>';
 							}
 						}
+					}
 
-						// Classify paid (if not deposit and not credit note. Such invoice are "converted")
-						if ($object->statut == 1 && $object->paye == 0 && $user->rights->facture->paiement &&
-							(($object->type != 2 && $object->type != 3 && $resteapayer <= 0) || ($object->type == 2 && $resteapayer >= 0)) )
+					// Reverse back money or convert to reduction
+					if ($object->type == 2 || $object->type == 3)
+					{
+						// For credit note only
+						if ($object->type == 2 && $object->statut == 1 && $object->paye == 0 && $user->rights->facture->paiement)
 						{
-							print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=paid">'.$langs->trans('ClassifyPaid').'</a></div>';
+							print '<div class="inline-block divButAction"><a class="butAction" href="paiement.php?facid='.$object->id.'&amp;action=create">'.$langs->trans('DoPaymentBack').'</a></div>';
 						}
+						// For credit note
+						if ($object->type == 2 && $object->statut == 1 && $object->paye == 0 && $user->rights->facture->creer && $object->getSommePaiement() == 0)
+						{
+							print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=converttoreduc">'.$langs->trans('ConvertToReduc').'</a></div>';
+						}
+						// For deposit invoice
+						if ($object->type == 3 && $object->statut == 1 && $resteapayer == 0 && $user->rights->facture->creer)
+						{
+							print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=converttoreduc">'.$langs->trans('ConvertToReduc').'</a></div>';
+						}
+					}
+
+					// Classify paid (if not deposit and not credit note. Such invoice are "converted")
+					if ($object->statut == 1 && $object->paye == 0 && $user->rights->facture->paiement &&
+						(($object->type != 2 && $object->type != 3 && $resteapayer <= 0) || ($object->type == 2 && $resteapayer >= 0)) )
+					{
+						print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=paid">'.$langs->trans('ClassifyPaid').'</a></div>';
+					}
 
-						// Classify 'closed not completely paid' (possible si validee et pas encore classee payee)
-						if ($object->statut == 1 && $object->paye == 0 && $resteapayer > 0
-							&& $user->rights->facture->paiement)
+					// Classify 'closed not completely paid' (possible si validee et pas encore classee payee)
+					if ($object->statut == 1 && $object->paye == 0 && $resteapayer > 0
+						&& $user->rights->facture->paiement)
+					{
+						if ($totalpaye > 0 || $totalcreditnotes > 0)
+						{
+							// If one payment or one credit note was linked to this invoice
+							print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=paid">'.$langs->trans('ClassifyPaidPartially').'</a></div>';
+						}
+						else
 						{
-							if ($totalpaye > 0 || $totalcreditnotes > 0)
+							if ($objectidnext)
 							{
-								// If one payment or one credit note was linked to this invoice
-								print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=paid">'.$langs->trans('ClassifyPaidPartially').'</a></div>';
+								print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('ClassifyCanceled').'</span></div>';
 							}
 							else
 							{
-								if ($objectidnext)
-								{
-									print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('ClassifyCanceled').'</span></div>';
-								}
-								else
-								{
-									print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=canceled">'.$langs->trans('ClassifyCanceled').'</a></div>';
-								}
+								print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=canceled">'.$langs->trans('ClassifyCanceled').'</a></div>';
 							}
 						}
+					}
+
+					// Clone
+					if (($object->type == 0 || $object->type == 3 || $object->type == 4) && $user->rights->facture->creer)
+					{
+						print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=clone&amp;object=invoice">'.$langs->trans("ToClone").'</a></div>';
+					}
 
-						// Clone
-						if (($object->type == 0 || $object->type == 3 || $object->type == 4) && $user->rights->facture->creer)
+					// Clone as predefined
+					if (($object->type == 0 || $object->type == 3 || $object->type == 4) && $object->statut == 0 && $user->rights->facture->creer)
+					{
+						if (! $objectidnext)
 						{
-							print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$object->id.'&amp;action=clone&amp;object=invoice">'.$langs->trans("ToClone").'</a></div>';
+							print '<div class="inline-block divButAction"><a class="butAction" href="facture/fiche-rec.php?facid='.$object->id.'&amp;action=create">'.$langs->trans("ChangeIntoRepeatableInvoice").'</a></div>';
 						}
+					}
 
-						// Clone as predefined
-						if (($object->type == 0 || $object->type == 3 || $object->type == 4) && $object->statut == 0 && $user->rights->facture->creer)
+					// Delete
+					if ($user->rights->facture->supprimer)
+					{
+						if (! $object->is_erasable())
 						{
-							if (! $objectidnext)
-							{
-								print '<div class="inline-block divButAction"><a class="butAction" href="facture/fiche-rec.php?facid='.$object->id.'&amp;action=create">'.$langs->trans("ChangeIntoRepeatableInvoice").'</a></div>';
-							}
+							print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("DisabledBecauseNotErasable").'">'.$langs->trans('Delete').'</a></div>';
 						}
-
-						// Delete
-						if ($user->rights->facture->supprimer)
+						else if ($objectidnext)
 						{
-							if (! $object->is_erasable())
-							{
-								print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("DisabledBecauseNotErasable").'">'.$langs->trans('Delete').'</a></div>';
-							}
-							else if ($objectidnext)
-							{
-								print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('Delete').'</a></div>';
-							}
-							elseif ($object->getSommePaiement())
-							{
-								print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("DisabledBecausePayments").'">'.$langs->trans('Delete').'</a></div>';
-							}
-							else
-							{
-								print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=delete">'.$langs->trans('Delete').'</a></div>';
-							}
+							print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('Delete').'</a></div>';
+						}
+						elseif ($object->getSommePaiement())
+						{
+							print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("DisabledBecausePayments").'">'.$langs->trans('Delete').'</a></div>';
 						}
 						else
 						{
-							print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotAllowed").'">'.$langs->trans('Delete').'</a></div>';
+							print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=delete">'.$langs->trans('Delete').'</a></div>';
 						}
-
-						print '</div>';
 					}
-				}
-				print '<br>';
-
-				if ($action != 'prerelance' && $action != 'presend')
-				{
-					print '<div class="fichecenter"><div class="fichehalfleft">';
-					//print '<table width="100%"><tr><td width="50%" valign="top">';
-					//print '<a name="builddoc"></a>'; // ancre
-
-					/*
-					 * Documents generes
-					*/
-					$filename=dol_sanitizeFileName($object->ref);
-					$filedir=$conf->facture->dir_output . '/' . dol_sanitizeFileName($object->ref);
-					$urlsource=$_SERVER['PHP_SELF'].'?facid='.$object->id;
-					$genallowed=$user->rights->facture->creer;
-					$delallowed=$user->rights->facture->supprimer;
-
-					print $formfile->showdocuments('facture',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang);
-					$somethingshown=$formfile->numoffiles;
-
-					/*
-					 * Linked object block
-					*/
-					$somethingshown=$object->showLinkedObjectBlock();
-
-					// Link for paypal payment
-					if (! empty($conf->paypal->enabled) && $object->statut != 0)
+					else
 					{
-						include_once DOL_DOCUMENT_ROOT.'/paypal/lib/paypal.lib.php';
-						print showPaypalPaymentUrl('invoice',$object->ref);
+						print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotAllowed").'">'.$langs->trans('Delete').'</a></div>';
 					}
 
-					print '</div><div class="fichehalfright"><div class="ficheaddleft">';
-					//print '</td><td valign="top" width="50%">';
+					print '</div>';
+				}
+			}
+			print '<br>';
+
+			if ($action != 'prerelance' && $action != 'presend')
+			{
+				print '<div class="fichecenter"><div class="fichehalfleft">';
+				//print '<table width="100%"><tr><td width="50%" valign="top">';
+				//print '<a name="builddoc"></a>'; // ancre
+
+				/*
+				 * Documents generes
+				*/
+				$filename=dol_sanitizeFileName($object->ref);
+				$filedir=$conf->facture->dir_output . '/' . dol_sanitizeFileName($object->ref);
+				$urlsource=$_SERVER['PHP_SELF'].'?facid='.$object->id;
+				$genallowed=$user->rights->facture->creer;
+				$delallowed=$user->rights->facture->supprimer;
 
-					// List of actions on element
-					include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
-					$formactions=new FormActions($db);
-					$somethingshown=$formactions->showactions($object,'invoice',$socid);
+				print $formfile->showdocuments('facture',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang);
+				$somethingshown=$formfile->numoffiles;
 
-					//print '</td></tr></table>';
-					print '</div></div></div>';
+				/*
+				 * Linked object block
+				*/
+				$somethingshown=$object->showLinkedObjectBlock();
+
+				// Link for paypal payment
+				if (! empty($conf->paypal->enabled) && $object->statut != 0)
+				{
+					include_once DOL_DOCUMENT_ROOT.'/paypal/lib/paypal.lib.php';
+					print showPaypalPaymentUrl('invoice',$object->ref);
 				}
-				else
+
+				print '</div><div class="fichehalfright"><div class="ficheaddleft">';
+				//print '</td><td valign="top" width="50%">';
+
+				// List of actions on element
+				include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
+				$formactions=new FormActions($db);
+				$somethingshown=$formactions->showactions($object,'invoice',$socid);
+
+				//print '</td></tr></table>';
+				print '</div></div></div>';
+			}
+			else
+			{
+				/*
+				 * Affiche formulaire mail
+				*/
+
+				// By default if $action=='presend'
+				$titreform='SendBillByMail';
+				$topicmail='SendBillRef';
+				$action='send';
+				$modelmail='facture_send';
+
+				if ($action == 'prerelance')	// For backward compatibility
 				{
-					/*
-					 * Affiche formulaire mail
-					*/
+					$titrefrom='SendReminderBillByMail';
+					$topicmail='SendReminderBillRef';
+					$action='relance';
+					$modelmail='facture_relance';
+				}
 
-					// By default if $action=='presend'
-					$titreform='SendBillByMail';
-					$topicmail='SendBillRef';
-					$action='send';
-					$modelmail='facture_send';
+				$ref = dol_sanitizeFileName($object->ref);
+				include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+				$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref,'/'));
+				$file=$fileparams['fullname'];
 
-					if ($action == 'prerelance')	// For backward compatibility
+				// Build document if it not exists
+				if (! $file || ! is_readable($file))
+				{
+					// Define output language
+					$outputlangs = $langs;
+					$newlang='';
+					if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id'];
+					if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
+					if (! empty($newlang))
 					{
-						$titrefrom='SendReminderBillByMail';
-						$topicmail='SendReminderBillRef';
-						$action='relance';
-						$modelmail='facture_relance';
+						$outputlangs = new Translate("",$conf);
+						$outputlangs->setDefaultLang($newlang);
 					}
 
-					$ref = dol_sanitizeFileName($object->ref);
-					include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+					$result=facture_pdf_create($db, $object, GETPOST('model')?GETPOST('model'):$object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
+					if ($result <= 0)
+					{
+						dol_print_error($db,$result);
+						exit;
+					}
 					$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref,'/'));
 					$file=$fileparams['fullname'];
+				}
 
-					// Build document if it not exists
-					if (! $file || ! is_readable($file))
-					{
-						// Define output language
-						$outputlangs = $langs;
-						$newlang='';
-						if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id'];
-						if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
-						if (! empty($newlang))
-						{
-							$outputlangs = new Translate("",$conf);
-							$outputlangs->setDefaultLang($newlang);
-						}
-
-						$result=facture_pdf_create($db, $object, GETPOST('model')?GETPOST('model'):$object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
-						if ($result <= 0)
-						{
-							dol_print_error($db,$result);
-							exit;
+				print '<br>';
+				print_titre($langs->trans($titreform));
+
+				// Cree l'objet formulaire mail
+				include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
+				$formmail = new FormMail($db);
+				$formmail->fromtype = 'user';
+				$formmail->fromid   = $user->id;
+				$formmail->fromname = $user->getFullName($langs);
+				$formmail->frommail = $user->email;
+				$formmail->withfrom=1;
+				$liste=array();
+				foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value)	$liste[$key]=$value;
+				$formmail->withto=GETPOST('sendto')?GETPOST('sendto'):$liste;
+				$formmail->withtocc=$liste;
+				$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
+				$formmail->withtopic=$langs->transnoentities($topicmail,'__FACREF__');
+				$formmail->withfile=2;
+				$formmail->withbody=1;
+				$formmail->withdeliveryreceipt=1;
+				$formmail->withcancel=1;
+				// Tableau des substitutions
+				$formmail->substit['__FACREF__']=$object->ref;
+				$formmail->substit['__SIGNATURE__']=$user->signature;
+				$formmail->substit['__PERSONALIZED__']='';
+				$formmail->substit['__CONTACTCIVNAME__']='';
+
+				//Find the good contact adress
+				$custcontact='';
+				$contactarr=array();
+				$contactarr=$object->liste_contact(-1,'external');
+
+				if (is_array($contactarr) && count($contactarr)>0) {
+					foreach($contactarr as $contact) {
+						if ($contact['libelle']==$langs->trans('TypeContact_facture_external_BILLING')) {
+
+							require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php';
+
+							$contactstatic=new Contact($db);
+							$contactstatic->fetch($contact['id']);
+							$custcontact=$contactstatic->getFullName($langs,1);
 						}
-						$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref,'/'));
-						$file=$fileparams['fullname'];
 					}
 
-					print '<br>';
-					print_titre($langs->trans($titreform));
-
-					// Cree l'objet formulaire mail
-					include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
-					$formmail = new FormMail($db);
-					$formmail->fromtype = 'user';
-					$formmail->fromid   = $user->id;
-					$formmail->fromname = $user->getFullName($langs);
-					$formmail->frommail = $user->email;
-					$formmail->withfrom=1;
-					$liste=array();
-					foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value)	$liste[$key]=$value;
-					$formmail->withto=GETPOST('sendto')?GETPOST('sendto'):$liste;
-					$formmail->withtocc=$liste;
-					$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
-					$formmail->withtopic=$langs->transnoentities($topicmail,'__FACREF__');
-					$formmail->withfile=2;
-					$formmail->withbody=1;
-					$formmail->withdeliveryreceipt=1;
-					$formmail->withcancel=1;
-					// Tableau des substitutions
-					$formmail->substit['__FACREF__']=$object->ref;
-					$formmail->substit['__SIGNATURE__']=$user->signature;
-					$formmail->substit['__PERSONALIZED__']='';
-					$formmail->substit['__CONTACTCIVNAME__']='';
-
-					//Find the good contact adress
-					$custcontact='';
-					$contactarr=array();
-					$contactarr=$object->liste_contact(-1,'external');
-
-					if (is_array($contactarr) && count($contactarr)>0) {
-						foreach($contactarr as $contact) {
-							if ($contact['libelle']==$langs->trans('TypeContact_facture_external_BILLING')) {
-
-								require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php';
-
-								$contactstatic=new Contact($db);
-								$contactstatic->fetch($contact['id']);
-								$custcontact=$contactstatic->getFullName($langs,1);
-							}
-						}
-
-						if (!empty($custcontact)) {
-							$formmail->substit['__CONTACTCIVNAME__']=$custcontact;
-						}
+					if (!empty($custcontact)) {
+						$formmail->substit['__CONTACTCIVNAME__']=$custcontact;
 					}
+				}
 
 
-					// Tableau des parametres complementaires du post
-					$formmail->param['action']=$action;
-					$formmail->param['models']=$modelmail;
-					$formmail->param['facid']=$object->id;
-					$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id;
+				// Tableau des parametres complementaires du post
+				$formmail->param['action']=$action;
+				$formmail->param['models']=$modelmail;
+				$formmail->param['facid']=$object->id;
+				$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id;
 
-					// Init list of files
-					if (GETPOST("mode")=='init')
-					{
-						$formmail->clear_attached_files();
-						$formmail->add_attached_files($file,basename($file),dol_mimetype($file));
-					}
+				// Init list of files
+				if (GETPOST("mode")=='init')
+				{
+					$formmail->clear_attached_files();
+					$formmail->add_attached_files($file,basename($file),dol_mimetype($file));
+				}
 
-					$formmail->show_form();
+				$formmail->show_form();
 
-					print '<br>';
-				}
-		}
-		else
-		{
-			dol_print_error($db,$object->error);
-		}
+				print '<br>';
+			}
 	}
+	else
+	{
+		dol_print_error($db,$object->error);
+	}
+}
 
-	dol_htmloutput_mesg('',$mesgs);
+dol_htmloutput_mesg('',$mesgs);
 
-	llxFooter();
-	$db->close();
-	?>
+llxFooter();
+$db->close();
+?>
diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang
index 41b08dd399f..a76156142d6 100644
--- a/htdocs/langs/en_US/bills.lang
+++ b/htdocs/langs/en_US/bills.lang
@@ -311,6 +311,8 @@ PaymentConditionShortPT_ORDER=On order
 PaymentConditionPT_ORDER=On order
 PaymentConditionShortPT_5050=50-50
 PaymentConditionPT_5050=50%% in advance, 50%% on delivery
+FixAmount=Fix amount
+VarAmount=Variable amount (%% tot.)
 
 # PaymentType
 PaymentTypeVIR=Bank deposit
diff --git a/htdocs/langs/es_ES/bills.lang b/htdocs/langs/es_ES/bills.lang
index ff1d75eb358..d4146ba2f4e 100644
--- a/htdocs/langs/es_ES/bills.lang
+++ b/htdocs/langs/es_ES/bills.lang
@@ -287,6 +287,8 @@ TotalOfTwoDiscountMustEqualsOriginal=La suma del importe de los 2 nuevos descuen
 ConfirmRemoveDiscount=¿Está seguro de querer eliminar este descuento?
 RelatedBill=Factura asociada
 RelatedBills=Facturas asociadas
+FixAmount=Importe fijo
+VarAmount=Importe variable (%% total)
 
 # PaymentConditions
 PaymentConditionShortRECEP=A la recepción
diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang
index 0c87fb93f66..adfa9a34bdc 100644
--- a/htdocs/langs/fr_FR/bills.lang
+++ b/htdocs/langs/fr_FR/bills.lang
@@ -322,6 +322,8 @@ PaymentTypeVAD=Paiement en ligne
 PaymentTypeShortVAD=Paiement en ligne
 PaymentTypeTRA=Paiement par traite
 PaymentTypeShortTRA=Traite
+FixAmount=Montant Fixe
+VarAmount=Montant variable (%% tot.)
 
 BankDetails=Coordonnées bancaires
 BankCode=Code banque
-- 
GitLab