From ee47883973cfecf548ebf6b83f28571267b0de94 Mon Sep 17 00:00:00 2001 From: credelinghuys Date: Thu, 12 Mar 2026 11:37:31 -0400 Subject: [PATCH 1/2] CASH-2462: CJ conversion tracking updates --- src/mixins/analytics-mixin.js | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index 316553548..a3b599331 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -806,14 +806,16 @@ export default { ); coupons = promoString; } - const serviceZipPackage = submittedOrder.lineItems?.supportingItems?.find( - (x) => x.partType == "SERVICE PACKAGE DISCOUNT" + const additionalDiscounts = submittedOrder.lineItems?.supportingItems?.find( + (x) => + x.partType == partTypeStrings.SERVICE_PACKAGE_DISCOUNT || + x.partType == partTypeStrings.QUOTE_PAGE_DISCOUNT ); - if (isDefined(serviceZipPackage)) { + if (isDefined(additionalDiscounts)) { if (coupons) { coupons += ","; } - coupons += serviceZipPackage.partNumber; + coupons += additionalDiscounts.partNumber; } refSequenceNum = submittedOrder.referralSequenceNumber; @@ -846,17 +848,17 @@ export default { } } } + pushToDataLayerIfDefined({ + event: "commissionJunctionGtmData", + commissionJunctionGtmData: { + cj_commission_junction_event: cjEvent, + cj_referral_sequence_number: refSequenceNum, + cj_amount: amount.toFixed(2), + cj_repair_replace: repairReplace, + cj_coupon: coupons, + }, + }); } - pushToDataLayerIfDefined({ - event: "commissionJunctionGtmData", - commissionJunctionGtmData: { - cj_commission_junction_event: cjEvent, - cj_referral_sequence_number: refSequenceNum, - cj_amount: amount.toFixed(2), - cj_repair_replace: repairReplace, - cj_coupon: coupons, - }, - }); }, pushPageErrorToDataLayer(error) { From 89e4c38a6a334996e87adbb0005dc983418dd22c Mon Sep 17 00:00:00 2001 From: matthew-sykes <32104062+matthew-sykes@users.noreply.github.com> Date: Mon, 16 Mar 2026 15:05:57 -0400 Subject: [PATCH 2/2] Merge pull request #3102 from Safelite/feature/page-prereqs-refactor-CASH-2456 All refactored pre-req will check all instead of stopping first failr --- src/layouts/payment-adyen/payment-adyen.vue | 16 +++++++++------- src/layouts/payment-method/payment-method.vue | 15 +++++++++------ src/layouts/payment/payment.vue | 16 +++++++++------- src/layouts/quote/quote.vue | 9 +++++---- 4 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/layouts/payment-adyen/payment-adyen.vue b/src/layouts/payment-adyen/payment-adyen.vue index 5ae3e25cc..adb0a1210 100644 --- a/src/layouts/payment-adyen/payment-adyen.vue +++ b/src/layouts/payment-adyen/payment-adyen.vue @@ -146,13 +146,15 @@ export default { arePagePrerequisitesValid() { const order = store.getters.order; const logQueue = []; - const result = - hasServiceLocationInfo(order, logQueue) && - hasInsuranceInfo(order, logQueue) && - hasSchedulingInfo(order, logQueue) && - hasCustomerInfo(order, logQueue) && - hasPaymentMethodInfo(order, logQueue) && - hasGlassPartsOrRepairInfo(order, logQueue); + const results = [ + hasServiceLocationInfo(order, logQueue), + hasInsuranceInfo(order, logQueue), + hasSchedulingInfo(order, logQueue), + hasCustomerInfo(order, logQueue), + hasPaymentMethodInfo(order, logQueue), + hasGlassPartsOrRepairInfo(order, logQueue), + ]; + const result = results.every(Boolean); flushPagePrereqsLogs("payment-adyen.vue", result, logQueue); return result; }, diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 0ee3ad8ce..48f076f84 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -390,12 +390,15 @@ export default { arePagePrerequisitesValid() { const order = store.getters.order; const logQueue = []; - const result = - hasServiceLocationInfo(order, logQueue) && - hasInsuranceInfo(order, logQueue) && - hasSchedulingInfo(order, logQueue) && - hasCustomerInfo(order, logQueue) && - hasGlassPartsOrRepairInfo(order, logQueue); + const results = [ + hasServiceLocationInfo(order, logQueue), + hasInsuranceInfo(order, logQueue), + hasSchedulingInfo(order, logQueue), + hasCustomerInfo(order, logQueue), + hasGlassPartsOrRepairInfo(order, logQueue), + ]; + //false if any check is false but calls all checks for logging purposes + const result = results.every(Boolean); flushPagePrereqsLogs("payment-method.vue", result, logQueue); return result; }, diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 0fd452a9d..a8c3653b1 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -445,13 +445,15 @@ export default { arePagePrerequisitesValid() { const order = store.getters.order; const logQueue = []; - const result = - hasServiceLocationInfo(order, logQueue) && - hasInsuranceInfo(order, logQueue) && - hasSchedulingInfo(order, logQueue) && - hasCustomerInfo(order, logQueue) && - hasPaymentMethodInfo(order, logQueue) && - hasGlassPartsOrRepairInfo(order, logQueue); + const results = [ + hasServiceLocationInfo(order, logQueue), + hasInsuranceInfo(order, logQueue), + hasSchedulingInfo(order, logQueue), + hasCustomerInfo(order, logQueue), + hasPaymentMethodInfo(order, logQueue), + hasGlassPartsOrRepairInfo(order, logQueue), + ]; + const result = results.every(Boolean); flushPagePrereqsLogs("payment.vue", result, logQueue); return result; }, diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index df1a4ab7d..82249e790 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -739,10 +739,11 @@ export default { order.payment?.insuranceCoverage?.isVerified == null || order.payment?.insuranceCoverage?.isVerified === false; - const preReqResult = - hasServiceZipInfo(order, logQueue) && - hasGlassPartsOrRepairInfo(order, logQueue) && - isVerifiedOk; + const results = [ + hasServiceZipInfo(order, logQueue), + hasGlassPartsOrRepairInfo(order, logQueue), + ]; + const preReqResult = results.every(Boolean) && isVerifiedOk; logQueue.push(() => { debugLog(