@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.
Files changed (162) hide show
  1. package/dist/modules/Customer/index.d.ts +0 -6
  2. package/dist/modules/Customer/index.js +83 -129
  3. package/dist/modules/Customer/types.d.ts +0 -2
  4. package/dist/modules/Discount/index.d.ts +4 -2
  5. package/dist/modules/Discount/index.js +93 -8
  6. package/dist/modules/Discount/types.d.ts +7 -1
  7. package/dist/modules/Order/index.d.ts +17 -33
  8. package/dist/modules/Order/index.js +395 -757
  9. package/dist/modules/Order/types.d.ts +17 -58
  10. package/dist/modules/Order/types.js +0 -2
  11. package/dist/modules/Order/utils.d.ts +1 -39
  12. package/dist/modules/Order/utils.js +31 -220
  13. package/dist/modules/Quotation/index.d.ts +1 -0
  14. package/dist/modules/Quotation/index.js +21 -23
  15. package/dist/modules/Rules/index.d.ts +0 -4
  16. package/dist/modules/Rules/index.js +10 -26
  17. package/dist/modules/SalesSummary/index.js +2 -4
  18. package/dist/modules/Schedule/index.js +2 -6
  19. package/dist/modules/index.d.ts +0 -1
  20. package/dist/modules/index.js +1 -2
  21. package/dist/server/index.js +6 -10
  22. package/dist/server/modules/order/utils/filterOrders.js +6 -20
  23. package/dist/server/modules/products/index.d.ts +1 -1
  24. package/dist/server/modules/products/index.js +113 -130
  25. package/dist/server/modules/schedule/index.js +6 -13
  26. package/dist/solution/BaseSales/index.d.ts +7 -53
  27. package/dist/solution/BaseSales/index.js +340 -1165
  28. package/dist/solution/BaseSales/types.d.ts +1 -67
  29. package/dist/solution/BaseSales/types.js +1 -3
  30. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +16 -68
  31. package/dist/solution/BaseSales/utils.js +8 -46
  32. package/dist/solution/BookingByStep/index.d.ts +1 -1
  33. package/dist/solution/BookingTicket/index.d.ts +1 -133
  34. package/dist/solution/BookingTicket/index.js +175 -776
  35. package/dist/solution/BookingTicket/types.d.ts +0 -2
  36. package/dist/solution/BookingTicket/types.js +0 -3
  37. package/dist/solution/ScanOrder/index.d.ts +3 -9
  38. package/dist/solution/ScanOrder/index.js +128 -231
  39. package/dist/solution/ScanOrder/utils.js +8 -46
  40. package/dist/solution/ShopDiscount/index.d.ts +1 -0
  41. package/dist/solution/ShopDiscount/index.js +23 -18
  42. package/dist/solution/VenueBooking/index.d.ts +9 -5
  43. package/dist/solution/VenueBooking/index.js +55 -103
  44. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
  45. package/dist/solution/VenueBooking/utils/slotMerge.js +0 -10
  46. package/lib/modules/Customer/index.d.ts +0 -6
  47. package/lib/modules/Customer/index.js +11 -26
  48. package/lib/modules/Customer/types.d.ts +0 -2
  49. package/lib/modules/Discount/index.d.ts +4 -2
  50. package/lib/modules/Discount/index.js +63 -8
  51. package/lib/modules/Discount/types.d.ts +7 -1
  52. package/lib/modules/Order/index.d.ts +17 -33
  53. package/lib/modules/Order/index.js +148 -402
  54. package/lib/modules/Order/types.d.ts +17 -58
  55. package/lib/modules/Order/utils.d.ts +1 -39
  56. package/lib/modules/Order/utils.js +22 -198
  57. package/lib/modules/Quotation/index.d.ts +1 -0
  58. package/lib/modules/Quotation/index.js +15 -18
  59. package/lib/modules/Rules/index.d.ts +0 -4
  60. package/lib/modules/Rules/index.js +14 -22
  61. package/lib/modules/SalesSummary/index.js +2 -4
  62. package/lib/modules/Schedule/index.js +1 -3
  63. package/lib/modules/index.d.ts +0 -1
  64. package/lib/modules/index.js +1 -3
  65. package/lib/server/index.js +0 -2
  66. package/lib/server/modules/order/utils/filterOrders.js +4 -12
  67. package/lib/server/modules/products/index.d.ts +1 -1
  68. package/lib/server/modules/products/index.js +20 -30
  69. package/lib/server/modules/schedule/index.js +1 -2
  70. package/lib/solution/BaseSales/index.d.ts +7 -53
  71. package/lib/solution/BaseSales/index.js +22 -530
  72. package/lib/solution/BaseSales/types.d.ts +1 -67
  73. package/lib/solution/BaseSales/types.js +1 -3
  74. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +12 -71
  75. package/lib/solution/BaseSales/utils.js +6 -46
  76. package/lib/solution/BookingByStep/index.d.ts +1 -1
  77. package/lib/solution/BookingTicket/index.d.ts +1 -133
  78. package/lib/solution/BookingTicket/index.js +8 -349
  79. package/lib/solution/BookingTicket/types.d.ts +0 -2
  80. package/lib/solution/BookingTicket/types.js +0 -6
  81. package/lib/solution/ScanOrder/index.d.ts +3 -9
  82. package/lib/solution/ScanOrder/index.js +66 -147
  83. package/lib/solution/ScanOrder/utils.js +6 -46
  84. package/lib/solution/ShopDiscount/index.d.ts +1 -0
  85. package/lib/solution/ShopDiscount/index.js +4 -2
  86. package/lib/solution/VenueBooking/index.d.ts +9 -5
  87. package/lib/solution/VenueBooking/index.js +14 -50
  88. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
  89. package/lib/solution/VenueBooking/utils/slotMerge.js +0 -10
  90. package/package.json +2 -2
  91. package/dist/modules/BookingContext/index.d.ts +0 -37
  92. package/dist/modules/BookingContext/index.js +0 -436
  93. package/dist/modules/BookingContext/types.d.ts +0 -102
  94. package/dist/modules/BookingContext/types.js +0 -51
  95. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
  96. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -193
  97. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
  98. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -137
  99. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -75
  100. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -215
  101. package/dist/modules/BookingContext/utils/flexible.d.ts +0 -28
  102. package/dist/modules/BookingContext/utils/flexible.js +0 -56
  103. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
  104. package/dist/modules/BookingContext/utils/formatResourceList.js +0 -38
  105. package/dist/modules/BookingContext/utils/index.d.ts +0 -11
  106. package/dist/modules/BookingContext/utils/index.js +0 -11
  107. package/dist/modules/BookingContext/utils/noResource.d.ts +0 -13
  108. package/dist/modules/BookingContext/utils/noResource.js +0 -77
  109. package/dist/modules/BookingContext/utils/productExtend.d.ts +0 -72
  110. package/dist/modules/BookingContext/utils/productExtend.js +0 -339
  111. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
  112. package/dist/modules/BookingContext/utils/resourceErrors.js +0 -74
  113. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
  114. package/dist/modules/BookingContext/utils/resourceSelection.js +0 -24
  115. package/dist/modules/BookingContext/utils/resources.d.ts +0 -80
  116. package/dist/modules/BookingContext/utils/resources.js +0 -486
  117. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
  118. package/dist/modules/BookingContext/utils/serviceTimes.js +0 -151
  119. package/dist/modules/BookingContext/utils/timeSlices.d.ts +0 -42
  120. package/dist/modules/BookingContext/utils/timeSlices.js +0 -100
  121. package/dist/modules/Order/utils/manualProductDiscount.d.ts +0 -106
  122. package/dist/modules/Order/utils/manualProductDiscount.js +0 -212
  123. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
  124. package/dist/solution/BaseSales/utils/quotationPrice.js +0 -237
  125. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +0 -113
  126. package/dist/solution/BookingTicket/utils/addProductDecision.js +0 -346
  127. package/lib/modules/BookingContext/index.d.ts +0 -37
  128. package/lib/modules/BookingContext/index.js +0 -297
  129. package/lib/modules/BookingContext/types.d.ts +0 -102
  130. package/lib/modules/BookingContext/types.js +0 -34
  131. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
  132. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -207
  133. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
  134. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -141
  135. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -75
  136. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -198
  137. package/lib/modules/BookingContext/utils/flexible.d.ts +0 -28
  138. package/lib/modules/BookingContext/utils/flexible.js +0 -80
  139. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
  140. package/lib/modules/BookingContext/utils/formatResourceList.js +0 -50
  141. package/lib/modules/BookingContext/utils/index.d.ts +0 -11
  142. package/lib/modules/BookingContext/utils/index.js +0 -43
  143. package/lib/modules/BookingContext/utils/noResource.d.ts +0 -13
  144. package/lib/modules/BookingContext/utils/noResource.js +0 -90
  145. package/lib/modules/BookingContext/utils/productExtend.d.ts +0 -72
  146. package/lib/modules/BookingContext/utils/productExtend.js +0 -283
  147. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
  148. package/lib/modules/BookingContext/utils/resourceErrors.js +0 -80
  149. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
  150. package/lib/modules/BookingContext/utils/resourceSelection.js +0 -46
  151. package/lib/modules/BookingContext/utils/resources.d.ts +0 -80
  152. package/lib/modules/BookingContext/utils/resources.js +0 -377
  153. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
  154. package/lib/modules/BookingContext/utils/serviceTimes.js +0 -162
  155. package/lib/modules/BookingContext/utils/timeSlices.d.ts +0 -42
  156. package/lib/modules/BookingContext/utils/timeSlices.js +0 -124
  157. package/lib/modules/Order/utils/manualProductDiscount.d.ts +0 -106
  158. package/lib/modules/Order/utils/manualProductDiscount.js +0 -207
  159. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
  160. package/lib/solution/BaseSales/utils/quotationPrice.js +0 -277
  161. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +0 -113
  162. 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: OrderProductDiscountItem[];
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 | null;
117
- shop_order_number: string | null;
118
- shop_full_order_number: string | null;
106
+ order_number: string;
107
+ shop_order_number: string;
108
+ shop_full_order_number: string;
119
109
  type: string;
