View | Details | Raw Unified | Return to bug 6027
Collapse All | Expand All

(-)a/C4/Biblio.pm (+8 lines)
Lines 35-40 use C4::Dates qw/format_date/; Link Here
35
use C4::Log;    # logaction
35
use C4::Log;    # logaction
36
use C4::ClassSource;
36
use C4::ClassSource;
37
use C4::Charset;
37
use C4::Charset;
38
38
require C4::Heading;
39
require C4::Heading;
39
require C4::Serials;
40
require C4::Serials;
40
require C4::Items;
41
require C4::Items;
Lines 423-428 sub DelBiblio { Link Here
423
        &C4::Serials::DelSubscription( $subscription->{subscriptionid} );
424
        &C4::Serials::DelSubscription( $subscription->{subscriptionid} );
424
    }
425
    }
425
426
427
    # We delete any existing holds
428
    my ($count, $reserves) = C4::Reserves::GetReservesFromBiblionumber($biblionumber);
429
    foreach my $res ( @$reserves ) {
430
        warn Data::Dumper::Dumper( $res );
431
        C4::Reserves::CancelReserve( $res->{'biblionumber'}, $res->{'itemnumber'}, $res->{'borrowernumber'} );
432
    }
433
426
    # Delete in Zebra. Be careful NOT to move this line after _koha_delete_biblio
434
    # Delete in Zebra. Be careful NOT to move this line after _koha_delete_biblio
427
    # for at least 2 reasons :
435
    # for at least 2 reasons :
428
    # - we need to read the biblio if NoZebra is set (to remove it from the indexes
436
    # - we need to read the biblio if NoZebra is set (to remove it from the indexes
(-)a/C4/Items.pm (+1 lines)
Lines 33-38 use C4::Branch; Link Here
33
require C4::Reserves;
33
require C4::Reserves;
34
use C4::Charset;
34
use C4::Charset;
35
use C4::Acquisition;
35
use C4::Acquisition;
36
use C4::Search;
36
use List::MoreUtils qw/any/;
37
use List::MoreUtils qw/any/;
37
use Data::Dumper; # used as part of logging item record changes, not just for
38
use Data::Dumper; # used as part of logging item record changes, not just for
38
                  # debugging; so please don't remove this
39
                  # debugging; so please don't remove this
