[Koha-patches] [PATCH] Bug 6027 : MT3532: Deletes biblio record when there are no more items left for this biblio while batch item deleting

Chris Cormack chrisc at catalyst.net.nz
Thu Mar 31 23:00:33 CEST 2011


From: Matthias Meusburger <matthias.meusburger at biblibre.com>

---
 .../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<allColumns.length; x++ ){
     <!-- /TMPL_UNLESS -->
 
 <!-- TMPL_IF name="action" -->
-	<div class="dialog message"><p><!-- TMPL_VAR NAME="deleted_items" --> item(s) deleted.</p></div>
+	<div class="dialog message"><p><!-- TMPL_VAR NAME="deleted_items" --> item(s) deleted.<br /><!-- TMPL_VAR NAME="deleted_biblios" --> biblio(s) deleted.</p></div>
 	<!-- TMPL_IF NAME="not_deleted_items" -->
 	<div style="width:55%;margin:auto;">
 	    <p><!-- TMPL_VAR NAME="not_deleted_items" --> item(s) could not be deleted: <!-- TMPL_LOOP NAME="not_deleted_itemnumbers" --><!-- TMPL_VAR NAME="itemnumber" --><!-- /TMPL_LOOP --></p>
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



More information about the Koha-patches mailing list