LP#1942220: (follow-up) properly style 'delayed' LI dispositions
authorGalen Charlton <gmc@equinoxOLI.org>
Tue, 11 Jan 2022 22:52:32 +0000 (17:52 -0500)
committerGalen Charlton <gmc@equinoxOLI.org>
Tue, 11 Jan 2022 22:52:32 +0000 (17:52 -0500)
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.html
Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem-list.component.ts
Open-ILS/src/eg2/src/app/staff/acq/lineitem/lineitem.service.ts

index 1a54b81..061124c 100644 (file)
 </ng-container>
 
 <ng-container *ngFor="let li of pageOfLineitems">
-  <div class="row mt-2 border-bottom pt-2 pb-2 li-state-{{li.state()}}">
+  <div class="row mt-2 border-bottom pt-2 pb-2 li-state-{{lineitemDisposition(li)}}">
     <div class="col-lg-12 d-flex">
       <div class="jacket-wrapper">
         <ng-container *ngIf="jacketIdent(li)">
index 6a4f479..6e6d81c 100644 (file)
@@ -8,7 +8,7 @@ import {IdlService, IdlObject} from '@eg/core/idl.service';
 import {NetService} from '@eg/core/net.service';
 import {AuthService} from '@eg/core/auth.service';
 import {ServerStoreService} from '@eg/core/server-store.service';
-import {LineitemService} from './lineitem.service';
+import {LineitemService, LINEITEM_DISPOSITION} from './lineitem.service';
 import {PoService} from '../po/po.service';
 import {ComboboxEntry} from '@eg/share/combobox/combobox.component';
 import {HoldingsService} from '@eg/staff/share/holdings/holdings.service';
@@ -961,5 +961,9 @@ export class LineitemListComponent implements OnInit {
             Boolean(this.poId)
         );
     }
+
+    lineitemDisposition(li: IdlObject): LINEITEM_DISPOSITION {
+        return this.liService.lineitemDisposition(li);
+    }
 }
 
index 7c73ad5..7bc5b94 100644 (file)
@@ -9,6 +9,10 @@ import {ComboboxEntry} from '@eg/share/combobox/combobox.component';
 import {ItemLocationService} from '@eg/share/item-location-select/item-location-select.service';
 import {saveAs} from 'file-saver';
 
+const LINEITEM_DISPOSITIONS:
+    'new' | 'selector-ready' | 'order-ready' | 'pending-order' | 'on-order' | 'received' | 'delayed' = null;
+export type LINEITEM_DISPOSITION = typeof LINEITEM_DISPOSITIONS;
+
 const COPY_ORDER_DISPOSITIONS:
     'canceled' | 'delayed' | 'received' | 'on-order' | 'pre-order' = null;
 export type COPY_ORDER_DISPOSITION = typeof COPY_ORDER_DISPOSITIONS;
@@ -404,6 +408,15 @@ export class LineitemService {
         } else { return 'pre-order'; }
     }
 
+    // state/disposition of a single lineitem
+    lineitemDisposition(lineitem: IdlObject): LINEITEM_DISPOSITION {
+        if (lineitem.cancel_reason() && lineitem.cancel_reason().keep_debits() === 't') {
+            return 'delayed';
+        } else {
+            return lineitem.state();
+        }
+    }
+
     // convenience function for sorting values
     nullableCompare(a_val: any, b_val: any): number {
         return   a_val === b_val ?  0 :