@pisell/pisellos 2.2.174 → 2.2.175
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/Customer/index.d.ts +0 -6
- package/dist/modules/Customer/index.js +83 -129
- package/dist/modules/Customer/types.d.ts +0 -2
- package/dist/modules/Discount/index.d.ts +4 -2
- package/dist/modules/Discount/index.js +93 -8
- package/dist/modules/Discount/types.d.ts +7 -1
- package/dist/modules/Order/index.d.ts +17 -33
- package/dist/modules/Order/index.js +395 -757
- package/dist/modules/Order/types.d.ts +17 -58
- package/dist/modules/Order/types.js +0 -2
- package/dist/modules/Order/utils.d.ts +1 -39
- package/dist/modules/Order/utils.js +31 -220
- package/dist/modules/Quotation/index.d.ts +1 -0
- package/dist/modules/Quotation/index.js +21 -23
- package/dist/modules/Rules/index.d.ts +0 -4
- package/dist/modules/Rules/index.js +10 -26
- package/dist/modules/SalesSummary/index.js +2 -4
- package/dist/modules/Schedule/index.js +2 -6
- package/dist/modules/index.d.ts +0 -1
- package/dist/modules/index.js +1 -2
- package/dist/server/index.js +6 -10
- package/dist/server/modules/order/utils/filterOrders.js +6 -20
- package/dist/server/modules/products/index.d.ts +1 -1
- package/dist/server/modules/products/index.js +113 -130
- package/dist/server/modules/schedule/index.js +6 -13
- package/dist/solution/BaseSales/index.d.ts +7 -53
- package/dist/solution/BaseSales/index.js +340 -1165
- package/dist/solution/BaseSales/types.d.ts +1 -67
- package/dist/solution/BaseSales/types.js +1 -3
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +16 -68
- package/dist/solution/BaseSales/utils.js +8 -46
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +1 -133
- package/dist/solution/BookingTicket/index.js +175 -776
- package/dist/solution/BookingTicket/types.d.ts +0 -2
- package/dist/solution/BookingTicket/types.js +0 -3
- package/dist/solution/ScanOrder/index.d.ts +3 -9
- package/dist/solution/ScanOrder/index.js +128 -231
- package/dist/solution/ScanOrder/utils.js +8 -46
- package/dist/solution/ShopDiscount/index.d.ts +1 -0
- package/dist/solution/ShopDiscount/index.js +23 -18
- package/dist/solution/VenueBooking/index.d.ts +9 -5
- package/dist/solution/VenueBooking/index.js +55 -103
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
- package/dist/solution/VenueBooking/utils/slotMerge.js +0 -10
- package/lib/modules/Customer/index.d.ts +0 -6
- package/lib/modules/Customer/index.js +11 -26
- package/lib/modules/Customer/types.d.ts +0 -2
- package/lib/modules/Discount/index.d.ts +4 -2
- package/lib/modules/Discount/index.js +63 -8
- package/lib/modules/Discount/types.d.ts +7 -1
- package/lib/modules/Order/index.d.ts +17 -33
- package/lib/modules/Order/index.js +148 -402
- package/lib/modules/Order/types.d.ts +17 -58
- package/lib/modules/Order/utils.d.ts +1 -39
- package/lib/modules/Order/utils.js +22 -198
- package/lib/modules/Quotation/index.d.ts +1 -0
- package/lib/modules/Quotation/index.js +15 -18
- package/lib/modules/Rules/index.d.ts +0 -4
- package/lib/modules/Rules/index.js +14 -22
- package/lib/modules/SalesSummary/index.js +2 -4
- package/lib/modules/Schedule/index.js +1 -3
- package/lib/modules/index.d.ts +0 -1
- package/lib/modules/index.js +1 -3
- package/lib/server/index.js +0 -2
- package/lib/server/modules/order/utils/filterOrders.js +4 -12
- package/lib/server/modules/products/index.d.ts +1 -1
- package/lib/server/modules/products/index.js +20 -30
- package/lib/server/modules/schedule/index.js +1 -2
- package/lib/solution/BaseSales/index.d.ts +7 -53
- package/lib/solution/BaseSales/index.js +22 -530
- package/lib/solution/BaseSales/types.d.ts +1 -67
- package/lib/solution/BaseSales/types.js +1 -3
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +12 -71
- package/lib/solution/BaseSales/utils.js +6 -46
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +1 -133
- package/lib/solution/BookingTicket/index.js +8 -349
- package/lib/solution/BookingTicket/types.d.ts +0 -2
- package/lib/solution/BookingTicket/types.js +0 -6
- package/lib/solution/ScanOrder/index.d.ts +3 -9
- package/lib/solution/ScanOrder/index.js +66 -147
- package/lib/solution/ScanOrder/utils.js +6 -46
- package/lib/solution/ShopDiscount/index.d.ts +1 -0
- package/lib/solution/ShopDiscount/index.js +4 -2
- package/lib/solution/VenueBooking/index.d.ts +9 -5
- package/lib/solution/VenueBooking/index.js +14 -50
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
- package/lib/solution/VenueBooking/utils/slotMerge.js +0 -10
- package/package.json +2 -2
- package/dist/modules/BookingContext/index.d.ts +0 -37
- package/dist/modules/BookingContext/index.js +0 -436
- package/dist/modules/BookingContext/types.d.ts +0 -102
- package/dist/modules/BookingContext/types.js +0 -51
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -193
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -137
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -75
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -215
- package/dist/modules/BookingContext/utils/flexible.d.ts +0 -28
- package/dist/modules/BookingContext/utils/flexible.js +0 -56
- package/dist/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
- package/dist/modules/BookingContext/utils/formatResourceList.js +0 -38
- package/dist/modules/BookingContext/utils/index.d.ts +0 -11
- package/dist/modules/BookingContext/utils/index.js +0 -11
- package/dist/modules/BookingContext/utils/noResource.d.ts +0 -13
- package/dist/modules/BookingContext/utils/noResource.js +0 -77
- package/dist/modules/BookingContext/utils/productExtend.d.ts +0 -72
- package/dist/modules/BookingContext/utils/productExtend.js +0 -339
- package/dist/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
- package/dist/modules/BookingContext/utils/resourceErrors.js +0 -74
- package/dist/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
- package/dist/modules/BookingContext/utils/resourceSelection.js +0 -24
- package/dist/modules/BookingContext/utils/resources.d.ts +0 -80
- package/dist/modules/BookingContext/utils/resources.js +0 -486
- package/dist/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
- package/dist/modules/BookingContext/utils/serviceTimes.js +0 -151
- package/dist/modules/BookingContext/utils/timeSlices.d.ts +0 -42
- package/dist/modules/BookingContext/utils/timeSlices.js +0 -100
- package/dist/modules/Order/utils/manualProductDiscount.d.ts +0 -106
- package/dist/modules/Order/utils/manualProductDiscount.js +0 -212
- package/dist/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
- package/dist/solution/BaseSales/utils/quotationPrice.js +0 -237
- package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +0 -113
- package/dist/solution/BookingTicket/utils/addProductDecision.js +0 -346
- package/lib/modules/BookingContext/index.d.ts +0 -37
- package/lib/modules/BookingContext/index.js +0 -297
- package/lib/modules/BookingContext/types.d.ts +0 -102
- package/lib/modules/BookingContext/types.js +0 -34
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -207
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -141
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -75
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -198
- package/lib/modules/BookingContext/utils/flexible.d.ts +0 -28
- package/lib/modules/BookingContext/utils/flexible.js +0 -80
- package/lib/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
- package/lib/modules/BookingContext/utils/formatResourceList.js +0 -50
- package/lib/modules/BookingContext/utils/index.d.ts +0 -11
- package/lib/modules/BookingContext/utils/index.js +0 -43
- package/lib/modules/BookingContext/utils/noResource.d.ts +0 -13
- package/lib/modules/BookingContext/utils/noResource.js +0 -90
- package/lib/modules/BookingContext/utils/productExtend.d.ts +0 -72
- package/lib/modules/BookingContext/utils/productExtend.js +0 -283
- package/lib/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
- package/lib/modules/BookingContext/utils/resourceErrors.js +0 -80
- package/lib/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
- package/lib/modules/BookingContext/utils/resourceSelection.js +0 -46
- package/lib/modules/BookingContext/utils/resources.d.ts +0 -80
- package/lib/modules/BookingContext/utils/resources.js +0 -377
- package/lib/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
- package/lib/modules/BookingContext/utils/serviceTimes.js +0 -162
- package/lib/modules/BookingContext/utils/timeSlices.d.ts +0 -42
- package/lib/modules/BookingContext/utils/timeSlices.js +0 -124
- package/lib/modules/Order/utils/manualProductDiscount.d.ts +0 -106
- package/lib/modules/Order/utils/manualProductDiscount.js +0 -207
- package/lib/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
- package/lib/solution/BaseSales/utils/quotationPrice.js +0 -277
- package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +0 -113
- package/lib/solution/BookingTicket/utils/addProductDecision.js +0 -318
|
@@ -2,12 +2,9 @@ import { CartItem } from '../Cart/types';
|
|
|
2
2
|
import type { DiscountModule } from '../Discount';
|
|
3
3
|
import type { RulesModule } from '../Rules';
|
|
4
4
|
import type { Discount } from '../Discount/types';
|
|
5
|
-
import type { UnavailableReason } from '../Rules/types';
|
|
6
5
|
import type { SubmitPayloadEnhancer } from './utils';
|
|
7
6
|
import type { PaymentItem } from '../Payment/types';
|
|
8
7
|
import type { ICustomer } from '../AccountList/types';
|
|
9
|
-
import type { OrderProductDiscountItem } from '../../server/modules/order/types';
|
|
10
|
-
export type { OrderProductDiscountItem } from '../../server/modules/order/types';
|
|
11
8
|
export declare enum OrderHooks {
|
|
12
9
|
OnOrderCreate = "order:onOrderCreate",
|
|
13
10
|
OnOrderUpdate = "order:onOrderUpdate",
|
|
@@ -51,13 +48,6 @@ export interface OrderCustomerChangePayload {
|
|
|
51
48
|
patch: OrderCustomerView;
|
|
52
49
|
snapshot: ICustomer | null;
|
|
53
50
|
}
|
|
54
|
-
export interface OrderScanCodeResult {
|
|
55
|
-
isAvailable: boolean;
|
|
56
|
-
discountList: Discount[];
|
|
57
|
-
scannedDiscountList: Discount[];
|
|
58
|
-
type: 'server' | 'clientCalc';
|
|
59
|
-
unavailableReason?: UnavailableReason;
|
|
60
|
-
}
|
|
61
51
|
export interface OrderProductIdentity {
|
|
62
52
|
product_id: number | null;
|
|
63
53
|
product_variant_id: number;
|
|
@@ -76,7 +66,7 @@ export interface OrderProduct extends OrderProductIdentity {
|
|
|
76
66
|
original_price: string;
|
|
77
67
|
tax_fee: string;
|
|
78
68
|
is_charge_tax: number;
|
|
79
|
-
discount_list:
|
|
69
|
+
discount_list: any[];
|
|
80
70
|
product_bundle: any[];
|
|
81
71
|
booking_uid?: string;
|
|
82
72
|
metadata: Record<string, any>;
|
|
@@ -113,11 +103,11 @@ export interface OrderSummary {
|
|
|
113
103
|
export interface OrderTempOrder {
|
|
114
104
|
order_id: number | null;
|
|
115
105
|
external_sale_number: string;
|
|
116
|
-
order_number: string
|
|
117
|
-
shop_order_number: string
|
|
118
|
-
shop_full_order_number: string
|
|
106
|
+
order_number: string;
|
|
107
|
+
shop_order_number: string;
|
|
108
|
+
shop_full_order_number: string;
|
|
119
109
|
type: string;
|
|
120
|
-
business_code
|
|
110
|
+
business_code: string;
|
|
121
111
|
platform: string;
|
|
122
112
|
sales_channel: string;
|
|
123
113
|
order_sales_channel: string;
|
|
@@ -151,7 +141,7 @@ export interface OrderTempOrder {
|
|
|
151
141
|
bookings: any[];
|
|
152
142
|
payments: any[];
|
|
153
143
|
surcharges: any[];
|
|
154
|
-
discount_list
|
|
144
|
+
discount_list: any[];
|
|
155
145
|
relation_forms: any[];
|
|
156
146
|
contacts: any[];
|
|
157
147
|
contacts_info: Record<string, any> | null;
|
|
@@ -167,7 +157,7 @@ export interface OrderSubmitProduct extends Omit<OrderProduct, 'unique_identific
|
|
|
167
157
|
payment_price: string;
|
|
168
158
|
product_sku: Record<string, any>;
|
|
169
159
|
}
|
|
170
|
-
export interface OrderSubmitPayload extends Omit<OrderTempOrder, 'platform' | 'products' | '_extend' | 'customer' | '
|
|
160
|
+
export interface OrderSubmitPayload extends Omit<OrderTempOrder, 'platform' | 'products' | '_extend' | 'customer' | 'shop_full_order_number'> {
|
|
171
161
|
platform: string;
|
|
172
162
|
request_unique_idempotency_token?: string;
|
|
173
163
|
form_record_ids?: Array<{
|
|
@@ -186,32 +176,16 @@ export interface OrderState {
|
|
|
186
176
|
discount: DiscountModule | null;
|
|
187
177
|
rules: RulesModule | null;
|
|
188
178
|
}
|
|
189
|
-
export interface ReplaceTempOrderOptions {
|
|
190
|
-
recalculateSummary?: boolean;
|
|
191
|
-
persist?: boolean;
|
|
192
|
-
saveDraft?: boolean;
|
|
193
|
-
}
|
|
194
|
-
export type AddProductBookingInput = Record<string, any>;
|
|
195
179
|
/** 更新购物车行:仅传 SKU 时命中同 SKU 第一行;多行同 SKU 须传 unique_identification_number / 选项指纹等 */
|
|
196
|
-
export interface
|
|
180
|
+
export interface UpdateProductInOrderParams {
|
|
197
181
|
product_id: number | null;
|
|
198
182
|
product_variant_id: number;
|
|
199
183
|
updates: Partial<OrderProduct>;
|
|
200
184
|
unique_identification_number?: string;
|
|
201
|
-
identity_key?: string;
|
|
202
185
|
product_option_item?: any[];
|
|
203
186
|
product_bundle?: any[];
|
|
204
|
-
booking?: AddProductBookingInput;
|
|
205
|
-
}
|
|
206
|
-
/** 仅更新购物车行数量;行定位语义与 updateOrderProduct / removeProductFromOrder 保持一致 */
|
|
207
|
-
export interface UpdateOrderProductQuantityParams extends OrderProductIdentity {
|
|
208
|
-
num: number;
|
|
209
|
-
identity_key?: string;
|
|
210
|
-
}
|
|
211
|
-
export interface UpdateOrderBookingParams {
|
|
212
|
-
unique_identification_number: string;
|
|
213
|
-
updates: AddProductBookingInput;
|
|
214
187
|
}
|
|
188
|
+
export type AddProductBookingInput = Record<string, any>;
|
|
215
189
|
export interface OrderProductMergeDecisionContext {
|
|
216
190
|
incomingProduct: Partial<OrderProduct> & OrderProductIdentity;
|
|
217
191
|
normalizedIncoming: OrderProduct;
|
|
@@ -262,11 +236,10 @@ export interface SubmitSalesOrderParams {
|
|
|
262
236
|
query: {
|
|
263
237
|
order_id: number | null;
|
|
264
238
|
external_sale_number: string;
|
|
265
|
-
order_number: string
|
|
266
|
-
shop_order_number: string
|
|
267
|
-
shop_full_order_number: string | null;
|
|
239
|
+
order_number: string;
|
|
240
|
+
shop_order_number: string;
|
|
268
241
|
type: string;
|
|
269
|
-
business_code
|
|
242
|
+
business_code: string;
|
|
270
243
|
platform: string;
|
|
271
244
|
request_unique_idempotency_token?: string;
|
|
272
245
|
sales_channel: string;
|
|
@@ -298,6 +271,7 @@ export interface SubmitSalesOrderParams {
|
|
|
298
271
|
bookings: OrderSubmitBooking[];
|
|
299
272
|
payments: any[];
|
|
300
273
|
surcharges?: any[];
|
|
274
|
+
discount_list: any[];
|
|
301
275
|
relation_forms: any[];
|
|
302
276
|
form_record_ids?: OrderSubmitFormRecord[];
|
|
303
277
|
contacts: any[];
|
|
@@ -376,7 +350,6 @@ export interface SyncPaymentsToOrderParams {
|
|
|
376
350
|
paymentStatus?: SubmitSalesOrderParams['query']['payment_status'];
|
|
377
351
|
submitWhenPaid?: boolean;
|
|
378
352
|
smallTicketDataFlag?: number;
|
|
379
|
-
channel?: string;
|
|
380
353
|
}
|
|
381
354
|
export interface SyncPaymentsToOrderResult<T = any> {
|
|
382
355
|
isFullyPaid: boolean;
|
|
@@ -473,7 +446,6 @@ export interface OrderModuleAPI {
|
|
|
473
446
|
}) => void;
|
|
474
447
|
getTempOrder: () => OrderTempOrder | null;
|
|
475
448
|
ensureTempOrder: () => OrderTempOrder;
|
|
476
|
-
replaceTempOrder: (tempOrder: OrderTempOrder, options?: ReplaceTempOrderOptions) => Promise<OrderTempOrder>;
|
|
477
449
|
addNewOrder: () => Promise<OrderTempOrder>;
|
|
478
450
|
restoreOrder: () => OrderTempOrder;
|
|
479
451
|
getOrderProducts: () => OrderProduct[];
|
|
@@ -486,26 +458,15 @@ export interface OrderModuleAPI {
|
|
|
486
458
|
getOrderSyncState: () => OrderSyncState;
|
|
487
459
|
getOrderAmountSnapshot: () => OrderAmountSnapshot | null;
|
|
488
460
|
getTempOrderNote: () => string;
|
|
489
|
-
updateTempOrderNote:
|
|
490
|
-
(note: string): string;
|
|
491
|
-
(note: string, sync: true): Promise<string>;
|
|
492
|
-
(note: string, sync: boolean): string | Promise<string>;
|
|
493
|
-
};
|
|
461
|
+
updateTempOrderNote: (note: string) => string;
|
|
494
462
|
updateTempOrderShopDiscount: (amount: string | number) => string;
|
|
495
463
|
updateTempOrderCustomer: (customer: UpdateTempOrderCustomerInput) => OrderSnapshot['customer'];
|
|
496
464
|
updateTempOrderBuzzer: (buzzer: string) => string;
|
|
497
465
|
updateTempOrderContactsInfo: (contactsInfo: Record<string, any> | null) => Record<string, any> | null;
|
|
498
466
|
addProductToOrder: (product: Partial<OrderProduct> & OrderProductIdentity, booking?: AddProductBookingInput) => Promise<OrderProduct[]>;
|
|
499
|
-
|
|
500
|
-
updateOrderProductQuantity: (params: UpdateOrderProductQuantityParams) => Promise<OrderProduct[]>;
|
|
501
|
-
updateOrderBooking: (params: UpdateOrderBookingParams) => any[];
|
|
467
|
+
updateProductInOrder: (params: UpdateProductInOrderParams) => Promise<OrderProduct[]>;
|
|
502
468
|
removeProductFromOrder: (identity: OrderProductIdentity) => Promise<OrderProduct[]>;
|
|
503
|
-
/** @deprecated no-op;OrderModule 不再负责 tempOrder localStorage 持久化。 */
|
|
504
469
|
persistTempOrder: () => void;
|
|
505
|
-
/** @deprecated no-op;OrderModule 不再负责 tempOrder localStorage 持久化。 */
|
|
506
|
-
setEnableTempOrderPersist: (enabled: boolean) => void;
|
|
507
|
-
/** @deprecated 固定返回 false;OrderModule 不再负责 tempOrder localStorage 持久化。 */
|
|
508
|
-
isTempOrderPersistEnabled: () => boolean;
|
|
509
470
|
submitTempOrder: <T = any>(params?: {
|
|
510
471
|
cacheId?: string;
|
|
511
472
|
platform?: string;
|
|
@@ -555,10 +516,8 @@ export interface OrderModuleAPI {
|
|
|
555
516
|
clearOrderCustomer: () => void;
|
|
556
517
|
loadDiscountConfig: (params: {
|
|
557
518
|
customerId: number;
|
|
558
|
-
action?: 'create'
|
|
559
|
-
|
|
560
|
-
apply?: boolean;
|
|
561
|
-
}) => Promise<Discount[]>;
|
|
519
|
+
action?: 'create';
|
|
520
|
+
}) => Promise<void>;
|
|
562
521
|
getDiscountList: () => Discount[];
|
|
563
522
|
applyDiscount: () => void;
|
|
564
523
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Decimal from 'decimal.js';
|
|
2
2
|
import { CartItem } from "../Cart";
|
|
3
|
-
import type {
|
|
3
|
+
import type { OrderSubmitPayload, OrderSubmitProduct, OrderSummary, OrderTempOrder } from './types';
|
|
4
4
|
import type { RulesParamsHooks } from '../Rules/types';
|
|
5
5
|
import type { MapOrderPaymentsOptions, OrderPaymentData, OrderPaymentSource } from './types';
|
|
6
6
|
/**
|
|
@@ -65,26 +65,6 @@ export declare function sumOptionUnitPrice(options?: Array<{
|
|
|
65
65
|
*
|
|
66
66
|
* 导出为纯函数方便单测直接驱动钩子,不依赖 OrderModule 实例。
|
|
67
67
|
*/
|
|
68
|
-
/** Rules calcDiscount 用手动价标记;undefined 表示交给 Rules 用 total/origin_total 推断 */
|
|
69
|
-
export declare function resolveRulesManualDiscountFlag(metadata: Record<string, any> | null | undefined): boolean | undefined;
|
|
70
|
-
/**
|
|
71
|
-
* 商品行折扣只保留后端 OrderProductDiscountItem 协议字段。
|
|
72
|
-
* Rules/券计算过程中的 `_num`、`config` 等运行态字段不应进入 tempOrder 或提交 payload。
|
|
73
|
-
*/
|
|
74
|
-
export declare function normalizeOrderProductDiscountList(discountList?: unknown[] | null): OrderProductDiscountItem[];
|
|
75
|
-
/**
|
|
76
|
-
* 手动改价(price_override)时行级 original_price(composite 单价):
|
|
77
|
-
* 购物车划线价应对齐 metadata.origin._extend.origin_total(改价前单价 composite,如 40),
|
|
78
|
-
* 而非 bundle 子项 catalog 原价合成的 composedOriginalPrice(如 30)。
|
|
79
|
-
*
|
|
80
|
-
* origin_total 与 SkuDetailModal / cacheItem._extend 一致,为单价语义,不再除以 num。
|
|
81
|
-
*/
|
|
82
|
-
export declare function resolveManualOverrideLineOriginalPrice(params: {
|
|
83
|
-
num?: number;
|
|
84
|
-
metadata?: Record<string, any> | null;
|
|
85
|
-
/** 已有行级 original_price(origin 被裁剪时兜底划线价) */
|
|
86
|
-
lineOriginalPrice?: string | number | null;
|
|
87
|
-
}, fallbackCompositeOriginal: string): string;
|
|
88
68
|
export declare function createDefaultOrderRulesHooks(): RulesParamsHooks;
|
|
89
69
|
/**
|
|
90
70
|
* 通过 session 类商品的开始时间结束时间生成商品的时长
|
|
@@ -160,22 +140,4 @@ export declare function formatV1Product(products: OrderSubmitProduct[]): {
|
|
|
160
140
|
session: null;
|
|
161
141
|
unique: string;
|
|
162
142
|
}[];
|
|
163
|
-
/**
|
|
164
|
-
* 判断 holder_id 是否已分配(非空)。
|
|
165
|
-
*
|
|
166
|
-
* @example
|
|
167
|
-
* hasAssignedHolderId(12); // true
|
|
168
|
-
* hasAssignedHolderId([]); // false
|
|
169
|
-
*/
|
|
170
|
-
export declare function hasAssignedHolderId(value: unknown): boolean;
|
|
171
|
-
/**
|
|
172
|
-
* 清空 tempOrder 购物车行上的 holder 分配(products / bookings / runtime origin)。
|
|
173
|
-
* 移除或更换下单客户时调用,与 booking 页换客户清 holder 行为对齐。
|
|
174
|
-
*
|
|
175
|
-
* @example
|
|
176
|
-
* clearTempOrderHolderAssignments(tempOrder);
|
|
177
|
-
*/
|
|
178
|
-
export declare function clearTempOrderHolderAssignments(tempOrder: OrderTempOrder): boolean;
|
|
179
143
|
export { createEmptySummary } from '../../solution/ScanOrder/utils';
|
|
180
|
-
export { buildManualProductDiscountItem, ensureManualProductDiscountList, findManualProductDiscountItem, mergeManualProductDiscountIntoList, resolveManualDiscountMessage, resolveManualDiscountOriginTotal, resolveManualDiscountReasonFromSources, resolveSafeProductNum, shouldBuildManualProductDiscount, syncManualProductDiscountProductNum, stripManualProductDiscountItems, } from './utils/manualProductDiscount';
|
|
181
|
-
export type { ManualProductDiscountItem } from './utils/manualProductDiscount';
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
var _excluded = ["unique_identification_number"],
|
|
2
|
-
_excluded2 = ["num", "product_option_item", "surcharge_fee"
|
|
3
|
-
_excluded3 = ["_extend", "relation_id", "table_form_id", "resource_id", "summary", "lastOrderInfo", "paid_amount", "shop_id", "shop_note", "shop_service_type", "start_time", "customer", "
|
|
2
|
+
_excluded2 = ["num", "product_option_item", "surcharge_fee"],
|
|
3
|
+
_excluded3 = ["_extend", "relation_id", "table_form_id", "resource_id", "summary", "lastOrderInfo", "paid_amount", "shop_id", "shop_note", "shop_service_type", "start_time", "customer", "shop_full_order_number", "tax_fee", "total_amount", "total_refund_amount", "create_date", "holder_id"],
|
|
4
4
|
_excluded4 = ["collect_pax", "table_occupancy_duration"];
|
|
5
5
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
6
6
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
7
8
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
9
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
10
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -13,7 +14,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
13
14
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
15
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
15
16
|
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); }
|
|
16
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
17
17
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
18
18
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
19
|
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; }
|
|
@@ -113,90 +113,6 @@ export function sumOptionUnitPrice(options) {
|
|
|
113
113
|
*
|
|
114
114
|
* 导出为纯函数方便单测直接驱动钩子,不依赖 OrderModule 实例。
|
|
115
115
|
*/
|
|
116
|
-
|
|
117
|
-
/** Rules calcDiscount 用手动价标记;undefined 表示交给 Rules 用 total/origin_total 推断 */
|
|
118
|
-
export function resolveRulesManualDiscountFlag(metadata) {
|
|
119
|
-
if (!metadata) return undefined;
|
|
120
|
-
if (metadata.is_manual_discount === true || metadata.is_manual_discount === 1) {
|
|
121
|
-
return true;
|
|
122
|
-
}
|
|
123
|
-
var priceOverride = metadata.price_override;
|
|
124
|
-
if (priceOverride !== undefined && priceOverride !== null && priceOverride !== '') {
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
return undefined;
|
|
128
|
-
}
|
|
129
|
-
function normalizeOrderProductDiscountAmount(amount) {
|
|
130
|
-
if (amount === undefined || amount === null) return undefined;
|
|
131
|
-
return String(amount);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* 商品行折扣只保留后端 OrderProductDiscountItem 协议字段。
|
|
136
|
-
* Rules/券计算过程中的 `_num`、`config` 等运行态字段不应进入 tempOrder 或提交 payload。
|
|
137
|
-
*/
|
|
138
|
-
export function normalizeOrderProductDiscountList(discountList) {
|
|
139
|
-
if (!Array.isArray(discountList)) return [];
|
|
140
|
-
return discountList.filter(function (item) {
|
|
141
|
-
return !!item && _typeof(item) === 'object';
|
|
142
|
-
}).map(function (item) {
|
|
143
|
-
var normalized = {
|
|
144
|
-
discount_id: Number.isFinite(Number(item.discount_id)) ? Number(item.discount_id) : 0
|
|
145
|
-
};
|
|
146
|
-
if (item.order_discount_id === null) {
|
|
147
|
-
normalized.order_discount_id = null;
|
|
148
|
-
} else if (item.order_discount_id !== undefined) {
|
|
149
|
-
var orderDiscountId = Number(item.order_discount_id);
|
|
150
|
-
if (Number.isFinite(orderDiscountId)) {
|
|
151
|
-
normalized.order_discount_id = orderDiscountId;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (item.type !== undefined) normalized.type = item.type;
|
|
155
|
-
var amount = normalizeOrderProductDiscountAmount(item.amount);
|
|
156
|
-
if (amount !== undefined) normalized.amount = amount;
|
|
157
|
-
if (item.discount && _typeof(item.discount) === 'object') {
|
|
158
|
-
normalized.discount = _objectSpread({}, item.discount);
|
|
159
|
-
}
|
|
160
|
-
if (item.metadata === null) {
|
|
161
|
-
normalized.metadata = null;
|
|
162
|
-
} else if (item.metadata && _typeof(item.metadata) === 'object') {
|
|
163
|
-
normalized.metadata = _objectSpread({}, item.metadata);
|
|
164
|
-
}
|
|
165
|
-
return normalized;
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* 手动改价(price_override)时行级 original_price(composite 单价):
|
|
171
|
-
* 购物车划线价应对齐 metadata.origin._extend.origin_total(改价前单价 composite,如 40),
|
|
172
|
-
* 而非 bundle 子项 catalog 原价合成的 composedOriginalPrice(如 30)。
|
|
173
|
-
*
|
|
174
|
-
* origin_total 与 SkuDetailModal / cacheItem._extend 一致,为单价语义,不再除以 num。
|
|
175
|
-
*/
|
|
176
|
-
export function resolveManualOverrideLineOriginalPrice(params, fallbackCompositeOriginal) {
|
|
177
|
-
var _metadata$origin;
|
|
178
|
-
var metadata = params.metadata || {};
|
|
179
|
-
var priceOverride = metadata.price_override;
|
|
180
|
-
if (priceOverride === undefined || priceOverride === null || priceOverride === '') {
|
|
181
|
-
return fallbackCompositeOriginal;
|
|
182
|
-
}
|
|
183
|
-
var refTotal = (_metadata$origin = metadata.origin) === null || _metadata$origin === void 0 || (_metadata$origin = _metadata$origin._extend) === null || _metadata$origin === void 0 ? void 0 : _metadata$origin.origin_total;
|
|
184
|
-
if (refTotal !== undefined && refTotal !== null && refTotal !== '') {
|
|
185
|
-
var parsed = Number(refTotal);
|
|
186
|
-
if (Number.isFinite(parsed)) {
|
|
187
|
-
return new Decimal(parsed).toDecimalPlaces(2).toFixed(2);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
var lineOriginal = params.lineOriginalPrice;
|
|
191
|
-
if (lineOriginal !== undefined && lineOriginal !== null && lineOriginal !== '') {
|
|
192
|
-
var parsedLine = Number(lineOriginal);
|
|
193
|
-
var parsedFallback = Number(fallbackCompositeOriginal);
|
|
194
|
-
if (Number.isFinite(parsedLine) && Number.isFinite(parsedFallback) && parsedLine > parsedFallback) {
|
|
195
|
-
return new Decimal(parsedLine).toDecimalPlaces(2).toFixed(2);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return fallbackCompositeOriginal;
|
|
199
|
-
}
|
|
200
116
|
export function createDefaultOrderRulesHooks() {
|
|
201
117
|
var toUnitPriceString = function toUnitPriceString(totalLike, num) {
|
|
202
118
|
var effectiveNum = Number(num) > 0 ? Number(num) : 1;
|
|
@@ -204,7 +120,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
204
120
|
};
|
|
205
121
|
return {
|
|
206
122
|
getProduct: function getProduct(product) {
|
|
207
|
-
var _product$metadata, _product$metadata2, _product$metadata3, _product$metadata4, _product$metadata5;
|
|
123
|
+
var _product$metadata, _product$metadata2, _product$metadata3, _product$metadata4, _product$metadata5, _product$metadata6;
|
|
208
124
|
// source_product_price 是权威源;兜底链:source → mainSelling − options(反推)→ 行 selling_price
|
|
209
125
|
var metadataAny = product.metadata || {};
|
|
210
126
|
var optionSum = sumOptionUnitPrice(product.product_option_item);
|
|
@@ -229,7 +145,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
229
145
|
id: product.product_id,
|
|
230
146
|
// Rules 引擎用 _id 作为 processedProductsMap 键;必须与购物车行级 identity 一致,
|
|
231
147
|
// 否则同 SKU 不同小料会在 calcDiscount 重组时互相覆盖。
|
|
232
|
-
// 不透明 identity 契约下,normalizeOrderProduct /
|
|
148
|
+
// 不透明 identity 契约下,normalizeOrderProduct / restoreTempOrderFromStorage 已保证唯一值存在;
|
|
233
149
|
// 留 fingerprint 分支仅作 Rules 单测里直接传裸 product 时的兜底。
|
|
234
150
|
_id: (_product$metadata = product.metadata) !== null && _product$metadata !== void 0 && _product$metadata.unique_identification_number ? "".concat(product.product_id, "_").concat(product.product_variant_id, "_").concat(product.metadata.unique_identification_number) : "".concat(product.product_id, "_").concat(product.product_variant_id, "_").concat(buildProductLineFingerprint(product.product_option_item, product.product_bundle)),
|
|
235
151
|
// Rules 内部 getProductTotalPrice / getProductOriginTotalPrice 会各自再叠加 bundle + option,
|
|
@@ -245,11 +161,9 @@ export function createDefaultOrderRulesHooks() {
|
|
|
245
161
|
bundle: product.product_bundle || [],
|
|
246
162
|
booking_id: ((_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2.booking_id) || null,
|
|
247
163
|
isClient: false,
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
holder_id: (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.holder_id,
|
|
252
|
-
startDate: ((_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.start_date) || ((_product$metadata5 = product.metadata) === null || _product$metadata5 === void 0 ? void 0 : _product$metadata5.startDate)
|
|
164
|
+
isManualDiscount: ((_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.is_manual_discount) || false,
|
|
165
|
+
holder_id: (_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.holder_id,
|
|
166
|
+
startDate: ((_product$metadata5 = product.metadata) === null || _product$metadata5 === void 0 ? void 0 : _product$metadata5.start_date) || ((_product$metadata6 = product.metadata) === null || _product$metadata6 === void 0 ? void 0 : _product$metadata6.startDate)
|
|
253
167
|
};
|
|
254
168
|
},
|
|
255
169
|
setProduct: function setProduct(product, values) {
|
|
@@ -282,14 +196,9 @@ export function createDefaultOrderRulesHooks() {
|
|
|
282
196
|
bundle: nextBundle,
|
|
283
197
|
useOriginalBundle: true
|
|
284
198
|
});
|
|
285
|
-
var finalOriginalPrice = resolveManualOverrideLineOriginalPrice({
|
|
286
|
-
num: nextNum,
|
|
287
|
-
metadata: metadataAny,
|
|
288
|
-
lineOriginalPrice: product.original_price
|
|
289
|
-
}, composedOriginalPrice);
|
|
290
199
|
return _objectSpread(_objectSpread({}, product), {}, {
|
|
291
200
|
selling_price: composedSellingPrice,
|
|
292
|
-
original_price:
|
|
201
|
+
original_price: composedOriginalPrice,
|
|
293
202
|
discount_list: (_values$discount_list = values.discount_list) !== null && _values$discount_list !== void 0 ? _values$discount_list : product.discount_list,
|
|
294
203
|
num: (_values$quantity2 = values.quantity) !== null && _values$quantity2 !== void 0 ? _values$quantity2 : product.num,
|
|
295
204
|
product_bundle: nextBundle,
|
|
@@ -485,11 +394,6 @@ function normalizeSubmitProduct(product) {
|
|
|
485
394
|
var num = submitProduct.num,
|
|
486
395
|
productOptionItem = submitProduct.product_option_item,
|
|
487
396
|
_productSurchargeFee = submitProduct.surcharge_fee,
|
|
488
|
-
_deprecatedDiscountAmount = submitProduct.discount_amount,
|
|
489
|
-
_deprecatedDiscountType = submitProduct.discount_type,
|
|
490
|
-
_deprecatedDiscountway = submitProduct.discountway,
|
|
491
|
-
_deprecatedProductDiscountReason = submitProduct.product_discount_reason,
|
|
492
|
-
_deprecatedDiscountPer = submitProduct.discount_per,
|
|
493
397
|
productRest = _objectWithoutProperties(submitProduct, _excluded2);
|
|
494
398
|
var rawMetadata = submitProduct.metadata || {};
|
|
495
399
|
var bookingUid = rawMetadata.booking_uid;
|
|
@@ -519,7 +423,7 @@ function normalizeSubmitProduct(product) {
|
|
|
519
423
|
} : {}), {}, {
|
|
520
424
|
product_quantity: toBundleNumber(num !== null && num !== void 0 ? num : submitProduct.product_quantity, 1),
|
|
521
425
|
product_sku: productSku,
|
|
522
|
-
discount_list:
|
|
426
|
+
discount_list: submitProduct.discount_list || [],
|
|
523
427
|
product_bundle: formatSubmitBundleItems(submitProduct.product_bundle),
|
|
524
428
|
metadata: cleanMetadata,
|
|
525
429
|
// 出站兼容:后端消费 payment_price 字段,这里从 selling_price 直接派生。
|
|
@@ -598,23 +502,22 @@ export function createDefaultTempOrder(params) {
|
|
|
598
502
|
return {
|
|
599
503
|
order_id: null,
|
|
600
504
|
external_sale_number: '',
|
|
601
|
-
order_number:
|
|
602
|
-
shop_order_number:
|
|
603
|
-
shop_full_order_number:
|
|
604
|
-
type: '',
|
|
605
|
-
business_code:
|
|
505
|
+
order_number: '',
|
|
506
|
+
shop_order_number: '',
|
|
507
|
+
shop_full_order_number: '',
|
|
508
|
+
type: 'appointment_booking',
|
|
509
|
+
business_code: 'appointment_booking',
|
|
606
510
|
platform: 'h5',
|
|
607
511
|
sales_channel: 'my_pisel',
|
|
608
512
|
order_sales_channel: 'online_store',
|
|
609
513
|
status: 'normal',
|
|
610
514
|
payment_status: 'payment_processing',
|
|
611
515
|
shipping_status: 'unfulfilled',
|
|
612
|
-
customer_id:
|
|
516
|
+
customer_id: null,
|
|
613
517
|
customer_name: '',
|
|
614
518
|
country_calling_code: '',
|
|
615
519
|
phone: '',
|
|
616
520
|
email: '',
|
|
617
|
-
customer: null,
|
|
618
521
|
is_price_include_tax: 1,
|
|
619
522
|
tax_title: '',
|
|
620
523
|
tax_country_code: '',
|
|
@@ -633,6 +536,7 @@ export function createDefaultTempOrder(params) {
|
|
|
633
536
|
bookings: [],
|
|
634
537
|
payments: [],
|
|
635
538
|
surcharges: [],
|
|
539
|
+
discount_list: [],
|
|
636
540
|
relation_forms: [],
|
|
637
541
|
contacts: [],
|
|
638
542
|
contacts_info: null,
|
|
@@ -644,7 +548,7 @@ export function createDefaultTempOrder(params) {
|
|
|
644
548
|
};
|
|
645
549
|
}
|
|
646
550
|
export function buildSubmitPayload(params) {
|
|
647
|
-
var
|
|
551
|
+
var _ref10, _ref11, _ref12, _tempOrder$is_price_i, _tempOrder$is_deposit;
|
|
648
552
|
var tempOrder = params.tempOrder,
|
|
649
553
|
cacheId = params.cacheId,
|
|
650
554
|
_params$now = params.now,
|
|
@@ -669,35 +573,20 @@ export function buildSubmitPayload(params) {
|
|
|
669
573
|
_shopServiceType = _ref9.shop_service_type,
|
|
670
574
|
_startTime = _ref9.start_time,
|
|
671
575
|
_customer = _ref9.customer,
|
|
672
|
-
|
|
576
|
+
_shopFullOrderNumber = _ref9.shop_full_order_number,
|
|
673
577
|
_rootTaxFee = _ref9.tax_fee,
|
|
674
578
|
_totalAmount = _ref9.total_amount,
|
|
675
579
|
_totalRefundAmount = _ref9.total_refund_amount,
|
|
676
580
|
_createDate = _ref9.create_date,
|
|
677
581
|
_holderId = _ref9.holder_id,
|
|
678
582
|
tempOrderRest = _objectWithoutProperties(_ref9, _excluded3);
|
|
679
|
-
var submitType = type !== null && type !== void 0 ? type : tempOrder.type;
|
|
680
|
-
if (!submitType) {
|
|
681
|
-
var _tempOrder$bookings;
|
|
682
|
-
// 如果外部没有传递 types,根据订单里当前是否有 bookings 来决定是 appointment_booking 还是 virtual
|
|
683
|
-
if (tempOrder !== null && tempOrder !== void 0 && (_tempOrder$bookings = tempOrder.bookings) !== null && _tempOrder$bookings !== void 0 && _tempOrder$bookings.length) {
|
|
684
|
-
submitType = 'appointment_booking';
|
|
685
|
-
} else {
|
|
686
|
-
submitType = 'virtual';
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
583
|
var payload = _objectSpread(_objectSpread({}, tempOrderRest), {}, {
|
|
690
|
-
customer_id: (_tempOrder$customer_i = tempOrder.customer_id) !== null && _tempOrder$customer_i !== void 0 ? _tempOrder$customer_i : 1,
|
|
691
|
-
customer_name: tempOrder.customer_name || 'Select a customer',
|
|
692
|
-
order_number: null,
|
|
693
|
-
shop_order_number: null,
|
|
694
|
-
shop_full_order_number: null,
|
|
695
584
|
platform: normalizeSubmitPlatform(platform),
|
|
696
585
|
request_unique_idempotency_token: tempOrder.request_unique_idempotency_token || "".concat(tempOrder.external_sale_number, "_").concat(now.getTime()),
|
|
697
|
-
type:
|
|
698
|
-
business_code: businessCode !== null && businessCode !== void 0 ? businessCode : tempOrder.business_code,
|
|
586
|
+
type: (_ref10 = type !== null && type !== void 0 ? type : tempOrder.type) !== null && _ref10 !== void 0 ? _ref10 : 'table-order',
|
|
587
|
+
business_code: (_ref11 = businessCode !== null && businessCode !== void 0 ? businessCode : tempOrder.business_code) !== null && _ref11 !== void 0 ? _ref11 : 'table-order',
|
|
699
588
|
sales_channel: tempOrder.sales_channel || 'my_pisel',
|
|
700
|
-
order_sales_channel: (
|
|
589
|
+
order_sales_channel: (_ref12 = channel !== null && channel !== void 0 ? channel : tempOrder.order_sales_channel) !== null && _ref12 !== void 0 ? _ref12 : 'online_store',
|
|
701
590
|
status: tempOrder.status || 'normal',
|
|
702
591
|
payment_status: tempOrder.payment_status || 'payment_processing',
|
|
703
592
|
// shipping_status: tempOrder.shipping_status || 'unfulfilled',
|
|
@@ -710,23 +599,25 @@ export function buildSubmitPayload(params) {
|
|
|
710
599
|
note: tempOrder.note || '',
|
|
711
600
|
delivery_type: tempOrder.delivery_type || 'nil',
|
|
712
601
|
schedule_date: scheduleDate,
|
|
713
|
-
|
|
602
|
+
created_at: tempOrder.created_at || formatDateTime(now),
|
|
714
603
|
bookings: (tempOrder.bookings || []).filter(function (booking) {
|
|
715
|
-
|
|
604
|
+
var _parent_id;
|
|
605
|
+
return Number((_parent_id = booking.parent_id) !== null && _parent_id !== void 0 ? _parent_id : 0) !== 0;
|
|
716
606
|
}).map(function (booking) {
|
|
717
607
|
return normalizeSubmitBooking(booking);
|
|
718
608
|
}),
|
|
719
609
|
payments: tempOrder.payments || [],
|
|
610
|
+
// discount_list: tempOrder.discount_list || [],
|
|
720
611
|
relation_forms: tempOrder.relation_forms || [],
|
|
721
612
|
// contacts: tempOrder.contacts || [],
|
|
722
613
|
contacts_info: tempOrder.contacts_info && !Array.isArray(tempOrder.contacts_info) ? tempOrder.contacts_info : null,
|
|
723
614
|
// holder: tempOrder.holder || null,
|
|
724
615
|
// summary,
|
|
725
616
|
metadata: function () {
|
|
726
|
-
var
|
|
727
|
-
_collectPax =
|
|
728
|
-
_tableOccupancyDuration =
|
|
729
|
-
rest = _objectWithoutProperties(
|
|
617
|
+
var _ref13 = tempOrder.metadata || {},
|
|
618
|
+
_collectPax = _ref13.collect_pax,
|
|
619
|
+
_tableOccupancyDuration = _ref13.table_occupancy_duration,
|
|
620
|
+
rest = _objectWithoutProperties(_ref13, _excluded4);
|
|
730
621
|
return _objectSpread({}, rest);
|
|
731
622
|
}(),
|
|
732
623
|
products: (tempOrder.products || []).map(function (product) {
|
|
@@ -821,84 +712,4 @@ export function formatV1Product(products) {
|
|
|
821
712
|
};
|
|
822
713
|
});
|
|
823
714
|
}
|
|
824
|
-
|
|
825
|
-
/**
|
|
826
|
-
* 判断 holder_id 是否已分配(非空)。
|
|
827
|
-
*
|
|
828
|
-
* @example
|
|
829
|
-
* hasAssignedHolderId(12); // true
|
|
830
|
-
* hasAssignedHolderId([]); // false
|
|
831
|
-
*/
|
|
832
|
-
export function hasAssignedHolderId(value) {
|
|
833
|
-
if (value === undefined || value === null || value === '') return false;
|
|
834
|
-
if (Array.isArray(value)) return value.length > 0;
|
|
835
|
-
return true;
|
|
836
|
-
}
|
|
837
|
-
|
|
838
|
-
/**
|
|
839
|
-
* 清空 tempOrder 购物车行上的 holder 分配(products / bookings / runtime origin)。
|
|
840
|
-
* 移除或更换下单客户时调用,与 booking 页换客户清 holder 行为对齐。
|
|
841
|
-
*
|
|
842
|
-
* @example
|
|
843
|
-
* clearTempOrderHolderAssignments(tempOrder);
|
|
844
|
-
*/
|
|
845
|
-
export function clearTempOrderHolderAssignments(tempOrder) {
|
|
846
|
-
var _tempOrder$_extend;
|
|
847
|
-
var changed = false;
|
|
848
|
-
var resetHolderField = function resetHolderField(target) {
|
|
849
|
-
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'holder_id';
|
|
850
|
-
if (!hasAssignedHolderId(target[key])) return;
|
|
851
|
-
target[key] = null;
|
|
852
|
-
changed = true;
|
|
853
|
-
};
|
|
854
|
-
var _iterator4 = _createForOfIteratorHelper(tempOrder.products || []),
|
|
855
|
-
_step4;
|
|
856
|
-
try {
|
|
857
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
858
|
-
var product = _step4.value;
|
|
859
|
-
if (product.metadata && _typeof(product.metadata) === 'object') {
|
|
860
|
-
resetHolderField(product.metadata);
|
|
861
|
-
}
|
|
862
|
-
}
|
|
863
|
-
} catch (err) {
|
|
864
|
-
_iterator4.e(err);
|
|
865
|
-
} finally {
|
|
866
|
-
_iterator4.f();
|
|
867
|
-
}
|
|
868
|
-
var _iterator5 = _createForOfIteratorHelper(tempOrder.bookings || []),
|
|
869
|
-
_step5;
|
|
870
|
-
try {
|
|
871
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
872
|
-
var booking = _step5.value;
|
|
873
|
-
var bookingRecord = booking;
|
|
874
|
-
if (booking.metadata && _typeof(booking.metadata) === 'object') {
|
|
875
|
-
resetHolderField(booking.metadata);
|
|
876
|
-
}
|
|
877
|
-
if (bookingRecord.holder !== undefined && bookingRecord.holder !== null) {
|
|
878
|
-
delete bookingRecord.holder;
|
|
879
|
-
changed = true;
|
|
880
|
-
}
|
|
881
|
-
}
|
|
882
|
-
} catch (err) {
|
|
883
|
-
_iterator5.e(err);
|
|
884
|
-
} finally {
|
|
885
|
-
_iterator5.f();
|
|
886
|
-
}
|
|
887
|
-
var productsByUid = (_tempOrder$_extend = tempOrder._extend) === null || _tempOrder$_extend === void 0 ? void 0 : _tempOrder$_extend.productsByUid;
|
|
888
|
-
if (productsByUid && _typeof(productsByUid) === 'object') {
|
|
889
|
-
for (var _i4 = 0, _Object$values = Object.values(productsByUid); _i4 < _Object$values.length; _i4++) {
|
|
890
|
-
var entry = _Object$values[_i4];
|
|
891
|
-
var origin = entry === null || entry === void 0 ? void 0 : entry.origin;
|
|
892
|
-
if (!origin || _typeof(origin) !== 'object') continue;
|
|
893
|
-
if (origin.metadata && _typeof(origin.metadata) === 'object') {
|
|
894
|
-
resetHolderField(origin.metadata);
|
|
895
|
-
}
|
|
896
|
-
if (origin._extend && _typeof(origin._extend) === 'object') {
|
|
897
|
-
resetHolderField(origin._extend);
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
|
-
}
|
|
901
|
-
return changed;
|
|
902
|
-
}
|
|
903
|
-
export { createEmptySummary } from "../../solution/ScanOrder/utils";
|
|
904
|
-
export { buildManualProductDiscountItem, ensureManualProductDiscountList, findManualProductDiscountItem, mergeManualProductDiscountIntoList, resolveManualDiscountMessage, resolveManualDiscountOriginTotal, resolveManualDiscountReasonFromSources, resolveSafeProductNum, shouldBuildManualProductDiscount, syncManualProductDiscountProductNum, stripManualProductDiscountItems } from "./utils/manualProductDiscount";
|
|
715
|
+
export { createEmptySummary } from "../../solution/ScanOrder/utils";
|
|
@@ -47,6 +47,7 @@ export declare class QuotationModule extends BaseModule implements Module {
|
|
|
47
47
|
customer_id?: number | string;
|
|
48
48
|
}): Map<string, string | null>;
|
|
49
49
|
setScheduleResolver(resolver: (id: number) => ScheduleItem | undefined): void;
|
|
50
|
+
private filterQuotationsByCustomer;
|
|
50
51
|
private isQuotationVisibleForCustomer;
|
|
51
52
|
private hasValidCustomerId;
|
|
52
53
|
private isQuotationActiveAt;
|