use C4::Auth;
use C4::Output;
+use C4::Serials;
use Koha::Subscriptions;
use Koha::Acquisition::Booksellers;
-use Koha::AdditionalField;
+use Koha::AdditionalFields;
use Koha::DateUtils;
my $cgi = new CGI;
push @subscriptions, $subscription if $subscription;
}
-my $additional_fields = Koha::AdditionalField->all({tablename => 'subscription'});
+my @additional_fields = Koha::AdditionalFields->search({tablename => 'subscription'});
my $batchedit = $cgi->param('batchedit');
if ($batchedit) {
);
my $field_values = {};
- foreach my $field (@$additional_fields) {
- my $value = $cgi->param('field_' . $field->{id});
- $field_values->{$field->{id}} = $value;
+ foreach my $field (@additional_fields) {
+ my $value = $cgi->param('field_' . $field->id);
+ $field_values->{$field->id} = $value;
}
foreach my $subscription (@subscriptions) {
+ next unless C4::Serials::can_edit_subscription( $subscription->unblessed ); # This should be moved to Koha::Subscription->can_edit
while (my ($key, $value) = each %params) {
if (defined $value and $value ne '') {
$subscription->$key($value);
}
}
- foreach my $field (@$additional_fields) {
- my $value = $field_values->{$field->{id}};
+ my @additional_field_values;
+ foreach my $field (@additional_fields) {
+ my $value = $field_values->{$field->id};
if (defined $value and $value ne '') {
- $field->{values} //= {};
- $field->{values}->{$subscription->subscriptionid} = $value;
+ push @additional_field_values, {
+ id => $field->id,
+ value => $value,
+ };
}
}
+ $subscription->set_additional_fields(\@additional_field_values);
$subscription->store;
}
- foreach my $field (@$additional_fields) {
- if (defined $field->{values}) {
- $field->insert_values();
- }
- }
-
my $redirect_url = $cgi->param('referrer') // '/cgi-bin/koha/serials/serials-home.pl';
print $cgi->redirect($redirect_url);
exit;
$template->param(
subscriptions => \@subscriptions,
booksellers => [ Koha::Acquisition::Booksellers->search() ],
- additional_fields => $additional_fields,
+ additional_fields => \@additional_fields,
referrer => scalar $cgi->param('referrer'),
);