Bug 32843: Fix cataloguing/value_builder/unimarc_field_124a.pl
[koha-ffzg.git] / serials / subscription-batchedit.pl
index 9483ac6..556f81e 100755 (executable)
@@ -21,20 +21,20 @@ use Modern::Perl;
 
 use CGI qw( -utf8 );
 
-use C4::Auth;
-use C4::Output;
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_html_with_http_headers );
+use C4::Serials qw( can_edit_subscription );
 use Koha::Subscriptions;
 use Koha::Acquisition::Booksellers;
-use Koha::AdditionalField;
-use Koha::DateUtils;
+use Koha::AdditionalFields;
+use Koha::DateUtils qw( dt_from_string );
 
-my $cgi = new CGI;
+my $cgi = CGI->new;
 
 my ($template, $loggedinuser, $cookie) = get_template_and_user({
     template_name => 'serials/subscription-batchedit.tt',
     query => $cgi,
     type => 'intranet',
-    authnotrequired => 0,
     flagsrequired => {serials => 'edit_subscription'},
 });
 
@@ -47,7 +47,7 @@ foreach my $subscriptionid (@subscriptionids) {
     push @subscriptions, $subscription if $subscription;
 }
 
-my $additional_fields = Koha::AdditionalField->all({tablename => 'subscription'});
+my @additional_fields = Koha::AdditionalFields->search({tablename => 'subscription'})->as_list;
 
 my $batchedit = $cgi->param('batchedit');
 if ($batchedit) {
@@ -63,9 +63,9 @@ 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) {
@@ -76,23 +76,21 @@ if ($batchedit) {
             }
         }
 
-        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;
@@ -100,8 +98,8 @@ if ($batchedit) {
 
 $template->param(
     subscriptions => \@subscriptions,
-    booksellers => [ Koha::Acquisition::Booksellers->search() ],
-    additional_fields => $additional_fields,
+    booksellers => [ Koha::Acquisition::Booksellers->search->as_list ],
+    additional_fields => \@additional_fields,
     referrer => scalar $cgi->param('referrer'),
 );