<eg-staff-banner bannerText="Create Purchase Order" i18n-bannerText>
</eg-staff-banner>
-<div class="col-lg-4 offset-lg-4">
- <div *ngIf="lineitems.length">
+<div class="col-lg-4 offset-lg-4" [hidden]="!initDone">
+ <div *ngIf="lineitems.length || origLiCount">
<span i18n>Creating for {{lineitems.length}} line items.</span>
+ <span i18n *ngIf="lineitems.length !== origLiCount" class="alert-warning">
+ (There were {{origLiCount}} selected, but not all were in a valid state
+ to be added to a purchase order.)
+ </span>
<hr class="p-1" />
</div>
<div class="form-group">
import {LineitemService} from '../lineitem/lineitem.service';
import {CancelDialogComponent} from '../lineitem/cancel-dialog.component';
+const VALID_PRE_PO_LI_STATES = [
+ 'new',
+ 'selector-ready',
+ 'order-ready',
+ 'approved'
+];
@Component({
templateUrl: 'create.component.html',
initDone = false;
lineitems: number[] = [];
+ origLiCount = 0;
poName: string;
orderAgency: number;
provider: ComboboxEntry;
this.route.queryParamMap.subscribe((params: ParamMap) => {
this.lineitems = params.getAll('li').map(id => Number(id));
+ this.origLiCount = this.lineitems.length;
});
- this.load().then(_ => this.initDone = true);
+ this.load();
}
- load(): Promise<any> {
- return Promise.resolve();
+ load() {
+ if (this.origLiCount > 0) {
+ const fleshed_lis: IdlObject[] = [];
+ this.liService.getFleshedLineitems(this.lineitems, { fromCache: false }).subscribe(
+ liStruct => {
+ fleshed_lis.push(liStruct.lineitem);
+ },
+ err => { },
+ () => {
+ this.lineitems = fleshed_lis.filter(li => VALID_PRE_PO_LI_STATES.includes(li.state()))
+ .map(li => li.id());
+ this.initDone = true;
+ }
+ );
+ } else {
+ this.initDone = true;
+ }
}
orgChange(org: IdlObject) {