LP1929741 Apply default lineitem order identifers
authorBill Erickson <berickxx@gmail.com>
Mon, 14 Jun 2021 21:35:21 +0000 (17:35 -0400)
committerJane Sandberg <js7389@princeton.edu>
Sun, 2 Oct 2022 15:02:49 +0000 (08:02 -0700)
Apply a default order identifier to lineitems instead of leaving the
selector blank.  Ensure the value that will display in the selector
matches what's in the database by setting the value on load when needed.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Signed-off-by: Jane Sandberg <js7389@princeton.edu>
Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem.service.ts
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Lineitem.pm

index f669555..e320294 100644 (file)
@@ -101,7 +101,8 @@ export class LineitemService {
             flesh_pl: true,
             flesh_formulas: true,
             flesh_copies: true,
-            clear_marc: false
+            clear_marc: false,
+            apply_order_identifiers: true
         }, params.fleshMore || {});
 
         return this.net.request(
index e510286..60eeb59 100644 (file)
@@ -265,9 +265,13 @@ sub retrieve_lineitem_batch {
     return $e->die_event unless $e->checkauth;
 
     for my $li_id (@$li_ids) {
+        my $li = retrieve_lineitem_impl($e, $li_id, $options);
+
+        set_default_order_ident($self, $e, $options, $li);
+
         $client->respond({
             id => $li_id,
-            lineitem => retrieve_lineitem_impl($e, $li_id, $options),
+            lineitem => $li,
             existing_copies => $AC->li_existing_copies($e, $li_id)
         });
     }
@@ -277,6 +281,26 @@ sub retrieve_lineitem_batch {
     return undef;
 }
 
+sub set_default_order_ident {
+       my ($self, $e, $options, $li) = @_;
+
+    if (!$$options{flesh_attrs}) { return; }
+    if (!$$options{apply_order_identifiers}) { return; }
+    if (grep {$_->order_ident eq 't'} @{$li->attributes}) { return ; }
+
+    # Caller wants us to apply a default order identifier
+    # Use the first ISBN as the default.
+
+    my ($attr) = grep {$_->attr_name eq 'isbn'} @{$li->attributes};
+
+    if (!$attr) { return; }
+
+    my $method = $self->method_lookup('open-ils.acq.lineitem.order_identifier.set');
+    my ($ident_attr) = $method->run($e->authtoken, {source_attr_id => $attr->id});
+
+    push(@{$li->attributes}, $ident_attr);
+}
+
 
 
 __PACKAGE__->register_method(