diff --git a/htdocs/admin/supplier_invoice.php b/htdocs/admin/supplier_invoice.php
new file mode 100644
index 0000000000000000000000000000000000000000..49e31d1b86ca94680a6c1a718696eec81050c511
--- /dev/null
+++ b/htdocs/admin/supplier_invoice.php
@@ -0,0 +1,511 @@
+<?php
+/* Copyright (C) 2003-2007 Rodolphe Quiedeville    <rodolphe@quiedeville.org>
+ * Copyright (C) 2004-2011 Laurent Destailleur     <eldy@users.sourceforge.net>
+ * Copyright (C) 2005-2011 Regis Houssin           <regis.houssin@capnetworks.com>
+ * Copyright (C) 2004      Sebastien Di Cintio     <sdicintio@ressource-toi.org>
+ * Copyright (C) 2004      Benoit Mortier          <benoit.mortier@opensides.be>
+ * Copyright (C) 2010-2012 Juanjo Menent           <jmenent@2byte.es>
+ * Copyright (C) 2011-2013 Philippe Grand          <philippe.grand@atoo-net.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *  \file       htdocs/admin/supplier_invoice.php
+ *  \ingroup    fournisseur
+ *  \brief      Page d'administration-configuration du module Fournisseur
+ */
+
+require '../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
+require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
+
+$langs->load("admin");
+$langs->load("other");
+$langs->load("orders");
+
+if (!$user->admin)
+accessforbidden();
+
+$type=GETPOST('type', 'alpha');
+$value=GETPOST('value', 'alpha');
+$action=GETPOST('action', 'alpha');
+
+$specimenthirdparty=new Societe($db);
+$specimenthirdparty->initAsSpecimen();
+
+
+/*
+ * Actions
+ */
+
+if ($action == 'updateMask')
+{
+    $maskconstorder=GETPOST('maskconstorder','alpha');
+    $maskorder=GETPOST('maskorder','alpha');
+
+    if ($maskconstorder)  $res = dolibarr_set_const($db,$maskconstorder,$maskorder,'chaine',0,'',$conf->entity);
+
+    if (! $res > 0) $error++;
+
+    if (! $error)
+    {
+        $mesg = "<font class=\"ok\">".$langs->trans("SetupSaved")."</font>";
+    }
+    else
+    {
+        $mesg = "<font class=\"error\">".$langs->trans("Error")."</font>";
+    }
+}
+
+if ($action == 'specimen')  // For invoices
+{
+    $modele=GETPOST('module','alpha');
+
+    $facture = new FactureFournisseur($db);
+    $facture->initAsSpecimen();
+    $facture->thirdparty=$specimenthirdparty;    // Define who should has build the invoice (so the supplier)
+
+    // Search template files
+    $file=''; $classname=''; $filefound=0;
+    $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
+    foreach($dirmodels as $reldir)
+    {
+    	$file=dol_buildpath($reldir."core/modules/supplier_invoice/pdf/pdf_".$modele.".modules.php",0);
+    	if (file_exists($file))
+    	{
+    		$filefound=1;
+    		$classname = "pdf_".$modele;
+    		break;
+    	}
+    }
+
+    if ($filefound)
+    {
+    	require_once $file;
+
+    	$module = new $classname($db,$facture);
+
+    	if ($module->write_file($facture,$langs) > 0)
+    	{
+    		header("Location: ".DOL_URL_ROOT."/document.php?modulepart=facture_fournisseur&file=SPECIMEN.pdf");
+    		return;
+    	}
+    	else
+    	{
+    		$mesg='<font class="error">'.$module->error.'</font>';
+    		dol_syslog($module->error, LOG_ERR);
+    	}
+    }
+    else
+    {
+    	$mesg='<font class="error">'.$langs->trans("ErrorModuleNotFound").'</font>';
+    	dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
+    }
+}
+
+if ($action == 'set')
+{
+	$label = GETPOST('label','alpha');
+	$scandir = GETPOST('scandir','alpha');
+
+    $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)";
+    $sql.= " VALUES ('".$db->escape($value)."','".$type."',".$conf->entity.", ";
+    $sql.= ($label?"'".$db->escape($label)."'":'null').", ";
+    $sql.= (! empty($scandir)?"'".$db->escape($scandir)."'":"null");
+    $sql.= ")";
+    $res=$db->query($sql);
+    if ($res)
+    {
+
+    }
+    //	else dol_print_error($db);
+}
+
+if ($action == 'del')
+{
+    $sql = "DELETE FROM ".MAIN_DB_PREFIX."document_model";
+    $sql.= " WHERE nom = '".$value."'";
+    $sql.= " AND type = '".$type."'";
+    $sql.= " AND entity = ".$conf->entity;
+    $db->query($sql);
+    if ($res)
+    {
+
+    }
+    //    else dol_print_error($db);
+}
+
+if ($action == 'setdoc')
+{
+	$label = GETPOST('label','alpha');
+	$scandir = GETPOST('scandir','alpha');
+
+    $db->begin();
+
+    if ($type == 'order_supplier' && dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON_PDF",$value,'chaine',0,'',$conf->entity))
+    {
+        $conf->global->INVOICE_SUPPLIER_ADDON_PDF = $value;
+    }
+
+    // On active le modele
+    $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."document_model";
+    $sql_del.= " WHERE nom = '".$db->escape($value)."'";
+    $sql_del.= " AND type = '".$type."'";
+    $sql_del.= " AND entity = ".$conf->entity;
+    $result1=$db->query($sql_del);
+
+    $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)";
+    $sql.= " VALUES ('".$db->escape($value)."', '".$type."', ".$conf->entity.", ";
+    $sql.= ($label?"'".$db->escape($label)."'":'null').", ";
+    $sql.= (! empty($scandir)?"'".$db->escape($scandir)."'":"null");
+    $sql.= ")";
+    $result2=$db->query($sql);
+    if ($result1 && $result2)
+    {
+        $db->commit();
+    }
+    else
+    {
+        $db->rollback();
+    }
+}
+
+if ($action == 'setmod')
+{
+    // TODO Verifier si module numerotation choisi peut etre active
+    // par appel methode canBeActivated
+
+    dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON_NUMBER",$value,'chaine',0,'',$conf->entity);
+}
+
+if ($action == 'addcat')
+{
+    $fourn = new Fournisseur($db);
+    $fourn->CreateCategory($user,$_POST["cat"]);
+}
+
+if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT')
+{
+    $freetext = GETPOST('SUPPLIER_INVOICE_FREE_TEXT');	// No alpha here, we want exact string
+
+    $res = dolibarr_set_const($db, "SUPPLIER_INVOICE_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity);
+
+    if (! $res > 0) $error++;
+
+    if (! $error)
+    {
+        $mesg = "<font class=\"ok\">".$langs->trans("SetupSaved")."</font>";
+    }
+    else
+    {
+        $mesg = "<font class=\"error\">".$langs->trans("Error")."</font>";
+    }
+}
+
+
+/*
+ * View
+ */
+
+$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
+
+llxHeader("","");
+
+$form=new Form($db);
+
+$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
+print_fiche_titre($langs->trans("SuppliersSetup"),$linkback,'setup');
+
+print "<br>";
+
+$h = 0;
+
+$head[$h][0] = DOL_URL_ROOT."/admin/supplier_order.php";
+$head[$h][1] = $langs->trans("SupplierOrder");
+$head[$h][2] = 'Order';
+$h++;
+
+$head[$h][0] = DOL_URL_ROOT."/admin/supplier_invoice.php";
+$head[$h][1] = $langs->trans("SuppliersInvoice");
+$head[$h][2] = 'Invoice';
+$hselected=$h;
+$h++;
+
+dol_fiche_head($head, $hselected, $langs->trans("ModuleSetup"));
+
+
+// Supplier invoice numbering module
+
+print_titre($langs->trans("SuppliersInvoiceNumberingModel"));
+
+print '<table class="noborder" width="100%">';
+print '<tr class="liste_titre">';
+print '<td width="100">'.$langs->trans("Name").'</td>';
+print '<td>'.$langs->trans("Description").'</td>';
+print '<td>'.$langs->trans("Example").'</td>';
+print '<td align="center" width="60">'.$langs->trans("Status").'</td>';
+print '<td align="center" width="16">'.$langs->trans("Info").'</td>';
+print "</tr>\n";
+
+clearstatcache();
+
+foreach ($dirmodels as $reldir)
+{
+	$dir = dol_buildpath($reldir."core/modules/supplier_invoice/");
+
+    if (is_dir($dir))
+    {
+        $handle = opendir($dir);
+        if (is_resource($handle))
+        {
+            $var=true;
+
+            while (($file = readdir($handle))!==false)
+            {
+                if (substr($file, 0, 25) == 'mod_facture_fournisseur_' && substr($file, dol_strlen($file)-3, 3) == 'php')
+                {
+                    $file = substr($file, 0, dol_strlen($file)-4);
+
+                    require_once $dir.$file.'.php';
+
+                    $module = new $file;
+
+                    if ($module->isEnabled())
+                    {
+                        // Show modules according to features level
+                        if ($module->version == 'development'  && $conf->global->MAIN_FEATURES_LEVEL < 2) continue;
+                        if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) continue;
+
+                        $var=!$var;
+                        print '<tr '.$bc[$var].'><td>'.$module->nom."</td><td>\n";
+                        print $module->info();
+                        print '</td>';
+
+                        // Show example of numbering module
+                        print '<td nowrap="nowrap">';
+                        $tmp=$module->getExample();
+                        if (preg_match('/^Error/',$tmp)) {
+                            $langs->load("errors"); print '<div class="error">'.$langs->trans($tmp).'</div>';
+                        }
+                        elseif ($tmp=='NotConfigured') print $langs->trans($tmp);
+                        else print $tmp;
+                        print '</td>'."\n";
+
+                        print '<td align="center">';
+                        if ($conf->global->INVOICE_SUPPLIER_ADDON_NUMBER == "$file")
+                        {
+                            print img_picto($langs->trans("Activated"),'switch_on');
+                        }
+                        else
+                        {
+                            print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&amp;value='.$file.'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
+                        }
+                        print '</td>';
+
+                        $invoice=new FactureFournisseur($db);
+                        $invoice->initAsSpecimen();
+
+                        // Info
+                        $htmltooltip='';
+                        $htmltooltip.=''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
+                        $nextval=$module->getNextValue($mysoc,$invoice);
+                        if ("$nextval" != $langs->trans("NotAvailable"))	// Keep " on nextval
+                        {
+                            $htmltooltip.=''.$langs->trans("NextValue").': ';
+                            if ($nextval)
+                            {
+                                $htmltooltip.=$nextval.'<br>';
+                            }
+                            else
+                            {
+                                $htmltooltip.=$langs->trans($module->error).'<br>';
+                            }
+                        }
+
+                        print '<td align="center">';
+                        print $form->textwithpicto('',$htmltooltip,1,0);
+                        print '</td>';
+
+                        print '</tr>';
+                    }
+                }
+            }
+            closedir($handle);
+        }
+    }
+}
+
+print '</table><br>';
+
+
+
+
+/*
+ * Modeles documents for supplier invoices
+ */
+
+print_titre($langs->trans("BillsPDFModules"));
+
+// Defini tableau def de modele
+$def = array();
+
+$sql = "SELECT nom";
+$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
+$sql.= " WHERE type = 'order_supplier'";
+$sql.= " AND entity = ".$conf->entity;
+
+$resql=$db->query($sql);
+if ($resql)
+{
+    $i = 0;
+    $num_rows=$db->num_rows($resql);
+    while ($i < $num_rows)
+    {
+        $array = $db->fetch_array($resql);
+        array_push($def, $array[0]);
+        $i++;
+    }
+}
+else
+{
+    dol_print_error($db);
+}
+
+print '<table class="noborder" width="100%">'."\n";
+print '<tr class="liste_titre">'."\n";
+print '<td width="100">'.$langs->trans("Name").'</td>'."\n";
+print '<td>'.$langs->trans("Description").'</td>'."\n";
+print '<td align="center" width="60">'.$langs->trans("Status").'</td>'."\n";
+print '<td align="center" width="60">'.$langs->trans("Default").'</td>'."\n";
+print '<td align="center" width="40" colspan="2">'.$langs->trans("Info").'</td>';
+print '</tr>'."\n";
+
+clearstatcache();
+
+foreach ($dirmodels as $reldir)
+{
+	$dir = dol_buildpath($reldir."core/modules/supplier_invoice/pdf/");
+
+    if (is_dir($dir))
+    {
+        $var=true;
+
+        $handle=opendir($dir);
+
+
+        if (is_resource($handle))
+        {
+            while (($file = readdir($handle))!==false)
+            {
+                if (preg_match('/\.modules\.php$/i',$file) && substr($file,0,4) == 'pdf_')
+                {
+                    $name = substr($file, 4, dol_strlen($file) -16);
+                    $classname = substr($file, 0, dol_strlen($file) -12);
+
+                    $var=!$var;
+                    print "<tr ".$bc[$var].">\n";
+                    print "<td>".$name."</td>\n";
+                    print "<td>\n";
+                    require_once $dir.$file;
+                    $module = new $classname($db,$specimenthirdparty);
+                    print $module->description;
+                    print "</td>\n";
+
+                    // Active
+                    if (in_array($name, $def))
+                    {
+                        print '<td align="center">'."\n";
+                        if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF != "$name")
+                        {
+                            print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'&amp;type=invoice_supplier">';
+                            print img_picto($langs->trans("Enabled"),'switch_on');
+                            print '</a>';
+                        }
+                        else
+                        {
+                            print img_picto($langs->trans("Enabled"),'switch_on');
+                        }
+                        print "</td>";
+                    }
+                    else
+                    {
+                        print '<td align="center">'."\n";
+                        print '<a href="'.$_SERVER["PHP_SELF"].'?action=set&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'&amp;type=order_supplier">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
+                        print "</td>";
+                    }
+
+                    // Defaut
+                    print '<td align="center">';
+                    if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF == "$name")
+                    {
+                        print img_picto($langs->trans("Default"),'on');
+                    }
+                    else
+                    {
+                        print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'&amp;type=invoice_supplier"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').'</a>';
+                    }
+                    print '</td>';
+
+                    // Info
+                    $htmltooltip =    ''.$langs->trans("Name").': '.$module->name;
+                    $htmltooltip.='<br>'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown"));
+                    $htmltooltip.='<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
+                    $htmltooltip.='<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
+                    $htmltooltip.='<br>'.$langs->trans("Logo").': '.yn($module->option_logo,1,1);
+                    $htmltooltip.='<br>'.$langs->trans("PaymentMode").': '.yn($module->option_modereg,1,1);
+                    $htmltooltip.='<br>'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg,1,1);
+                    print '<td align="center">';
+                    print $form->textwithpicto('',$htmltooltip,1,0);
+                    print '</td>';
+                    print '<td align="center">';
+                    print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&amp;module='.$name.'">'.img_object($langs->trans("Preview"),'order').'</a>';
+                    print '</td>';
+
+                    print "</tr>\n";
+                }
+            }
+
+            closedir($handle);
+        }
+    }
+}
+
+print '</table><br/>';
+
+print_titre($langs->trans("OtherOptions"));
+print '<table class="noborder" width="100%">';
+print '<tr class="liste_titre">';
+print '<td>'.$langs->trans("Parameter").'</td>';
+print '<td align="center" width="60">'.$langs->trans("Value").'</td>';
+print '<td width="80">&nbsp;</td>';
+print "</tr>\n";
+
+print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
+print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+print '<input type="hidden" name="action" value="set_SUPPLIER_ORDER_FREE_TEXT">';
+print '<tr '.$bc[$var].'><td colspan="2">';
+print $langs->trans("FreeLegalTextOnInvoices").' ('.$langs->trans("AddCRIfTooLong").')<br>';
+print '<textarea name="SUPPLIER_ORDER_FREE_TEXT" class="flat" cols="120">'.$conf->global->SUPPLIER_ORDER_FREE_TEXT.'</textarea>';
+print '</td><td align="right">';
+print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
+print "</td></tr>\n";
+print '</form>';
+
+dol_htmloutput_mesg($mesg);
+
+$db->close();
+llxFooter();
+?>
diff --git a/htdocs/admin/fournisseur.php b/htdocs/admin/supplier_order.php
similarity index 68%
rename from htdocs/admin/fournisseur.php
rename to htdocs/admin/supplier_order.php
index e92ef38ee97c0242cbcd6b84485125723d3545c3..aa609d65721b46584a1d51116efefde746ed1da8 100644
--- a/htdocs/admin/fournisseur.php
+++ b/htdocs/admin/supplier_order.php
@@ -5,7 +5,7 @@
  * Copyright (C) 2004      Sebastien Di Cintio     <sdicintio@ressource-toi.org>
  * Copyright (C) 2004      Benoit Mortier          <benoit.mortier@opensides.be>
  * Copyright (C) 2010-2012 Juanjo Menent           <jmenent@2byte.es>
