X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=tools%2FbatchMod.pl;h=9d59e3a6e8e62a306455889a0715e6f005fe89e3;hb=f91bd36399b1ab46649482f80e0ff1b438a8d9f6;hp=94cfa695def7a8fc896c7a591dd8ccc171d42382;hpb=f21577986f8ff5da5fde88deaae2302a8b40dbe7;p=koha_gimpoz diff --git a/tools/batchMod.pl b/tools/batchMod.pl index 94cfa695de..9d59e3a6e8 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -41,6 +41,7 @@ my $error = $input->param('error'); my @itemnumbers = $input->param('itemnumber'); my $op = $input->param('op'); my $del = $input->param('del'); +my $del_records = $input->param('del_records'); my $completedJobID = $input->param('completedJobID'); my $runinbackground = $input->param('runinbackground'); @@ -76,8 +77,9 @@ my $items_display_hashref; my $frameworkcode=""; my $tagslib = &GetMarcStructure(1,$frameworkcode); -my $deleted_items = 0; # Numbers of deleted items -my $not_deleted_items = 0; # Numbers of items that could not be deleted +my $deleted_items = 0; # Number of deleted items +my $deleted_records = 0; # Number of deleted records ( with no items attached ) +my $not_deleted_items = 0; # Number of items that could not be deleted my @not_deleted; # List of the itemnumbers that could not be deleted my %cookies = parse CGI::Cookie($cookie); @@ -156,7 +158,7 @@ if ($op eq "action") { foreach my $itemnumber(@itemnumbers){ $job->progress($i) if $runinbackground; - my $itemdata=GetItem($itemnumber); + my $itemdata = GetItem($itemnumber); if ($input->param("del")){ my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'}); if ($return == 1) { @@ -171,15 +173,24 @@ if ($op eq "action") { $return => 1 }; } + + # If there are no items left, delete the biblio + if ( $del_records ) { + my $itemscount = GetItemsCount($itemdata->{'biblionumber'}); + if ( $itemscount == 0 ) { + my $error = DelBiblio($itemdata->{'biblionumber'}); + $deleted_records++ unless ( $error ); + } + } } else { if ($values_to_modify || $values_to_blank) { my $localmarcitem = Item2Marc($itemdata); UpdateMarcWith( $marcitem, $localmarcitem ); eval{ - if ( my $item = ModItemFromMarc( $localmarcitem, $itemdata->{biblionumber}, $itemnumber ) ) { - LostItem($itemnumber, 'MARK RETURNED', 'CHARGE FEE') if $item->{itemlost}; - } - }; + if ( my $item = ModItemFromMarc( $localmarcitem, $itemdata->{biblionumber}, $itemnumber ) ) { + LostItem($itemnumber, 'MARK RETURNED', 'CHARGE FEE') if $item->{itemlost}; + } + }; } } $i++; @@ -340,12 +351,13 @@ foreach my $tag (sort keys %{$tagslib}) { #---- "true" authorised value } else { - push @authorised_values, "" unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); + push @authorised_values, ""; # unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); $authorised_values_sth->execute( $tagslib->{$tag}->{$subfield}->{authorised_value} ); while ( my ( $value, $lib ) = $authorised_values_sth->fetchrow_array ) { push @authorised_values, $value; $authorised_lib{$value} = $lib; } + $value=""; } $subfield_data{marc_value} =CGI::scrolling_list( # FIXME: factor out scrolling_list -name => "field_value", @@ -432,6 +444,8 @@ if ($op eq "action") { $template->param( not_deleted_items => $not_deleted_items, deleted_items => $deleted_items, + delete_records => $del_records, + deleted_records => $deleted_records, not_deleted_loop => \@not_deleted ); }