@pisell/pisellos 2.2.177 → 2.2.179

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 (183) hide show
  1. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  2. package/dist/modules/Customer/index.d.ts +0 -6
  3. package/dist/modules/Customer/index.js +83 -129
  4. package/dist/modules/Customer/types.d.ts +0 -2
  5. package/dist/modules/Discount/index.d.ts +4 -2
  6. package/dist/modules/Discount/index.js +93 -8
  7. package/dist/modules/Discount/types.d.ts +7 -1
  8. package/dist/modules/Order/index.d.ts +18 -87
  9. package/dist/modules/Order/index.js +497 -1303
  10. package/dist/modules/Order/types.d.ts +19 -198
  11. package/dist/modules/Order/types.js +0 -31
  12. package/dist/modules/Order/utils.d.ts +1 -50
  13. package/dist/modules/Order/utils.js +32 -261
  14. package/dist/modules/Quotation/index.d.ts +1 -0
  15. package/dist/modules/Quotation/index.js +21 -23
  16. package/dist/modules/Rules/index.d.ts +0 -4
  17. package/dist/modules/Rules/index.js +10 -26
  18. package/dist/modules/SalesSummary/index.js +2 -4
  19. package/dist/modules/SalesSummary/utils.js +5 -18
  20. package/dist/modules/Schedule/index.js +2 -6
  21. package/dist/modules/index.d.ts +0 -1
  22. package/dist/modules/index.js +1 -2
  23. package/dist/server/index.js +29 -87
  24. package/dist/server/modules/order/index.d.ts +0 -23
  25. package/dist/server/modules/order/index.js +46 -123
  26. package/dist/server/modules/order/types.d.ts +2 -0
  27. package/dist/server/modules/order/utils/filterOrders.js +6 -20
  28. package/dist/server/modules/products/index.d.ts +1 -1
  29. package/dist/server/modules/products/index.js +113 -130
  30. package/dist/server/modules/schedule/index.js +6 -13
  31. package/dist/solution/BaseSales/index.d.ts +7 -89
  32. package/dist/solution/BaseSales/index.js +375 -1494
  33. package/dist/solution/BaseSales/types.d.ts +1 -67
  34. package/dist/solution/BaseSales/types.js +1 -3
  35. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +1 -0
  36. package/dist/solution/BaseSales/utils/parseSalesResponse.js +1 -1
  37. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +16 -68
  38. package/dist/solution/BaseSales/utils.js +8 -46
  39. package/dist/solution/BookingByStep/index.d.ts +1 -1
  40. package/dist/solution/BookingTicket/index.d.ts +1 -133
  41. package/dist/solution/BookingTicket/index.js +175 -780
  42. package/dist/solution/BookingTicket/types.d.ts +0 -2
  43. package/dist/solution/BookingTicket/types.js +0 -3
  44. package/dist/solution/BookingTicket/utils/cartView.js +2 -4
  45. package/dist/solution/ScanOrder/index.d.ts +3 -9
  46. package/dist/solution/ScanOrder/index.js +128 -231
  47. package/dist/solution/ScanOrder/utils.js +8 -46
  48. package/dist/solution/ShopDiscount/index.d.ts +1 -0
  49. package/dist/solution/ShopDiscount/index.js +23 -18
  50. package/dist/solution/VenueBooking/index.d.ts +9 -5
  51. package/dist/solution/VenueBooking/index.js +55 -103
  52. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
  53. package/dist/solution/VenueBooking/utils/slotMerge.js +0 -10
  54. package/lib/model/strategy/adapter/promotion/index.js +49 -0
  55. package/lib/modules/Customer/index.d.ts +0 -6
  56. package/lib/modules/Customer/index.js +11 -26
  57. package/lib/modules/Customer/types.d.ts +0 -2
  58. package/lib/modules/Discount/index.d.ts +4 -2
  59. package/lib/modules/Discount/index.js +63 -8
  60. package/lib/modules/Discount/types.d.ts +7 -1
  61. package/lib/modules/Order/index.d.ts +18 -87
  62. package/lib/modules/Order/index.js +146 -633
  63. package/lib/modules/Order/types.d.ts +19 -198
  64. package/lib/modules/Order/types.js +0 -1
  65. package/lib/modules/Order/utils.d.ts +1 -50
  66. package/lib/modules/Order/utils.js +22 -229
  67. package/lib/modules/Quotation/index.d.ts +1 -0
  68. package/lib/modules/Quotation/index.js +15 -18
  69. package/lib/modules/Rules/index.d.ts +0 -4
  70. package/lib/modules/Rules/index.js +14 -22
  71. package/lib/modules/SalesSummary/index.js +2 -4
  72. package/lib/modules/SalesSummary/utils.js +5 -18
  73. package/lib/modules/Schedule/index.js +1 -3
  74. package/lib/modules/index.d.ts +0 -1
  75. package/lib/modules/index.js +1 -3
  76. package/lib/server/index.js +4 -41
  77. package/lib/server/modules/order/index.d.ts +0 -23
  78. package/lib/server/modules/order/index.js +14 -46
  79. package/lib/server/modules/order/types.d.ts +2 -0
  80. package/lib/server/modules/order/utils/filterOrders.js +4 -12
  81. package/lib/server/modules/products/index.d.ts +1 -1
  82. package/lib/server/modules/products/index.js +20 -30
  83. package/lib/server/modules/schedule/index.js +1 -2
  84. package/lib/solution/BaseSales/index.d.ts +7 -89
  85. package/lib/solution/BaseSales/index.js +22 -736
  86. package/lib/solution/BaseSales/types.d.ts +1 -67
  87. package/lib/solution/BaseSales/types.js +1 -3
  88. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +1 -0
  89. package/lib/solution/BaseSales/utils/parseSalesResponse.js +1 -0
  90. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +12 -71
  91. package/lib/solution/BaseSales/utils.js +6 -46
  92. package/lib/solution/BookingByStep/index.d.ts +1 -1
  93. package/lib/solution/BookingTicket/index.d.ts +1 -133
  94. package/lib/solution/BookingTicket/index.js +8 -352
  95. package/lib/solution/BookingTicket/types.d.ts +0 -2
  96. package/lib/solution/BookingTicket/types.js +0 -6
  97. package/lib/solution/BookingTicket/utils/cartView.js +2 -4
  98. package/lib/solution/ScanOrder/index.d.ts +3 -9
  99. package/lib/solution/ScanOrder/index.js +66 -147
  100. package/lib/solution/ScanOrder/utils.js +6 -46
  101. package/lib/solution/ShopDiscount/index.d.ts +1 -0
  102. package/lib/solution/ShopDiscount/index.js +4 -2
  103. package/lib/solution/VenueBooking/index.d.ts +9 -5
  104. package/lib/solution/VenueBooking/index.js +14 -50
  105. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
  106. package/lib/solution/VenueBooking/utils/slotMerge.js +0 -10
  107. package/package.json +2 -2
  108. package/dist/modules/BookingContext/index.d.ts +0 -37
  109. package/dist/modules/BookingContext/index.js +0 -436
  110. package/dist/modules/BookingContext/types.d.ts +0 -102
  111. package/dist/modules/BookingContext/types.js +0 -51
  112. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
  113. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -193
  114. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
  115. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -137
  116. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -75
  117. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -215
  118. package/dist/modules/BookingContext/utils/flexible.d.ts +0 -28
  119. package/dist/modules/BookingContext/utils/flexible.js +0 -56
  120. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
  121. package/dist/modules/BookingContext/utils/formatResourceList.js +0 -38
  122. package/dist/modules/BookingContext/utils/index.d.ts +0 -11
  123. package/dist/modules/BookingContext/utils/index.js +0 -11
  124. package/dist/modules/BookingContext/utils/noResource.d.ts +0 -13
  125. package/dist/modules/BookingContext/utils/noResource.js +0 -77
  126. package/dist/modules/BookingContext/utils/productExtend.d.ts +0 -72
  127. package/dist/modules/BookingContext/utils/productExtend.js +0 -339
  128. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
  129. package/dist/modules/BookingContext/utils/resourceErrors.js +0 -74
  130. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
  131. package/dist/modules/BookingContext/utils/resourceSelection.js +0 -24
  132. package/dist/modules/BookingContext/utils/resources.d.ts +0 -80
  133. package/dist/modules/BookingContext/utils/resources.js +0 -486
  134. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
  135. package/dist/modules/BookingContext/utils/serviceTimes.js +0 -151
  136. package/dist/modules/BookingContext/utils/timeSlices.d.ts +0 -42
  137. package/dist/modules/BookingContext/utils/timeSlices.js +0 -100
  138. package/dist/modules/Order/utils/manualProductDiscount.d.ts +0 -106
  139. package/dist/modules/Order/utils/manualProductDiscount.js +0 -212
  140. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +0 -275
  141. package/dist/solution/BaseSales/utils/cartPromotion.js +0 -1258
  142. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
  143. package/dist/solution/BaseSales/utils/quotationPrice.js +0 -237
  144. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +0 -113
  145. package/dist/solution/BookingTicket/utils/addProductDecision.js +0 -346
  146. package/lib/modules/BookingContext/index.d.ts +0 -37
  147. package/lib/modules/BookingContext/index.js +0 -297
  148. package/lib/modules/BookingContext/types.d.ts +0 -102
  149. package/lib/modules/BookingContext/types.js +0 -34
  150. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
  151. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -207
  152. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
  153. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -141
  154. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -75
  155. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -198
  156. package/lib/modules/BookingContext/utils/flexible.d.ts +0 -28
  157. package/lib/modules/BookingContext/utils/flexible.js +0 -80
  158. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
  159. package/lib/modules/BookingContext/utils/formatResourceList.js +0 -50
  160. package/lib/modules/BookingContext/utils/index.d.ts +0 -11
  161. package/lib/modules/BookingContext/utils/index.js +0 -43
  162. package/lib/modules/BookingContext/utils/noResource.d.ts +0 -13
  163. package/lib/modules/BookingContext/utils/noResource.js +0 -90
  164. package/lib/modules/BookingContext/utils/productExtend.d.ts +0 -72
  165. package/lib/modules/BookingContext/utils/productExtend.js +0 -283
  166. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
  167. package/lib/modules/BookingContext/utils/resourceErrors.js +0 -80
  168. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
  169. package/lib/modules/BookingContext/utils/resourceSelection.js +0 -46
  170. package/lib/modules/BookingContext/utils/resources.d.ts +0 -80
  171. package/lib/modules/BookingContext/utils/resources.js +0 -377
  172. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
  173. package/lib/modules/BookingContext/utils/serviceTimes.js +0 -162
  174. package/lib/modules/BookingContext/utils/timeSlices.d.ts +0 -42
  175. package/lib/modules/BookingContext/utils/timeSlices.js +0 -124
  176. package/lib/modules/Order/utils/manualProductDiscount.d.ts +0 -106
  177. package/lib/modules/Order/utils/manualProductDiscount.js +0 -207
  178. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +0 -275
  179. package/lib/solution/BaseSales/utils/cartPromotion.js +0 -836
  180. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
  181. package/lib/solution/BaseSales/utils/quotationPrice.js +0 -277
  182. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +0 -113
  183. package/lib/solution/BookingTicket/utils/addProductDecision.js +0 -318
