From 68b621359689801b94cce548caf49fc87f5a660a Mon Sep 17 00:00:00 2001 From: Kyle Hall Date: Wed, 20 Jul 2022 12:32:58 -0400 Subject: [PATCH] Bug 31202 - Koha removes optional SIP fields with a value of "0" If the value of a SIP field is "0", that evaluates to false, so any calls to maybe_add with a value of "0" will not get added to the SIP response message. Test Plan: 1) Apply this patch 2) prove t/db_dependent/SIP/Message.t --- C4/SIP/Sip.pm | 5 ++++- t/db_dependent/SIP/Message.t | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/C4/SIP/Sip.pm b/C4/SIP/Sip.pm index bd834f24474..4d662a26b7c 100644 --- a/C4/SIP/Sip.pm +++ b/C4/SIP/Sip.pm @@ -108,7 +108,10 @@ sub maybe_add { $value =~ s/$regex->{find}/$regex->{replace}/g; } } - return (defined($value) && $value) ? add_field($fid, $value) : ''; + + return ( defined($value) && length($value) ) + ? add_field( $fid, $value ) + : ''; } # diff --git a/t/db_dependent/SIP/Message.t b/t/db_dependent/SIP/Message.t index 162edfb6d61..fc0e11944b0 100755 --- a/t/db_dependent/SIP/Message.t +++ b/t/db_dependent/SIP/Message.t @@ -115,7 +115,7 @@ subtest 'Test hold_patron_bcode' => sub { subtest 'hold_patron_name() tests' => sub { - plan tests => 2; + plan tests => 3; my $schema = Koha::Database->new->schema; $schema->storage->txn_begin; @@ -145,6 +145,9 @@ subtest 'hold_patron_name() tests' => sub { my $resp = C4::SIP::Sip::maybe_add( FID_CALL_NUMBER, $sip_item->hold_patron_name, $server ); is( $resp, q{}, "maybe_add returns empty string for SIP item with no hold returns empty string" ); + $resp = C4::SIP::Sip::maybe_add( FID_CALL_NUMBER, "0", $server ); + is( $resp, q{CS0|}, "maybe_add will create the field of the string '0'" ); + $schema->storage->txn_rollback; }; -- 2.30.2