use C4::Debug;
use C4::Serials::Frequency;
use C4::Serials::Numberpattern;
+use Koha::AdditionalField;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
my $sth = $dbh->prepare($query);
$sth->execute($subscriptionid);
my $subscription = $sth->fetchrow_hashref;
+
$subscription->{cannotedit} = not can_edit_subscription( $subscription );
+
+ # Add additional fields to the subscription into a new key "additional_fields"
+ my $additional_field_values = Koha::AdditionalField->fetch_all_values({
+ tablename => 'subscription',
+ record_id => $subscriptionid,
+ });
+ $subscription->{additional_fields} = $additional_field_values->{$subscriptionid};
+
return $subscription;
}
sub SearchSubscriptions {
my ( $args ) = @_;
- my $query = q{
+ 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 => $additional_fields,
+ tablename => 'subscription',
+ exact_match => 0,
+ });
+ return () unless @$matching_record_ids_for_additional_fields;
+ }
+
+ my $query = q|
SELECT
subscription.notes AS publicnotes,
subscriptionhistory.*,
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);
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 )
+ . ')';
}
$query .= " ORDER BY " . $args->{orderby} if $args->{orderby};
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->{additional_fields} = $additional_field_values->{$subscription->{subscriptionid}};
}
return @$results;
return unless ( $supplierid or $serialid );
my $dbh = C4::Context->dbh;
+
my $sth;
my $byserial = '';
if ($serialid) {
$line->{claimdate} = format_date( $line->{claimdate} );
}
$line->{"status".$line->{status}} = 1;
+
+ my $additional_field_values = Koha::AdditionalField->fetch_all_values({
+ record_id => $line->{subscriptionid},
+ tablename => 'subscription'
+ });
+ %$line = ( %$line, additional_fields => $additional_field_values->{$line->{subscriptionid}} );
+
push @issuelist, $line;
}
return @issuelist;