@pisell/pisellos 2.3.164 → 2.3.166
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/model/strategy/adapter/promotion/evaluator.js +89 -104
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +28 -4
- package/dist/modules/Holder/utils.d.ts +2 -0
- package/dist/modules/Holder/utils.js +32 -2
- package/dist/modules/OpenData/contactInfo.d.ts +20 -0
- package/dist/modules/OpenData/contactInfo.js +70 -0
- package/dist/modules/OpenData/index.d.ts +1 -0
- package/dist/modules/OpenData/index.js +1 -0
- package/dist/modules/OpenData/types.d.ts +9 -0
- package/dist/modules/Order/holderRelations.d.ts +14 -0
- package/dist/modules/Order/holderRelations.js +154 -0
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +89 -44
- package/dist/modules/Order/types.d.ts +19 -1
- package/dist/modules/Order/types.js +2 -0
- package/dist/modules/Order/utils/discountProductLineIdentity.d.ts +1 -1
- package/dist/modules/Order/utils/discountProductLineIdentity.js +142 -7
- package/dist/modules/Order/utils/orderCollectionIdentity.js +24 -10
- package/dist/modules/Order/utils.d.ts +1 -1
- package/dist/modules/Order/utils.js +35 -9
- package/dist/modules/Rules/index.js +62 -61
- package/dist/server/index.js +18 -12
- package/dist/server/modules/order/index.d.ts +4 -0
- package/dist/server/modules/order/index.js +255 -190
- package/dist/server/modules/order/types.d.ts +3 -0
- package/dist/server/modules/products/index.js +3 -2
- package/dist/shared/receipt/small-ticket.js +17 -6
- package/dist/shared/sales/loadSalesOrderSnapshot.js +1 -1
- package/dist/solution/BaseSales/index.d.ts +4 -0
- package/dist/solution/BaseSales/index.js +1116 -935
- package/dist/solution/BaseSales/types.d.ts +2 -1
- package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +3 -1
- package/dist/solution/BaseSales/utils/parseSalesResponse.js +7 -3
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +14 -4
- package/dist/solution/BookingTicket/index.d.ts +15 -1
- package/dist/solution/BookingTicket/index.js +784 -501
- package/dist/solution/UnifiedBookingSales/index.js +1 -1
- package/lib/model/strategy/adapter/promotion/evaluator.js +9 -14
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +17 -1
- package/lib/modules/Holder/utils.d.ts +2 -0
- package/lib/modules/Holder/utils.js +27 -1
- package/lib/modules/OpenData/contactInfo.d.ts +20 -0
- package/lib/modules/OpenData/contactInfo.js +56 -0
- package/lib/modules/OpenData/index.d.ts +1 -0
- package/lib/modules/OpenData/index.js +12 -0
- package/lib/modules/OpenData/types.d.ts +9 -0
- package/lib/modules/Order/holderRelations.d.ts +14 -0
- package/lib/modules/Order/holderRelations.js +98 -0
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +44 -12
- package/lib/modules/Order/types.d.ts +19 -1
- package/lib/modules/Order/types.js +1 -0
- package/lib/modules/Order/utils/discountProductLineIdentity.d.ts +1 -1
- package/lib/modules/Order/utils/discountProductLineIdentity.js +51 -2
- package/lib/modules/Order/utils/orderCollectionIdentity.js +5 -0
- package/lib/modules/Order/utils.d.ts +1 -1
- package/lib/modules/Order/utils.js +27 -6
- package/lib/modules/Rules/index.js +2 -1
- package/lib/server/index.js +6 -0
- package/lib/server/modules/order/index.d.ts +4 -0
- package/lib/server/modules/order/index.js +46 -4
- package/lib/server/modules/order/types.d.ts +3 -0
- package/lib/server/modules/products/index.js +2 -1
- package/lib/shared/receipt/small-ticket.js +15 -7
- package/lib/shared/sales/loadSalesOrderSnapshot.js +1 -1
- package/lib/solution/BaseSales/index.d.ts +4 -0
- package/lib/solution/BaseSales/index.js +68 -2
- package/lib/solution/BaseSales/types.d.ts +2 -1
- package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +3 -1
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +4 -0
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +16 -8
- package/lib/solution/BookingTicket/index.d.ts +15 -1
- package/lib/solution/BookingTicket/index.js +132 -3
- package/lib/solution/UnifiedBookingSales/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ScheduleEventResource } from '../resource/types';
|
|
2
|
+
import type { OrderHolderRelation } from '../../../modules/Order/types';
|
|
2
3
|
/**
|
|
3
4
|
* Order 模块主键类型(对齐标准 Sales 协议的 order_id)
|
|
4
5
|
*/
|
|
@@ -448,6 +449,8 @@ export interface OrderData {
|
|
|
448
449
|
contacts_info?: unknown[];
|
|
449
450
|
/** 订单级主体参数 */
|
|
450
451
|
holder?: Record<string, unknown> | null;
|
|
452
|
+
/** 非预约商品 Holder 关系完整快照;缺席表示本次回包未提供 */
|
|
453
|
+
holder_relations?: OrderHolderRelation[];
|
|
451
454
|
/** 订单前端扩展快照 */
|
|
452
455
|
order_meta_list?: {
|
|
453
456
|
point_cards_snapshot?: Array<{
|
|
@@ -29,6 +29,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
29
29
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
30
30
|
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); }
|
|
31
31
|
import { BaseModule } from "../../../modules/BaseModule";
|
|
32
|
+
import { resolveProductHolderConfig } from "../../../modules/Holder/utils";
|
|
32
33
|
import { QuotationModule as ClientQuotationModule } from "../../../modules/Quotation";
|
|
33
34
|
import { ProductsHooks } from "./types";
|
|
34
35
|
import { applyDetailValueToProducts, applyPriceDataToProducts, applyI18nToProducts, perfMark } from "../../utils/product";
|
|
@@ -1444,7 +1445,7 @@ export var ProductsModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1444
1445
|
key: "getProductSnapshotsByIds",
|
|
1445
1446
|
value: (function () {
|
|
1446
1447
|
var _getProductSnapshotsByIds = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(ids) {
|
|
1447
|
-
var snapshots, seen, _iterator6, _step6, id, product;
|
|
1448
|
+
var snapshots, seen, _iterator6, _step6, _resolveProductHolder, id, product;
|
|
1448
1449
|
return _regeneratorRuntime().wrap(function _callee13$(_context13) {
|
|
1449
1450
|
while (1) switch (_context13.prev = _context13.next) {
|
|
1450
1451
|
case 0:
|
|
@@ -1475,7 +1476,7 @@ export var ProductsModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1475
1476
|
case 13:
|
|
1476
1477
|
snapshots[String(id)] = {
|
|
1477
1478
|
cover: product.cover,
|
|
1478
|
-
holder_config: product
|
|
1479
|
+
holder_config: (_resolveProductHolder = resolveProductHolderConfig(product)) !== null && _resolveProductHolder !== void 0 ? _resolveProductHolder : undefined
|
|
1479
1480
|
};
|
|
1480
1481
|
case 14:
|
|
1481
1482
|
_context13.next = 5;
|
|
@@ -20,6 +20,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
20
20
|
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); }
|
|
21
21
|
import dayjs from 'dayjs';
|
|
22
22
|
import Decimal from 'decimal.js';
|
|
23
|
+
import { getProductHolderRelations, hasProductBooking } from "../../modules/Order/holderRelations";
|
|
23
24
|
import { isFulfillmentTimingBooking } from "../../modules/Order/pickupTiming";
|
|
24
25
|
import { resolveInvoiceDataVisibility } from "./templateVisibility";
|
|
25
26
|
var DEFAULT_LOCALES = ['en', 'zh_CN'];
|
|
@@ -115,6 +116,7 @@ var LABELS = {
|
|
|
115
116
|
bookingDateTime: 'Date & time',
|
|
116
117
|
bookingResource: 'Resource',
|
|
117
118
|
bookingHolder: 'Holder',
|
|
119
|
+
productHolder: 'Holder',
|
|
118
120
|
orderDiscount: 'Order discount',
|
|
119
121
|
manualDiscount: 'Manual discount',
|
|
120
122
|
manualMarkup: 'Manual markup',
|
|
@@ -160,6 +162,7 @@ var LABELS = {
|
|
|
160
162
|
bookingDateTime: '日期和时间',
|
|
161
163
|
bookingResource: '资源',
|
|
162
164
|
bookingHolder: '预约人',
|
|
165
|
+
productHolder: '持有人',
|
|
163
166
|
orderDiscount: '整单折扣',
|
|
164
167
|
manualDiscount: '手动折扣',
|
|
165
168
|
manualMarkup: '手动加价',
|
|
@@ -205,6 +208,7 @@ var LABELS = {
|
|
|
205
208
|
bookingDateTime: '日期和時間',
|
|
206
209
|
bookingResource: '資源',
|
|
207
210
|
bookingHolder: '預約人',
|
|
211
|
+
productHolder: '持有人',
|
|
208
212
|
orderDiscount: '整單折扣',
|
|
209
213
|
manualDiscount: '手動折扣',
|
|
210
214
|
manualMarkup: '手動加價',
|
|
@@ -248,6 +252,7 @@ var LABELS = {
|
|
|
248
252
|
bookingDateTime: '日時',
|
|
249
253
|
bookingResource: 'リソース',
|
|
250
254
|
bookingHolder: '予約者',
|
|
255
|
+
productHolder: '利用者',
|
|
251
256
|
orderDiscount: '注文割引',
|
|
252
257
|
manualDiscount: '手動割引',
|
|
253
258
|
manualMarkup: '手動値上げ',
|
|
@@ -292,6 +297,7 @@ var LABELS = {
|
|
|
292
297
|
bookingDateTime: 'Data e hora',
|
|
293
298
|
bookingResource: 'Recurso',
|
|
294
299
|
bookingHolder: 'Titular',
|
|
300
|
+
productHolder: 'Titular',
|
|
295
301
|
orderDiscount: 'Desconto do pedido',
|
|
296
302
|
manualDiscount: 'Desconto manual',
|
|
297
303
|
manualMarkup: 'Acréscimo manual',
|
|
@@ -461,6 +467,17 @@ function buildProducts(order, locale, productMap) {
|
|
|
461
467
|
quantity: quantity,
|
|
462
468
|
originalPrice: originalPrice
|
|
463
469
|
});
|
|
470
|
+
var holderName = hasProductBooking(product) ? '' : getProductHolderRelations(order, product).map(function (relation) {
|
|
471
|
+
var _relation$metadata;
|
|
472
|
+
return getLocalizedValue((_relation$metadata = relation.metadata) === null || _relation$metadata === void 0 ? void 0 : _relation$metadata.name, locale).trim();
|
|
473
|
+
}).filter(Boolean).join(', ');
|
|
474
|
+
if (holderName) {
|
|
475
|
+
// 复用 Web Invoice / 原生均支持的文本扩展行,不混入金额或商品备注。
|
|
476
|
+
extensionList.push(_objectSpread(_objectSpread({}, receiptKey(rawProduct, 'product-holder')), {}, {
|
|
477
|
+
item: "".concat(label(locale, 'productHolder'), ": ").concat(holderName),
|
|
478
|
+
value: ''
|
|
479
|
+
}));
|
|
480
|
+
}
|
|
464
481
|
var productNote = resolveProductNote(product, locale);
|
|
465
482
|
var allergy = isPresentId(productUid) ? allergyByProductUid.get(String(productUid).trim()) || '' : '';
|
|
466
483
|
var basePrice = resolveProductBasePrice(product);
|
|
@@ -1222,12 +1239,6 @@ function buildFees(params) {
|
|
|
1222
1239
|
var isPriceIncludeTax = firstPresentValue(summary.is_price_include_tax, order.is_price_include_tax, shopInfo.is_price_include_tax);
|
|
1223
1240
|
var roundingAmount = firstPresentValue(summary.rounding_amount, order.rounding_amount);
|
|
1224
1241
|
var payProcessingFee = financials.payProcessingFee;
|
|
1225
|
-
if (isNonZero(payProcessingFee)) {
|
|
1226
|
-
fees.push(_objectSpread(_objectSpread({}, receiptKey(order, 'payment-processing-fee')), {}, {
|
|
1227
|
-
item: label(locale, 'payProcessingFee'),
|
|
1228
|
-
value: formatMoney(payProcessingFee, currencySymbol)
|
|
1229
|
-
}));
|
|
1230
|
-
}
|
|
1231
1242
|
var productExpectAmount = firstPresentValue(summary.product_expect_amount, summary.product_amount, order.product_expect_amount);
|
|
1232
1243
|
var productOriginalAmount = (_firstPresentValue2 = firstPresentValue(summary.product_original_amount, order.product_original_amount)) !== null && _firstPresentValue2 !== void 0 ? _firstPresentValue2 : calculateProductOriginalAmount(order);
|
|
1233
1244
|
var totalSavingsAmount = new Decimal(toMoneyNumber(productOriginalAmount)).minus(toMoneyNumber(productExpectAmount)).plus(toMoneyNumber(discountAmount));
|
|
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
4
4
|
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; }
|
|
5
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
6
|
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); }
|
|
7
|
-
export var SALES_ORDER_RELATIONS = ['products', 'bookings', 'payments', 'customer', 'summary', 'contacts_info', 'order_meta_list', 'refunds', 'notes'];
|
|
7
|
+
export var SALES_ORDER_RELATIONS = ['products', 'bookings', 'payments', 'customer', 'summary', 'contacts_info', 'order_meta_list', 'refunds', 'notes', 'holder_relations'];
|
|
8
8
|
|
|
9
9
|
/** Shared transport contract; remote callers use their host's /h5 prefix. */
|
|
10
10
|
export function loadSalesOrderSnapshot(request, params) {
|
|
@@ -5,6 +5,7 @@ import { BaseSalesOrderProduct, BaseSalesOrderProductIdentity, BaseSalesPaymentS
|
|
|
5
5
|
import { OrderModule } from '../../modules/Order';
|
|
6
6
|
import { type PickupTimingBookingInput } from '../../modules/Order/pickupTiming';
|
|
7
7
|
import type { PickupTimingAvailability, PickupTimingSelection, PickupTimingValidationResult } from '../../modules/FulfillmentTiming';
|
|
8
|
+
import { type ContactInfoConfig } from '../../modules/OpenData/contactInfo';
|
|
8
9
|
import type { AddProductBookingInput, AddProductToOrderOptions, LoadSalesDetailParams, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, OrderPaymentSource, SendCustomerPayLinkParams, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, UpdateTempOrderCustomerInput, UpdateOrderBookingParams, UpdateOrderProductParams, OrderTempOrder, OrderSummary, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions, RemoveProductsFromOrderOptions, ReplaceTempOrderOptions, SalesNote, SalesNotesMutationSnapshot, SetSalesNoteInput, PickupReferenceMode, ShopServiceData, ShopServiceType } from '../../modules/Order/types';
|
|
9
10
|
import type { SubmitPayloadEnhancer } from '../../modules/Order/utils';
|
|
10
11
|
import type { Discount, VirtualCurrencyAsset } from '../../modules/Discount/types';
|
|
@@ -281,6 +282,9 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
|
|
|
281
282
|
setPickupTimingBooking(input: PickupTimingBookingInput): import("../../modules/Order").PickupTimingBooking;
|
|
282
283
|
clearPickupTimingBooking(): void;
|
|
283
284
|
updateTempOrderContactsInfo(contactsInfo: Record<string, any> | null): Record<string, any> | null;
|
|
285
|
+
protected loadContactInfoOpenData(): Promise<OpenDataConfig | null>;
|
|
286
|
+
getContactInfoConfig(): Promise<ContactInfoConfig>;
|
|
287
|
+
validateContactInfo(): Promise<void>;
|
|
284
288
|
/** @deprecated OrderModule 不再负责 tempOrder localStorage 持久化。 */
|
|
285
289
|
setEnableTempOrderPersist(enabled: boolean): void;
|
|
286
290
|
/** 是否允许 saveDraft 写入 IndexedDB 草稿。 */
|