@pisell/pisellos 2.3.20 → 2.3.21

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 (33) hide show
  1. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +16 -10
  2. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +2 -1
  3. package/dist/modules/Order/index.js +14 -6
  4. package/dist/modules/Order/types.d.ts +1 -0
  5. package/dist/modules/Order/utils.js +10 -2
  6. package/dist/modules/Product/index.d.ts +1 -1
  7. package/dist/server/index.d.ts +4 -0
  8. package/dist/server/index.js +392 -253
  9. package/dist/server/modules/order/types.d.ts +2 -0
  10. package/dist/server/modules/products/index.d.ts +5 -1
  11. package/dist/server/modules/products/index.js +383 -315
  12. package/dist/server/modules/products/types.d.ts +4 -0
  13. package/dist/solution/BaseSales/index.js +144 -127
  14. package/dist/solution/BaseSales/types.d.ts +2 -0
  15. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +3 -1
  16. package/dist/solution/BookingByStep/index.d.ts +2 -2
  17. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +5 -0
  18. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +1 -0
  19. package/lib/modules/Order/index.js +21 -7
  20. package/lib/modules/Order/types.d.ts +1 -0
  21. package/lib/modules/Order/utils.js +10 -1
  22. package/lib/modules/Product/index.d.ts +1 -1
  23. package/lib/server/index.d.ts +4 -0
  24. package/lib/server/index.js +83 -2
  25. package/lib/server/modules/order/types.d.ts +2 -0
  26. package/lib/server/modules/products/index.d.ts +5 -1
  27. package/lib/server/modules/products/index.js +20 -0
  28. package/lib/server/modules/products/types.d.ts +4 -0
  29. package/lib/solution/BaseSales/index.js +40 -22
  30. package/lib/solution/BaseSales/types.d.ts +2 -0
  31. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +2 -0
  32. package/lib/solution/BookingByStep/index.d.ts +2 -2
  33. package/package.json +1 -1
@@ -121,6 +121,10 @@ function resolveProductTitle(product, booking, sourceProduct) {
121
121
  var metadata = product.metadata || {};
122
122
  return (_ref = (_ref2 = (_ref3 = (_ref4 = (_ref5 = (_title = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.title) !== null && _title !== void 0 ? _title : sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.name) !== null && _ref5 !== void 0 ? _ref5 : metadata.product_title) !== null && _ref4 !== void 0 ? _ref4 : metadata.product_name) !== null && _ref3 !== void 0 ? _ref3 : booking === null || booking === void 0 || (_booking$product = booking.product) === null || _booking$product === void 0 ? void 0 : _booking$product.title) !== null && _ref2 !== void 0 ? _ref2 : booking === null || booking === void 0 || (_booking$detail = booking.detail) === null || _booking$detail === void 0 ? void 0 : _booking$detail.product_title) !== null && _ref !== void 0 ? _ref : '';
123
123
  }
124
+ function resolveProductCover(product, booking, sourceProduct) {
125
+ var _ref6, _cover;
126
+ return (_ref6 = (_cover = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.cover) !== null && _cover !== void 0 ? _cover : product.product_cover) !== null && _ref6 !== void 0 ? _ref6 : '';
127
+ }
124
128
  function resolveMainProductPrice(product, fallback) {
125
129
  var _metadata$main_produc;
126
130
  var metadata = product.metadata || {};
@@ -130,9 +134,9 @@ function resolveMainProductPrice(product, fallback) {
130
134
  }
131
135
  function mapOrderBundleToOtherBundle(bundle) {
132
136
  return bundle.map(function (item) {
133
- var _ref6, _item$original_price;
137
+ var _ref7, _item$original_price;
134
138
  return _objectSpread(_objectSpread({}, item), {}, {
135
- original_price: (_ref6 = (_item$original_price = item.original_price) !== null && _item$original_price !== void 0 ? _item$original_price : item.bundle_selling_price) !== null && _ref6 !== void 0 ? _ref6 : item.price
139
+ original_price: (_ref7 = (_item$original_price = item.original_price) !== null && _item$original_price !== void 0 ? _item$original_price : item.bundle_selling_price) !== null && _ref7 !== void 0 ? _ref7 : item.price
136
140
  });
137
141
  });
138
142
  }
@@ -163,10 +167,10 @@ function synthesizeProductResourceFromBooking(booking) {
163
167
  });
