Ensure that the list of previous issuances is sorted correctly (on
date_published) when looking for the previous serial.unit to update its
copy location (when serial.prev_issuance_copy_location is enabled).
The data comes sorted from the DB, but the sorting was lost during the
process of unique-ifying the list. Ultimately, it was relying on the
order of hash keys, which is undefined.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
}
}) or return $e->die_event;
- my $uniq = +{map { $_->{"issuance"} => 1 } @$results};
- return [ map { $e->retrieve_serial_issuance($_) } keys %$uniq ];
+ my %seen;
+ my $issuances = [];
+ for my $iss_id (map { $_->{"issuance"} } @$results) {
+ next if $seen{$iss_id};
+ $seen{$iss_id} = 1;
+ push(@$issuances, $e->retrieve_serial_issuance($iss_id));
+ }
+ return $issuances;
}
# _prepare_unit populates the detailed_contents, summary_contents, and