@@ -, +, @@
subscriptions with routing lists
---
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(-)
--- a/C4/Serials.pm
+++ a/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);
}
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-advsearch.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-advsearch.inc
@@ -50,6 +50,11 @@
+
+
+
+
+
[% INCLUDE 'additional-fields-entry.inc' available=additional_fields_for_subscription values=additional_field_filters wrap_fieldset=0 %]
--- a/serials/serials-search.pl
+++ a/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') }
);
--- a/t/db_dependent/Serials.t
+++ a/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}) {
--