Merge remote-tracking branch 'origin/release/2025.03.27' into rlsmerge/2025.03.27-to-develop
This commit is contained in:
commit
7d0b782dcf
7 changed files with 90 additions and 49 deletions
|
|
@ -5,6 +5,7 @@ const partNumberStrings = {
|
|||
DONATION: "DONATION",
|
||||
// Fees
|
||||
RECYCLE_FEE: "RECYCLE FEE",
|
||||
PRICING_BY_DAY_UPCHARGE: "PREMAPPT GEN",
|
||||
};
|
||||
|
||||
export { partNumberStrings };
|
||||
|
|
|
|||
|
|
@ -8,8 +8,7 @@ const PREMIUM_TIME_SLOT_ID_FLAG = "-PREMIUM";
|
|||
|
||||
const PREMIUM_FEE_PART_TYPE = "EARLY BIRD";
|
||||
|
||||
// TODO; This will need updating with real PricingByDay part type
|
||||
const PRICING_BY_DAY_PART_TYPE = "DISC CASHSAVE20";
|
||||
const PRICING_BY_DAY_PART_TYPE = "PREMAPPT GEN";
|
||||
|
||||
const RouteCodeFlags = {
|
||||
ALL_DAY_DROP_OFF: "ALL DAY DROP OFF",
|
||||
|
|
|
|||
|
|
@ -26,43 +26,36 @@ const DAYS_OF_WEEK = [
|
|||
{
|
||||
label: "Sunday",
|
||||
cssClass: "sunday",
|
||||
index: 0,
|
||||
isPricingByDayUpchargeDay: false,
|
||||
isPricingByDayUpchargeDay: true,
|
||||
},
|
||||
{
|
||||
label: "Monday",
|
||||
cssClass: "monday",
|
||||
index: 1,
|
||||
isPricingByDayUpchargeDay: true,
|
||||
},
|
||||
{
|
||||
label: "Tuesday",
|
||||
cssClass: "tuesday",
|
||||
index: 2,
|
||||
isPricingByDayUpchargeDay: false,
|
||||
},
|
||||
{
|
||||
label: "Wednesday",
|
||||
cssClass: "wednesday",
|
||||
index: 3,
|
||||
isPricingByDayUpchargeDay: false,
|
||||
},
|
||||
{
|
||||
label: "Thursday",
|
||||
cssClass: "thursday",
|
||||
index: 4,
|
||||
isPricingByDayUpchargeDay: false,
|
||||
},
|
||||
{
|
||||
label: "Friday",
|
||||
cssClass: "friday",
|
||||
index: 5,
|
||||
isPricingByDayUpchargeDay: true,
|
||||
},
|
||||
{
|
||||
label: "Saturday",
|
||||
cssClass: "saturday",
|
||||
index: 6,
|
||||
isPricingByDayUpchargeDay: true,
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<template>
|
||||
<div class="date-picker text-center" :class="`${calendarViewDirection} ${isPricingByDayClass}`">
|
||||
<div
|
||||
class="date-picker text-center"
|
||||
:class="`${calendarViewDirection} ${isPricingByDayClass} ${showPricingByDayClass}`">
|
||||
<fieldset id="date-picker-fieldset" ref="datePickerFieldset">
|
||||
<legend class="sr-only">Select a day and time</legend>
|
||||
<div
|
||||
|
|
@ -60,6 +62,7 @@
|
|||
date.dateNum === 1 ? 'first-day-' + month.startDateDayIndex : '',
|
||||
date.dayClasses,
|
||||
date.isSelectable ? 'selectable-day' : '',
|
||||
date.isPricingByDayUpchargeDay ? 'upch-day' : '',
|
||||
]">
|
||||
<input
|
||||
:disabled="!date.isSelectable"
|
||||
|
|
@ -220,6 +223,9 @@ export default {
|
|||
isPricingByDayClass() {
|
||||
return this.isPricingByDayExperiment ? "pricing-by-day" : "";
|
||||
},
|
||||
showPricingByDayClass() {
|
||||
return this.showPricingByDay ? "show-pricing-by-day" : "";
|
||||
},
|
||||
selectedDate: {
|
||||
get() {
|
||||
return this.modelValue;
|
||||
|
|
@ -1143,8 +1149,8 @@ export default {
|
|||
label {
|
||||
background-color: $white;
|
||||
border: none;
|
||||
min-width: initial;
|
||||
width: initial;
|
||||
min-width: 100%;
|
||||
width: 100%;
|
||||
height: -webkit-fill-available;
|
||||
border-radius: 0;
|
||||
cursor: pointer;
|
||||
|
|
@ -1163,6 +1169,35 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.date-picker.show-pricing-by-day {
|
||||
.radio-wrapper {
|
||||
&.selectable-day label span {
|
||||
text-decoration: none;
|
||||
color: $gray-600;
|
||||
font-weight: 400;
|
||||
font-family: "AvertaSemibold";
|
||||
|
||||
&.price {
|
||||
color: $green;
|
||||
}
|
||||
}
|
||||
&.upch-day label span.price {
|
||||
color: $gray-600;
|
||||
font-weight: 400;
|
||||
font-family: $font-family-sans-serif;
|
||||
}
|
||||
input[type="radio"] {
|
||||
&:focus + label,
|
||||
&:checked:focus + label {
|
||||
color: $gray-600;
|
||||
}
|
||||
&:checked + label {
|
||||
color: $blue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-link {
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
:estimatedServiceMinutesMaximum="
|
||||
selectableDatesData.estimatedServiceMinutesMaximum
|
||||
"
|
||||
@waitListRequested-emitted="handleWaitListRequested"
|
||||
@waitListRequested="handleWaitListRequested"
|
||||
@time-slot-modal-closed="timeSlotModalClosed"
|
||||
validationRules="time-slot-selection-required"
|
||||
@TimeSlotSelected="forwardButtonAction" />
|
||||
|
|
@ -250,9 +250,15 @@ export default {
|
|||
isRecalibrationOnOrder && shouldHideRecalibration
|
||||
? getItemsWithoutRecalParts(lineItems.glassParts)
|
||||
: (lineItems.glassParts ?? []);
|
||||
const supportingItemsFromStore = lineItems?.supportingItems;
|
||||
const supportingItemsWithoutFees = baseMixin.methods.filterOutCertainPartTypesOrNumbers(
|
||||
lineItems.supportingItems,
|
||||
{ partNumbersToRemove: [partNumberStrings.RECYCLE_FEE] }
|
||||
{
|
||||
partNumbersToRemove: [
|
||||
partNumberStrings.RECYCLE_FEE,
|
||||
partNumberStrings.PRICING_BY_DAY_UPCHARGE,
|
||||
],
|
||||
}
|
||||
);
|
||||
const lineItemsToBePriced = {
|
||||
glassParts: glassParts,
|
||||
|
|
@ -266,8 +272,8 @@ export default {
|
|||
|
||||
// Check to see if includePricingByDayUpcharge should already be set (based on order lineItems)
|
||||
let includePricingByDayUpcharge = false;
|
||||
if (supportingItemsWithoutFees) {
|
||||
const pricingByDayUpchargeFeeIndex = supportingItemsWithoutFees.findIndex(
|
||||
if (supportingItemsFromStore) {
|
||||
const pricingByDayUpchargeFeeIndex = supportingItemsFromStore?.findIndex(
|
||||
(item) => item.partType == PRICING_BY_DAY_PART_TYPE
|
||||
);
|
||||
if (pricingByDayUpchargeFeeIndex > -1) {
|
||||
|
|
@ -300,7 +306,9 @@ export default {
|
|||
});
|
||||
|
||||
// Get pricingByDayUpcharge needed for Pricing By Day
|
||||
const pricingByDayUpchargePartPromise = getPricingByDayPartWithPrice();
|
||||
const pricingByDayUpchargePartPromise = showPricingByDay
|
||||
? getPricingByDayPartWithPrice()
|
||||
: null;
|
||||
|
||||
const premiumFeePromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||
storeActions.GET_MOBILE_PREMIUM_FEE,
|
||||
|
|
@ -348,10 +356,12 @@ export default {
|
|||
|
||||
const resultMap = await settleAllPromises(promiseResultMap);
|
||||
|
||||
const pricingByDayUpcharge = await baseMixin.methods.getTotalLineItemPrice(
|
||||
resultMap.pricingByDayUpchargePart,
|
||||
false
|
||||
);
|
||||
const pricingByDayUpcharge = showPricingByDay
|
||||
? await baseMixin.methods.getTotalLineItemPrice(
|
||||
resultMap.pricingByDayUpchargePart,
|
||||
false
|
||||
)
|
||||
: null;
|
||||
|
||||
const datePickerInitialData = resultMap.datePickerInitialData;
|
||||
datePickerInitialData.pricingByDayBasePrice = pricingByDayBasePrice;
|
||||
|
|
@ -620,24 +630,26 @@ export default {
|
|||
const supportingItems = this.getSupportingItems();
|
||||
|
||||
// if we have a pricing by day upcharge, then save/update supporting items with it
|
||||
const pricingByDayUpchargeFeeIndex = supportingItems?.findIndex(
|
||||
(item) => item.partType == PRICING_BY_DAY_PART_TYPE
|
||||
);
|
||||
if (this.showPricingByDay) {
|
||||
const pricingByDayUpchargeFeeIndex = supportingItems?.findIndex(
|
||||
(item) => item.partType == PRICING_BY_DAY_PART_TYPE
|
||||
);
|
||||
|
||||
if (this.includePricingByDayUpcharge) {
|
||||
if (pricingByDayUpchargeFeeIndex > -1) {
|
||||
supportingItems[pricingByDayUpchargeFeeIndex].laborAmount =
|
||||
this.pricingByDayUpchargeLineItem.laborAmount;
|
||||
supportingItems[pricingByDayUpchargeFeeIndex].sellingPrice =
|
||||
this.pricingByDayUpchargeLineItem.sellingPrice;
|
||||
supportingItems[pricingByDayUpchargeFeeIndex].kitPrice =
|
||||
this.pricingByDayUpchargeLineItem.kitPrice;
|
||||
if (this.includePricingByDayUpcharge) {
|
||||
if (pricingByDayUpchargeFeeIndex > -1) {
|
||||
supportingItems[pricingByDayUpchargeFeeIndex].laborAmount =
|
||||
this.pricingByDayUpchargeLineItem.laborAmount;
|
||||
supportingItems[pricingByDayUpchargeFeeIndex].sellingPrice =
|
||||
this.pricingByDayUpchargeLineItem.sellingPrice;
|
||||
supportingItems[pricingByDayUpchargeFeeIndex].kitPrice =
|
||||
this.pricingByDayUpchargeLineItem.kitPrice;
|
||||
} else {
|
||||
supportingItems.push(this.pricingByDayUpchargeLineItem);
|
||||
}
|
||||
} else {
|
||||
supportingItems.push(this.pricingByDayUpchargeLineItem);
|
||||
}
|
||||
} else {
|
||||
if (pricingByDayUpchargeFeeIndex >= 0) {
|
||||
supportingItems.splice(pricingByDayUpchargeFeeIndex, 1);
|
||||
if (pricingByDayUpchargeFeeIndex >= 0) {
|
||||
supportingItems.splice(pricingByDayUpchargeFeeIndex, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,8 +43,8 @@
|
|||
v-if="waitListRequested"
|
||||
class="mt-5 rounded waitlist-success"
|
||||
ref="waitlistSuccessMessage">
|
||||
<img :src="WaitListSuccessImage" class="success-image" />
|
||||
<span v-html="WaitListSuccessText" class="success-text"></span>
|
||||
<img :src="waitListSuccessImage" class="success-image" />
|
||||
<span v-html="waitListSuccessText" class="success-text"></span>
|
||||
</div>
|
||||
<div
|
||||
class="mt-5 mb-2 supplemental-information"
|
||||
|
|
@ -366,10 +366,10 @@ export default {
|
|||
displayWaitListFeature() {
|
||||
return this.displayWaitList;
|
||||
},
|
||||
WaitListSuccessImage() {
|
||||
waitListSuccessImage() {
|
||||
return this.getCmsContent("WaitListSuccessWidget", "Image");
|
||||
},
|
||||
WaitListSuccessText() {
|
||||
waitListSuccessText() {
|
||||
return this.getCmsContent("WaitListSuccessWidget", "BodyText");
|
||||
},
|
||||
},
|
||||
|
|
@ -539,7 +539,7 @@ export default {
|
|||
};
|
||||
},
|
||||
waitListChecked(event) {
|
||||
this.$emit("waitListRequested-emitted", event.target.checked);
|
||||
this.$emit("waitListRequested", event.target.checked);
|
||||
},
|
||||
scrollToSuccessMessage() {
|
||||
const successMessageElement = this.$refs.waitlistSuccessMessage;
|
||||
|
|
@ -625,10 +625,10 @@ export default {
|
|||
border: 1px solid #0c7e47;
|
||||
border-radius: 5px;
|
||||
font-size: $h5-font-size;
|
||||
padding: 12px 16px;
|
||||
margin-bottom: -8px;
|
||||
padding: 0.75rem 1rem;
|
||||
margin-bottom: -0.5rem;
|
||||
.success-text {
|
||||
margin-left: 8px;
|
||||
margin-left: 0.5rem;
|
||||
strong {
|
||||
font-weight: 600;
|
||||
letter-spacing: 0%;
|
||||
|
|
@ -636,8 +636,8 @@ export default {
|
|||
}
|
||||
.success-image {
|
||||
margin-top: 4.5px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
color: #0c7e47;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -720,7 +720,8 @@ export const mutations = {
|
|||
// if we're loading a session and we do not have a provider number yet, then set isInsurance to null so that
|
||||
// a service package is not selected by default on the quote page.
|
||||
if (
|
||||
!sessionInformation.order.payment.isInsurance &&
|
||||
(sessionInformation.order.payment.isInsurance === null ||
|
||||
sessionInformation.order.payment.isInsurance === undefined) &&
|
||||
!sessionInformation.order.serviceLocation.provider?.providerNumber
|
||||
) {
|
||||
state.order.payment.isInsurance = null;
|
||||
|
|
|
|||
Loading…
Reference in a new issue