@vendasta/store
Version:
Components and data for Store
64 lines • 10.1 kB
JavaScript
import { Injectable } from '@angular/core';
import { RevenueComponent, RevenuePeriod } from '@vendasta/sales-orders';
import * as i0 from "@angular/core";
export class OrderSummaryService {
static getPriceSummary(items) {
if (!items) {
return { items: [], includesUndefinedPricing: false };
}
let includesUndefinedPricing = false;
const summaryItems = items.reduce((currentArray, item) => {
if (!(item.lineItem.currentRevenue?.revenueComponents?.length > 0)) {
includesUndefinedPricing = true;
return currentArray;
}
item.lineItem.currentRevenue.revenueComponents.map((revenueComponent) => {
if (!revenueComponent || revenueComponent.value < 0) {
includesUndefinedPricing = true;
return;
}
const period = revenueComponent.period || RevenuePeriod.ONETIME;
const isStartingRevenue = revenueComponent.isStartingRevenue;
const existingCurIndex = currentArray.findIndex((si) => si.currencyCode === item.lineItem.currencyCode);
let summaryItem = {
currencyCode: item.lineItem.currencyCode,
currency: item.lineItem.currency,
revenueComponents: [],
};
if (existingCurIndex > -1) {
summaryItem = currentArray[existingCurIndex];
}
const existingFreqIndex = summaryItem.revenueComponents.findIndex((rc) => rc.period === period);
const quantifiedPrice = (revenueComponent.value || 0) * item.lineItem.quantity;
if (existingFreqIndex > -1) {
summaryItem.revenueComponents[existingFreqIndex] = new RevenueComponent({
value: summaryItem.revenueComponents[existingFreqIndex].value + quantifiedPrice,
period: period,
isStartingRevenue: summaryItem.revenueComponents[existingFreqIndex].isStartingRevenue || isStartingRevenue,
});
}
else {
summaryItem.revenueComponents.push(new RevenueComponent({
value: quantifiedPrice,
period: period,
isStartingRevenue: isStartingRevenue,
}));
}
if (existingCurIndex > -1) {
currentArray[existingCurIndex] = summaryItem;
}
else {
currentArray.push(summaryItem);
}
});
return currentArray;
}, []);
return { items: summaryItems, includesUndefinedPricing: includesUndefinedPricing };
}
}
OrderSummaryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: OrderSummaryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
OrderSummaryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: OrderSummaryService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: OrderSummaryService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItc3VtbWFyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zdG9yZS9zcmMvbGliL29yZGVyLXN1bW1hcnkvb3JkZXItc3VtbWFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFZLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUluRixNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBbUI7UUFDeEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDckMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN2RCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xFLHdCQUF3QixHQUFHLElBQUksQ0FBQztnQkFDaEMsT0FBTyxZQUFZLENBQUM7YUFDckI7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO2dCQUN0RSxJQUFJLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDbkQsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO29CQUNoQyxPQUFPO2lCQUNSO2dCQUVELE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDO2dCQUNoRSxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO2dCQUU3RCxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDeEcsSUFBSSxXQUFXLEdBQWdCO29CQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZO29CQUN4QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO29CQUNoQyxpQkFBaUIsRUFBRSxFQUFFO2lCQUN0QixDQUFDO2dCQUNGLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pCLFdBQVcsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDOUM7Z0JBRUQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDO2dCQUNoRyxNQUFNLGVBQWUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDL0UsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDMUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQzt3QkFDdEUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssR0FBRyxlQUFlO3dCQUMvRSxNQUFNLEVBQUUsTUFBTTt3QkFDZCxpQkFBaUIsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUI7cUJBQzNHLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUNoQyxJQUFJLGdCQUFnQixDQUFDO3dCQUNuQixLQUFLLEVBQUUsZUFBZTt3QkFDdEIsTUFBTSxFQUFFLE1BQU07d0JBQ2QsaUJBQWlCLEVBQUUsaUJBQWlCO3FCQUNyQyxDQUFDLENBQ0gsQ0FBQztpQkFDSDtnQkFDRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUN6QixZQUFZLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxXQUFXLENBQUM7aUJBQzlDO3FCQUFNO29CQUNMLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ2hDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDUCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0lBQ3JGLENBQUM7O2dIQXpEVSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3VycmVuY3ksIFJldmVudWVDb21wb25lbnQsIFJldmVudWVQZXJpb2QgfSBmcm9tICdAdmVuZGFzdGEvc2FsZXMtb3JkZXJzJztcbmltcG9ydCB7IFN1bW1hcnlJdGVtLCBVSUxpbmVJdGVtIH0gZnJvbSAnLi4vb3JkZXItZm9ybS9vcmRlci1pdGVtLWxpc3QvaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9yZGVyU3VtbWFyeVNlcnZpY2Uge1xuICBzdGF0aWMgZ2V0UHJpY2VTdW1tYXJ5KGl0ZW1zOiBVSUxpbmVJdGVtW10pOiB7IGl0ZW1zOiBTdW1tYXJ5SXRlbVtdOyBpbmNsdWRlc1VuZGVmaW5lZFByaWNpbmc6IGJvb2xlYW4gfSB7XG4gICAgaWYgKCFpdGVtcykge1xuICAgICAgcmV0dXJuIHsgaXRlbXM6IFtdLCBpbmNsdWRlc1VuZGVmaW5lZFByaWNpbmc6IGZhbHNlIH07XG4gICAgfVxuICAgIGxldCBpbmNsdWRlc1VuZGVmaW5lZFByaWNpbmcgPSBmYWxzZTtcbiAgICBjb25zdCBzdW1tYXJ5SXRlbXMgPSBpdGVtcy5yZWR1Y2UoKGN1cnJlbnRBcnJheSwgaXRlbSkgPT4ge1xuICAgICAgaWYgKCEoaXRlbS5saW5lSXRlbS5jdXJyZW50UmV2ZW51ZT8ucmV2ZW51ZUNvbXBvbmVudHM/Lmxlbmd0aCA+IDApKSB7XG4gICAgICAgIGluY2x1ZGVzVW5kZWZpbmVkUHJpY2luZyA9IHRydWU7XG4gICAgICAgIHJldHVybiBjdXJyZW50QXJyYXk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0ubGluZUl0ZW0uY3VycmVudFJldmVudWUucmV2ZW51ZUNvbXBvbmVudHMubWFwKChyZXZlbnVlQ29tcG9uZW50KSA9PiB7XG4gICAgICAgIGlmICghcmV2ZW51ZUNvbXBvbmVudCB8fCByZXZlbnVlQ29tcG9uZW50LnZhbHVlIDwgMCkge1xuICAgICAgICAgIGluY2x1ZGVzVW5kZWZpbmVkUHJpY2luZyA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGVyaW9kID0gcmV2ZW51ZUNvbXBvbmVudC5wZXJpb2QgfHwgUmV2ZW51ZVBlcmlvZC5PTkVUSU1FO1xuICAgICAgICBjb25zdCBpc1N0YXJ0aW5nUmV2ZW51ZSA9IHJldmVudWVDb21wb25lbnQuaXNTdGFydGluZ1JldmVudWU7XG5cbiAgICAgICAgY29uc3QgZXhpc3RpbmdDdXJJbmRleCA9IGN1cnJlbnRBcnJheS5maW5kSW5kZXgoKHNpKSA9PiBzaS5jdXJyZW5jeUNvZGUgPT09IGl0ZW0ubGluZUl0ZW0uY3VycmVuY3lDb2RlKTtcbiAgICAgICAgbGV0IHN1bW1hcnlJdGVtOiBTdW1tYXJ5SXRlbSA9IHtcbiAgICAgICAgICBjdXJyZW5jeUNvZGU6IGl0ZW0ubGluZUl0ZW0uY3VycmVuY3lDb2RlLFxuICAgICAgICAgIGN1cnJlbmN5OiBpdGVtLmxpbmVJdGVtLmN1cnJlbmN5LFxuICAgICAgICAgIHJldmVudWVDb21wb25lbnRzOiBbXSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQ3VySW5kZXggPiAtMSkge1xuICAgICAgICAgIHN1bW1hcnlJdGVtID0gY3VycmVudEFycmF5W2V4aXN0aW5nQ3VySW5kZXhdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXhpc3RpbmdGcmVxSW5kZXggPSBzdW1tYXJ5SXRlbS5yZXZlbnVlQ29tcG9uZW50cy5maW5kSW5kZXgoKHJjKSA9PiByYy5wZXJpb2QgPT09IHBlcmlvZCk7XG4gICAgICAgIGNvbnN0IHF1YW50aWZpZWRQcmljZSA9IChyZXZlbnVlQ29tcG9uZW50LnZhbHVlIHx8IDApICogaXRlbS5saW5lSXRlbS5xdWFudGl0eTtcbiAgICAgICAgaWYgKGV4aXN0aW5nRnJlcUluZGV4ID4gLTEpIHtcbiAgICAgICAgICBzdW1tYXJ5SXRlbS5yZXZlbnVlQ29tcG9uZW50c1tleGlzdGluZ0ZyZXFJbmRleF0gPSBuZXcgUmV2ZW51ZUNvbXBvbmVudCh7XG4gICAgICAgICAgICB2YWx1ZTogc3VtbWFyeUl0ZW0ucmV2ZW51ZUNvbXBvbmVudHNbZXhpc3RpbmdGcmVxSW5kZXhdLnZhbHVlICsgcXVhbnRpZmllZFByaWNlLFxuICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgICBpc1N0YXJ0aW5nUmV2ZW51ZTogc3VtbWFyeUl0ZW0ucmV2ZW51ZUNvbXBvbmVudHNbZXhpc3RpbmdGcmVxSW5kZXhdLmlzU3RhcnRpbmdSZXZlbnVlIHx8IGlzU3RhcnRpbmdSZXZlbnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1bW1hcnlJdGVtLnJldmVudWVDb21wb25lbnRzLnB1c2goXG4gICAgICAgICAgICBuZXcgUmV2ZW51ZUNvbXBvbmVudCh7XG4gICAgICAgICAgICAgIHZhbHVlOiBxdWFudGlmaWVkUHJpY2UsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgICBpc1N0YXJ0aW5nUmV2ZW51ZTogaXNTdGFydGluZ1JldmVudWUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleGlzdGluZ0N1ckluZGV4ID4gLTEpIHtcbiAgICAgICAgICBjdXJyZW50QXJyYXlbZXhpc3RpbmdDdXJJbmRleF0gPSBzdW1tYXJ5SXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50QXJyYXkucHVzaChzdW1tYXJ5SXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGN1cnJlbnRBcnJheTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIHsgaXRlbXM6IHN1bW1hcnlJdGVtcywgaW5jbHVkZXNVbmRlZmluZWRQcmljaW5nOiBpbmNsdWRlc1VuZGVmaW5lZFByaWNpbmcgfTtcbiAgfVxufVxuIl19