- * Copyright (C) 2011      Philippe Grand          <philippe.grand@atoo-net.com>
+ * Copyright (C) 2011-2013 Philippe Grand          <philippe.grand@atoo-net.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  */
 
 /**
- *  \file       htdocs/admin/fournisseur.php
+ *  \file       htdocs/admin/supplier_order.php
  *  \ingroup    fournisseur
  *  \brief      Page d'administration-configuration du module Fournisseur
  */
@@ -31,10 +31,10 @@ require '../main.inc.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
 require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
-require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
 
 $langs->load("admin");
-$langs->load('other');
+$langs->load("other");
+$langs->load("orders");
 
 if (!$user->admin)
 accessforbidden();
@@ -116,52 +116,6 @@ if ($action == 'specimen')  // For orders
     }
 }
 
-if ($action == 'specimenfacture')   // For invoices
-{
-    $modele=GETPOST('module','alpha');
-
-    $facture = new FactureFournisseur($db);
-    $facture->initAsSpecimen();
-    $facture->thirdparty=$specimenthirdparty;    // Define who should has build the invoice (so the supplier)
-
-	// Search template files
-    $file=''; $classname=''; $filefound=0;
-    $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
-    foreach($dirmodels as $reldir)
-    {
-    	$file=dol_buildpath($reldir."core/modules/supplier_invoice/pdf/pdf_".$modele.".modules.php",0);
-    	if (file_exists($file))
-    	{
-    		$filefound=1;
-    		$classname = "pdf_".$modele;
-    		break;
-    	}
-    }
-
-    if ($filefound)
-    {
-    	require_once $file;
-
-    	$module = new $classname($db,$facture);
-
-    	if ($module->write_file($facture,$langs) > 0)
-    	{
-    		header("Location: ".DOL_URL_ROOT."/document.php?modulepart=facture_fournisseur&file=SPECIMEN.pdf");
-    		return;
-    	}
-    	else
-    	{
-    		$mesg='<font class="error">'.$module->error.'</font>';
-    		dol_syslog($module->error, LOG_ERR);
-    	}
-    }
-    else
-    {
-    	$mesg='<font class="error">'.$langs->trans("ErrorModuleNotFound").'</font>';
-    	dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
-    }
-}
-
 if ($action == 'set')
 {
 	$label = GETPOST('label','alpha');
@@ -206,11 +160,6 @@ if ($action == 'setdoc')
         $conf->global->COMMANDE_SUPPLIER_ADDON_PDF = $value;
     }
 
