From a9b3ea8659452f0f4a97b43b852ff66fe8fc3918 Mon Sep 17 00:00:00 2001 From: Baptiste Wojtkowski Date: Mon, 30 Dec 2024 10:19:34 +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. Also check that 245$a is properly reported Signed-off-by: David Nind --- Koha/Object/Mixin/AdditionalFields.pm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Koha/Object/Mixin/AdditionalFields.pm b/Koha/Object/Mixin/AdditionalFields.pm index 086b45683f..53a0bab592 100644 --- a/Koha/Object/Mixin/AdditionalFields.pm +++ b/Koha/Object/Mixin/AdditionalFields.pm @@ -65,12 +65,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); + } 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, '', '', $subfield => $value); + $marc_field = MARC::Field->new( $tag, '', '', $value ); $record->append_fields($marc_field); } $record_updated = 1; -- 2.39.5