diff --git a/ChangeLog b/ChangeLog
index a38c77518759587c8b1bc541eb71909b0db6ca90..ebf41dd05168d23c4d5240397fa323c6716ba0f7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -222,6 +222,7 @@ Dolibarr better:
 - Fix: [ bug #1830 ] Salaries payment only allows checking accounts
 - Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work
 - Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key
+- Fix: Bad SEPA xml file creation
 
 ***** ChangeLog for 3.6.2 compared to 3.6.1 *****
 - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php
index d8324178f875ae2b614c5e049517b472c3697358..63ad32f9bf9c153bd0cee0d0a7e7dff0d9a78f3c 100644
--- a/htdocs/compta/prelevement/class/bonprelevement.class.php
+++ b/htdocs/compta/prelevement/class/bonprelevement.class.php
@@ -1249,14 +1249,29 @@ class BonPrelevement extends CommonObject
 			$fileDebiteurSection = '';
 			$fileEmetteurSection = '';
 			$i = 0;
+			$j = 0;
 			$this->total = 0;
 
 			/*
 			 * section Debiteur (sepa Debiteurs bloc lines)
 			 */
-			$sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, c.code as country_code,";
-			$sql.= " pl.client_nom as name, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,";
-			$sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.datec, rib.rowid as drum";
+
+			$sql = "SELECT f.facnumber as fac FROM ".MAIN_DB_PREFIX."prelevement_lignes as pl, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."prelevement_facture as pf, ".MAIN_DB_PREFIX."societe as soc, ".MAIN_DB_PREFIX."c_country as p, ".MAIN_DB_PREFIX."societe_rib as rib WHERE pl.fk_prelevement_bons = ".$this->id." AND pl.rowid = pf.fk_prelevement_lignes AND pf.fk_facture = f.rowid AND soc.fk_pays = p.rowid AND soc.rowid = f.fk_soc AND rib.fk_soc = f.fk_soc AND rib.default_rib = 1";
+			$resql=$this->db->query($sql);
+			if ($resql)
+			{      
+				$num = $this->db->num_rows($resql);
+				while ($j < $num)
+				{
+					$objfac = $this->db->fetch_object($resql);
+					$ListOfFactures = $ListOfFactures . $objfac->fac . ",";
+					$j++;
+				}
+			}
+
+			$sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, soc.datec, p.code as country_code,";
+			$sql.= " pl.client_nom as nom, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,";
+			$sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.rowid as drum";
 			$sql.= " FROM";
 			$sql.= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
 			$sql.= " ".MAIN_DB_PREFIX."facture as f,";
@@ -1279,7 +1294,7 @@ class BonPrelevement extends CommonObject
 				while ($i < $num)
 				{
 					$obj = $this->db->fetch_object($resql);
-					$fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->name, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $obj->facnumber, $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum);
+					$fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $ListOfFactures , $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum);
 					$this->total = $this->total + $obj->somme;
 					$i++;
 				}
@@ -1314,13 +1329,14 @@ class BonPrelevement extends CommonObject
 			fputs($this->file, '			<CtrlSum>'.$this->total.'</CtrlSum>'.$CrLf);
 			fputs($this->file, '			<InitgPty>'.$CrLf);
 			fputs($this->file, '				<Nm>'.$this->raison_sociale.'</Nm>'.$CrLf);
-/*			fputs($this->file, '				<Id>'.$CrLf);
-			fputs($this->file, '					<Othr>'.$CrLf);
-			fputs($this->file, '						<Id>0533883248</Id>'.$CrLf);
-			fputs($this->file, '						<Issr>KBO-BCE</Issr>'.$CrLf);
+			fputs($this->file, '				<Id>'.$CrLf);
+			fputs($this->file, '				    <PrvtId>'.$CrLf);
 			fputs($this->file, '					<Othr>'.$CrLf);
+			fputs($this->file, '						<Id>'.$conf->global->PRELEVEMENT_ICS.'</Id>'.$CrLf);
+			fputs($this->file, '					</Othr>'.$CrLf);
+			fputs($this->file, '				    </PrvtId>'.$CrLf);
 			fputs($this->file, '				</Id>'.$CrLf);
-*/			fputs($this->file, '			</InitgPty>'.$CrLf);
+			fputs($this->file, '			</InitgPty>'.$CrLf);
 			fputs($this->file, '		</GrpHdr>'.$CrLf);
 			// SEPA File Emetteur
 			if ($result != -2)
@@ -1509,19 +1525,19 @@ class BonPrelevement extends CommonObject
 		// Define value for RUM
 		// Example:  RUMCustomerCode-CustomerBankAccountId-01424448606	(note: Date is date of creation of CustomerBankAccountId)
 		$Date_Rum = strtotime($row_datec);
