@pisell/pisellos 0.0.568 → 0.0.569
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 +3 -2
- package/dist/model/strategy/adapter/walletPass/utils.js +7 -4
- package/dist/modules/BaseModule.d.ts +2 -2
- package/dist/modules/BaseModule.js +4 -4
- package/dist/modules/BookingContext/index.d.ts +48 -0
- package/dist/modules/BookingContext/index.js +566 -0
- package/dist/modules/BookingContext/types.d.ts +102 -0
- package/dist/modules/BookingContext/types.js +51 -0
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
- package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
- package/dist/modules/BookingContext/utils/flexible.js +56 -0
- package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
- package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
- package/dist/modules/BookingContext/utils/index.d.ts +11 -0
- package/dist/modules/BookingContext/utils/index.js +11 -0
- package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
- package/dist/modules/BookingContext/utils/noResource.js +77 -0
- package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
- package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
- package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
- package/dist/modules/BookingContext/utils/productExtend.js +339 -0
- package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
- package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
- package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
- package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
- package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
- package/dist/modules/BookingContext/utils/resources.js +486 -0
- package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
- package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
- package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
- package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
- package/dist/modules/Cart/utils/cartProduct.js +26 -5
- package/dist/modules/Cart/utils/changePrice.js +27 -20
- package/dist/modules/Customer/index.d.ts +20 -0
- package/dist/modules/Customer/index.js +172 -83
- package/dist/modules/Customer/types.d.ts +2 -0
- package/dist/modules/Discount/index.d.ts +2 -1
- package/dist/modules/Discount/index.js +37 -9
- package/dist/modules/Discount/types.d.ts +1 -0
- package/dist/modules/OpenData/index.d.ts +8 -0
- package/dist/modules/OpenData/index.js +36 -16
- package/dist/modules/Order/index.d.ts +448 -23
- package/dist/modules/Order/index.js +5417 -561
- package/dist/modules/Order/types.d.ts +693 -88
- package/dist/modules/Order/types.js +68 -1
- package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
- package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
- package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
- package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
- package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
- package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
- package/dist/modules/Order/utils.d.ts +167 -18
- package/dist/modules/Order/utils.js +960 -165
- package/dist/modules/Payment/index.d.ts +10 -9
- package/dist/modules/Payment/index.js +465 -703
- package/dist/modules/Payment/types.d.ts +40 -16
- package/dist/modules/Payment/utils.d.ts +1 -1
- package/dist/modules/Payment/utils.js +4 -3
- package/dist/modules/Payment/walletpass.js +44 -29
- package/dist/modules/Product/types.d.ts +29 -7
- package/dist/modules/ProductList/index.d.ts +17 -13
- package/dist/modules/ProductList/index.js +184 -74
- package/dist/modules/ProductList/types.d.ts +17 -0
- package/dist/modules/Quotation/index.d.ts +22 -2
- package/dist/modules/Quotation/index.js +108 -42
- package/dist/modules/Quotation/types.d.ts +19 -0
- package/dist/modules/ResourcePlanner/index.d.ts +24 -0
- package/dist/modules/ResourcePlanner/index.js +181 -0
- package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
- package/dist/modules/ResourcePlanner/planner.js +1069 -0
- package/dist/modules/ResourcePlanner/types.d.ts +227 -0
- package/dist/modules/ResourcePlanner/types.js +1 -0
- package/dist/modules/Rules/index.d.ts +8 -10
- package/dist/modules/Rules/index.js +221 -109
- package/dist/modules/Rules/types.d.ts +14 -3
- package/dist/modules/SalesSummary/index.d.ts +23 -26
- package/dist/modules/SalesSummary/index.js +152 -46
- package/dist/modules/SalesSummary/types.d.ts +9 -1
- package/dist/modules/SalesSummary/utils.d.ts +3 -22
- package/dist/modules/SalesSummary/utils.js +803 -163
- package/dist/modules/Schedule/getDateIsInSchedule.js +14 -7
- package/dist/modules/Schedule/index.d.ts +18 -5
- package/dist/modules/Schedule/index.js +78 -24
- package/dist/modules/Schedule/types.d.ts +2 -0
- package/dist/modules/Summary/index.js +4 -3
- package/dist/modules/SurchargeList/index.d.ts +18 -0
- package/dist/modules/SurchargeList/index.js +185 -0
- package/dist/modules/SurchargeList/types.d.ts +15 -0
- package/dist/modules/SurchargeList/types.js +1 -0
- package/dist/modules/index.d.ts +3 -0
- package/dist/modules/index.js +4 -1
- package/dist/plugins/app.d.ts +2 -0
- package/dist/plugins/request.d.ts +1 -0
- package/dist/server/index.d.ts +462 -8
- package/dist/server/index.js +6112 -656
- package/dist/server/modules/floor-plan/index.d.ts +39 -0
- package/dist/server/modules/floor-plan/index.js +595 -0
- package/dist/server/modules/floor-plan/types.d.ts +43 -0
- package/dist/server/modules/floor-plan/types.js +13 -0
- package/dist/server/modules/index.d.ts +7 -2
- package/dist/server/modules/index.js +6 -0
- package/dist/server/modules/order/index.d.ts +207 -14
- package/dist/server/modules/order/index.js +2326 -379
- package/dist/server/modules/order/types.d.ts +76 -5
- package/dist/server/modules/order/types.js +14 -1
- package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
- package/dist/server/modules/order/utils/filterBookings.js +118 -11
- package/dist/server/modules/order/utils/filterOrders.js +242 -14
- package/dist/server/modules/payment/index.d.ts +28 -0
- package/dist/server/modules/payment/index.js +305 -0
- package/dist/server/modules/payment/types.d.ts +9 -0
- package/dist/server/modules/payment/types.js +1 -0
- package/dist/server/modules/products/index.d.ts +105 -14
- package/dist/server/modules/products/index.js +1393 -516
- package/dist/server/modules/products/types.d.ts +34 -1
- package/dist/server/modules/products/types.js +4 -0
- package/dist/server/modules/quotation/index.d.ts +39 -0
- package/dist/server/modules/quotation/index.js +278 -66
- package/dist/server/modules/resource/index.d.ts +2 -3
- package/dist/server/modules/resource/index.js +108 -86
- package/dist/server/modules/schedule/index.d.ts +6 -4
- package/dist/server/modules/schedule/index.js +116 -85
- package/dist/server/test.json +713 -0
- package/dist/server/types.d.ts +2 -0
- package/dist/server/utils/product.js +2 -2
- package/dist/server/utils/small-ticket.d.ts +71 -0
- package/dist/server/utils/small-ticket.js +963 -0
- package/dist/solution/BaseSales/index.d.ts +378 -0
- package/dist/solution/BaseSales/index.js +4006 -0
- package/dist/solution/BaseSales/types.d.ts +394 -0
- package/dist/solution/BaseSales/types.js +40 -0
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
- package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
- package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
- package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
- package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
- package/dist/solution/BaseSales/utils.d.ts +40 -0
- package/dist/solution/BaseSales/utils.js +263 -0
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +394 -25
- package/dist/solution/BookingTicket/index.js +2506 -443
- package/dist/solution/BookingTicket/types.d.ts +191 -6
- package/dist/solution/BookingTicket/types.js +83 -10
- package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
- package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
- package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
- package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
- package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
- package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
- package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
- package/dist/solution/BookingTicket/utils/cartView.js +209 -0
- package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
- package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
- package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
- package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
- package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
- package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +41 -1
- package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
- package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
- package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +11 -3
- package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
- package/dist/solution/BookingTicket/utils/scan/index.js +20 -8
- package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
- package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
- package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
- package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
- package/dist/solution/Checkout/index.d.ts +1 -0
- package/dist/solution/Checkout/index.js +25 -34
- package/dist/solution/Checkout/utils/index.js +4 -4
- package/dist/solution/RegisterAndLogin/config.js +2 -10
- package/dist/solution/Sales/index.d.ts +50 -5
- package/dist/solution/Sales/index.js +484 -92
- package/dist/solution/Sales/types.d.ts +26 -2
- package/dist/solution/ScanOrder/index.d.ts +27 -21
- package/dist/solution/ScanOrder/index.js +499 -434
- package/dist/solution/ScanOrder/types.d.ts +33 -11
- package/dist/solution/ScanOrder/types.js +4 -5
- package/dist/solution/ScanOrder/utils.d.ts +4 -1
- package/dist/solution/ScanOrder/utils.js +109 -34
- package/dist/solution/ShopDiscount/index.js +4 -4
- package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
- package/dist/solution/UnifiedBookingSales/index.js +1871 -0
- package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
- package/dist/solution/UnifiedBookingSales/types.js +11 -0
- package/dist/solution/VenueBooking/index.d.ts +29 -20
- package/dist/solution/VenueBooking/index.js +301 -213
- package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
- package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
- package/dist/solution/index.d.ts +2 -0
- package/dist/solution/index.js +3 -1
- package/dist/types/index.d.ts +11 -1
- package/lib/model/strategy/adapter/promotion/evaluator.js +3 -2
- package/lib/model/strategy/adapter/walletPass/utils.js +6 -4
- package/lib/modules/BaseModule.d.ts +2 -2
- package/lib/modules/BaseModule.js +4 -4
- package/lib/modules/BookingContext/index.d.ts +48 -0
- package/lib/modules/BookingContext/index.js +390 -0
- package/lib/modules/BookingContext/types.d.ts +102 -0
- package/lib/modules/BookingContext/types.js +48 -0
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +286 -0
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +148 -0
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +242 -0
- package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
- package/lib/modules/BookingContext/utils/flexible.js +63 -0
- package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
- package/lib/modules/BookingContext/utils/formatResourceList.js +35 -0
- package/lib/modules/BookingContext/utils/index.d.ts +11 -0
- package/lib/modules/BookingContext/utils/index.js +126 -0
- package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
- package/lib/modules/BookingContext/utils/noResource.js +78 -0
- package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +29 -0
- package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
- package/lib/modules/BookingContext/utils/productExtend.js +330 -0
- package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
- package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
- package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
- package/lib/modules/BookingContext/utils/resourceSelection.js +24 -0
- package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
- package/lib/modules/BookingContext/utils/resources.js +419 -0
- package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
- package/lib/modules/BookingContext/utils/serviceTimes.js +161 -0
- package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
- package/lib/modules/BookingContext/utils/timeSlices.js +114 -0
- package/lib/modules/Cart/utils/cartProduct.js +27 -5
- package/lib/modules/Cart/utils/changePrice.js +20 -14
- package/lib/modules/Customer/index.d.ts +20 -0
- package/lib/modules/Customer/index.js +63 -10
- package/lib/modules/Customer/types.d.ts +2 -0
- package/lib/modules/Discount/index.d.ts +2 -1
- package/lib/modules/Discount/index.js +18 -2
- package/lib/modules/Discount/types.d.ts +1 -0
- package/lib/modules/OpenData/index.d.ts +8 -0
- package/lib/modules/OpenData/index.js +21 -3
- package/lib/modules/Order/index.d.ts +448 -23
- package/lib/modules/Order/index.js +3641 -308
- package/lib/modules/Order/types.d.ts +693 -88
- package/lib/modules/Order/types.js +55 -1
- package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
- package/lib/modules/Order/utils/bundleDiscountHydration.js +106 -0
- package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
- package/lib/modules/Order/utils/manualProductDiscount.js +207 -0
- package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
- package/lib/modules/Order/utils/orderCollectionIdentity.js +353 -0
- package/lib/modules/Order/utils.d.ts +167 -18
- package/lib/modules/Order/utils.js +974 -138
- package/lib/modules/Payment/index.d.ts +10 -9
- package/lib/modules/Payment/index.js +30 -124
- package/lib/modules/Payment/types.d.ts +40 -16
- package/lib/modules/Payment/utils.d.ts +1 -1
- package/lib/modules/Payment/utils.js +4 -3
- package/lib/modules/Payment/walletpass.js +16 -6
- package/lib/modules/Product/types.d.ts +29 -7
- package/lib/modules/ProductList/index.d.ts +17 -13
- package/lib/modules/ProductList/index.js +92 -51
- package/lib/modules/ProductList/types.d.ts +17 -0
- package/lib/modules/Quotation/index.d.ts +22 -2
- package/lib/modules/Quotation/index.js +76 -20
- package/lib/modules/Quotation/types.d.ts +19 -0
- package/lib/modules/ResourcePlanner/index.d.ts +24 -0
- package/lib/modules/ResourcePlanner/index.js +147 -0
- package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
- package/lib/modules/ResourcePlanner/planner.js +895 -0
- package/lib/modules/ResourcePlanner/types.d.ts +227 -0
- package/lib/modules/ResourcePlanner/types.js +5 -0
- package/lib/modules/Rules/index.d.ts +8 -10
- package/lib/modules/Rules/index.js +152 -60
- package/lib/modules/Rules/types.d.ts +14 -3
- package/lib/modules/SalesSummary/index.d.ts +23 -26
- package/lib/modules/SalesSummary/index.js +84 -16
- package/lib/modules/SalesSummary/types.d.ts +9 -1
- package/lib/modules/SalesSummary/utils.d.ts +3 -22
- package/lib/modules/SalesSummary/utils.js +616 -111
- package/lib/modules/Schedule/getDateIsInSchedule.js +14 -7
- package/lib/modules/Schedule/index.d.ts +18 -5
- package/lib/modules/Schedule/index.js +49 -14
- package/lib/modules/Schedule/types.d.ts +2 -0
- package/lib/modules/Summary/index.js +2 -2
- package/lib/modules/SurchargeList/index.d.ts +18 -0
- package/lib/modules/SurchargeList/index.js +95 -0
- package/lib/modules/SurchargeList/types.d.ts +15 -0
- package/lib/modules/SurchargeList/types.js +5 -0
- package/lib/modules/index.d.ts +3 -0
- package/lib/modules/index.js +33 -0
- package/lib/plugins/app.d.ts +2 -0
- package/lib/plugins/request.d.ts +1 -0
- package/lib/server/index.d.ts +462 -8
- package/lib/server/index.js +3901 -205
- package/lib/server/modules/floor-plan/index.d.ts +39 -0
- package/lib/server/modules/floor-plan/index.js +306 -0
- package/lib/server/modules/floor-plan/types.d.ts +43 -0
- package/lib/server/modules/floor-plan/types.js +19 -0
- package/lib/server/modules/index.d.ts +7 -2
- package/lib/server/modules/index.js +21 -0
- package/lib/server/modules/order/index.d.ts +207 -14
- package/lib/server/modules/order/index.js +1324 -141
- package/lib/server/modules/order/types.d.ts +76 -5
- package/lib/server/modules/order/types.js +11 -1
- package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
- package/lib/server/modules/order/utils/filterBookings.js +119 -11
- package/lib/server/modules/order/utils/filterOrders.js +238 -13
- package/lib/server/modules/payment/index.d.ts +28 -0
- package/lib/server/modules/payment/index.js +168 -0
- package/lib/server/modules/payment/types.d.ts +9 -0
- package/lib/server/modules/payment/types.js +5 -0
- package/lib/server/modules/products/index.d.ts +105 -14
- package/lib/server/modules/products/index.js +588 -97
- package/lib/server/modules/products/types.d.ts +34 -1
- package/lib/server/modules/products/types.js +3 -0
- package/lib/server/modules/quotation/index.d.ts +39 -0
- package/lib/server/modules/quotation/index.js +145 -1
- package/lib/server/modules/resource/index.d.ts +2 -3
- package/lib/server/modules/resource/index.js +71 -45
- package/lib/server/modules/schedule/index.d.ts +6 -4
- package/lib/server/modules/schedule/index.js +55 -44
- package/lib/server/test.json +713 -0
- package/lib/server/types.d.ts +2 -0
- package/lib/server/utils/product.js +2 -2
- package/lib/server/utils/small-ticket.d.ts +71 -0
- package/lib/server/utils/small-ticket.js +926 -0
- package/lib/solution/BaseSales/index.d.ts +378 -0
- package/lib/solution/BaseSales/index.js +2367 -0
- package/lib/solution/BaseSales/types.d.ts +394 -0
- package/lib/solution/BaseSales/types.js +47 -0
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
- package/lib/solution/BaseSales/utils/cartPromotion.js +1155 -0
- package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +140 -0
- package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
- package/lib/solution/BaseSales/utils/quotationPrice.js +231 -0
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +215 -0
- package/lib/solution/BaseSales/utils.d.ts +40 -0
- package/lib/solution/BaseSales/utils.js +259 -0
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +394 -25
- package/lib/solution/BookingTicket/index.js +1350 -76
- package/lib/solution/BookingTicket/types.d.ts +191 -6
- package/lib/solution/BookingTicket/types.js +71 -10
- package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
- package/lib/solution/BookingTicket/utils/addProductDecision.js +353 -0
- package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +94 -0
- package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
- package/lib/solution/BookingTicket/utils/bookingStatus.js +136 -0
- package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
- package/lib/solution/BookingTicket/utils/cartView.js +200 -0
- package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
- package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.js +35 -0
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +387 -0
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +220 -0
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +24 -3
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +64 -0
- package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +4 -2
- package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
- package/lib/solution/BookingTicket/utils/scan/index.js +14 -2
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +115 -0
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +83 -0
- package/lib/solution/Checkout/index.d.ts +1 -0
- package/lib/solution/Checkout/index.js +18 -19
- package/lib/solution/Checkout/utils/index.js +4 -4
- package/lib/solution/RegisterAndLogin/config.js +2 -10
- package/lib/solution/Sales/index.d.ts +50 -5
- package/lib/solution/Sales/index.js +296 -39
- package/lib/solution/Sales/types.d.ts +26 -2
- package/lib/solution/ScanOrder/index.d.ts +27 -21
- package/lib/solution/ScanOrder/index.js +144 -103
- package/lib/solution/ScanOrder/types.d.ts +33 -11
- package/lib/solution/ScanOrder/types.js +4 -5
- package/lib/solution/ScanOrder/utils.d.ts +4 -1
- package/lib/solution/ScanOrder/utils.js +98 -26
- package/lib/solution/ShopDiscount/index.js +3 -3
- package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
- package/lib/solution/UnifiedBookingSales/index.js +1050 -0
- package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
- package/lib/solution/UnifiedBookingSales/types.js +14 -0
- package/lib/solution/VenueBooking/index.d.ts +29 -20
- package/lib/solution/VenueBooking/index.js +169 -94
- package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
- package/lib/solution/VenueBooking/utils/slotMerge.js +9 -3
- package/lib/solution/index.d.ts +2 -0
- package/lib/solution/index.js +22 -0
- package/lib/types/index.d.ts +11 -1
- package/package.json +1 -1
- package/dist/solution/Checkout/appointmentDemo.json +0 -1
- package/lib/solution/Checkout/appointmentDemo.json +0 -1
|
@@ -18,6 +18,8 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
|
|
|
18
18
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
19
19
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
20
20
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
21
|
+
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
|
22
|
+
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
|
|
21
23
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
22
24
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
23
25
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
@@ -116,7 +118,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
116
118
|
// 非表单类型 holder 视为匹配
|
|
117
119
|
if (((_discount$holder = discount.holder) === null || _discount$holder === void 0 ? void 0 : _discount$holder.holder_type) !== 'form') return true;
|
|
118
120
|
// 主预约holder, 目前(20251124)默认只考虑单个holder的情况
|
|
119
|
-
|
|
121
|
+
// 旧版 holders[0].form_record_id 新版 holders[0]
|
|
122
|
+
var orderHolderId = Array.isArray(holders) && holders.length > 0 ? holders[0].form_record_id || holders[0] : undefined;
|
|
120
123
|
var productHolderId = Array.isArray(product.holder_id) ? product.holder_id[0] : product.holder_id;
|
|
121
124
|
// 商品不需要选holder,则不对比holder,直接返回true,
|
|
122
125
|
if (!product.isNeedHolder) return true;
|
|
@@ -169,8 +172,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
169
172
|
var result = this.calcDiscount({
|
|
170
173
|
discountList: mergedDiscountList,
|
|
171
174
|
productList: _toConsumableArray(productList),
|
|
172
|
-
holders: holders,
|
|
173
175
|
orderTotalAmount: orderTotalAmount,
|
|
176
|
+
holders: holders,
|
|
174
177
|
isFormSubject: isFormSubject
|
|
175
178
|
}, {
|
|
176
179
|
scan: true
|
|
@@ -223,6 +226,21 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
223
226
|
});
|
|
224
227
|
}
|
|
225
228
|
|
|
229
|
+
/** 剔除指定 type/tag 的折扣项,保留手动改价(type=product) / 券等 */
|
|
230
|
+
}, {
|
|
231
|
+
key: "excludeDiscountListByType",
|
|
232
|
+
value: function excludeDiscountListByType(discountList, type) {
|
|
233
|
+
return (discountList || []).filter(function (item) {
|
|
234
|
+
return item.type !== type && item.tag !== type;
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/** 手动改价场景:去掉 promotion,保留 type=product 等行内折扣 */
|
|
239
|
+
}, {
|
|
240
|
+
key: "resolveDiscountListForManualOverride",
|
|
241
|
+
value: function resolveDiscountListForManualOverride(discountList) {
|
|
242
|
+
return this.excludeDiscountListByType(discountList, 'promotion');
|
|
243
|
+
}
|
|
226
244
|
// 获取券不可用的原因
|
|
227
245
|
}, {
|
|
228
246
|
key: "getUnavailableReason",
|
|
@@ -299,12 +317,50 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
299
317
|
}, {
|
|
300
318
|
key: "calcDiscount",
|
|
301
319
|
value: function calcDiscount(_ref2, options) {
|
|
302
|
-
var
|
|
320
|
+
var _options$selectedList,
|
|
321
|
+
_this3 = this;
|
|
303
322
|
var discountList = _ref2.discountList,
|
|
304
323
|
productList = _ref2.productList,
|
|
305
324
|
holders = _ref2.holders,
|
|
306
325
|
isFormSubject = _ref2.isFormSubject,
|
|
307
326
|
orderTotalAmount = _ref2.orderTotalAmount;
|
|
327
|
+
var resolveIsFormSubject = function resolveIsFormSubject(product) {
|
|
328
|
+
return typeof isFormSubject === 'function' ? Boolean(isFormSubject(product)) : Boolean(isFormSubject);
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
// 识别出来是不是在编辑的界面里又新增了商品
|
|
332
|
+
// 这种情况下,如果有可用的优惠券,也会自动勾选上
|
|
333
|
+
var isEditModeAddNewProduct = productList.find(function (n) {
|
|
334
|
+
return n.booking_id;
|
|
335
|
+
}) && productList.find(function (n) {
|
|
336
|
+
return !n.booking_id;
|
|
337
|
+
});
|
|
338
|
+
var reapplyBookingDiscountProductUids = new Set(((options === null || options === void 0 ? void 0 : options.reapplyBookingDiscountProductUids) || []).filter(function (uid) {
|
|
339
|
+
return uid !== undefined && uid !== null && uid !== '';
|
|
340
|
+
}).map(String));
|
|
341
|
+
var getOriginProductUid = function getOriginProductUid(originProduct) {
|
|
342
|
+
var _originProduct$metada, _originProduct$metada2;
|
|
343
|
+
var uid = (_originProduct$metada = originProduct === null || originProduct === void 0 || (_originProduct$metada2 = originProduct.metadata) === null || _originProduct$metada2 === void 0 ? void 0 : _originProduct$metada2.unique_identification_number) !== null && _originProduct$metada !== void 0 ? _originProduct$metada : originProduct === null || originProduct === void 0 ? void 0 : originProduct.unique_identification_number;
|
|
344
|
+
if (uid === undefined || uid === null || uid === '') return undefined;
|
|
345
|
+
return String(uid);
|
|
346
|
+
};
|
|
347
|
+
var shouldReapplyBookingDiscount = function shouldReapplyBookingDiscount(originProduct, selectedDiscount) {
|
|
348
|
+
if (!selectedDiscount) return false;
|
|
349
|
+
var uid = getOriginProductUid(originProduct);
|
|
350
|
+
if (!uid || !reapplyBookingDiscountProductUids.has(uid)) return false;
|
|
351
|
+
var discountType = selectedDiscount.tag || selectedDiscount.type;
|
|
352
|
+
return selectedDiscount.isEditMode === true && selectedDiscount.isSelected === true && ['good_pass', 'discount_card', 'product_discount_card'].includes(discountType);
|
|
353
|
+
};
|
|
354
|
+
var resolveReapplyEditModeDiscountPercent = function resolveReapplyEditModeDiscountPercent(originProduct, selectedDiscount) {
|
|
355
|
+
var _discount2;
|
|
356
|
+
if (!shouldReapplyBookingDiscount(originProduct, selectedDiscount)) return undefined;
|
|
357
|
+
var discountType = (selectedDiscount === null || selectedDiscount === void 0 ? void 0 : selectedDiscount.tag) || (selectedDiscount === null || selectedDiscount === void 0 ? void 0 : selectedDiscount.type);
|
|
358
|
+
if (discountType !== 'discount_card' && discountType !== 'product_discount_card') {
|
|
359
|
+
return undefined;
|
|
360
|
+
}
|
|
361
|
+
var percent = Number((_discount2 = selectedDiscount.discount) === null || _discount2 === void 0 ? void 0 : _discount2.percent);
|
|
362
|
+
return Number.isFinite(percent) ? percent : undefined;
|
|
363
|
+
};
|
|
308
364
|
var editModeDiscount = [];
|
|
309
365
|
var addModeDiscount = [];
|
|
310
366
|
discountList.forEach(function (discount) {
|
|
@@ -333,11 +389,23 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
333
389
|
}
|
|
334
390
|
});
|
|
335
391
|
}
|
|
392
|
+
var hasDiscountInput = editModeDiscount.length > 0 || addModeDiscount.length > 0 || Boolean(options === null || options === void 0 ? void 0 : options.discountId) || Boolean(options === null || options === void 0 || (_options$selectedList = options.selectedList) === null || _options$selectedList === void 0 ? void 0 : _options$selectedList.length) || Boolean(options === null || options === void 0 ? void 0 : options.scan);
|
|
393
|
+
if (!hasDiscountInput) {
|
|
394
|
+
return {
|
|
395
|
+
discountList: discountList,
|
|
396
|
+
productList: productList
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
var canUseEditModeDiscountForReapply = function canUseEditModeDiscountForReapply(discount) {
|
|
400
|
+
var discountType = discount.tag || discount.type;
|
|
401
|
+
return reapplyBookingDiscountProductUids.size > 0 && discount.isEditMode === true && discount.isSelected === true && ['good_pass', 'discount_card', 'product_discount_card'].includes(discountType);
|
|
402
|
+
};
|
|
336
403
|
|
|
337
|
-
// 过滤掉手动取消false
|
|
338
|
-
|
|
404
|
+
// 过滤掉手动取消false的优惠券,但仅用于应用优惠逻辑。
|
|
405
|
+
// Change time 重报价需要把已选编辑态折扣卡重新放入候选,再由目标 uid 限定作用范围。
|
|
406
|
+
var filteredDiscountList = [].concat(_toConsumableArray(addModeDiscount.filter(function (discount) {
|
|
339
407
|
return !discount.isManualSelect;
|
|
340
|
-
});
|
|
408
|
+
})), _toConsumableArray(editModeDiscount.filter(canUseEditModeDiscountForReapply)));
|
|
341
409
|
|
|
342
410
|
// 🔥 扁平化商品列表:将 bundle 子商品展开为虚拟商品
|
|
343
411
|
var flattenProductsWithBundle = function flattenProductsWithBundle(productList) {
|
|
@@ -518,14 +586,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
518
586
|
// 🔥 扁平化商品列表(包含主商品和bundle子商品)
|
|
519
587
|
var flattenedList = flattenProductsWithBundle(productList);
|
|
520
588
|
|
|
521
|
-
// 识别出来是不是在编辑的界面里又新增了商品
|
|
522
|
-
// 这种情况下,如果有可用的优惠券,也会自动勾选上
|
|
523
|
-
var isEditModeAddNewProduct = flattenedList.find(function (n) {
|
|
524
|
-
return n.booking_id;
|
|
525
|
-
}) && flattenedList.find(function (n) {
|
|
526
|
-
return !n.booking_id;
|
|
527
|
-
});
|
|
528
|
-
|
|
529
589
|
// 对扁平化后的列表按价格降序排序(用于应用优惠券时优先选择高价商品)
|
|
530
590
|
var sortedFlattenedList = flattenedList.sort(function (a, b) {
|
|
531
591
|
var _ref3, _a$original_price, _ref4, _b$original_price;
|
|
@@ -784,6 +844,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
784
844
|
}
|
|
785
845
|
}
|
|
786
846
|
});
|
|
847
|
+
|
|
787
848
|
// 🔥 第三步:识别 order_level 折扣卡并预计算分摊(排除被其他专属折扣卡占用的商品)
|
|
788
849
|
sortedDiscountList.forEach(function (discount) {
|
|
789
850
|
if (!isOrderLevelFixedAmountDiscount(discount)) {
|
|
@@ -882,7 +943,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
882
943
|
// 拿到discount配置的holder信息 product信息 product.holder 加在 isLimitedProduct
|
|
883
944
|
var _tempVar = (flatItem === null || flatItem === void 0 ? void 0 : flatItem.type) === 'bundle' ? flatItem === null || flatItem === void 0 ? void 0 : flatItem.parentProduct : flatItem === null || flatItem === void 0 ? void 0 : flatItem.product;
|
|
884
945
|
var isHolderMatch = _this3.checkHolderMatch(discount, {
|
|
885
|
-
isNeedHolder:
|
|
946
|
+
isNeedHolder: resolveIsFormSubject(_tempVar) && !(_tempVar !== null && _tempVar !== void 0 && _tempVar.isNormalProduct),
|
|
886
947
|
holder_id: (_tempVar === null || _tempVar === void 0 ? void 0 : _tempVar.holder_id) || product.holder_id
|
|
887
948
|
}, holders);
|
|
888
949
|
var timeLimit = true;
|
|
@@ -925,7 +986,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
925
986
|
title: discount.format_title,
|
|
926
987
|
original_amount: product.price || product.origin_total,
|
|
927
988
|
pre_value: discount.par_value,
|
|
928
|
-
product_id: originProduct.id,
|
|
989
|
+
product_id: originProduct.id || originProduct.product_id,
|
|
929
990
|
discount_product_id: discount.product_id
|
|
930
991
|
},
|
|
931
992
|
metadata: {
|
|
@@ -1000,7 +1061,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1000
1061
|
// 然后再处理应用哪些优惠券,此时只考虑filteredDiscountList中的优惠券
|
|
1001
1062
|
// 🔥 使用扁平化后的列表进行处理
|
|
1002
1063
|
sortedFlattenedList.forEach(function (flatItem, index) {
|
|
1003
|
-
var _product10, _product$discount_lis2, _product11, _selectedDiscount$con;
|
|
1064
|
+
var _product10, _originProduct, _originProduct2, _originProduct3, _product$discount_lis2, _product11, _selectedDiscount$con;
|
|
1004
1065
|
// 获取商品数据
|
|
1005
1066
|
var product, originProduct;
|
|
1006
1067
|
if (flatItem.type === 'main') {
|
|
@@ -1024,11 +1085,16 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1024
1085
|
};
|
|
1025
1086
|
originProduct = flatItem.originProduct;
|
|
1026
1087
|
}
|
|
1088
|
+
var isPersistedProduct = ((_product10 = product) === null || _product10 === void 0 ? void 0 : _product10.booking_id) || ((_originProduct = originProduct) === null || _originProduct === void 0 ? void 0 : _originProduct.order_detail_id) || ((_originProduct2 = originProduct) === null || _originProduct2 === void 0 ? void 0 : _originProduct2.orderDetailId) || ((_originProduct3 = originProduct) === null || _originProduct3 === void 0 ? void 0 : _originProduct3.booking_id);
|
|
1089
|
+
var hasExistingWalletDiscount = ((_product$discount_lis2 = product.discount_list) === null || _product$discount_lis2 === void 0 ? void 0 : _product$discount_lis2.length) && ((_product11 = product) === null || _product11 === void 0 || (_product11 = _product11.discount_list) === null || _product11 === void 0 ? void 0 : _product11.every(function (discount) {
|
|
1090
|
+
var _discount$id, _discount$discount4;
|
|
1091
|
+
var discountIdentity = (_discount$id = discount.id) !== null && _discount$id !== void 0 ? _discount$id : (_discount$discount4 = discount.discount) === null || _discount$discount4 === void 0 ? void 0 : _discount$discount4.resource_id;
|
|
1092
|
+
var discountType = discount.tag || discount.type;
|
|
1093
|
+
return Boolean(discountIdentity && ['good_pass', 'discount_card', 'product_discount_card'].includes(discountType));
|
|
1094
|
+
}));
|
|
1027
1095
|
|
|
1028
|
-
//
|
|
1029
|
-
if (
|
|
1030
|
-
return discount.id && ['good_pass', 'discount_card', 'product_discount_card'].includes(discount.tag || discount.type);
|
|
1031
|
-
})) {
|
|
1096
|
+
// 已持久化且已有钱包券/折扣卡的商品行跳过,保留后端历史折扣结果。
|
|
1097
|
+
if (isPersistedProduct && hasExistingWalletDiscount) {
|
|
1032
1098
|
if (flatItem.type === 'main') {
|
|
1033
1099
|
processedProductsMap.set(product._id, [originProduct]);
|
|
1034
1100
|
} else {
|
|
@@ -1044,7 +1110,14 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1044
1110
|
var _product$discount_lis3, _product$discount_lis4;
|
|
1045
1111
|
// 🔥 检查策略可用性(针对 good_pass 和折扣卡)
|
|
1046
1112
|
var discountType = discount.tag || discount.type;
|
|
1047
|
-
|
|
1113
|
+
var currentOriginUid = getOriginProductUid(originProduct);
|
|
1114
|
+
var isReapplyEditModeDiscountForProduct = discount.isEditMode && reapplyBookingDiscountProductUids.size > 0 && currentOriginUid && reapplyBookingDiscountProductUids.has(String(currentOriginUid)) && discount.isSelected === true;
|
|
1115
|
+
if (discount.isEditMode && reapplyBookingDiscountProductUids.size > 0) {
|
|
1116
|
+
var uid = currentOriginUid;
|
|
1117
|
+
if (!uid || !reapplyBookingDiscountProductUids.has(uid)) return false;
|
|
1118
|
+
if (!discount.isSelected) return false;
|
|
1119
|
+
}
|
|
1120
|
+
if (['good_pass', 'discount_card', 'product_discount_card'].includes(discountType) && !isReapplyEditModeDiscountForProduct) {
|
|
1048
1121
|
var _discount$config2;
|
|
1049
1122
|
// 如果策略检查后没有config,说明不可用
|
|
1050
1123
|
if (discount.config === undefined || !(discount !== null && discount !== void 0 && (_discount$config2 = discount.config) !== null && _discount$config2 !== void 0 && _discount$config2.isAvailable)) {
|
|
@@ -1094,7 +1167,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1094
1167
|
// 拿到discount配置的holder信息 product信息 product.holder 不可用return false
|
|
1095
1168
|
var _tempVar = (flatItem === null || flatItem === void 0 ? void 0 : flatItem.type) === 'bundle' ? flatItem === null || flatItem === void 0 ? void 0 : flatItem.parentProduct : flatItem === null || flatItem === void 0 ? void 0 : flatItem.product;
|
|
1096
1169
|
var isHolderMatch = _this3.checkHolderMatch(discount, {
|
|
1097
|
-
isNeedHolder:
|
|
1170
|
+
isNeedHolder: resolveIsFormSubject(_tempVar) && !(_tempVar !== null && _tempVar !== void 0 && _tempVar.isNormalProduct),
|
|
1098
1171
|
holder_id: (_tempVar === null || _tempVar === void 0 ? void 0 : _tempVar.holder_id) || product.holder_id
|
|
1099
1172
|
}, holders);
|
|
1100
1173
|
// 如果 holder 不匹配,则不适用
|
|
@@ -1137,12 +1210,14 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1137
1210
|
// 如果是手动折扣,则不适用优惠券
|
|
1138
1211
|
var isManualDiscount = false;
|
|
1139
1212
|
if (flatItem.type === 'main') {
|
|
1140
|
-
var _product$discount_lis5, _product12, _product12$every;
|
|
1213
|
+
var _product$discount_lis5, _product$discount_lis6, _product12, _product12$every;
|
|
1141
1214
|
// 主商品:判断自身是否手动折扣
|
|
1142
|
-
isManualDiscount = typeof product.isManualDiscount === 'boolean' ? product.isManualDiscount :
|
|
1215
|
+
isManualDiscount = typeof product.isManualDiscount === 'boolean' ? product.isManualDiscount : ((_product$discount_lis5 = product.discount_list) === null || _product$discount_lis5 === void 0 ? void 0 : _product$discount_lis5.some(function (item) {
|
|
1216
|
+
return item.type === 'product';
|
|
1217
|
+
})) || product.total != product.origin_total && (product.bundle || []).every(function (item) {
|
|
1143
1218
|
var _ref11;
|
|
1144
1219
|
return !((_ref11 = item.discount_list || []) !== null && _ref11 !== void 0 && _ref11.length);
|
|
1145
|
-
}) && (!((_product$
|
|
1220
|
+
}) && (!((_product$discount_lis6 = product.discount_list) !== null && _product$discount_lis6 !== void 0 && _product$discount_lis6.length) || ((_product12 = product) === null || _product12 === void 0 || (_product12 = _product12.discount_list) === null || _product12 === void 0 || (_product12$every = _product12.every) === null || _product12$every === void 0 ? void 0 : _product12$every.call(_product12, function (item) {
|
|
1146
1221
|
return item.type === 'product';
|
|
1147
1222
|
})));
|
|
1148
1223
|
if (product.inPromotion) {
|
|
@@ -1152,11 +1227,13 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1152
1227
|
// bundle子商品:判断父主商品是否手动折扣
|
|
1153
1228
|
var parentProduct = flatItem.parentProduct;
|
|
1154
1229
|
if (parentProduct) {
|
|
1155
|
-
var _parentProduct$discou, _parentProduct$discou2, _parentProduct$discou3;
|
|
1156
|
-
isManualDiscount = typeof parentProduct.isManualDiscount === 'boolean' ? parentProduct.isManualDiscount :
|
|
1230
|
+
var _parentProduct$discou, _parentProduct$discou2, _parentProduct$discou3, _parentProduct$discou4;
|
|
1231
|
+
isManualDiscount = typeof parentProduct.isManualDiscount === 'boolean' ? parentProduct.isManualDiscount : ((_parentProduct$discou = parentProduct.discount_list) === null || _parentProduct$discou === void 0 ? void 0 : _parentProduct$discou.some(function (item) {
|
|
1232
|
+
return item.type === 'product';
|
|
1233
|
+
})) || parentProduct.total != parentProduct.origin_total && (parentProduct.bundle || []).every(function (item) {
|
|
1157
1234
|
var _ref12;
|
|
1158
1235
|
return !((_ref12 = item.discount_list || []) !== null && _ref12 !== void 0 && _ref12.length);
|
|
1159
|
-
}) && (!((_parentProduct$
|
|
1236
|
+
}) && (!((_parentProduct$discou2 = parentProduct.discount_list) !== null && _parentProduct$discou2 !== void 0 && _parentProduct$discou2.length) || (parentProduct === null || parentProduct === void 0 || (_parentProduct$discou3 = parentProduct.discount_list) === null || _parentProduct$discou3 === void 0 || (_parentProduct$discou4 = _parentProduct$discou3.every) === null || _parentProduct$discou4 === void 0 ? void 0 : _parentProduct$discou4.call(_parentProduct$discou3, function (item) {
|
|
1160
1237
|
return item.type === 'product';
|
|
1161
1238
|
})));
|
|
1162
1239
|
}
|
|
@@ -1164,9 +1241,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1164
1241
|
|
|
1165
1242
|
// 勾选时覆盖手动折扣
|
|
1166
1243
|
if (options !== null && options !== void 0 && options.discountId) {
|
|
1167
|
-
var _product$
|
|
1244
|
+
var _product$discount_lis7;
|
|
1168
1245
|
// 主商品:检查自己的 discount_list
|
|
1169
|
-
if (flatItem.type === 'main' && (_product$
|
|
1246
|
+
if (flatItem.type === 'main' && (_product$discount_lis7 = product.discount_list) !== null && _product$discount_lis7 !== void 0 && _product$discount_lis7.some(function (item) {
|
|
1170
1247
|
var _item$discount;
|
|
1171
1248
|
return ((_item$discount = item.discount) === null || _item$discount === void 0 ? void 0 : _item$discount.resource_id) === options.discountId;
|
|
1172
1249
|
})) {
|
|
@@ -1174,8 +1251,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1174
1251
|
}
|
|
1175
1252
|
// bundle子商品:检查自己的 discount_list 或父主商品的 discount_list
|
|
1176
1253
|
if (flatItem.type === 'bundle') {
|
|
1177
|
-
var _product$
|
|
1178
|
-
if ((_product$
|
|
1254
|
+
var _product$discount_lis8, _flatItem$parentProdu7;
|
|
1255
|
+
if ((_product$discount_lis8 = product.discount_list) !== null && _product$discount_lis8 !== void 0 && _product$discount_lis8.some(function (item) {
|
|
1179
1256
|
var _item$discount2;
|
|
1180
1257
|
return ((_item$discount2 = item.discount) === null || _item$discount2 === void 0 ? void 0 : _item$discount2.resource_id) === options.discountId;
|
|
1181
1258
|
}) || (_flatItem$parentProdu7 = flatItem.parentProduct) !== null && _flatItem$parentProdu7 !== void 0 && (_flatItem$parentProdu7 = _flatItem$parentProdu7.discount_list) !== null && _flatItem$parentProdu7 !== void 0 && _flatItem$parentProdu7.some(function (item) {
|
|
@@ -1187,11 +1264,11 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1187
1264
|
}
|
|
1188
1265
|
}
|
|
1189
1266
|
if (options !== null && options !== void 0 && options.selectedList) {
|
|
1190
|
-
var _product$
|
|
1267
|
+
var _product$discount_lis9;
|
|
1191
1268
|
// 主商品:检查自己的 discount_list
|
|
1192
|
-
if (flatItem.type === 'main' && (_product$
|
|
1193
|
-
var _options$
|
|
1194
|
-
return options === null || options === void 0 || (_options$
|
|
1269
|
+
if (flatItem.type === 'main' && (_product$discount_lis9 = product.discount_list) !== null && _product$discount_lis9 !== void 0 && _product$discount_lis9.some(function (item) {
|
|
1270
|
+
var _options$selectedList2;
|
|
1271
|
+
return options === null || options === void 0 || (_options$selectedList2 = options.selectedList) === null || _options$selectedList2 === void 0 ? void 0 : _options$selectedList2.some(function (n) {
|
|
1195
1272
|
var _item$discount4;
|
|
1196
1273
|
return n.discountId === ((_item$discount4 = item.discount) === null || _item$discount4 === void 0 ? void 0 : _item$discount4.resource_id);
|
|
1197
1274
|
});
|
|
@@ -1200,16 +1277,16 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1200
1277
|
}
|
|
1201
1278
|
// bundle子商品:检查自己的 discount_list 或父主商品的 discount_list
|
|
1202
1279
|
if (flatItem.type === 'bundle') {
|
|
1203
|
-
var _product$
|
|
1204
|
-
if ((_product$
|
|
1205
|
-
var _options$
|
|
1206
|
-
return options === null || options === void 0 || (_options$
|
|
1280
|
+
var _product$discount_lis10, _flatItem$parentProdu8;
|
|
1281
|
+
if ((_product$discount_lis10 = product.discount_list) !== null && _product$discount_lis10 !== void 0 && _product$discount_lis10.some(function (item) {
|
|
1282
|
+
var _options$selectedList3;
|
|
1283
|
+
return options === null || options === void 0 || (_options$selectedList3 = options.selectedList) === null || _options$selectedList3 === void 0 ? void 0 : _options$selectedList3.some(function (n) {
|
|
1207
1284
|
var _item$discount5;
|
|
1208
1285
|
return n.discountId === ((_item$discount5 = item.discount) === null || _item$discount5 === void 0 ? void 0 : _item$discount5.resource_id);
|
|
1209
1286
|
});
|
|
1210
1287
|
}) || (_flatItem$parentProdu8 = flatItem.parentProduct) !== null && _flatItem$parentProdu8 !== void 0 && (_flatItem$parentProdu8 = _flatItem$parentProdu8.discount_list) !== null && _flatItem$parentProdu8 !== void 0 && _flatItem$parentProdu8.some(function (item) {
|
|
1211
|
-
var _options$
|
|
1212
|
-
return options === null || options === void 0 || (_options$
|
|
1288
|
+
var _options$selectedList4;
|
|
1289
|
+
return options === null || options === void 0 || (_options$selectedList4 = options.selectedList) === null || _options$selectedList4 === void 0 ? void 0 : _options$selectedList4.some(function (n) {
|
|
1213
1290
|
var _item$discount6;
|
|
1214
1291
|
return n.discountId === ((_item$discount6 = item.discount) === null || _item$discount6 === void 0 ? void 0 : _item$discount6.resource_id);
|
|
1215
1292
|
});
|
|
@@ -1245,7 +1322,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1245
1322
|
price: product.price,
|
|
1246
1323
|
options: restoredOptions
|
|
1247
1324
|
}), {}, {
|
|
1248
|
-
discount_list: _this3.filterDiscountListByType(product.discount_list, 'promotion')
|
|
1325
|
+
discount_list: isManualDiscount ? _this3.resolveDiscountListForManualOverride(product.discount_list) : _this3.filterDiscountListByType(product.discount_list, 'promotion')
|
|
1249
1326
|
}))]);
|
|
1250
1327
|
} else {
|
|
1251
1328
|
var _ref13, _product$_promotion$f, _product13, _product$origin_total, _product$price2;
|
|
@@ -1263,26 +1340,26 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1263
1340
|
} : {
|
|
1264
1341
|
_id: product._id.split('___')[0] + '___' + index,
|
|
1265
1342
|
total: total,
|
|
1266
|
-
original_price: product.original_price,
|
|
1267
1343
|
price: product.price,
|
|
1268
1344
|
main_product_selling_price: main_product_selling_price,
|
|
1269
1345
|
options: restoredOptions
|
|
1270
1346
|
}), {}, {
|
|
1271
|
-
discount_list: _this3.filterDiscountListByType(product.discount_list, 'promotion')
|
|
1347
|
+
discount_list: isManualDiscount ? _this3.resolveDiscountListForManualOverride(product.discount_list) : _this3.filterDiscountListByType(product.discount_list, 'promotion')
|
|
1272
1348
|
}))]);
|
|
1273
1349
|
}
|
|
1274
1350
|
} else {
|
|
1275
|
-
var _flatItem$bundleItem8;
|
|
1351
|
+
var _flatItem$bundleItem8, _flatItem$bundleItem9;
|
|
1276
1352
|
// bundle子商品:保存到扁平化Map
|
|
1277
1353
|
processedFlatItemsMap.set(flatItem._id, [_objectSpread(_objectSpread({}, flatItem), {}, {
|
|
1278
|
-
discount_list: _this3.
|
|
1354
|
+
discount_list: isManualDiscount ? _this3.resolveDiscountListForManualOverride(((_flatItem$bundleItem8 = flatItem.bundleItem) === null || _flatItem$bundleItem8 === void 0 ? void 0 : _flatItem$bundleItem8.discount_list) || []) : _this3.filterDiscountListByType(((_flatItem$bundleItem9 = flatItem.bundleItem) === null || _flatItem$bundleItem9 === void 0 ? void 0 : _flatItem$bundleItem9.discount_list) || [], 'promotion'),
|
|
1279
1355
|
price: isManualDiscount ? flatItem.bundleItem.price : flatItem.bundleItem.original_price,
|
|
1280
1356
|
processed: true
|
|
1281
1357
|
})]);
|
|
1282
1358
|
}
|
|
1283
1359
|
return;
|
|
1284
1360
|
}
|
|
1285
|
-
|
|
1361
|
+
var shouldReapplyBookingDiscountForProduct = shouldReapplyBookingDiscount(originProduct, selectedDiscount);
|
|
1362
|
+
if (applicableDiscounts.length && product.booking_id && typeof selectedDiscount.isManualSelect === 'undefined' && !(options !== null && options !== void 0 && options.scan) && !isEditModeAddNewProduct && !shouldReapplyBookingDiscountForProduct) {
|
|
1286
1363
|
return;
|
|
1287
1364
|
}
|
|
1288
1365
|
|
|
@@ -1341,7 +1418,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1341
1418
|
}));
|
|
1342
1419
|
}
|
|
1343
1420
|
for (var i = 0; i < splitCount; i++) {
|
|
1344
|
-
var
|
|
1421
|
+
var _originProduct4, _selectedDiscount$con2, _product$options, _product$options2, _selectedDiscount$met, _selectedDiscount$met2, _reapplyDiscountPerce;
|
|
1345
1422
|
// 商品券:每个拆分商品使用不同的商品券(从 applicableDiscounts 按索引取)
|
|
1346
1423
|
// 折扣卡:所有拆分商品使用同一张折扣卡(selectedDiscountCard 或 applicableDiscounts[0])
|
|
1347
1424
|
var currentSelectedDiscount = isGoodPass ? selectedDiscountCard || applicableDiscounts[i] : selectedDiscountCard || applicableDiscounts[0];
|
|
@@ -1369,7 +1446,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1369
1446
|
productOriginTotal = product.origin_total;
|
|
1370
1447
|
}
|
|
1371
1448
|
// 如果originProduct?._productInit?.original_price为 0,product.origin_total可能为空,此时取 product.total
|
|
1372
|
-
if (Number(((
|
|
1449
|
+
if (Number(((_originProduct4 = originProduct) === null || _originProduct4 === void 0 || (_originProduct4 = _originProduct4._productInit) === null || _originProduct4 === void 0 ? void 0 : _originProduct4.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
|
|
1373
1450
|
productOriginTotal = product.total;
|
|
1374
1451
|
}
|
|
1375
1452
|
|
|
@@ -1386,18 +1463,25 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1386
1463
|
var productDiscountDifference = void 0;
|
|
1387
1464
|
var discountedOptions = product.options;
|
|
1388
1465
|
var optionDiscountAmount = 0;
|
|
1466
|
+
var reapplyDiscountPercent = void 0;
|
|
1389
1467
|
if (isOrderLevel && productAllocation) {
|
|
1390
1468
|
// order_level:使用预计算的分摊金额
|
|
1391
1469
|
amount = productAllocation.discountAmount;
|
|
1392
1470
|
productDiscountDifference = productAllocation.difference;
|
|
1393
1471
|
mainProductSellingPrice = Math.max(new Decimal(product.price).minus(amount).toNumber(), 0);
|
|
1472
|
+
} else if (resolveReapplyEditModeDiscountPercent(originProduct, selectedDiscount) !== undefined) {
|
|
1473
|
+
// Change time 重套编辑态折扣卡时,历史 par_value 不是运行时折扣口径,优先使用后端快照里的 percent。
|
|
1474
|
+
var percent = resolveReapplyEditModeDiscountPercent(originProduct, selectedDiscount);
|
|
1475
|
+
reapplyDiscountPercent = new Decimal(percent).toFixed(2);
|
|
1476
|
+
mainProductSellingPrice = new Decimal(product.price || 0).mul(new Decimal(100).minus(percent)).div(100).toDecimalPlaces(2).toNumber();
|
|
1477
|
+
amount = new Decimal(product.price).minus(mainProductSellingPrice).toNumber();
|
|
1394
1478
|
} else {
|
|
1395
1479
|
// item_level 或其他类型:使用原有逻辑
|
|
1396
|
-
mainProductSellingPrice = getDiscountAmount(
|
|
1480
|
+
mainProductSellingPrice = getDiscountAmount(selectedDiscount, product.price, product.price);
|
|
1397
1481
|
amount = new Decimal(product.price).minus(new Decimal(mainProductSellingPrice)).toNumber();
|
|
1398
1482
|
}
|
|
1399
1483
|
if (isDeductOptionPrice && (_product$options = product.options) !== null && _product$options !== void 0 && _product$options.length) {
|
|
1400
|
-
var optionResult = applyDiscountToOptions(product.options,
|
|
1484
|
+
var optionResult = applyDiscountToOptions(product.options, selectedDiscount);
|
|
1401
1485
|
discountedOptions = optionResult.discountedOptions;
|
|
1402
1486
|
optionDiscountAmount = optionResult.optionDiscountAmount;
|
|
1403
1487
|
}
|
|
@@ -1410,9 +1494,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1410
1494
|
// discount_list.amount / fixed_amount:行级总优惠 = 主商品优惠 + option 优惠(与 total 变化一致)
|
|
1411
1495
|
var mainProductDiscountAmount = amount;
|
|
1412
1496
|
var lineDiscountAmount = new Decimal(mainProductDiscountAmount).plus(optionDiscountAmount).toNumber();
|
|
1413
|
-
var currentDiscountType = currentSelectedDiscount.tag === 'product_discount_card' ? 'discount_card' : currentSelectedDiscount.tag;
|
|
1414
1497
|
var _discountType = selectedDiscount.tag || selectedDiscount.type;
|
|
1415
|
-
var currentIsGoodPass =
|
|
1498
|
+
var currentIsGoodPass = _discountType === 'good_pass';
|
|
1416
1499
|
var discountDetail = {
|
|
1417
1500
|
amount: lineDiscountAmount,
|
|
1418
1501
|
type: selectedDiscount.tag === 'product_discount_card' ? 'discount_card' : _discountType,
|
|
@@ -1423,9 +1506,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1423
1506
|
resource_id: selectedDiscount.id,
|
|
1424
1507
|
title: selectedDiscount.format_title,
|
|
1425
1508
|
original_amount: product.price,
|
|
1426
|
-
product_id: originProduct.id,
|
|
1427
|
-
percent:
|
|
1428
|
-
discount_product_id:
|
|
1509
|
+
product_id: originProduct.id || originProduct.product_id,
|
|
1510
|
+
percent: (_reapplyDiscountPerce = reapplyDiscountPercent) !== null && _reapplyDiscountPerce !== void 0 ? _reapplyDiscountPerce : selectedDiscount.par_value,
|
|
1511
|
+
discount_product_id: selectedDiscount.product_id
|
|
1429
1512
|
},
|
|
1430
1513
|
// 前端使用的num数量,为了计算优惠金额(拆分时为1)
|
|
1431
1514
|
_num: isNeedSplit ? 1 : product.num,
|
|
@@ -1442,7 +1525,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1442
1525
|
})
|
|
1443
1526
|
};
|
|
1444
1527
|
appliedProducts.push(discountDetail);
|
|
1445
|
-
appliedDiscountProducts.set(
|
|
1528
|
+
appliedDiscountProducts.set(selectedDiscount.id, appliedProducts);
|
|
1446
1529
|
|
|
1447
1530
|
// 记录应用了优惠券的商品
|
|
1448
1531
|
// 后续更新价格改为 getProductTotalPrice getProductOriginTotalPrice逻辑
|
|
@@ -1450,7 +1533,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1450
1533
|
arr.push(_this3.hooks.setProduct(originProduct, {
|
|
1451
1534
|
discount_list: [discountDetail],
|
|
1452
1535
|
// good_pass:主商品价以折后价为准;勿用 product.price - amount(amount 含 option 优惠时会算错)
|
|
1453
|
-
price:
|
|
1536
|
+
price: isGoodPass ? mainProductSellingPrice : product.price,
|
|
1454
1537
|
quantity: isNeedSplit ? 1 : product.quantity,
|
|
1455
1538
|
origin_total: getProductOriginTotalPrice({
|
|
1456
1539
|
product: {
|
|
@@ -1511,6 +1594,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1511
1594
|
// 计算折扣后的价格(使用 getDiscountAmount,内部已处理 maxDeductionAmount)
|
|
1512
1595
|
var discountedPrice = getDiscountAmount(currentBundleDiscount, product.origin_total, product.origin_total);
|
|
1513
1596
|
var bundleDiscountAmount = new Decimal(product.origin_total || 0).minus(discountedPrice).toNumber();
|
|
1597
|
+
debugger;
|
|
1514
1598
|
|
|
1515
1599
|
// 确定折扣类型
|
|
1516
1600
|
var bundleDiscountType = currentBundleDiscount.tag === 'product_discount_card' ? 'discount_card' : currentBundleDiscount.tag;
|
|
@@ -1524,9 +1608,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1524
1608
|
resource_id: currentBundleDiscount.id,
|
|
1525
1609
|
title: currentBundleDiscount.format_title,
|
|
1526
1610
|
original_amount: product.origin_total,
|
|
1527
|
-
product_id: product.id,
|
|
1528
|
-
|
|
1529
|
-
discount_product_id: currentBundleDiscount.product_id
|
|
1611
|
+
product_id: product.id || product.product_id,
|
|
1612
|
+
discount_product_id: selectedDiscount.product_id
|
|
1530
1613
|
},
|
|
1531
1614
|
metadata: {
|
|
1532
1615
|
// 🔥 使用拆分后的唯一 _id
|
|
@@ -1563,7 +1646,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1563
1646
|
var _nextSelectedDiscount;
|
|
1564
1647
|
// 重新查找适用于剩余商品的可用折扣(已使用的会被自动过滤掉)
|
|
1565
1648
|
var nextApplicableDiscounts = sortedDiscountList.filter(function (nextDiscount) {
|
|
1566
|
-
var _product$
|
|
1649
|
+
var _product$discount_lis11;
|
|
1567
1650
|
var nextDiscountType = nextDiscount.tag || nextDiscount.type;
|
|
1568
1651
|
// 检查策略可用性
|
|
1569
1652
|
if (['good_pass', 'discount_card', 'product_discount_card'].includes(nextDiscountType)) {
|
|
@@ -1573,7 +1656,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1573
1656
|
}
|
|
1574
1657
|
}
|
|
1575
1658
|
// 折扣卡时总价为0时不可用
|
|
1576
|
-
if ((Number(product.total) <= 0 || !product.total) && !((_product$
|
|
1659
|
+
if ((Number(product.total) <= 0 || !product.total) && !((_product$discount_lis11 = product.discount_list) !== null && _product$discount_lis11 !== void 0 && _product$discount_lis11.find(function (n) {
|
|
1577
1660
|
var _n$discount2;
|
|
1578
1661
|
return ((_n$discount2 = n.discount) === null || _n$discount2 === void 0 ? void 0 : _n$discount2.resource_id) === nextDiscount.id;
|
|
1579
1662
|
})) && nextDiscountType !== 'good_pass') return false;
|
|
@@ -1829,6 +1912,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1829
1912
|
|
|
1830
1913
|
// 🔥 使用当前的 _id 作为唯一标识
|
|
1831
1914
|
var _uniqueId = flatItem._id;
|
|
1915
|
+
debugger;
|
|
1832
1916
|
var _discountDetail2 = {
|
|
1833
1917
|
amount: bundleActualDiscountAmount * (product.num || 1),
|
|
1834
1918
|
type: _currentBundleDiscount.tag === 'product_discount_card' ? 'discount_card' : _currentBundleDiscount.tag,
|
|
@@ -1839,9 +1923,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1839
1923
|
resource_id: _currentBundleDiscount.id,
|
|
1840
1924
|
title: _currentBundleDiscount.format_title,
|
|
1841
1925
|
original_amount: product.original_price,
|
|
1842
|
-
product_id: product.id,
|
|
1843
|
-
percent:
|
|
1844
|
-
discount_product_id:
|
|
1926
|
+
product_id: product.id || product.product_id,
|
|
1927
|
+
percent: selectedDiscount.par_value,
|
|
1928
|
+
discount_product_id: selectedDiscount.product_id
|
|
1845
1929
|
},
|
|
1846
1930
|
metadata: _objectSpread({
|
|
1847
1931
|
// 🔥 使用唯一的 _id
|
|
@@ -2158,7 +2242,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2158
2242
|
} else {
|
|
2159
2243
|
// 🔥 没有子商品被拆分,使用原有逻辑
|
|
2160
2244
|
mainProductArr.forEach(function (mainProduct) {
|
|
2161
|
-
var _mainProductData$disc, _mainProductData$disc2, _mainProductData$disc3;
|
|
2245
|
+
var _ref15, _mainProductData$main, _mainProductData$disc, _mainProductData$disc2, _mainProductData$disc3;
|
|
2162
2246
|
var mainProductData = _this3.hooks.getProduct(mainProduct);
|
|
2163
2247
|
|
|
2164
2248
|
// 重组bundle
|
|
@@ -2173,6 +2257,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2173
2257
|
} else {
|
|
2174
2258
|
// 🔥 关键:拆分后的bundle item
|
|
2175
2259
|
processedBundleItems.forEach(function (item) {
|
|
2260
|
+
var _item$price, _ref14, _item$bundle_selling_;
|
|
2261
|
+
var nextBundlePrice = (_item$price = item.price) !== null && _item$price !== void 0 ? _item$price : bundleItem.price;
|
|
2262
|
+
var nextBundleSellingPrice = (_ref14 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref14 !== void 0 ? _ref14 : bundleItem.bundle_selling_price;
|
|
2176
2263
|
// 🔥 更新 discount_list 中的 num,使其与拆分后的 item.num 一致
|
|
2177
2264
|
var updatedDiscountList = (item.discount_list || []).map(function (discount) {
|
|
2178
2265
|
var _discount$metadata11;
|
|
@@ -2187,18 +2274,20 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2187
2274
|
newBundle.push(_objectSpread(_objectSpread({}, bundleItem), {}, {
|
|
2188
2275
|
_id: item._id,
|
|
2189
2276
|
product_id: bundleItem.product_id,
|
|
2190
|
-
price:
|
|
2277
|
+
price: nextBundlePrice,
|
|
2191
2278
|
num: item.num,
|
|
2192
2279
|
discount_list: updatedDiscountList,
|
|
2193
|
-
bundle_selling_price: bundleItem.bundle_selling_price !== undefined ?
|
|
2280
|
+
bundle_selling_price: bundleItem.bundle_selling_price !== undefined ? nextBundleSellingPrice : undefined
|
|
2194
2281
|
}));
|
|
2195
2282
|
});
|
|
2196
2283
|
}
|
|
2197
2284
|
});
|
|
2198
2285
|
}
|
|
2199
2286
|
|
|
2200
|
-
//
|
|
2201
|
-
|
|
2287
|
+
// 主商品已经在前面的 setProduct 中应用过折扣;这里只替换 bundle,
|
|
2288
|
+
// 避免把主商品 discount_list 再扣一次。
|
|
2289
|
+
var mainSellingPrice = (_ref15 = (_mainProductData$main = mainProductData.main_product_selling_price) !== null && _mainProductData$main !== void 0 ? _mainProductData$main : mainProductData.price) !== null && _ref15 !== void 0 ? _ref15 : 0;
|
|
2290
|
+
var newTotal = Number(mainSellingPrice || 0);
|
|
2202
2291
|
var newOriginTotal = Number(mainProductData.original_price || mainProductData.price || 0);
|
|
2203
2292
|
|
|
2204
2293
|
// 判断是否是手动折扣
|
|
@@ -2212,21 +2301,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2212
2301
|
newTotal = (_mainProductData$tota = mainProductData.total) !== null && _mainProductData$tota !== void 0 ? _mainProductData$tota : newTotal;
|
|
2213
2302
|
newOriginTotal = (_mainProductData$orig3 = mainProductData.origin_total) !== null && _mainProductData$orig3 !== void 0 ? _mainProductData$orig3 : newOriginTotal;
|
|
2214
2303
|
} else {
|
|
2215
|
-
//
|
|
2216
|
-
var _mainDiscountList = mainProductData.discount_list.filter(function (item) {
|
|
2217
|
-
var _item$metadata5;
|
|
2218
|
-
return !(item !== null && item !== void 0 && (_item$metadata5 = item.metadata) !== null && _item$metadata5 !== void 0 && _item$metadata5.custom_product_bundle_map_id);
|
|
2219
|
-
});
|
|
2220
|
-
|
|
2221
|
-
// 如果主商品本身有折扣,需要重新计算主商品价格
|
|
2222
|
-
if (_mainDiscountList && _mainDiscountList.length > 0) {
|
|
2223
|
-
var _Decimal$minus$toNumb3, _mainProductData$orig4;
|
|
2224
|
-
var _allDiscountAmount2 = getDiscountListAmount(_mainDiscountList);
|
|
2225
|
-
newTotal = (_Decimal$minus$toNumb3 = new Decimal(mainProductData.price || 0).minus(_allDiscountAmount2).toNumber()) !== null && _Decimal$minus$toNumb3 !== void 0 ? _Decimal$minus$toNumb3 : newTotal;
|
|
2226
|
-
newOriginTotal = (_mainProductData$orig4 = mainProductData.origin_total) !== null && _mainProductData$orig4 !== void 0 ? _mainProductData$orig4 : newOriginTotal;
|
|
2227
|
-
}
|
|
2228
|
-
|
|
2229
|
-
// 累加bundle的价格(只累加一次)
|
|
2304
|
+
// 累加bundle的折后价格(只累加一次)
|
|
2230
2305
|
if (newBundle.length > 0) {
|
|
2231
2306
|
newBundle.forEach(function (item) {
|
|
2232
2307
|
var _item$discount_list3;
|
|
@@ -2234,6 +2309,12 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2234
2309
|
var originalPrice = ((_item$discount_list3 = item.discount_list) === null || _item$discount_list3 === void 0 || (_item$discount_list3 = _item$discount_list3[0]) === null || _item$discount_list3 === void 0 || (_item$discount_list3 = _item$discount_list3.discount) === null || _item$discount_list3 === void 0 ? void 0 : _item$discount_list3.original_amount) || item.price;
|
|
2235
2310
|
newOriginTotal += Number(originalPrice) * Number(item.num);
|
|
2236
2311
|
});
|
|
2312
|
+
// 计算原始总价(不考虑折扣)
|
|
2313
|
+
newBundle.forEach(function (item) {
|
|
2314
|
+
var _item$discount_list4;
|
|
2315
|
+
var originalPrice = ((_item$discount_list4 = item.discount_list) === null || _item$discount_list4 === void 0 || (_item$discount_list4 = _item$discount_list4[0]) === null || _item$discount_list4 === void 0 || (_item$discount_list4 = _item$discount_list4.discount) === null || _item$discount_list4 === void 0 ? void 0 : _item$discount_list4.original_amount) || item.price;
|
|
2316
|
+
newOriginTotal += Number(originalPrice) * Number(item.num);
|
|
2317
|
+
});
|
|
2237
2318
|
}
|
|
2238
2319
|
}
|
|
2239
2320
|
|
|
@@ -2342,6 +2423,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2342
2423
|
}, {
|
|
2343
2424
|
key: "checkPackageSubItemUsageRules",
|
|
2344
2425
|
value: function checkPackageSubItemUsageRules(discount, flatItem) {
|
|
2426
|
+
var _flatItem$product;
|
|
2345
2427
|
var limitedData = discount.limited_relation_product_data;
|
|
2346
2428
|
var usageRules = limitedData === null || limitedData === void 0 ? void 0 : limitedData.package_sub_item_usage_rules;
|
|
2347
2429
|
var rules = ['original_price'].concat(_toConsumableArray((usageRules === null || usageRules === void 0 ? void 0 : usageRules.rules) || []));
|
|
@@ -2353,16 +2435,17 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2353
2435
|
var ruleType = usageRules.type;
|
|
2354
2436
|
// 套餐适用范围配置
|
|
2355
2437
|
var packageScope = usageRules === null || usageRules === void 0 ? void 0 : usageRules.package_scope;
|
|
2356
|
-
var
|
|
2357
|
-
scopeType =
|
|
2358
|
-
|
|
2359
|
-
exclude_bundle_product_ids =
|
|
2360
|
-
|
|
2361
|
-
include_bundle_product_ids =
|
|
2362
|
-
|
|
2363
|
-
filter =
|
|
2438
|
+
var _ref16 = packageScope || {},
|
|
2439
|
+
scopeType = _ref16.type,
|
|
2440
|
+
_ref16$exclude_bundle = _ref16.exclude_bundle_product_ids,
|
|
2441
|
+
exclude_bundle_product_ids = _ref16$exclude_bundle === void 0 ? [] : _ref16$exclude_bundle,
|
|
2442
|
+
_ref16$include_bundle = _ref16.include_bundle_product_ids,
|
|
2443
|
+
include_bundle_product_ids = _ref16$include_bundle === void 0 ? [] : _ref16$include_bundle,
|
|
2444
|
+
_ref16$filter = _ref16.filter,
|
|
2445
|
+
filter = _ref16$filter === void 0 ? 0 : _ref16$filter;
|
|
2364
2446
|
var isMainProduct = flatItem.type === 'main'; // 单独购买
|
|
2365
2447
|
var isBundleItem = flatItem.type === 'bundle'; // 套餐中购买
|
|
2448
|
+
var bundleMainProductId = (_flatItem$product = flatItem.product) === null || _flatItem$product === void 0 ? void 0 : _flatItem$product.product_id;
|
|
2366
2449
|
|
|
2367
2450
|
// 主商品直接可用
|
|
2368
2451
|
if (isMainProduct) {
|
|
@@ -2375,10 +2458,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2375
2458
|
return true; // 单独购买时可用
|
|
2376
2459
|
}
|
|
2377
2460
|
if (isBundleItem) {
|
|
2378
|
-
var _flatItem$
|
|
2461
|
+
var _flatItem$bundleItem10, _flatItem$bundleItem11, _flatItem$originProdu, _flatItem$parentProdu11;
|
|
2379
2462
|
// 套餐中购买时,判断是否为原价
|
|
2380
|
-
var priceType = (_flatItem$
|
|
2381
|
-
var priceTypeExt = (_flatItem$
|
|
2463
|
+
var priceType = (_flatItem$bundleItem10 = flatItem.bundleItem) === null || _flatItem$bundleItem10 === void 0 ? void 0 : _flatItem$bundleItem10.price_type;
|
|
2464
|
+
var priceTypeExt = (_flatItem$bundleItem11 = flatItem.bundleItem) === null || _flatItem$bundleItem11 === void 0 ? void 0 : _flatItem$bundleItem11.price_type_ext;
|
|
2382
2465
|
// 主商品id
|
|
2383
2466
|
var mainProductId = (flatItem === null || flatItem === void 0 || (_flatItem$originProdu = flatItem.originProduct) === null || _flatItem$originProdu === void 0 || (_flatItem$originProdu = _flatItem$originProdu._productOrigin) === null || _flatItem$originProdu === void 0 ? void 0 : _flatItem$originProdu.id) || (flatItem === null || flatItem === void 0 || (_flatItem$parentProdu11 = flatItem.parentProduct) === null || _flatItem$parentProdu11 === void 0 ? void 0 : _flatItem$parentProdu11.id) || 0;
|
|
2384
2467
|
// original_price 对应:
|
|
@@ -2405,13 +2488,13 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2405
2488
|
if (!filter) {
|
|
2406
2489
|
isScopeValid = true;
|
|
2407
2490
|
} else {
|
|
2408
|
-
isScopeValid = !exclude_bundle_product_ids.includes(Number(
|
|
2491
|
+
isScopeValid = !exclude_bundle_product_ids.includes(Number(bundleMainProductId));
|
|
2409
2492
|
}
|
|
2410
2493
|
}
|
|
2411
2494
|
|
|
2412
2495
|
// 包含套餐判断, products值兼容旧数据
|
|
2413
2496
|
if (scopeType === 'specific_packages' || scopeType === 'products') {
|
|
2414
|
-
isScopeValid = include_bundle_product_ids.includes(Number(
|
|
2497
|
+
isScopeValid = include_bundle_product_ids.includes(Number(bundleMainProductId));
|
|
2415
2498
|
}
|
|
2416
2499
|
|
|
2417
2500
|
// 价格和套餐适用范围都符合,则可用
|
|
@@ -2445,10 +2528,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2445
2528
|
return false; // 单独购买时不可用
|
|
2446
2529
|
}
|
|
2447
2530
|
if (isBundleItem) {
|
|
2448
|
-
var _flatItem$
|
|
2531
|
+
var _flatItem$bundleItem12, _flatItem$bundleItem13;
|
|
2449
2532
|
// 套餐中购买时,判断是否为原价
|
|
2450
|
-
var _priceType = (_flatItem$
|
|
2451
|
-
var _priceTypeExt = (_flatItem$
|
|
2533
|
+
var _priceType = (_flatItem$bundleItem12 = flatItem.bundleItem) === null || _flatItem$bundleItem12 === void 0 ? void 0 : _flatItem$bundleItem12.price_type;
|
|
2534
|
+
var _priceTypeExt = (_flatItem$bundleItem13 = flatItem.bundleItem) === null || _flatItem$bundleItem13 === void 0 ? void 0 : _flatItem$bundleItem13.price_type_ext;
|
|
2452
2535
|
|
|
2453
2536
|
// original_price 对应:
|
|
2454
2537
|
// 1. price_type: "markup" && price_type_ext: "product_price"
|
|
@@ -2461,16 +2544,43 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2461
2544
|
|
|
2462
2545
|
// 检查 rules
|
|
2463
2546
|
if (rules.length > 0) {
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2547
|
+
var _isOriginalPrice3 = _isOriginalPrice2 && rules.includes('original_price');
|
|
2548
|
+
var _isMarkupPrice3 = _isMarkupPrice2 && rules.includes('markup_price');
|
|
2549
|
+
// 价格是否符合规则:原价或加价
|
|
2550
|
+
var _isPriceValid = _isOriginalPrice3 || _isMarkupPrice3;
|
|
2551
|
+
// 套餐适用范围校验
|
|
2552
|
+
var _isScopeValid = false;
|
|
2553
|
+
|
|
2554
|
+
// 排除套餐判断, product_all值兼容旧数据
|
|
2555
|
+
if (scopeType === 'all_packages' || scopeType === 'product_all') {
|
|
2556
|
+
// 所有套餐可用
|
|
2557
|
+
if (!filter) {
|
|
2558
|
+
_isScopeValid = true;
|
|
2559
|
+
} else {
|
|
2560
|
+
_isScopeValid = !exclude_bundle_product_ids.includes(Number(bundleMainProductId));
|
|
2561
|
+
}
|
|
2467
2562
|
}
|
|
2468
2563
|
|
|
2469
|
-
//
|
|
2470
|
-
if (
|
|
2564
|
+
// 包含套餐判断, products值兼容旧数据
|
|
2565
|
+
if (scopeType === 'specific_packages' || scopeType === 'products') {
|
|
2566
|
+
_isScopeValid = include_bundle_product_ids.includes(Number(bundleMainProductId));
|
|
2567
|
+
}
|
|
2568
|
+
|
|
2569
|
+
// 价格和套餐适用范围都符合,则可用
|
|
2570
|
+
if (_isPriceValid && _isScopeValid) {
|
|
2471
2571
|
return true;
|
|
2472
2572
|
}
|
|
2473
2573
|
|
|
2574
|
+
// 检查原价
|
|
2575
|
+
// if (isOriginalPrice && rules.includes('original_price')) {
|
|
2576
|
+
// return true;
|
|
2577
|
+
// }
|
|
2578
|
+
|
|
2579
|
+
// 检查加价
|
|
2580
|
+
// if (isMarkupPrice && rules.includes('markup_price')) {
|
|
2581
|
+
// return true;
|
|
2582
|
+
// }
|
|
2583
|
+
|
|
2474
2584
|
// 如果都不匹配,则不可用
|
|
2475
2585
|
return false;
|
|
2476
2586
|
}
|
|
@@ -2547,6 +2657,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2547
2657
|
_context3.next = 3;
|
|
2548
2658
|
return this.core.effects.emit("".concat(this.name, ":onDestroy"), {});
|
|
2549
2659
|
case 3:
|
|
2660
|
+
_get(_getPrototypeOf(RulesModule.prototype), "destroy", this).call(this);
|
|
2661
|
+
case 4:
|
|
2550
2662
|
case "end":
|
|
2551
2663
|
return _context3.stop();
|
|
2552
2664
|
}
|