@pisell/pisellos 2.3.53 → 2.3.55
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/model/strategy/adapter/promotion/index.js +9 -0
- 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 +66 -34
- 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 +34 -15
- 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/BaseSales/utils/cartPromotion.js +4 -1
- 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.d.ts +14 -2
- 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 +179 -0
- package/dist/solution/UnifiedBookingSales/index.js +1892 -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 +30 -13
- 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 +48 -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/BaseSales/utils/cartPromotion.js +3 -0
- 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.d.ts +14 -2
- 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 +179 -0
- package/lib/solution/UnifiedBookingSales/index.js +1085 -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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,34 @@
|
|
|
1
|
+
export function getProductHolderConfig(product) {
|
|
2
|
+
var _product$holder_confi, _product$origin;
|
|
3
|
+
if (!product) return null;
|
|
4
|
+
var config = (_product$holder_confi = product === null || product === void 0 ? void 0 : product.holder_config) !== null && _product$holder_confi !== void 0 ? _product$holder_confi : product === null || product === void 0 || (_product$origin = product.origin) === null || _product$origin === void 0 ? void 0 : _product$origin.holder_config;
|
|
5
|
+
if (config !== null && config !== void 0 && config.status && (config === null || config === void 0 ? void 0 : config.status) !== 'enable') return null;
|
|
6
|
+
if (!(config !== null && config !== void 0 && config.resource_id)) return null;
|
|
7
|
+
return config;
|
|
8
|
+
}
|
|
9
|
+
export function getFormIdFromHolderConfig(config) {
|
|
10
|
+
return Number(config === null || config === void 0 ? void 0 : config.resource_id);
|
|
11
|
+
}
|
|
12
|
+
export function normalizeFormId(formId) {
|
|
13
|
+
return Number(formId);
|
|
14
|
+
}
|
|
15
|
+
export function createEmptyFormItemData() {
|
|
16
|
+
return {
|
|
17
|
+
records: [],
|
|
18
|
+
form: {}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function resolveFormMetaFromHolderItem(mapKey, item) {
|
|
22
|
+
var _ref, _ref2, _nestedForm$id, _nestedForm$shop_id;
|
|
23
|
+
var formInfo = item.form || {};
|
|
24
|
+
var nestedForm = formInfo.form || {};
|
|
25
|
+
var form_id = normalizeFormId((_ref = (_ref2 = (_nestedForm$id = nestedForm.id) !== null && _nestedForm$id !== void 0 ? _nestedForm$id : formInfo.form_id) !== null && _ref2 !== void 0 ? _ref2 : formInfo.id) !== null && _ref !== void 0 ? _ref : mapKey);
|
|
26
|
+
var shop_id = (_nestedForm$shop_id = nestedForm.shop_id) !== null && _nestedForm$shop_id !== void 0 ? _nestedForm$shop_id : formInfo.shop_id;
|
|
27
|
+
if (shop_id === undefined || shop_id === null || shop_id === '') {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
form_id: form_id,
|
|
32
|
+
shop_id: shop_id
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -105,12 +105,12 @@ export var OpenDataModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
105
105
|
key: "fetchOpenData",
|
|
106
106
|
value: function () {
|
|
107
107
|
var _fetchOpenData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(params) {
|
|
108
|
-
var _this$appPlugin
|
|
108
|
+
var _this$appPlugin, _this$appPlugin$getDa;
|
|
109
109
|
var getData, shopId, tenantId, headers, response, data;
|
|
110
110
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
111
111
|
while (1) switch (_context2.prev = _context2.next) {
|
|
112
112
|
case 0:
|
|
113
|
-
getData = (_this$appPlugin
|
|
113
|
+
getData = (_this$appPlugin = this.appPlugin) === null || _this$appPlugin === void 0 || (_this$appPlugin$getDa = _this$appPlugin.getData) === null || _this$appPlugin$getDa === void 0 ? void 0 : _this$appPlugin$getDa.call(_this$appPlugin);
|
|
114
114
|
shopId = getData === null || getData === void 0 ? void 0 : getData('shop_id');
|
|
115
115
|
if (shopId) {
|
|
116
116
|
_context2.next = 4;
|
|
@@ -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, AddProductToOrderOptions, OrderIdentitySnapshot, OrderPaymentSource, OrderSnapshot, OrderSyncState, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, SubmitSalesOrderParams, OrderProduct, OrderProductIdentity, OrderSummary, OrderTempOrder, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, SendCustomerPayLinkParams, UpdateTempOrderCustomerInput, OrderCustomerPatch, OrderCustomerView, ReplaceTempOrderOptions, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions, RemoveProductsFromOrderOptions } 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[];
|
|
@@ -32,7 +32,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
32
32
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
33
33
|
import { BaseModule } from "../BaseModule";
|
|
34
34
|
import { OrderHooks } from "./types";
|
|
35
|
-
import { composeLinePrice, generateDuration, getAllDiscountList, mergeRelationForms, buildSubmitPayload, createDefaultTempOrder, createDefaultOrderRulesHooks, createEmptySummary, createUuidV4, formatDateTime, isTempOrder, normalizeBookingIsAll, normalizeBookingSubType, mapPaymentItemsToOrderPayments, normalizeOrderProductDiscountList, resolveEffectivePerUnitDiscount, ensureProductSku, getProductSkuOptions, normalizeProductSkuOptions, sumOptionUnitPrice, clearTempOrderHolderAssignments, getOrderProductLineUid, indexOrderProductsByUid, calculateOrderProductsDeposit, mergeOrderProductDisplayFields, resolveIsFormSubject } from "./utils";
|
|
35
|
+
import { composeLinePrice, generateDuration, getAllDiscountList, mergeRelationForms, ensureCartItemOriginHolder, buildSubmitPayload, createDefaultTempOrder, createDefaultOrderRulesHooks, createEmptySummary, createUuidV4, formatDateTime, isTempOrder, normalizeBookingIsAll, normalizeBookingSubType, mapPaymentItemsToOrderPayments, normalizeOrderProductDiscountList, resolveEffectivePerUnitDiscount, ensureProductSku, getProductSkuOptions, normalizeProductSkuOptions, sumOptionUnitPrice, clearTempOrderHolderAssignments, getOrderProductLineUid, indexOrderProductsByUid, calculateOrderProductsDeposit, mergeOrderProductDisplayFields, resolveIsFormSubject } from "./utils";
|
|
36
36
|
import { isNormalProduct } from "../Product/utils";
|
|
37
37
|
import dayjs from 'dayjs';
|
|
38
38
|
import { ensureOrderPaymentNumber, mergeOrderPaymentRecord, resolveOrderPaymentIdentity } from "./payment-utils";
|
|
@@ -309,8 +309,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
309
309
|
key: "initialize",
|
|
310
310
|
value: function () {
|
|
311
311
|
var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(core, options) {
|
|
312
|
-
var _otherParams$rules, _otherParams$order, _otherParams$hooks;
|
|
313
|
-
var app, otherParams;
|
|
312
|
+
var _appPlugin$getApp, _otherParams$rules, _otherParams$order, _otherParams$hooks;
|
|
313
|
+
var appPlugin, app, otherParams;
|
|
314
314
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
315
315
|
while (1) switch (_context.prev = _context.next) {
|
|
316
316
|
case 0:
|
|
@@ -326,15 +326,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
326
326
|
this.store.availableWalletIds = [];
|
|
327
327
|
}
|
|
328
328
|
this.request = this.core.getPlugin('request');
|
|
329
|
-
|
|
330
|
-
if (
|
|
331
|
-
|
|
332
|
-
break;
|
|
329
|
+
appPlugin = this.core.getPlugin('app');
|
|
330
|
+
if (!appPlugin) {
|
|
331
|
+
console.error('Order 模块需要 app 插件支持');
|
|
333
332
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
app = this.appPlugin.getApp();
|
|
337
|
-
this.logger = app.logger;
|
|
333
|
+
app = appPlugin === null || appPlugin === void 0 || (_appPlugin$getApp = appPlugin.getApp) === null || _appPlugin$getApp === void 0 ? void 0 : _appPlugin$getApp.call(appPlugin);
|
|
334
|
+
this.logger = app === null || app === void 0 ? void 0 : app.logger;
|
|
338
335
|
this.window = this.core.getPlugin('window');
|
|
339
336
|
otherParams = options.otherParams || {};
|
|
340
337
|
this.cacheId = otherParams.cacheId;
|
|
@@ -345,7 +342,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
345
342
|
this.otherParams = otherParams;
|
|
346
343
|
this.registerDiscountModules(options);
|
|
347
344
|
this.logInfo('OrderModule initialized successfully');
|
|
348
|
-
case
|
|
345
|
+
case 20:
|
|
349
346
|
case "end":
|
|
350
347
|
return _context.stop();
|
|
351
348
|
}
|
|
@@ -1276,6 +1273,16 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1276
1273
|
value: function persistTempOrder() {
|
|
1277
1274
|
// no-op: OrderModule 的刷新恢复不再依赖 localStorage。
|
|
1278
1275
|
}
|
|
1276
|
+
}, {
|
|
1277
|
+
key: "notifyTempOrderChanged",
|
|
1278
|
+
value: function notifyTempOrderChanged() {
|
|
1279
|
+
if (!this.store.tempOrder) return;
|
|
1280
|
+
this.store.tempOrder = _objectSpread(_objectSpread({}, this.store.tempOrder), {}, {
|
|
1281
|
+
products: _toConsumableArray(this.store.tempOrder.products),
|
|
1282
|
+
bookings: this.store.tempOrder.bookings ? _toConsumableArray(this.store.tempOrder.bookings) : []
|
|
1283
|
+
});
|
|
1284
|
+
this.persistTempOrder();
|
|
1285
|
+
}
|
|
1279
1286
|
|
|
1280
1287
|
// ─── TempOrder: 创建 & 获取 ───
|
|
1281
1288
|
}, {
|
|
@@ -3881,8 +3888,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3881
3888
|
_normalizedIncoming$p2,
|
|
3882
3889
|
_booking_uid,
|
|
3883
3890
|
_metadata,
|
|
3891
|
+
_productToAdd$metadat,
|
|
3892
|
+
_origin,
|
|
3884
3893
|
_this26 = this;
|
|
3885
|
-
var linked, productToAdd, incomingFingerprint, normalizedIncoming, isWeighingProduct, netWeight, incomingBookingUid, hasIncomingGoodPass, hasIncomingProductNote, hasIncomingBookingUid, shouldForceNewLine, matchedIndex, matchedProduct, existedFingerprint, shouldMerge, insertAtIndex, _targetProduct$metada, targetProduct, targetUid, normalizedProduct, nextNum, targetIsManualProductDiscount, nextDiscountList, mergedProduct;
|
|
3894
|
+
var linked, productToAdd, incomingFingerprint, normalizedIncoming, isWeighingProduct, netWeight, incomingBookingUid, hasIncomingGoodPass, hasIncomingProductNote, hasIncomingBookingUid, isIncomingCustomItem, shouldForceNewLine, matchedIndex, matchedProduct, existedFingerprint, shouldMerge, insertAtIndex, _targetProduct$metada, targetProduct, targetUid, normalizedProduct, nextNum, targetIsManualProductDiscount, nextDiscountList, mergedProduct;
|
|
3886
3895
|
return _regeneratorRuntime().wrap(function _callee20$(_context22) {
|
|
3887
3896
|
while (1) switch (_context22.prev = _context22.next) {
|
|
3888
3897
|
case 0:
|
|
@@ -3912,7 +3921,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3912
3921
|
hasIncomingGoodPass = this.hasGoodPassDiscount(normalizedIncoming);
|
|
3913
3922
|
hasIncomingProductNote = this.hasOrderProductLineNote(normalizedIncoming);
|
|
3914
3923
|
hasIncomingBookingUid = this.hasLinkedBookingUid(productToAdd) || this.hasLinkedBookingUid(normalizedIncoming);
|
|
3915
|
-
|
|
3924
|
+
isIncomingCustomItem = ((_productToAdd$metadat = productToAdd.metadata) === null || _productToAdd$metadat === void 0 || (_productToAdd$metadat = _productToAdd$metadat.origin) === null || _productToAdd$metadat === void 0 ? void 0 : _productToAdd$metadat.isCustomItem) === true || ((_origin = productToAdd._origin) === null || _origin === void 0 ? void 0 : _origin.isCustomItem) === true;
|
|
3925
|
+
shouldForceNewLine = !!booking || hasIncomingProductNote || hasIncomingBookingUid || isIncomingCustomItem || isWeighingProduct;
|
|
3916
3926
|
matchedIndex = hasIncomingGoodPass || shouldForceNewLine ? -1 : tempOrder.products.findIndex(function (item) {
|
|
3917
3927
|
var _item$metadata3;
|
|
3918
3928
|
if (_this26.hasGoodPassDiscount(item)) return false;
|
|
@@ -3927,10 +3937,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3927
3937
|
matchedProduct = matchedIndex === -1 ? null : tempOrder.products[matchedIndex];
|
|
3928
3938
|
existedFingerprint = matchedProduct ? buildProductLineFingerprint(getProductSkuOptions(matchedProduct), matchedProduct.product_bundle) : '';
|
|
3929
3939
|
if (!matchedProduct) {
|
|
3930
|
-
_context22.next =
|
|
3940
|
+
_context22.next = 25;
|
|
3931
3941
|
break;
|
|
3932
3942
|
}
|
|
3933
|
-
_context22.next =
|
|
3943
|
+
_context22.next = 22;
|
|
3934
3944
|
return this.shouldMergeProductToOrder({
|
|
3935
3945
|
incomingProduct: productToAdd,
|
|
3936
3946
|
normalizedIncoming: normalizedIncoming,
|
|
@@ -3941,13 +3951,13 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3941
3951
|
tempOrder: tempOrder,
|
|
3942
3952
|
booking: booking
|
|
3943
3953
|
});
|
|
3944
|
-
case
|
|
3954
|
+
case 22:
|
|
3945
3955
|
_context22.t0 = _context22.sent;
|
|
3946
|
-
_context22.next =
|
|
3956
|
+
_context22.next = 26;
|
|
3947
3957
|
break;
|
|
3948
|
-
case 24:
|
|
3949
|
-
_context22.t0 = false;
|
|
3950
3958
|
case 25:
|
|
3959
|
+
_context22.t0 = false;
|
|
3960
|
+
case 26:
|
|
3951
3961
|
shouldMerge = _context22.t0;
|
|
3952
3962
|
if (matchedIndex === -1 || !matchedProduct || !shouldMerge) {
|
|
3953
3963
|
this.captureProductRuntime(tempOrder, productToAdd, normalizedIncoming);
|
|
@@ -4008,7 +4018,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
4008
4018
|
if (linked) {
|
|
4009
4019
|
tempOrder.bookings = [].concat(_toConsumableArray(tempOrder.bookings || []), [linked.booking]);
|
|
4010
4020
|
}
|
|
4011
|
-
case
|
|
4021
|
+
case 29:
|
|
4012
4022
|
case "end":
|
|
4013
4023
|
return _context22.stop();
|
|
4014
4024
|
}
|
|
@@ -5334,7 +5344,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5334
5344
|
var _syncPaymentsToOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee36(params) {
|
|
5335
5345
|
var _this31 = this,
|
|
5336
5346
|
_params$confirmPendin;
|
|
5337
|
-
var tempOrder, needsPaymentNumber, devicePrefix, mappedPayments, shouldConfirmPendingVoucherPayments, effectivePayments, completion, orderPaidPaymentTotal, paymentStatus, paymentSyncIdempotencyToken, submitResult;
|
|
5347
|
+
var tempOrder, needsPaymentNumber, devicePrefix, mappedPayments, shouldConfirmPendingVoucherPayments, effectivePayments, completion, orderPaidPaymentTotal, paymentStatus, paymentSyncIdempotencyToken, submitParams, submitResult;
|
|
5338
5348
|
return _regeneratorRuntime().wrap(function _callee36$(_context39) {
|
|
5339
5349
|
while (1) switch (_context39.prev = _context39.next) {
|
|
5340
5350
|
case 0:
|
|
@@ -5387,8 +5397,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5387
5397
|
case 25:
|
|
5388
5398
|
this.store.syncState = 'submitting';
|
|
5389
5399
|
paymentSyncIdempotencyToken = this.buildPaymentSyncIdempotencyToken(tempOrder, effectivePayments);
|
|
5390
|
-
|
|
5391
|
-
return this.submitTempOrder({
|
|
5400
|
+
submitParams = {
|
|
5392
5401
|
payments: effectivePayments,
|
|
5393
5402
|
paymentStatus: paymentStatus,
|
|
5394
5403
|
smallTicketDataFlag: params.smallTicketDataFlag,
|
|
@@ -5401,13 +5410,28 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5401
5410
|
});
|
|
5402
5411
|
return nextPayload;
|
|
5403
5412
|
}
|
|
5404
|
-
}
|
|
5405
|
-
|
|
5406
|
-
|
|
5413
|
+
};
|
|
5414
|
+
if (!(params.checkoutSyncTaskEnabled === false)) {
|
|
5415
|
+
_context39.next = 34;
|
|
5416
|
+
break;
|
|
5417
|
+
}
|
|
5418
|
+
_context39.next = 31;
|
|
5419
|
+
return this.submitTempOrderAsync(submitParams);
|
|
5420
|
+
case 31:
|
|
5421
|
+
_context39.t1 = _context39.sent;
|
|
5422
|
+
_context39.next = 37;
|
|
5423
|
+
break;
|
|
5424
|
+
case 34:
|
|
5425
|
+
_context39.next = 36;
|
|
5426
|
+
return this.submitTempOrder(submitParams);
|
|
5427
|
+
case 36:
|
|
5428
|
+
_context39.t1 = _context39.sent;
|
|
5429
|
+
case 37:
|
|
5430
|
+
submitResult = _context39.t1;
|
|
5407
5431
|
return _context39.abrupt("return", _objectSpread(_objectSpread({}, completion), {}, {
|
|
5408
5432
|
submitResult: submitResult
|
|
5409
5433
|
}));
|
|
5410
|
-
case
|
|
5434
|
+
case 39:
|
|
5411
5435
|
case "end":
|
|
5412
5436
|
return _context39.stop();
|
|
5413
5437
|
}
|
|
@@ -5421,6 +5445,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5421
5445
|
}, {
|
|
5422
5446
|
key: "createOrder",
|
|
5423
5447
|
value: function createOrder(params) {
|
|
5448
|
+
var _this32 = this;
|
|
5424
5449
|
var order = _objectSpread({
|
|
5425
5450
|
type: (params === null || params === void 0 ? void 0 : params.type) || 'appointment_booking',
|
|
5426
5451
|
// 要从外面拿,virtual
|
|
@@ -5432,11 +5457,13 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5432
5457
|
schedule_date: '',
|
|
5433
5458
|
is_deposit: 0,
|
|
5434
5459
|
relation_products: [],
|
|
5435
|
-
relation_forms: []
|
|
5460
|
+
relation_forms: [],
|
|
5461
|
+
business_code: params === null || params === void 0 ? void 0 : params.business_code
|
|
5436
5462
|
}, (params === null || params === void 0 ? void 0 : params.extraData) || {});
|
|
5437
5463
|
var is_deposit = 0; // 是否存在定金,0 不存在,1 存在
|
|
5438
5464
|
if (params.cartItems.length > 0) {
|
|
5439
5465
|
params.cartItems.forEach(function (item) {
|
|
5466
|
+
var _params$extraData;
|
|
5440
5467
|
if (!item._origin.duration) {
|
|
5441
5468
|
var _generateDuration = generateDuration(item),
|
|
5442
5469
|
duration = _generateDuration.duration,
|
|
@@ -5448,6 +5475,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5448
5475
|
var discountList = getAllDiscountList(item);
|
|
5449
5476
|
item._origin.product.discount_list = discountList;
|
|
5450
5477
|
|
|
5478
|
+
// 为预约补齐 holder 信息
|
|
5479
|
+
if (params !== null && params !== void 0 && (_params$extraData = params.extraData) !== null && _params$extraData !== void 0 && _params$extraData.is_add_holder_info) {
|
|
5480
|
+
ensureCartItemOriginHolder(item, _this32.window);
|
|
5481
|
+
}
|
|
5482
|
+
|
|
5451
5483
|
// 购物车是否为普通商品
|
|
5452
5484
|
if (isNormalProduct(item._origin)) {
|
|
5453
5485
|
var _order$relation_forms;
|
|
@@ -6105,7 +6137,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6105
6137
|
}, {
|
|
6106
6138
|
key: "normalizeTempOrderForRuntime",
|
|
6107
6139
|
value: function normalizeTempOrderForRuntime(raw, options) {
|
|
6108
|
-
var
|
|
6140
|
+
var _this33 = this;
|
|
6109
6141
|
var runtimeRaw = this.withoutSyntheticDraftOrderIdForRuntime(raw);
|
|
6110
6142
|
var nextTempOrder = _objectSpread(_objectSpread({}, this.createDefaultTempOrderInstance()), runtimeRaw || {});
|
|
6111
6143
|
// ES 列表详情使用 id 表示订单主键;OS 详情态统一依赖 order_id 驱动操作按钮。
|
|
@@ -6129,12 +6161,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6129
6161
|
nextTempOrder.holder = raw.holder && _typeof(raw.holder) === 'object' ? _objectSpread({}, raw.holder) : null;
|
|
6130
6162
|
var rawProducts = Array.isArray(raw.products) ? raw.products : [];
|
|
6131
6163
|
nextTempOrder.products = rawProducts.length > 0 ? rawProducts.map(function (p) {
|
|
6132
|
-
return
|
|
6164
|
+
return _this33.normalizeHydratedOrderProduct(p, {
|
|
6133
6165
|
makeEditMark: options === null || options === void 0 ? void 0 : options.makeEditMark
|
|
6134
6166
|
});
|
|
6135
6167
|
}) : [];
|
|
6136
6168
|
nextTempOrder.bookings = Array.isArray(raw.bookings) ? raw.bookings.map(function (b) {
|
|
6137
|
-
var booking =
|
|
6169
|
+
var booking = _this33.normalizeHydratedBookingHolder(b || {});
|
|
6138
6170
|
return _objectSpread(_objectSpread({}, booking), {}, {
|
|
6139
6171
|
is_all: normalizeBookingIsAll(booking),
|
|
6140
6172
|
sub_type: normalizeBookingSubType(booking)
|
|
@@ -6321,7 +6353,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6321
6353
|
}, {
|
|
6322
6354
|
key: "normalizeHydratedOrderProduct",
|
|
6323
6355
|
value: function normalizeHydratedOrderProduct(product, options) {
|
|
6324
|
-
var
|
|
6356
|
+
var _this34 = this;
|
|
6325
6357
|
var row = _objectSpread({}, product || {});
|
|
6326
6358
|
if (row.num === undefined && row.product_quantity !== undefined) {
|
|
6327
6359
|
row.num = row.product_quantity;
|
|
@@ -6329,7 +6361,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6329
6361
|
var productSku = ensureProductSku(row);
|
|
6330
6362
|
row.product_sku = _objectSpread(_objectSpread({}, productSku), {}, {
|
|
6331
6363
|
option: normalizeProductSkuOptions(productSku.option.map(function (optionItem) {
|
|
6332
|
-
return
|
|
6364
|
+
return _this34.normalizeHydratedProductOptionItem(optionItem || {});
|
|
6333
6365
|
}))
|
|
6334
6366
|
});
|
|
6335
6367
|
delete row["product_".concat('option', "_item")];
|
|
@@ -414,6 +414,7 @@ export interface CommitOrderParams {
|
|
|
414
414
|
type: 'virtual' | 'appointment_booking';
|
|
415
415
|
platform?: string;
|
|
416
416
|
extraData?: Record<string, any>;
|
|
417
|
+
business_code?: string;
|
|
417
418
|
};
|
|
418
419
|
}
|
|
419
420
|
export interface OrderSubmitBooking {
|
|
@@ -589,6 +590,12 @@ export interface SyncPaymentsToOrderParams {
|
|
|
589
590
|
payments: OrderPaymentSource[];
|
|
590
591
|
paymentStatus?: SubmitSalesOrderParams['query']['payment_status'];
|
|
591
592
|
submitWhenPaid?: boolean;
|
|
593
|
+
/**
|
|
594
|
+
* Whether the checkout should be queued as the local `sync_sales` task.
|
|
595
|
+
* Defaults to true to preserve the WebPOS retry path. Set to false when
|
|
596
|
+
* the caller must wait for the cloud checkout response before proceeding.
|
|
597
|
+
*/
|
|
598
|
+
checkoutSyncTaskEnabled?: boolean;
|
|
592
599
|
smallTicketDataFlag?: number;
|
|
593
600
|
businessCode?: string;
|
|
594
601
|
channel?: string;
|
|
@@ -751,6 +758,8 @@ export interface OrderModuleAPI {
|
|
|
751
758
|
setEnableTempOrderPersist: (enabled: boolean) => void;
|
|
752
759
|
/** 是否允许 saveDraft 写入 IndexedDB 草稿。 */
|
|
753
760
|
isTempOrderPersistEnabled: () => boolean;
|
|
761
|
+
/** 提交 tempOrder 变更并触发 `{moduleName}:changed` 事件 */
|
|
762
|
+
notifyTempOrderChanged: () => void;
|
|
754
763
|
submitTempOrder: <T = any>(params?: {
|
|
755
764
|
cacheId?: string;
|
|
756
765
|
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;
|
|
@@ -20,6 +20,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
20
20
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
21
21
|
import dayjs from "dayjs";
|
|
22
22
|
import Decimal from 'decimal.js';
|
|
23
|
+
import { getProductHolderConfig } from "../Holder/utils";
|
|
23
24
|
import { buildProductLineFingerprint, createEmptySummary } from "../../solution/ScanOrder/utils";
|
|
24
25
|
import { createUuidV4 } from "./utils/orderCollectionIdentity";
|
|
25
26
|
/**
|
|
@@ -744,10 +745,41 @@ export var mergeRelationForms = function mergeRelationForms(relationForms) {
|
|
|
744
745
|
return item.form_record_ids.length > 0;
|
|
745
746
|
}); // 过滤掉没有有效记录的表单
|
|
746
747
|
};
|
|
748
|
+
function getCustomerIdFromStorage(window) {
|
|
749
|
+
try {
|
|
750
|
+
var _window$getLocalStora;
|
|
751
|
+
var customer = JSON.parse((window === null || window === void 0 || (_window$getLocalStora = window.getLocalStorage) === null || _window$getLocalStora === void 0 ? void 0 : _window$getLocalStora.call(window, 'customer')) || '{}');
|
|
752
|
+
var customerId = Number(customer === null || customer === void 0 ? void 0 : customer.id);
|
|
753
|
+
return Number.isFinite(customerId) && customerId > 0 ? customerId : undefined;
|
|
754
|
+
} catch (_unused) {
|
|
755
|
+
return undefined;
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* 为购物车行补齐订单所需的 holder 信息(与 cartAccount 结构保持一致)
|
|
761
|
+
*/
|
|
762
|
+
export function ensureCartItemOriginHolder(cartItem, window) {
|
|
763
|
+
var _cartItem$_origin, _cartItem$_productIni;
|
|
764
|
+
if (cartItem !== null && cartItem !== void 0 && (_cartItem$_origin = cartItem._origin) !== null && _cartItem$_origin !== void 0 && _cartItem$_origin.holder) {
|
|
765
|
+
return;
|
|
766
|
+
}
|
|
767
|
+
var holderConfig = getProductHolderConfig((_cartItem$_productIni = cartItem === null || cartItem === void 0 ? void 0 : cartItem._productInit) !== null && _cartItem$_productIni !== void 0 ? _cartItem$_productIni : cartItem === null || cartItem === void 0 ? void 0 : cartItem._productOrigin);
|
|
768
|
+
var formRecordId = cartItem === null || cartItem === void 0 ? void 0 : cartItem.holder_id;
|
|
769
|
+
if (!(holderConfig !== null && holderConfig !== void 0 && holderConfig.resource_id) || formRecordId == null) {
|
|
770
|
+
return;
|
|
771
|
+
}
|
|
772
|
+
cartItem._origin.holder = {
|
|
773
|
+
customer_id: getCustomerIdFromStorage(window),
|
|
774
|
+
form_id: holderConfig.resource_id,
|
|
775
|
+
form_record: [formRecordId]
|
|
776
|
+
};
|
|
777
|
+
}
|
|
778
|
+
;
|
|
747
779
|
export var getAllDiscountList = function getAllDiscountList(cartItem) {
|
|
748
|
-
var _cartItem$
|
|
749
|
-
var discountList = (cartItem === null || cartItem === void 0 || (_cartItem$
|
|
750
|
-
((cartItem === null || cartItem === void 0 || (_cartItem$
|
|
780
|
+
var _cartItem$_origin2, _cartItem$_origin3;
|
|
781
|
+
var discountList = (cartItem === null || cartItem === void 0 || (_cartItem$_origin2 = cartItem._origin) === null || _cartItem$_origin2 === void 0 || (_cartItem$_origin2 = _cartItem$_origin2.product) === null || _cartItem$_origin2 === void 0 ? void 0 : _cartItem$_origin2.discount_list) || [];
|
|
782
|
+
((cartItem === null || cartItem === void 0 || (_cartItem$_origin3 = cartItem._origin) === null || _cartItem$_origin3 === void 0 || (_cartItem$_origin3 = _cartItem$_origin3.product) === null || _cartItem$_origin3 === void 0 ? void 0 : _cartItem$_origin3.product_bundle) || []).forEach(function (item) {
|
|
751
783
|
discountList = [].concat(_toConsumableArray(discountList), _toConsumableArray((item === null || item === void 0 ? void 0 : item.discount_list) || []));
|
|
752
784
|
item.discount_list = undefined;
|
|
753
785
|
});
|