@spartacus/order
Version:
Order feature library for Spartacus
92 lines • 14.2 kB
JavaScript
import { formatCurrency, getCurrencySymbol } from '@angular/common';
import { Injectable } from '@angular/core';
import { FormControl, FormGroup, Validators, } from '@angular/forms';
import { map, switchMap, tap } from 'rxjs/operators';
import { AmendOrderType } from './amend-order.model';
import * as i0 from "@angular/core";
import * as i1 from "../order-details/order-details.service";
function ValidateQuantityToCancel(control) {
if (!control.value) {
return null;
}
const quantity = Object.values(control.value).reduce((acc, val) => acc + val, 0);
return quantity > 0 ? null : { cxNoSelectedItemToCancel: true };
}
export class OrderAmendService {
constructor(orderDetailsService) {
this.orderDetailsService = orderDetailsService;
}
/**
* Returns entries with an amended quantity.
*/
getAmendedEntries() {
return this.getForm().pipe(switchMap((form) => {
return this.getEntries().pipe(map((entries) => entries.filter((entry) => this.getFormControl(form, entry).value > 0)));
}));
}
getOrder() {
return this.orderDetailsService.getOrderDetails();
}
/**
* returns the form with form data at runtime
*/
getForm() {
return this.getOrder().pipe(tap((order) => {
var _a;
if (!this.form || ((_a = this.form.get('orderCode')) === null || _a === void 0 ? void 0 : _a.value) !== order.code) {
this.buildForm(order);
}
}), map(() => this.form));
}
buildForm(order) {
this.form = new FormGroup({});
this.form.addControl('orderCode', new FormControl(order.code));
const entryGroup = new FormGroup({}, { validators: [ValidateQuantityToCancel] });
this.form.addControl('entries', entryGroup);
(order.entries || []).forEach((entry) => {
var _a, _b;
const key = (_b = (_a = entry === null || entry === void 0 ? void 0 : entry.entryNumber) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '';
entryGroup.addControl(key, new FormControl(0, {
validators: [
Validators.min(0),
Validators.max(this.getMaxAmendQuantity(entry)),
],
}));
});
}
getFormControl(form, entry) {
var _a, _b, _c;
return ((_a = form.get('entries')) === null || _a === void 0 ? void 0 : _a.get((_c = (_b = entry.entryNumber) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : ''));
}
/**
* As discussed, this calculation is moved to SPA side.
* The calculation and validation should be in backend facade layer.
*/
getAmendedPrice(entry) {
var _a, _b, _c;
const amendedQuantity = this.getFormControl(this.form, entry).value;
const amendedPrice = Object.assign({}, entry.basePrice);
amendedPrice.value =
Math.round(((_b = (_a = entry.basePrice) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 0) * amendedQuantity * 100) / 100;
amendedPrice.formattedValue = formatCurrency(amendedPrice.value,
// TODO: user current language
'en', getCurrencySymbol((_c = amendedPrice.currencyIso) !== null && _c !== void 0 ? _c : '', 'narrow'), amendedPrice.currencyIso);
return amendedPrice;
}
getMaxAmendQuantity(entry) {
return ((this.isCancellation()
? entry.cancellableQuantity
: entry.returnableQuantity) ||
entry.quantity ||
0);
}
isCancellation() {
return this.amendType === AmendOrderType.CANCEL;
}
}
OrderAmendService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OrderAmendService, deps: [{ token: i1.OrderDetailsService }], target: i0.ɵɵFactoryTarget.Injectable });
OrderAmendService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OrderAmendService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OrderAmendService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.OrderDetailsService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1lbmQtb3JkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2ZlYXR1cmUtbGlicy9vcmRlci9jb21wb25lbnRzL2FtZW5kLW9yZGVyL2FtZW5kLW9yZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFckQsU0FBUyx3QkFBd0IsQ0FBQyxPQUF3QjtJQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtRQUNsQixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBZSxDQUFDLENBQUMsTUFBTSxDQUM1RCxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQ3ZDLENBQUMsQ0FDRixDQUFDO0lBQ0YsT0FBTyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDbEUsQ0FBQztBQUdELE1BQU0sT0FBZ0IsaUJBQWlCO0lBSXJDLFlBQXNCLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQUcsQ0FBQztJQU9sRTs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9B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TSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsWUFBWSxDQUFDLEtBQUs7WUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQUEsTUFBQSxLQUFLLENBQUMsU0FBUywwQ0FBRSxLQUFLLG1DQUFJLENBQUMsQ0FBQyxHQUFHLGVBQWUsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFFMUUsWUFBWSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQzFDLFlBQVksQ0FBQyxLQUFLO1FBQ2xCLDhCQUE4QjtRQUM5QixJQUFJLEVBQ0osaUJBQWlCLENBQUMsTUFBQSxZQUFZLENBQUMsV0FBVyxtQ0FBSSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQzNELFlBQVksQ0FBQyxXQUFXLENBQ3pCLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBaUI7UUFDbkMsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQjtZQUMzQixDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQzdCLEtBQUssQ0FBQyxRQUFRO1lBQ2QsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ2xELENBQUM7OzhHQWxIbUIsaUJBQWlCO2tIQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdEN1cnJlbmN5LCBnZXRDdXJyZW5jeVN5bWJvbCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9yZGVyLCBPcmRlckVudHJ5LCBQcmljZSB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT3JkZXJEZXRhaWxzU2VydmljZSB9IGZyb20gJy4uL29yZGVyLWRldGFpbHMvb3JkZXItZGV0YWlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEFtZW5kT3JkZXJUeXBlIH0gZnJvbSAnLi9hbWVuZC1vcmRlci5tb2RlbCc7XG5cbmZ1bmN0aW9uIFZhbGlkYXRlUXVhbnRpdHlUb0NhbmNlbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcXVhbnRpdHkgPSBPYmplY3QudmFsdWVzKGNvbnRyb2wudmFsdWUgYXMgbnVtYmVyKS5yZWR1Y2UoXG4gICAgKGFjYzogbnVtYmVyLCB2YWw6IG51bWJlcikgPT4gYWNjICsgdmFsLFxuICAgIDBcbiAgKTtcbiAgcmV0dXJuIHF1YW50aXR5ID4gMCA/IG51bGwgOiB7IGN4Tm9TZWxlY3RlZEl0ZW1Ub0NhbmNlbDogdHJ1ZSB9O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT3JkZXJBbWVuZFNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgYW1lbmRUeXBlOiBBbWVuZE9yZGVyVHlwZTtcbiAgcHJvdGVjdGVkIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3JkZXJEZXRhaWxzU2VydmljZTogT3JkZXJEZXRhaWxzU2VydmljZSkge31cblxuICAvKipcbiAgICogUmV0dXJucyBlbnRyaWVzIGZvciB0aGUgZ2l2ZW4gb3JkZXIuXG4gICAqL1xuICBhYnN0cmFjdCBnZXRFbnRyaWVzKCk6IE9ic2VydmFibGU8T3JkZXJFbnRyeVtdPjtcblxuICAvKipcbiAgICogUmV0dXJucyBlbnRyaWVzIHdpdGggYW4gYW1lbmRlZCBxdWFudGl0eS5cbiAgICovXG4gIGdldEFtZW5kZWRFbnRyaWVzKCk6IE9ic2VydmFibGU8T3JkZXJFbnRyeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGZvcm0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW50cmllcygpLnBpcGUoXG4gICAgICAgICAgbWFwKChlbnRyaWVzKSA9PlxuICAgICAgICAgICAgZW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgICAgIChlbnRyeSkgPT4gdGhpcy5nZXRGb3JtQ29udHJvbChmb3JtLCBlbnRyeSkudmFsdWUgPiAwXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdHMgdGhlIGFtZW5kZWQgb3JkZXIuXG4gICAqL1xuICBhYnN0cmFjdCBzYXZlKCk6IHZvaWQ7XG5cbiAgZ2V0T3JkZXIoKTogT2JzZXJ2YWJsZTxPcmRlcj4ge1xuICAgIHJldHVybiB0aGlzLm9yZGVyRGV0YWlsc1NlcnZpY2UuZ2V0T3JkZXJEZXRhaWxzKCk7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJucyB0aGUgZm9ybSB3aXRoIGZvcm0gZGF0YSBhdCBydW50aW1lXG4gICAqL1xuICBnZXRGb3JtKCk6IE9ic2VydmFibGU8Rm9ybUdyb3VwPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3JkZXIoKS5waXBlKFxuICAgICAgdGFwKChvcmRlcikgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybSB8fCB0aGlzLmZvcm0uZ2V0KCdvcmRlckNvZGUnKT8udmFsdWUgIT09IG9yZGVyLmNvZGUpIHtcbiAgICAgICAgICB0aGlzLmJ1aWxkRm9ybShvcmRlcik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm0ob3JkZXI6IE9yZGVyKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ29yZGVyQ29kZScsIG5ldyBGb3JtQ29udHJvbChvcmRlci5jb2RlKSk7XG5cbiAgICBjb25zdCBlbnRyeUdyb3VwID0gbmV3IEZvcm1Hcm91cChcbiAgICAgIHt9LFxuICAgICAgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdGVRdWFudGl0eVRvQ2FuY2VsXSB9XG4gICAgKTtcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgnZW50cmllcycsIGVudHJ5R3JvdXApO1xuXG4gICAgKG9yZGVyLmVudHJpZXMgfHwgW10pLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBlbnRyeT8uZW50cnlOdW1iZXI/LnRvU3RyaW5nKCkgPz8gJyc7XG4gICAgICBlbnRyeUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgIGtleSxcbiAgICAgICAgbmV3IEZvcm1Db250cm9sKDAsIHtcbiAgICAgICAgICB2YWxpZGF0b3JzOiBbXG4gICAgICAgICAgICBWYWxpZGF0b3JzLm1pbigwKSxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMuZ2V0TWF4QW1lbmRRdWFudGl0eShlbnRyeSkpLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZvcm1Db250cm9sKGZvcm06IEZvcm1Hcm91cCwgZW50cnk6IE9yZGVyRW50cnkpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIDxGb3JtQ29udHJvbD4oXG4gICAgICBmb3JtLmdldCgnZW50cmllcycpPy5nZXQoZW50cnkuZW50cnlOdW1iZXI/LnRvU3RyaW5nKCkgPz8gJycpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcyBkaXNjdXNzZWQsIHRoaXMgY2FsY3VsYXRpb24gaXMgbW92ZWQgdG8gU1BBIHNpZGUuXG4gICAqIFRoZSBjYWxjdWxhdGlvbiBhbmQgdmFsaWRhdGlvbiBzaG91bGQgYmUgaW4gYmFja2VuZCBmYWNhZGUgbGF5ZXIuXG4gICAqL1xuICBnZXRBbWVuZGVkUHJpY2UoZW50cnk6IE9yZGVyRW50cnkpOiBQcmljZSB7XG4gICAgY29uc3QgYW1lbmRlZFF1YW50aXR5ID0gdGhpcy5nZXRGb3JtQ29udHJvbCh0aGlzLmZvcm0sIGVudHJ5KS52YWx1ZTtcbiAgICBjb25zdCBhbWVuZGVkUHJpY2UgPSBPYmplY3QuYXNzaWduKHt9LCBlbnRyeS5iYXNlUHJpY2UpO1xuICAgIGFtZW5kZWRQcmljZS52YWx1ZSA9XG4gICAgICBNYXRoLnJvdW5kKChlbnRyeS5iYXNlUHJpY2U/LnZhbHVlID8/IDApICogYW1lbmRlZFF1YW50aXR5ICogMTAwKSAvIDEwMDtcblxuICAgIGFtZW5kZWRQcmljZS5mb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdEN1cnJlbmN5KFxuICAgICAgYW1lbmRlZFByaWNlLnZhbHVlLFxuICAgICAgLy8gVE9ETzogdXNlciBjdXJyZW50IGxhbmd1YWdlXG4gICAgICAnZW4nLFxuICAgICAgZ2V0Q3VycmVuY3lTeW1ib2woYW1lbmRlZFByaWNlLmN1cnJlbmN5SXNvID8/ICcnLCAnbmFycm93JyksXG4gICAgICBhbWVuZGVkUHJpY2UuY3VycmVuY3lJc29cbiAgICApO1xuXG4gICAgcmV0dXJuIGFtZW5kZWRQcmljZTtcbiAgfVxuXG4gIGdldE1heEFtZW5kUXVhbnRpdHkoZW50cnk6IE9yZGVyRW50cnkpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5pc0NhbmNlbGxhdGlvbigpXG4gICAgICAgID8gZW50cnkuY2FuY2VsbGFibGVRdWFudGl0eVxuICAgICAgICA6IGVudHJ5LnJldHVybmFibGVRdWFudGl0eSkgfHxcbiAgICAgIGVudHJ5LnF1YW50aXR5IHx8XG4gICAgICAwXG4gICAgKTtcbiAgfVxuXG4gIGlzQ2FuY2VsbGF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFtZW5kVHlwZSA9PT0gQW1lbmRPcmRlclR5cGUuQ0FOQ0VMO1xuICB9XG59XG4iXX0=