-    if ($type == 'invoice_supplier' && dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON_PDF",$value,'chaine',0,'',$conf->entity))
-    {
-        $conf->global->INVOICE_SUPPLIER_ADDON_PDF = $value;
-    }
-
     // On active le modele
     $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."document_model";
     $sql_del.= " WHERE nom = '".$db->escape($value)."'";
@@ -248,11 +197,11 @@ if ($action == 'addcat')
     $fourn->CreateCategory($user,$_POST["cat"]);
 }
 
-if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT')
+if ($action == 'set_SUPPLIER_ORDER_FREE_TEXT')
 {
-    $freetext = GETPOST('SUPPLIER_INVOICE_FREE_TEXT');	// No alpha here, we want exact string
+    $freetext = GETPOST('SUPPLIER_ORDER_FREE_TEXT');	// No alpha here, we want exact string
 
-    $res = dolibarr_set_const($db, "SUPPLIER_INVOICE_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity);
+    $res = dolibarr_set_const($db, "SUPPLIER_ORDER_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity);
 
     if (! $res > 0) $error++;
 
@@ -273,7 +222,7 @@ if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT')
 
 $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
 
-llxHeader();
+llxHeader("","");
 
 $form=new Form($db);
 
@@ -282,6 +231,22 @@ print_fiche_titre($langs->trans("SuppliersSetup"),$linkback,'setup');
 
 print "<br>";
 
+$h = 0;
+
+$head[$h][0] = DOL_URL_ROOT."/admin/supplier_order.php";
+$head[$h][1] = $langs->trans("SupplierOrder");
+$head[$h][2] = 'Order';
+$hselected=$h;
+$h++;
+
+$head[$h][0] = DOL_URL_ROOT."/admin/supplier_invoice.php";
+$head[$h][1] = $langs->trans("SuppliersInvoice");
+$head[$h][2] = 'Invoice';
+
+$h++;
+
+dol_fiche_head($head, $hselected, $langs->trans("ModuleSetup"));
+
 
 // Supplier order numbering module
 
@@ -521,137 +486,6 @@ foreach ($dirmodels as $reldir)
 
 print '</table><br/>';
 
-/*
- * Modeles documents for supplier invoices
- */
-
-print_titre($langs->trans("BillsPDFModules"));
-
-// Defini tableau def de modele
-$def = array();
-
-$sql = "SELECT nom";
-$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
-$sql.= " WHERE type = 'invoice_supplier'";
-$sql.= " AND entity = ".$conf->entity;
-
-$resql=$db->query($sql);
-if ($resql)
-{
-    $i = 0;
-    $num_rows=$db->num_rows($resql);
-    while ($i < $num_rows)
-    {
-        $array = $db->fetch_array($resql);
-        array_push($def, $array[0]);
-        $i++;
-    }
-}
-else
-{
-    dol_print_error($db);
-}
-
-
-print '<table class="noborder" width="100%">'."\n";
-print '<tr class="liste_titre">'."\n";
-print '<td width="100">'.$langs->trans("Name").'</td>'."\n";
-print '<td>'.$langs->trans("Description").'</td>'."\n";
-print '<td align="center" width="60">'.$langs->trans("Status").'</td>'."\n";
-print '<td align="center" width="60">'.$langs->trans("Default").'</td>'."\n";
-print '<td align="center" width="40" colspan="2">'.$langs->trans("Info").'</td>';
-print '</tr>'."\n";
-
-clearstatcache();
-
-foreach ($dirmodels as $reldir)
-{
-	$dir = dol_buildpath($reldir."core/modules/supplier_invoice/pdf/");
-
-    if (is_dir($dir))
-    {
-        $var=true;
-
-        $handle=opendir($dir);
-
-        if (is_resource($handle))
-        {
-            while (($file = readdir($handle)) !== false)
-            {
-                if (preg_match('/\.modules\.php$/i',$file) && substr($file,0,4) == 'pdf_')
-                {
-                    $name = substr($file, 4, dol_strlen($file) -16);
-                    $classname = substr($file, 0, dol_strlen($file) -12);
-
-                    $var=!$var;
-                    print "<tr ".$bc[$var].">\n";
-                    print "<td>".$name."</td>\n";
-                    print "<td>";
-                    require_once $dir.$file;
-                    $module = new $classname($db,$specimenthirdparty);
-                    print $module->description;
-                    print "</td>\n";
-
-                    // Active
-                    if (in_array($name, $def))
-                    {
-                        print "<td align=\"center\">\n";
-                        if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF != "$name")
-                        {
-                            print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'&amp;type=invoice_supplier">';
-                            print img_picto($langs->trans("Enabled"),'switch_on');
-                            print '</a>';
-                        }
-                        else
-                        {
-                            print img_picto($langs->trans("Enabled"),'switch_on');
-                        }
-                        print "</td>";
-                    }
-                    else
-                    {
-                        print "<td align=\"center\">\n";
-                        print '<a href="'.$_SERVER["PHP_SELF"].'?action=set&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'&amp;type=invoice_supplier">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
-                        print "</td>";
-                    }
-
-                    // Defaut
-                    print "<td align=\"center\">";
-                    if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF == "$name")
-                    {
-                        print img_picto($langs->trans("Default"),'on');
-                    }
-                    else
-                    {
-                        print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'&amp;type=invoice_supplier" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').'</a>';
-                    }
-                    print '</td>';
-
-                    // Info
-                    $htmltooltip =    ''.$langs->trans("Name").': '.$module->name;
-                    $htmltooltip.='<br>'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown"));
-                    $htmltooltip.='<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
-                    $htmltooltip.='<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
-                    $htmltooltip.='<br>'.$langs->trans("Logo").': '.yn($module->option_logo,1,1);
-                    $htmltooltip.='<br>'.$langs->trans("PaymentMode").': '.yn($module->option_modereg,1,1);
-                    $htmltooltip.='<br>'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg,1,1);
-                    print '<td align="center">';
-                    print $form->textwithpicto('',$htmltooltip,1,0);
-                    print '</td>';
-                    print '<td align="center">';
-                    print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimenfacture&amp;module='.$name.'">'.img_object($langs->trans("Preview"),'bill').'</a>';
-                    print '</td>';
-
-                    print "</tr>\n";
-                }
-            }
-            closedir($handle);
-        }
-    }
-}
-
-print '</table><br/>';
-
 print_titre($langs->trans("OtherOptions"));
 print '<table class="noborder" width="100%">';
 print '<tr class="liste_titre">';
