From 4c8fb9bd0da85688bf317a3eebdf9a8d15816c0f Mon Sep 17 00:00:00 2001 From: Dan Wells Date: Tue, 2 Jul 2013 12:01:46 -0400 Subject: [PATCH] Allow compressed_end() to handle compressed input The code was assuming the $end_holding param would be uncompressed, but this was not stated anywhere, nor enforced. Let's allow the method to take both compressed and uncompressed holdings as the "end" (and handle it appropriately). Signed-off-by: Dan Wells --- Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm b/Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm index 33781dd778..37f985a38a 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm @@ -640,12 +640,18 @@ sub compressed_to_last { # # Creates or replaces an end of a compressed holding # +# If $end_holding does not share caption data with $self, results +# will be unpredicable +# sub compressed_end { my $self = shift; my $end_holding = shift; my %changes; - if ($end_holding) { + if ($end_holding and !$end_holding->is_open_ended) { + if ($end_holding->is_compressed) { + $end_holding = $end_holding->clone->compressed_to_last; + } foreach my $key (keys %{$self->fields}) { my @values = @{$self->field_values($key)}; my @end_values = @{$end_holding->field_values($key)}; @@ -653,7 +659,7 @@ sub compressed_end { $self->fields->{$key}{HOLDINGS} = \@values; $changes{$key} = join('-', @values); } - } elsif (!$self->is_open_ended) { # make open-ended if no $end_holding + } elsif (!$self->is_open_ended) { # make open-ended if no $end_holding (or $end_holding was open ended) foreach my $key (keys %{$self->fields}) { my @values = @{$self->field_values($key)}; $self->fields->{$key}{HOLDINGS} = [$values[0]]; -- 2.11.0