120
- business_code?: string;
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?: any[];
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' | 'discount_list'> {
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 UpdateOrderProductParams {
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 | null;
266
- shop_order_number: string | null;
267
- shop_full_order_number: string | null;
239
+ order_number: string;
240
+ shop_order_number: string;
268
241
  type: string;
269
- business_code?: string;
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
- updateOrderProduct: (params: UpdateOrderProductParams) => Promise<OrderProduct[]>;
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' | 'edit';
559
- orderId?: number;
560
- apply?: boolean;
561
- }) => Promise<Discount[]>;
519
+ action?: 'create';
520
+ }) => Promise<void>;
562
521
  getDiscountList: () => Discount[];
563
522
  applyDiscount: () => void;
564
523
  /**
@@ -29,8 +29,6 @@ export var OrderHooks = /*#__PURE__*/function (OrderHooks) {
29
29
 
30
30
  /** 更新购物车行:仅传 SKU 时命中同 SKU 第一行;多行同 SKU 须传 unique_identification_number / 选项指纹等 */
31
31
 
32
- /** 仅更新购物车行数量;行定位语义与 updateOrderProduct / removeProductFromOrder 保持一致 */
33
-
34
32
  /**
35
33
  * 订单信息
36
34
  */
@@ -1,6 +1,6 @@
1
1
  import Decimal from 'decimal.js';
2
2
  import { CartItem } from "../Cart";
3
- import type { OrderProductDiscountItem, OrderSubmitPayload, OrderSubmitProduct, OrderSummary, OrderTempOrder } from './types';
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", "discount_amount", "discount_type", "discountway", "product_discount_reason", "discount_per"],
3
- _excluded3 = ["_extend", "relation_id", "table_form_id", "resource_id", "summary", "lastOrderInfo", "paid_amount", "shop_id", "shop_note", "shop_service_type", "start_time", "customer", "discount_list", "tax_fee", "total_amount", "total_refund_amount", "create_date", "holder_id"],
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 / hydrate 已保证唯一值存在;
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
- // 勿写死 false:否则 Rules 不会走 total≠origin_total 的手动价推断,
249
- // 无券时会把 bundle 价还原成 original_price(手动改价套餐会从 20 回到 30)。
250
- isManualDiscount: resolveRulesManualDiscountFlag(metadataAny),
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: finalOriginalPrice,
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: normalizeOrderProductDiscountList(submitProduct.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: null,
602
- shop_order_number: null,
603
- shop_full_order_number: null,
604
- type: '',
605
- business_code: undefined,
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: 0,
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 _tempOrder$customer_i, _ref10, _tempOrder$is_price_i, _tempOrder$is_deposit;
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
- _discountList = _ref9.discount_list,
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: submitType,
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: (_ref10 = channel !== null && channel !== void 0 ? channel : tempOrder.order_sales_channel) !== null && _ref10 !== void 0 ? _ref10 : 'online_store',
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
- // created_at: tempOrder.created_at || formatDateTime(now), 和后端协定这个字段先不提交到接口
602
+ created_at: tempOrder.created_at || formatDateTime(now),
714
603
  bookings: (tempOrder.bookings || []).filter(function (booking) {
715
- return Number(booking.parent_id) !== 0;
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 _ref11 = tempOrder.metadata || {},
727
- _collectPax = _ref11.collect_pax,
728
- _tableOccupancyDuration = _ref11.table_occupancy_duration,
729
- rest = _objectWithoutProperties(_ref11, _excluded4);
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;