@@ -662,10 +496,10 @@ print "</tr>\n";
 
 print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
 print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-print '<input type="hidden" name="action" value="set_SUPPLIER_INVOICE_FREE_TEXT">';
+print '<input type="hidden" name="action" value="set_SUPPLIER_ORDER_FREE_TEXT">';
 print '<tr '.$bc[$var].'><td colspan="2">';
 print $langs->trans("FreeLegalTextOnInvoices").' ('.$langs->trans("AddCRIfTooLong").')<br>';
-print '<textarea name="SUPPLIER_INVOICE_FREE_TEXT" class="flat" cols="120">'.$conf->global->SUPPLIER_INVOICE_FREE_TEXT.'</textarea>';
+print '<textarea name="SUPPLIER_ORDER_FREE_TEXT" class="flat" cols="120">'.$conf->global->SUPPLIER_ORDER_FREE_TEXT.'</textarea>';
 print '</td><td align="right">';
 print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
 print "</td></tr>\n";
diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php
index 4cb3b9163ef5e617c3db6ad5b29ac7c00a81b6fe..7ca64a2c524ea8c62bfb46b708b4664af9480e13 100644
--- a/htdocs/core/modules/modFournisseur.class.php
+++ b/htdocs/core/modules/modFournisseur.class.php
@@ -72,7 +72,7 @@ class modFournisseur extends DolibarrModules
             $this->langfiles = array('bills', 'companies', 'suppliers', 'orders');
 
             // Config pages
