]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/eg2/src/app/staff/acq/po/create.component.ts
LP1929741 ACQ Selection List & PO Angluar Port
[Evergreen.git] / Open-ILS / src / eg2 / src / app / staff / acq / po / create.component.ts
1 import {Component, Input, OnInit, ViewChild} from '@angular/core';
2 import {Router, ActivatedRoute, ParamMap} from '@angular/router';
3 import {of, Observable} from 'rxjs';
4 import {tap, take, map} from 'rxjs/operators';
5 import {IdlObject, IdlService} from '@eg/core/idl.service';
6 import {NetService} from '@eg/core/net.service';
7 import {AuthService} from '@eg/core/auth.service';
8 import {OrgService} from '@eg/core/org.service';
9 import {PcrudService} from '@eg/core/pcrud.service';
10 import {ServerStoreService} from '@eg/core/server-store.service';
11 import {ComboboxEntry, ComboboxComponent} from '@eg/share/combobox/combobox.component';
12 import {ProgressDialogComponent} from '@eg/share/dialog/progress.component';
13 import {EventService, EgEvent} from '@eg/core/event.service';
14 import {ConfirmDialogComponent} from '@eg/share/dialog/confirm.component';
15 import {PoService} from './po.service';
16 import {LineitemService} from '../lineitem/lineitem.service';
17 import {CancelDialogComponent} from '../lineitem/cancel-dialog.component';
18
19
20 @Component({
21   templateUrl: 'create.component.html',
22   selector: 'eg-acq-po-create'
23 })
24 export class PoCreateComponent implements OnInit {
25
26     initDone = false;
27     lineitems: number[] = [];
28     poName: string;
29     orderAgency: number;
30     provider: ComboboxEntry;
31     prepaymentRequired = false;
32     createAssets = false;
33
34     constructor(
35         private router: Router,
36         private route: ActivatedRoute,
37         private evt: EventService,
38         private idl: IdlService,
39         private net: NetService,
40         private org: OrgService,
41         private pcrud: PcrudService,
42         private auth: AuthService,
43         private store: ServerStoreService,
44         private liService: LineitemService,
45         private poService: PoService
46     ) {}
47
48     ngOnInit() {
49         this.route.queryParamMap.subscribe((params: ParamMap) => {
50             this.lineitems = params.getAll('li').map(id => Number(id));
51         });
52
53         this.load().then(_ => this.initDone = true);
54     }
55
56     load(): Promise<any> {
57         return Promise.resolve();
58     }
59
60     orgChange(org: IdlObject) {
61         this.orderAgency = org ? org.id() : null;
62     }
63
64     canCreate(): boolean {
65         return (Boolean(this.orderAgency) && Boolean(this.provider));
66     }
67
68     create() {
69
70         const po = this.idl.create('acqpo');
71         po.ordering_agency(this.orderAgency);
72         po.provider(this.provider.id);
73         po.name(this.poName || null);
74         po.prepayment_required(this.prepaymentRequired ? 't' : 'f');
75
76         const args: any = {};
77         if (this.lineitems.length > 0) {
78             args.lineitems = this.lineitems;
79         }
80
81         if (this.createAssets) {
82             // This version simply creates all records sans Vandelay merging, etc.
83             // TODO: go to asset creator.
84             args.vandelay = {
85                 import_no_match: true,
86                 queue_name: `ACQ ${new Date().toISOString()}`
87             };
88         }
89
90         this.net.request('open-ils.acq',
91             'open-ils.acq.purchase_order.create',
92             this.auth.token(), po, args
93         ).toPromise().then(resp => {
94             if (resp && resp.purchase_order) {
95                 this.router.navigate(
96                     ['/staff/acq/po/' + resp.purchase_order.id()]);
97             }
98         });
99     }
100 }
101
102