@pisell/private-materials 6.12.363 → 6.12.365
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/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/render/default/view.js +1 -1
- package/build/lowcode/view.js +1 -1
- package/es/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +0 -1
- package/es/components/bigSale/components/ProductList/index.js +0 -1
- package/es/components/bigSale/components/TimeBar/index.js +0 -1
- package/es/components/bigSale/dialog.js +0 -1
- package/es/components/bigSale/hooks/useBigSaleContext.js +0 -1
- package/es/components/bigSale/hooks/useBigSaleProductListConfig.js +1 -0
- package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +0 -1
- package/es/components/bigSale/index.js +0 -1
- package/es/components/bigSale/templates/Kiosk/index.js +0 -1
- package/es/components/scanOrder/utils/toShoppingCartProducts.identity.test.cjs +79 -0
- package/es/components/scanOrder/utils/toShoppingCartProducts.js +7 -3
- package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +0 -1
- package/es/components/ticketBooking/components/ProductDisplayAdapter/index.js +3 -0
- package/es/components/ticketBooking/components/addServiceVariant/addService.js +1 -0
- package/es/index.js +0 -2
- package/es/plus/multiCurrencySettlement/index.js +1 -1
- package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
- package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
- package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
- package/es/plus/saasDevice/devicePasscodes/model.js +4 -4
- package/es/plus/saleDetail/Base.js +0 -1
- package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +0 -1
- package/es/plus/saleDetail/components/DetailActions/PrintAction.js +0 -1
- package/es/plus/saleDetail/components/DetailActions/index.js +0 -1
- package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +0 -1
- package/es/plus/saleDetail/index.js +0 -1
- package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +0 -1
- package/es/plus/saleDetail/tmpl/B/index.js +0 -1
- package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
- package/es/plus/salesSdk/utils/bookingDate.js +1 -1
- package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
- package/es/plus/walletPassGallery/components/timelineSection/index.js +4 -4
- package/es/private-materials/lowcode/authmodal/meta.d.ts +1 -0
- package/es/pro/Login2.0/AuthModal.d.ts +1 -1
- package/es/pro/Login2.0/index.d.ts +2 -2
- package/es/pro/Login2.0/shared/types.d.ts +1 -1
- package/lib/components/scanOrder/utils/toShoppingCartProducts.identity.test.cjs +79 -0
- package/lib/components/scanOrder/utils/toShoppingCartProducts.js +7 -3
- package/package.json +4 -4
- package/es/plus/pisellReservation/index.js +0 -17
- package/es/plus/salesSdk/index.js +0 -54
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import useEngineContext from "../../../../hooks/useEngineContext.js";
|
|
2
2
|
import { subscribeBookingDateChange } from "../../../../plus/salesSdk/utils/bookingDate.js";
|
|
3
|
-
import "../../../../plus/salesSdk/index.js";
|
|
4
3
|
import dayjs from "dayjs";
|
|
5
4
|
import { useCallback, useEffect, useState } from "react";
|
|
6
5
|
//#region src/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.ts
|
|
@@ -15,7 +15,6 @@ import { useSalesSdkBusinessAvailability } from "../../../../plus/salesSdk/conte
|
|
|
15
15
|
import { showAddToCartToast } from "../../../../plus/salesSdk/components/showAddToCartToast.js";
|
|
16
16
|
import { mergeBookingsForDisplay } from "../../../../plus/salesSdk/utils/mergeBookingsForDisplay.js";
|
|
17
17
|
import useSalesSdkGlobalScanHandler from "../../../../plus/salesSdk/hooks/useSalesSdkGlobalScanHandler.js";
|
|
18
|
-
import "../../../../plus/salesSdk/index.js";
|
|
19
18
|
import { buildBigSaleProductListPreferencesKey, readBigSaleProductListPreferences, readStoredBigSaleProductListPreferences, removeBigSaleProductListPreferences, resolveBigSaleAutoProductListPreferences, writeBigSaleProductListPreferences } from "../../utils/productListPreferences.js";
|
|
20
19
|
import { resolveBigSaleProductDisplayConfig, useBigSaleProductListConfig } from "../../hooks/useBigSaleProductListConfig.js";
|
|
21
20
|
import locales_default from "../../locales/index.js";
|
|
@@ -5,7 +5,6 @@ import useInitLocalesOnce from "../../../../hooks/useInitLocalesOnce.js";
|
|
|
5
5
|
import { subscribeBookingDateChange } from "../../../../plus/salesSdk/utils/bookingDate.js";
|
|
6
6
|
import { setBookingTimeSelectionIntent } from "../../../../plus/salesSdk/utils/bookingTimeSelection.js";
|
|
7
7
|
import { useSalesSdkBookingContext } from "../../../../plus/salesSdk/context/SalesSdkBookingContext.js";
|
|
8
|
-
import "../../../../plus/salesSdk/index.js";
|
|
9
8
|
import locales_default from "../../locales/index.js";
|
|
10
9
|
import { getPosWeekStartsOn, resolvePosCountryCode } from "../../../../utils/posDateLocale.js";
|
|
11
10
|
import dayjs from "dayjs";
|
|
@@ -6,7 +6,6 @@ import { buildInitBookingContextParams, collectBookingIdsFromTempOrder } from ".
|
|
|
6
6
|
import { useSalesSdk } from "../../plus/salesSdk/hooks/useSalesSdk.js";
|
|
7
7
|
import { useSalesSdkCart } from "../../plus/salesSdk/hooks/useSalesSdkCart.js";
|
|
8
8
|
import { SalesSdkPrepareOrderSwitchContext, SalesSdkRootRefreshContext } from "../../plus/salesSdk/context/SalesSdkProvider.js";
|
|
9
|
-
import "../../plus/salesSdk/index.js";
|
|
10
9
|
import { isPersistedBigSaleOrderId } from "./utils/orderIdentity.js";
|
|
11
10
|
import { seedDineInReservationToCart } from "../../plus/pisellReservation/utils/seedDineInReservationToCart.js";
|
|
12
11
|
import BigSale from "./index.js";
|
|
@@ -4,7 +4,6 @@ import { useSalesSdkCustomer } from "../../../plus/salesSdk/hooks/useSalesSdkCus
|
|
|
4
4
|
import { useSalesSdkBookingContext } from "../../../plus/salesSdk/context/SalesSdkBookingContext.js";
|
|
5
5
|
import { useSalesSdkSummary } from "../../../plus/salesSdk/hooks/useSalesSdkSummary.js";
|
|
6
6
|
import { useSalesSdkProducts } from "../../../plus/salesSdk/hooks/useSalesSdkProducts.js";
|
|
7
|
-
import "../../../plus/salesSdk/index.js";
|
|
8
7
|
import { useMemo } from "react";
|
|
9
8
|
//#region src/components/bigSale/hooks/useBigSaleContext.ts
|
|
10
9
|
/**
|
|
@@ -2,6 +2,7 @@ import { _objectSpread2 } from "../../../_virtual/_@oxc-project_runtime@0.122.0/
|
|
|
2
2
|
import { _objectWithoutProperties } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectWithoutProperties.js";
|
|
3
3
|
import { generateProductTabs, sortProductsByTabOrder } from "../../ticketBooking/components/ProductDisplayAdapter/utils.js";
|
|
4
4
|
import { ProductDisplayPresets } from "../../ticketBooking/components/ProductDisplayAdapter/types.js";
|
|
5
|
+
import "../../ticketBooking/components/ProductDisplayAdapter/index.js";
|
|
5
6
|
import { mergeBigSaleProductListPreferences } from "../utils/productListPreferences.js";
|
|
6
7
|
import { useMemo, useRef } from "react";
|
|
7
8
|
import isEqual from "lodash/isEqual";
|
|
@@ -3,7 +3,6 @@ import { _asyncToGenerator } from "../../../_virtual/_@oxc-project_runtime@0.122
|
|
|
3
3
|
import { buildInitBookingContextParams, collectBookingIdsFromTempOrder } from "../../../plus/salesSdk/utils/buildDefaultLoadProductsParams.js";
|
|
4
4
|
import { useSalesSdkUIHosts } from "../../../plus/salesSdk/context/SalesSdkUIHostsContext.js";
|
|
5
5
|
import { SalesSdkRootRefreshContext } from "../../../plus/salesSdk/context/SalesSdkProvider.js";
|
|
6
|
-
import "../../../plus/salesSdk/index.js";
|
|
7
6
|
import { isPersistedBigSaleOrderId } from "../utils/orderIdentity.js";
|
|
8
7
|
import { resolveOrderIdForHostActions } from "../../../plus/pisellReservation/components/bookingDetailModal/bookingDetailHostActions.js";
|
|
9
8
|
import { usePicoCodingOpenData } from "../../../plus/pisellReservation/hooks/usePicoCodingOpenData.js";
|
|
@@ -8,7 +8,6 @@ import { useSalesSdk } from "../../plus/salesSdk/hooks/useSalesSdk.js";
|
|
|
8
8
|
import { useSalesSdkCustomer } from "../../plus/salesSdk/hooks/useSalesSdkCustomer.js";
|
|
9
9
|
import { SalesSdkProvider } from "../../plus/salesSdk/context/SalesSdkProvider.js";
|
|
10
10
|
import { SalesSdkBookingContextProvider } from "../../plus/salesSdk/context/SalesSdkBookingContext.js";
|
|
11
|
-
import "../../plus/salesSdk/index.js";
|
|
12
11
|
import { resolveCustomerDetailAppearance } from "../../pro/skuDetailModal/customerDetailPolicy.js";
|
|
13
12
|
import { ResponsiveBigSaleBase } from "./Base.js";
|
|
14
13
|
import { isBigSaleProductSelectionFlowScene, resolveBigSaleSelectionFlowConfig } from "./selectionFlowConfig.js";
|
|
@@ -12,7 +12,6 @@ import { useSalesSdkBusinessAvailability } from "../../../../plus/salesSdk/conte
|
|
|
12
12
|
import { collectUnassignedHolderLines } from "../../../../plus/salesSdk/utils/holderSubmitValidation.js";
|
|
13
13
|
import { isFulfillmentTimingBooking } from "../../../../plus/salesSdk/utils/fulfillmentTimingBooking.js";
|
|
14
14
|
import { useSalesSdk } from "../../../../plus/salesSdk/hooks/useSalesSdk.js";
|
|
15
|
-
import "../../../../plus/salesSdk/index.js";
|
|
16
15
|
import { usePickSaleDetailContext } from "../../hooks/usePickSaleDetailContext.js";
|
|
17
16
|
import { resolveBigSaleAutoProductListPreferences } from "../../utils/productListPreferences.js";
|
|
18
17
|
import { resolveBigSaleProductDisplayConfig } from "../../hooks/useBigSaleProductListConfig.js";
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const assert = require('node:assert/strict');
|
|
2
|
+
const { readFileSync } = require('node:fs');
|
|
3
|
+
const { join } = require('node:path');
|
|
4
|
+
const test = require('node:test');
|
|
5
|
+
const ts = require('typescript');
|
|
6
|
+
|
|
7
|
+
// Run with node --test; load the pure adapter in memory without a materials build.
|
|
8
|
+
const source = readFileSync(join(__dirname, 'toShoppingCartProducts.ts'), 'utf8');
|
|
9
|
+
const output = ts.transpileModule(source, {
|
|
10
|
+
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 },
|
|
11
|
+
});
|
|
12
|
+
const adapter = { exports: {} };
|
|
13
|
+
new Function('exports', output.outputText)(adapter.exports);
|
|
14
|
+
const { toShoppingCartProducts } = adapter.exports;
|
|
15
|
+
|
|
16
|
+
const product = {
|
|
17
|
+
product_id: 477300,
|
|
18
|
+
product_variant_id: 493720,
|
|
19
|
+
product_title: 'Latte',
|
|
20
|
+
selling_price: '5.70',
|
|
21
|
+
num: 1,
|
|
22
|
+
product_sku: {
|
|
23
|
+
option: [{ product_option_item_id: 101, name: 'Almond Milk', add_price: 0.7, num: 1 }],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
const toCart = (...products) => toShoppingCartProducts({ orderProducts: products });
|
|
27
|
+
|
|
28
|
+
test('current OS rows retain their metadata identity for cart delete and edit callbacks', () => {
|
|
29
|
+
const uid = '0dd325cf-545e-4665-bda0-d1a26046f78e';
|
|
30
|
+
const input = { ...product, metadata: { unique_identification_number: uid } };
|
|
31
|
+
const [row] = toCart(input);
|
|
32
|
+
assert.equal(row.identity_key, uid);
|
|
33
|
+
assert.equal(row.rowKey, uid);
|
|
34
|
+
assert.equal(row._id, uid);
|
|
35
|
+
assert.equal(row.price, 5.7);
|
|
36
|
+
assert.equal(row.options[0].name, 'Almond Milk');
|
|
37
|
+
assert.equal(input.identity_key, undefined);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('same-SKU option rows remain independently addressable when cart order changes', () => {
|
|
41
|
+
const almond = { ...product, metadata: { unique_identification_number: 'almond-row' } };
|
|
42
|
+
const regular = {
|
|
43
|
+
...product,
|
|
44
|
+
product_sku: { option: [] },
|
|
45
|
+
metadata: { unique_identification_number: 'regular-row' },
|
|
46
|
+
};
|
|
47
|
+
const original = toCart(almond, regular);
|
|
48
|
+
const reordered = toCart(regular, almond);
|
|
49
|
+
assert.notEqual(original[0].identity_key, original[1].identity_key);
|
|
50
|
+
assert.equal(original[0].identity_key, reordered[1].identity_key);
|
|
51
|
+
assert.equal(original[1].identity_key, reordered[0].identity_key);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('metadata identity takes precedence over stale top-level compatibility fields', () => {
|
|
55
|
+
const [row] = toCart({
|
|
56
|
+
...product,
|
|
57
|
+
metadata: { unique_identification_number: 'canonical-row' },
|
|
58
|
+
unique_identification_number: 'old-top-level-row',
|
|
59
|
+
identity_key: 'old-alias-row',
|
|
60
|
+
});
|
|
61
|
+
assert.equal(row.identity_key, 'canonical-row');
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('accepts top-level and legacy OS identities when metadata has no valid identity', () => {
|
|
65
|
+
for (const metadata of [undefined, {}, { unique_identification_number: '' }, { unique_identification_number: 123 }]) {
|
|
66
|
+
const [current, legacy] = toCart(
|
|
67
|
+
{ ...product, metadata, unique_identification_number: 'top-level-row' },
|
|
68
|
+
{ ...product, metadata, identity_key: 'legacy-row' },
|
|
69
|
+
);
|
|
70
|
+
assert.equal(current.identity_key, 'top-level-row');
|
|
71
|
+
assert.equal(legacy.identity_key, 'legacy-row');
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test('a display-only row key never becomes a deletion identity', () => {
|
|
76
|
+
const [row] = toCart(product);
|
|
77
|
+
assert.equal(row.rowKey, '477300_493720_0');
|
|
78
|
+
assert.equal(row.identity_key, undefined);
|
|
79
|
+
});
|
|
@@ -174,11 +174,15 @@ function toShoppingCartProducts(params) {
|
|
|
174
174
|
const { orderProducts, amountSymbol = "$" } = params;
|
|
175
175
|
if (!Array.isArray(orderProducts)) return [];
|
|
176
176
|
return orderProducts.map((productItem, index) => {
|
|
177
|
-
var _productItem$_origin, _productItem$product_, _productItem$
|
|
177
|
+
var _productItem$_origin, _productItem$metadata, _productItem$product_, _productItem$metadata2;
|
|
178
178
|
const productNum = toSafeNum(productItem === null || productItem === void 0 ? void 0 : productItem.num);
|
|
179
179
|
const unitPrice = getUnitPrice(productItem);
|
|
180
180
|
const callbackData = (productItem === null || productItem === void 0 || (_productItem$_origin = productItem._origin) === null || _productItem$_origin === void 0 ? void 0 : _productItem$_origin.callbackData) || {};
|
|
181
|
-
const identityKey =
|
|
181
|
+
const identityKey = [
|
|
182
|
+
productItem === null || productItem === void 0 || (_productItem$metadata = productItem.metadata) === null || _productItem$metadata === void 0 ? void 0 : _productItem$metadata.unique_identification_number,
|
|
183
|
+
productItem === null || productItem === void 0 ? void 0 : productItem.unique_identification_number,
|
|
184
|
+
productItem === null || productItem === void 0 ? void 0 : productItem.identity_key
|
|
185
|
+
].find((value) => typeof value === "string" && value.length > 0);
|
|
182
186
|
const rowKey = identityKey !== null && identityKey !== void 0 ? identityKey : `${(_productItem$product_ = productItem.product_id) !== null && _productItem$product_ !== void 0 ? _productItem$product_ : "p"}_${productItem.product_variant_id}_${index}`;
|
|
183
187
|
const productOptionString = (typeof (callbackData === null || callbackData === void 0 ? void 0 : callbackData.product_option_string) === "string" ? callbackData.product_option_string.trim() : "") || getVariantProductOptionString(productItem) || void 0;
|
|
184
188
|
const base = _objectSpread2({
|
|
@@ -204,7 +208,7 @@ function toShoppingCartProducts(params) {
|
|
|
204
208
|
if (productItem.product_sku) base.product_sku = productItem.product_sku;
|
|
205
209
|
else if (Array.isArray(productItem.product_option_item) && productItem.product_option_item.length) base.product_option_item = productItem.product_option_item;
|
|
206
210
|
if (Array.isArray(productItem.product_bundle) && productItem.product_bundle.length) base.product_bundle = productItem.product_bundle;
|
|
207
|
-
if (productItem === null || productItem === void 0 || (_productItem$
|
|
211
|
+
if (productItem === null || productItem === void 0 || (_productItem$metadata2 = productItem.metadata) === null || _productItem$metadata2 === void 0 ? void 0 : _productItem$metadata2.venue_booking) {
|
|
208
212
|
var _origin$resources2;
|
|
209
213
|
const origin = productItem._origin || {};
|
|
210
214
|
const meta = productItem.metadata || {};
|
|
@@ -2,7 +2,6 @@ import useEngineContext from "../../hooks/useEngineContext.js";
|
|
|
2
2
|
import { _asyncToGenerator } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/asyncToGenerator.js";
|
|
3
3
|
import { useSalesSdk } from "../../plus/salesSdk/hooks/useSalesSdk.js";
|
|
4
4
|
import { getTempOrderSyncPayload, shouldApplySharedTempOrderPayload } from "../../plus/salesSdk/tempOrderSync.js";
|
|
5
|
-
import "../../plus/salesSdk/index.js";
|
|
6
5
|
import { useEffect, useRef } from "react";
|
|
7
6
|
import { useMemoizedFn } from "ahooks";
|
|
8
7
|
//#region src/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.tsx
|
|
@@ -19,6 +19,7 @@ import { useProducts } from "../../hooks/pisellos/useProducts.js";
|
|
|
19
19
|
import { useService } from "../../../booking/info/service/serviceManager/index.js";
|
|
20
20
|
import ProductDisplayAdapter_default from "../ProductDisplayAdapter/ProductDisplayAdapter.js";
|
|
21
21
|
import { resolveProductDisplayConfig } from "../ProductDisplayAdapter/types.js";
|
|
22
|
+
import "../ProductDisplayAdapter/index.js";
|
|
22
23
|
import notAvailable_default from "../notAvailable/index.js";
|
|
23
24
|
import MultiDayTimeSelectModal from "./MultiDayTimeSelectModal.js";
|
|
24
25
|
import dayjs from "dayjs";
|
package/es/index.js
CHANGED
|
@@ -90,7 +90,6 @@ import { useSalesSdkProducts } from "./plus/salesSdk/hooks/useSalesSdkProducts.j
|
|
|
90
90
|
import SalesSdkDemo from "./plus/salesSdk/demo/index.js";
|
|
91
91
|
import { useSalesSdkDish } from "./plus/salesSdk/hooks/useSalesSdkDish.js";
|
|
92
92
|
import { useSyncOsModule } from "./plus/salesSdk/hooks/useSyncOsModule.js";
|
|
93
|
-
import "./plus/salesSdk/index.js";
|
|
94
93
|
import BigSaleRightActionPanel from "./components/BigSaleRightActionPanel/index.js";
|
|
95
94
|
import ResponsiveWrapper from "./components/list/ResponsiveWrapper.js";
|
|
96
95
|
import { resolveBigSaleSelectionFlowConfig } from "./components/bigSale/selectionFlowConfig.js";
|
|
@@ -145,7 +144,6 @@ import PisellVenueControlPage from "./plus/pisellReservation/PisellVenueControlP
|
|
|
145
144
|
import PisellVenueWallPage from "./plus/pisellReservation/PisellVenueWallPage.js";
|
|
146
145
|
import PisellReservationTablePage from "./plus/pisellReservation/PisellReservationTablePage.js";
|
|
147
146
|
import SelectFloorMapResourceDialog from "./plus/pisellReservation/components/SelectFloorMapResourceDialog.js";
|
|
148
|
-
import "./plus/pisellReservation/index.js";
|
|
149
147
|
import { PisellTopology, PisellTopologyCore } from "./plus/pisellTopology/PisellTopology.js";
|
|
150
148
|
import cupProject_default from "./components/ecocup/cupProject/index.js";
|
|
151
149
|
import CupList from "./components/ecocup/cupList/index.js";
|
|
@@ -280,4 +280,4 @@ function attachSelectedSettlement(item, selectedSettlement) {
|
|
|
280
280
|
});
|
|
281
281
|
}
|
|
282
282
|
//#endregion
|
|
283
|
-
export { attachSelectedSettlement, buildSettlementPriceRows, createVirtualOnlySkuDisplayProduct,
|
|
283
|
+
export { attachSelectedSettlement, buildSettlementPriceRows, createVirtualOnlySkuDisplayProduct, formatSettlementAmount, formatSettlementSelectionTotal, formatTempOrderSettlementAmount, getSettlementKey, getSettlementOptions, hasSettlementOptions, hasSufficientVirtualCurrencyBalance, isVirtualOnlySettlementProduct, isVirtualSettlementTempOrder, resolveConfiguredUnavailableReason, resolveLegalSettlementAddOnUnitPrice, resolveSettlementOptionEntries, resolveVirtualSettlementErrorMessage, showVirtualSettlementErrorToast };
|
|
@@ -259,4 +259,4 @@ function bookingListToReservationTableRows(bookings) {
|
|
|
259
259
|
return rows;
|
|
260
260
|
}
|
|
261
261
|
//#endregion
|
|
262
|
-
export { applyHostResourceShellToBaseRow, bookingListToReservationTableRows, customerBrief, extractResourceRecordIds, filterBookingsByResourceIds,
|
|
262
|
+
export { applyHostResourceShellToBaseRow, bookingListToReservationTableRows, customerBrief, extractResourceRecordIds, filterBookingsByResourceIds, hostBookingUiPatchFromRecord, mergeBookingsForResourceRecord };
|
|
@@ -78,4 +78,4 @@ function toastFloorPlanLoadError(err) {
|
|
|
78
78
|
PisellToast({ content: err instanceof Error ? err.message : String(err) });
|
|
79
79
|
}
|
|
80
80
|
//#endregion
|
|
81
|
-
export { PISELL_RESERVATION_FLOOR_PLAN_CODE,
|
|
81
|
+
export { PISELL_RESERVATION_FLOOR_PLAN_CODE, ensureShopFloorPlanByCode, saveViewConfigToShopFloorPlan, shopLayoutToSceneElements$1 as shopLayoutToSceneElements, toastFloorPlanLoadError, toastFloorPlanSaveError, unsubscribeShopFloorPlanCodeQuery };
|
|
@@ -927,4 +927,4 @@ function getReservationDataSourceFormColumns() {
|
|
|
927
927
|
];
|
|
928
928
|
}
|
|
929
929
|
//#endregion
|
|
930
|
-
export { RESERVATION_BOUND_ROUND_TABLE_ELEMENT_KIND, RESERVATION_BOUND_TABLE_ELEMENT_KIND, applyReservationFloorMapLiveLabels,
|
|
930
|
+
export { RESERVATION_BOUND_ROUND_TABLE_ELEMENT_KIND, RESERVATION_BOUND_TABLE_ELEMENT_KIND, applyReservationFloorMapLiveLabels, defaultReservationTableRows, getDefaultReservationFloorMapConfig, getReservationDataSourceFormColumns, getReservationFloorMapShellConfig, mergeFloorMapElementKindCategoriesWithDefaults, mergeFloorMapElementKindsWithDefaults };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { _objectSpread2 } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
|
|
2
2
|
import dayjs from "dayjs";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import timezone from "dayjs/plugin/timezone";
|
|
4
|
+
import utc from "dayjs/plugin/utc";
|
|
5
5
|
//#region src/plus/saasDevice/devicePasscodes/model.ts
|
|
6
|
-
dayjs.extend(
|
|
7
|
-
dayjs.extend(
|
|
6
|
+
dayjs.extend(utc);
|
|
7
|
+
dayjs.extend(timezone);
|
|
8
8
|
const INITIAL_DEVICE_PASSCODE_STATE = {
|
|
9
9
|
deviceIds: [],
|
|
10
10
|
devicesById: {}
|
|
@@ -13,7 +13,6 @@ import { useSalesSdkCustomer } from "../salesSdk/hooks/useSalesSdkCustomer.js";
|
|
|
13
13
|
import locales_default from "./locales.js";
|
|
14
14
|
import { useSalesSdkBookingContext } from "../salesSdk/context/SalesSdkBookingContext.js";
|
|
15
15
|
import { useSalesSdkSummary } from "../salesSdk/hooks/useSalesSdkSummary.js";
|
|
16
|
-
import "../salesSdk/index.js";
|
|
17
16
|
import locales_default$1 from "./components/LineItem/locales.js";
|
|
18
17
|
import { SaleOrderActionBoundary } from "./actions/index.js";
|
|
19
18
|
import { SaleDetailTemplateRenderer } from "./tmpl/index.js";
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import useEngineContext from "../../../../../hooks/useEngineContext.js";
|
|
2
2
|
import { _objectSpread2 } from "../../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
|
|
3
3
|
import { useSalesSdkBookingContext } from "../../../../salesSdk/context/SalesSdkBookingContext.js";
|
|
4
|
-
import "../../../../salesSdk/index.js";
|
|
5
4
|
import { useMemo } from "react";
|
|
6
5
|
import { useMemoizedFn } from "ahooks";
|
|
7
6
|
//#region src/plus/saleDetail/components/Client/hooks/useClientSelectorProps.ts
|
|
@@ -4,7 +4,6 @@ import { _asyncToGenerator } from "../../../../_virtual/_@oxc-project_runtime@0.
|
|
|
4
4
|
import { _objectWithoutProperties } from "../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectWithoutProperties.js";
|
|
5
5
|
import useLogger from "../../../../hooks/useLogger.js";
|
|
6
6
|
import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
|
|
7
|
-
import "../../../salesSdk/index.js";
|
|
8
7
|
import { invokeLocalReceiptPrint, resolveLocalReceiptPrintModule, resolveSaleDetailOrderIdFromSales } from "./utils.js";
|
|
9
8
|
import { getRemotePrintActions, getWristbandList } from "../../serve.js";
|
|
10
9
|
import { EBizPrintType } from "./types.js";
|
|
@@ -10,7 +10,6 @@ import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
|
|
|
10
10
|
import { useSalesSdkCart } from "../../../salesSdk/hooks/useSalesSdkCart.js";
|
|
11
11
|
import { useSalesSdkGlobalScanActivity } from "../../../salesSdk/context/SalesSdkGlobalScanActivityContext.js";
|
|
12
12
|
import { useSalesSdkSummary } from "../../../salesSdk/hooks/useSalesSdkSummary.js";
|
|
13
|
-
import "../../../salesSdk/index.js";
|
|
14
13
|
import { resolveSaleDetailTempOrder } from "../../utils.js";
|
|
15
14
|
import { getNumericAmount, getSalesHostModule, resolveSaleDetailOrderIdFromSales, resolveSaleDetailOrderIdFromSalesResult, shouldCloseDialogAfterCheckout, updateLocalOrder } from "./utils.js";
|
|
16
15
|
import { deriveSaleOrderSubmitState } from "../../actions/state.js";
|
|
@@ -5,7 +5,6 @@ import { isAppliedPaymentRecord } from "../../../salesSdk/utils/paymentStatus.js
|
|
|
5
5
|
import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
|
|
6
6
|
import { useSalesSdkCart } from "../../../salesSdk/hooks/useSalesSdkCart.js";
|
|
7
7
|
import { useSalesSdkSummary } from "../../../salesSdk/hooks/useSalesSdkSummary.js";
|
|
8
|
-
import "../../../salesSdk/index.js";
|
|
9
8
|
import { resolveSaleDetailTempOrder } from "../../utils.js";
|
|
10
9
|
import React, { memo, useMemo } from "react";
|
|
11
10
|
import { formatAmount, locales } from "@pisell/utils";
|
|
@@ -5,7 +5,6 @@ import { useSalesSdk } from "../salesSdk/hooks/useSalesSdk.js";
|
|
|
5
5
|
import { SalesSdkProvider } from "../salesSdk/context/SalesSdkProvider.js";
|
|
6
6
|
import { SalesSdkDishProvider } from "../salesSdk/context/SalesSdkDishContext.js";
|
|
7
7
|
import { SalesSdkBookingContextProvider } from "../salesSdk/context/SalesSdkBookingContext.js";
|
|
8
|
-
import "../salesSdk/index.js";
|
|
9
8
|
import Base_default from "./Base.js";
|
|
10
9
|
import { resolveSaleDetailOsProps } from "./osProps.js";
|
|
11
10
|
import React, { forwardRef, useImperativeHandle } from "react";
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import useStableInstanceId from "../../../../../../hooks/useStableInstanceId.js";
|
|
2
2
|
import { useSalesSdkDish } from "../../../../../salesSdk/hooks/useSalesSdkDish.js";
|
|
3
3
|
import { useCurrentSalesSdkDish } from "../../../../../salesSdk/hooks/useCurrentSalesSdkDish.js";
|
|
4
|
-
import "../../../../../salesSdk/index.js";
|
|
5
4
|
import { SaleDetailStatusOverview } from "../shared/StatusOverview.js";
|
|
6
5
|
import { DishGroupView } from "./DishGroupView.js";
|
|
7
6
|
import dayjs from "dayjs";
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import useEngineContext from "../../../../hooks/useEngineContext.js";
|
|
2
2
|
import { _objectSpread2 } from "../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
|
|
3
3
|
import { useCurrentSalesSdkDish } from "../../../salesSdk/hooks/useCurrentSalesSdkDish.js";
|
|
4
|
-
import "../../../salesSdk/index.js";
|
|
5
4
|
import { getInternalNotesByScheduleEvent } from "../../serve.js";
|
|
6
5
|
import { TEMPLATE_B_PAY_ACTIONS, TEMPLATE_B_SUMMARY_ACTIONS } from "../../components/DetailActions/configs/index.js";
|
|
7
6
|
import { DetailActions } from "../../components/DetailActions/index.js";
|
|
@@ -31,4 +31,4 @@ function subscribeBookingDateChange(bookingTicket, callback) {
|
|
|
31
31
|
return typeof off === "function" ? off : () => {};
|
|
32
32
|
}
|
|
33
33
|
//#endregion
|
|
34
|
-
export {
|
|
34
|
+
export { formatBookingDateTime, subscribeBookingDateChange };
|
|
@@ -102,4 +102,4 @@ function buildHolderListRequestKey(params) {
|
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
104
|
//#endregion
|
|
105
|
-
export { buildHolderListRequestKey, buildHolderListRequestParams, enrichCartBookingHolderDisplay, enrichCartProductHolderDisplay,
|
|
105
|
+
export { buildHolderListRequestKey, buildHolderListRequestParams, enrichCartBookingHolderDisplay, enrichCartProductHolderDisplay, resolveHolderDisplayConfig };
|
|
@@ -6,12 +6,12 @@ import React, { useCallback, useEffect, useMemo, useRef } from "react";
|
|
|
6
6
|
import { locales } from "@pisell/utils";
|
|
7
7
|
import { Button, PisellEmpty, PisellModal, PisellStatisticList, Skeleton, Timeline, usePisellConfig } from "@pisell/materials";
|
|
8
8
|
import { useRequest } from "ahooks";
|
|
9
|
-
import
|
|
10
|
-
import
|
|
9
|
+
import timezone from "dayjs/plugin/timezone";
|
|
10
|
+
import utc from "dayjs/plugin/utc";
|
|
11
11
|
import "./index.less";
|
|
12
12
|
//#region src/plus/walletPassGallery/components/timelineSection/index.tsx
|
|
13
|
-
dayjs.extend(
|
|
14
|
-
dayjs.extend(
|
|
13
|
+
dayjs.extend(timezone);
|
|
14
|
+
dayjs.extend(utc);
|
|
15
15
|
const stateTimeUnix = 1723255863;
|
|
16
16
|
const POLL_INTERVAL = 2e3;
|
|
17
17
|
const POLL_MAX_TIMES = 5;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuthMethodType,
|
|
1
|
+
import { AuthMethodType, VerificationMethod } from "./shared/types.js";
|
|
2
2
|
import { Login2, Login2Config, Login2Events, Login2Props } from "./Login2.js";
|
|
3
3
|
import { Register2, Register2Config, Register2Events, Register2Props } from "./Register2.js";
|
|
4
|
-
import { AuthModal } from "./AuthModal.js";
|
|
4
|
+
import { AuthModal, AuthModalProps } from "./AuthModal.js";
|
|
@@ -226,4 +226,4 @@ interface RegisterFormData {
|
|
|
226
226
|
verification_token?: string;
|
|
227
227
|
}
|
|
228
228
|
//#endregion
|
|
229
|
-
export { AuthMethodType, EmailAuthConfig,
|
|
229
|
+
export { AuthMethodType, EmailAuthConfig, LegalTermsConfig, LoginFormData, LoginMethodItem, OAuthConfig, PhoneAuthConfig, RegisterFormData, RegistrationMethodItem, UIConfig, VerificationMethod };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const assert = require('node:assert/strict');
|
|
2
|
+
const { readFileSync } = require('node:fs');
|
|
3
|
+
const { join } = require('node:path');
|
|
4
|
+
const test = require('node:test');
|
|
5
|
+
const ts = require('typescript');
|
|
6
|
+
|
|
7
|
+
// Run with node --test; load the pure adapter in memory without a materials build.
|
|
8
|
+
const source = readFileSync(join(__dirname, 'toShoppingCartProducts.ts'), 'utf8');
|
|
9
|
+
const output = ts.transpileModule(source, {
|
|
10
|
+
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 },
|
|
11
|
+
});
|
|
12
|
+
const adapter = { exports: {} };
|
|
13
|
+
new Function('exports', output.outputText)(adapter.exports);
|
|
14
|
+
const { toShoppingCartProducts } = adapter.exports;
|
|
15
|
+
|
|
16
|
+
const product = {
|
|
17
|
+
product_id: 477300,
|
|
18
|
+
product_variant_id: 493720,
|
|
19
|
+
product_title: 'Latte',
|
|
20
|
+
selling_price: '5.70',
|
|
21
|
+
num: 1,
|
|
22
|
+
product_sku: {
|
|
23
|
+
option: [{ product_option_item_id: 101, name: 'Almond Milk', add_price: 0.7, num: 1 }],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
const toCart = (...products) => toShoppingCartProducts({ orderProducts: products });
|
|
27
|
+
|
|
28
|
+
test('current OS rows retain their metadata identity for cart delete and edit callbacks', () => {
|
|
29
|
+
const uid = '0dd325cf-545e-4665-bda0-d1a26046f78e';
|
|
30
|
+
const input = { ...product, metadata: { unique_identification_number: uid } };
|
|
31
|
+
const [row] = toCart(input);
|
|
32
|
+
assert.equal(row.identity_key, uid);
|
|
33
|
+
assert.equal(row.rowKey, uid);
|
|
34
|
+
assert.equal(row._id, uid);
|
|
35
|
+
assert.equal(row.price, 5.7);
|
|
36
|
+
assert.equal(row.options[0].name, 'Almond Milk');
|
|
37
|
+
assert.equal(input.identity_key, undefined);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('same-SKU option rows remain independently addressable when cart order changes', () => {
|
|
41
|
+
const almond = { ...product, metadata: { unique_identification_number: 'almond-row' } };
|
|
42
|
+
const regular = {
|
|
43
|
+
...product,
|
|
44
|
+
product_sku: { option: [] },
|
|
45
|
+
metadata: { unique_identification_number: 'regular-row' },
|
|
46
|
+
};
|
|
47
|
+
const original = toCart(almond, regular);
|
|
48
|
+
const reordered = toCart(regular, almond);
|
|
49
|
+
assert.notEqual(original[0].identity_key, original[1].identity_key);
|
|
50
|
+
assert.equal(original[0].identity_key, reordered[1].identity_key);
|
|
51
|
+
assert.equal(original[1].identity_key, reordered[0].identity_key);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('metadata identity takes precedence over stale top-level compatibility fields', () => {
|
|
55
|
+
const [row] = toCart({
|
|
56
|
+
...product,
|
|
57
|
+
metadata: { unique_identification_number: 'canonical-row' },
|
|
58
|
+
unique_identification_number: 'old-top-level-row',
|
|
59
|
+
identity_key: 'old-alias-row',
|
|
60
|
+
});
|
|
61
|
+
assert.equal(row.identity_key, 'canonical-row');
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('accepts top-level and legacy OS identities when metadata has no valid identity', () => {
|
|
65
|
+
for (const metadata of [undefined, {}, { unique_identification_number: '' }, { unique_identification_number: 123 }]) {
|
|
66
|
+
const [current, legacy] = toCart(
|
|
67
|
+
{ ...product, metadata, unique_identification_number: 'top-level-row' },
|
|
68
|
+
{ ...product, metadata, identity_key: 'legacy-row' },
|
|
69
|
+
);
|
|
70
|
+
assert.equal(current.identity_key, 'top-level-row');
|
|
71
|
+
assert.equal(legacy.identity_key, 'legacy-row');
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test('a display-only row key never becomes a deletion identity', () => {
|
|
76
|
+
const [row] = toCart(product);
|
|
77
|
+
assert.equal(row.rowKey, '477300_493720_0');
|
|
78
|
+
assert.equal(row.identity_key, undefined);
|
|
79
|
+
});
|
|
@@ -174,11 +174,15 @@ function toShoppingCartProducts(params) {
|
|
|
174
174
|
const { orderProducts, amountSymbol = "$" } = params;
|
|
175
175
|
if (!Array.isArray(orderProducts)) return [];
|
|
176
176
|
return orderProducts.map((productItem, index) => {
|
|
177
|
-
var _productItem$_origin, _productItem$product_, _productItem$
|
|
177
|
+
var _productItem$_origin, _productItem$metadata, _productItem$product_, _productItem$metadata2;
|
|
178
178
|
const productNum = toSafeNum(productItem === null || productItem === void 0 ? void 0 : productItem.num);
|
|
179
179
|
const unitPrice = getUnitPrice(productItem);
|
|
180
180
|
const callbackData = (productItem === null || productItem === void 0 || (_productItem$_origin = productItem._origin) === null || _productItem$_origin === void 0 ? void 0 : _productItem$_origin.callbackData) || {};
|
|
181
|
-
const identityKey =
|
|
181
|
+
const identityKey = [
|
|
182
|
+
productItem === null || productItem === void 0 || (_productItem$metadata = productItem.metadata) === null || _productItem$metadata === void 0 ? void 0 : _productItem$metadata.unique_identification_number,
|
|
183
|
+
productItem === null || productItem === void 0 ? void 0 : productItem.unique_identification_number,
|
|
184
|
+
productItem === null || productItem === void 0 ? void 0 : productItem.identity_key
|
|
185
|
+
].find((value) => typeof value === "string" && value.length > 0);
|
|
182
186
|
const rowKey = identityKey !== null && identityKey !== void 0 ? identityKey : `${(_productItem$product_ = productItem.product_id) !== null && _productItem$product_ !== void 0 ? _productItem$product_ : "p"}_${productItem.product_variant_id}_${index}`;
|
|
183
187
|
const productOptionString = (typeof (callbackData === null || callbackData === void 0 ? void 0 : callbackData.product_option_string) === "string" ? callbackData.product_option_string.trim() : "") || getVariantProductOptionString(productItem) || void 0;
|
|
184
188
|
const base = require_objectSpread2._objectSpread2({
|
|
@@ -204,7 +208,7 @@ function toShoppingCartProducts(params) {
|
|
|
204
208
|
if (productItem.product_sku) base.product_sku = productItem.product_sku;
|
|
205
209
|
else if (Array.isArray(productItem.product_option_item) && productItem.product_option_item.length) base.product_option_item = productItem.product_option_item;
|
|
206
210
|
if (Array.isArray(productItem.product_bundle) && productItem.product_bundle.length) base.product_bundle = productItem.product_bundle;
|
|
207
|
-
if (productItem === null || productItem === void 0 || (_productItem$
|
|
211
|
+
if (productItem === null || productItem === void 0 || (_productItem$metadata2 = productItem.metadata) === null || _productItem$metadata2 === void 0 ? void 0 : _productItem$metadata2.venue_booking) {
|
|
208
212
|
var _origin$resources2;
|
|
209
213
|
const origin = productItem._origin || {};
|
|
210
214
|
const meta = productItem.metadata || {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pisell/private-materials",
|
|
3
|
-
"version": "6.12.
|
|
3
|
+
"version": "6.12.365",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"module": "./es/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -74,10 +74,10 @@
|
|
|
74
74
|
"styled-components": "^6.0.0-rc.3",
|
|
75
75
|
"use-sync-external-store": "^1.6.0",
|
|
76
76
|
"@pisell/pi-payment-sdk": "0.0.4",
|
|
77
|
-
"@pisell/
|
|
78
|
-
"@pisell/icon": "0.0.11",
|
|
77
|
+
"@pisell/materials": "6.12.87",
|
|
79
78
|
"@pisell/date-picker": "3.0.12",
|
|
80
|
-
"@pisell/
|
|
79
|
+
"@pisell/icon": "0.0.11",
|
|
80
|
+
"@pisell/utils": "3.0.7"
|
|
81
81
|
},
|
|
82
82
|
"peerDependencies": {
|
|
83
83
|
"react": "^18.0.0",
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import "./serve/formResourcePage.js";
|
|
2
|
-
import "./floorRoomCard/mapRowToFloorRoomCardData.js";
|
|
3
|
-
import "./floorRoomCard/ReservationFloorRoomCard.js";
|
|
4
|
-
import "./floorMap/reservationMock.js";
|
|
5
|
-
import "./floorMap/floorPlanApi.js";
|
|
6
|
-
import "./reservationConstants.js";
|
|
7
|
-
import "./data/bookingToReservationTables.js";
|
|
8
|
-
import "./data/formResourceToReservationTables.js";
|
|
9
|
-
import "./data/salesEmbeddedResourceToTableRows.js";
|
|
10
|
-
import "./floorMap/reservationCards.js";
|
|
11
|
-
import "./PisellReservation.js";
|
|
12
|
-
import "./PisellReservationBookingPage.js";
|
|
13
|
-
import "./PisellVenueControlPage.js";
|
|
14
|
-
import "./PisellVenueWallPage.js";
|
|
15
|
-
import "./PisellReservationTablePage.js";
|
|
16
|
-
import "./components/SelectFloorMapResourceDialog.js";
|
|
17
|
-
export {};
|