From d90f69feb04cb1ebf345a2f7457d2a4886cdf9e6 Mon Sep 17 00:00:00 2001 From: Dan Wells Date: Wed, 27 Dec 2017 08:36:23 -0500 Subject: [PATCH 1/1] LP#1730470 Restore XUL serial receive compatibility The older XUL interface does not have quite the same fleshing as the new web-staff, so adding the 'move previous' code into the unitize function breaks the old interface. Since we already are looking up the distribution to get the setting, let's just tack it on when it is missing. To test ------- [1] Set up a serial subscription with predicted issuances, then from the XUL serials control view attempt to receive an issue. Note that there will be a crash. [2] Apply the patch and repeat step #1; this time, the issuance receive should work. [3] Verify that receiving issues via the web staff interface continues to work. Signed-off-by: Dan Wells Signed-off-by: Galen Charlton Signed-off-by: Mike Rylander --- .../src/perlmods/lib/OpenILS/Application/Serial.pm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm index 04f79c0de3..3a9aaec3f8 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm @@ -1446,13 +1446,13 @@ sub unitize_items { return $evt if $evt; if ($mode eq 'receive') { - my $sdists = $editor->search_serial_distribution([ + my $sdist = $editor->search_serial_distribution([ {"+sstr" => {"id" => $stream_id}}, { "join" => {"sstr" => {}}, "flesh" => 1, "flesh_fields" => {"sdist" => ["subscription"]} - }]); + }])->[0]; #------------------------------------------------------------------------- # The following is copied from open-ils.serial.receive_items.one_unit_per @@ -1462,6 +1462,13 @@ sub unitize_items { # issuance). This will be used in up to two places: once when building # a summary, once when changing the copy location of the previous # issuance's copy. + + # manually flesh distribution if not present + # + # this helps maintain compatiblity with XUL serial control receive + if (!ref($item->stream->distribution)) { + $item->stream->distribution($sdist); + } my $issuances_received = _issuances_received($editor, $item); if ($U->event_code($issuances_received)) { $editor->rollback; @@ -1469,7 +1476,7 @@ sub unitize_items { } # Find out if we need to to deal with previous copy location changing. - my $ou = $sdists->[0]->holding_lib; + my $ou = $sdist->holding_lib; unless (exists $prev_loc_setting_map->{$ou}) { $prev_loc_setting_map->{$ou} = $U->ou_ancestor_setting_value( $ou, "serial.prev_issuance_copy_location", $editor -- 2.43.2