@pisell/pisellos 2.3.49 → 2.3.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/Discount/index.d.ts +1 -0
- package/dist/modules/Discount/index.js +40 -11
- package/dist/modules/Discount/types.d.ts +1 -0
- package/dist/modules/Holder/index.d.ts +48 -0
- package/dist/modules/Holder/index.js +640 -0
- package/dist/modules/Holder/types.d.ts +123 -0
- package/dist/modules/Holder/types.js +1 -0
- package/dist/modules/Holder/utils.d.ts +13 -0
- package/dist/modules/Holder/utils.js +34 -0
- package/dist/modules/OpenData/index.js +2 -2
- package/dist/modules/Order/index.d.ts +4 -2
- package/dist/modules/Order/index.js +54 -25
- package/dist/modules/Order/types.d.ts +9 -0
- package/dist/modules/Order/utils.d.ts +10 -0
- package/dist/modules/Order/utils.js +35 -3
- package/dist/modules/Product/types.d.ts +1 -0
- package/dist/modules/ProductList/index.js +33 -14
- package/dist/modules/Quotation/index.d.ts +1 -1
- package/dist/modules/Quotation/index.js +2 -2
- package/dist/modules/ResourcePlanner/index.d.ts +24 -0
- package/dist/modules/ResourcePlanner/index.js +181 -0
- package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
- package/dist/modules/ResourcePlanner/planner.js +1069 -0
- package/dist/modules/ResourcePlanner/types.d.ts +227 -0
- package/dist/modules/ResourcePlanner/types.js +1 -0
- package/dist/modules/Rules/index.js +47 -13
- package/dist/modules/SalesSummary/index.js +12 -13
- package/dist/modules/ScanOrderLogger/index.d.ts +2 -0
- package/dist/modules/ScanOrderLogger/index.js +15 -2
- package/dist/modules/ScanOrderLogger/providers/feishu.js +45 -27
- package/dist/modules/ScanOrderLogger/types.d.ts +1 -0
- package/dist/modules/Schedule/index.d.ts +3 -1
- package/dist/modules/Schedule/index.js +21 -16
- package/dist/modules/Summary/utils.js +38 -13
- package/dist/modules/index.d.ts +2 -0
- package/dist/modules/index.js +3 -1
- package/dist/plugins/window.d.ts +1 -0
- package/dist/server/index.d.ts +14 -0
- package/dist/server/index.js +907 -793
- package/dist/solution/BaseSales/index.d.ts +7 -0
- package/dist/solution/BaseSales/index.js +64 -42
- package/dist/solution/BookingByStep/index.d.ts +17 -2
- package/dist/solution/BookingByStep/index.js +294 -215
- package/dist/solution/BookingByStep/types.d.ts +2 -1
- package/dist/solution/BookingByStep/types.js +3 -1
- package/dist/solution/BookingByStep/utils/capacity.js +17 -1
- package/dist/solution/BookingByStep/utils/timeslots.d.ts +3 -1
- package/dist/solution/BookingByStep/utils/timeslots.js +19 -12
- package/dist/solution/BookingTicket/index.js +2 -2
- package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +10 -2
- package/dist/solution/ScanOrder/index.d.ts +26 -14
- package/dist/solution/ScanOrder/index.js +1142 -739
- package/dist/solution/ScanOrder/types.d.ts +21 -1
- package/dist/solution/ScanOrder/utils.d.ts +8 -0
- package/dist/solution/ScanOrder/utils.js +66 -25
- package/dist/solution/ShopDiscount/index.d.ts +1 -0
- package/dist/solution/ShopDiscount/index.js +125 -87
- package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
- package/dist/solution/UnifiedBookingSales/index.js +1891 -0
- package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
- package/dist/solution/UnifiedBookingSales/types.js +11 -0
- package/dist/solution/VenueBooking/index.d.ts +39 -11
- package/dist/solution/VenueBooking/index.js +1167 -841
- package/dist/solution/VenueBooking/types.d.ts +3 -0
- package/dist/solution/VenueBooking/utils/resource.js +1 -0
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +4 -4
- package/dist/solution/VenueBooking/utils/slotMerge.js +10 -5
- package/dist/solution/index.d.ts +1 -0
- package/dist/solution/index.js +2 -1
- package/dist/types/index.d.ts +1 -0
- package/lib/model/strategy/adapter/promotion/index.js +51 -0
- package/lib/modules/Discount/index.d.ts +1 -0
- package/lib/modules/Discount/index.js +9 -0
- package/lib/modules/Discount/types.d.ts +1 -0
- package/lib/modules/Holder/index.d.ts +48 -0
- package/lib/modules/Holder/index.js +402 -0
- package/lib/modules/Holder/types.d.ts +123 -0
- package/lib/modules/Holder/types.js +17 -0
- package/lib/modules/Holder/utils.d.ts +13 -0
- package/lib/modules/Holder/utils.js +71 -0
- package/lib/modules/OpenData/index.js +1 -1
- package/lib/modules/Order/index.d.ts +4 -2
- package/lib/modules/Order/index.js +26 -10
- package/lib/modules/Order/types.d.ts +9 -0
- package/lib/modules/Order/utils.d.ts +10 -0
- package/lib/modules/Order/utils.js +36 -5
- package/lib/modules/Product/types.d.ts +1 -0
- package/lib/modules/ProductList/index.js +40 -31
- package/lib/modules/Quotation/index.d.ts +1 -1
- package/lib/modules/Quotation/index.js +2 -2
- package/lib/modules/ResourcePlanner/index.d.ts +24 -0
- package/lib/modules/ResourcePlanner/index.js +148 -0
- package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
- package/lib/modules/ResourcePlanner/planner.js +933 -0
- package/lib/modules/ResourcePlanner/types.d.ts +227 -0
- package/lib/modules/ResourcePlanner/types.js +17 -0
- package/lib/modules/Rules/index.js +33 -16
- package/lib/modules/SalesSummary/index.js +6 -7
- package/lib/modules/ScanOrderLogger/index.d.ts +2 -0
- package/lib/modules/ScanOrderLogger/index.js +13 -1
- package/lib/modules/ScanOrderLogger/providers/feishu.js +15 -6
- package/lib/modules/ScanOrderLogger/types.d.ts +1 -0
- package/lib/modules/Schedule/index.d.ts +3 -1
- package/lib/modules/Schedule/index.js +10 -8
- package/lib/modules/Summary/utils.js +21 -1
- package/lib/modules/index.d.ts +2 -0
- package/lib/modules/index.js +5 -1
- package/lib/plugins/window.d.ts +1 -0
- package/lib/server/index.d.ts +14 -0
- package/lib/server/index.js +72 -15
- package/lib/solution/BaseSales/index.d.ts +7 -0
- package/lib/solution/BaseSales/index.js +24 -8
- package/lib/solution/BookingByStep/index.d.ts +17 -2
- package/lib/solution/BookingByStep/index.js +60 -18
- package/lib/solution/BookingByStep/types.d.ts +2 -1
- package/lib/solution/BookingByStep/types.js +5 -0
- package/lib/solution/BookingByStep/utils/capacity.js +20 -1
- package/lib/solution/BookingByStep/utils/timeslots.d.ts +3 -1
- package/lib/solution/BookingByStep/utils/timeslots.js +19 -11
- package/lib/solution/BookingTicket/index.js +10 -2
- package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +2 -2
- package/lib/solution/ScanOrder/index.d.ts +26 -14
- package/lib/solution/ScanOrder/index.js +449 -182
- package/lib/solution/ScanOrder/types.d.ts +21 -1
- package/lib/solution/ScanOrder/utils.d.ts +8 -0
- package/lib/solution/ScanOrder/utils.js +31 -0
- package/lib/solution/ShopDiscount/index.d.ts +1 -0
- package/lib/solution/ShopDiscount/index.js +14 -0
- package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
- package/lib/solution/UnifiedBookingSales/index.js +1084 -0
- package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
- package/lib/solution/UnifiedBookingSales/types.js +33 -0
- package/lib/solution/VenueBooking/index.d.ts +39 -11
- package/lib/solution/VenueBooking/index.js +322 -110
- package/lib/solution/VenueBooking/types.d.ts +3 -0
- package/lib/solution/VenueBooking/utils/resource.js +1 -0
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +4 -4
- package/lib/solution/VenueBooking/utils/slotMerge.js +6 -4
- package/lib/solution/index.d.ts +1 -0
- package/lib/solution/index.js +3 -1
- package/lib/types/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { ProductData } from '../Product/types';
|
|
2
|
+
/**
|
|
3
|
+
* 商品 holder 配置
|
|
4
|
+
*/
|
|
5
|
+
export interface IHolderConfig {
|
|
6
|
+
required?: number;
|
|
7
|
+
resource_id: number;
|
|
8
|
+
status?: string;
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 表单记录
|
|
13
|
+
*/
|
|
14
|
+
export interface IFormRecord {
|
|
15
|
+
form_id: number;
|
|
16
|
+
form_record_id: number;
|
|
17
|
+
main_field: string;
|
|
18
|
+
customer_cover?: string;
|
|
19
|
+
created_at?: string;
|
|
20
|
+
customer_id?: number;
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 表单配置/定义
|
|
25
|
+
*/
|
|
26
|
+
export interface IFormInfo {
|
|
27
|
+
form_id: number;
|
|
28
|
+
name: string;
|
|
29
|
+
fields?: Record<string, any>[];
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 单个 form_id 下的数据结构
|
|
34
|
+
*/
|
|
35
|
+
export interface IFormItemData {
|
|
36
|
+
records: IFormRecord[];
|
|
37
|
+
form: IFormInfo | Record<string, any>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* form_id 为 key 的 map 结构,如 948: { records: [], form: {} }
|
|
41
|
+
*/
|
|
42
|
+
export type HolderFormMap = Record<string, IFormItemData>;
|
|
43
|
+
/**
|
|
44
|
+
* Holder 模块 reactive store,仅 holderMap 会触发 changed 事件
|
|
45
|
+
*/
|
|
46
|
+
export interface HolderState {
|
|
47
|
+
holderMap: HolderFormMap;
|
|
48
|
+
}
|
|
49
|
+
export interface IFetchFormInfoParams {
|
|
50
|
+
url?: string;
|
|
51
|
+
query: {
|
|
52
|
+
form_id: string | number;
|
|
53
|
+
};
|
|
54
|
+
useCache?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface IFetchFormRecordsParams {
|
|
57
|
+
url?: string;
|
|
58
|
+
query: {
|
|
59
|
+
customer_id?: number;
|
|
60
|
+
form_id: string | number;
|
|
61
|
+
shop_id: string | number;
|
|
62
|
+
num?: number;
|
|
63
|
+
skip?: number;
|
|
64
|
+
[key: string]: any;
|
|
65
|
+
};
|
|
66
|
+
useCache?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface IAddFormRecordParams {
|
|
69
|
+
url?: string;
|
|
70
|
+
body: {
|
|
71
|
+
form_id: number;
|
|
72
|
+
shop_id: number | string;
|
|
73
|
+
customer_id?: number;
|
|
74
|
+
[key: string]: any;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* UI 层自行调用添加接口后,将返回记录写入 holderMap
|
|
79
|
+
*/
|
|
80
|
+
export interface IAppendFormRecordParams {
|
|
81
|
+
/** 接口返回的 data,或完整响应 { data: {...} } */
|
|
82
|
+
record: IFormRecord | Record<string, any>;
|
|
83
|
+
/** 可选,未传则从 record.form_id 读取 */
|
|
84
|
+
form_id?: number | string;
|
|
85
|
+
}
|
|
86
|
+
export interface IEnsureFormDataParams {
|
|
87
|
+
form_id: number | string;
|
|
88
|
+
shop_id: number | string;
|
|
89
|
+
customer_id?: number;
|
|
90
|
+
useCache?: boolean;
|
|
91
|
+
forceRefresh?: boolean;
|
|
92
|
+
formInfoUrl?: string;
|
|
93
|
+
recordsUrl?: string;
|
|
94
|
+
skip?: number;
|
|
95
|
+
num?: number;
|
|
96
|
+
}
|
|
97
|
+
export interface IEnsureFormByProductParams {
|
|
98
|
+
product: ProductData | Record<string, any>;
|
|
99
|
+
customer_id?: number;
|
|
100
|
+
shop_id?: number | string;
|
|
101
|
+
useCache?: boolean;
|
|
102
|
+
}
|
|
103
|
+
export interface IRefreshAllFormRecordsParams {
|
|
104
|
+
customer_id?: number;
|
|
105
|
+
useCache?: boolean;
|
|
106
|
+
recordsUrl?: string;
|
|
107
|
+
num?: number;
|
|
108
|
+
skip?: number;
|
|
109
|
+
}
|
|
110
|
+
export interface HolderModuleAPI {
|
|
111
|
+
getHolderFormMap: () => HolderFormMap;
|
|
112
|
+
getHolderFormData: (formId: number | string) => IFormItemData | undefined;
|
|
113
|
+
setFormData: (formId: number | string, data: Partial<IFormItemData>) => void;
|
|
114
|
+
fetchFormInfo: (params: IFetchFormInfoParams) => Promise<IFormInfo | IFormInfo[]>;
|
|
115
|
+
fetchRecords: (params: IFetchFormRecordsParams) => Promise<IFormRecord[]>;
|
|
116
|
+
ensureFormData: (params: IEnsureFormDataParams) => Promise<IFormItemData>;
|
|
117
|
+
ensureFormByProduct: (params: IEnsureFormByProductParams) => Promise<IFormItemData | null>;
|
|
118
|
+
addFormRecord: (params: IAddFormRecordParams) => Promise<IFormRecord>;
|
|
119
|
+
appendFormRecord: (params: IAppendFormRecordParams) => IFormRecord;
|
|
120
|
+
removeFormRecord: (formId: number | string, formRecordId: number) => void;
|
|
121
|
+
clearFormData: (formId?: number | string) => void;
|
|
122
|
+
refreshAllFormRecords: (params?: IRefreshAllFormRecordsParams) => Promise<HolderFormMap>;
|
|
123
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
|
|
15
|
+
// src/modules/Holder/types.ts
|
|
16
|
+
var types_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(types_exports);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ProductData } from '../Product/types';
|
|
2
|
+
import { IFormItemData, IHolderConfig } from './types';
|
|
3
|
+
export declare function getProductHolderConfig(product?: ProductData | Record<string, any> | null): IHolderConfig | null;
|
|
4
|
+
export declare function getFormIdFromHolderConfig(config: IHolderConfig): number;
|
|
5
|
+
export declare function normalizeFormId(formId: number | string): number;
|
|
6
|
+
export declare function createEmptyFormItemData(): {
|
|
7
|
+
records: any[];
|
|
8
|
+
form: Record<string, any>;
|
|
9
|
+
};
|
|
10
|
+
export declare function resolveFormMetaFromHolderItem(mapKey: string, item: IFormItemData): {
|
|
11
|
+
form_id: string | number;
|
|
12
|
+
shop_id: number | string;
|
|
13
|
+
} | null;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/modules/Holder/utils.ts
|
|
20
|
+
var utils_exports = {};
|
|
21
|
+
__export(utils_exports, {
|
|
22
|
+
createEmptyFormItemData: () => createEmptyFormItemData,
|
|
23
|
+
getFormIdFromHolderConfig: () => getFormIdFromHolderConfig,
|
|
24
|
+
getProductHolderConfig: () => getProductHolderConfig,
|
|
25
|
+
normalizeFormId: () => normalizeFormId,
|
|
26
|
+
resolveFormMetaFromHolderItem: () => resolveFormMetaFromHolderItem
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(utils_exports);
|
|
29
|
+
function getProductHolderConfig(product) {
|
|
30
|
+
var _a;
|
|
31
|
+
if (!product)
|
|
32
|
+
return null;
|
|
33
|
+
const config = (product == null ? void 0 : product.holder_config) ?? ((_a = product == null ? void 0 : product.origin) == null ? void 0 : _a.holder_config);
|
|
34
|
+
if ((config == null ? void 0 : config.status) && (config == null ? void 0 : config.status) !== "enable")
|
|
35
|
+
return null;
|
|
36
|
+
if (!(config == null ? void 0 : config.resource_id))
|
|
37
|
+
return null;
|
|
38
|
+
return config;
|
|
39
|
+
}
|
|
40
|
+
function getFormIdFromHolderConfig(config) {
|
|
41
|
+
return Number(config == null ? void 0 : config.resource_id);
|
|
42
|
+
}
|
|
43
|
+
function normalizeFormId(formId) {
|
|
44
|
+
return Number(formId);
|
|
45
|
+
}
|
|
46
|
+
function createEmptyFormItemData() {
|
|
47
|
+
return {
|
|
48
|
+
records: [],
|
|
49
|
+
form: {}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function resolveFormMetaFromHolderItem(mapKey, item) {
|
|
53
|
+
const formInfo = item.form || {};
|
|
54
|
+
const nestedForm = formInfo.form || {};
|
|
55
|
+
const form_id = normalizeFormId(
|
|
56
|
+
nestedForm.id ?? formInfo.form_id ?? formInfo.id ?? mapKey
|
|
57
|
+
);
|
|
58
|
+
const shop_id = nestedForm.shop_id ?? formInfo.shop_id;
|
|
59
|
+
if (shop_id === void 0 || shop_id === null || shop_id === "") {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return { form_id, shop_id };
|
|
63
|
+
}
|
|
64
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
65
|
+
0 && (module.exports = {
|
|
66
|
+
createEmptyFormItemData,
|
|
67
|
+
getFormIdFromHolderConfig,
|
|
68
|
+
getProductHolderConfig,
|
|
69
|
+
normalizeFormId,
|
|
70
|
+
resolveFormMetaFromHolderItem
|
|
71
|
+
});
|
|
@@ -73,7 +73,7 @@ var OpenDataModule = class extends import_BaseModule.BaseModule {
|
|
|
73
73
|
}
|
|
74
74
|
async fetchOpenData(params) {
|
|
75
75
|
var _a, _b;
|
|
76
|
-
const getData = (_b = (_a = this.appPlugin).getData) == null ? void 0 : _b.call(_a);
|
|
76
|
+
const getData = (_b = (_a = this.appPlugin) == null ? void 0 : _a.getData) == null ? void 0 : _b.call(_a);
|
|
77
77
|
const shopId = getData == null ? void 0 : getData("shop_id");
|
|
78
78
|
if (!shopId)
|
|
79
79
|
throw new Error("[OpenDataModule] 无法获取 shop_id");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Module, PisellCore, ModuleOptions } from '../../types';
|
|
2
2
|
import { BaseModule } from '../BaseModule';
|
|
3
|
-
import { OrderModuleAPI, CommitOrderParams, UpdateOrderBookingParams, UpdateOrderProductParams, UpdateOrderProductQuantityParams,
|
|
3
|
+
import { OrderModuleAPI, CommitOrderParams, UpdateOrderBookingParams, UpdateOrderProductParams, UpdateOrderProductQuantityParams, CancelOrderParams, ChangeBookingStatusParams, CheckoutOrderParams } from './types';
|
|
4
4
|
import { CartItem } from '../Cart/types';
|
|
5
5
|
import { type SubmitPayloadEnhancer } from './utils';
|
|
6
6
|
import type { OrderAmountSnapshot, AddProductBookingInput, OrderIdentitySnapshot, OrderPaymentSource, OrderSnapshot, OrderSyncState, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, SubmitSalesOrderParams, OrderProduct, OrderProductIdentity, OrderSummary, OrderTempOrder, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, SendCustomerPayLinkParams, UpdateTempOrderCustomerInput, OrderCustomerPatch, OrderCustomerView, ReplaceTempOrderOptions, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions } from './types';
|
|
@@ -147,6 +147,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
147
147
|
isTempOrderPersistEnabled(): boolean;
|
|
148
148
|
/** @deprecated OrderModule 不再负责 tempOrder localStorage 持久化;草稿保存请使用 IndexedDB saveDraft。 */
|
|
149
149
|
persistTempOrder(): void;
|
|
150
|
+
notifyTempOrderChanged(): void;
|
|
150
151
|
private createDefaultTempOrderInstance;
|
|
151
152
|
private createExternalSaleNumber;
|
|
152
153
|
private ensureExternalSaleNumber;
|
|
@@ -486,7 +487,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
486
487
|
generateIdempotencyToken(): string;
|
|
487
488
|
syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
|
|
488
489
|
createOrder(params: CommitOrderParams['query']): {
|
|
489
|
-
type: "
|
|
490
|
+
type: "virtual" | "appointment_booking";
|
|
490
491
|
platform: string;
|
|
491
492
|
sales_channel: string;
|
|
492
493
|
order_sales_channel: string;
|
|
@@ -496,6 +497,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
496
497
|
is_deposit: number;
|
|
497
498
|
relation_products: any[];
|
|
498
499
|
relation_forms: any[];
|
|
500
|
+
business_code: string | undefined;
|
|
499
501
|
};
|
|
500
502
|
checkBeforeSubmitOrder(params: {
|
|
501
503
|
cartItems: CartItem[];
|
|
@@ -328,7 +328,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
328
328
|
});
|
|
329
329
|
}
|
|
330
330
|
async initialize(core, options) {
|
|
331
|
-
var _a, _b, _c;
|
|
331
|
+
var _a, _b, _c, _d;
|
|
332
332
|
this.core = core;
|
|
333
333
|
this.store = options.store;
|
|
334
334
|
if (!this.store.tempOrder) {
|
|
@@ -341,19 +341,19 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
341
341
|
this.store.availableWalletIds = [];
|
|
342
342
|
}
|
|
343
343
|
this.request = this.core.getPlugin("request");
|
|
344
|
-
|
|
345
|
-
if (!
|
|
346
|
-
|
|
344
|
+
const appPlugin = this.core.getPlugin("app");
|
|
345
|
+
if (!appPlugin) {
|
|
346
|
+
console.error("Order 模块需要 app 插件支持");
|
|
347
347
|
}
|
|
348
|
-
const app =
|
|
349
|
-
this.logger = app.logger;
|
|
348
|
+
const app = (_a = appPlugin == null ? void 0 : appPlugin.getApp) == null ? void 0 : _a.call(appPlugin);
|
|
349
|
+
this.logger = app == null ? void 0 : app.logger;
|
|
350
350
|
this.window = this.core.getPlugin("window");
|
|
351
351
|
const otherParams = options.otherParams || {};
|
|
352
352
|
this.cacheId = otherParams.cacheId;
|
|
353
353
|
this.salesSummaryModuleName = otherParams.salesSummaryModuleName;
|
|
354
|
-
this.rulesHooksOverride = (
|
|
354
|
+
this.rulesHooksOverride = (_b = otherParams.rules) == null ? void 0 : _b.hooks;
|
|
355
355
|
this.moduleHooksOverride = options.hooks;
|
|
356
|
-
this.orderHooks = this.moduleHooksOverride || ((
|
|
356
|
+
this.orderHooks = this.moduleHooksOverride || ((_c = otherParams.order) == null ? void 0 : _c.hooks) || ((_d = otherParams.hooks) == null ? void 0 : _d.order);
|
|
357
357
|
this.otherParams = otherParams;
|
|
358
358
|
this.registerDiscountModules(options);
|
|
359
359
|
this.logInfo("OrderModule initialized successfully");
|
|
@@ -880,6 +880,16 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
880
880
|
/** @deprecated OrderModule 不再负责 tempOrder localStorage 持久化;草稿保存请使用 IndexedDB saveDraft。 */
|
|
881
881
|
persistTempOrder() {
|
|
882
882
|
}
|
|
883
|
+
notifyTempOrderChanged() {
|
|
884
|
+
if (!this.store.tempOrder)
|
|
885
|
+
return;
|
|
886
|
+
this.store.tempOrder = {
|
|
887
|
+
...this.store.tempOrder,
|
|
888
|
+
products: [...this.store.tempOrder.products],
|
|
889
|
+
bookings: this.store.tempOrder.bookings ? [...this.store.tempOrder.bookings] : []
|
|
890
|
+
};
|
|
891
|
+
this.persistTempOrder();
|
|
892
|
+
}
|
|
883
893
|
// ─── TempOrder: 创建 & 获取 ───
|
|
884
894
|
createDefaultTempOrderInstance() {
|
|
885
895
|
return (0, import_utils.createDefaultTempOrder)({
|
|
@@ -3918,7 +3928,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
3918
3928
|
tempOrder,
|
|
3919
3929
|
effectivePayments
|
|
3920
3930
|
);
|
|
3921
|
-
const
|
|
3931
|
+
const submitParams = {
|
|
3922
3932
|
payments: effectivePayments,
|
|
3923
3933
|
paymentStatus,
|
|
3924
3934
|
smallTicketDataFlag: params.smallTicketDataFlag,
|
|
@@ -3932,7 +3942,8 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
3932
3942
|
};
|
|
3933
3943
|
return nextPayload;
|
|
3934
3944
|
}
|
|
3935
|
-
}
|
|
3945
|
+
};
|
|
3946
|
+
const submitResult = params.checkoutSyncTaskEnabled === false ? await this.submitTempOrderAsync(submitParams) : await this.submitTempOrder(submitParams);
|
|
3936
3947
|
return { ...completion, submitResult };
|
|
3937
3948
|
}
|
|
3938
3949
|
createOrder(params) {
|
|
@@ -3949,11 +3960,13 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
3949
3960
|
is_deposit: 0,
|
|
3950
3961
|
relation_products: [],
|
|
3951
3962
|
relation_forms: [],
|
|
3963
|
+
business_code: params == null ? void 0 : params.business_code,
|
|
3952
3964
|
...(params == null ? void 0 : params.extraData) || {}
|
|
3953
3965
|
};
|
|
3954
3966
|
let is_deposit = 0;
|
|
3955
3967
|
if (params.cartItems.length > 0) {
|
|
3956
3968
|
params.cartItems.forEach((item) => {
|
|
3969
|
+
var _a2;
|
|
3957
3970
|
if (!item._origin.duration) {
|
|
3958
3971
|
const { duration, durationType } = (0, import_utils.generateDuration)(item);
|
|
3959
3972
|
item._origin.duration = duration;
|
|
@@ -3962,6 +3975,9 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
3962
3975
|
item._origin.sub_type = (0, import_utils.normalizeBookingSubType)(item._origin);
|
|
3963
3976
|
const discountList = (0, import_utils.getAllDiscountList)(item);
|
|
3964
3977
|
item._origin.product.discount_list = discountList;
|
|
3978
|
+
if ((_a2 = params == null ? void 0 : params.extraData) == null ? void 0 : _a2.is_add_holder_info) {
|
|
3979
|
+
(0, import_utils.ensureCartItemOriginHolder)(item, this.window);
|
|
3980
|
+
}
|
|
3965
3981
|
if ((0, import_utils2.isNormalProduct)(item._origin)) {
|
|
3966
3982
|
order.relation_products.push(item._origin.product);
|
|
3967
3983
|
const relationForms = item._origin.relation_forms || [];
|
|
@@ -396,6 +396,7 @@ export interface CommitOrderParams {
|
|
|
396
396
|
type: 'virtual' | 'appointment_booking';
|
|
397
397
|
platform?: string;
|
|
398
398
|
extraData?: Record<string, any>;
|
|
399
|
+
business_code?: string;
|
|
399
400
|
};
|
|
400
401
|
}
|
|
401
402
|
export interface OrderSubmitBooking {
|
|
@@ -571,6 +572,12 @@ export interface SyncPaymentsToOrderParams {
|
|
|
571
572
|
payments: OrderPaymentSource[];
|
|
572
573
|
paymentStatus?: SubmitSalesOrderParams['query']['payment_status'];
|
|
573
574
|
submitWhenPaid?: boolean;
|
|
575
|
+
/**
|
|
576
|
+
* Whether the checkout should be queued as the local `sync_sales` task.
|
|
577
|
+
* Defaults to true to preserve the WebPOS retry path. Set to false when
|
|
578
|
+
* the caller must wait for the cloud checkout response before proceeding.
|
|
579
|
+
*/
|
|
580
|
+
checkoutSyncTaskEnabled?: boolean;
|
|
574
581
|
smallTicketDataFlag?: number;
|
|
575
582
|
businessCode?: string;
|
|
576
583
|
channel?: string;
|
|
@@ -733,6 +740,8 @@ export interface OrderModuleAPI {
|
|
|
733
740
|
setEnableTempOrderPersist: (enabled: boolean) => void;
|
|
734
741
|
/** 是否允许 saveDraft 写入 IndexedDB 草稿。 */
|
|
735
742
|
isTempOrderPersistEnabled: () => boolean;
|
|
743
|
+
/** 提交 tempOrder 变更并触发 `{moduleName}:changed` 事件 */
|
|
744
|
+
notifyTempOrderChanged: () => void;
|
|
736
745
|
submitTempOrder: <T = any>(params?: {
|
|
737
746
|
cacheId?: string;
|
|
738
747
|
platform?: string;
|
|
@@ -15,6 +15,7 @@ export interface OrderProductsDepositSummary {
|
|
|
15
15
|
deposit_policy_ids: number[];
|
|
16
16
|
hasDeposit: boolean;
|
|
17
17
|
}
|
|
18
|
+
import type { WindowPlugin } from '../../plugins';
|
|
18
19
|
/**
|
|
19
20
|
* 把"含 option 的主商品单价"与 bundle 合成"单行 composite 单价"。
|
|
20
21
|
*
|
|
@@ -177,6 +178,15 @@ export declare const mergeRelationForms: (relationForms: {
|
|
|
177
178
|
form_id: number;
|
|
178
179
|
form_record_ids: number[];
|
|
179
180
|
}[];
|
|
181
|
+
export interface CartOrderHolder {
|
|
182
|
+
customer_id?: number;
|
|
183
|
+
form_id: number | string;
|
|
184
|
+
form_record: (number | string)[] | null;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* 为购物车行补齐订单所需的 holder 信息(与 cartAccount 结构保持一致)
|
|
188
|
+
*/
|
|
189
|
+
export declare function ensureCartItemOriginHolder(cartItem: CartItem, window?: WindowPlugin): void;
|
|
180
190
|
export declare const getAllDiscountList: (cartItem: CartItem) => any;
|
|
181
191
|
export { createUuidV4 };
|
|
182
192
|
export declare function isTempOrder(data: any): data is OrderTempOrder;
|
|
@@ -36,8 +36,9 @@ __export(utils_exports, {
|
|
|
36
36
|
composeLinePrice: () => composeLinePrice,
|
|
37
37
|
createDefaultOrderRulesHooks: () => createDefaultOrderRulesHooks,
|
|
38
38
|
createDefaultTempOrder: () => createDefaultTempOrder,
|
|
39
|
-
createEmptySummary: () =>
|
|
39
|
+
createEmptySummary: () => import_utils3.createEmptySummary,
|
|
40
40
|
createUuidV4: () => import_orderCollectionIdentity.createUuidV4,
|
|
41
|
+
ensureCartItemOriginHolder: () => ensureCartItemOriginHolder,
|
|
41
42
|
ensureManualProductDiscountList: () => import_manualProductDiscount.ensureManualProductDiscountList,
|
|
42
43
|
ensureProductSku: () => ensureProductSku,
|
|
43
44
|
findManualProductDiscountItem: () => import_manualProductDiscount.findManualProductDiscountItem,
|
|
@@ -85,9 +86,10 @@ __export(utils_exports, {
|
|
|
85
86
|
module.exports = __toCommonJS(utils_exports);
|
|
86
87
|
var import_dayjs = __toESM(require("dayjs"));
|
|
87
88
|
var import_decimal = __toESM(require("decimal.js"));
|
|
88
|
-
var import_utils = require("
|
|
89
|
-
var import_orderCollectionIdentity = require("./utils/orderCollectionIdentity");
|
|
89
|
+
var import_utils = require("../Holder/utils");
|
|
90
90
|
var import_utils2 = require("../../solution/ScanOrder/utils");
|
|
91
|
+
var import_orderCollectionIdentity = require("./utils/orderCollectionIdentity");
|
|
92
|
+
var import_utils3 = require("../../solution/ScanOrder/utils");
|
|
91
93
|
var import_manualProductDiscount = require("./utils/manualProductDiscount");
|
|
92
94
|
function composeLinePrice(params) {
|
|
93
95
|
const { mainPrice, bundle, useOriginalBundle } = params;
|
|
@@ -546,7 +548,7 @@ function createDefaultOrderRulesHooks() {
|
|
|
546
548
|
// 否则同 SKU 不同小料会在 calcDiscount 重组时互相覆盖。
|
|
547
549
|
// 不透明 identity 契约下,normalizeOrderProduct / hydrate 已保证唯一值存在;
|
|
548
550
|
// 留 fingerprint 分支仅作 Rules 单测里直接传裸 product 时的兜底。
|
|
549
|
-
_id: ((_a = product.metadata) == null ? void 0 : _a.unique_identification_number) ? `${product.product_id}_${product.product_variant_id}_${product.metadata.unique_identification_number}` : `${product.product_id}_${product.product_variant_id}_${(0,
|
|
551
|
+
_id: ((_a = product.metadata) == null ? void 0 : _a.unique_identification_number) ? `${product.product_id}_${product.product_variant_id}_${product.metadata.unique_identification_number}` : `${product.product_id}_${product.product_variant_id}_${(0, import_utils2.buildProductLineFingerprint)(
|
|
550
552
|
getProductSkuOptions(product),
|
|
551
553
|
product.product_bundle
|
|
552
554
|
)}`,
|
|
@@ -638,6 +640,34 @@ var mergeRelationForms = (relationForms) => {
|
|
|
638
640
|
}, {})
|
|
639
641
|
).filter((item) => item.form_record_ids.length > 0);
|
|
640
642
|
};
|
|
643
|
+
function getCustomerIdFromStorage(window) {
|
|
644
|
+
var _a;
|
|
645
|
+
try {
|
|
646
|
+
const customer = JSON.parse(((_a = window == null ? void 0 : window.getLocalStorage) == null ? void 0 : _a.call(window, "customer")) || "{}");
|
|
647
|
+
const customerId = Number(customer == null ? void 0 : customer.id);
|
|
648
|
+
return Number.isFinite(customerId) && customerId > 0 ? customerId : void 0;
|
|
649
|
+
} catch {
|
|
650
|
+
return void 0;
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
function ensureCartItemOriginHolder(cartItem, window) {
|
|
654
|
+
var _a;
|
|
655
|
+
if ((_a = cartItem == null ? void 0 : cartItem._origin) == null ? void 0 : _a.holder) {
|
|
656
|
+
return;
|
|
657
|
+
}
|
|
658
|
+
const holderConfig = (0, import_utils.getProductHolderConfig)(
|
|
659
|
+
(cartItem == null ? void 0 : cartItem._productInit) ?? (cartItem == null ? void 0 : cartItem._productOrigin)
|
|
660
|
+
);
|
|
661
|
+
const formRecordId = cartItem == null ? void 0 : cartItem.holder_id;
|
|
662
|
+
if (!(holderConfig == null ? void 0 : holderConfig.resource_id) || formRecordId == null) {
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
cartItem._origin.holder = {
|
|
666
|
+
customer_id: getCustomerIdFromStorage(window),
|
|
667
|
+
form_id: holderConfig.resource_id,
|
|
668
|
+
form_record: [formRecordId]
|
|
669
|
+
};
|
|
670
|
+
}
|
|
641
671
|
var getAllDiscountList = (cartItem) => {
|
|
642
672
|
var _a, _b, _c, _d;
|
|
643
673
|
let discountList = ((_b = (_a = cartItem == null ? void 0 : cartItem._origin) == null ? void 0 : _a.product) == null ? void 0 : _b.discount_list) || [];
|
|
@@ -1003,7 +1033,7 @@ function buildSubmitPayload(params) {
|
|
|
1003
1033
|
// contacts: tempOrder.contacts || [],
|
|
1004
1034
|
contacts_info: tempOrder.contacts_info && !Array.isArray(tempOrder.contacts_info) ? tempOrder.contacts_info : null,
|
|
1005
1035
|
// holder: tempOrder.holder || null,
|
|
1006
|
-
summary: summary || tempOrder.summary || (0,
|
|
1036
|
+
summary: summary || tempOrder.summary || (0, import_utils2.createEmptySummary)(),
|
|
1007
1037
|
metadata: (() => {
|
|
1008
1038
|
const {
|
|
1009
1039
|
collect_pax: _collectPax,
|
|
@@ -1252,6 +1282,7 @@ function indexOrderProductsByUid(products) {
|
|
|
1252
1282
|
createDefaultTempOrder,
|
|
1253
1283
|
createEmptySummary,
|
|
1254
1284
|
createUuidV4,
|
|
1285
|
+
ensureCartItemOriginHolder,
|
|
1255
1286
|
ensureManualProductDiscountList,
|
|
1256
1287
|
ensureProductSku,
|
|
1257
1288
|
findManualProductDiscountItem,
|
|
@@ -106,39 +106,48 @@ var ProductList = class extends import_BaseModule.BaseModule {
|
|
|
106
106
|
} catch (error) {
|
|
107
107
|
console.error(error);
|
|
108
108
|
}
|
|
109
|
+
const channelMap = {
|
|
110
|
+
online_store: "online-store",
|
|
111
|
+
scan_to_order: "online-store",
|
|
112
|
+
"scan-to-order": "online-store",
|
|
113
|
+
scan_to_order_2: "mobile_order",
|
|
114
|
+
scan_to_order_3: "scantoorder3"
|
|
115
|
+
};
|
|
116
|
+
const rawApplicationCode = (_b = this.otherParams) == null ? void 0 : _b.channel;
|
|
117
|
+
const mappedApplicationCode = typeof rawApplicationCode === "string" ? channelMap[rawApplicationCode] || rawApplicationCode : rawApplicationCode;
|
|
118
|
+
const queryPayload = {
|
|
119
|
+
open_quotation: 1,
|
|
120
|
+
open_bundle: 0,
|
|
121
|
+
exclude_extension_type: [
|
|
122
|
+
"product_party",
|
|
123
|
+
"product_event",
|
|
124
|
+
"product_series_event",
|
|
125
|
+
"product_package_ticket",
|
|
126
|
+
"ticket",
|
|
127
|
+
"event_item"
|
|
128
|
+
],
|
|
129
|
+
with: ["category", "collection", "resourceRelation"],
|
|
130
|
+
status,
|
|
131
|
+
num: 500,
|
|
132
|
+
skip: 1,
|
|
133
|
+
customer_id,
|
|
134
|
+
...Array.isArray(category_ids) && category_ids.length ? { category_ids } : {},
|
|
135
|
+
...Array.isArray(product_ids) && product_ids.length ? { ids: product_ids } : {},
|
|
136
|
+
...Array.isArray(collection) && collection.length ? { collection } : {},
|
|
137
|
+
front_end_cache_id: cacheId,
|
|
138
|
+
...Array.isArray(menu_list_ids) && menu_list_ids.length ? { menu_list_ids } : {},
|
|
139
|
+
with_count,
|
|
140
|
+
// client_schedule_ids: schedule_ids,
|
|
141
|
+
schedule_date,
|
|
142
|
+
application_code: mappedApplicationCode,
|
|
143
|
+
is_eject: 1,
|
|
144
|
+
with_schedule,
|
|
145
|
+
schedule_datetime,
|
|
146
|
+
extension_type
|
|
147
|
+
};
|
|
109
148
|
const productsData = await this.request.post(
|
|
110
149
|
`/product/query`,
|
|
111
|
-
|
|
112
|
-
open_quotation: 1,
|
|
113
|
-
open_bundle: 0,
|
|
114
|
-
exclude_extension_type: [
|
|
115
|
-
"product_party",
|
|
116
|
-
"product_event",
|
|
117
|
-
"product_series_event",
|
|
118
|
-
"product_package_ticket",
|
|
119
|
-
"ticket",
|
|
120
|
-
"event_item"
|
|
121
|
-
],
|
|
122
|
-
with: ["category", "collection", "resourceRelation"],
|
|
123
|
-
status,
|
|
124
|
-
num: 500,
|
|
125
|
-
skip: 1,
|
|
126
|
-
customer_id,
|
|
127
|
-
category_ids,
|
|
128
|
-
ids: product_ids,
|
|
129
|
-
collection,
|
|
130
|
-
front_end_cache_id: cacheId,
|
|
131
|
-
menu_list_ids,
|
|
132
|
-
with_count,
|
|
133
|
-
// client_schedule_ids: schedule_ids,
|
|
134
|
-
schedule_date,
|
|
135
|
-
application_code: (_b = this.otherParams) == null ? void 0 : _b.channel,
|
|
136
|
-
is_eject: 1,
|
|
137
|
-
with_schedule,
|
|
138
|
-
schedule_datetime,
|
|
139
|
-
extension_type,
|
|
140
|
-
strategy_context
|
|
141
|
-
},
|
|
150
|
+
queryPayload,
|
|
142
151
|
{ osServer: true, callback: options == null ? void 0 : options.callback, subscriberId: options == null ? void 0 : options.subscriberId, customToast: () => {
|
|
143
152
|
} }
|
|
144
153
|
);
|
|
@@ -21,7 +21,7 @@ export declare class QuotationModule extends BaseModule implements Module {
|
|
|
21
21
|
* Look up the quotation price for a specific product (+ optional variant) at a given datetime.
|
|
22
22
|
* Returns the price as a string (e.g. "300.00"), or null if no quotation applies.
|
|
23
23
|
*
|
|
24
|
-
* Priority: iterates quotations already sorted by `sort`
|
|
24
|
+
* Priority: iterates quotations already sorted by `sort` descending (highest = highest priority).
|
|
25
25
|
* First matching quotation whose schedule covers `datetime` and whose product_data contains
|
|
26
26
|
* the requested productId wins.
|
|
27
27
|
*/
|
|
@@ -52,7 +52,7 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
52
52
|
{ useCache: false, osServer: true }
|
|
53
53
|
);
|
|
54
54
|
const list = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) || (res == null ? void 0 : res.list) || [];
|
|
55
|
-
list.sort((a, b) =>
|
|
55
|
+
list.sort((a, b) => b.sort - a.sort);
|
|
56
56
|
this.store.list = list;
|
|
57
57
|
}
|
|
58
58
|
getQuotationList() {
|
|
@@ -96,7 +96,7 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
96
96
|
* Look up the quotation price for a specific product (+ optional variant) at a given datetime.
|
|
97
97
|
* Returns the price as a string (e.g. "300.00"), or null if no quotation applies.
|
|
98
98
|
*
|
|
99
|
-
* Priority: iterates quotations already sorted by `sort`
|
|
99
|
+
* Priority: iterates quotations already sorted by `sort` descending (highest = highest priority).
|
|
100
100
|
* First matching quotation whose schedule covers `datetime` and whose product_data contains
|
|
101
101
|
* the requested productId wins.
|
|
102
102
|
*/
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BaseModule } from '../BaseModule';
|
|
2
|
+
import type { Module, ModuleOptions, PisellCore } from '../../types';
|
|
3
|
+
import type { ResourcePlannerAssignmentResult, ResourcePlannerAssignableSlotResult, ResourcePlannerContextInput, ResourcePlannerProjection, ResourcePlannerQuery, ResourcePlannerSelectionPatch, ResourcePlannerSnapshot, ResourcePlannerValidationResult } from './types';
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './planner';
|
|
6
|
+
export declare enum ResourcePlannerHooks {
|
|
7
|
+
onContextChanged = "resourcePlanner:onContextChanged",
|
|
8
|
+
onSelectionChanged = "resourcePlanner:onSelectionChanged",
|
|
9
|
+
onProjectionChanged = "resourcePlanner:onProjectionChanged"
|
|
10
|
+
}
|
|
11
|
+
export declare class ResourcePlannerModule extends BaseModule implements Module {
|
|
12
|
+
protected defaultName: string;
|
|
13
|
+
protected defaultVersion: string;
|
|
14
|
+
private store;
|
|
15
|
+
initialize(core: PisellCore, options: ModuleOptions): Promise<void>;
|
|
16
|
+
setContext(input: ResourcePlannerContextInput): ResourcePlannerSnapshot;
|
|
17
|
+
mergeContext(input: ResourcePlannerContextInput): ResourcePlannerSnapshot;
|
|
18
|
+
setSelectionPatch(patch: ResourcePlannerSelectionPatch): ResourcePlannerSnapshot;
|
|
19
|
+
queryAvailability(query?: ResourcePlannerQuery): ResourcePlannerProjection;
|
|
20
|
+
autoAssign(query?: ResourcePlannerQuery): ResourcePlannerAssignmentResult;
|
|
21
|
+
resolveAssignableSlots(query?: ResourcePlannerQuery): ResourcePlannerAssignableSlotResult;
|
|
22
|
+
validateSelection(): ResourcePlannerValidationResult;
|
|
23
|
+
getSnapshot(): ResourcePlannerSnapshot;
|
|
24
|
+
}
|