-		$pre = ($date_Rum > 1359673200) ? 'RUM' : '++R';
-		$Rum = dol_trunc($pre.$row_code_client.'-'.$row_drum.'-0'.date('U', $Date_Rum), 35, 'right', 'UTF-8', 1);
-
+		$DtOfSgntr = dol_print_date($row_datec, '%Y-%m-%d');
+		$pre = ($date_Rum > 1359673200) ? 'Rum' : '++R';
+		$Rum = $pre.$row_code_client.$row_drum.'-0'.date('U', $Date_Rum);
 		$XML_DEBITOR ='';
 		$XML_DEBITOR .='			<DrctDbtTxInf>'.$CrLf;
 		$XML_DEBITOR .='				<PmtId>'.$CrLf;
 		$XML_DEBITOR .='					<EndToEndId>'.('AS-'.$row_facnumber.'-'.$Rowing).'</EndToEndId>'.$CrLf;
 		$XML_DEBITOR .='				</PmtId>'.$CrLf;
-		$XML_DEBITOR .='				<InstdAmt Ccy.="EUR">'.round($row_somme, 2).'</InstdAmt>'.$CrLf;
+		$XML_DEBITOR .='				<InstdAmt Ccy="EUR">'.round($row_somme, 2).'</InstdAmt>'.$CrLf;
 		$XML_DEBITOR .='				<DrctDbtTx>'.$CrLf;
 		$XML_DEBITOR .='					<MndtRltdInf>'.$CrLf;
 		$XML_DEBITOR .='						<MndtId>'.$Rum.'</MndtId>'.$CrLf;
-		$XML_DEBITOR .='						<DtOfSgntr>'.$row_datec.'</DtOfSgntr>'.$CrLf;
+		$XML_DEBITOR .='						<DtOfSgntr>'.$DtOfSgntr.'</DtOfSgntr>'.$CrLf;
 		$XML_DEBITOR .='						<AmdmntInd>false</AmdmntInd>'.$CrLf;
 		$XML_DEBITOR .='					</MndtRltdInf>'.$CrLf;
 		$XML_DEBITOR .='				</DrctDbtTx>'.$CrLf;
@@ -1534,17 +1550,18 @@ class BonPrelevement extends CommonObject
 		$XML_DEBITOR .='					<Nm>'.strtoupper(dol_string_unaccent($row_nom)).'</Nm>'.$CrLf;
 		$XML_DEBITOR .='					<PstlAdr>'.$CrLf;
 		$XML_DEBITOR .='						<Ctry>'.$row_country_code.'</Ctry>'.$CrLf;
-		$XML_DEBITOR .='						<AdrLine>'.strtr($row_adr, array(CHR(13) => ", ", CHR(10) => "")).'</AdrLine>'.$CrLf;
+		$XML_DEBITOR .='						<AdrLine>'.strtr($row_address, array(CHR(13) => ", ", CHR(10) => "")).'</AdrLine>'.$CrLf;
 		$XML_DEBITOR .='						<AdrLine>'.dol_string_unaccent($row_zip.' '.$row_town).'</AdrLine>'.$CrLf;
 		$XML_DEBITOR .='					</PstlAdr>'.$CrLf;
 		$XML_DEBITOR .='				</Dbtr>'.$CrLf;
 		$XML_DEBITOR .='				<DbtrAcct>'.$CrLf;
 		$XML_DEBITOR .='					<Id>'.$CrLf;
-		$XML_DEBITOR .='						<IBAN>'.$row_iban.'</IBAN>'.$CrLf;
+		$XML_DEBITOR .='						<IBAN>'.preg_replace('/\s/', '', $row_iban).'</IBAN>'.$CrLf;
 		$XML_DEBITOR .='					</Id>'.$CrLf;
 		$XML_DEBITOR .='				</DbtrAcct>'.$CrLf;
 		$XML_DEBITOR .='				<RmtInf>'.$CrLf;
-		$XML_DEBITOR .='					<Ustrd>'.($row_facnumber.'/'.$Rowing.'/'.$Rum).'</Ustrd>'.$CrLf;
+	//	$XML_DEBITOR .='					<Ustrd>'.($row_facnumber.'/'.$Rowing.'/'.$Rum).'</Ustrd>'.$CrLf;
+		$XML_DEBITOR .='					<Ustrd>'.$row_facnumber.'</Ustrd>'.$CrLf;
 		$XML_DEBITOR .='				</RmtInf>'.$CrLf;
 		$XML_DEBITOR .='			</DrctDbtTxInf>'.$CrLf;
 		return $XML_DEBITOR;