From 01a0abc32efff45be306a2fe873ede4f4d85c786 Mon Sep 17 00:00:00 2001 From: Jia Xu Date: Thu, 2 Jan 2025 14:09:52 -0800 Subject: [PATCH 1/3] Product and Services tab update --- auth-web/.eslintrc.js | 2 +- auth-web/package-lock.json | 4 +- auth-web/package.json | 2 +- .../src/components/auth/common/Product.vue | 334 +++++++++--------- .../create-account/SelectProductService.vue | 157 ++++---- .../display-mappers/payment-type-display.ts | 30 ++ auth-web/src/services/codes.service.ts | 7 + auth-web/src/stores/org.ts | 14 + .../auth/create-account/AccountSetupView.vue | 4 +- .../non-bcsc/NonBcscAccountSetupView.vue | 4 +- 10 files changed, 307 insertions(+), 251 deletions(-) diff --git a/auth-web/.eslintrc.js b/auth-web/.eslintrc.js index e9e266381..bdf58c967 100644 --- a/auth-web/.eslintrc.js +++ b/auth-web/.eslintrc.js @@ -47,7 +47,7 @@ module.exports = { '@typescript-eslint/no-use-before-define': ['error', { 'functions': false, 'classes': true, 'variables': true }], 'no-unused-expressions': 'off', '@typescript-eslint/no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true }], - 'vue/multi-word-component-names': ['error', { 'ignores': ['Transactions'] }], + 'vue/multi-word-component-names': ['error', { 'ignores': ['Transactions', 'Product'] }], 'vue/component-name-in-template-casing': ['error', 'PascalCase'], // Not ideal but shallowOnly option isn't working for this, so leaving it off for now. // https://eslint.vuejs.org/rules/no-mutating-props.html diff --git a/auth-web/package-lock.json b/auth-web/package-lock.json index 15ebf66e2..2f05aa20f 100644 --- a/auth-web/package-lock.json +++ b/auth-web/package-lock.json @@ -1,12 +1,12 @@ { "name": "auth-web", - "version": "2.6.127", + "version": "2.7.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "auth-web", - "version": "2.6.127", + "version": "2.7.0", "dependencies": { "@bcrs-shared-components/base-address": "2.0.3", "@bcrs-shared-components/bread-crumb": "1.0.8", diff --git a/auth-web/package.json b/auth-web/package.json index 2e4eff78c..7fb6a9b0f 100644 --- a/auth-web/package.json +++ b/auth-web/package.json @@ -1,6 +1,6 @@ { "name": "auth-web", - "version": "2.6.127", + "version": "2.7.0", "appName": "Auth Web", "sbcName": "SBC Common Components", "private": true, diff --git a/auth-web/src/components/auth/common/Product.vue b/auth-web/src/components/auth/common/Product.vue index fb9ddb418..91c22f795 100644 --- a/auth-web/src/components/auth/common/Product.vue +++ b/auth-web/src/components/auth/common/Product.vue @@ -142,7 +142,6 @@ >mdi-chevron-down -
@@ -182,6 +181,20 @@ @save:saveProductFee="saveProductFee" />
+ +

+ Supported payment method: +

+ + {{ paymentTypeIcon[method] }}{{ paymentTypeLabel[method] }} + +
@@ -193,193 +206,196 @@ diff --git a/auth-web/src/resources/display-mappers/payment-type-display.ts b/auth-web/src/resources/display-mappers/payment-type-display.ts index 52dcec782..2d355e593 100644 --- a/auth-web/src/resources/display-mappers/payment-type-display.ts +++ b/auth-web/src/resources/display-mappers/payment-type-display.ts @@ -14,3 +14,33 @@ export const paymentTypeDisplay = { [PaymentTypes.PAD]: 'Pre-Authorized Debit', [PaymentTypes.CREDIT]: 'Account Credit' } + +export const paymentTypeLabel = { + [PaymentTypes.BCOL]: 'BC ONLINE', + [PaymentTypes.CASH]: 'CASH', + [PaymentTypes.CHEQUE]: 'CHEQUE', + [PaymentTypes.CREDIT_CARD]: 'CREDIT CARD', + [PaymentTypes.DIRECT_PAY]: 'DIRECT PAY', + [PaymentTypes.EFT]: 'ELECTRONIC FUNDS TRANSFER', + [PaymentTypes.EJV]: 'ELECTRONIC JOURNAL VOUCHER', + [PaymentTypes.INTERNAL]: 'ROUTING SLIP', + [PaymentTypes.NO_FEE]: 'NO FEE', + [PaymentTypes.ONLINE_BANKING]: 'ONLINE BANKING', + [PaymentTypes.PAD]: 'PRE-AUTHORIZED DEBIT', + [PaymentTypes.CREDIT]: 'ACCOUNT CREDIT' +} + +export const paymentTypeIcon = { + [PaymentTypes.BCOL]: 'mdi-link-variant', + [PaymentTypes.CASH]: '', + [PaymentTypes.CHEQUE]: '', + [PaymentTypes.CREDIT_CARD]: 'mdi-credit-card-outline', + [PaymentTypes.DIRECT_PAY]: '', + [PaymentTypes.EFT]: 'mdi-arrow-right-circle-outline', + [PaymentTypes.EJV]: '', + [PaymentTypes.INTERNAL]: '', + [PaymentTypes.NO_FEE]: '', + [PaymentTypes.ONLINE_BANKING]: 'mdi-bank-outline', + [PaymentTypes.PAD]: 'mdi-bank-outline', + [PaymentTypes.CREDIT]: 'ACCOUNT CREDIT' +} diff --git a/auth-web/src/services/codes.service.ts b/auth-web/src/services/codes.service.ts index 95acd2a42..8a85e7f54 100644 --- a/auth-web/src/services/codes.service.ts +++ b/auth-web/src/services/codes.service.ts @@ -7,4 +7,11 @@ export default class CodesService { public static async getCodes (codeType: string): Promise> { return axios.get(`${ConfigHelper.getAuthAPIUrl()}/codes/${codeType}`) } + + public static async getPaymentMethods (productCode?: string): Promise> { + const url = productCode + ? `${ConfigHelper.getPayAPIURL()}/codes/valid_payment_methods/${productCode}` + : `${ConfigHelper.getPayAPIURL()}/codes/valid_payment_methods` + return axios.get(url) + } } diff --git a/auth-web/src/stores/org.ts b/auth-web/src/stores/org.ts index e0f2ec87d..a75fcbd84 100644 --- a/auth-web/src/stores/org.ts +++ b/auth-web/src/stores/org.ts @@ -45,6 +45,7 @@ import { AccountSettings } from '@/models/account-settings' import { Address } from '@/models/address' import { AutoCompleteResponse } from '@/models/AutoComplete' import BcolService from '@/services/bcol.services' +import CodesService from '@/services/codes.service' import CommonUtils from '@/util/common-util' import ConfigHelper from '@/util/config-helper' import { EmptyResponse } from '@/models/global' @@ -87,6 +88,7 @@ export const useOrgStore = defineStore('org', () => { memberLoginOption: '' as string, currentOrgGLInfo: undefined as GLInfo, productList: [] as OrgProduct[], // list of all products + productPaymentMethods: {} as {[key: string]: string[]}, currentSelectedProducts: [] as any, // selected product list code in array currentStatementNotificationSettings: {} as StatementNotificationSettings, statementSettings: {} as StatementSettings, @@ -889,6 +891,17 @@ export const useOrgStore = defineStore('org', () => { return [] } + async function getProductPaymentMethods (productCode?: string | undefined): Promise { + const response: any = await CodesService.getPaymentMethods(productCode || undefined) + if (response?.data && response.status === 200) { + const result = response.data + state.productPaymentMethods = result + return result + } + state.productPaymentMethods = {} + return {} + } + async function addToCurrentSelectedProducts ({ productCode, forceRemove = false }): Promise { const currentSelectedProducts = state.currentSelectedProducts const isAlreadySelected = currentSelectedProducts.includes(productCode) @@ -1145,6 +1158,7 @@ export const useOrgStore = defineStore('org', () => { getOrgProducts, addOrgProducts, getProductList, + getProductPaymentMethods, addToCurrentSelectedProducts, resetoCurrentSelectedProducts, refundInvoice, diff --git a/auth-web/src/views/auth/create-account/AccountSetupView.vue b/auth-web/src/views/auth/create-account/AccountSetupView.vue index 735643778..0d30b762c 100644 --- a/auth-web/src/views/auth/create-account/AccountSetupView.vue +++ b/auth-web/src/views/auth/create-account/AccountSetupView.vue @@ -156,8 +156,8 @@ export default class AccountSetupView extends Vue { private stepperConfig: Array = [ { - title: 'Select Product and Services', - stepName: 'Products and Services', + title: 'Select Products and Services', + stepName: 'Products and Payment', component: SelectProductService, componentProps: { isStepperView: true, diff --git a/auth-web/src/views/auth/create-account/non-bcsc/NonBcscAccountSetupView.vue b/auth-web/src/views/auth/create-account/non-bcsc/NonBcscAccountSetupView.vue index e039fd016..8f8d5dbab 100644 --- a/auth-web/src/views/auth/create-account/non-bcsc/NonBcscAccountSetupView.vue +++ b/auth-web/src/views/auth/create-account/non-bcsc/NonBcscAccountSetupView.vue @@ -150,8 +150,8 @@ export default class NonBcscAccountSetupView extends Vue { private accountStepperConfig: Array = [ { - title: 'Select Product and Services', - stepName: 'Products and Services', + title: 'Select Products and Services', + stepName: 'Products and Payment', component: SelectProductService, componentProps: { isStepperView: true, From 0ac7906b1a1ced774901acca1847743a0aee9278 Mon Sep 17 00:00:00 2001 From: Jia Xu Date: Thu, 2 Jan 2025 14:13:41 -0800 Subject: [PATCH 2/3] fix conflict --- auth-web/package-lock.json | 4 ++-- auth-web/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/auth-web/package-lock.json b/auth-web/package-lock.json index 2f05aa20f..b638d680c 100644 --- a/auth-web/package-lock.json +++ b/auth-web/package-lock.json @@ -1,12 +1,12 @@ { "name": "auth-web", - "version": "2.7.0", + "version": "2.6.128", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "auth-web", - "version": "2.7.0", + "version": "2.6.128", "dependencies": { "@bcrs-shared-components/base-address": "2.0.3", "@bcrs-shared-components/bread-crumb": "1.0.8", diff --git a/auth-web/package.json b/auth-web/package.json index 7fb6a9b0f..055cbdc51 100644 --- a/auth-web/package.json +++ b/auth-web/package.json @@ -1,6 +1,6 @@ { "name": "auth-web", - "version": "2.7.0", + "version": "2.6.128", "appName": "Auth Web", "sbcName": "SBC Common Components", "private": true, From 9955ed1f59de1e44493e191484f8ad0e8ff15462 Mon Sep 17 00:00:00 2001 From: Travis Semple Date: Fri, 3 Jan 2025 12:49:21 -0800 Subject: [PATCH 3/3] minor tweaks --- auth-web/package-lock.json | 4 ++-- auth-web/package.json | 2 +- auth-web/src/components/auth/common/Product.vue | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/auth-web/package-lock.json b/auth-web/package-lock.json index b638d680c..2f05aa20f 100644 --- a/auth-web/package-lock.json +++ b/auth-web/package-lock.json @@ -1,12 +1,12 @@ { "name": "auth-web", - "version": "2.6.128", + "version": "2.7.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "auth-web", - "version": "2.6.128", + "version": "2.7.0", "dependencies": { "@bcrs-shared-components/base-address": "2.0.3", "@bcrs-shared-components/bread-crumb": "1.0.8", diff --git a/auth-web/package.json b/auth-web/package.json index 055cbdc51..7fb6a9b0f 100644 --- a/auth-web/package.json +++ b/auth-web/package.json @@ -1,6 +1,6 @@ { "name": "auth-web", - "version": "2.6.128", + "version": "2.7.0", "appName": "Auth Web", "sbcName": "SBC Common Components", "private": true, diff --git a/auth-web/src/components/auth/common/Product.vue b/auth-web/src/components/auth/common/Product.vue index 91c22f795..4784e2045 100644 --- a/auth-web/src/components/auth/common/Product.vue +++ b/auth-web/src/components/auth/common/Product.vue @@ -317,10 +317,16 @@ export default defineComponent({ if (([ProductStatus.NOT_SUBSCRIBED] as Array).includes(props.productDetails.subscriptionStatus)) { return true } - state.termsAccepted = true return false }) + // Untested. + watch(() => hasDecisionNotBeenMade.value, (newValue) => { + if (!newValue) { + state.termsAccepted = true + } + }) + function expand () { const productCode = props.isexpandedView ? '' : props.productDetails.code // emit selected product code to controll expand all product