From 74504facf01a002eb055f0d6a6494763b427b7dc Mon Sep 17 00:00:00 2001 From: Carl Date: Tue, 29 Aug 2023 10:32:23 +0800 Subject: [PATCH] fix: price error when super admin masqurading --- .../outSideComponents/B3MasquradeGobalTip.tsx | 2 ++ .../storefront/src/shared/global/context/config.ts | 2 ++ .../src/shared/service/b2b/graphql/global.ts | 1 + apps/storefront/src/utils/b3Product/b3Product.ts | 14 +++++--------- apps/storefront/src/utils/loginInfo.ts | 9 ++++++++- apps/storefront/src/utils/masquerade.ts | 6 +++++- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/apps/storefront/src/components/outSideComponents/B3MasquradeGobalTip.tsx b/apps/storefront/src/components/outSideComponents/B3MasquradeGobalTip.tsx index 5984825a..8375cbb1 100644 --- a/apps/storefront/src/components/outSideComponents/B3MasquradeGobalTip.tsx +++ b/apps/storefront/src/components/outSideComponents/B3MasquradeGobalTip.tsx @@ -76,11 +76,13 @@ export default function B3MasquradeGobalTip(props: B3MasquradeGobalTipProps) { B3SStorage.delete('isAgenting') B3SStorage.delete('salesRepCompanyId') B3SStorage.delete('salesRepCompanyName') + B3SStorage.delete('salesRepCustomerGroupId') dispatch({ type: 'common', payload: { salesRepCompanyId: '', salesRepCompanyName: '', + salesRepCustomerGroupId: '', isAgenting: false, }, }) diff --git a/apps/storefront/src/shared/global/context/config.ts b/apps/storefront/src/shared/global/context/config.ts index 13b9915d..219ea915 100644 --- a/apps/storefront/src/shared/global/context/config.ts +++ b/apps/storefront/src/shared/global/context/config.ts @@ -86,6 +86,7 @@ export interface GlobalState { isAgenting: boolean salesRepCompanyId: string salesRepCompanyName: string + salesRepCustomerGroupId: string B3UserId: number | string tipMessage: TipMessagesProps addressConfig?: { @@ -144,6 +145,7 @@ export const initState = { isAgenting: B3SStorage.get('isAgenting') || false, salesRepCompanyId: B3SStorage.get('salesRepCompanyId') || '', salesRepCompanyName: B3SStorage.get('salesRepCompanyName') || '', + salesRepCustomerGroupId: B3SStorage.get('salesRepCustomerGroupId') || '', customer: B3SStorage.get('B3CustomerInfo') || { firstName: '', lastName: '', diff --git a/apps/storefront/src/shared/service/b2b/graphql/global.ts b/apps/storefront/src/shared/service/b2b/graphql/global.ts index 3af518f8..3782d09b 100644 --- a/apps/storefront/src/shared/service/b2b/graphql/global.ts +++ b/apps/storefront/src/shared/service/b2b/graphql/global.ts @@ -21,6 +21,7 @@ const getAgentInfoQl = (customerId: string | number) => `{ superAdminMasquerading(customerId: ${customerId}) { companyName, bcGroupName, + customerGroupId, companyStatus, id } diff --git a/apps/storefront/src/utils/b3Product/b3Product.ts b/apps/storefront/src/utils/b3Product/b3Product.ts index 44c1d94e..794e5ffb 100644 --- a/apps/storefront/src/utils/b3Product/b3Product.ts +++ b/apps/storefront/src/utils/b3Product/b3Product.ts @@ -599,22 +599,14 @@ const getBulkPrice = (calculatedPrices: any, qty: number) => { maximum, discount_type: discountType, discount_amount: bulkPrice, - }: // tax_discount_amount: taxDiscountAmount, - any) => { - // const taxExclusive = taxDiscountAmount?.tax_exclusive || 0 - // const taxInclusive = taxDiscountAmount?.tax_inclusive || 0 - // const newPrice = isTax ? tax : bulkPrice - + }: any) => { if (qty >= minimum && qty <= (maximum || qty)) { switch (discountType) { case 'fixed': - // price -= +basePrice - newPrice finalDiscount = 0 enteredPrice = bulkPrice break case 'percent': - // basePrice *= newPrice / 100 - // price -= +basePrice finalDiscount = enteredPrice * +(bulkPrice / 100).toFixed(decimalPlaces) break @@ -659,10 +651,14 @@ interface CalculatedProductPrice { const getCustomerGroupId = () => { let customerGroupId = 0 + const isAgenting = B3SStorage.get('isAgenting') || false const B3CustomerInfo = B3SStorage.get('B3CustomerInfo') if (B3CustomerInfo && Object.keys(B3CustomerInfo).length !== 0) { customerGroupId = B3CustomerInfo.customerGroupId } + const salesRepCustomerGroupId = B3SStorage.get('salesRepCustomerGroupId') || 0 + if (isAgenting) return +salesRepCustomerGroupId || customerGroupId + return customerGroupId } diff --git a/apps/storefront/src/utils/loginInfo.ts b/apps/storefront/src/utils/loginInfo.ts index bdafc0ad..f50666bc 100644 --- a/apps/storefront/src/utils/loginInfo.ts +++ b/apps/storefront/src/utils/loginInfo.ts @@ -125,6 +125,7 @@ export const clearCurrentCustomerInfo = async (dispatch: DispatchProps) => { B3SStorage.set('salesRepCompanyName', '') B3SStorage.set('nextPath', '') B3SStorage.set('salesRepCompanyId', '') + B3SStorage.set('salesRepCustomerGroupId', '') B3SStorage.set('isAgenting', '') B3SStorage.set('isShowBlockPendingAccountOrderCreationTip', { @@ -257,17 +258,23 @@ export const agentInfo = async ( try { const data: any = await getAgentInfo(customerId) if (data?.superAdminMasquerading) { - const { id, companyName } = data.superAdminMasquerading + const { + id, + companyName, + customerGroupId = 0, + } = data.superAdminMasquerading B3SStorage.set('isAgenting', true) B3SStorage.set('salesRepCompanyId', id) B3SStorage.set('salesRepCompanyName', companyName) + B3SStorage.set('salesRepCustomerGroupId', customerGroupId) dispatch({ type: 'common', payload: { isAgenting: true, salesRepCompanyId: id, salesRepCompanyName: companyName, + salesRepCustomerGroupId: customerGroupId, }, }) } diff --git a/apps/storefront/src/utils/masquerade.ts b/apps/storefront/src/utils/masquerade.ts index 0b2b4301..46bba8af 100644 --- a/apps/storefront/src/utils/masquerade.ts +++ b/apps/storefront/src/utils/masquerade.ts @@ -32,17 +32,19 @@ export const startMasquerade = async ({ // get data to be saved on global const data = await getAgentInfo(customerId) if (!data?.superAdminMasquerading) return - const { id, companyName } = data.superAdminMasquerading + const { id, companyName, customerGroupId = 0 } = data.superAdminMasquerading B3SStorage.set('isAgenting', true) B3SStorage.set('salesRepCompanyId', id) B3SStorage.set('salesRepCompanyName', companyName) + B3SStorage.set('salesRepCustomerGroupId', customerGroupId) dispatch({ type: 'common', payload: { salesRepCompanyId: id, salesRepCompanyName: companyName, + salesRepCustomerGroupId: customerGroupId, isAgenting: true, isB2BUser: true, }, @@ -60,12 +62,14 @@ export const endMasquerade = async ({ B3SStorage.delete('isAgenting') B3SStorage.delete('salesRepCompanyId') B3SStorage.delete('salesRepCompanyName') + B3SStorage.delete('salesRepCustomerGroupId') dispatch({ type: 'common', payload: { salesRepCompanyId: '', salesRepCompanyName: '', + salesRepCustomerGroupId: '', isAgenting: false, }, })