Bug 9565: (follow-up) Adapt batch record deletion tool

Add a column "Subscriptions" to the batch deletion tools
Add a link on the number of subscription to the search page with all the subscriptions of the record
Add a button in the toolbar to select only biblio record without subscriptions

The changes are only on display
It is still possible to delete records that are attached to subscriptions from this tool (as it is possible for records with attached items)

To test:
1) Go to the batch record deletion (in tools)
2) Select a list of record numbers (select some with one or more subscription)
3) Click on Continue
4) Check that there is no column named "Subscription" and that there is no button "Select without subscription" in the toolbar
5) Apply patch
6) Repeat steps 1 to 3
7a) Check that there is a column named "Subscription" fill with the number of subscriptions attached to the record
7b) Check that the link in the subscriptions column send you to the search page with the subscriptions linked to this record
7c) Check that there is a button "Select without subscription" in the toolbar that selects record with no subscription attached
8) Sign off

Signed-off-by: Frank Hansen <frank.hansen@ub.lu.se>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
Marion Durand 2021-12-02 13:41:11 +01:00 committed by Fridolin Somers
parent a7771f0503
commit 0b66310580
2 changed files with 17 additions and 1 deletions

View file

@ -133,6 +133,7 @@
| <a id="clearall" href="#"><i class="fa fa-remove"></i> Clear all</a> | <a id="clearall" href="#"><i class="fa fa-remove"></i> Clear all</a>
| <a id="selectwithoutitems" href="#">Select without items</a> | <a id="selectwithoutitems" href="#">Select without items</a>
| <a id="selectnotreserved" href="#">Select without holds</a> | <a id="selectnotreserved" href="#">Select without holds</a>
| <a id="selectwithoutsubscriptions" href="#">Select without subscriptions</a>
</div> </div>
<form action="/cgi-bin/koha/tools/batch_delete_records.pl" method="post" id="selectrecords"> <form action="/cgi-bin/koha/tools/batch_delete_records.pl" method="post" id="selectrecords">
<table id="biblios" class="records"> <table id="biblios" class="records">
@ -144,17 +145,19 @@
<th>Items</th> <th>Items</th>
<th>Holds</th> <th>Holds</th>
<th>Checkouts</th> <th>Checkouts</th>
<th>Subscriptions</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
[% FOR biblio IN records %] [% FOR biblio IN records %]
<tr> <tr>
<td><input type="checkbox" name="record_id" id="record_id_[% biblio.biblionumber | html %]" value="[% biblio.biblionumber | html %]" data-items="[% biblio.itemnumbers.size | html %]" data-issues="[% biblio.issues_count | html %]" data-reserves="[% biblio.holds_count | html %]" /></td> <td><input type="checkbox" name="record_id" id="record_id_[% biblio.biblionumber | html %]" value="[% biblio.biblionumber | html %]" data-items="[% biblio.itemnumbers.size | html %]" data-issues="[% biblio.issues_count | html %]" data-reserves="[% biblio.holds_count | html %]" data-subscriptions="[% biblio.subscriptions_count | html %]" /></td>
<td><label for="record_id_[% biblio.biblionumber | html %]">[% biblio.biblionumber | html %]</label></td> <td><label for="record_id_[% biblio.biblionumber | html %]">[% biblio.biblionumber | html %]</label></td>
<td>[% INCLUDE 'biblio-title.inc' link = 1 %]</td> <td>[% INCLUDE 'biblio-title.inc' link = 1 %]</td>
<td><a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% biblio.biblionumber | uri %]">[% biblio.itemnumbers.size | html %]</a></td> <td><a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% biblio.biblionumber | uri %]">[% biblio.itemnumbers.size | html %]</a></td>
<td><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblio.biblionumber | uri %]">[% biblio.holds_count | html %]</a></td> <td><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblio.biblionumber | uri %]">[% biblio.holds_count | html %]</a></td>
<td><a href="/cgi-bin/koha/catalogue/issuehistory.pl?biblionumber=[% biblio.biblionumber | uri %]">[% biblio.issues_count | html %]</a></td> <td><a href="/cgi-bin/koha/catalogue/issuehistory.pl?biblionumber=[% biblio.biblionumber | uri %]">[% biblio.issues_count | html %]</a></td>
<td><a href="/cgi-bin/koha/serials/serials-search.pl?searched=1&biblionumber=[% biblio.biblionumber | uri %]">[% biblio.subscriptions_count | html %]</a></td>
</tr> </tr>
[% END %] [% END %]
</tbody> </tbody>
@ -271,6 +274,17 @@
}); });
}); });
$("#selectwithoutsubscriptions").click(function(e){
e.preventDefault();
$(".records input[type='checkbox']:not(:disabled)").each(function(){
if( $(this).data("subscriptions") == 0 ){
$(this).prop("checked", true );
} else {
$(this).prop("checked", false );
}
});
});
$("#clearlinkedtobiblio").click(function(e){ $("#clearlinkedtobiblio").click(function(e){
e.preventDefault(); e.preventDefault();
$(".records input[type='checkbox']:not(:disabled)").each(function(){ $(".records input[type='checkbox']:not(:disabled)").each(function(){

View file

@ -28,6 +28,7 @@ use C4::Auth qw( get_template_and_user );
use C4::Output qw( output_html_with_http_headers ); use C4::Output qw( output_html_with_http_headers );
use C4::Auth qw( get_template_and_user ); use C4::Auth qw( get_template_and_user );
use C4::Biblio qw( GetMarcBiblio ); use C4::Biblio qw( GetMarcBiblio );
use C4::Serials qw( CountSubscriptionFromBiblionumber);
use C4::AuthoritiesMarc; use C4::AuthoritiesMarc;
use Koha::Virtualshelves; use Koha::Virtualshelves;
@ -106,6 +107,7 @@ if ( $op eq 'form' ) {
$biblio->{itemnumbers} = [Koha::Items->search({ biblionumber => $record_id })->get_column('itemnumber')]; $biblio->{itemnumbers} = [Koha::Items->search({ biblionumber => $record_id })->get_column('itemnumber')];
$biblio->{holds_count} = $holds_count; $biblio->{holds_count} = $holds_count;
$biblio->{issues_count} = C4::Biblio::CountItemsIssued( $record_id ); $biblio->{issues_count} = C4::Biblio::CountItemsIssued( $record_id );
$biblio->{subscriptions_count} = CountSubscriptionFromBiblionumber( $record_id );
push @records, $biblio; push @records, $biblio;
} else { } else {
# Retrieve authority information # Retrieve authority information