From bf9bff898f583c90714e9dc98e28bffd8cc24b2b Mon Sep 17 00:00:00 2001 From: Lyon3 Team Date: Tue, 24 Feb 2015 15:50:49 +0100 Subject: [PATCH] Bug 12074: Filter duplicates when adding a batch from a staged file MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When adding a batch of records to a basket, duplicates are skipped and an alert is displayed with a link to them so as they could be treated individually. Test plan : You need the 2 test attached files TestFile1.mrc and TestFile2.elc (TestFile1 includes only the title "Amilec ou La graine d'hommes" that is also included in TestFile2) 1) go to “Stage MARC records for import” page, upload TestFile1 and stage it (select iso 5426 encoding). 2) Manage staged record and import the batch. 3) Make sure that the new record is indexed (depending to your indexing system and test platform). 4) Go back to go to “Stage MARC records for import” page upload TestFile2 and stage it (select iso 5426 encoding). 5) Go to acquisitions module and create a new basket. 6) From your basket, in the “Add order to basket block” choose 'From a staged file'. 7) Then click File2 (‘addorder button'). 8) Go down the "Import all" block and save. 9) You are redirected to the basket page : a warning is displayed to tell you that some duplicates have been found and skipped. There's a link on the warning throughout you can go back to the list of remaining records and treat them individually if necesary. 10) Click the link : you fall upon the title of TestFile1 (of course as it's a duplicate). 11) Check that the imported records have been indexed. 11) Go down the "Import all" block and save. 12) A warning is displayed saying that no records have been imported because they all match an existing record. The “Import all” block is not any more visible. Signed-off-by: JA Signed-off-by: Jonathan Druart Signed-off-by: Tomas Cohen Arazi --- acqui/addorderiso2709.pl | 12 +++++++++++- acqui/basket.pl | 2 ++ .../prog/en/modules/acqui/addorderiso2709.tt | 6 ++++++ .../intranet-tmpl/prog/en/modules/acqui/basket.tt | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/acqui/addorderiso2709.pl b/acqui/addorderiso2709.pl index d1dd292a1c..1c0086bbb4 100755 --- a/acqui/addorderiso2709.pl +++ b/acqui/addorderiso2709.pl @@ -60,6 +60,7 @@ my ($template, $loggedinuser, $cookie, $userflags) = get_template_and_user({ my $cgiparams = $input->Vars; my $op = $cgiparams->{'op'} || ''; my $booksellerid = $input->param('booksellerid'); +my $allmatch = $input->param('allmatch'); my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid }); my $data; @@ -123,6 +124,7 @@ if ($op eq ""){ $template->param("batch_details" => 1, "basketno" => $cgiparams->{'basketno'}, loop_currencies => \@loop_currency, + "allmatch" => $allmatch, ); import_biblios_list($template, $cgiparams->{'import_batch_id'}); if ( C4::Context->preference('AcqCreateItem') eq 'ordering' ) { @@ -157,6 +159,8 @@ if ($op eq ""){ # retrieve the file you want to import my $import_batch_id = $cgiparams->{'import_batch_id'}; my $biblios = GetImportRecordsRange($import_batch_id); + my $duplinbatch; + my $imported = 0; my @import_record_id_selected = $input->param("import_record_id"); my @quantities = $input->param('quantity'); my @prices = $input->param('price'); @@ -181,6 +185,7 @@ if ($op eq ""){ # 1st insert the biblio, or find it through matcher unless ( $biblionumber ) { + $duplinbatch=$import_batch_id and next if FindDuplicate($marcrecord); # add the biblio my $bibitemnum; @@ -284,9 +289,14 @@ if ($op eq ""){ } else { SetImportRecordStatus( $biblio->{'import_record_id'}, 'imported' ); } + $imported++; } # go to basket page - print $input->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=".$cgiparams->{'basketno'}); + if ( $imported ) { + print $input->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=".$cgiparams->{'basketno'}."&duplinbatch=$duplinbatch"); + } else { + print $input->redirect("/cgi-bin/koha/acqui/addorderiso2709.pl?import_batch_id=$import_batch_id&basketno=".$cgiparams->{'basketno'}."&booksellerid=$booksellerid&allmatch=1"); + } exit; } diff --git a/acqui/basket.pl b/acqui/basket.pl index cfa803b5d8..6805e9e6ee 100755 --- a/acqui/basket.pl +++ b/acqui/basket.pl @@ -68,6 +68,7 @@ the supplier this script have to display the basket. my $query = new CGI; our $basketno = $query->param('basketno'); my $booksellerid = $query->param('booksellerid'); +my $duplinbatch = $query->param('duplinbatch'); my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user( { @@ -390,6 +391,7 @@ if ( $op eq 'delete_confirm' ) { grouped => $basket->{basketgroupid}, unclosable => @orders ? 0 : 1, has_budgets => $has_budgets, + duplinbatch => $duplinbatch, ); } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt index cf03b7c0cf..d0414cf6fa 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt @@ -158,6 +158,12 @@
+ [% IF ( allmatch ) %]
+

No records imported

+ No record have been imported because they all match an existing record in your catalog.
You'll have to treat them individually. +
+ [% END %] + [% IF ( batch_details ) %]

Add orders from [% comments %] ([% file_name %] staged on [% upload_timestamp | $KohaDates with_hours => 1 %]) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt index 47fefeb7e1..7e02e80757 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt @@ -363,6 +363,10 @@

[% END %] + [% IF ( duplinbatch ) %]
+

Duplicate warning

+

Some records have not been automatically added because they match an existing record in your catalog:Display them

+
[% END %]
[% IF ( books_loop ) %] -- 2.39.5