From d3bad28b3bd437ef9c2e94083e506db3e8f29b86 Mon Sep 17 00:00:00 2001 From: Matthias Meusburger Date: Tue, 22 Jun 2010 17:46:22 +0200 Subject: [PATCH] Bug 6027 : MT3532: Deletes biblio record when there are no more items left for this biblio while batch item deleting --- .../prog/en/modules/tools/batchMod-del.tmpl | 2 +- tools/batchMod.pl | 56 +++++++++++-------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tmpl index 61e901b..183d330 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tmpl @@ -145,7 +145,7 @@ for( x=0; x -

item(s) deleted.

+

item(s) deleted.
biblio(s) deleted.

item(s) could not be deleted:

diff --git a/tools/batchMod.pl b/tools/batchMod.pl index d9a0b76..4947814 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -2,6 +2,7 @@ # Copyright 2000-2002 Katipo Communications +# Copyright Biblibre 2010 # # This file is part of Koha. # @@ -76,6 +77,7 @@ my $frameworkcode=""; my $tagslib = &GetMarcStructure(1,$frameworkcode); my $deleted_items = 0; # Numbers of deleted items +my $deleted_biblios = 0; # Numbers of deleted biblios (when they have no more items) my $not_deleted_items = 0; # Numbers of items that could not be deleted my @not_deleted; # List of the itemnumbers that could not be deleted @@ -129,31 +131,36 @@ if ($op eq "action") { } # For each item - my $i = 1; - foreach my $itemnumber(@itemnumbers){ - - $job->progress($i) if $runinbackground; - my $itemdata=GetItem($itemnumber); - if ($input->param("del")){ - my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'}); - if ($return == 1) { - $deleted_items++; - } else { - $not_deleted_items++; - push @not_deleted, { biblionumber => $itemdata->{'biblionumber'}, itemnumber => $itemdata->{'itemnumber'}, barcode => $itemdata->{'barcode'}, title => $itemdata->{'title'}, $return => 1 }; - } - } else { - if ($something_to_modify) { - my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM'); - my $marcitem = MARC::Record::new_from_xml($xml, 'UTF-8'); - my $localitem = TransformMarcToKoha( $dbh, $marcitem, "", 'items' ); - my $localmarcitem=Item2Marc($itemdata); - UpdateMarcWith($marcitem,$localmarcitem); - eval{my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItemFromMarc($localmarcitem,$itemdata->{biblionumber},$itemnumber)}; - } + my $i = 1; + foreach my $itemnumber(@itemnumbers){ + + $job->progress($i) if $runinbackground; + my $itemdata=GetItem($itemnumber); + if ($input->param("del")){ + my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'}); + if ($return == 1) { + $deleted_items++; + } else { + $not_deleted_items++; + push @not_deleted, { biblionumber => $itemdata->{'biblionumber'}, itemnumber => $itemdata->{'itemnumber'}, barcode => $itemdata->{'barcode'}, title => $itemdata->{'title'}, $return => 1 }; + } + + # If there are no items left, we delete the biblio + my $icount = GetItemsCount($itemdata->{'biblionumber'}); + if ($icount == 0) { + DelBiblio($itemdata->{'biblionumber'}); + $deleted_biblios++; } - $i++; - } + + } else { + if ($values_to_modify||$values_to_blank) { + my $localmarcitem=Item2Marc($itemdata); + UpdateMarcWith($marcitem,$localmarcitem); + eval{my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItemFromMarc($localmarcitem,$itemdata->{biblionumber},$itemnumber)}; + } + } + $i++; + } } } # @@ -401,6 +408,7 @@ if ($op eq "action") { $template->param( not_deleted_items => $not_deleted_items, + deleted_biblios => $deleted_biblios, deleted_items => $deleted_items, not_deleted_loop => \@not_deleted ); -- 1.7.1