diff --git a/cosmogramme/php/classes/classe_notice_integration.php b/cosmogramme/php/classes/classe_notice_integration.php
index dd21747edb99ff235b6f5b89e1a535c4f070abca..c81d9c6ddf012c1fa05a4322eca80754c55134a1 100644
--- a/cosmogramme/php/classes/classe_notice_integration.php
+++ b/cosmogramme/php/classes/classe_notice_integration.php
@@ -705,34 +705,33 @@ class notice_integration
 
 	private function ecrireExemplaires($id_notice) {
 		global $sql;
-		$unicite_codes_barres=getVariable("unicite_code_barres");
-		if($unicite_codes_barres=="1") $condition_bib="";
-		else $condition_bib=" and id_bib=$id_bib";
-		$id_bib=$this->id_bib;
-		$to_insert=[];
+		$id_bib = $this->id_bib;
+		$to_insert = [];
 
+		$unicite_codes_barres = getVariable('unicite_code_barres');
+		$condition_bib = ($unicite_codes_barres == '1') ? '' : ' and id_bib=' . $id_bib;
 		$code_barres = [];
-		foreach($this->notice['exemplaires'] as $ex) {
-			$code_barres []= '\''.$ex['code_barres'].'\'';
-			if($ex["activite"]=="d") continue;
-
-			$data=$ex;
-			$data["id_notice"]=$id_notice;
-			$data["id_bib"]=$id_bib;
-			$data["id_origine"]=$this->notice["id_origine"];
-			$to_insert[]=$data;
+		foreach ($this->notice['exemplaires'] as $ex) {
+			$code_barres []= '\'' . $ex['code_barres'] . '\'';
+			if ($ex["activite"]=="d")
+				continue;
+
+			$data = $ex;
+			$data['id_notice'] = $id_notice;
+			$data['id_bib'] = $id_bib;
+			$data['id_origine'] = $this->notice['id_origine'];
+			$to_insert[] = $data;
 		}
 
 		if (!empty($code_barres))  {
-			$req_delete="delete from exemplaires where id_notice=$id_notice ".$condition_bib." and code_barres in (".implode(',', $code_barres).")";
+			$req_delete = 'delete from exemplaires where id_notice=' . $id_notice . $condition_bib . ' and code_barres in (' . implode(',', $code_barres) . ')';
 			$sql->execute($req_delete);
 		}
 
-		foreach($to_insert as $data) {
-			$sql->insert("exemplaires",$data);
-		}
+		foreach($to_insert as $data)
+			$sql->insert('exemplaires', $data);
 
-		$date_maj=dateDuJour(2);
+		$date_maj = dateDuJour(2);
 		$sql->execute("update notices set date_maj='$date_maj' where id_notice=$id_notice");
 	}
 
diff --git a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
index 9be41add32b757c326da00288b25db2c69c4211b..2306c70a807a99fc84ecc8fb24af7f6153c046fc 100644
--- a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
+++ b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
@@ -24,7 +24,7 @@ require_once('classe_notice_marc21.php');
 require_once 'ModelTestCase.php';
 
 
-abstract class NoticeIntegrationAbstract extends ModelTestCase {
+abstract class NoticeIntegrationTestCase extends ModelTestCase {
 	protected  
 		$notice_sgbd,
 		$_mock_sql,
@@ -39,7 +39,7 @@ abstract class NoticeIntegrationAbstract extends ModelTestCase {
 		$this->_mock_sql
 			->whenCalled('execute')->answers(true)
 			->whenCalled('fetchAll')->answers(null)
-			->whenCalled('insert')->answers(null)
+			->whenCalled('insert')->answers(12)
 			->whenCalled('update')->answers(null)
 			->whenCalled('fetchEnreg')->answers(null);
 
@@ -50,8 +50,12 @@ abstract class NoticeIntegrationAbstract extends ModelTestCase {
 												'tracer_accents_iso'=>1,
 												'non_exportable'=> 'electre;decitre;gam;zebris',
 												'controle_codes_barres'=> 0,
-												'unimarc_zone_titre' => '200$a;461$t'])
-			->setListeCache(['nature_docs'=> "1:Collection\r\n2:Dataset\r\n3:Event\r\n4:Image"]);
+												'unimarc_zone_titre' => '200$a;461$t',
+												'unicite_code_barres' => 0,
+												'champs_sup' => '',
+												'ean_345' => ''])
+			->setListeCache(['nature_docs'=> "1:Collection\r\n2:Dataset\r\n3:Event\r\n4:Image",
+											 'types_docs' => "0:non identifié\r\n1:livres\r\n2:périodiques\r\n3:disques\r\n4:DVD\r\n5:cédéroms\r\n8:articles cms\r\n9:fils rss\r\n10:sites internet\r\n100:Livre Numérique\r\n101:Diaporamas\r\n102:Type doc\r\n103:OAI\r\n104:Type doc\r\n105:Formation Vodéclic\r\n106:Livres Numériques\r\n107:Vidéos à la demande\r\n108:Tout apprendre\r\n109:Enregistrement audio\r\n110:Numérique Premium"]);
 
 		Class_Notice::beVolatile();
 		Class_Exemplaire::beVolatile();
@@ -77,7 +81,7 @@ abstract class NoticeIntegrationAbstract extends ModelTestCase {
 
 
 
-class NoticeIntegrationLivreNumTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationLivreNumTest extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 		$notice_integration = new notice_integration();
@@ -143,7 +147,7 @@ class NoticeIntegrationLivreNumTest extends NoticeIntegrationAbstract {
 
 
 
-abstract class NoticeIntegrationSacramentariumTestCase extends NoticeIntegrationAbstract {
+abstract class NoticeIntegrationSacramentariumTestCase extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 		
@@ -284,7 +288,7 @@ class NoticeIntegrationSacramentariumParsingTest extends NoticeIntegrationSacram
 
 
 
-class NoticeIntegrationLollipopGeneratedNoticeRecordTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationLollipopGeneratedNoticeRecordTest extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 
@@ -335,7 +339,7 @@ class NoticeIntegrationLollipopGeneratedNoticeRecordTest extends NoticeIntegrati
 
 
 
-abstract class NoticeIntegrationMarc21ToUnimarcTest extends NoticeIntegrationAbstract {
+abstract class NoticeIntegrationMarc21ToUnimarcTest extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 		$this->notice_marc21 = new notice_marc21();
@@ -356,7 +360,7 @@ abstract class NoticeIntegrationMarc21ToUnimarcTest extends NoticeIntegrationAbs
 
 
 
-class NoticeIntegrationMarc21CoupCavalierToUnimarcTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationMarc21CoupCavalierToUnimarcTest extends NoticeIntegrationTestCase {
 	protected $_id_profil_donnees = 150; //MARC21 DYNIX
 
 	public function setUp() {
@@ -435,7 +439,7 @@ class NoticeIntegrationMarc21CoupCavalierToUnimarcTest extends NoticeIntegration
 
 
 
-class NoticeIntegrationBourdieuWithElectreGeneratedNoticeRecordTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationBourdieuWithElectreGeneratedNoticeRecordTest extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 
@@ -514,7 +518,7 @@ class NoticeIntegrationBourdieuWithElectreGeneratedNoticeRecordTest extends Noti
 
 
 
-class NoticeIntegrationSupertrampWithElectreAndPcmd4GeneratedNoticeRecordTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationSupertrampWithElectreAndPcmd4GeneratedNoticeRecordTest extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 
@@ -540,7 +544,7 @@ class NoticeIntegrationSupertrampWithElectreAndPcmd4GeneratedNoticeRecordTest ex
 
 
 
-class NoticeIntegrationMussoWithoutRenvoisTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationMussoWithoutRenvoisTest extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 		$this->loadNotice("unimarc_musso");
@@ -556,7 +560,7 @@ class NoticeIntegrationMussoWithoutRenvoisTest extends NoticeIntegrationAbstract
 
 
 
-class NoticeIntegrationCekovTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationCekovTest extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 		$this->loadNotice("unimarc_cekov");
@@ -581,7 +585,7 @@ class NoticeIntegrationCekovTest extends NoticeIntegrationAbstract {
 
 
 
-class NoticeIntegrationLearningWithRenvoisTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationLearningWithRenvoisTest extends NoticeIntegrationTestCase {
 	public function setUp() {
 		parent::setUp();
 		$this->loadNotice("unimarc_learning_from_vernacular");
@@ -597,7 +601,7 @@ class NoticeIntegrationLearningWithRenvoisTest extends NoticeIntegrationAbstract
 
 
 
-class NoticeIntegrationDimancheALaPiscineTest extends NoticeIntegrationAbstract {
+class NoticeIntegrationDimancheALaPiscineTest extends NoticeIntegrationTestCase {
 	protected $_id_profil_donnees = 111; //Unimarc Aloes
 
 	public function setUp() {
@@ -606,38 +610,33 @@ class NoticeIntegrationDimancheALaPiscineTest extends NoticeIntegrationAbstract
 		$this->_mock_sql
 			->whenCalled('fetchEnreg')
 			->with('Select * from profil_donnees where id_profil=111')
-			->answers(
-									['id_profil' => 111,
-									 'libelle' => 'Unimarc Aloes',
-									 'accents' => '1',
-									 'rejet_periodiques' =>  '1',
-									 'id_article_periodique' => '2',
-									 'type_fichier' => '0',
-									 'format' => '0',
-									 'attributs' => 'a:7:{i:0;a:8:{s:8:"type_doc";a:12:{i:0;a:3:{s:4:"code";s:1:"0";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:1;a:3:{s:4:"code";s:1:"1";s:5:"label";s:5:"am;na";s:8:"zone_995";s:22:"LIV;MS;LDV;LVI;LV;LIVC";}i:2;a:3:{s:4:"code";s:1:"2";s:5:"label";s:2:"as";s:8:"zone_995";s:12:"PER;REVC;REV";}i:3;a:3:{s:4:"code";s:1:"3";s:5:"label";s:3:"i;j";s:8:"zone_995";s:17:"CD;LIVCD;LIVK7;K7";}i:4;a:3:{s:4:"code";s:1:"4";s:5:"label";s:1:"g";s:8:"zone_995";s:25:"DIAPO;DVD;VHS;VHD;VD;DVDJ";}i:5;a:3:{s:4:"code";s:1:"5";s:5:"label";s:3:"l;m";s:8:"zone_995";s:3:"CDR";}i:6;a:3:{s:4:"code";s:1:"7";s:5:"label";s:0:"";s:8:"zone_995";s:7:"LCA;LCD";}i:7;a:3:{s:4:"code";s:1:"8";s:5:"label";s:0:"";s:8:"zone_995";s:3:"DOS";}i:8;a:3:{s:4:"code";s:1:"9";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:9;a:3:{s:4:"code";s:2:"10";s:5:"label";s:0:"";s:8:"zone_995";s:6:"WEB;MF";}i:10;a:3:{s:4:"code";s:2:"11";s:5:"label";s:0:"";s:8:"zone_995";s:2:"JV";}i:11;a:3:{s:4:"code";s:3:"100";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}}s:17:"champ_code_barres";s:1:"f";s:10:"champ_cote";s:1:"k";s:14:"champ_type_doc";s:1:"r";s:11:"champ_genre";s:0:"";s:13:"champ_section";s:1:"q";s:17:"champ_emplacement";s:1:"u";s:12:"champ_annexe";s:1:"b";}i:1;a:1:{s:6:"champs";s:0:"";}i:2;a:1:{s:6:"champs";s:0:"";}i:3;a:1:{s:6:"champs";s:0:"";}i:5;a:3:{s:6:"champs";s:0:"";s:17:"xml_balise_abonne";s:0:"";s:17:"xml_champs_abonne";a:11:{s:6:"IDABON";s:0:"";s:9:"ORDREABON";s:0:"";s:3:"NOM";s:0:"";s:6:"PRENOM";s:0:"";s:9:"NAISSANCE";s:0:"";s:8:"PASSWORD";s:0:"";s:4:"MAIL";s:0:"";s:10:"DATE_DEBUT";s:0:"";s:8:"DATE_FIN";s:0:"";s:7:"ID_SIGB";s:0:"";s:9:"NUM_CARTE";s:0:"";}}i:4;a:5:{s:4:"zone";s:3:"995";s:5:"champ";s:1:"v";s:6:"format";s:1:"3";s:5:"jours";s:0:"";s:7:"valeurs";s:1:"n";}i:6;a:2:{s:4:"zone";s:3:"901";s:5:"champ";s:1:"a";}}'
-									])
+			->answers(['id_profil' => 111,
+								 'libelle' => 'Unimarc Aloes',
+								 'accents' => '1',
+								 'rejet_periodiques' =>  '1',
+								 'id_article_periodique' => '2',
+								 'type_fichier' => '0',
+								 'format' => '0',
+								 'attributs' => 'a:7:{i:0;a:8:{s:8:"type_doc";a:12:{i:0;a:3:{s:4:"code";s:1:"0";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:1;a:3:{s:4:"code";s:1:"1";s:5:"label";s:5:"am;na";s:8:"zone_995";s:22:"LIV;MS;LDV;LVI;LV;LIVC";}i:2;a:3:{s:4:"code";s:1:"2";s:5:"label";s:2:"as";s:8:"zone_995";s:12:"PER;REVC;REV";}i:3;a:3:{s:4:"code";s:1:"3";s:5:"label";s:3:"i;j";s:8:"zone_995";s:17:"CD;LIVCD;LIVK7;K7";}i:4;a:3:{s:4:"code";s:1:"4";s:5:"label";s:1:"g";s:8:"zone_995";s:25:"DIAPO;DVD;VHS;VHD;VD;DVDJ";}i:5;a:3:{s:4:"code";s:1:"5";s:5:"label";s:3:"l;m";s:8:"zone_995";s:3:"CDR";}i:6;a:3:{s:4:"code";s:1:"7";s:5:"label";s:0:"";s:8:"zone_995";s:7:"LCA;LCD";}i:7;a:3:{s:4:"code";s:1:"8";s:5:"label";s:0:"";s:8:"zone_995";s:3:"DOS";}i:8;a:3:{s:4:"code";s:1:"9";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:9;a:3:{s:4:"code";s:2:"10";s:5:"label";s:0:"";s:8:"zone_995";s:6:"WEB;MF";}i:10;a:3:{s:4:"code";s:2:"11";s:5:"label";s:0:"";s:8:"zone_995";s:2:"JV";}i:11;a:3:{s:4:"code";s:3:"100";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}}s:17:"champ_code_barres";s:1:"f";s:10:"champ_cote";s:1:"k";s:14:"champ_type_doc";s:1:"r";s:11:"champ_genre";s:0:"";s:13:"champ_section";s:1:"q";s:17:"champ_emplacement";s:1:"u";s:12:"champ_annexe";s:1:"b";}i:1;a:1:{s:6:"champs";s:0:"";}i:2;a:1:{s:6:"champs";s:0:"";}i:3;a:1:{s:6:"champs";s:0:"";}i:5;a:3:{s:6:"champs";s:0:"";s:17:"xml_balise_abonne";s:0:"";s:17:"xml_champs_abonne";a:11:{s:6:"IDABON";s:0:"";s:9:"ORDREABON";s:0:"";s:3:"NOM";s:0:"";s:6:"PRENOM";s:0:"";s:9:"NAISSANCE";s:0:"";s:8:"PASSWORD";s:0:"";s:4:"MAIL";s:0:"";s:10:"DATE_DEBUT";s:0:"";s:8:"DATE_FIN";s:0:"";s:7:"ID_SIGB";s:0:"";s:9:"NUM_CARTE";s:0:"";}}i:4;a:5:{s:4:"zone";s:3:"995";s:5:"champ";s:1:"v";s:6:"format";s:1:"3";s:5:"jours";s:0:"";s:7:"valeurs";s:1:"n";}i:6;a:2:{s:4:"zone";s:3:"901";s:5:"champ";s:1:"a";}}'])
 
 			->whenCalled('fetchAll')
 			->with('select * from codif_emplacement', false)
 			->answers([
 									['id_emplacement' => 54,
-									 'regles' => '995$u=Littératureadulte']
-									])
+									 'regles' => '995$u=Littératureadulte']])
 
 
 			->whenCalled('fetchAll')
 			->with('select * from codif_section', false)
 			->answers([
 									['id_section' => 2,
-									 'regles' => '995$q=A']
-									])
+									 'regles' => '995$q=A']])
 
 			->whenCalled('fetchAll')
 			->with('select * from codif_genre', false)
 			->answers([
 									['id_genre' => 8,
-									 'regles' => '902$a=Roman']
-									]);
+									 'regles' => '902$a=Roman']]);
 
 		$this->loadNotice("unimarc_dimanche_a_la_piscine");
 	}
@@ -664,8 +663,19 @@ class NoticeIntegrationDimancheALaPiscineTest extends NoticeIntegrationAbstract
 	/** @test */
 	public function exemplairesCountShouldBeOne() {
 		$this->assertEquals(1, count($this->notice_data['exemplaires']));
-	}									
+	}
 
+
+	/** 
+	 * @test 
+	 * @see #13453
+	 */
+	public function uniciteCodeBarreShouldNotRegress() {
+		$this->assertTrue(
+			$this->_mock_sql
+			->methodHasBeenCalledWithParams('execute', 
+																			['delete from exemplaires where id_notice=12 and id_bib=1 and code_barres in (\'2060303\')']));
+	}
 }
 
 ?>