diff --git a/htdocs/admin/fournisseur.php b/htdocs/admin/fournisseur.php
index af104ef5bbcfb51138ea17975655f7dbbe2f1e5e..d7670bb434e7f54f0f0acd51e3ef3a2e458a7839 100644
--- a/htdocs/admin/fournisseur.php
+++ b/htdocs/admin/fournisseur.php
@@ -4,6 +4,7 @@
  * Copyright (C) 2005-2009 Regis Houssin           <regis@dolibarr.fr>
  * Copyright (C) 2004      Sebastien Di Cintio     <sdicintio@ressource-toi.org>
  * Copyright (C) 2004      Benoit Mortier          <benoit.mortier@opensides.be>
+ * Copyright (C) 2010      Juanjo Menent           <jmenent@2byte.es>
  *
  * 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
@@ -60,7 +61,7 @@ if ($_GET["action"] == 'specimen')
 	$commande->initAsSpecimen();
 
 	// Charge le modele
-	$dir = DOL_DOCUMENT_ROOT . "/includes/modules/supplier_order/pdf/";
+	$dir = DOL_DOCUMENT_ROOT . "/includes/modules/supplier/order/";
 	$file = "pdf_".$modele.".modules.php";
 	if (file_exists($dir.$file))
 	{
@@ -168,7 +169,7 @@ print "<br>";
 
 // Supplier order numbering module
 
-$dir = DOL_DOCUMENT_ROOT."/includes/modules/supplier_order/";
+$dir = DOL_DOCUMENT_ROOT."/includes/modules/supplier/order/";
 
 print_titre($langs->trans("OrdersNumberingModules"));
 
@@ -194,7 +195,7 @@ if ($handle)
 		{
 			$file = substr($file, 0, dol_strlen($file)-4);
 
-			require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier_order/".$file.".php");
+			require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier/order/".$file.".php");
 
 			$module = new $file;
 
@@ -262,7 +263,7 @@ print '</table><br>';
  * Modeles documents for supplier orders
  */
 
-$dir = DOL_DOCUMENT_ROOT.'/includes/modules/supplier_order/pdf/';
+$dir = DOL_DOCUMENT_ROOT.'/includes/modules/supplier/order/';
 
 print_titre($langs->trans("OrdersModelModule"));
 
diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php
index 93920175d4da97c7e5713a67b96e79e08d62c2d1..d93d305599ba268de7552df9524de0067611602c 100644
--- a/htdocs/core/class/html.formfile.class.php
+++ b/htdocs/core/class/html.formfile.class.php
@@ -1,5 +1,6 @@
 <?php
 /* Copyright (c) 2008 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (c) 2010 Juanjo Menent  <jmenent@2byte.es>
  *
  * 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
@@ -266,7 +267,7 @@ class FormFile
 				if (is_array($genallowed)) $modellist=$genallowed;
 				else
 				{
-					include_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier_order/modules_commandefournisseur.php');
+					include_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier/order/modules_commandefournisseur.php');
 					$model=new ModelePDFSuppliersOrders();
 					$modellist=$model->liste_modeles($this->db);
 				}
diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index 5783ca1bb013877adc2d281ea464e0c063619f66..7fc0d65766ae38cda395b4a4fbca3b0974f648f7 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -442,7 +442,7 @@ class CommandeFournisseur extends Commande
 		global $db, $langs, $conf;
 		$langs->load("orders");
 
-		$dir = DOL_DOCUMENT_ROOT .'/includes/modules/supplier_order/';
+		$dir = DOL_DOCUMENT_ROOT .'/includes/modules/supplier/order/';
 		$modelisok=0;
 		$liste=array();
 
diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php
index eb6a6ebb05a0094fc31bbbfe53a95b2fa92bb436..f910cb80f77913621556d86f096262c9117adfb2 100644
--- a/htdocs/fourn/commande/dispatch.php
+++ b/htdocs/fourn/commande/dispatch.php
@@ -3,6 +3,7 @@
  * Copyright (C) 2004-2010 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005      Eric Seigne          <eric.seigne@ryxeo.com>
  * Copyright (C) 2005-2009 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2010      Juanjo Menent        <jmenent@2byte.es>
  *
  * 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
@@ -27,7 +28,7 @@
  */
 
 require("../../main.inc.php");
-require_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier_order/modules_commandefournisseur.php');
+require_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier/order/modules_commandefournisseur.php');
 require_once(DOL_DOCUMENT_ROOT."/product/stock/class/entrepot.class.php");
 require_once(DOL_DOCUMENT_ROOT."/lib/fourn.lib.php");
 require_once(DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php");
diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php
index 0406926fdc5d4a4a4c40ef01111f788994f452e7..842ede959f3d669c121f24501f3f3b8193dc1654 100644
--- a/htdocs/fourn/commande/fiche.php
+++ b/htdocs/fourn/commande/fiche.php
@@ -30,7 +30,7 @@
 require("../../main.inc.php");
 require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
 require_once(DOL_DOCUMENT_ROOT."/core/class/html.formorder.class.php");
-require_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier_order/modules_commandefournisseur.php');
+require_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier/order/modules_commandefournisseur.php');
 require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php";
 require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.product.class.php";
 require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php";
diff --git a/htdocs/includes/modules/supplier/order/mod_commande_fournisseur_muguet.php b/htdocs/includes/modules/supplier/order/mod_commande_fournisseur_muguet.php
new file mode 100755
index 0000000000000000000000000000000000000000..f8604ffbb6ff377204ab9bb0987475ec89db68c1
--- /dev/null
+++ b/htdocs/includes/modules/supplier/order/mod_commande_fournisseur_muguet.php
@@ -0,0 +1,138 @@
+<?php
+/* Copyright (C) 2005-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2005-2009 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2010	   Juanjo Menent        <jmenent@2byte.es>
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *    	\file       htdocs/includes/modules/supplier/order/mod_commande_fournisseur_muguet.php
+ *		\ingroup    commande
+ *		\brief      Fichier contenant la classe du modele de numerotation de reference de commande fournisseur Muguet
+ *		\version    $Id$
+ */
+
+require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier/order/modules_commandefournisseur.php");
+
+
+/**	    \class      mod_commande_fournisseur_muguet
+ *		\brief      Classe du modele de numerotation de reference de commande fournisseur Muguet
+ */
+class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
+{
+	var $version='dolibarr';		// 'development', 'experimental', 'dolibarr'
+	var $error = '';
+	var $nom = 'Muguet';
+	var $prefix='CF';
+
+
+    /**     \brief      Return description of numbering module
+     *      \return     string      Text with description
+     */
+    function info()
+    {
+    	global $langs;
+      	return $langs->trans("SimpleNumRefModelDesc",$this->prefix);
+    }
+
+
+    /**     \brief      Renvoi un exemple de numerotation
+     *      \return     string      Example
+     */
+    function getExample()
+    {
+        return $this->prefix."0501-0001";
+    }
+
+
+    /**     \brief      Test si les numeros deja en vigueur dans la base ne provoquent pas de
+     *                  de conflits qui empechera cette numerotation de fonctionner.
+     *      \return     boolean     false si conflit, true si ok
+     */
+    function canBeActivated()
+    {
+    	global $conf,$langs;
+
+        $coyymm=''; $max='';
+
+		$posindice=8;
+		$sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max";
+        $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
+		$sql.= " WHERE ref LIKE '".$this->prefix."____-%'";
+        $sql.= " AND entity = ".$conf->entity;
+        $resql=$db->query($sql);
+        if ($resql)
+        {
+            $row = $db->fetch_row($resql);
+            if ($row) { $coyymm = substr($row[0],0,6); $max=$row[0]; }
+        }
+        if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$coyymm))
+        {
+            return true;
+        }
+        else
+        {
+			$langs->load("errors");
+			$this->error=$langs->trans('ErrorNumRefModel',$max);
+            return false;
+        }
+    }
+
+    /**     \brief      Return next value
+	*      	\param      objsoc      Object third party
+	*      	\param      object		Object
+	*       \return     string      Valeur
+    */
+    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."commande_fournisseur";
+		$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->date_commande;
+        $yymm = strftime("%y%m",$date);
+        $num = sprintf("%04s",$max+1);
+
+        return $this->prefix.$yymm."-".$num;
+    }
+
+
+    /**     \brief      Renvoie la reference de commande suivante non utilisee
+	*      	\param      objsoc      Object third party
+	*      	\param      object		Object
+    *      	\return     string      Texte descripif
+    */
+    function commande_get_num($objsoc=0,$object='')
+    {
+        return $this->getNextValue($objsoc,$object);
+    }
+}
+
+?>
diff --git a/htdocs/includes/modules/supplier/order/mod_commande_fournisseur_orchidee.php b/htdocs/includes/modules/supplier/order/mod_commande_fournisseur_orchidee.php
new file mode 100755
index 0000000000000000000000000000000000000000..4ad4fdba195cf148f052dbb35be18a82662a0280
--- /dev/null
+++ b/htdocs/includes/modules/supplier/order/mod_commande_fournisseur_orchidee.php
@@ -0,0 +1,139 @@
+<?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@dolibarr.fr>
+ * Copyright (C) 2010      Juanjo Menent        <jmenent@2byte.es>
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *	\file       htdocs/includes/modules/supplier/order/mod_commande_fournisseur_orchidee.php
+ *	\ingroup    commande
+ *	\brief      Fichier contenant la classe du modele de numerotation de reference de commande fournisseur Orchidee
+ *	\version    $Id$
+ */
+
+require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier/order/modules_commandefournisseur.php");
+
+
+/**
+	\class      mod_commande_fournisseur_orchidee
+	\brief      Classe du modele de numerotation de reference de commande fournisseur Orchidee
+*/
+class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders
+{
+	var $version='dolibarr';		// 'development', 'experimental', 'dolibarr'
+	var $error = '';
+	var $nom = 'Orchidee';
+
+
+    /**     \brief      Renvoi la description du modele de numerotation
+     *      \return     string      Texte descripif
+     */
+	function info()
+    {
+    	global $conf,$langs;
+
+		$langs->load("bills");
+		$langs->load("admin");
+
+		$form = new Form($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="updateMask">';
+		$texte.= '<input type="hidden" name="maskconstorder" value="COMMANDE_FOURNISSEUR_ORCHIDEE_MASK">';
+		$texte.= '<table class="nobordernopadding" width="100%">';
+
+		$tooltip=$langs->trans("GenericMaskCodes",$langs->transnoentities("Order"));
+		$tooltip.=$langs->trans("GenericMaskCodes2");
+		$tooltip.=$langs->trans("GenericMaskCodes3");
+		$tooltip.=$langs->trans("GenericMaskCodes4a",$langs->transnoentities("Order"),$langs->transnoentities("Order"));
+		$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="maskorder" value="'.$conf->global->COMMANDE_FOURNISSEUR_ORCHIDEE_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;
+    }
+
+    /**     \brief      Renvoi un exemple de numerotation
+     *      \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;
+    }
+
+	/**		\brief      Return next value
+	*      	\param      objsoc      Object third party
+	*      	\param      commande	Object supplier order
+	*      	\return     string      Value if OK, 0 if KO
+	*/
+    function getNextValue($objsoc=0,$commande='')
+    {
+		global $db,$conf;
+
+		require_once(DOL_DOCUMENT_ROOT ."/lib/functions2.lib.php");
+
+		// On defini critere recherche compteur
+		$mask=$conf->global->COMMANDE_FOURNISSEUR_ORCHIDEE_MASK;
+
+		if (! $mask)
+		{
+			$this->error='NotConfigured';
+			return 0;
+		}
+
+		$numFinal=get_next_value($db,$mask,'commande_fournisseur','ref','',$objsoc->code_fournisseur,$commande->date_commande);
+
+		return  $numFinal;
+	}
+
+
+    /**     \brief      Renvoie la reference de commande suivante non utilisee
+     *      \param      objsoc      Objet societe
+     *      \param      commande		Objet commande
+     *      \return     string      Texte descripif
+     */
+    function commande_get_num($objsoc=0,$commande='')
+    {
+        return $this->getNextValue($objsoc,$commande);
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/htdocs/includes/modules/supplier/order/modules_commandefournisseur.php b/htdocs/includes/modules/supplier/order/modules_commandefournisseur.php
new file mode 100755
index 0000000000000000000000000000000000000000..6cdc33a5edc74fb3ab99dc84bc7bf5ae73fde5ea
--- /dev/null
+++ b/htdocs/includes/modules/supplier/order/modules_commandefournisseur.php
@@ -0,0 +1,233 @@
+<?php
+/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
+ * Copyright (C) 2004-2005 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004      Eric Seigne          <eric.seigne@ryxeo.com>
+ * Copyright (C) 2005-2010 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2006      Andre Cianfarani     <acianfa@free.fr>
+ * Copyright (C) 2010      Juanjo Menent        <jmenent@2byte.es>
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *		\file       htdocs/includes/modules/supplier/order/modules_commandefournisseur.php
+ *      \ingroup    commande
+ *      \brief      File that contain parent class for supplier orders models
+ *                  and parent class for supplier orders numbering models
+ *      \version    $Id$
+ */
+require_once(DOL_DOCUMENT_ROOT.'/lib/pdf.lib.php');
+require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
+
+
+/**
+ *	\class      ModelePDFSuppliersOrders
+ *	\brief      Parent class for supplier orders models
+ */
+class ModelePDFSuppliersOrders
+{
+	var $error='';
+
+
+	/**
+	 *      \brief      Return list of active generation modules
+	 * 		\param		$db		Database handler
+	 */
+	function liste_modeles($db)
+	{
+		global $conf;
+
+		$type='supplier_order';
+		$liste=array();
+
+		include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
+		$liste=getListOfModels($db,$type,'');
+
+		return $liste;
+	}
+
+}
+
+
+
+/**
+ *	\class      ModeleNumRefSuppliersOrders
+ *	\brief      Classe mere des modeles de numerotation des references de commandes fournisseurs
+ */
+class ModeleNumRefSuppliersOrders
+{
+	var $error='';
+
+	/**     \brief     	Return if a module can be used or not
+	 *      	\return		boolean     true if module can be used
+	 */
+	function isEnabled()
+	{
+		return true;
+	}
+
+	/**     \brief      Renvoi la description par defaut du modele de numerotation
+	 *      \return     string      Texte descripif
+	 */
+	function info()
+	{
+		global $langs;
+		$langs->load("orders");
+		return $langs->trans("NoDescription");
+	}
+
+	/**     \brief      Renvoi un exemple de num�rotation
+	 *      \return     string      Example
+	 */
+	function getExample()
+	{
+		global $langs;
+		$langs->load("orders");
+		return $langs->trans("NoExample");
+	}
+
+	/**     \brief      Test si les numeros deja en vigueur dans la base ne provoquent pas de
+	 *                  de conflits qui empechera cette numerotation de fonctionner.
+	 *      \return     boolean     false si conflit, true si ok
+	 */
+	function canBeActivated()
+	{
+		return true;
+	}
+
+	/**     \brief      Renvoi prochaine valeur attribuee
+	 *      \return     string      Valeur
+	 */
+	function getNextValue()
+	{
+		global $langs;
+		return $langs->trans("NotAvailable");
+	}
+
+	/**     \brief      Renvoi version du module numerotation
+	 *      	\return     string      Valeur
+	 */
+	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 object on disk
+ *		@param	    db  			objet base de donnee
+ *		@param	    object			object supplier order
+ *		@param	    model			force le modele a utiliser ('' to not force)
+ *		@param		outputlangs		objet lang a utiliser pour traduction
+ *      @return     int         	0 si KO, 1 si OK
+ */
+function supplier_order_pdf_create($db, $object, $model, $outputlangs)
+{
+	global $langs;
+	$langs->load("suppliers");
+
+	$dir = DOL_DOCUMENT_ROOT."/includes/modules/supplier/order/";
+
+	// Positionne modele sur le nom du modele de commande fournisseur a utiliser
+	if (! dol_strlen($model))
+	{
+		if (! empty($conf->global->COMMANDE_SUPPLIER_ADDON_PDF))
+		{
+			$model = $conf->global->COMMANDE_SUPPLIER_ADDON_PDF;
+		}
+		else
+		{
+			print $langs->trans("Error")." ".$langs->trans("Error_COMMANDE_SUPPLIER_ADDON_PDF_NotDefined");
+			return 0;
+		}
+	}
+	// Charge le modele
+	$file = "pdf_".$model.".modules.php";
+	if (file_exists($dir.$file))
+	{
+		$classname = "pdf_".$model;
+		require_once($dir.$file);
+
+		$obj = new $classname($db);
+
+		// We save charset_output to restore it because write_file can change it if needed for
+		// output format that does not support UTF8.
+		$sav_charset_output=$outputlangs->charset_output;
+		if ($obj->write_file($object,$outputlangs) > 0)
+		{
+			// on supprime l'image correspondant au preview
+			supplier_order_delete_preview($db, $object->id);
+
+			$outputlangs->charset_output=$sav_charset_output;
+			return 1;
+		}
+		else
+		{
+			$outputlangs->charset_output=$sav_charset_output;
+			dol_syslog("Erreur dans supplier_order_pdf_create");
+			dol_print_error($db,$obj->error);
+			return 0;
+		}
+	}
+	else
+	{
+		print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file);
+		return 0;
+	}
+}
+
+/**
+ * Enter description here...
+ *
+ * @param   $db
+ * @param   $propalid
+ * @return  int
+ */
+function supplier_order_delete_preview($db, $objectid)
+{
+	global $langs,$conf;
+
+	$comfourn = new CommandeFournisseur($db,"",$objectid);
+	$comfourn->fetch($objectid);
+	$client = new Societe($db);
+	$client->fetch($comfourn->socid);
+
+	if ($conf->fournisseur->dir_output.'/commande')
+	{
+		$comfournref = dol_sanitizeFileName($comfourn->ref);
+		$dir = $conf->commande->dir_output . "/" . $comfournref ;
+		$file = $dir . "/" . $comfournref . ".pdf.png";
+
+		if ( file_exists( $file ) && is_writable( $file ) )
+		{
+			if ( ! dol_delete_file($file) )
+			{
+				$this->error=$langs->trans("ErrorFailedToOpenFile",$file);
+				return 0;
+			}
+		}
+	}
+
+	return 1;
+}
+?>
diff --git a/htdocs/includes/modules/supplier/order/pdf_muscadet.modules.php b/htdocs/includes/modules/supplier/order/pdf_muscadet.modules.php
new file mode 100755
index 0000000000000000000000000000000000000000..5e7d58a731fc2d80c8f2001f7010cd393655e8f6
--- /dev/null
+++ b/htdocs/includes/modules/supplier/order/pdf_muscadet.modules.php
@@ -0,0 +1,718 @@
+<?php
+/* Copyright (C) 2004-2009 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2005-2009 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2007      Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
+ * Copyright (C) 2010	   Juanjo Menent        <jmenent@2byte.es>
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *	\file       htdocs/includes/modules/supplier/order/pdf_muscadet.modules.php
+ *	\ingroup    fournisseur
+ *	\brief      Fichier de la classe permettant de generer les commandes fournisseurs au modele Muscadet
+ *	\version    $Id$
+ */
+
+require_once(DOL_DOCUMENT_ROOT."/includes/modules/supplier/order/modules_commandefournisseur.php");
+require_once(DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php");
+require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
+require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
+
+
+/**
+ *	\class      pdf_muscadet
+ *	\brief      Classe permettant de generer les commandes fournisseurs au modele Muscadet
+ */
+class pdf_muscadet extends ModelePDFSuppliersOrders
+{
+
+	/**
+	 *	\brief      Constructeur
+	 *	\param	    db		Handler acces base de donnee
+	 */
+	function pdf_muscadet($db)
+	{
+		global $conf,$langs,$mysoc;
+
+		$langs->load("main");
+		$langs->load("bills");
+
+		$this->db = $db;
+		$this->name = "muscadet";
+		$this->description = $langs->trans('SuppliersCommandModel');
+
+		// Dimension page pour format A4
+		$this->type = 'pdf';
+		$this->page_largeur = 210;
+		$this->page_hauteur = 297;
+		$this->format = array($this->page_largeur,$this->page_hauteur);
+		$this->marge_gauche=10;
+		$this->marge_droite=10;
+		$this->marge_haute=10;
+		$this->marge_basse=10;
+
+		$this->option_logo = 1;                    // Affiche logo
+		$this->option_tva = 1;                     // Gere option tva FACTURE_TVAOPTION
+		$this->option_modereg = 1;                 // Affiche mode reglement
+		$this->option_condreg = 1;                 // Affiche conditions reglement
+		$this->option_codeproduitservice = 1;      // Affiche code produit-service
+		$this->option_multilang = 1;               // Dispo en plusieurs langues
+
+		$this->franchise=!$mysoc->tva_assuj;
+
+		// Recupere emmetteur
+		$this->emetteur=$mysoc;
+		if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2);    // Par defaut, si n'etait pas defini
+
+		// Defini position des colonnes
+		$this->posxdesc=$this->marge_gauche+1;
+		$this->posxtva=121;
+		$this->posxup=132;
+		$this->posxqty=151;
+		$this->posxdiscount=162;
+		$this->postotalht=177;
+
+		$this->tva=array();
+		$this->atleastoneratenotnull=0;
+		$this->atleastonediscount=0;
+	}
+
+
+	/**
+	 * 	\brief      Fonction generant la commande sur le disque
+	 * 	\param	    id	        	Id de la commande a generer
+	 *	\param		outputlangs		Lang output object
+	 *	\return	    int         	1=ok, 0=ko
+	 */
+	function write_file($object,$outputlangs='')
+	{
+		global $user,$langs,$conf;
+
+		if (! is_object($outputlangs)) $outputlangs=$langs;
+		// Force output charset to ISO, because, FPDF expect text encoded in ISO
+		$outputlangs->charset_output='ISO-8859-1';
+
+		$outputlangs->load("main");
+		$outputlangs->load("dict");
+		$outputlangs->load("companies");
+		$outputlangs->load("bills");
+		$outputlangs->load("products");
+		$outputlangs->load("orders");
+
+		if ($conf->fournisseur->dir_output.'/commande')
+		{
+			$deja_regle = "";
+
+			// Definition de $dir et $file
+			if ($object->specimen)
+			{
+				$dir = $conf->fournisseur->dir_output.'/commande';
+				$file = $dir . "/SPECIMEN.pdf";
+			}
+			else
+			{
+				$objectref = dol_sanitizeFileName($object->ref);
+				$dir = $conf->fournisseur->dir_output . "/commande/" . $objectref;
+				$file = $dir . "/" . $objectref . ".pdf";
+			}
+
+			if (! file_exists($dir))
+			{
+				if (create_exdir($dir) < 0)
+				{
+					$this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
+					return 0;
+				}
+
+			}
+
+			if (file_exists($dir))
+			{
+				$nblignes = sizeof($object->lines);
+
+				// Protection et encryption du pdf
+				if ($conf->global->PDF_SECURITY_ENCRYPTION)
+				{
+					$pdf=new FPDI_Protection('P','mm',$this->format);
+					$pdfrights = array('print'); // Ne permet que l'impression du document
+					$pdfuserpass = ''; // Mot de passe pour l'utilisateur final
+					$pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini
+					$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
+				}
+				else
+				{
+					$pdf=new FPDI('P','mm',$this->format);
+				}
+
+                if (class_exists('TCPDF'))
+                {
+                    $pdf->setPrintHeader(false);
+                    $pdf->setPrintFooter(false);
+                }
+				$pdf->SetFont('Helvetica');
+
+				$pdf->Open();
+				$pagenb=0;
+				$pdf->SetDrawColor(128,128,128);
+
+				$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
+				$pdf->SetSubject($outputlangs->transnoentities("Order"));
+				$pdf->SetCreator("Dolibarr ".DOL_VERSION);
+				$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
+				$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Order"));
+				if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false);
+
+				$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite);   // Left, Top, Right
+				$pdf->SetAutoPageBreak(1,0);
+
+				// Positionne $this->atleastonediscount si on a au moins une remise
+				for ($i = 0 ; $i < $nblignes ; $i++)
+				{
+					if ($object->lines[$i]->remise_percent)
+					{
+						$this->atleastonediscount++;
+					}
+				}
+
+				// New page
+				$pdf->AddPage();
+				$pagenb++;
+				$this->_pagehead($pdf, $object, 1, $outputlangs);
+				$pdf->SetFont('','', 9);
+				$pdf->MultiCell(0, 3, '', 0, 'J');		// Set interline to 3
+				$pdf->SetTextColor(0,0,0);
+
+				$tab_top = 90;
+				$tab_top_newpage = 50;
+				$tab_height = 110;
+				$tab_height_newpage = 150;
+
+				// Affiche notes
+				if (! empty($object->note_public))
+				{
+					$tab_top = 88;
+
+					$pdf->SetFont('','', 9);   // Dans boucle pour gerer multi-page
+					$pdf->SetXY ($this->posxdesc-1, $tab_top);
+					$pdf->MultiCell(190, 3, $outputlangs->convToOutputCharset($object->note_public), 0, 'J');
+					$nexY = $pdf->GetY();
+					$height_note=$nexY-$tab_top;
+
+					// Rect prend une longueur en 3eme param
+					$pdf->SetDrawColor(192,192,192);
+					$pdf->Rect($this->marge_gauche, $tab_top-1, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note+1);
+
+					$tab_height = $tab_height - $height_note;
+					$tab_top = $nexY+6;
+				}
+				else
+				{
+					$height_note=0;
+				}
+
+				$iniY = $tab_top + 7;
+				$curY = $tab_top + 7;
+				$nexY = $tab_top + 7;
+
+				// Boucle sur les lignes
+				for ($i = 0 ; $i < $nblignes ; $i++)
+				{
+					$curY = $nexY;
+
+					// Description de la ligne produit
+					//$libelleproduitservice=pdf_getlinedesc($object,$i,$outputlangs,0,0,1);
+
+					$pdf->SetFont('','', 9);   // Dans boucle pour gerer multi-page
+					
+					pdf_getlinedesc($pdf,$object,$i,$outputlangs,108,3,$this->posxdesc-1,$curY,0,0,1);
+
+					//$pdf->writeHTMLCell(108, 3, $this->posxdesc-1, $curY, $outputlangs->convToOutputCharset($libelleproduitservice), 0, 1);
+
+					$pdf->SetFont('','', 9);   // On repositionne la police par defaut
+
+					$nexY = $pdf->GetY();
+
+					// TVA
+					$pdf->SetXY ($this->posxtva, $curY);
+					$pdf->MultiCell(10, 3, ($object->lines[$i]->tva_tx < 0 ? '*':'').abs($object->lines[$i]->tva_tx), 0, 'R');
+
+					// Unit price before discount
+					$pdf->SetXY ($this->posxup, $curY);
+					$pdf->MultiCell(18, 3, price($object->lines[$i]->subprice), 0, 'R', 0);
+
+					// Quantity
+					$pdf->SetXY ($this->posxqty, $curY);
+					$pdf->MultiCell(10, 3, $object->lines[$i]->qty, 0, 'R');
+
+					// Discount on line
+					$pdf->SetXY ($this->posxdiscount, $curY);
+					if ($object->lines[$i]->remise_percent)
+					{
+						$pdf->MultiCell(14, 3, $object->lines[$i]->remise_percent."%", 0, 'R');
+					}
+
+					// Total HT line
+					$pdf->SetXY ($this->postotalht, $curY);
+					$total = price($object->lines[$i]->total_ht);
+					$pdf->MultiCell(23, 3, $total, 0, 'R', 0);
+
+					// Collecte des totaux par valeur de tva dans $this->tva["taux"]=total_tva
+					$tvaligne=$object->lines[$i]->total_tva;
+					if ($object->remise_percent) $tvaligne-=($tvaligne*$object->remise_percent)/100;
+					$vatrate=(string) $object->lines[$i]->tva_tx;
+					if (($object->lines[$i]->info_bits & 0x01) == 0x01) $vatrate.='*';
+					$this->tva[$vatrate] += $tvaligne;
+
+					$nexY+=2;    // Passe espace entre les lignes
+
+					// Test if a new page is required
+					if ($pagenb == 1)
+					{
+						$tab_top_in_current_page=$tab_top;
+						$tab_height_in_current_page=$tab_height;
+					}
+					else
+					{
+						$tab_top_in_current_page=$tab_top_newpage;
+						$tab_height_in_current_page=$tab_height_newpage;
+					}
+					if (($nexY+$nblineFollowDesc) > ($tab_top_in_current_page+$tab_height_in_current_page) && $i < ($nblignes - 1))
+					{
+						if ($pagenb == 1)
+						{
+							$this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY, $outputlangs);
+						}
+						else
+						{
+							$this->_tableau($pdf, $tab_top_newpage, $tab_height_newpage, $nexY, $outputlangs);
+						}
+
+						$this->_pagefoot($pdf, $object, $outputlangs);
+
+						// New page
+						$pdf->AddPage();
+						$pagenb++;
+						$this->_pagehead($pdf, $object, 0, $outputlangs);
+						$pdf->SetFont('','', 9);
+						$pdf->MultiCell(0, 3, '', 0, 'J');		// Set interline to 3
+						$pdf->SetTextColor(0,0,0);
+
+						$nexY = $tab_top_newpage + 7;
+					}
+
+				}
+
+				// Show square
+				if ($pagenb == 1)
+				{
+					$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
+					$bottomlasttab=$tab_top + $tab_height + 1;
+				}
+				else
+				{
+					$this->_tableau($pdf, $tab_top_newpage, $tab_height_newpage, $nexY, $outputlangs);
+					$bottomlasttab=$tab_top_newpage + $tab_height_newpage + 1;
+				}
+
+				$posy=$this->_tableau_tot($pdf, $object, $deja_regle, $bottomlasttab, $outputlangs);
+
+				if ($deja_regle)
+				{
+					$this->_tableau_versements($pdf, $fac, $posy);
+				}
+
+				/*
+				 * Mode de reglement
+				 */
+				if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER))
+				{
+					$pdf->SetXY ($this->marge_gauche, 228);
+					$pdf->SetTextColor(200,0,0);
+					$pdf->SetFont('','B',8);
+					$pdf->MultiCell(90, 3, $outputlangs->transnoentities("ErrorNoPaiementModeConfigured"),0,'L',0);
+					$pdf->MultiCell(90, 3, $outputlangs->transnoentities("ErrorCreateBankAccount"),0,'L',0);
+					$pdf->SetTextColor(0,0,0);
+				}
+
+				/*
+				 * Pied de page
+				 */
+				$this->_pagefoot($pdf, $object, $outputlangs);
+				$pdf->AliasNbPages();
+
+				$pdf->Close();
+
+				$pdf->Output($file,'F');
+				if (! empty($conf->global->MAIN_UMASK))
+				@chmod($file, octdec($conf->global->MAIN_UMASK));
+
+				return 1;   // Pas d'erreur
+			}
+			else
+			{
+				$this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
+				return 0;
+			}
+		}
+		else
+		{
+			$this->error=$langs->trans("ErrorConstantNotDefined","SUPPLIER_OUTPUTDIR");
+			return 0;
+		}
+		$this->error=$langs->trans("ErrorUnknown");
+		return 0;   // Erreur par defaut
+	}
+
+	/**
+	 *   \brief      Affiche le total a payer
+	 *   \param      pdf         	Objet PDF
+	 *   \param      object        	Objet order
+	 *   \param      deja_regle  	Montant deja regle
+	 *   \return     y              Position pour suite
+	 */
+	function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs)
+	{
+		$tab2_top = $posy;
+		$tab2_hl = 5;
+		$tab2_height = $tab2_hl * 4;
+		$pdf->SetFont('','', 9);
+
+		$pdf->SetXY ($this->marge_gauche, $tab2_top + 0);
+
+		// If France, show VAT mention if not applicable
+		if ($this->emetteur->pays_code == 'FR' && $this->franchise == 1)
+		{
+			$pdf->MultiCell(100, $tab2_hl, "* TVA non applicable art-293B du CGI", 0, 'L', 0);
+		}
+
+		// Tableau total
+		$lltot = 200; $col1x = 120; $col2x = 182; $largcol2 = $lltot - $col2x;
+
+		// Total HT
+		$pdf->SetFillColor(255,255,255);
+		$pdf->SetXY ($col1x, $tab2_top + 0);
+		$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
+
+		$pdf->SetXY ($col2x, $tab2_top + 0);
+		$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht + $object->remise), 0, 'R', 1);
+
+		// Remise globale
+		if ($object->remise > 0)
+		{
+			$pdf->SetXY ($col1x, $tab2_top + $tab2_hl);
+			$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("GlobalDiscount"), 0, 'L', 1);
+
+			$pdf->SetXY ($col2x, $tab2_top + $tab2_hl);
+			$pdf->MultiCell($largcol2, $tab2_hl, "-".$object->remise_percent."%", 0, 'R', 1);
+
+			$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * 2);
+			$pdf->MultiCell($col2x-$col1x, $tab2_hl, "Total HT apres remise", 0, 'L', 1);
+
+			$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2);
+			$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht), 0, 'R', 0);
+
+			$index = 2;
+		}
+		else
+		{
+			$index = 0;
+		}
+
+		// Affichage des totaux de TVA par taux (conformement a reglementation)
+		$pdf->SetFillColor(248,248,248);
+
+		foreach( $this->tva as $tvakey => $tvaval )
+		{
+			if ($tvakey)    // On affiche pas taux 0
+			{
+				$this->atleastoneratenotnull++;
+
+				$index++;
+				$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
+
+				$tvacompl='';
+
+				if (preg_match('/\*/',$tvakey))
+				{
+					$tvakey=str_replace('*','',$tvakey);
+					$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
+				}
+
+				$totalvat =$outputlangs->transnoentities("TotalVAT").' ';
+				$totalvat.=vatrate($tvakey,1).$tvacompl;
+				$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+
+				$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
+				$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval), 0, 'R', 1);
+			}
+		}
+		if (! $this->atleastoneratenotnull) // If not vat at all
+		{
+			$index++;
+			$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
+			$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalVAT"), 0, 'L', 1);
+			$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
+			$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_tva), 0, 'R', 1);
+		}
+
+		$useborder=0;
+
+		$index++;
+		$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
+		$pdf->SetTextColor(0,0,60);
+		$pdf->SetFillColor(224,224,224);
+		$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalTTC"), $useborder, 'L', 1);
+
+		$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
+		$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc), $useborder, 'R', 1);
+		$pdf->SetFont('','', 9);
+		$pdf->SetTextColor(0,0,0);
+
+		if ($deja_regle > 0)
+		{
+			$index++;
+
+			$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
+			$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("AlreadyPaid"), 0, 'L', 0);
+
+			$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
+			$pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle), 0, 'R', 0);
+
+			$index++;
+			$pdf->SetTextColor(0,0,60);
+			//$pdf->SetFont('','B', 9);
+			$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
+			$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("RemainderToPay"), $useborder, 'L', 1);
+
+			$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
+			$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc - $deja_regle), $useborder, 'R', 1);
+			$pdf->SetFont('','', 9);
+			$pdf->SetTextColor(0,0,0);
+		}
+
+		$index++;
+		return ($tab2_top + ($tab2_hl * $index));
+	}
+
+	/**
+	 *   \brief      Affiche la grille des lignes de propales
+	 *   \param      pdf     objet PDF
+	 */
+	function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
+	{
+		global $conf;
+
+		// Montants exprimes en     (en tab_top - 1
+		$pdf->SetTextColor(0,0,0);
+		$pdf->SetFont('','',8);
+		$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentitiesnoconv("Currency".$conf->monnaie));
+		$pdf->Text($this->page_largeur - $this->marge_droite - $pdf->GetStringWidth($titre), $tab_top-1, $titre);
+
+		$pdf->SetDrawColor(128,128,128);
+
+		// Rect prend une longueur en 3eme param
+		$pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height);
+		// line prend une position y en 3eme param
+		$pdf->line($this->marge_gauche, $tab_top+6, $this->page_largeur-$this->marge_droite, $tab_top+6);
+
+		$pdf->SetFont('','',10);
+
+		$pdf->SetXY ($this->posxdesc-1, $tab_top+2);
+		$pdf->MultiCell(108,2, $outputlangs->transnoentities("Designation"),'','L');
+
+		$pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height);
+		$pdf->SetXY ($this->posxtva-1, $tab_top+2);
+		$pdf->MultiCell(12,2, $outputlangs->transnoentities("VAT"),'','C');
+
+		$pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height);
+		$pdf->SetXY ($this->posxup-1, $tab_top+2);
+		$pdf->MultiCell(18,2, $outputlangs->transnoentities("PriceUHT"),'','C');
+
+		$pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height);
+		$pdf->SetXY ($this->posxqty-1, $tab_top+2);
+		$pdf->MultiCell(11,2, $outputlangs->transnoentities("Qty"),'','C');
+
+		$pdf->line($this->posxdiscount-1, $tab_top, $this->posxdiscount-1, $tab_top + $tab_height);
+		if ($this->atleastonediscount)
+		{
+			$pdf->SetXY ($this->posxdiscount-1, $tab_top+2);
+			$pdf->MultiCell(16,2, $outputlangs->transnoentities("ReductionShort"),'','C');
+		}
+
+		if ($this->atleastonediscount)
+		{
+			$pdf->line($this->postotalht, $tab_top, $this->postotalht, $tab_top + $tab_height);
+		}
+		$pdf->SetXY ($this->postotalht-1, $tab_top+2);
+		$pdf->MultiCell(23,2, $outputlangs->transnoentities("TotalHTShort"),'','C');
+
+	}
+
+	/**
+	 *   	\brief      Show header of page
+	 *    	\param      pdf     		Object PDF
+	 *      \param      object          Object invoice
+	 *      \param      showadress      0=no, 1=yes
+	 *      \param      outputlangs		Object lang for output
+	 */
+	function _pagehead(&$pdf, $object, $showadress=1, $outputlangs)
+	{
+		global $langs,$conf,$mysoc;
+
+		$outputlangs->load("main");
+		$outputlangs->load("bills");
+		$outputlangs->load("orders");
+		$outputlangs->load("companies");
+
+		// Do not add the BACKGROUND as this is for suppliers
+		//pdf_pagehead($pdf,$outputlangs,$this->page_hauteur);
+
+		$pdf->SetTextColor(0,0,60);
+		$pdf->SetFont('','B',13);
+
+		$posy=$this->marge_haute;
+
+		$pdf->SetXY($this->marge_gauche,$posy);
+
+		// Logo
+		$logo=$conf->mycompany->dir_output.'/logos/'.$mysoc->logo;
+		if ($mysoc->logo)
+		{
+			if (is_readable($logo))
+			{
+				$pdf->Image($logo, $this->marge_gauche, $posy, 0, 24);
+			}
+			else
+			{
+				$pdf->SetTextColor(200,0,0);
+				$pdf->SetFont('','B',8);
+				$pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L');
+				$pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToModuleSetup"), 0, 'L');
+			}
+		}
+		else
+		{
+			$text=$this->emetteur->nom;
+			$pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L');
+		}
+
+		$pdf->SetFont('','B',13);
+		$pdf->SetXY(100,$posy);
+		$pdf->SetTextColor(0,0,60);
+		$pdf->MultiCell(100, 4, $outputlangs->transnoentities("SupplierOrder")." ".$outputlangs->convToOutputCharset($object->ref), '' , 'R');
+		$pdf->SetFont('','',12);
+
+		$posy+=6;
+		$pdf->SetXY(100,$posy);
+		if ($object->date_commande)
+		{
+			$pdf->SetTextColor(0,0,60);
+			$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Date")." : " . dol_print_date($object->date_commande,"day",false,$outputlangs,true), '', 'R');
+		}
+		else
+		{
+			$pdf->SetTextColor(255,0,0);
+			$pdf->MultiCell(100, 4, strtolower($outputlangs->transnoentities("OrderToProcess")), '', 'R');
+		}
+
+		if ($showadress)
+		{
+			// Receive email
+			$posy=42;
+			$hautcadre=40;
+			$pdf->SetTextColor(0,0,0);
+			$pdf->SetFont('','',8);
+			$pdf->SetXY($this->marge_gauche,$posy-5);
+			$pdf->MultiCell(66,5, $outputlangs->transnoentities("BillTo").":");
+
+
+			$pdf->SetXY($this->marge_gauche,$posy);
+			$pdf->SetFillColor(230,230,230);
+			$pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1);
+
+
+
+			// Nom emetteur
+			$carac_emetteur_name=$outputlangs->convToOutputCharset($mysoc->nom);
+			$pdf->SetTextColor(0,0,60);
+			$pdf->SetFont('','B',10);
+			$pdf->SetXY($this->marge_gauche+2,$posy+3);
+			$pdf->MultiCell(80, 4, $carac_emetteur_name, 0, 'L');
+
+			// Sender properties
+			$carac_emetteur = pdf_build_address($outputlangs,$mysoc);
+
+			$pdf->SetFont('','',9);
+			$pdf->SetXY($this->marge_gauche+2,$posy+8);
+			$pdf->MultiCell(80, 4, $carac_emetteur);
+
+			// Client destinataire
+			$posy=42;
+			$pdf->SetTextColor(0,0,0);
+			$pdf->SetFont('','',8);
+			$pdf->SetXY(100,$posy-5);
+			$pdf->MultiCell(96, 4, $outputlangs->transnoentities("Supplier").":");
+			//
+			$client = new Societe($this->db);
+			$client->fetch($object->socid);
+			$object->client = $client;
+			//
+
+			// Cadre client destinataire
+			$pdf->rect(100, $posy, 100, $hautcadre);
+
+			// Recipient name
+			if (! empty($usecontact))
+			{
+				// On peut utiliser le nom de la societe du contact
+				if ($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT) $socname = $object->contact->socname;
+				else $socname = $object->client->nom;
+				$carac_client_name=$outputlangs->convToOutputCharset($socname);
+			}
+			else
+			{
+				$carac_client_name=$outputlangs->convToOutputCharset($object->client->nom);
+			}
+
+			$carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,$object->contact,$usecontact,'target');
+
+			// Show customer/recipient
+			$pdf->SetXY(102,$posy+3);
+			$pdf->SetFont('','B',10);
+			$pdf->MultiCell(96,4, $carac_client_name, 0, 'L');
+
+			$pdf->SetFont('','',9);
+			$pdf->SetXY(102,$posy+8);
+			$pdf->MultiCell(96,4, $carac_client);
+		}
+	}
+
+	/**
+	 *   	\brief      Show footer of page
+	 *   	\param      pdf     		PDF factory
+	 * 		\param		object			Object invoice
+	 *      \param      outputlang		Object lang for output
+	 * 		\remarks	Need this->emetteur object
+	 */
+	function _pagefoot(&$pdf, $object, $outputlangs)
+	{
+		return pdf_pagefoot($pdf,$outputlangs,'FACTURESUPPLIER_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object);
+	}
+
+}
+
+?>