@@ -, +, @@
- 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 | 63 ++++++++++++++++++++
serials/serials-search.pl | 17 ++++++
4 files changed, 109 insertions(+), 5 deletions(-)
--- a/C4/Serials.pm
+++ a/C4/Serials.pm
@@ -614,7 +614,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.*,
@@ -628,13 +638,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);
@@ -683,19 +695,30 @@ 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 );
$subscription->{cannotdisplay} = not can_show_subscription( $subscription );
+
+ 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
@@ -20,6 +20,7 @@
} ) );
var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
+ // FIXME sort function of additional_fields!
"sPaginationType": "four_button",
"aoColumnDefs": [
{ 'bSortable': false, 'aTargets': [ 'NoSort' ] },
@@ -116,6 +117,21 @@
+ [% FOR field IN additional_fields_for_subscription %]
+
+
+ [% IF field.authorised_value_choices %]
+
+ [% ELSE %]
+
+ [% END %]
+
+ [% END %]