@@ -1,124 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
-
29
- // src/modules/BookingContext/utils/timeSlices.ts
30
- var timeSlices_exports = {};
31
- __export(timeSlices_exports, {
32
- findNextDuration: () => findNextDuration,
33
- findNextSlice: () => findNextSlice,
34
- getDurationValue: () => import_flexible.getDurationValue,
35
- getEndDate: () => getEndDate,
36
- sliceDayIntoFiveMinutes: () => sliceDayIntoFiveMinutes
37
- });
38
- module.exports = __toCommonJS(timeSlices_exports);
39
- var import_dayjs = __toESM(require("dayjs"));
40
- var import_flexible = require("./flexible");
41
- function sliceDayIntoFiveMinutes(config, isDay) {
42
- const startTime = (0, import_dayjs.default)().startOf("day");
43
- const endTime = (0, import_dayjs.default)().endOf("day");
44
- const timeSlice = config && config.value || 5;
45
- const timeSlices = [];
46
- const durationSlicesBasedOnTime = [];
47
- let currentTime = startTime;
48
- if (isDay) {
49
- let currentDay = 1;
50
- while (currentDay <= 30) {
51
- timeSlices.push({
52
- label: currentTime.format("hh:mm A"),
53
- value: currentTime.format("HH:mm")
54
- });
55
- durationSlicesBasedOnTime.push({
56
- label: String(currentDay),
57
- value: currentDay
58
- });
59
- currentDay += 1;
60
- }
61
- return { timeSlices, durationSlicesBasedOnTime };
62
- }
63
- while (currentTime.isBefore(endTime)) {
64
- timeSlices.push({
65
- label: currentTime.format("hh:mm A"),
66
- value: currentTime.format("HH:mm")
67
- });
68
- const nextTime = currentTime.add(timeSlice, "minute");
69
- const durationValue = nextTime.diff(startTime, "minute");
70
- durationSlicesBasedOnTime.push({
71
- label: String(durationValue),
72
- value: durationValue
73
- });
74
- currentTime = nextTime;
75
- }
76
- return { timeSlices, durationSlicesBasedOnTime };
77
- }
78
- function findNextDuration(current, array, defaultValue) {
79
- if (defaultValue !== void 0 && defaultValue !== null)
80
- return defaultValue;
81
- if (!array || array.length === 0)
82
- return void 0;
83
- for (let i = 0; i < array.length; i += 1) {
84
- if (array[i].value === (current == null ? void 0 : current.value))
85
- return array[i].value;
86
- }
87
- return array[0].value;
88
- }
89
- function findNextSlice(params) {
90
- var _a;
91
- const { timeSlices, index = 0, date = "" } = params;
92
- const currentTimeValue = date || (0, import_dayjs.default)().format("HH:mm");
93
- for (let i = 0; i < timeSlices.length; i += 1) {
94
- if (timeSlices[i].value !== "now" && timeSlices[i].value >= currentTimeValue) {
95
- return timeSlices[i].value;
96
- }
97
- }
98
- return (_a = timeSlices[index]) == null ? void 0 : _a.value;
99
- }
100
- function getEndDate(startDate, duration, endDate, shopOpeningHours) {
101
- if (duration === "flexible") {
102
- let openingDate = (0, import_dayjs.default)(
103
- `${startDate.format("YYYY-MM-DD")} ${shopOpeningHours || "23:59"}`
104
- );
105
- if ((0, import_dayjs.default)(startDate).isAfter(openingDate)) {
106
- openingDate = openingDate.add(1, "day");
107
- }
108
- if (!endDate)
109
- return openingDate;
110
- const endDateObj = (0, import_dayjs.default)(endDate);
111
- if (endDateObj.isAfter(openingDate))
112
- return openingDate;
113
- return endDateObj;
114
- }
115
- return startDate.add(Number(duration), "minute");
116
- }
117
- // Annotate the CommonJS export names for ESM import in node:
118
- 0 && (module.exports = {
119
- findNextDuration,
120
- findNextSlice,
121
- getDurationValue,
122
- getEndDate,
123
- sliceDayIntoFiveMinutes
124
- });
@@ -1,106 +0,0 @@
1
- /** 解析商品行数量(checkout 协议 product_num 语义 = 当前行 num) */
2
- export declare function resolveSafeProductNum(num?: number | null): number;
3
- /**
4
- * 将 discount_list 中 type=product 项的 product_num 同步为当前商品数量。
5
- *
6
- * @example
7
- * syncManualProductDiscountProductNum(line.discount_list, line.num);
8
- */
9
- export declare function syncManualProductDiscountProductNum(discountList: any[] | undefined | null, productNum?: number | null): any[];
10
- /** 从多源解析改价前行总价(与 cacheItem._extend.origin_total 语义一致) */
11
- export declare function resolveManualDiscountOriginTotal(sources: {
12
- originTotal?: unknown;
13
- extendOriginTotal?: unknown;
14
- originExtendOriginTotal?: unknown;
15
- sourceExtendOriginTotal?: unknown;
16
- catalogUnitPrice?: unknown;
17
- quantity?: number;
18
- }): number;
19
- /** 从 payload / extend / origin 解析手动折扣原因 */
20
- export declare function resolveManualDiscountReasonFromSources(sources: {
21
- discountReason?: unknown;
22
- extendDiscountReason?: unknown;
23
- originExtendDiscountReason?: unknown;
24
- }): string;
25
- /** 是否带手动改价标记(price_override / is_manual_discount) */
26
- export declare function hasManualProductDiscountFlag(metadata?: Record<string, any> | null): boolean;
27
- /**
28
- * normalize 兜底:手动改价但 discount_list 缺 type=product 时,按行级原价/折后价补写。
29
- *
30
- * @example
31
- * ensureManualProductDiscountList({
32
- * discountList: [],
33
- * metadata: { price_override: '5', is_manual_discount: 1 },
34
- * originalPrice: '11.00',
35
- * sellingPrice: '5.00',
36
- * quantity: 1,
37
- * });
38
- */
39
- export declare function ensureManualProductDiscountList(params: {
40
- discountList?: any[] | null;
41
- metadata?: Record<string, any> | null;
42
- originalPrice: string | number;
43
- sellingPrice: string | number;
44
- quantity?: number;
45
- }): any[];
46
- /** 商品手动折扣 discount_list 项(checkout 协议,type = product) */
47
- export interface ManualProductDiscountItem {
48
- amount: number;
49
- type: 'product';
50
- discount: {
51
- message: string;
52
- discountway: string;
53
- product_num: number;
54
- discount_per: string;
55
- discount_type: 'discount' | 'change_price';
56
- };
57
- }
58
- /**
59
- * 从 discount_list 中取手动改价项(type = product)。
60
- *
61
- * @example
62
- * const manual = findManualProductDiscountItem(product.discount_list);
63
- * manual?.discount.message; // 折扣原因
64
- */
65
- export declare function findManualProductDiscountItem(discountList?: any[] | null): ManualProductDiscountItem | undefined;
66
- /**
67
- * 解析折扣原因:优先 discount_list[type=product].discount.message。
68
- *
69
- * @example
70
- * resolveManualDiscountMessage(line.discount_list, line.metadata?.legacy_reason);
71
- */
72
- export declare function resolveManualDiscountMessage(discountList?: any[] | null, fallback?: string): string;
73
- /** 去掉 discount_list 中已有的手动改价项,避免重复叠加 */
74
- export declare function stripManualProductDiscountItems(discountList?: any[] | null): any[];
75
- /**
76
- * 由改价前后行总价构建手动折扣项;amount = |originTotal - sellingTotal|(行级差额)。
77
- *
78
- * @example
79
- * buildManualProductDiscountItem({
80
- * originTotal: 11,
81
- * sellingTotal: 4,
82
- * quantity: 1,
83
- * message: 'VIP',
84
- * });
85
- */
86
- export declare function buildManualProductDiscountItem(params: {
87
- originTotal: number;
88
- sellingTotal: number;
89
- quantity?: number;
90
- message?: string;
91
- discountway?: string;
92
- discount_per?: string;
93
- }): ManualProductDiscountItem;
94
- /**
95
- * 将手动改价项合并进 discount_list(替换已有 type=product 项)。
96
- *
97
- * @example
98
- * mergeManualProductDiscountIntoList(coupons, manualItem);
99
- */
100
- export declare function mergeManualProductDiscountIntoList(discountList: any[] | undefined | null, manualItem: ManualProductDiscountItem | null | undefined): any[];
101
- /** 是否应写入手动改价 discount_list 项 */
102
- export declare function shouldBuildManualProductDiscount(params: {
103
- hasPriceOverride?: boolean;
104
- originTotal?: number;
105
- sellingTotal?: number;
106
- }): boolean;
@@ -1,207 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
-
29
- // src/modules/Order/utils/manualProductDiscount.ts
30
- var manualProductDiscount_exports = {};
31
- __export(manualProductDiscount_exports, {
32
- buildManualProductDiscountItem: () => buildManualProductDiscountItem,
33
- ensureManualProductDiscountList: () => ensureManualProductDiscountList,
34
- findManualProductDiscountItem: () => findManualProductDiscountItem,
35
- hasManualProductDiscountFlag: () => hasManualProductDiscountFlag,
36
- mergeManualProductDiscountIntoList: () => mergeManualProductDiscountIntoList,
37
- resolveManualDiscountMessage: () => resolveManualDiscountMessage,
38
- resolveManualDiscountOriginTotal: () => resolveManualDiscountOriginTotal,
39
- resolveManualDiscountReasonFromSources: () => resolveManualDiscountReasonFromSources,
40
- resolveSafeProductNum: () => resolveSafeProductNum,
41
- shouldBuildManualProductDiscount: () => shouldBuildManualProductDiscount,
42
- stripManualProductDiscountItems: () => stripManualProductDiscountItems,
43
- syncManualProductDiscountProductNum: () => syncManualProductDiscountProductNum
44
- });
45
- module.exports = __toCommonJS(manualProductDiscount_exports);
46
- var import_decimal = __toESM(require("decimal.js"));
47
- function resolveSafeProductNum(num) {
48
- const parsed = Number(num);
49
- if (!Number.isFinite(parsed) || parsed <= 0)
50
- return 1;
51
- return Math.floor(parsed);
52
- }
53
- function syncManualProductDiscountProductNum(discountList, productNum) {
54
- const quantity = resolveSafeProductNum(productNum);
55
- return (discountList || []).map((item) => {
56
- if ((item == null ? void 0 : item.type) !== "product")
57
- return item;
58
- return {
59
- ...item,
60
- discount: {
61
- ...item.discount || {},
62
- product_num: quantity
63
- }
64
- };
65
- });
66
- }
67
- function resolveManualDiscountOriginTotal(sources) {
68
- const candidates = [
69
- sources.originTotal,
70
- sources.extendOriginTotal,
71
- sources.originExtendOriginTotal,
72
- sources.sourceExtendOriginTotal
73
- ];
74
- for (const candidate of candidates) {
75
- if (candidate === void 0 || candidate === null || candidate === "")
76
- continue;
77
- const parsed = Number(candidate);
78
- if (Number.isFinite(parsed))
79
- return parsed;
80
- }
81
- const unit = Number(sources.catalogUnitPrice);
82
- const quantity = sources.quantity ?? 1;
83
- if (Number.isFinite(unit) && unit > 0) {
84
- return new import_decimal.default(unit).mul(quantity).toNumber();
85
- }
86
- return NaN;
87
- }
88
- function resolveManualDiscountReasonFromSources(sources) {
89
- for (const candidate of [
90
- sources.discountReason,
91
- sources.extendDiscountReason,
92
- sources.originExtendDiscountReason
93
- ]) {
94
- if (candidate != null && String(candidate).trim() !== "") {
95
- return String(candidate);
96
- }
97
- }
98
- return "";
99
- }
100
- function hasManualProductDiscountFlag(metadata) {
101
- if (!metadata)
102
- return false;
103
- const override = metadata.price_override;
104
- if (override !== void 0 && override !== null && override !== "") {
105
- return true;
106
- }
107
- return metadata.is_manual_discount === 1 || metadata.is_manual_discount === true;
108
- }
109
- function ensureManualProductDiscountList(params) {
110
- var _a, _b, _c, _d, _e, _f, _g, _h;
111
- const list = params.discountList || [];
112
- const quantity = resolveSafeProductNum(params.quantity);
113
- if (findManualProductDiscountItem(list)) {
114
- return syncManualProductDiscountProductNum(list, quantity);
115
- }
116
- const metadata = params.metadata || {};
117
- const originalNum = Number(params.originalPrice);
118
- const sellingNum = Number(params.sellingPrice);
119
- const shouldBuild = hasManualProductDiscountFlag(metadata) || shouldBuildManualProductDiscount({ originTotal: originalNum, sellingTotal: sellingNum });
120
- if (!shouldBuild) {
121
- return list;
122
- }
123
- if (!Number.isFinite(originalNum) || !Number.isFinite(sellingNum) || originalNum === sellingNum) {
124
- return list;
125
- }
126
- const message = resolveManualDiscountMessage(
127
- list,
128
- resolveManualDiscountReasonFromSources({
129
- extendDiscountReason: (_b = (_a = metadata.origin) == null ? void 0 : _a._extend) == null ? void 0 : _b.discount_reason,
130
- originExtendDiscountReason: (_d = (_c = metadata.origin) == null ? void 0 : _c._extend) == null ? void 0 : _d.discount_reason
131
- })
132
- );
133
- return mergeManualProductDiscountIntoList(
134
- list,
135
- buildManualProductDiscountItem({
136
- originTotal: originalNum,
137
- sellingTotal: sellingNum,
138
- quantity,
139
- message,
140
- discountway: (_f = (_e = metadata.origin) == null ? void 0 : _e._extend) == null ? void 0 : _f.discountway,
141
- discount_per: (_h = (_g = metadata.origin) == null ? void 0 : _g._extend) == null ? void 0 : _h.discount_per
142
- })
143
- );
144
- }
145
- function findManualProductDiscountItem(discountList) {
146
- return (discountList || []).find((item) => (item == null ? void 0 : item.type) === "product");
147
- }
148
- function resolveManualDiscountMessage(discountList, fallback) {
149
- var _a, _b;
150
- const message = (_b = (_a = findManualProductDiscountItem(discountList)) == null ? void 0 : _a.discount) == null ? void 0 : _b.message;
151
- if (message != null && String(message).trim() !== "") {
152
- return String(message);
153
- }
154
- return fallback ?? "";
155
- }
156
- function stripManualProductDiscountItems(discountList) {
157
- return (discountList || []).filter((item) => (item == null ? void 0 : item.type) !== "product");
158
- }
159
- function buildManualProductDiscountItem(params) {
160
- const origin = new import_decimal.default(Number(params.originTotal) || 0);
161
- const selling = new import_decimal.default(Number(params.sellingTotal) || 0);
162
- const diff = origin.minus(selling);
163
- const quantity = resolveSafeProductNum(params.quantity);
164
- return {
165
- amount: diff.abs().toDecimalPlaces(2).toNumber(),
166
- type: "product",
167
- discount: {
168
- message: params.message ?? "",
169
- discountway: params.discountway ?? "num",
170
- product_num: quantity,
171
- discount_per: params.discount_per ?? "",
172
- discount_type: diff.isNegative() ? "change_price" : "discount"
173
- }
174
- };
175
- }
176
- function mergeManualProductDiscountIntoList(discountList, manualItem) {
177
- const base = stripManualProductDiscountItems(discountList);
178
- if (!manualItem)
179
- return base;
180
- if (manualItem.amount === 0 && !manualItem.discount.message)
181
- return base;
182
- return [...base, manualItem];
183
- }
184
- function shouldBuildManualProductDiscount(params) {
185
- if (params.hasPriceOverride)
186
- return true;
187
- const origin = Number(params.originTotal);
188
- const selling = Number(params.sellingTotal);
189
- if (!Number.isFinite(origin) || !Number.isFinite(selling))
190
- return false;
191
- return origin !== selling;
192
- }
193
- // Annotate the CommonJS export names for ESM import in node:
194
- 0 && (module.exports = {
195
- buildManualProductDiscountItem,
196
- ensureManualProductDiscountList,
197
- findManualProductDiscountItem,
198
- hasManualProductDiscountFlag,
199
- mergeManualProductDiscountIntoList,
200
- resolveManualDiscountMessage,
201
- resolveManualDiscountOriginTotal,
202
- resolveManualDiscountReasonFromSources,
203
- resolveSafeProductNum,
204
- shouldBuildManualProductDiscount,
205
- stripManualProductDiscountItems,
206
- syncManualProductDiscountProductNum
207
- });