Bugzilla – Attachment 161718 Details for
Bug 26567
Allow to limit subscription search to subscriptions with routing lists
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 26567: Allow to limit subscription search to subscriptions with routing lists
Bug-26567-Allow-to-limit-subscription-search-to-su.patch (text/plain), 6.58 KB, created by
Danyon Sewell
on 2024-02-01 21:37:02 UTC
(
hide
)
Description:
Bug 26567: Allow to limit subscription search to subscriptions with routing lists
Filename:
MIME Type:
Creator:
Danyon Sewell
Created:
2024-02-01 21:37:02 UTC
Size:
6.58 KB
patch
obsolete
>From 7300d76f4d9f15c1bececa734a7d8b2d58ffca3a Mon Sep 17 00:00:00 2001 >From: danyonsewell <danyonsewell@catalyst.net.nz> >Date: Wed, 20 Dec 2023 04:15:06 +0000 >Subject: [PATCH] Bug 26567: Allow to limit subscription search to > subscriptions with routing lists > >unit tests have now been written for the SearchSubscription subroutine. > >Test plan: >1. Apply this patch >2. Create two subscriptions, one with a routing list and one without >3. Navigate to Serials home and tick the checkbox labeled "Search routing lists only:" >4. Confirm that the only search result to appear is the subscription you added the routing list to > >Sponsored by: Bibliotheksservice-Zentrum Baden-Wuerttemberg >--- > C4/Serials.pm | 5 ++- > .../prog/en/includes/serials-advsearch.inc | 5 +++ > serials/serials-search.pl | 2 + > t/db_dependent/Serials.t | 43 ++++++++++++++++++- > 4 files changed, 53 insertions(+), 2 deletions(-) > >diff --git a/C4/Serials.pm b/C4/Serials.pm >index ec88b0f3e63..2924fed711e 100644 >--- a/C4/Serials.pm >+++ b/C4/Serials.pm >@@ -510,6 +510,7 @@ The valid search fields are: > branch > expiration_date > closed >+ routinglist > > The expiration_date search field is special; it specifies the maximum > subscription expiration date. >@@ -553,6 +554,9 @@ sub SearchSubscriptions { > LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber > LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id > |; >+ if( $args->{routinglist} ) { >+ $query .= q| INNER JOIN (SELECT DISTINCT subscriptionid FROM subscriptionroutinglist) srl ON srl.subscriptionid = subscription.subscriptionid|; >+ } > $query .= q| WHERE 1|; > my @where_strs; > my @where_args; >@@ -609,7 +613,6 @@ sub SearchSubscriptions { > push @where_strs, "subscription.closed = ?"; > push @where_args, "$args->{closed}"; > } >- > if(@where_strs){ > $query .= ' AND ' . join(' AND ', @where_strs); > } >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-advsearch.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-advsearch.inc >index ec34b6f0732..84b9eed7cb1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-advsearch.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-advsearch.inc >@@ -50,6 +50,11 @@ > <label for="to">Expires before:</label> > <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | html %]" size="10" maxlength="10" class="flatpickr" /> > </li> >+ <li class="local"> >+ <label for="routinglist">Search routing lists only:</label> >+ <input type="checkbox" id="routinglist" name="routinglist" /> >+ </li> >+ > [% INCLUDE 'additional-fields-entry.inc' available=additional_fields_for_subscription values=additional_field_filters wrap_fieldset=0 %] > </ol> > <input type="hidden" name="searched" value="1" /> >diff --git a/serials/serials-search.pl b/serials/serials-search.pl >index 80b20038145..1ebe3ccca35 100755 >--- a/serials/serials-search.pl >+++ b/serials/serials-search.pl >@@ -52,6 +52,7 @@ my $location = $query->param('location_filter') || ''; > my $expiration_date = $query->param('expiration_date_filter') || ''; > my $routing = $query->param('routing') || C4::Context->preference("RoutingSerials"); > my $searched = $query->param('searched') || 0; >+my $routinglist = $query->param('routinglist'); > my $mana = $query->param('mana') || 0; > my @subscriptionids = $query->multi_param('subscriptionid'); > my $op = $query->param('op'); >@@ -116,6 +117,7 @@ if ($searched) { > additional_fields => \@additional_field_filters, > location => $location, > expiration_date => $expiration_date, >+ routinglist => $routinglist, > }, > { results_limit => C4::Context->preference('SerialsSearchResultsLimit') } > ); >diff --git a/t/db_dependent/Serials.t b/t/db_dependent/Serials.t >index 65c563d1649..87b8f4a8775 100755 >--- a/t/db_dependent/Serials.t >+++ b/t/db_dependent/Serials.t >@@ -16,7 +16,7 @@ use Koha::DateUtils qw( dt_from_string output_pref ); > use Koha::Acquisition::Booksellers; > use t::lib::Mocks; > use t::lib::TestBuilder; >-use Test::More tests => 54; >+use Test::More tests => 56; > > BEGIN { > use_ok('C4::Serials', qw( updateClaim NewSubscription GetSubscription GetSubscriptionHistoryFromSubscriptionId SearchSubscriptions ModSubscription GetExpirationDate GetSerials GetSerialInformation NewIssue AddItem2Serial DelSubscription GetFullSubscription PrepareSerialsData GetSubscriptionsFromBiblionumber ModSubscriptionHistory GetSerials2 GetLatestSerials GetNextSeq GetSeq CountSubscriptionFromBiblionumber ModSerialStatus findSerialsByStatus HasSubscriptionStrictlyExpired HasSubscriptionExpired GetLateOrMissingIssues check_routing addroutingmember GetNextDate )); >@@ -194,6 +194,47 @@ is( > 'SearchSubscriptions returned only one subscription when results_limit is set to "1"' > ); > >+# Set up fake data >+my $subscriptionwithroutinglistid = NewSubscription( >+ undef, "", undef, undef, $budget_id, $biblionumber, >+ '2013-01-01', $frequency_id, undef, undef, undef, >+ undef, undef, undef, undef, undef, undef, >+ 1, $notes, undef, '2013-01-01', undef, $pattern_id, >+ undef, undef, 0, $internalnotes, 0, >+ undef, undef, 0, undef, '2013-12-31', 0 >+); >+ >+#creating fake members >+my $patron = $builder->build_object( >+ { >+ class => 'Koha::Patrons', >+ } >+); >+my $patron2 = $builder->build_object( >+ { >+ class => 'Koha::Patrons', >+ } >+); >+my $patronid1 = $patron->borrowernumber; >+my $patronid2 = $patron2->borrowernumber; >+ >+# Add a fake routing list with fake members >+addroutingmember($patronid1,$subscriptionwithroutinglistid); >+addroutingmember($patronid2,$subscriptionwithroutinglistid); >+ >+# Perform SearchSubscriptions >+my $fake_subscription = GetSubscription($subscriptionwithroutinglistid); >+ >+my @subscriptionswithroutinglist = SearchSubscriptions({ >+ issn => $fake_subscription->{issn}, >+ orderby => 'title', >+ routinglist => 1 >+}); >+ >+# Check the results >+is(@subscriptionswithroutinglist, 1, 'SearchSubscriptions returned the expected number of subscriptions'); >+is($subscriptionswithroutinglist[0]->{title}, $fake_subscription->{title}, 'SearchSubscriptions returned the correct subscription'); >+ > my $frequency = GetSubscriptionFrequency($subscriptioninformation->{periodicity}); > my $old_frequency; > if (not $frequency->{unit}) { >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 26567
:
160094
|
160095
|
161617
|
161618
|
161718
|
161750
|
161751
|
166489
|
166490
|
166491
|
166492