@@ -, +, @@
---
C4/Serials.pm | 5 +-
Koha/AdditionalField.pm | 12 +++--
.../prog/en/modules/serials/serials-home.tt | 1 -
.../prog/en/modules/serials/serials-search.tt | 29 ++++++++---
.../prog/en/modules/serials/subscription-add.tt | 8 +--
serials/claims.pl | 2 +-
serials/serials-search.pl | 5 +-
serials/subscription-add.pl | 12 ++---
t/db_dependent/AdditionalField.t | 51 ++++++++++++++------
9 files changed, 82 insertions(+), 43 deletions(-)
--- a/C4/Serials.pm
+++ a/C4/Serials.pm
@@ -655,8 +655,9 @@ sub SearchSubscriptions {
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},
+ fields => $additional_fields,
tablename => 'subscription',
+ exact_match => 0,
});
return () unless @$matching_record_ids_for_additional_fields;
}
@@ -746,7 +747,7 @@ sub SearchSubscriptions {
record_id => $subscription->{subscriptionid},
tablename => 'subscription'
});
- $subscription->{addition_fields} = $additional_field_values->{$subscription->{subscriptionid}};
+ $subscription->{additional_fields} = $additional_field_values->{$subscription->{subscriptionid}};
}
return @$results;
--- a/Koha/AdditionalField.pm
+++ a/Koha/AdditionalField.pm
@@ -97,6 +97,7 @@ sub insert_values {
my $dbh = C4::Context->dbh;
local $dbh->{RaiseError} = 1;
while ( my ( $record_id, $value ) = each %{$self->{values}} ) {
+ next unless defined $value;
my $updated = $dbh->do(q|
UPDATE additional_field_values
SET value = ?
@@ -135,7 +136,7 @@ sub fetch_values {
sub all {
my ( $class, $args ) = @_;
- die "BAD CALL: Don't use fetch_all_values as a static method"
+ die "BAD CALL: Don't use fetch_all_values as an instance method"
if ref $class and UNIVERSAL::can($class,'can');
my $tablename = $args->{tablename};
my $searchable = $args->{searchable};
@@ -172,7 +173,7 @@ sub all {
sub fetch_all_values {
my ( $class, $args ) = @_;
- die "BAD CALL: Don't use fetch_all_values as a static method"
+ die "BAD CALL: Don't use fetch_all_values as an instance method"
if ref $class and UNIVERSAL::can($class,'can');
my $record_id = $args->{record_id};
@@ -199,11 +200,12 @@ sub fetch_all_values {
sub get_matching_record_ids {
my ( $class, $args ) = @_;
- die "BAD CALL: Don't use fetch_all_values as a static method"
+ die "BAD CALL: Don't use fetch_all_values as an instance method"
if ref $class and UNIVERSAL::can($class,'can');
my $fields = $args->{fields} // [];
my $tablename = $args->{tablename};
+ my $exact_match = $args->{exact_match} // 1;
return [] unless @$fields;
my $dbh = C4::Context->dbh;
@@ -222,13 +224,13 @@ sub get_matching_record_ids {
WHERE afv.field_id = af.id
AND af.name = ?
AND af.tablename = ?
- AND value = ?
+ AND value LIKE ?
) AS field$i USING (id)
WHERE field$i.id IS NOT NULL
) AS values$i |;
$subquery .= ' USING (record_id)' if $i > 1;
push @subqueries, $subquery;
- push @args, $field->{name}, $tablename, $field->{value};
+ push @args, $field->{name}, $tablename, ( $exact_match ? $field->{value} : "%$field->{value}%" );
}
$query .= join( ' LEFT JOIN ', @subqueries ) . ' WHERE 1';
for my $j ( 1 .. $i ) {
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tt
@@ -17,7 +17,6 @@
- [% INCLUDE 'subscriptions-search.inc' %]
[% INCLUDE 'serials-menu.inc' %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt
@@ -98,16 +98,16 @@
[% FOR field IN additional_fields_for_subscription %]
-
+
[% IF field.authorised_value_choices %]
-
[% END %]
@@ -186,8 +186,6 @@
[% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %]
- [% IF ( routing && CAN_user_serials_routing ) %]
- [% END %]
[% FOR field IN additional_fields_for_subscription %]
[% IF field.authorised_value_category %]
[% UNLESS subscription.cannotedit %]
Reopen
@@ -349,9 +362,9 @@
[% FOR field IN additional_fields_for_subscription %]
-
+
[% IF field.authorised_value_choices %]
-
+
[% FOREACH av IN field.authorised_value_choices %]
[% IF av.authorised_value == additional_field_filters.${field.name} %]
@@ -362,7 +375,7 @@
[% END %]
[% ELSE %]
-
+
[% END %]
[% END %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt
@@ -841,9 +841,9 @@ $(document).ready(function() {
[% FOR field IN additional_fields_for_subscription %]
-
+
[% IF field.authorised_value_choices %]
-
+
[% FOREACH av IN field.authorised_value_choices %]
[% IF av.authorised_value == additional_fields.${field.name} %]
@@ -854,10 +854,10 @@ $(document).ready(function() {
(Authorised values for [% field.authorised_value_category %])
[% ELSE %]
[% IF field.marcfield %]
-
+
This value will be filled with the [% field.marcfield %] subfield of the selected biblio.
[% ELSE %]
-
+
[% END %]
[% END %]