From f64cf1b8de3f28a3b6d4144579628bd7b08acb96 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Mon, 25 Nov 2024 16:41:14 +0100 Subject: [PATCH] Bug 34989: Subscription cannot be added if a control field is set up in Additional Fields parameter Test plan for main and MARC21: 1 - Apply bug 38528 2 - Create a subscription 3 - Go to administration -> aditional fields add a field for any CONTROL field existing in your subscription for example 005 4 - Also create an additional field for 245$a (check non regression) 5 - On the subscription page: Edit -> Edit subscription -> Next -> Save subscription -> You get: "Internal server error" 6 - Apply patch 7 - Repeat 4, you have no error anymore. On the subscription page you can see both additional fields. --- Koha/Object/Mixin/AdditionalFields.pm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Koha/Object/Mixin/AdditionalFields.pm b/Koha/Object/Mixin/AdditionalFields.pm index 4c2e25afe20..6bf50314d32 100644 --- a/Koha/Object/Mixin/AdditionalFields.pm +++ b/Koha/Object/Mixin/AdditionalFields.pm @@ -67,13 +67,21 @@ sub set_additional_fields { my ( $tag, $subfield ) = split /\$/, $field->marcfield; my $marc_field = $record->field($tag); if ( $field->marcfield_mode eq 'get' ) { - $value = $marc_field ? $marc_field->subfield($subfield) : ''; + if ($subfield) { + $value = $marc_field ? $marc_field->subfield($subfield) : ''; + } else { + $value = $marc_field ? $marc_field->data() : ''; + } } elsif ( $field->marcfield_mode eq 'set' ) { - if ($marc_field) { + if ( $marc_field and $subfield ) { $marc_field->update( $subfield => $value ); - } else { + } elsif ($marc_field) { + $marc_field->update($value); + } elsif ($subfield) { $marc_field = MARC::Field->new( $tag, '', '', $subfield => $value ); $record->append_fields($marc_field); + } else { + $marc_field = MARC::Field->new( $tag, '', '', $value ); } $record_updated = 1; } -- 2.30.2