@@ -, +, @@
- go on the subscriptions advanced search page
(serials/serials-search.pl).
- verify all searchable additional fields are displayed on the form.
- combine 1 or more values and verify results are consistent.
- verify the values are displayed in new columns of the table.
- for field linked to an authorised value category, the description is
displayed (not the code).
---
C4/Serials.pm | 33 ++++++++--
.../prog/en/includes/serials-menu.inc | 1 +
.../prog/en/modules/serials/serials-search.tt | 67 +++++++++++++++++++-
serials/serials-search.pl | 17 +++++
4 files changed, 111 insertions(+), 7 deletions(-)
--- a/C4/Serials.pm
+++ a/C4/Serials.pm
@@ -665,7 +665,17 @@ subscription expiration date.
sub SearchSubscriptions {
my ( $args ) = @_;
- my $query = qq{
+ my $additional_fields = $args->{additional_fields} // [];
+ my $matching_record_ids_for_additional_fields = [];
+ if ( @$additional_fields ) {
+ $matching_record_ids_for_additional_fields = Koha::AdditionalField->get_matching_record_ids({
+ fields => $args->{additional_fields},
+ tablename => 'subscription',
+ });
+ return () unless @$matching_record_ids_for_additional_fields;
+ }
+
+ my $query = q|
SELECT
subscription.notes AS publicnotes,
subscription.*,
@@ -679,13 +689,15 @@ sub SearchSubscriptions {
LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber
LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber
LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id
- };
+ |;
+ $query .= q| WHERE 1|;
my @where_strs;
my @where_args;
if( $args->{biblionumber} ) {
push @where_strs, "biblio.biblionumber = ?";
push @where_args, $args->{biblionumber};
}
+
if( $args->{title} ){
my @words = split / /, $args->{title};
my (@strs, @args);
@@ -734,15 +746,20 @@ sub SearchSubscriptions {
push @where_strs, "subscription.closed = ?";
push @where_args, "$args->{closed}";
}
+
if(@where_strs){
- $query .= " WHERE " . join(" AND ", @where_strs);
+ $query .= ' AND ' . join(' AND ', @where_strs);
+ }
+ if ( @$additional_fields ) {
+ $query .= ' AND subscriptionid IN ('
+ . join( ', ', @$matching_record_ids_for_additional_fields )
+ . ')';
}
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare($query);
$sth->execute(@where_args);
- my $results = $sth->fetchall_arrayref( {} );
- $sth->finish;
+ my $results = $sth->fetchall_arrayref( {} );
for my $subscription ( @$results ) {
$subscription->{cannotedit} = not can_edit_subscription( $subscription );
@@ -750,6 +767,12 @@ sub SearchSubscriptions {
( C4::Context->preference("IndependentBranches") &&
C4::Context->userenv &&
$subscription->{branchcode} ne C4::Context->userenv->{'branch'} ) ? 1 : 0;
+
+ my $additional_field_values = Koha::AdditionalField->fetch_all_values({
+ record_id => $subscription->{subscriptionid},
+ tablename => 'subscription'
+ });
+ $subscription->{addition_fields} = $additional_field_values->{$subscription->{subscriptionid}};
}
return @$results;
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc
@@ -30,4 +30,5 @@
Manage numbering patterns
+
Add subscription fields
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt
@@ -17,6 +17,7 @@
[% END %]
var osrlt = $("#osrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
+ // FIXME sort function of additional_fields!
"aoColumnDefs": [
{ "aTargets": [ -1, -2, -3 ], "bSortable": false, "bSearchable": false },
],
@@ -24,6 +25,7 @@
} ) );
var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
+ // FIXME sort function of additional_fields!
"aoColumnDefs": [
{ "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
],
@@ -118,6 +120,21 @@
+ [% FOR field IN additional_fields_for_subscription %]
+
+
+ [% IF field.authorised_value_choices %]
+
+ [% ELSE %]
+
+ [% END %]
+
+ [% END %]