1 <eg-staff-banner bannerText="Receive Shipment" i18n-bannerText>
6 <div class="input-group">
7 <span class="input-group-text" i18n>Container Barcode:</span>
9 <input type='text' id='barcode-search-input' class="form-control"
10 (keyup.enter)="findContainer()" placeholder="Barcode..."
11 i18n-placeholder [(ngModel)]="barcode"/>
12 <div class="input-group-text">
13 <button class="btn p-0"
14 (click)="findContainer()" i18n>Submit</button>
16 <div class="form-check form-check-inline ms-2">
17 <input class="form-check-input" type="checkbox"
18 id="receive-on-scan" [(ngModel)]="receiveOnScan"/>
19 <label class="form-label form-check-label" for="receive-on-scan">Receive on Scan</label>
26 <hr class="mt-2 mb-2"/>
29 <!-- TODO Unlikely, but technically possible for multiple containers
30 across different vendors to match a container code.
31 <div *ngFor="let container of containers">
36 <div *ngIf="notFound" class="row m-2 mt-5">
37 <div class="col-lg-6 offset-lg-3">
38 <div class="alert alert-warning" i18n>
39 No container found with barcode {{barcode}}.
44 <div *ngIf="container" class="mt-3 mb-3 p-1 shadow-sm common-form striped-odd">
46 <div class="col-lg-2">
47 <label class="form-label" for="container-code" i18n>Container Code: </label>
49 <div class="col-lg-2">
50 <div id="container-code">{{container.container_code()}}</div>
52 <div class="col-lg-2">
53 <label class="form-label" for="container-provider" i18n>Provider: </label>
55 <div class="col-lg-2">
58 id="container-provider"
59 routerLink="/staff/acq/provider/{{container.provider().id()}}/details">
60 {{container.provider().name()}} ({{container.provider().code()}})
64 <div class="col-lg-2">
65 <label class="form-label" for="entry-count" i18n>Affected Lineitems: </label>
67 <div class="col-lg-2">
68 <div id="entry-count">{{entries.length}}</div>
72 <div class="col-lg-2">
73 <label class="form-label" for="container-lading-number" i18n>Lading #: </label>
75 <div class="col-lg-2">
76 <div id="container-lading-number">{{container.lading_number()}}</div>
78 <div class="col-lg-2">
79 <label class="form-label" for="container-recv-date" i18n>Receive Date: </label>
81 <div class="col-lg-2">
82 <div id="container-recv-date">{{container.recv_date() | date:'short'}}</div>
84 <div class="col-lg-2">
85 <label class="form-label" for="entry-count" i18n>Affected Items: </label>
87 <div class="col-lg-2">
88 <div id="entry-count">{{affectedItemsCount()}}</div>
92 <div class="col-lg-2">
93 <label class="form-label" for="container-note" i18n>Notes: </label>
95 <div class="col-lg-4">
96 <div class="ms-1">{{container.note()}}</div>
102 <hr class="mt-2 mb-2"/>
105 <ng-template #titleTmpl let-row="row">
107 fragment="{{row.lineitem.id()}}"
108 routerLink="/staff/acq/po/{{row.lineitem.purchase_order().id()}}">
112 <ng-template #liIdTmpl let-row="row">
114 fragment="{{row.lineitem.id()}}"
115 routerLink="/staff/acq/po/{{row.lineitem.purchase_order().id()}}/lineitem/{{row.lineitem.id()}}/items">
116 {{row.lineitem.id()}}
119 <ng-template #poNameTmpl let-row="row">
121 routerLink="/staff/acq/po/{{row.lineitem.purchase_order().id()}}">
122 {{row.lineitem.purchase_order().name()}}
126 <div class="row" *ngIf="receiving">
127 <div class="col-lg-10 offset-lg-1">
129 <div class="card-header" i18n>Receiving Items <span *ngIf="dryRun"> (Dry Run)</span></div>
130 <div class="card-body">
131 <ul class="list-group list-group-flush">
132 <li class="list-group-item">
133 <eg-progress-inline min="0" max="0" #progress></eg-progress-inline>
136 <li class="list-group-item d-flex fw-bold">
137 <div class="flex-3" i18n>Title</div>
138 <div class="flex-1" i18n>Lineitem</div>
139 <div class="flex-1" i18n>Notified</div>
140 <div class="flex-1" i18n>Received</div>
143 <li class="list-group-item d-flex" *ngFor="let li of receiveResponse.lineitems">
145 <a routerLink="/staff/catalog/record/{{liCache[li.id].lineitem.eg_bib_id()}}"
146 target="_blank">{{liCache[li.id].title}}</a>
149 <a routerLink="/staff/acq/po/{{li.po}}/lineitem/{{li.id}}/items"
150 target="_blank">#{{li.id}}</a>
152 <div class="flex-1">{{liWantedCount(li.id)}}</div>
155 'text-success': liWantedCount(li.id) === li.lids.length,
156 'text-danger': liWantedCount(li.id) > li.lids.length
158 {{li.lids.length}}</div>
162 <div class="card-footer d-flex">
163 <div class="flex-1"></div>
164 <button (click)="clearReceiving()" class="btn btn-outline-dark" i18n>
172 <div *ngIf="loadingContainer" class="row">
173 <div class="col-lg-6 offset-lg-3">
174 <eg-progress-inline></eg-progress-inline>
178 <eg-grid *ngIf="container && !receiving" #grid [dataSource]="gridDataSource"
179 [disablePaging]="true" (onRowActivate)="openLi($event)">
181 <eg-grid-toolbar-button i18n-label label="Receive All Items"
182 [disabled]="loadingContainer" (onClick)="receiveAllItems()">
183 </eg-grid-toolbar-button>
185 <eg-grid-toolbar-checkbox i18n-label label="Dry Run"
186 [initialValue]="dryRun"
187 (onChange)="dryRun = !dryRun"></eg-grid-toolbar-checkbox>
189 <eg-grid-column i18n-label label="Entry ID" path="entry.id"
190 [index]="true" [hidden]="true"></eg-grid-column>
191 <eg-grid-column i18n-label label="Lineitem ID" name="lineitem_id"
192 [cellTemplate]="liIdTmpl"></eg-grid-column>
193 <eg-grid-column i18n-label label="Purchase Order" name="po_name"
194 [cellTemplate]="poNameTmpl"></eg-grid-column>
195 <eg-grid-column i18n-label label="Title" name="title" flex="4"
196 [cellTemplate]="titleTmpl"></eg-grid-column>
197 <eg-grid-column i18n-label label="ISBN" path="isbn"></eg-grid-column>
198 <eg-grid-column i18n-label label="ISSN" path="issn" [hidden]="true"></eg-grid-column>
199 <eg-grid-column i18n-label label="UPC" path="upc" [hidden]="true"></eg-grid-column>
200 <eg-grid-column i18n-label label="In Shipment" path="entry.item_count"></eg-grid-column>
201 <eg-grid-column i18n-label label="Ordered" path="lineitem.order_summary.item_count"></eg-grid-column>
202 <eg-grid-column i18n-label label="Pending Receive" path="recievable_count"></eg-grid-column>
203 <eg-grid-column i18n-label label="Received" path="lineitem.order_summary.recv_count"></eg-grid-column>
204 <eg-grid-column i18n-label label="Invoiced" path="lineitem.order_summary.invoice_count"></eg-grid-column>
205 <eg-grid-column i18n-label label="Canceled" path="lineitem.order_summary.cancel_count"></eg-grid-column>
206 <eg-grid-column i18n-label label="Delayed" path="lineitem.order_summary.delay_count"></eg-grid-column>