164
168
  if (relationIdsByForm.size === 0) return undefined;
165
169
  return {
166
- resources: Array.from(relationIdsByForm.entries()).map(function (_ref7) {
167
- var _ref8 = _slicedToArray(_ref7, 2),
168
- formId = _ref8[0],
169
- relationIds = _ref8[1];
170
+ resources: Array.from(relationIdsByForm.entries()).map(function (_ref8) {
171
+ var _ref9 = _slicedToArray(_ref8, 2),
172
+ formId = _ref9[0],
173
+ relationIds = _ref9[1];
170
174
  return {
171
175
  id: formId,
172
176
  status: 1,
@@ -186,7 +190,7 @@ function synthesizeProductResourceFromBooking(booking) {
186
190
  * 调用方须传入与该行关联的 booking(通常 bookings[].product_uid === product.metadata.unique_identification_number)。
187
191
  */
188
192
  export function buildCacheItemFromOrderLine(input) {
189
- var _product$product_id, _product$selling_pric, _product$original_pri, _booking$metadata$hol, _booking$metadata2, _product$product_vari, _product$num, _ref9, _product$note, _booking$detail2, _product$metadata, _product$metadata2, _ref10, _extension_type, _booking$product2, _booking$product3, _price, _product$order_detail, _ref11, _booking$id;
193
+ var _product$product_id, _product$selling_pric, _product$original_pri, _booking$metadata$hol, _booking$metadata2, _product$product_vari, _product$num, _ref10, _product$note, _booking$detail2, _product$metadata, _product$metadata2, _ref11, _extension_type, _booking$product2, _booking$product3, _price, _product$order_detail, _ref12, _booking$id;
190
194
  var product = input.product,
191
195
  booking = input.booking,
192
196
  sourceProduct = input.sourceProduct;
@@ -202,6 +206,7 @@ export function buildCacheItemFromOrderLine(input) {
202
206
  var capacity = resolveCapacityFromBooking(booking);
203
207
  var holderId = (_booking$metadata$hol = (_booking$metadata2 = booking.metadata) === null || _booking$metadata2 === void 0 ? void 0 : _booking$metadata2.holder_id) !== null && _booking$metadata$hol !== void 0 ? _booking$metadata$hol : booking.holder_id;
204
208
  var productTitle = resolveProductTitle(product, booking, sourceProduct);
209
+ var productCover = resolveProductCover(product, booking, sourceProduct);
205
210
  var productOptionString = buildProductOptionStringFromOrderLine(product);
206
211
  var other = {
207
212
  product_variant_id: (_product$product_vari = product.product_variant_id) !== null && _product$product_vari !== void 0 ? _product$product_vari : 0,
@@ -219,7 +224,8 @@ export function buildCacheItemFromOrderLine(input) {
219
224
  sub_type: booking.sub_type,
220
225
  quantity: (_product$num = product.num) !== null && _product$num !== void 0 ? _product$num : 1,
221
226
  product_name: productTitle,
222
- note: (_ref9 = (_product$note = product.note) !== null && _product$note !== void 0 ? _product$note : booking === null || booking === void 0 || (_booking$detail2 = booking.detail) === null || _booking$detail2 === void 0 ? void 0 : _booking$detail2.note) !== null && _ref9 !== void 0 ? _ref9 : '',
227
+ product_cover: productCover,
228
+ note: (_ref10 = (_product$note = product.note) !== null && _product$note !== void 0 ? _product$note : booking === null || booking === void 0 || (_booking$detail2 = booking.detail) === null || _booking$detail2 === void 0 ? void 0 : _booking$detail2.note) !== null && _ref10 !== void 0 ? _ref10 : '',
223
229
  price: mainProductPrice,
224
230
  total: selling,
225
231
  origin_total: original,
@@ -254,7 +260,7 @@ export function buildCacheItemFromOrderLine(input) {
254
260
  var base = _objectSpread(_objectSpread(_objectSpread({}, sourceProduct || {}), {}, {
255
261
  id: resolvedId,
256
262
  product_id: resolvedId,
257
- extension_type: (_ref10 = (_extension_type = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.extension_type) !== null && _extension_type !== void 0 ? _extension_type : booking === null || booking === void 0 || (_booking$product2 = booking.product) === null || _booking$product2 === void 0 ? void 0 : _booking$product2.extension_type) !== null && _ref10 !== void 0 ? _ref10 : sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.extension_type,
263
+ extension_type: (_ref11 = (_extension_type = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.extension_type) !== null && _extension_type !== void 0 ? _extension_type : booking === null || booking === void 0 || (_booking$product2 = booking.product) === null || _booking$product2 === void 0 ? void 0 : _booking$product2.extension_type) !== null && _ref11 !== void 0 ? _ref11 : sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.extension_type,
258
264
  title: productTitle || (sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.title) || (booking === null || booking === void 0 || (_booking$product3 = booking.product) === null || _booking$product3 === void 0 ? void 0 : _booking$product3.title),
259
265
  price: (_price = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.price) !== null && _price !== void 0 ? _price : selling,
260
266
  selling_price: product.selling_price,
@@ -266,7 +272,7 @@ export function buildCacheItemFromOrderLine(input) {
266
272
  new: 0,
267
273
  autoClose: false,
268
274
  order_detail_id: (_product$order_detail = product.order_detail_id) !== null && _product$order_detail !== void 0 ? _product$order_detail : null,
269
- booking_id: (_ref11 = (_booking$id = booking.id) !== null && _booking$id !== void 0 ? _booking$id : booking.booking_id) !== null && _ref11 !== void 0 ? _ref11 : 0
275
+ booking_id: (_ref12 = (_booking$id = booking.id) !== null && _booking$id !== void 0 ? _booking$id : booking.booking_id) !== null && _ref12 !== void 0 ? _ref12 : 0
270
276
  });
271
277
  if ((sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.capacity) !== undefined) {
272
278
  base.capacity = sourceProduct.capacity;
@@ -75,7 +75,7 @@ function mapOrderBundleToOtherBundle(bundle) {
75
75
  });
76
76
  }
77
77
  export function buildNormalProductCacheItemFromOrderLine(input) {
78
- var _product$product_id, _product$selling_pric2, _product$original_pri, _product$metadata, _product$metadata2, _product$product_vari, _originExtend$other, _product$num, _product$product_vari2, _product$num2, _title, _product$note, _originExtend$price, _originExtend$total, _originExtend$origin_, _product$metadata3, _ref6, _title2, _price3, _product$order_detail;
78
+ var _product$product_id, _product$selling_pric2, _product$original_pri, _product$metadata, _product$metadata2, _product$product_vari, _originExtend$other, _product$num, _product$product_vari2, _product$num2, _title, _product$note, _originExtend$price, _originExtend$total, _originExtend$origin_, _product$metadata3, _ref6, _title2, _ref7, _cover, _price3, _product$order_detail;
79
79
  var product = input.product,
80
80
  sourceProduct = input.sourceProduct;
81
81
  var resolvedId = (_product$product_id = product.product_id) !== null && _product$product_id !== void 0 ? _product$product_id : sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.id;
@@ -132,6 +132,7 @@ export function buildNormalProductCacheItemFromOrderLine(input) {
132
132
  product_id: resolvedId,
133
133
  _id: uid,
134
134
  title: (_ref6 = (_title2 = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.title) !== null && _title2 !== void 0 ? _title2 : product.product_title) !== null && _ref6 !== void 0 ? _ref6 : '',
135
+ cover: (_ref7 = (_cover = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.cover) !== null && _cover !== void 0 ? _cover : product.product_cover) !== null && _ref7 !== void 0 ? _ref7 : '',
135
136
  price: (_price3 = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.price) !== null && _price3 !== void 0 ? _price3 : sourcePrice,
136
137
  selling_price: product.selling_price,
137
138
  original_price: product.original_price
@@ -711,7 +711,6 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
711
711
  key: "applyDiscount",
712
712
  value: function applyDiscount(options) {
713
713
  var _this$store$discount9,
714
- _tempOrder$holder2,
715
714
  _this$store$summary2,
716
715
  _this2 = this;
717
716
  var tempOrder = this.store.tempOrder;
@@ -726,11 +725,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
726
725
  if (shouldSkipDiscountCalculation) return;
727
726
  var rulesModule = this.store.rules;
728
727
  if (!rulesModule) return;
729
- var holders = ((_tempOrder$holder2 = tempOrder.holder) === null || _tempOrder$holder2 === void 0 ? void 0 : _tempOrder$holder2.form_record) || [];
730
728
  var result = rulesModule.calcDiscount({
731
729
  productList: tempOrder.products,
732
730
  discountList: discountList,
733
- holders: holders,
731
+ holders: [],
734
732
  isFormSubject: function isFormSubject(product) {
735
733
  return resolveIsFormSubject(tempOrder, product);
736
734
  },
@@ -2019,13 +2017,21 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
2019
2017
  key: "restoreOriginalSnapshotIfProductsUnchanged",
2020
2018
  value: function restoreOriginalSnapshotIfProductsUnchanged(tempOrder, snapshot) {
2021
2019
  var currentFingerprint = this.buildOrderProductsFingerprint(tempOrder.products);
2020
+ var manualDepositOverride = this.getManualDepositOverride(tempOrder);
2022
2021
  if (currentFingerprint !== snapshot.productFingerprint) {
2023
2022
  var currentStructuralFingerprint = this.buildOrderProductsStructuralFingerprint(tempOrder.products);
2024
2023
  var snapshotStructuralFingerprint = this.buildOrderProductsStructuralFingerprint(Array.isArray(snapshot.products) ? snapshot.products : []);
2025
2024
  if (currentStructuralFingerprint !== snapshotStructuralFingerprint) return null;
2026
2025
  }
2027
2026
  var summary = _objectSpread(_objectSpread({}, createEmptySummary()), cloneDeep(snapshot.summary || {}));
2028
- if (!this.isSnapshotPayableAmountUnchanged(tempOrder, snapshot, summary)) return null;
2027
+ var shouldUseManualDepositOverride = Boolean(manualDepositOverride && manualDepositOverride.productStructuralFingerprint === this.buildOrderProductsStructuralFingerprint(tempOrder.products));
2028
+ if (shouldUseManualDepositOverride) {
2029
+ summary = this.applyDepositAmountToSummary(tempOrder, summary, manualDepositOverride.amount);
2030
+ } else if (manualDepositOverride) {
2031
+ this.clearManualDepositOverride(tempOrder);
2032
+ }
2033
+ var isPayableAmountUnchanged = this.isSnapshotPayableAmountUnchanged(tempOrder, snapshot, summary);
2034
+ if (!isPayableAmountUnchanged) return null;
2029
2035
  if (Array.isArray(snapshot.products)) {
2030
2036
  tempOrder.products = cloneDeep(snapshot.products);
2031
2037
  }
@@ -2526,7 +2532,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
2526
2532
  }, {
2527
2533
  key: "buildTempOrderHolderFromBookings",
2528
2534
  value: function buildTempOrderHolderFromBookings(tempOrder) {
2529
- var _baseHolder$customer_, _baseHolder, _ref46, _baseHolder$form_id, _baseHolder2, _tempOrder$holder3, _baseHolder3, _this$otherParams;
2535
+ var _baseHolder$customer_, _baseHolder, _ref46, _baseHolder$form_id, _baseHolder2, _tempOrder$holder2, _baseHolder3, _this$otherParams;
2530
2536
  var holderRecords = [];
2531
2537
  var holderNames = [];
2532
2538
  var baseHolder = null;
@@ -2573,7 +2579,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
2573
2579
  }
2574
2580
  var nextHolder = {
2575
2581
  customer_id: (_baseHolder$customer_ = (_baseHolder = baseHolder) === null || _baseHolder === void 0 ? void 0 : _baseHolder.customer_id) !== null && _baseHolder$customer_ !== void 0 ? _baseHolder$customer_ : tempOrder.customer_id,
2576
- form_id: (_ref46 = (_baseHolder$form_id = (_baseHolder2 = baseHolder) === null || _baseHolder2 === void 0 ? void 0 : _baseHolder2.form_id) !== null && _baseHolder$form_id !== void 0 ? _baseHolder$form_id : (_tempOrder$holder3 = tempOrder.holder) === null || _tempOrder$holder3 === void 0 ? void 0 : _tempOrder$holder3.form_id) !== null && _ref46 !== void 0 ? _ref46 : 0,
2582
+ form_id: (_ref46 = (_baseHolder$form_id = (_baseHolder2 = baseHolder) === null || _baseHolder2 === void 0 ? void 0 : _baseHolder2.form_id) !== null && _baseHolder$form_id !== void 0 ? _baseHolder$form_id : (_tempOrder$holder2 = tempOrder.holder) === null || _tempOrder$holder2 === void 0 ? void 0 : _tempOrder$holder2.form_id) !== null && _ref46 !== void 0 ? _ref46 : 0,
2577
2583
  form_record: holderRecords
2578
2584
  };
2579
2585
  if (holderNames.length) {
@@ -5700,6 +5706,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
5700
5706
  if (!existingIdentity) {
5701
5707
  row.metadata.unique_identification_number = createUuidV4();
5702
5708
  }
5709
+ // 从云端、本地数据库中获取到的商品数据,先打上 runtime 标记,提供给 UI 做 saved items.
5710
+ row.metadata.is_edit_for_runtime = true;
5703
5711
  var normalized = normalizeOrderProduct(row);
5704
5712
  normalized.discount_list = normalizeOrderProductDiscountList(normalized.discount_list);
5705
5713
  var result = _objectSpread(_objectSpread(_objectSpread({}, row), normalized), {}, {
@@ -198,6 +198,7 @@ export interface OrderProduct extends OrderProductIdentity {
198
198
  product_bundle: any[];
199
199
  booking_uid?: string;
200
200
  product_title?: OrderLocalizedText;
201
+ product_cover?: string;
201
202
  metadata: Record<string, any>;
202
203
  note?: string;
203
204
  }
@@ -924,6 +924,9 @@ function normalizeSubmitProduct(product) {
924
924
  if (rawMetadata.is_rule !== undefined) {
925
925
  cleanMetadata.is_rule = rawMetadata.is_rule;
926
926
  }
927
+ if (rawMetadata.holder_config !== undefined) {
928
+ cleanMetadata.holder_config = rawMetadata.holder_config;
929
+ }
927
930
  var productSku = _objectSpread(_objectSpread({}, submitProduct.product_sku && _typeof(submitProduct.product_sku) === 'object' ? submitProduct.product_sku : {}), {}, {
928
931
  option: formatSubmitOptionItems((_submitProduct$produc = submitProduct.product_sku) === null || _submitProduct$produc === void 0 ? void 0 : _submitProduct$produc.option)
929
932
  });
@@ -1361,11 +1364,16 @@ export function isHolderConfigRequired(holderConfig) {
1361
1364
  return Number(holderConfig.required) === 1;
1362
1365
  }
1363
1366
  export function productRequiresFormSubject(tempOrder, product) {
1367
+ var _tempOrder$products, _orderProduct$metadat;
1368
+ var _orderProduct = tempOrder === null || tempOrder === void 0 || (_tempOrder$products = tempOrder.products) === null || _tempOrder$products === void 0 ? void 0 : _tempOrder$products.find(function (item) {
1369
+ return item.metadata.unique_identification_number === product._id || item.product_id === product.id;
1370
+ });
1364
1371
  var runtimeOrigin = getRuntimeProductOrigin(tempOrder, product);
1365
- return isHolderConfigRequired(product === null || product === void 0 ? void 0 : product.holder_config) || isHolderConfigRequired(runtimeOrigin === null || runtimeOrigin === void 0 ? void 0 : runtimeOrigin.holder_config);
1372
+ return isHolderConfigRequired(_orderProduct === null || _orderProduct === void 0 || (_orderProduct$metadat = _orderProduct.metadata) === null || _orderProduct$metadat === void 0 ? void 0 : _orderProduct$metadat.holder_config) || isHolderConfigRequired(runtimeOrigin === null || runtimeOrigin === void 0 ? void 0 : runtimeOrigin.holder_config) || isHolderConfigRequired(product === null || product === void 0 ? void 0 : product.holder_config);
1366
1373
  }
1367
1374
  export function resolveIsFormSubject(tempOrder, product) {
1368
1375
  var _tempOrder$holder;
1376
+ debugger;
1369
1377
  // 旧版预约维度的 holder 类型仍然生效;新版则从当前商品 holder_config 判断。
1370
1378
  if ((tempOrder === null || tempOrder === void 0 || (_tempOrder$holder = tempOrder.holder) === null || _tempOrder$holder === void 0 ? void 0 : _tempOrder$holder.type) === 'form') return true;
1371
1379
  if (product) return productRequiresFormSubject(tempOrder, product);
@@ -1405,7 +1413,7 @@ export function isEmptyOrderProductDisplayValue(value) {
1405
1413
  */
1406
1414
  export function mergeOrderProductDisplayFields(previous, next) {
1407
1415
  var merged = _objectSpread({}, next);
1408
- var displayFields = ['product_title', 'product_name', 'product_cover', 'cover', 'variant_title', 'product_sku', 'payment_price'];
1416
+ var displayFields = ['product_title', 'product_name', 'product_cover', 'cover', 'product_cover', 'variant_title', 'product_sku', 'payment_price'];
1409
1417
  displayFields.forEach(function (field) {
1410
1418
  if (isEmptyOrderProductDisplayValue(merged[field]) && !isEmptyOrderProductDisplayValue(previous[field])) {
1411
1419
  merged[field] = previous[field];
@@ -49,5 +49,5 @@ export declare class Product extends BaseModule implements Module {
49
49
  getCategories(): ProductCategory[];
50
50
  setOtherParams(key: string, value: any): void;
51
51
  getOtherParams(): any;
52
- getProductType(): "normal" | "duration" | "session";
52
+ getProductType(): "duration" | "session" | "normal";
53
53
  }
@@ -445,6 +445,10 @@ declare class Server {
445
445
  private sumPaidOrderPayments;
446
446
  private toAmountNumber;
447
447
  private buildSmallTicketProductMap;
448
+ private collectSalesDetailProductIds;
449
+ private buildSalesDetailProductSnapshotMap;
450
+ private withProductCatalogSnapshots;
451
+ private withSalesDetailProductSnapshots;
448
452
  private withPendingSyncProductTitles;
449
453
  private buildProductTitleSnapshot;
450
454
  private getProductTitleSnapshotCurrentLocale;