-            $this->config_page_url = array("fournisseur.php");
+            $this->config_page_url = array("supplier_order.php");
 
             // Constantes
             $this->const = array();
@@ -92,6 +92,11 @@ class modFournisseur extends DolibarrModules
             $this->const[$r][1] = "chaine";
             $this->const[$r][2] = "canelle";
 			$r++;
+			
+			$this->const[$r][0] = "INVOICE_SUPPLIER_ADDON_NUMBER";
+            $this->const[$r][1] = "chaine";
+            $this->const[$r][2] = "tulip";
+			$r++;
 
             // Boxes
             $this->boxes = array();
diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php
new file mode 100644
index 0000000000000000000000000000000000000000..f753d8b2fcee1d3dc03d8baac5b69d1417b60ca6
--- /dev/null
+++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php
@@ -0,0 +1,147 @@
+<?php
+/* Copyright (C) 2005-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2013      Philippe Grand       <philippe.grand@atoo-net.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *    	\file       htdocs/core/modules/supplier_order/mod_facture_fournisseur_cactus.php
+ *		\ingroup    commande
+ *		\brief      File containing the Cactus Class of numbering models of suppliers invoices references
+ */
+
+require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_order/modules_facturefournisseur.php';
+
+
+/**
+ *	Cactus Class of numbering models of suppliers invoices references
+ */
+class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices
+{
+	var $version='dolibarr';		// 'development', 'experimental', 'dolibarr'
+	var $error = '';
+	var $nom = 'Cactus';
+	var $prefix='SI';
+
+
+    /**
+     * 	Return description of numbering model
+     *
+     *  @return     string      Text with description
+     */
+    function info()
+    {
+    	global $langs;
+      	return $langs->trans("SimpleNumRefModelDesc",$this->prefix);
+    }
+
+
+    /**
+     * 	Returns a numbering example
+     *
+     *  @return     string      Example
+     */
+    function getExample()
+    {
+        return $this->prefix."1301-0001";
+    }
+
+
+    /**
+     * 	Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering.
+     *
+     *  @return     boolean     false if conflict, true if ok
+     */
+    function canBeActivated()
+    {
+    	global $conf,$langs;
+
+        $siyymm=''; $max='';
+
+		$posindice=8;
+		$sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max";
+        $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn";
+		$sql.= " WHERE ref LIKE '".$this->prefix."____-%'";
+        $sql.= " AND entity = ".$conf->entity;
+        $resql=$db->query($sql);
+        if ($resql)
+        {
+            $row = $db->fetch_row($resql);
+            if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; }
+        }
+        if (! $siyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$siyymm))
+        {
+            return true;
+        }
+        else
+        {
+			$langs->load("errors");
+			$this->error=$langs->trans('ErrorNumRefModel',$max);
+            return false;
+        }
+    }
+
+    /**
+     * 	Return next value
+	 *
+	 *  @param	Societe		$objsoc     Object third party
+	 *  @param  Object		$object		Object
+	 *  @return string      			Value if OK, 0 if KO
+     */
+    function getNextValue($objsoc=0,$object='')
+    {
+        global $db,$conf;
+
+        // D'abord on recupere la valeur max
+        $posindice=8;
+        $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max";
+        $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn";
+		$sql.= " WHERE ref like '".$this->prefix."____-%'";
+        $sql.= " AND entity = ".$conf->entity;
+
+        $resql=$db->query($sql);
+        if ($resql)
+        {
+            $obj = $db->fetch_object($resql);
+            if ($obj) $max = intval($obj->max);
+            else $max=0;
+        }
+
+		//$date=time();
+        $date=$object->datec;   // Not always defined
+        if (empty($date)) $date=$object->date;  // Creation date is order date for suppliers orders
+        $yymm = strftime("%y%m",$date);
+        $num = sprintf("%04s",$max+1);
+
+        return $this->prefix.$yymm."-".$num;
+    }
+
+
+    /**
+     * 	Renvoie la reference de facture suivante non utilisee
+     *
+	 *  @param	Societe		$objsoc     Object third party
+	 *  @param  Object	    $object		Object
+     *  @return string      			Texte descripif
+     */
+    function invoice_get_num($objsoc=0,$object='')
+    {
+        return $this->getNextValue($objsoc,$object);
+    }
+}
+
+?>
diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
new file mode 100644
index 0000000000000000000000000000000000000000..72cf50adc6061b2034c86af3a24ae35237ea3d63
--- /dev/null
+++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
@@ -0,0 +1,145 @@
+<?php
+/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
+ * Copyright (C) 2004-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2013      Philippe Grand       <philippe.grand@atoo-net.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *	\file       htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
+ *	\ingroup    commande
+ *	\brief      File containing the Tulip Class of numbering models of suppliers invoices references
+ */
+
+require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_invoice/modules_facturefournisseur.php';
+
+
+/**
+	\class      mod_facture_fournisseur_tulip
+	\brief      Tulip Class of numbering models of suppliers invoices references
+*/
+class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices
+{
+	var $version='dolibarr';		// 'development', 'experimental', 'dolibarr'
+	var $error = '';
+	var $nom = 'Tulip';
+
+
+    /**
+     *  Returns the description of the model numbering
+     *
+     * 	@return     string      Description Text
+     */
+	function info()
+    {
+    	global $conf,$langs;
+
+		$langs->load("bills");
+		$langs->load("admin");
+
+		$form = new Form($this->db);
+
+		$texte = $langs->trans('GenericNumRefModelDesc')."<br>\n";
+		$texte.= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
+		$texte.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+		$texte.= '<input type="hidden" name="action" value="updateMaskInvoice">';
+		$texte.= '<input type="hidden" name="maskconstinvoice" value="SUPPLIER_INVOICE_TULIP_MASK">';
+		$texte.= '<table class="nobordernopadding" width="100%">';
+
+		$tooltip=$langs->trans("GenericMaskCodes",$langs->transnoentities("Invoice"),$langs->transnoentities("Invoice"));
+		$tooltip.=$langs->trans("GenericMaskCodes2");
+		$tooltip.=$langs->trans("GenericMaskCodes3");
+		$tooltip.=$langs->trans("GenericMaskCodes4a",$langs->transnoentities("Invoice"),$langs->transnoentities("Invoice"));
+		$tooltip.=$langs->trans("GenericMaskCodes5");
+
+		// Parametrage du prefix
+		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
+		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskinvoice" value="'.$conf->global->SUPPLIER_INVOICE_TULIP_MASK.'">',$tooltip,1,1).'</td>';
+
+		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
+
+		$texte.= '</tr>';
+
+		$texte.= '</table>';
+		$texte.= '</form>';
+
+		return $texte;
+    }
+
+    /**
+     *  Returns a numbering example
+     *
+     *  @return     string     Example
+     */
+    function getExample()
+    {
+    	global $conf,$langs,$mysoc;
+
+    	$old_code_client=$mysoc->code_client;
+    	$mysoc->code_client='CCCCCCCCCC';
+    	$numExample = $this->getNextValue($mysoc,'');
+		$mysoc->code_client=$old_code_client;
+
+		if (! $numExample)
+		{
+			$numExample = $langs->trans('NotConfigured');
+		}
+		return $numExample;
+    }
+
+	/**
+	 *  Return next value
+	 *
+	 *  @param	Societe		$objsoc     Object third party
+	 *  @param  Object	    $object		Object
+     *  @return string      			Value if OK, 0 if KO
+	*/
+    function getNextValue($objsoc=0,$object='')
+    {
+		global $db,$conf;
+
+		require_once DOL_DOCUMENT_ROOT .'/core/lib/functions2.lib.php';
+
+		// On defini critere recherche compteur
+		$mask=$conf->global->SUPPLIER_INVOICE_TULIP_MASK;
+
+		if (! $mask)
+		{
+			$this->error='NotConfigured';
+			return 0;
+		}
+
+		$numFinal=get_next_value($db,$mask,'facture_fournisseur','ref','',$objsoc->code_fournisseur,$object->date_commande);
+
+		return  $numFinal;
+	}
+
+
+    /**
+     *  Renvoie la reference de facture suivante non utilisee
+     *
+	 *  @param	Societe		$objsoc     Object third party
+	 *  @param  Object	    $object		Object
+     *  @return string      			Texte descripif
+     */
+    function invoice_get_num($objsoc=0,$object='')
+    {
+        return $this->getNextValue($objsoc,$object);
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php
index 5d409dd6c675e68c283ea43adada87798ab6e0e3..7a80cc93bfebf91017638725879be18bb6114c87 100755
--- a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php
+++ b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php
@@ -1,6 +1,7 @@
 <?php
 /* Copyright (C) 2010	Juanjo Menent	<jmenent@2byte.es>
  * Copyright (C) 2012	Regis Houssin	<regis.houssin@capnetworks.com>
+ * Copyright (C) 2013   Philippe Grand  <philippe.grand@atoo-net.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,9 +21,10 @@
 /**
  *		\file       htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php
  *      \ingroup    facture fournisseur
- *      \brief      File that contain parent class for supplier invoices models
+ *      \brief      File that contains parent class for supplier invoices models
  */
 require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php';
+require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';	// requis car utilise par les classes qui heritent
 
 
 /**
@@ -55,6 +57,79 @@ abstract class ModelePDFSuppliersInvoices extends CommonDocGenerator
 
 }
 
+/**
+ *	Parent Class of numbering models of suppliers invoices references
+ */
+abstract class ModeleNumRefSuppliersInvoices
+{
+	var $error='';
+
+	/**  Return if a model can be used or not
+	 *
+	 *   @return	boolean     true if model can be used
+	 */
+	function isEnabled()
+	{
+		return true;
+	}
+
+	/**  Returns the default description of the model numbering
+	 *
+	 *   @return    string      Description Text
+	 */
+	function info()
+	{
+		global $langs;
+		$langs->load("invoices");
+		return $langs->trans("NoDescription");
+	}
+
+	/**   Returns a numbering example
+	 *
+	 *    @return   string      Example
+	 */
+	function getExample()
+	{
+		global $langs;
+		$langs->load("invoices");
+		return $langs->trans("NoExample");
+	}
+
+	/**  Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering.
+	 *
+	 *   @return	boolean     false if conflict, true if ok
+	 */
+	function canBeActivated()
+	{
+		return true;
+	}
+
+	/**  Returns next value assigned
+	 *
+	 *   @return     string      Valeur
+	 */
+	function getNextValue()
+	{
+		global $langs;
+		return $langs->trans("NotAvailable");
+	}
+
+	/**   Returns version of the model numbering
+	 *
+	 *    @return     string      Value
+	 */
+	function getVersion()
+	{
+		global $langs;
+		$langs->load("admin");
+
+		if ($this->version == 'development') return $langs->trans("VersionDevelopment");
+		if ($this->version == 'experimental') return $langs->trans("VersionExperimental");
+		if ($this->version == 'dolibarr') return DOL_VERSION;
+		return $langs->trans("NotAvailable");
+	}
+}
+
 /**
  *	Create a document onto disk according to template module.
  *
diff --git a/htdocs/core/modules/supplier_order/modules_commandefournisseur.php b/htdocs/core/modules/supplier_order/modules_commandefournisseur.php
index 6b9fd315f187e0b358df87ae9ea39605ea788a20..f9407ba804e2e6760d9f31e2a8675c4a2b8da627 100644
--- a/htdocs/core/modules/supplier_order/modules_commandefournisseur.php
+++ b/htdocs/core/modules/supplier_order/modules_commandefournisseur.php
@@ -4,7 +4,7 @@
  * Copyright (C) 2004      Eric Seigne          <eric.seigne@ryxeo.com>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2006      Andre Cianfarani     <acianfa@free.fr>
- * Copyright (C) 2011      Philippe Grand       <philippe.grand@atoo-net.com>
+ * Copyright (C) 2011-2013 Philippe Grand       <philippe.grand@atoo-net.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -40,7 +40,7 @@ abstract class ModelePDFSuppliersOrders extends CommonDocGenerator
 
 
 	/**
-	 *  Return list of active generation modules
+	 *  Return list of active generation models
 	 *
      *  @param	DoliDB	$db     			Database handler
      *  @param  string	$maxfilenamelength  Max length of value to show
@@ -64,24 +64,24 @@ abstract class ModelePDFSuppliersOrders extends CommonDocGenerator
 
 
 /**
- *	Classe mere des modeles de numerotation des references de commandes fournisseurs
+ *	Parent Class of numbering models of suppliers orders references
  */
 abstract class ModeleNumRefSuppliersOrders
 {
 	var $error='';
 
-	/**  Return if a module can be used or not
+	/**  Return if a model can be used or not
 	 *
-	 *   @return	boolean     true if module can be used
+	 *   @return	boolean     true if model can be used
 	 */
 	function isEnabled()
 	{
 		return true;
 	}
 
-	/**  Renvoie la description par defaut du modele de numerotation
+	/**  Returns the default description of the model numbering
 	 *
-	 *   @return    string      Texte descripif
+	 *   @return    string      Description Text
 	 */
 	function info()
 	{
@@ -90,7 +90,7 @@ abstract class ModeleNumRefSuppliersOrders
 		return $langs->trans("NoDescription");
 	}
 
-	/**   Renvoie un exemple de numerotation
+	/**   Returns a numbering example
 	 *
 	 *    @return   string      Example
 	 */
@@ -101,16 +101,16 @@ abstract class ModeleNumRefSuppliersOrders
 		return $langs->trans("NoExample");
 	}
 
-	/**  Test si les numeros deja en vigueur dans la base ne provoquent pas de conflits qui empecheraient cette numerotation de fonctionner.
+	/**  Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering.
 	 *
-	 *   @return	boolean     false si conflit, true si ok
+	 *   @return	boolean     false if conflict, true if ok
 	 */
 	function canBeActivated()
 	{
 		return true;
 	}
 
-	/**  Renvoie prochaine valeur attribuee
+	/**  Returns next value assigned
 	 *
 	 *   @return     string      Valeur
 	 */
@@ -120,9 +120,9 @@ abstract class ModeleNumRefSuppliersOrders
 		return $langs->trans("NotAvailable");
 	}
 
-	/**   Renvoie version du module numerotation
+	/**   Returns version of the model numbering
 	 *
-	 *    @return     string      Valeur
+	 *    @return     string      Value
 	 */
 	function getVersion()
 	{
@@ -143,7 +143,7 @@ abstract class ModeleNumRefSuppliersOrders
  *  @param	    DoliDB		$db  			Database handler
  *  @param	    Object		$object			Object supplier order
  *  @param	    string		$modele			Force template to use ('' to not force)
- *  @param		Translate	$outputlangs	Object lang a utiliser pour traduction
+ *  @param		Translate	$outputlangs	Object lang to use for traduction
  *  @param      int			$hidedetails    Hide details of lines
  *  @param      int			$hidedesc       Hide description
  *  @param      int			$hideref        Hide ref
@@ -164,7 +164,7 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet
 
 	$srctemplatepath='';
 
-	// Positionne le modele sur le nom du modele a utiliser
+	// Set the model on the model name to use
 	if (! dol_strlen($modele))
 	{
 		if (! empty($conf->global->COMMANDE_SUPPLIER_ADDON_PDF))
@@ -177,7 +177,7 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet
 		}
 	}
 
-	// If selected modele is a filename template (then $modele="modelname:filename")
+	// If selected model is a filename template (then $modele="modelname:filename")
 	$tmp=explode(':',$modele,2);
 	if (! empty($tmp[1]))
 	{
@@ -195,7 +195,7 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet
 		{
 			$file = $prefix."_".$modele.".modules.php";
 
-			// On verifie l'emplacement du modele
+			// We checked the location of the model
 			$file=dol_buildpath($reldir."core/modules/supplier_order/pdf/".$file,0);
 			if (file_exists($file))
 			{
@@ -207,7 +207,7 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet
 		if ($filefound) break;
 	}
 
-	// Charge le modele
+	// Load the model
 	if ($filefound)
 	{
 		require_once $file;
@@ -225,12 +225,12 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet
         	require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
 			dol_delete_preview($object);
 
-			// Appel des triggers
+			// Calls triggers
 			include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
 			$interface=new Interfaces($db);
 			$result=$interface->run_triggers('ORDER_SUPPLIER_BUILDDOC',$object,$user,$langs,$conf);
 			if ($result < 0) { $error++; $this->errors=$interface->errors; }
-			// Fin appel triggers
+			// End calls triggers
 
 			return 1;
 		}
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 04a95bf5980b1d8dc849fceb25298be9a32f1339..ccf194dfeb045afd11ff01ee8b5bc623e84b926a 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -1383,6 +1383,7 @@ MultiCompanySetup=Configuration du module Multi-société
 SuppliersSetup=Configuration du module Fournisseurs
 SuppliersCommandModel=Modèle de commandes fournisseur complet (logo...)
 SuppliersInvoiceModel=Modèle de factures fournisseur complet (logo...)
+SuppliersInvoiceNumberingModel=Modèles de numérotation des factures fournisseur
 ##### GeoIPMaxmind #####
 GeoIPMaxmindSetup=Configuration du module GeoIP Maxmind
 PathToGeoIPMaxmindCountryDataFile=Chemin du fichier Maxmind contenant les conversions IP->Pays.<br>Exemple: /usr/local/share/GeoIP/GeoIP.dat