(-)a/C4/Reserves.pm (-3 / +3 lines)
Lines 98-104 BEGIN { Link Here
98
        &GetReservesToBranch
98
        &GetReservesToBranch
99
        &GetReserveCount
99
        &GetReserveCount
100
        &GetReserveFee
100
        &GetReserveFee
101
		&GetReserveInfo
101
        &GetReserveInfo
102
        &GetReserveStatus
102
        &GetReserveStatus
103
        
103
        
104
        &GetOtherReserves
104
        &GetOtherReserves
Lines 880-887 sub CancelExpiredReserves { Link Here
880
Cancels a reserve.
880
Cancels a reserve.
881
881
882
Use either C<$biblionumber> or C<$itemnumber> to specify the item to
882
Use either C<$biblionumber> or C<$itemnumber> to specify the item to
883
cancel, but not both: if both are given, C<&CancelReserve> does
883
cancel, but not both: if both are given, C<&CancelReserve> uses
884
nothing.
884
C<$itemnumber>.
885
885
886
C<$borrowernumber> is the borrower number of the patron on whose
886
C<$borrowernumber> is the borrower number of the patron on whose
887
behalf the book was reserved.
887
behalf the book was reserved.
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt (-1 / +5 lines)
Lines 133-138 for( x=0; x<allColumns.length; x++ ){ Link Here
133
		    <div id="jobfailed"></div>
133
		    <div id="jobfailed"></div>
134
		</div>
134
		</div>
135
		[% IF ( too_many_items ) %]<input type="submit" name="mainformsubmit" value="Delete ALL submitted items" onclick="return submitBackgroundJob(this.form);" />[% ELSE %]
135
		[% IF ( too_many_items ) %]<input type="submit" name="mainformsubmit" value="Delete ALL submitted items" onclick="return submitBackgroundJob(this.form);" />[% ELSE %]
136
		<input type="checkbox" name="del_records" id="del_records" /> <label for="del_records">Delete records if no items remain.</label><p>
136
		<input type="submit" name="mainformsubmit" value="Delete selected items" onclick="return submitBackgroundJob(this.form);" />[% END %]
137
		<input type="submit" name="mainformsubmit" value="Delete selected items" onclick="return submitBackgroundJob(this.form);" />[% END %]
137
138
138
		<a href="/cgi-bin/koha/tools/batchMod.pl?del=1" class="cancel">Cancel</a>
139
		<a href="/cgi-bin/koha/tools/batchMod.pl?del=1" class="cancel">Cancel</a>
Lines 146-152 for( x=0; x<allColumns.length; x++ ){ Link Here
146
    [% END %]
147
    [% END %]
147
148
148
[% IF ( action ) %]
149
[% IF ( action ) %]
149
	<div class="dialog message"><p>[% deleted_items %] item(s) deleted.</p></div>
150
	<div class="dialog message">
151
            <p>[% deleted_items %] item(s) deleted.</p>
152
            [% IF delete_records %] <p>[% deleted_records %] record(s) deleted.</p> [% END %]
153
        </div>
150
	[% IF ( not_deleted_items ) %]
154
	[% IF ( not_deleted_items ) %]
151
	<div style="width:55%;margin:auto;">
155
	<div style="width:55%;margin:auto;">
152
	    <p>[% not_deleted_items %] item(s) could not be deleted: [% FOREACH not_deleted_itemnumber IN not_deleted_itemnumbers %][% not_deleted_itemnumber.itemnumber %][% END %]</p>
156
	    <p>[% not_deleted_items %] item(s) could not be deleted: [% FOREACH not_deleted_itemnumber IN not_deleted_itemnumbers %][% not_deleted_itemnumber.itemnumber %][% END %]</p>
(-)a/tools/batchMod.pl (-8 / +20 lines)
Lines 41-46 my $error = $input->param('error'); Link Here
41
my @itemnumbers  = $input->param('itemnumber');
41
my @itemnumbers  = $input->param('itemnumber');
42
my $op           = $input->param('op');
42
my $op           = $input->param('op');
43
my $del          = $input->param('del');
43
my $del          = $input->param('del');
44
my $del_records  = $input->param('del_records');
44
my $completedJobID = $input->param('completedJobID');
45
my $completedJobID = $input->param('completedJobID');
45
my $runinbackground = $input->param('runinbackground');
46
my $runinbackground = $input->param('runinbackground');
46
47
Lines 76-83 my $items_display_hashref; Link Here
76
my $frameworkcode="";
77
my $frameworkcode="";
77
my $tagslib = &GetMarcStructure(1,$frameworkcode);
78
my $tagslib = &GetMarcStructure(1,$frameworkcode);
78
79
79
my $deleted_items = 0;     # Numbers of deleted items
80
my $deleted_items = 0;     # Number of deleted items
80
my $not_deleted_items = 0; # Numbers of items that could not be deleted
81
my $deleted_records = 0;   # Number of deleted records ( with no items attached )
82
my $not_deleted_items = 0; # Number of items that could not be deleted
81
my @not_deleted;           # List of the itemnumbers that could not be deleted
83
my @not_deleted;           # List of the itemnumbers that could not be deleted
82
84
83
my %cookies = parse CGI::Cookie($cookie);
85
my %cookies = parse CGI::Cookie($cookie);
Lines 156-162 if ($op eq "action") { Link Here
156
	foreach my $itemnumber(@itemnumbers){
158
	foreach my $itemnumber(@itemnumbers){
157
159
158
		$job->progress($i) if $runinbackground;
160
		$job->progress($i) if $runinbackground;
159
		my $itemdata=GetItem($itemnumber);
161
		my $itemdata = GetItem($itemnumber);
160
		if ($input->param("del")){
162
		if ($input->param("del")){
161
			my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'});
163
			my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'});
162
			if ($return == 1) {
164
			if ($return == 1) {
Lines 171-185 if ($op eq "action") { Link Here
171
				  $return => 1
173
				  $return => 1
172
				};
174
				};
173
			}
175
			}
176
			
177
			# If there are no items left, delete the biblio
178
			if ( $del_records ) {
179
                            my $itemscount = GetItemsCount($itemdata->{'biblionumber'});
180
                            if ( $itemscount == 0 ) {
181
			        my $error = DelBiblio($itemdata->{'biblionumber'});
182
			        $deleted_records++ unless ( $error );
183
                            }
184
                        }
174
		} else {
185
		} else {
175
		    if ($values_to_modify || $values_to_blank) {
186
		    if ($values_to_modify || $values_to_blank) {
176
			my $localmarcitem = Item2Marc($itemdata);
187
			my $localmarcitem = Item2Marc($itemdata);
177
			UpdateMarcWith( $marcitem, $localmarcitem );
188
			UpdateMarcWith( $marcitem, $localmarcitem );
178
			eval{
189
			eval{
179
                if ( my $item = ModItemFromMarc( $localmarcitem, $itemdata->{biblionumber}, $itemnumber ) ) {
190
                            if ( my $item = ModItemFromMarc( $localmarcitem, $itemdata->{biblionumber}, $itemnumber ) ) {
180
                    LostItem($itemnumber, 'MARK RETURNED', 'CHARGE FEE') if $item->{itemlost};
191
                                LostItem($itemnumber, 'MARK RETURNED', 'CHARGE FEE') if $item->{itemlost};
181
                }
192
                            }
182
            };
193
                        };
183
		    }
194
		    }
184
		}
195
		}
185
		$i++;
196
		$i++;
Lines 432-437 if ($op eq "action") { Link Here
432
    $template->param(
443
    $template->param(
433
	not_deleted_items => $not_deleted_items,
444
	not_deleted_items => $not_deleted_items,
434
	deleted_items => $deleted_items,
445
	deleted_items => $deleted_items,
446
	delete_records => $del_records,
447
	deleted_records => $deleted_records,
435
	not_deleted_loop => \@not_deleted 
448
	not_deleted_loop => \@not_deleted 
436
    );
449
    );
437
}
450
}
438
- 

Return to bug 6027