Skip to content

Commit 1071d10

Browse files
Merge pull request Expensify#82196 from truph01/fix/80872
fix: Not here page shown when navigate to Per Diem from the workspace editor
2 parents d15ad5c + 0575f7d commit 1071d10

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

src/libs/PolicyUtils.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,21 @@ function isControlPolicy(policy: OnyxEntry<Policy>): boolean {
803803
return policy?.type === CONST.POLICY.TYPE.CORPORATE;
804804
}
805805

806+
/**
807+
* Whether the policy can access a feature based on plan level.
808+
* Corporate-only features are restricted to control (Corporate) policies.
809+
*/
810+
function canPolicyAccessFeature(policy: OnyxEntry<Policy>, featureName: PolicyFeatureName): boolean {
811+
if (!isPaidGroupPolicy(policy)) {
812+
return false;
813+
}
814+
const corporateOnlyFeatures = new Set<PolicyFeatureName>([CONST.POLICY.MORE_FEATURES.ARE_RULES_ENABLED, CONST.POLICY.MORE_FEATURES.ARE_PER_DIEM_RATES_ENABLED]);
815+
if (corporateOnlyFeatures.has(featureName)) {
816+
return isControlPolicy(policy);
817+
}
818+
return true;
819+
}
820+
806821
function isCollectPolicy(policy: OnyxEntry<Policy>): boolean {
807822
return policy?.type === CONST.POLICY.TYPE.TEAM;
808823
}
@@ -2030,6 +2045,7 @@ function sortPoliciesByName(policies: Policy[], localeCompare: (a: string, b: st
20302045

20312046
export {
20322047
canEditTaxRate,
2048+
canPolicyAccessFeature,
20332049
escapeTagName,
20342050
getActivePolicies,
20352051
getAdminEmployees,

src/pages/workspace/WorkspaceInitialPage.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {convertToDisplayString} from '@libs/CurrencyUtils';
3333
import Navigation from '@libs/Navigation/Navigation';
3434
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
3535
import {
36+
canPolicyAccessFeature,
3637
shouldShowPolicy as checkIfShouldShowPolicy,
3738
goBackFromInvalidPolicy,
3839
hasPolicyCategoriesError,
@@ -165,7 +166,7 @@ function WorkspaceInitialPage({policyDraft, policy: policyProp, route}: Workspac
165166
[CONST.POLICY.MORE_FEATURES.ARE_REPORT_FIELDS_ENABLED]: policy?.areReportFieldsEnabled,
166167
[CONST.POLICY.MORE_FEATURES.ARE_RULES_ENABLED]: policy?.areRulesEnabled,
167168
[CONST.POLICY.MORE_FEATURES.ARE_INVOICES_ENABLED]: policy?.areInvoicesEnabled,
168-
[CONST.POLICY.MORE_FEATURES.ARE_PER_DIEM_RATES_ENABLED]: policy?.arePerDiemRatesEnabled,
169+
[CONST.POLICY.MORE_FEATURES.ARE_PER_DIEM_RATES_ENABLED]: policy?.arePerDiemRatesEnabled && canPolicyAccessFeature(policy, CONST.POLICY.MORE_FEATURES.ARE_PER_DIEM_RATES_ENABLED),
169170
[CONST.POLICY.MORE_FEATURES.ARE_RECEIPT_PARTNERS_ENABLED]: isBetaEnabled(CONST.BETAS.UBER_FOR_BUSINESS) && (policy?.receiptPartners?.enabled ?? false),
170171
[CONST.POLICY.MORE_FEATURES.IS_TRAVEL_ENABLED]: policy?.isTravelEnabled,
171172
[CONST.POLICY.MORE_FEATURES.IS_TIME_TRACKING_ENABLED]: isTimeTrackingEnabled(policy),

src/pages/workspace/WorkspaceMoreFeaturesPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import {getLatestErrorField} from '@libs/ErrorUtils';
2626
import Navigation from '@libs/Navigation/Navigation';
2727
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
2828
import type {WorkspaceSplitNavigatorParamList} from '@libs/Navigation/types';
29-
import {getDistanceRateCustomUnit, getPerDiemCustomUnit, hasAccountingConnections, isControlPolicy, isTimeTrackingEnabled} from '@libs/PolicyUtils';
29+
import {canPolicyAccessFeature, getDistanceRateCustomUnit, getPerDiemCustomUnit, hasAccountingConnections, isControlPolicy, isTimeTrackingEnabled} from '@libs/PolicyUtils';
3030
import {enablePolicyCategories} from '@userActions/Policy/Category';
3131
import {enablePolicyDistanceRates} from '@userActions/Policy/DistanceRate';
3232
import {enablePerDiem} from '@userActions/Policy/PerDiem';
@@ -247,7 +247,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro
247247
icon: illustrations.PerDiem,
248248
titleTranslationKey: 'workspace.moreFeatures.perDiem.title',
249249
subtitleTranslationKey: 'workspace.moreFeatures.perDiem.subtitle',
250-
isActive: policy?.arePerDiemRatesEnabled ?? false,
250+
isActive: (policy?.arePerDiemRatesEnabled && canPolicyAccessFeature(policy, CONST.POLICY.MORE_FEATURES.ARE_PER_DIEM_RATES_ENABLED)) ?? false,
251251
pendingAction: policy?.pendingFields?.arePerDiemRatesEnabled,
252252
action: (isEnabled: boolean) => {
253253
if (!policyID) {

0 commit comments

Comments
 (0)