From: Mike Rylander Date: Wed, 12 Jul 2017 21:18:29 +0000 (-0400) Subject: serials: Add call number affix support to serial receiving X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=f886f780c5a2fad38ec5be93a97d53a98bcb325e;p=working%2FEvergreen.git serials: Add call number affix support to serial receiving Signed-off-by: Mike Rylander --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm index f58c805796..a2f952f07c 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm @@ -1610,13 +1610,22 @@ sub unitize_items { sub _find_or_create_call_number { my ($e, $lib, $cn_string, $record) = @_; - # FIXME: should suffix and prefix come into play here? - my $existing = $e->search_asset_call_number({ - "owning_lib" => $lib, - "label" => $cn_string, - "record" => $record, - "deleted" => "f" - }) or return $e->die_event; + my ($prefix,$suffix) = ('',''); + if (ref($cn_string)) { + ($prefix,$cn_string,$suffix) = @$cn_string; + } + + my $existing = $e->search_asset_call_number([{ + owning_lib => $lib, + label => $cn_string, + record => $record, + deleted => "f", + '+acnp' => { label => $prefix }, + '+acns' => { label => $suffix }, + + },{ + join => { acnp => {}, acns => {} } + }]) or return $e->die_event; if (@$existing) { return $existing->[0]->id; @@ -1624,6 +1633,39 @@ sub _find_or_create_call_number { return $e->die_event unless $e->allowed("CREATE_VOLUME", $lib); + $prefix = -1 if (!$prefix); + $suffix = -1 if (!$suffix); + + if ($prefix ne '-1') { + my $acnp = $e->search_asset_call_number_prefix({ + owning_lib => $lib, + label => $prefix, + })->[0]; + + if (!$acnp) { + $acnp = new Fieldmapper::asset::call_number_prefix; + $acnp->label($prefix); + $acnp->owning_lib($lib); + $e->create_asset_call_number_prefix($acnp) or return $e->die_event; + $prefix = $e->data->id; + } + } + + if ($suffix ne '-1') { + my $acns = $e->search_asset_call_number_suffix({ + owning_lib => $lib, + label => $suffix, + })->[0]; + + if (!$acns) { + $acns = new Fieldmapper::asset::call_number_suffix; + $acns->label($suffix); + $acns->owning_lib($lib); + $e->create_asset_call_number_suffix($acns) or return $e->die_event; + $suffix = $e->data->id; + } + } + my $acn = new Fieldmapper::asset::call_number; $acn->creator($e->requestor->id); @@ -1631,6 +1673,8 @@ sub _find_or_create_call_number { $acn->record($record); $acn->label($cn_string); $acn->owning_lib($lib); + $acn->prefix($prefix); + $acn->suffix($suffix); $e->create_asset_call_number($acn) or return $e->die_event; return $e->data->id; diff --git a/Open-ILS/src/templates/staff/serials/t_batch_receive.tt2 b/Open-ILS/src/templates/staff/serials/t_batch_receive.tt2 index 4fd8c396c4..78c555c5ad 100644 --- a/Open-ILS/src/templates/staff/serials/t_batch_receive.tt2 +++ b/Open-ILS/src/templates/staff/serials/t_batch_receive.tt2 @@ -77,7 +77,7 @@ @@ -116,8 +116,12 @@
- + +