diff --git a/scripts/prelevement.php b/scripts/prelevement.php
new file mode 100644
index 0000000000000000000000000000000000000000..65a7f4e6ad6f3eb00ba6b9a996d07c02b941dba4
--- /dev/null
+++ b/scripts/prelevement.php
@@ -0,0 +1,395 @@
+<?PHP
+/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
+ *
+ * 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.
+ *
+ * $Id$
+ * $Source$
+ *
+ *
+ * Script de prelevement
+ *
+ */
+
+require ("../htdocs/master.inc.php");
+
+require_once (DOL_DOCUMENT_ROOT."/bon-prelevement.class.php");
+require_once (DOL_DOCUMENT_ROOT."/facture.class.php");
+require_once (DOL_DOCUMENT_ROOT."/societe.class.php");
+require_once (DOL_DOCUMENT_ROOT."/paiement.class.php");
+require_once (DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php");
+
+$error = 0;
+
+$datetimeprev = time();
+
+$month = strftime("%m", $datetimeprev);
+$year = strftime("%Y", $datetimeprev);
+
+$user = new user($db, PRELEVEMENT_USER);
+
+/*
+ *
+ * Lectures des factures
+ *
+ */
+
+$factures = array();
+$factures_prev = array();
+
+if (!$error)
+{
+  
+  $sql = "SELECT f.rowid, pfd.rowid as pfdrowid, f.fk_soc";
+  $sql .= ", pfd.code_banque, pfd.code_guichet, pfd.number, pfd.cle_rib";
+  $sql .= ", pfd.amount";
+  $sql .= ", s.nom";
+  $sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
+  $sql .= " , ".MAIN_DB_PREFIX."societe as s";
+  $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
+
+  $sql .= " WHERE f.rowid = pfd.fk_facture";
+  $sql .= " AND s.idp = f.fk_soc";
+  $sql .= " AND f.fk_statut = 1";
+  $sql .= " AND f.paye = 0";
+  $sql .= " AND pfd.traite = 0";
+  $sql .= " AND f.total_ttc > 0";
+  $sql .= " AND f.fk_mode_reglement = 3";
+  
+  if ( $db->query($sql) )
+    {
+      $num = $db->num_rows();
+      $i = 0;
+      
+      while ($i < $num)
+	{
+	  $row = $db->fetch_row();
+	  
+	  $factures[$i] = $row;
+	  
+	  $i++;
+	}            
+      $db->free();
+      dolibarr_syslog("$i factures � pr�lever");
+    }
+  else
+    {
+      $error = 1;
+      dolibarr_syslog("Erreur -1");
+      dolibarr_syslog($db->error());
+    }
+}
+
+/*
+ *
+ * Verif des clients
+ *
+ */
+
+if (!$error)
+{
+  /*
+   * V�rification des RIB
+   *
+   */
+  $i = 0;
+  dolibarr_syslog("D�but v�rification des RIB");
+
+  if (sizeof($factures) > 0)
+    {      
+      foreach ($factures as $fac)
+	{
+	  $fact = new Facture($db);
+	  
+	  if ($fact->fetch($fac[0]) == 1)
+	    {
+	      $soc = new Societe($db);
+	      if ($soc->fetch($fact->socidp) == 1)
+		{
+		  if ($soc->verif_rib() == 1)
+		    {
+		      $factures_prev[$i] = $fac;
+		      /* second tableau necessaire pour bon-prelevement */
+		      $factures_prev_id[$i] = $fac[0];
+		      $i++;
+		    }
+		  else
+		    {
+		      dolibarr_syslog("Erreur de RIB societe $fact->socidp $soc->nom");
+		    }
+		}
+	      else
+		{
+		  dolibarr_syslog("Impossible de lire la soci�t�");
+		}
+	    }
+	  else
+	    {
+	      dolibarr_syslog("Impossible de lire la facture");
+	    }
+	}
+    }
+  else
+    {
+      dolibarr_syslog("Aucune factures a traiter");
+    }
+}
+
+/*
+ *
+ *
+ *
+ */
+
+dolibarr_syslog(sizeof($factures_prev)." factures seront pr�lev�es");
+
+if (sizeof($factures_prev) > 0)
+{
+  /*
+   * Ouverture de la transaction
+   *
+   */
+
+  if (!$db->query("BEGIN"))
+    {
+      $error++;
+    } 
+
+  /*
+   * Traitements
+   *
+   */
+  
+  if (!$error)
+    {
+      $ref = "T".substr($year,-2).$month;
+      
+      /*
+       *
+       *
+       */
+      $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."prelevement_bons";
+      $sql .= " WHERE ref LIKE '$ref%'";
+      
+      if ($db->query($sql))
+	{      
+	  $row = $db->fetch_row();
+	}
+      else
+	{
+	  $error++;
+	  dolibarr_syslog("Erreur recherche reference");
+	}
+
+      $ref = $ref . substr("00".($row[0]+1), -2);
+
+      $filebonprev = $ref;
+   
+      /*
+       * Creation du prelevement
+       *
+       */
+      
+      $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (ref,datec)";
+      $sql .= " VALUES ('".$ref."',now())";
+      
+      if ($db->query($sql))
+	{      
+	  $prev_id = $db->last_insert_id();
+
+	  $bonprev = new BonPrelevement($db, DOL_DATA_ROOT."/prelevement/bon/".$filebonprev);
+	  $bonprev->id = $prev_id;
+	}
+      else
+	{
+	  $error++;
+	  dolibarr_syslog("Erreur cr�ation du bon de prelevement");
+	}
+      
+    }
+  
+  /*
+   *
+   *
+   *
+   */
+  if (!$error)
+    {      
+      dolibarr_syslog("D�but g�n�ration des paiements");
+      dolibarr_syslog("Nombre de factures ".sizeof($factures_prev));
+      
+      if (sizeof($factures_prev) > 0)
+	{
+	  foreach ($factures_prev as $fac)
+	    {
+	      $fact = new Facture($db);
+	      $fact->fetch($fac[0]);
+
+	      $pai = new Paiement($db);
+
+	      $pai->amounts = array();
+	      $pai->amounts[$fac[0]] = $fact->total_ttc;
+	      $pai->datepaye = $db->idate($datetimeprev);
+	      $pai->paiementid = 3; // pr�l�vement
+	      $pai->num_paiement = $ref;
+
+	      if ($pai->create($user, 1) == -1)  // on appelle en no_commit
+		{
+		  $error++;
+		  dolibarr_syslog("Erreur creation paiement facture ".$fac[0]);
+		}
+	      else
+		{
+		  /* 
+		   * Validation du paiement 
+		   */
+		  $pai->valide();
+
+		  /*
+		   * Ajout d'une ligne de pr�l�vement
+		   *
+		   *
+		   * $fac[3] : banque 
+		   * $fac[4] : guichet
+		   * $fac[5] : number
+		   * $fac[6] : cle rib
+		   * $fac[7] : amount
+		   * $fac[8] : client nom
+		   * $fac[2] : client id
+		   */
+
+		  $ri = $bonprev->AddFacture($fac[0], $fac[2], $fac[8], $fac[7], 
+					     $fac[3], $fac[4], $fac[5], $fac[6]); 
+		  if ($ri <> 0)
+		    {
+		      $error++;
+		    }
+
+		  /*
+		   *
+		   *
+
+		  $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_facture (fk_facture,fk_prelevement)";
+		  $sql .= " VALUES (".$fac[0].",".$prev_id.")";
+	      
+		  if ($db->query($sql))
+		    {      
+
+		    }
+		  else
+		    {
+		      $error++;
+		      dolibarr_syslog("Erreur de liens paiement facture");
+		    }
+
+		  */
+
+		  /*
+		   * Mise � jour des demandes
+		   *
+		   */
+		  $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande";
+		  $sql .= " SET traite = 1";
+		  $sql .= ", date_traite=now()";
+		  $sql .= ", fk_prelevement = ".$prev_id;
+		  $sql .= " WHERE rowid=".$fac[1];
+	      
+		  if ($db->query($sql))
+		    {      
+
+		    }
+		  else
+		    {
+		      $error++;
+		      dolibarr_syslog("Erreur mise a jour des demandes");
+		      dolibarr_syslog($db->error());
+		    }
+
+		}
+	    }
+	}
+  
+      dolibarr_syslog("Fin des paiements");
+    }
+
+  if (!$error)
+    {
+      /*
+       * Bon de Prelevement
+       *
+       *
+       */
+
+      dolibarr_syslog("Debut prelevement");
+      dolibarr_syslog("Nombre de factures ".sizeof($factures_prev));
+
+      if (sizeof($factures_prev) > 0)
+	{
+	  $bonprev->date_echeance = $datetimeprev;      
+	  $bonprev->reference_remise = $ref;
+
+
+	  $bonprev->numero_national_emetteur = PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR;
+	  $bonprev->raison_sociale = PRELEVEMENT_RAISON_SOCIALE; 
+
+	  $bonprev->emetteur_code_etablissement = PRELEVEMENT_CODE_BANQUE;
+	  $bonprev->emetteur_code_guichet       = PRELEVEMENT_CODE_GUICHET;
+	  $bonprev->emetteur_numero_compte      = PRELEVEMENT_NUMERO_COMPTE;
+
+      
+	  $bonprev->factures = $factures_prev_id;
+      
+	  $bonprev->generate();  
+	}
+      dolibarr_syslog( $filebonprev ) ;
+      dolibarr_syslog("Fin prelevement");
+    }
+
+  /*
+   * Mise � jour du total
+   *
+   */
+
+  $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
+  $sql .= " SET amount = ".ereg_replace(",",".",$bonprev->total);
+  $sql .= " WHERE rowid = ".$prev_id;
+
+  if (!$db->query($sql))
+    {
+      $error++;
+      dolibarr_syslog("Erreur mise � jour du total");
+      dolibarr_syslog($sql);
+    }
+
+  /*
+   * Rollback ou Commit
+   *
+   */
+  if (!$error)
+    {
+      $db->query("COMMIT");
+      dolibarr_syslog("COMMIT");
+    }
+  else
+    {
+      $db->query("ROLLBAK");
+      dolibarr_syslog("ROLLBACK");
+    }
+}
+
+$db->close();
+
+// FIN
+?>