--- /dev/null
+
+<h3 class="m-2" i18n>Load Bibs and Items</h3>
+
+<div class="w-100 m-2">
+ <eg-acq-upload mode="getImportParams" [customAction]="createAssets"></eg-acq-upload>
+</div>
+
+<eg-progress-inline *ngIf="creatingAssets"></eg-progress-inline>
+
+<div class="w-100 m-2" *ngIf="creationRequested">
+ <h4 i18n>Bib and Item Creation Status</h4>
+ <div class="row">
+ <div class="col-2" i18n>Line Items Processed</div>
+ <div class="col-1">{{creationStatus.liProcessed}}</div>
+ </div>
+ <div class="row">
+ <div class="col-2" i18n>Vandelay Records Processed</div>
+ <div class="col-1">{{creationStatus.vqbrProcessed}}</div>
+ </div>
+ <div class="row">
+ <div class="col-2" i18n>Bib Records Merged/Imported</div>
+ <div class="col-1">{{creationStatus.bibsProcessed}}</div>
+ </div>
+ <div class="row">
+ <div class="col-2" i18n>Acquisitions Items Processed</div>
+ <div class="col-1">{{creationStatus.lidProcessed}}</div>
+ </div>
+ <div class="row">
+ <div class="col-2" i18n>Debits Encumbered</div>
+ <div class="col-1">{{creationStatus.debitsProcessed}}</div>
+ </div>
+ <div class="row">
+ <div class="col-2" i18n>Real Items Processed</div>
+ <div class="col-1">{{creationStatus.copiesProcessed}}</div>
+ </div>
+
+ <h4 i18n class="mt-2" *ngIf="creationErrors.length">Errors encountered</h4>
+ <div class="row" *ngFor="let evt of creationErrors">
+ <div class="col-2 alert alert-warning">{{evt.textcode}}</div>
+ <div class="col-5 alert alert-warning">{{evt.desc}}</div>
+ </div>
+</div>
--- /dev/null
+import {Component, OnInit, Input, Output} from '@angular/core';
+import {ActivatedRoute, Router, ParamMap} from '@angular/router';
+import {IdlService, IdlObject} from '@eg/core/idl.service';
+import {NetService} from '@eg/core/net.service';
+import {EventService, EgEvent} from '@eg/core/event.service';
+import {PcrudService} from '@eg/core/pcrud.service';
+import {AuthService} from '@eg/core/auth.service';
+import {LineitemService} from './lineitem.service';
+import {UploadComponent} from '../picklist/upload.component';
+
+
+interface AssetCreationResponse {
+ liProcessed: number;
+ vqbrProcessed: number;
+ bibsProcessed: number;
+ lidProcessed: number;
+ debitsProcessed: number;
+ copiesProcessed: number;
+}
+
+@Component({
+ templateUrl: 'create-assets.component.html'
+})
+export class CreateAssetsComponent implements OnInit {
+
+ targetPo: number;
+ creationRequested = false;
+ creatingAssets = false;
+
+ creationStatus: AssetCreationResponse = {
+ liProcessed: 0,
+ vqbrProcessed: 0,
+ bibsProcessed: 0,
+ lidProcessed: 0,
+ debitsProcessed: 0,
+ copiesProcessed: 0
+ };
+ creationErrors: EgEvent[] = [];
+
+ constructor(
+ private router: Router,
+ private route: ActivatedRoute,
+ private idl: IdlService,
+ private auth: AuthService,
+ private net: NetService,
+ private evt: EventService,
+ private pcrud: PcrudService,
+ private liService: LineitemService
+ ) { }
+
+ ngOnInit() {
+ this.route.parent.paramMap.subscribe((params: ParamMap) => {
+ this.targetPo = +params.get('poId');
+ });
+ }
+
+ // using arrow notion here because we want 'this' to
+ // refer to CreateAssetsComponent, not the component
+ // that createAssets is passed to
+ createAssets = (args: Object) => {
+ this.creatingAssets = true;
+ this.creationRequested = true;
+
+ const assetArgs = {
+ vandelay: args['vandelay']
+ };
+
+ this.net.request(
+ 'open-ils.acq',
+ 'open-ils.acq.purchase_order.assets.create',
+ this.auth.token(),
+ this.targetPo,
+ assetArgs
+ ).subscribe(
+ resp => {
+ const evt = this.evt.parse(resp);
+ if (evt) {
+ this.creationErrors.push(evt);
+ } else {
+ this.creationStatus['liProcessed'] = resp.li;
+ this.creationStatus['vqbrProcessed'] = resp.vqbr;
+ this.creationStatus['bibsProcessed'] = resp.bibs;
+ this.creationStatus['lidProcessed'] = resp.lid;
+ this.creationStatus['debitsProcessed'] = resp.debits_accrued;
+ this.creationStatus['copiesProcessed'] = resp.copies;
+ }
+ },
+ err => {},
+ () => {
+ this.creatingAssets = false;
+ }
+ );
+ }
+}
+
[disabled]="!picklistId" i18n>Create Purchase Order from All Lineitems</button>
<div class="dropdown-divider"></div>
<h6 class="dropdown-header" i18n>Purchase Order Actions</h6>
+ <a ngbDropdownItem routerLink="../create-assets"
+ [disabled]="!isPendingPo()"
+ queryParamsHandling="merge" i18n>Load Bibs and Items</a>
<button ngbDropdownItem (click)="receiveSelected()"
[disabled]="!poId" i18n>Mark Selected Lineitems as Received</button>
<button ngbDropdownItem (click)="unReceiveSelected()"
}
}
+ isPendingPo(): boolean {
+ if (this.picklistId || !this.po()) {
+ return false;
+ } else {
+ return this.po().order_date() ? false : true;
+ }
+ }
+
// For PO's, lineitems can only be deleted if they are pending order.
canDeleteLis(): boolean {
const li = this.pageOfLineitems[0];
import {LineitemCopyAttrsComponent} from './copy-attrs.component';
import {LineitemHistoryComponent} from './history.component';
import {BriefRecordComponent} from './brief-record.component';
+import {CreateAssetsComponent} from './create-assets.component';
import {CancelDialogComponent} from './cancel-dialog.component';
import {DeleteLineitemsDialogComponent} from './delete-lineitems-dialog.component';
import {AddCopiesDialogComponent} from './add-copies-dialog.component';
import {ClaimPolicyDialogComponent} from './claim-policy-dialog.component';
import {MarcEditModule} from '@eg/staff/share/marc-edit/marc-edit.module';
+import {UploadComponent} from '../picklist/upload.component';
@NgModule({
declarations: [
AddCopiesDialogComponent,
ClaimPolicyDialogComponent,
BriefRecordComponent,
- LineitemWorksheetComponent
+ CreateAssetsComponent,
+ LineitemWorksheetComponent,
+ UploadComponent
],
exports: [
LineitemListComponent,
imports: [
StaffCommonModule,
ItemLocationSelectModule,
- MarcEditModule
+ MarcEditModule,
+ HttpClientModule
],
providers: [
LineitemService,
import {PoNotesComponent} from './notes.component';
import {PoCreateComponent} from './create.component';
import {PoChargesComponent} from './charges.component';
-
+import {PicklistUploadService} from '../picklist/upload.service';
@NgModule({
declarations: [
PoRoutingModule
],
providers: [
- PoService
+ PoService,
+ PicklistUploadService
]
})
import {LineitemDetailComponent} from '../lineitem/detail.component';
import {LineitemCopiesComponent} from '../lineitem/copies.component';
import {BriefRecordComponent} from '../lineitem/brief-record.component';
+import {CreateAssetsComponent} from '../lineitem/create-assets.component';
import {LineitemHistoryComponent} from '../lineitem/history.component';
import {LineitemWorksheetComponent} from '../lineitem/worksheet.component';
import {PoHistoryComponent} from './history.component';
path: 'brief-record',
component: BriefRecordComponent
}, {
+ path: 'create-assets',
+ component: CreateAssetsComponent
+ }, {
path: 'lineitem/:lineitemId/detail',
component: LineitemDetailComponent
}, {