@pisell/private-materials 6.12.197 → 6.12.198
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 +18 -18
- package/build/lowcode/view.js +18 -18
- package/es/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +1 -0
- package/es/components/bigSale/components/TimeBar/index.js +1 -0
- package/es/components/bigSale/dialog.js +1 -0
- package/es/components/bigSale/hooks/useBigSaleContext.js +1 -0
- package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +1 -0
- package/es/components/bigSale/hooks/useSyncBigSaleCartToCds.js +46 -17
- package/es/components/bigSale/index.js +1 -0
- package/es/components/bigSale/templates/Kiosk/index.js +1 -0
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.js +5 -1
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/index.js +9 -1
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/SelectDate/index.js +3 -1
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/index.d.ts +5 -0
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/index.js +2 -1
- package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +1 -0
- package/es/index.js +2 -0
- package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
- package/es/plus/pisellReservation/data/reservationDataUtils.js +2 -8
- package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
- package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
- package/es/plus/pisellReservation/index.js +17 -0
- package/es/plus/pisellSaleSummaryDetail/index.js +2 -1
- package/es/plus/saleDetail/Base.js +1 -0
- package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +1 -0
- package/es/plus/saleDetail/components/DetailActions/index.js +1 -0
- package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +7 -3
- package/es/plus/saleDetail/index.js +1 -0
- package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +1 -0
- package/es/plus/saleDetail/tmpl/B/components/Pay/index.js +2 -1
- package/es/plus/saleDetail/tmpl/B/index.js +1 -0
- package/es/plus/saleDetail/utils/paymentStatus.js +15 -0
- package/es/plus/salesSdk/index.js +52 -0
- package/es/plus/salesSdk/normalProductDetail/NormalProductDetailHostRenderer.js +105 -45
- package/es/plus/salesSdk/normalProductDetail/availabilityContextRouting.js +29 -0
- package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
- package/es/plus/salesSdk/utils/bookingDate.js +1 -1
- package/es/plus/salesSdk/utils/customerAuthGate.js +1 -1
- package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
- package/es/pro/Login2.0/AuthModal.d.ts +1 -1
- package/es/pro/Login2.0/index.d.ts +2 -1
- package/es/pro/Login2.0/shared/types.d.ts +1 -1
- package/es/pro/skuDetailModal/flow/modules/date/availabilityWindow.js +71 -0
- package/es/pro/skuDetailModal/flow/modules/date/index.js +24 -9
- package/es/pro/skuDetailModal/flow/modules/time/index.js +36 -17
- package/es/pro/skuDetailModal/flow/modules/time/posCustomTime.js +10 -24
- package/es/pro/skuDetailModal/flow/posAutoResolution.js +3 -1
- package/es/pro/skuDetailModal/flow/registry.d.ts +2 -2
- package/es/pro/skuDetailModal/flow/types.d.ts +8 -0
- package/es/pro/skuDetailModal/index.js +50 -12
- package/lib/components/bigSale/hooks/useSyncBigSaleCartToCds.js +46 -17
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.js +5 -1
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/index.js +9 -1
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/SelectDate/index.js +3 -1
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/index.d.ts +5 -0
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/index.js +2 -1
- package/lib/plus/pisellReservation/data/reservationDataUtils.js +2 -8
- package/lib/plus/pisellSaleSummaryDetail/index.js +2 -1
- package/lib/plus/saleDetail/components/SummaryFinancialSections/index.js +6 -3
- package/lib/plus/saleDetail/tmpl/B/components/Pay/index.js +2 -1
- package/lib/plus/saleDetail/utils/paymentStatus.js +15 -0
- package/lib/plus/salesSdk/normalProductDetail/NormalProductDetailHostRenderer.js +105 -45
- package/lib/plus/salesSdk/normalProductDetail/availabilityContextRouting.js +32 -0
- package/lib/pro/skuDetailModal/flow/modules/date/availabilityWindow.js +74 -0
- package/lib/pro/skuDetailModal/flow/modules/date/index.js +24 -9
- package/lib/pro/skuDetailModal/flow/modules/time/index.js +39 -20
- package/lib/pro/skuDetailModal/flow/modules/time/posCustomTime.js +11 -24
- package/lib/pro/skuDetailModal/flow/posAutoResolution.js +4 -0
- package/lib/pro/skuDetailModal/flow/registry.d.ts +2 -2
- package/lib/pro/skuDetailModal/flow/types.d.ts +8 -0
- package/lib/pro/skuDetailModal/index.js +49 -11
- package/package.json +2 -2
- package/es/private-materials/lowcode/authmodal/meta.d.ts +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import useEngineContext from "../../../../hooks/useEngineContext.js";
|
|
2
2
|
import { subscribeBookingDateChange } from "../../../../plus/salesSdk/utils/bookingDate.js";
|
|
3
|
+
import "../../../../plus/salesSdk/index.js";
|
|
3
4
|
import dayjs from "dayjs";
|
|
4
5
|
import { useCallback, useEffect, useState } from "react";
|
|
5
6
|
//#region src/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.ts
|
|
@@ -4,6 +4,7 @@ import withResponsive from "../../../../responsive/withResponsive.js";
|
|
|
4
4
|
import useInitLocalesOnce from "../../../../hooks/useInitLocalesOnce.js";
|
|
5
5
|
import { subscribeBookingDateChange } from "../../../../plus/salesSdk/utils/bookingDate.js";
|
|
6
6
|
import { useSalesSdkBookingContext } from "../../../../plus/salesSdk/context/SalesSdkBookingContext.js";
|
|
7
|
+
import "../../../../plus/salesSdk/index.js";
|
|
7
8
|
import locales_default from "../../locales/index.js";
|
|
8
9
|
import dayjs from "dayjs";
|
|
9
10
|
import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
@@ -5,6 +5,7 @@ import { buildInitBookingContextParams, collectBookingIdsFromTempOrder } from ".
|
|
|
5
5
|
import { useSalesSdk } from "../../plus/salesSdk/hooks/useSalesSdk.js";
|
|
6
6
|
import { useSalesSdkCart } from "../../plus/salesSdk/hooks/useSalesSdkCart.js";
|
|
7
7
|
import { SalesSdkPrepareOrderSwitchContext, SalesSdkRootRefreshContext } from "../../plus/salesSdk/context/SalesSdkProvider.js";
|
|
8
|
+
import "../../plus/salesSdk/index.js";
|
|
8
9
|
import { seedDineInReservationToCart } from "../../plus/pisellReservation/utils/seedDineInReservationToCart.js";
|
|
9
10
|
import { isPersistedBigSaleOrderId } from "./utils/orderIdentity.js";
|
|
10
11
|
import BigSale from "./index.js";
|
|
@@ -4,6 +4,7 @@ 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";
|
|
7
8
|
import { useMemo } from "react";
|
|
8
9
|
//#region src/components/bigSale/hooks/useBigSaleContext.ts
|
|
9
10
|
/**
|
|
@@ -3,6 +3,7 @@ import useEngineContext from "../../../hooks/useEngineContext.js";
|
|
|
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";
|
|
6
7
|
import { resolveOrderIdForHostActions } from "../../../plus/pisellReservation/components/bookingDetailModal/bookingDetailHostActions.js";
|
|
7
8
|
import { usePicoCodingOpenData } from "../../../plus/pisellReservation/hooks/usePicoCodingOpenData.js";
|
|
8
9
|
import { buildReplacementBookingResourcesFromReservationRow } from "../../../plus/pisellReservation/utils/reservationTicketBookingHostParams.js";
|
|
@@ -249,15 +249,18 @@ const buildCdsProductPayload = (cartLine, params) => {
|
|
|
249
249
|
return payload;
|
|
250
250
|
};
|
|
251
251
|
const buildCartUpdatePayload = (context, params) => {
|
|
252
|
-
var _context$summary, _context$sales, _summary$product_orig,
|
|
252
|
+
var _context$summary, _context$sales, _context$sales2, _bookingTicket$getOrd, _amountSnapshot$summa, _bookingTicket$getTem, _summary$product_orig, _context$cart, _ref, _amountSnapshot$total, _amountSnapshot$summa2, _amountSnapshot$summa3;
|
|
253
253
|
const cartLines = getCartProductLines(context === null || context === void 0 ? void 0 : context.cart);
|
|
254
254
|
if (!cartLines.length) return _objectSpread2({ currency_symbol: params.currencySymbol }, EMPTY_CART_UPDATE);
|
|
255
255
|
const products = cartLines.map((cartLine) => buildCdsProductPayload(cartLine, params));
|
|
256
|
-
const
|
|
256
|
+
const contextSummary = (_context$summary = context.summary) === null || _context$summary === void 0 ? void 0 : _context$summary.summary;
|
|
257
257
|
const tempOrder = (_context$sales = context.sales) === null || _context$sales === void 0 ? void 0 : _context$sales.tempOrder;
|
|
258
|
-
const
|
|
258
|
+
const bookingTicket = (_context$sales2 = context.sales) === null || _context$sales2 === void 0 ? void 0 : _context$sales2.bookingTicket;
|
|
259
|
+
const amountSnapshot = bookingTicket === null || bookingTicket === void 0 || (_bookingTicket$getOrd = bookingTicket.getOrderAmountSnapshot) === null || _bookingTicket$getOrd === void 0 ? void 0 : _bookingTicket$getOrd.call(bookingTicket);
|
|
260
|
+
const summary = (_amountSnapshot$summa = amountSnapshot === null || amountSnapshot === void 0 ? void 0 : amountSnapshot.summary) !== null && _amountSnapshot$summa !== void 0 ? _amountSnapshot$summa : contextSummary;
|
|
261
|
+
const currentTempOrder = (bookingTicket === null || bookingTicket === void 0 || (_bookingTicket$getTem = bookingTicket.getTempOrder) === null || _bookingTicket$getTem === void 0 ? void 0 : _bookingTicket$getTem.call(bookingTicket)) || tempOrder;
|
|
262
|
+
const payments = currentTempOrder === null || currentTempOrder === void 0 ? void 0 : currentTempOrder.payments;
|
|
259
263
|
const isTaxIncluded = Number(tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.is_price_include_tax) === 1;
|
|
260
|
-
const hasPendingWalletPayment = toArray(payments).some(isPendingWalletPayment);
|
|
261
264
|
const cartProducts = cartLines.map((cartLine) => cartLine.product);
|
|
262
265
|
const fees = [
|
|
263
266
|
{
|
|
@@ -279,7 +282,8 @@ const buildCartUpdatePayload = (context, params) => {
|
|
|
279
282
|
type: "tax"
|
|
280
283
|
});
|
|
281
284
|
}
|
|
282
|
-
|
|
285
|
+
const cartOrderPassFees = collectOrderPassFees(context === null || context === void 0 || (_context$cart = context.cart) === null || _context$cart === void 0 ? void 0 : _context$cart.discountList);
|
|
286
|
+
fees.push(...cartOrderPassFees.length ? cartOrderPassFees : collectOrderPassFees(tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.discount_list));
|
|
283
287
|
if (toFiniteNumber(tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.shop_discount) > 0) fees.push({
|
|
284
288
|
isReduce: true,
|
|
285
289
|
title: callLocaleText("pisell2.sale-detail.manual-order-adjustment"),
|
|
@@ -287,15 +291,16 @@ const buildCartUpdatePayload = (context, params) => {
|
|
|
287
291
|
type: "order_discount"
|
|
288
292
|
});
|
|
289
293
|
fees.push(...collectWalletPaymentFees(payments, params.locale));
|
|
290
|
-
const effectiveAmountDue =
|
|
294
|
+
const effectiveAmountDue = resolveEffectiveSaleDetailAmountDue({
|
|
295
|
+
baseSalesAmountGap: amountSnapshot === null || amountSnapshot === void 0 ? void 0 : amountSnapshot.amountGap,
|
|
291
296
|
amountGap: summary === null || summary === void 0 ? void 0 : summary.amount_gap,
|
|
292
|
-
fallbackAmount: (
|
|
293
|
-
orderPaidAmount: summary === null || summary === void 0 ? void 0 : summary.order_paid_amount,
|
|
297
|
+
fallbackAmount: (_ref = (_amountSnapshot$total = amountSnapshot === null || amountSnapshot === void 0 ? void 0 : amountSnapshot.totalAmount) !== null && _amountSnapshot$total !== void 0 ? _amountSnapshot$total : summary === null || summary === void 0 ? void 0 : summary.total_amount) !== null && _ref !== void 0 ? _ref : summary === null || summary === void 0 ? void 0 : summary.expect_amount,
|
|
298
|
+
orderPaidAmount: (_amountSnapshot$summa2 = amountSnapshot === null || amountSnapshot === void 0 || (_amountSnapshot$summa3 = amountSnapshot.summary) === null || _amountSnapshot$summa3 === void 0 ? void 0 : _amountSnapshot$summa3.order_paid_amount) !== null && _amountSnapshot$summa2 !== void 0 ? _amountSnapshot$summa2 : summary === null || summary === void 0 ? void 0 : summary.order_paid_amount,
|
|
294
299
|
payments
|
|
295
|
-
})
|
|
300
|
+
});
|
|
296
301
|
return {
|
|
297
302
|
currency_symbol: params.currencySymbol,
|
|
298
|
-
total: effectiveAmountDue
|
|
303
|
+
total: effectiveAmountDue.toFixed(2),
|
|
299
304
|
products,
|
|
300
305
|
fees
|
|
301
306
|
};
|
|
@@ -304,7 +309,7 @@ const buildCartUpdatePayload = (context, params) => {
|
|
|
304
309
|
* Standard 大促模板购物车变更时,向 Native CDS 同步购物车快照。
|
|
305
310
|
*/
|
|
306
311
|
function useSyncBigSaleCartToCds(context, options = {}) {
|
|
307
|
-
var _context$
|
|
312
|
+
var _context$cart2, _context$cart3, _context$cart4, _context$cart5, _context$summary2, _context$sales3, _context$sales4, _context$sales5, _context$sales7;
|
|
308
313
|
const engineContext = useEngineContext();
|
|
309
314
|
const { enabled = true } = options;
|
|
310
315
|
useEffect(() => {
|
|
@@ -317,13 +322,37 @@ function useSyncBigSaleCartToCds(context, options = {}) {
|
|
|
317
322
|
locale
|
|
318
323
|
}));
|
|
319
324
|
}, [
|
|
320
|
-
context === null || context === void 0 || (_context$
|
|
321
|
-
context === null || context === void 0 || (_context$
|
|
322
|
-
context === null || context === void 0 || (_context$
|
|
325
|
+
context === null || context === void 0 || (_context$cart2 = context.cart) === null || _context$cart2 === void 0 ? void 0 : _context$cart2.bookings,
|
|
326
|
+
context === null || context === void 0 || (_context$cart3 = context.cart) === null || _context$cart3 === void 0 ? void 0 : _context$cart3.discountList,
|
|
327
|
+
context === null || context === void 0 || (_context$cart4 = context.cart) === null || _context$cart4 === void 0 ? void 0 : _context$cart4.displayLines,
|
|
328
|
+
context === null || context === void 0 || (_context$cart5 = context.cart) === null || _context$cart5 === void 0 ? void 0 : _context$cart5.items,
|
|
323
329
|
context === null || context === void 0 || (_context$summary2 = context.summary) === null || _context$summary2 === void 0 ? void 0 : _context$summary2.summary,
|
|
324
|
-
context === null || context === void 0 || (_context$
|
|
325
|
-
context === null || context === void 0 || (_context$
|
|
326
|
-
context === null || context === void 0 || (_context$
|
|
330
|
+
context === null || context === void 0 || (_context$sales3 = context.sales) === null || _context$sales3 === void 0 ? void 0 : _context$sales3.tempOrder,
|
|
331
|
+
context === null || context === void 0 || (_context$sales4 = context.sales) === null || _context$sales4 === void 0 || (_context$sales4 = _context$sales4.tempOrder) === null || _context$sales4 === void 0 ? void 0 : _context$sales4.payments,
|
|
332
|
+
context === null || context === void 0 || (_context$sales5 = context.sales) === null || _context$sales5 === void 0 ? void 0 : _context$sales5.bookingTicket,
|
|
333
|
+
engineContext,
|
|
334
|
+
enabled
|
|
335
|
+
]);
|
|
336
|
+
useEffect(() => {
|
|
337
|
+
var _context$sales6, _engineContext$appHel2;
|
|
338
|
+
if (!enabled) return void 0;
|
|
339
|
+
const bookingTicket = context === null || context === void 0 || (_context$sales6 = context.sales) === null || _context$sales6 === void 0 ? void 0 : _context$sales6.bookingTicket;
|
|
340
|
+
if (!bookingTicket || typeof bookingTicket.effectsOn !== "function") return;
|
|
341
|
+
const utils = (engineContext === null || engineContext === void 0 || (_engineContext$appHel2 = engineContext.appHelper) === null || _engineContext$appHel2 === void 0 ? void 0 : _engineContext$appHel2.utils) || {};
|
|
342
|
+
const off = bookingTicket.effectsOn("onTempOrderReplaced", () => {
|
|
343
|
+
var _bookingTicket$getTem2;
|
|
344
|
+
const tempOrder = (_bookingTicket$getTem2 = bookingTicket.getTempOrder) === null || _bookingTicket$getTem2 === void 0 ? void 0 : _bookingTicket$getTem2.call(bookingTicket);
|
|
345
|
+
if (!tempOrder) return;
|
|
346
|
+
if (toArray(tempOrder.products).length > 0 || toArray(tempOrder.bookings).length > 0) return;
|
|
347
|
+
postCartUpdateToCds(utils, _objectSpread2({ currency_symbol: getCurrencySymbol(utils) }, EMPTY_CART_UPDATE));
|
|
348
|
+
});
|
|
349
|
+
return () => {
|
|
350
|
+
try {
|
|
351
|
+
off();
|
|
352
|
+
} catch (_unused) {}
|
|
353
|
+
};
|
|
354
|
+
}, [
|
|
355
|
+
context === null || context === void 0 || (_context$sales7 = context.sales) === null || _context$sales7 === void 0 ? void 0 : _context$sales7.bookingTicket,
|
|
327
356
|
engineContext,
|
|
328
357
|
enabled
|
|
329
358
|
]);
|
|
@@ -8,6 +8,7 @@ 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";
|
|
11
12
|
import { ResponsiveBigSaleBase } from "./Base.js";
|
|
12
13
|
import { isBigSaleProductSelectionFlowScene, resolveBigSaleSelectionFlowConfig } from "./selectionFlowConfig.js";
|
|
13
14
|
import { isKioskPresentation } from "./templateCapabilities.js";
|
|
@@ -8,6 +8,7 @@ import { resolvePaymentResultToastV2ViewModel } from "../../../checkout/componen
|
|
|
8
8
|
import PaymentResultToastV2_default from "../../../checkout/components/PaymentResultToastV2/index.js";
|
|
9
9
|
import { freePayApi } from "../../../Sales/Checkout/serve.js";
|
|
10
10
|
import { useSalesSdk } from "../../../../plus/salesSdk/hooks/useSalesSdk.js";
|
|
11
|
+
import "../../../../plus/salesSdk/index.js";
|
|
11
12
|
import { usePickSaleDetailContext } from "../../hooks/usePickSaleDetailContext.js";
|
|
12
13
|
import { resolveBigSaleAutoProductListPreferences } from "../../utils/productListPreferences.js";
|
|
13
14
|
import { resolveBigSaleProductDisplayConfig } from "../../hooks/useBigSaleProductListConfig.js";
|
|
@@ -11,7 +11,7 @@ import classNames from "classnames";
|
|
|
11
11
|
import "./index.less";
|
|
12
12
|
//#region src/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.tsx
|
|
13
13
|
const CalenDateWeek = (props) => {
|
|
14
|
-
const { currentDate, dateChange, productId, timeList, dateLimitData, getLimitData, cutTime, showStatusBar = true, showDisabledStatus = true, ignoreAvailabilityDisabled = false, enforceAvailabilitySelection = false, minSelectableDate, minViewDate, enableRangeSelection = false, selectedRangeStartDate, selectedRangeEndDate, showMonthHeader = false, enableSwipeNavigation = false, disableCallToBook = false, navigationVariant = "default" } = props;
|
|
14
|
+
const { currentDate, dateChange, productId, timeList, dateLimitData, getLimitData, cutTime, showStatusBar = true, showDisabledStatus = true, ignoreAvailabilityDisabled = false, enforceAvailabilitySelection = false, minSelectableDate, minViewDate, enableRangeSelection = false, selectedRangeStartDate, selectedRangeEndDate, showMonthHeader = false, enableSwipeNavigation = false, disableCallToBook = false, navigationVariant = "default", onVisibleDateRangeChange } = props;
|
|
15
15
|
const [weekList, setWeekList] = useState([]);
|
|
16
16
|
const [weekAnchorDate, setWeekAnchorDate] = useState(currentDate);
|
|
17
17
|
const [pendingWeekList, setPendingWeekList] = useState(null);
|
|
@@ -163,6 +163,10 @@ const CalenDateWeek = (props) => {
|
|
|
163
163
|
if (pendingWeekAnchorDate && pendingWeekList) {
|
|
164
164
|
setWeekAnchorDate(pendingWeekAnchorDate);
|
|
165
165
|
setWeekList(pendingWeekList);
|
|
166
|
+
onVisibleDateRangeChange === null || onVisibleDateRangeChange === void 0 || onVisibleDateRangeChange({
|
|
167
|
+
startDate: pendingWeekList[0],
|
|
168
|
+
endDate: pendingWeekList[pendingWeekList.length - 1]
|
|
169
|
+
});
|
|
166
170
|
}
|
|
167
171
|
setPendingWeekAnchorDate(null);
|
|
168
172
|
setPendingWeekList(null);
|
|
@@ -11,7 +11,7 @@ import "./index.less";
|
|
|
11
11
|
//#region src/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/index.tsx
|
|
12
12
|
dayjs.extend(isSameOrBefore);
|
|
13
13
|
const CalendarDate = (props, ref) => {
|
|
14
|
-
const { cutTime, getLimitData, dateLimitData, loading, disableCallToBook = false, enforceAvailabilitySelection = false, ignoreAvailabilityDisabled = false, availabilityRange, minSelectableDate, title = locales.getText("pisell2.event.calendar.select.date"), closeOnSelect = false } = props;
|
|
14
|
+
const { cutTime, getLimitData, dateLimitData, loading, disableCallToBook = false, enforceAvailabilitySelection = false, ignoreAvailabilityDisabled = false, availabilityRange, minSelectableDate, title = locales.getText("pisell2.event.calendar.select.date"), closeOnSelect = false, onVisibleDateRangeChange } = props;
|
|
15
15
|
const [productId, setProductId] = useState("");
|
|
16
16
|
const [currentDate, setCurrentDate] = useState("");
|
|
17
17
|
const [dateMonthList, setDateMonthList] = useState([]);
|
|
@@ -75,6 +75,10 @@ const CalendarDate = (props, ref) => {
|
|
|
75
75
|
let newLastMonth = dayjs(currentMonth.format("YYYY-MM")).subtract(1, "month");
|
|
76
76
|
setCurrentMonth(newLastMonth);
|
|
77
77
|
setDateMonthList(getMonthData(newLastMonth.format("YYYY-MM")));
|
|
78
|
+
onVisibleDateRangeChange === null || onVisibleDateRangeChange === void 0 || onVisibleDateRangeChange({
|
|
79
|
+
startDate: newLastMonth.startOf("month").format("YYYY-MM-DD"),
|
|
80
|
+
endDate: newLastMonth.endOf("month").format("YYYY-MM-DD")
|
|
81
|
+
});
|
|
78
82
|
};
|
|
79
83
|
/**
|
|
80
84
|
* @title: 切换下个月
|
|
@@ -88,6 +92,10 @@ const CalendarDate = (props, ref) => {
|
|
|
88
92
|
let newNextMonth = dayjs(currentMonth.format("YYYY-MM")).add(1, "month");
|
|
89
93
|
setCurrentMonth(newNextMonth);
|
|
90
94
|
setDateMonthList(getMonthData(newNextMonth.format("YYYY-MM")));
|
|
95
|
+
onVisibleDateRangeChange === null || onVisibleDateRangeChange === void 0 || onVisibleDateRangeChange({
|
|
96
|
+
startDate: newNextMonth.startOf("month").format("YYYY-MM-DD"),
|
|
97
|
+
endDate: newNextMonth.endOf("month").format("YYYY-MM-DD")
|
|
98
|
+
});
|
|
91
99
|
};
|
|
92
100
|
/**
|
|
93
101
|
* @title: 根据当前选择的月份剩余量
|
|
@@ -12,7 +12,7 @@ import { Iconfont } from "@pisell/materials";
|
|
|
12
12
|
import classNames from "classnames";
|
|
13
13
|
import "./index.less";
|
|
14
14
|
//#region src/components/eventBooking/components/bookingAvailabilityCalendar/components/SelectDate/index.tsx
|
|
15
|
-
const SelectDate = ({ currentDate, detail, currentDateChange, setSurplusDisabledChange, cutTime, setCutTime, showCalendarPopup, showStatusLegend = true, showDateStatusBar = true, title = locales.getText("pisell2.event.calendar.select.date"), showHeader = true, showDisabledStatus = true, ignoreAvailabilityDisabled = false, minSelectableDate, minViewDate, enableRangeSelection = false, selectedRangeStartDate, selectedRangeEndDate, showMonthHeader = false, enableWeekSwipe = false, weekNavigationVariant = "default", closeCalendarOnSelect = false, availabilityDates }, ref) => {
|
|
15
|
+
const SelectDate = ({ currentDate, detail, currentDateChange, onVisibleDateRangeChange, setSurplusDisabledChange, cutTime, setCutTime, showCalendarPopup, showStatusLegend = true, showDateStatusBar = true, title = locales.getText("pisell2.event.calendar.select.date"), showHeader = true, showDisabledStatus = true, ignoreAvailabilityDisabled = false, minSelectableDate, minViewDate, enableRangeSelection = false, selectedRangeStartDate, selectedRangeEndDate, showMonthHeader = false, enableWeekSwipe = false, weekNavigationVariant = "default", closeCalendarOnSelect = false, availabilityDates }, ref) => {
|
|
16
16
|
const [dateLimitData, setDateLimitData] = useState(mock.availability_calendar.limitData);
|
|
17
17
|
/**
|
|
18
18
|
* UBS 日期结果只负责状态展示,不伪造旧事件预约的 times/库存结构。
|
|
@@ -76,6 +76,7 @@ const SelectDate = ({ currentDate, detail, currentDateChange, setSurplusDisabled
|
|
|
76
76
|
productId: detail === null || detail === void 0 ? void 0 : detail.id,
|
|
77
77
|
cutTime,
|
|
78
78
|
dateLimitData: resolvedDateLimitData,
|
|
79
|
+
onVisibleDateRangeChange,
|
|
79
80
|
showStatusBar: showDateStatusBar,
|
|
80
81
|
showDisabledStatus,
|
|
81
82
|
ignoreAvailabilityDisabled,
|
|
@@ -97,6 +98,7 @@ const SelectDate = ({ currentDate, detail, currentDateChange, setSurplusDisabled
|
|
|
97
98
|
},
|
|
98
99
|
cutTime,
|
|
99
100
|
dateLimitData: resolvedDateLimitData,
|
|
101
|
+
onVisibleDateRangeChange,
|
|
100
102
|
disableCallToBook: usesExternalAvailability,
|
|
101
103
|
enforceAvailabilitySelection: usesExternalAvailability,
|
|
102
104
|
ignoreAvailabilityDisabled,
|
|
@@ -25,6 +25,11 @@ interface BookingAvailabilityCalendarProps {
|
|
|
25
25
|
currentDate?: string;
|
|
26
26
|
cutTime?: any;
|
|
27
27
|
onCurrentDateChange?: (date: string) => void;
|
|
28
|
+
/** 周历或月历切换后,通知外层当前可视日期范围。 */
|
|
29
|
+
onVisibleDateRangeChange?: (range: {
|
|
30
|
+
startDate: string;
|
|
31
|
+
endDate: string;
|
|
32
|
+
}) => void;
|
|
28
33
|
onCutTimeChange?: (date: string) => void;
|
|
29
34
|
onSurplusDisabledChange?: (date: boolean) => void;
|
|
30
35
|
showStatusLegend?: boolean;
|
|
@@ -18,7 +18,7 @@ const BookingAvailabilityCalendar = forwardRef((props, ref) => {
|
|
|
18
18
|
* 日历挂载后日期图例、Add Note、Cancel 等文案又闪回英文。
|
|
19
19
|
*/
|
|
20
20
|
locales.init(locales_default, locales.getLocale() || "en");
|
|
21
|
-
const { showCalendarPopup, onDateChange, detail = (_mock$availability_ca = mock.availability_calendar) === null || _mock$availability_ca === void 0 ? void 0 : _mock$availability_ca.detail, currentDate = (_mock$availability_ca2 = mock.availability_calendar) === null || _mock$availability_ca2 === void 0 ? void 0 : _mock$availability_ca2.currentDate, cutTime = (_mock$availability_ca3 = mock.availability_calendar) === null || _mock$availability_ca3 === void 0 ? void 0 : _mock$availability_ca3.cutTime, onCurrentDateChange, onCutTimeChange, onSurplusDisabledChange, showStatusLegend = true, showDateStatusBar = true, theme = "light", className, title, showHeader, showDisabledStatus, ignoreAvailabilityDisabled, minSelectableDate, minViewDate, enableRangeSelection, selectedRangeStartDate, selectedRangeEndDate, showMonthHeader, enableWeekSwipe, weekNavigationVariant, closeCalendarOnSelect, availabilityDates } = props;
|
|
21
|
+
const { showCalendarPopup, onDateChange, detail = (_mock$availability_ca = mock.availability_calendar) === null || _mock$availability_ca === void 0 ? void 0 : _mock$availability_ca.detail, currentDate = (_mock$availability_ca2 = mock.availability_calendar) === null || _mock$availability_ca2 === void 0 ? void 0 : _mock$availability_ca2.currentDate, cutTime = (_mock$availability_ca3 = mock.availability_calendar) === null || _mock$availability_ca3 === void 0 ? void 0 : _mock$availability_ca3.cutTime, onCurrentDateChange, onVisibleDateRangeChange, onCutTimeChange, onSurplusDisabledChange, showStatusLegend = true, showDateStatusBar = true, theme = "light", className, title, showHeader, showDisabledStatus, ignoreAvailabilityDisabled, minSelectableDate, minViewDate, enableRangeSelection, selectedRangeStartDate, selectedRangeEndDate, showMonthHeader, enableWeekSwipe, weekNavigationVariant, closeCalendarOnSelect, availabilityDates } = props;
|
|
22
22
|
const selectDateRef = useRef(null);
|
|
23
23
|
useImperativeHandle(ref, () => ({ openCalendarPopup: () => {
|
|
24
24
|
var _selectDateRef$curren;
|
|
@@ -34,6 +34,7 @@ const BookingAvailabilityCalendar = forwardRef((props, ref) => {
|
|
|
34
34
|
onCurrentDateChange(date);
|
|
35
35
|
if (currentDate !== date) onDateChange(date);
|
|
36
36
|
},
|
|
37
|
+
onVisibleDateRangeChange,
|
|
37
38
|
setSurplusDisabledChange: onSurplusDisabledChange,
|
|
38
39
|
cutTime,
|
|
39
40
|
setCutTime: onCutTimeChange,
|
|
@@ -2,6 +2,7 @@ import { _asyncToGenerator } from "../../_virtual/_@oxc-project_runtime@0.122.0/
|
|
|
2
2
|
import useEngineContext from "../../hooks/useEngineContext.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";
|
|
5
6
|
import { useEffect, useRef } from "react";
|
|
6
7
|
import { useMemoizedFn } from "ahooks";
|
|
7
8
|
//#region src/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.tsx
|
package/es/index.js
CHANGED
|
@@ -86,6 +86,7 @@ import { useSalesSdkProducts } from "./plus/salesSdk/hooks/useSalesSdkProducts.j
|
|
|
86
86
|
import SalesSdkDemo from "./plus/salesSdk/demo/index.js";
|
|
87
87
|
import { useSalesSdkDish } from "./plus/salesSdk/hooks/useSalesSdkDish.js";
|
|
88
88
|
import { useSyncOsModule } from "./plus/salesSdk/hooks/useSyncOsModule.js";
|
|
89
|
+
import "./plus/salesSdk/index.js";
|
|
89
90
|
import BigSaleRightActionPanel from "./components/BigSaleRightActionPanel/index.js";
|
|
90
91
|
import ResponsiveWrapper from "./components/list/ResponsiveWrapper.js";
|
|
91
92
|
import { resolveBigSaleSelectionFlowConfig } from "./components/bigSale/selectionFlowConfig.js";
|
|
@@ -138,6 +139,7 @@ import PisellVenueControlPage from "./plus/pisellReservation/PisellVenueControlP
|
|
|
138
139
|
import PisellVenueWallPage from "./plus/pisellReservation/PisellVenueWallPage.js";
|
|
139
140
|
import PisellReservationTablePage from "./plus/pisellReservation/PisellReservationTablePage.js";
|
|
140
141
|
import SelectFloorMapResourceDialog from "./plus/pisellReservation/components/SelectFloorMapResourceDialog.js";
|
|
142
|
+
import "./plus/pisellReservation/index.js";
|
|
141
143
|
import { PisellTopology, PisellTopologyCore } from "./plus/pisellTopology/PisellTopology.js";
|
|
142
144
|
import cupProject_default from "./components/ecocup/cupProject/index.js";
|
|
143
145
|
import CupList from "./components/ecocup/cupList/index.js";
|
|
@@ -259,4 +259,4 @@ function bookingListToReservationTableRows(bookings) {
|
|
|
259
259
|
return rows;
|
|
260
260
|
}
|
|
261
261
|
//#endregion
|
|
262
|
-
export { applyHostResourceShellToBaseRow, bookingListToReservationTableRows, customerBrief, extractResourceRecordIds, filterBookingsByResourceIds, hostBookingUiPatchFromRecord, mergeBookingsForResourceRecord };
|
|
262
|
+
export { applyHostResourceShellToBaseRow, bookingListToReservationTableRows, customerBrief, extractResourceRecordIds, filterBookingsByResourceIds, hostBookingStatusToCardStatus, hostBookingUiPatchFromRecord, mergeBookingsForResourceRecord };
|
|
@@ -78,17 +78,11 @@ function stripCalendarOnlyFlags(prev) {
|
|
|
78
78
|
delete nextValues.enable_remote_memory_cache;
|
|
79
79
|
return _objectSpread2(_objectSpread2({}, prev), {}, { filter: _objectSpread2(_objectSpread2({}, prevFilter), {}, { values: nextValues }) });
|
|
80
80
|
}
|
|
81
|
-
/**
|
|
82
|
-
* 日历导航:按视口自然日范围扩展 `booking_time_start_between`。
|
|
83
|
-
*
|
|
84
|
-
* 后端只支持 start_time 过滤;为了让"开始早于视口、结束仍落在视口内"的跨日 booking 也被拉到,
|
|
85
|
-
* 这里把下界往前再外推 {@link RESERVATION_CALENDAR_VIEWPORT_LOOKBACK_DAYS} 天,
|
|
86
|
-
* 由前端 `getBookingSegmentForDate` / `clipBookingDaySpanToWindow` 在视图层做相交渲染。
|
|
87
|
-
*/
|
|
81
|
+
/** 日历导航:按当前视口自然日范围更新 `booking_time_start_between`。 */
|
|
88
82
|
function mergeSearchParamsBookingRange(prev, rangeStart, rangeEnd, operatingDayBoundary) {
|
|
89
83
|
const prevFilter = typeof prev.filter === "object" && prev.filter ? prev.filter : {};
|
|
90
84
|
const prevValues = typeof prevFilter.values === "object" && prevFilter.values ? prevFilter.values : {};
|
|
91
|
-
const window = bookingTimeWindowForCalendarRequest(
|
|
85
|
+
const window = bookingTimeWindowForCalendarRequest(rangeStart, rangeEnd, operatingDayBoundary);
|
|
92
86
|
return _objectSpread2(_objectSpread2({}, prev), {}, { filter: _objectSpread2(_objectSpread2({}, prevFilter), {}, { values: _objectSpread2(_objectSpread2({}, prevValues), {}, { booking_time_start_between: window }) }) });
|
|
93
87
|
}
|
|
94
88
|
/**
|
|
@@ -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, ensureShopFloorPlanByCode, saveViewConfigToShopFloorPlan, shopLayoutToSceneElements$1 as shopLayoutToSceneElements, toastFloorPlanLoadError, toastFloorPlanSaveError, unsubscribeShopFloorPlanCodeQuery };
|
|
81
|
+
export { PISELL_RESERVATION_FLOOR_PLAN_CODE, buildDefaultReservationFloorPlanPostBody, ensureShopFloorPlanByCode, putShopFloorPlan, 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, defaultReservationTableRows, getDefaultReservationFloorMapConfig, getReservationDataSourceFormColumns, getReservationFloorMapShellConfig, mergeFloorMapElementKindCategoriesWithDefaults, mergeFloorMapElementKindsWithDefaults };
|
|
930
|
+
export { RESERVATION_BOUND_ROUND_TABLE_ELEMENT_KIND, RESERVATION_BOUND_TABLE_ELEMENT_KIND, applyReservationFloorMapLiveLabels, defaultReservationSceneElements, defaultReservationTableRows, getDefaultReservationFloorMapConfig, getReservationDataSourceFormColumns, getReservationFloorMapShellConfig, mergeFloorMapElementKindCategoriesWithDefaults, mergeFloorMapElementKindsWithDefaults };
|
|
@@ -0,0 +1,17 @@
|
|
|
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 {};
|
|
@@ -2,6 +2,7 @@ import { _objectSpread2 } from "../../_virtual/_@oxc-project_runtime@0.122.0/hel
|
|
|
2
2
|
import useEngineContext from "../../hooks/useEngineContext.js";
|
|
3
3
|
import useInitLocalesOnce from "../../hooks/useInitLocalesOnce.js";
|
|
4
4
|
import { resolvePaymentMethodName, usePaymentMethodNameMap } from "../pisellSalesManagement/hooks/usePaymentMethodNameMap.js";
|
|
5
|
+
import { isAppliedPaymentRecord } from "../saleDetail/utils/paymentStatus.js";
|
|
5
6
|
import localeTexts from "./locales.js";
|
|
6
7
|
import React, { useCallback, useMemo, useState } from "react";
|
|
7
8
|
import { formatAmount, locales } from "@pisell/utils";
|
|
@@ -179,7 +180,7 @@ function getPaidExclPaymentSurchargeLabel(paymentSurchargeText) {
|
|
|
179
180
|
return `${locales.getText("pisell2.sale-detail.pay.paid")} (${paymentSurchargeText})`;
|
|
180
181
|
}
|
|
181
182
|
function buildPaymentRows(payments, paymentMethodNameMap, symbol, options) {
|
|
182
|
-
return payments.filter((payment) => !isVoucherPaymentRecord(payment)).map((payment, index) => {
|
|
183
|
+
return payments.filter(isAppliedPaymentRecord).filter((payment) => !isVoucherPaymentRecord(payment)).map((payment, index) => {
|
|
183
184
|
var _firstDefined;
|
|
184
185
|
const amount = getPaymentAmount(payment);
|
|
185
186
|
const isRefund = isRefundPaymentRecord(payment);
|
|
@@ -11,6 +11,7 @@ import { useSalesSdkCart } from "../salesSdk/hooks/useSalesSdkCart.js";
|
|
|
11
11
|
import { useSalesSdkCustomer } from "../salesSdk/hooks/useSalesSdkCustomer.js";
|
|
12
12
|
import { useSalesSdkBookingContext } from "../salesSdk/context/SalesSdkBookingContext.js";
|
|
13
13
|
import { useSalesSdkSummary } from "../salesSdk/hooks/useSalesSdkSummary.js";
|
|
14
|
+
import "../salesSdk/index.js";
|
|
14
15
|
import locales_default from "./locales.js";
|
|
15
16
|
import locales_default$1 from "./components/LineItem/locales.js";
|
|
16
17
|
import { SaleOrderActionBoundary } from "./actions/index.js";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { _objectSpread2 } from "../../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
|
|
2
2
|
import useEngineContext from "../../../../../hooks/useEngineContext.js";
|
|
3
3
|
import { useSalesSdkBookingContext } from "../../../../salesSdk/context/SalesSdkBookingContext.js";
|
|
4
|
+
import "../../../../salesSdk/index.js";
|
|
4
5
|
import { useMemo } from "react";
|
|
5
6
|
import { useMemoizedFn } from "ahooks";
|
|
6
7
|
//#region src/plus/saleDetail/components/Client/hooks/useClientSelectorProps.ts
|
|
@@ -9,6 +9,7 @@ import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
|
|
|
9
9
|
import { useSalesSdkCart } from "../../../salesSdk/hooks/useSalesSdkCart.js";
|
|
10
10
|
import { useSalesSdkGlobalScanActivity } from "../../../salesSdk/context/SalesSdkGlobalScanActivityContext.js";
|
|
11
11
|
import { useSalesSdkSummary } from "../../../salesSdk/hooks/useSalesSdkSummary.js";
|
|
12
|
+
import "../../../salesSdk/index.js";
|
|
12
13
|
import { getNumericAmount, getSalesHostModule, resolveSaleDetailOrderIdFromSales, resolveSaleDetailOrderIdFromSalesResult, shouldCloseDialogAfterCheckout, updateLocalOrder } from "./utils.js";
|
|
13
14
|
import { getRemotePrintActions, getWristbandList } from "../../serve.js";
|
|
14
15
|
import { deriveSaleOrderSubmitState } from "../../actions/state.js";
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import useEngineContext from "../../../../hooks/useEngineContext.js";
|
|
2
2
|
import { resolvePaymentMethodName, usePaymentMethodNameMap } from "../../../pisellSalesManagement/hooks/usePaymentMethodNameMap.js";
|
|
3
|
+
import { isAppliedPaymentRecord } from "../../utils/paymentStatus.js";
|
|
3
4
|
import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
|
|
4
5
|
import { useSalesSdkCart } from "../../../salesSdk/hooks/useSalesSdkCart.js";
|
|
5
6
|
import { useSalesSdkSummary } from "../../../salesSdk/hooks/useSalesSdkSummary.js";
|
|
7
|
+
import "../../../salesSdk/index.js";
|
|
6
8
|
import React, { memo, useMemo } from "react";
|
|
7
9
|
import { formatAmount, locales } from "@pisell/utils";
|
|
8
10
|
import Decimal from "decimal.js";
|
|
@@ -141,8 +143,9 @@ const PaymentDetailsContent = memo(function PaymentDetailsContent({ symbol, toPa
|
|
|
141
143
|
const currentLocale = locales.getLocale();
|
|
142
144
|
const paymentMethodNameMap = usePaymentMethodNameMap();
|
|
143
145
|
const entries = useMemo(() => {
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
+
const appliedPayments = payments.filter(isAppliedPaymentRecord);
|
|
147
|
+
const nextEntries = appliedPayments.filter((payment) => !isVoucherPaymentRecord(payment)).map((payment, index) => buildPaymentDetailEntry(payment, `payment-${index}`, paymentMethodNameMap));
|
|
148
|
+
if (!appliedPayments.length) {
|
|
146
149
|
if (isNonZeroAmount(summary.order_paid_amount)) nextEntries.push({
|
|
147
150
|
key: "paid-summary",
|
|
148
151
|
title: locales.getText("pisell2.sale-detail.pay.payment"),
|
|
@@ -243,7 +246,8 @@ const PaymentDetailsSectionView = memo(function PaymentDetailsSectionView({ paym
|
|
|
243
246
|
const totalRefundAmount = summary === null || summary === void 0 ? void 0 : summary.total_refund_amount;
|
|
244
247
|
if (!useMemo(() => {
|
|
245
248
|
if (!hasSummary) return false;
|
|
246
|
-
|
|
249
|
+
const appliedPayments = payments.filter(isAppliedPaymentRecord);
|
|
250
|
+
return appliedPayments.some((payment) => !isVoucherPaymentRecord(payment)) || !appliedPayments.length && (isNonZeroAmount(orderPaidAmount) || isNonZeroAmount(totalRefundAmount));
|
|
247
251
|
}, [
|
|
248
252
|
hasSummary,
|
|
249
253
|
orderPaidAmount,
|
|
@@ -4,6 +4,7 @@ import { useSalesSdk } from "../salesSdk/hooks/useSalesSdk.js";
|
|
|
4
4
|
import { SalesSdkProvider } from "../salesSdk/context/SalesSdkProvider.js";
|
|
5
5
|
import { SalesSdkDishProvider } from "../salesSdk/context/SalesSdkDishContext.js";
|
|
6
6
|
import { SalesSdkBookingContextProvider } from "../salesSdk/context/SalesSdkBookingContext.js";
|
|
7
|
+
import "../salesSdk/index.js";
|
|
7
8
|
import Base_default from "./Base.js";
|
|
8
9
|
import React, { forwardRef, useImperativeHandle } from "react";
|
|
9
10
|
//#region src/plus/saleDetail/index.tsx
|
|
@@ -1,6 +1,7 @@
|
|
|
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";
|
|
4
5
|
import { SaleDetailStatusOverview } from "../shared/StatusOverview.js";
|
|
5
6
|
import { DishGroupView } from "./DishGroupView.js";
|
|
6
7
|
import dayjs from "dayjs";
|
|
@@ -2,6 +2,7 @@ import { _objectSpread2 } from "../../../../../../_virtual/_@oxc-project_runtime
|
|
|
2
2
|
import { _asyncToGenerator } from "../../../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/asyncToGenerator.js";
|
|
3
3
|
import useEngineContext from "../../../../../../hooks/useEngineContext.js";
|
|
4
4
|
import { resolvePaymentMethodName, usePaymentMethodNameMap } from "../../../../../pisellSalesManagement/hooks/usePaymentMethodNameMap.js";
|
|
5
|
+
import { isAppliedPaymentRecord } from "../../../../utils/paymentStatus.js";
|
|
5
6
|
import { EftposProvider, PaymentMode } from "../../../../../piPaymentUI/eftpos/contracts/index.js";
|
|
6
7
|
import { PiPaymentType } from "../../../../../piPaymentUI/contracts/index.js";
|
|
7
8
|
import PiPayment from "../../../../../piPaymentUI/PiPayment.js";
|
|
@@ -708,7 +709,7 @@ function Pay({ context }) {
|
|
|
708
709
|
const tempOrder = context.sales.tempOrder;
|
|
709
710
|
const summary = (_ref14 = (_context$summary$summ2 = context.summary.summary) !== null && _context$summary$summ2 !== void 0 ? _context$summary$summ2 : tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.summary) !== null && _ref14 !== void 0 ? _ref14 : null;
|
|
710
711
|
const symbol = (tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.currency_symbol) || "$";
|
|
711
|
-
const payments = Array.isArray(tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.payments) ? tempOrder
|
|
712
|
+
const payments = Array.isArray(tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.payments) ? tempOrder.payments.filter(isAppliedPaymentRecord) : [];
|
|
712
713
|
const overviewItems = [
|
|
713
714
|
{
|
|
714
715
|
key: "total",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { _objectSpread2 } from "../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
|
|
2
2
|
import useEngineContext from "../../../../hooks/useEngineContext.js";
|
|
3
3
|
import { useCurrentSalesSdkDish } from "../../../salesSdk/hooks/useCurrentSalesSdkDish.js";
|
|
4
|
+
import "../../../salesSdk/index.js";
|
|
4
5
|
import { getInternalNotesByScheduleEvent } from "../../serve.js";
|
|
5
6
|
import { TEMPLATE_B_PAY_ACTIONS, TEMPLATE_B_SUMMARY_ACTIONS } from "../../components/DetailActions/configs/index.js";
|
|
6
7
|
import { DetailActions } from "../../components/DetailActions/index.js";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/plus/saleDetail/utils/paymentStatus.ts
|
|
2
|
+
const APPLIED_PAYMENT_STATUSES = new Set(["paid"]);
|
|
3
|
+
/**
|
|
4
|
+
* Payment detail amounts must describe money that was actually applied to the
|
|
5
|
+
* order. The persisted order-payment contract uses `paid` for applied money;
|
|
6
|
+
* SDK/session success states and order-level refund states are not equivalent.
|
|
7
|
+
*/
|
|
8
|
+
function isAppliedPaymentRecord(record) {
|
|
9
|
+
var _status;
|
|
10
|
+
if (!record || typeof record !== "object") return false;
|
|
11
|
+
const status = String((_status = record.status) !== null && _status !== void 0 ? _status : "").trim().toLowerCase();
|
|
12
|
+
return APPLIED_PAYMENT_STATUSES.has(status);
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { isAppliedPaymentRecord };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import "./hosts/createInstanceHostBridge.js";
|
|
2
|
+
import "./holderConfirm/createHolderConfirmBridge.js";
|
|
3
|
+
import "./giftSelect/createGiftSelectBridge.js";
|
|
4
|
+
import "./context/SalesSdkHostBridgesContext.js";
|
|
5
|
+
import "./utils/formatHolderOptions.js";
|
|
6
|
+
import "./utils/enrichCartLineHolderDisplay.js";
|
|
7
|
+
import "./context/SalesSdkHolderContext.js";
|
|
8
|
+
import "./utils/appendPromotionTags.js";
|
|
9
|
+
import "./context/SalesSdkUIHostsContext.js";
|
|
10
|
+
import "./utils/runAddProductFlow.js";
|
|
11
|
+
import "./components/showAddToCartToast.js";
|
|
12
|
+
import "./utils/resolveAddProductDebounceKey.js";
|
|
13
|
+
import "./utils/productSkuOptions.js";
|
|
14
|
+
import "./utils/identity.js";
|
|
15
|
+
import "./utils/resolveInCartQuantityForAddToast.js";
|
|
16
|
+
import "./utils/addProductWithFlowDebounced.js";
|
|
17
|
+
import "./utils/customerAuthGate.js";
|
|
18
|
+
import "./utils/bookingDate.js";
|
|
19
|
+
import "./utils/holderSubmitValidation.js";
|
|
20
|
+
import "./utils/removeOrderProducts.js";
|
|
21
|
+
import "./selectors.js";
|
|
22
|
+
import "./utils/enrich.js";
|
|
23
|
+
import "./giftSelect/createOpenGiftSelectHost.js";
|
|
24
|
+
import "./utils/ensureHoldersBeforeSubmit.js";
|
|
25
|
+
import "./hooks/useSalesSdk.js";
|
|
26
|
+
import "./bookingEditService/BookingEditServiceDrawer.js";
|
|
27
|
+
import "./hosts/BookingEditHostRenderer.js";
|
|
28
|
+
import "./hosts/CustomerAuthHostRenderer.js";
|
|
29
|
+
import "./hooks/useSalesSdkCart.js";
|
|
30
|
+
import "./hooks/useSalesSdkCustomer.js";
|
|
31
|
+
import "./normalProductDetail/NormalProductDetailHostRenderer.js";
|
|
32
|
+
import "./hosts/createOpenBookingEditHost.js";
|
|
33
|
+
import "./hosts/createOpenMultiDaySelectHost.js";
|
|
34
|
+
import "./hosts/createOpenHolderSelectHost.js";
|
|
35
|
+
import "./hosts/createOpenCustomerAuthHost.js";
|
|
36
|
+
import "./demo/hosts/legacyOpenProductDetail.js";
|
|
37
|
+
import "./hosts/createCompositeOpenProductDetailHost.js";
|
|
38
|
+
import "./normalProductDetail/createOpenNormalProductDetailHost.js";
|
|
39
|
+
import "./normalProductDetail/createOpenBookingSelectionFlowHost.js";
|
|
40
|
+
import "./giftSelect/GiftSelectModal.js";
|
|
41
|
+
import "./giftSelect/GiftSelectHostRenderer.js";
|
|
42
|
+
import "./allergy/AllergySelectionModal.js";
|
|
43
|
+
import "./context/SalesSdkProvider.js";
|
|
44
|
+
import "./context/SalesSdkDishContext.js";
|
|
45
|
+
import "./context/SalesSdkBookingContext.js";
|
|
46
|
+
import "./hooks/useSalesSdkSummary.js";
|
|
47
|
+
import "./hooks/useSalesSdkProducts.js";
|
|
48
|
+
import "./demo/index.js";
|
|
49
|
+
import "./hooks/useSalesSdkDish.js";
|
|
50
|
+
import "./hooks/useCurrentSalesSdkDish.js";
|
|
51
|
+
import "./hooks/useSyncOsModule.js";
|
|
52
|
+
export {};
|