Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
c89da4e
remove deprecatedCurrentUserAccountID in src/libs/TransactionUtils/in…
rayane-d Nov 26, 2025
d18cfcb
Remove deprecatedCurrentUserAccountID in src/libs/TransactionUtils/in…
rayane-d Nov 26, 2025
a070edf
Merge branch 'Expensify:main' into deprecatedCurrentUserAccountID
rayane-d Nov 26, 2025
15a1749
prettier
rayane-d Nov 26, 2025
41ebe4d
Remove deprecatedCurrentUserAccountID in src/libs/TransactionUtils/in…
rayane-d Nov 26, 2025
72a32ec
fix lint
rayane-d Nov 26, 2025
a8662f6
fix lint errors
rayane-d Nov 26, 2025
43fa7ce
fix lint warnings
rayane-d Nov 26, 2025
69a159c
make currentUserEmail param required in ReportUtils.hasViolations fu…
rayane-d Nov 27, 2025
0e6aba1
Merge branch 'Expensify:main' into deprecatedCurrentUserAccountID
rayane-d Nov 27, 2025
cc115b6
prettier
rayane-d Nov 27, 2025
2d62753
Merge branch 'main' into deprecatedCurrentUserAccountID
rayane-d Nov 27, 2025
0c549a4
fix errors
rayane-d Nov 27, 2025
5b72a83
Merge branch 'Expensify:main' into deprecatedCurrentUserAccountID
rayane-d Nov 27, 2025
adfc7fa
Merge branch 'Expensify:main' into deprecatedCurrentUserAccountID
rayane-d Nov 28, 2025
dd8616c
Address review comments
rayane-d Dec 1, 2025
0675069
Merge branch 'Expensify:main' into deprecatedCurrentUserAccountID
rayane-d Dec 1, 2025
e8f8ddc
fix lint
rayane-d Dec 1, 2025
63ca173
Merge branch 'Expensify:main' into deprecatedCurrentUserAccountID
rayane-d Dec 1, 2025
8ecc2ab
Merge branch 'Expensify:main' into deprecatedCurrentUserAccountID
rayane-d Dec 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 26 additions & 10 deletions src/components/MoneyReportHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -255,8 +255,8 @@ function MoneyReportHeader({
}, [reportTransactions]);

const shouldBlockSubmit = useMemo(() => {
return shouldBlockSubmitDueToStrictPolicyRules(moneyRequestReport?.reportID, violations, areStrictPolicyRulesEnabled, transactions);
}, [moneyRequestReport?.reportID, violations, areStrictPolicyRulesEnabled, transactions]);
return shouldBlockSubmitDueToStrictPolicyRules(moneyRequestReport?.reportID, violations, areStrictPolicyRulesEnabled, accountID, email ?? '', transactions);
}, [moneyRequestReport?.reportID, violations, areStrictPolicyRulesEnabled, accountID, email, transactions]);

const iouTransactionID = isMoneyRequestAction(requestParentReportAction) ? getOriginalMessage(requestParentReportAction)?.IOUTransactionID : undefined;
const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${getNonEmptyStringOnyxID(iouTransactionID)}`, {
Expand Down Expand Up @@ -292,7 +292,7 @@ function MoneyReportHeader({
const [allTransactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true});
const {isBetaEnabled} = usePermissions();
const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT);
const hasViolations = hasViolationsReportUtils(moneyRequestReport?.reportID, allTransactionViolations);
const hasViolations = hasViolationsReportUtils(moneyRequestReport?.reportID, allTransactionViolations, accountID, email ?? '');

const [exportModalStatus, setExportModalStatus] = useState<ExportType | null>(null);
const {showConfirmModal} = useConfirmModal();
Expand Down Expand Up @@ -327,11 +327,11 @@ function MoneyReportHeader({
// Check if there is pending rter violation in all transactionViolations with given transactionIDs.
// wrapped in useMemo to avoid unnecessary re-renders and for better performance (array operation inside of function)
const hasAllPendingRTERViolations = useMemo(
() => allHavePendingRTERViolation(transactions, violations, email ?? '', moneyRequestReport, policy),
[transactions, violations, email, moneyRequestReport, policy],
() => allHavePendingRTERViolation(transactions, violations, email ?? '', accountID, moneyRequestReport, policy),
[transactions, violations, email, accountID, moneyRequestReport, policy],
);
// Check if user should see broken connection violation warning.
const shouldShowBrokenConnectionViolation = shouldShowBrokenConnectionViolationForMultipleTransactions(transactions, moneyRequestReport, policy, violations, email ?? '');
const shouldShowBrokenConnectionViolation = shouldShowBrokenConnectionViolationForMultipleTransactions(transactions, moneyRequestReport, policy, violations, email ?? '', accountID);
const hasOnlyHeldExpenses = hasOnlyHeldExpensesReportUtils(moneyRequestReport?.reportID);
const isPayAtEndExpense = isPayAtEndExpenseTransactionUtils(transaction);
const isArchivedReport = useReportIsArchived(moneyRequestReport?.reportID);
Expand Down Expand Up @@ -420,7 +420,7 @@ function MoneyReportHeader({

const isFromPaidPolicy = policyType === CONST.POLICY.TYPE.TEAM || policyType === CONST.POLICY.TYPE.CORPORATE;

const hasDuplicates = hasDuplicateTransactions(email ?? '', moneyRequestReport, policy);
const hasDuplicates = hasDuplicateTransactions(email ?? '', accountID, moneyRequestReport, policy);
const shouldShowMarkAsResolved = isMarkAsResolvedAction(moneyRequestReport, transactionViolations);
const shouldShowStatusBar =
hasAllPendingRTERViolations ||
Expand Down Expand Up @@ -606,7 +606,7 @@ function MoneyReportHeader({
};

const getFirstDuplicateThreadID = (transactionsList: OnyxTypes.Transaction[], allReportActions: OnyxTypes.ReportAction[]) => {
const duplicateTransaction = transactionsList.find((reportTransaction) => isDuplicate(reportTransaction, email ?? '', moneyRequestReport, policy));
const duplicateTransaction = transactionsList.find((reportTransaction) => isDuplicate(reportTransaction, email ?? '', accountID, moneyRequestReport, policy));
if (!duplicateTransaction) {
return null;
}
Expand Down Expand Up @@ -642,6 +642,7 @@ function MoneyReportHeader({
const primaryAction = useMemo(() => {
return getReportPrimaryAction({
currentUserEmail: currentUserLogin ?? '',
currentUserAccountID: accountID,
report: moneyRequestReport,
chatReport,
reportTransactions: transactions,
Expand Down Expand Up @@ -669,6 +670,7 @@ function MoneyReportHeader({
isChatReportArchived,
invoiceReceiverPolicy,
currentUserLogin,
accountID,
]);

const confirmExport = useCallback(() => {
Expand Down Expand Up @@ -898,7 +900,7 @@ function MoneyReportHeader({
onPress={() => {
let threadID = transactionThreadReportID ?? getFirstDuplicateThreadID(transactions, reportActions);
if (!threadID) {
const duplicateTransaction = transactions.find((reportTransaction) => isDuplicate(reportTransaction, email ?? '', moneyRequestReport, policy));
const duplicateTransaction = transactions.find((reportTransaction) => isDuplicate(reportTransaction, email ?? '', accountID, moneyRequestReport, policy));
const transactionID = duplicateTransaction?.transactionID;
const iouAction = getIOUActionForReportID(moneyRequestReport?.reportID, transactionID);
const createdTransactionThreadReport = createTransactionThreadReport(moneyRequestReport, iouAction);
Expand All @@ -921,6 +923,7 @@ function MoneyReportHeader({
}
return getSecondaryReportActions({
currentUserEmail: currentUserLogin ?? '',
currentUserAccountID: accountID,
report: moneyRequestReport,
chatReport,
reportTransactions: transactions,
Expand All @@ -932,7 +935,20 @@ function MoneyReportHeader({
policies,
isChatReportArchived,
});
}, [moneyRequestReport, currentUserLogin, chatReport, transactions, originalIOUTransaction, violations, policy, reportNameValuePairs, reportActions, policies, isChatReportArchived]);
}, [
moneyRequestReport,
currentUserLogin,
accountID,
chatReport,
transactions,
originalIOUTransaction,
violations,
policy,
reportNameValuePairs,
reportActions,
policies,
isChatReportArchived,
]);

const secondaryExportActions = useMemo(() => {
if (!moneyRequestReport) {
Expand Down
8 changes: 4 additions & 4 deletions src/components/MoneyRequestHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
import HoldOrRejectEducationalModal from './HoldOrRejectEducationalModal';
import HoldSubmitterEducationalModal from './HoldSubmitterEducationalModal';
import Icon from './Icon';
import * as Expensicons from './Icon/Expensicons';

Check warning on line 62 in src/components/MoneyRequestHeader.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'./Icon/Expensicons' import is restricted from being used by a pattern. Direct imports from Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details
import LoadingBar from './LoadingBar';
import type {MoneyRequestHeaderStatusBarProps} from './MoneyRequestHeaderStatusBar';
import MoneyRequestHeaderStatusBar from './MoneyRequestHeaderStatusBar';
Expand Down Expand Up @@ -112,9 +112,9 @@
const styles = useThemeStyles();
const theme = useTheme();
const {translate} = useLocalize();
const {login: currentUserLogin, email} = useCurrentUserPersonalDetails();
const {login: currentUserLogin, email, accountID} = useCurrentUserPersonalDetails();
const isOnHold = isOnHoldTransactionUtils(transaction);
const isDuplicate = isDuplicateTransactionUtils(transaction, email ?? '', report, policy);
const isDuplicate = isDuplicateTransactionUtils(transaction, email ?? '', accountID, report, policy);
const reportID = report?.reportID;
const {removeTransaction, currentSearchHash} = useSearchContext();
const {isExpenseSplit} = getOriginalTransactionWithSplitInfo(transaction, originalTransaction);
Expand Down Expand Up @@ -195,8 +195,8 @@
if (!report || !parentReport || !transaction) {
return '';
}
return getTransactionThreadPrimaryAction(currentUserLogin ?? '', report, parentReport, transaction, transactionViolations, policy, isFromReviewDuplicates);
}, [parentReport, policy, report, transaction, transactionViolations, isFromReviewDuplicates, currentUserLogin]);
return getTransactionThreadPrimaryAction(currentUserLogin ?? '', accountID, report, parentReport, transaction, transactionViolations, policy, isFromReviewDuplicates);
}, [parentReport, policy, report, transaction, transactionViolations, isFromReviewDuplicates, currentUserLogin, accountID]);

const primaryActionImplementation = {
[CONST.REPORT.TRANSACTION_PRIMARY_ACTIONS.REMOVE_HOLD]: (
Expand Down
2 changes: 1 addition & 1 deletion src/components/ProcessMoneyReportHoldMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ function ProcessMoneyReportHoldMenu({
const {isBetaEnabled} = usePermissions();
const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true});
const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT);
const hasViolations = hasViolationsReportUtils(moneyRequestReport?.reportID, transactionViolations);
const currentUserDetails = useCurrentUserPersonalDetails();
const hasViolations = hasViolationsReportUtils(moneyRequestReport?.reportID, transactionViolations, currentUserDetails.accountID, currentUserDetails.email ?? '');

const onSubmit = (full: boolean) => {
if (isApprove) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import ConfirmModal from '@components/ConfirmModal';
import {DelegateNoAccessContext} from '@components/DelegateNoAccessModalProvider';
import Icon from '@components/Icon';
import * as Expensicons from '@components/Icon/Expensicons';

Check warning on line 14 in src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'@components/Icon/Expensicons' import is restricted from being used by a pattern. Direct imports from Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details

Check warning on line 14 in src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'@components/Icon/Expensicons' import is restricted from being used. Direct imports from @components/Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details
import type {PaymentMethod} from '@components/KYCWall/types';
import MoneyReportHeaderStatusBarSkeleton from '@components/MoneyReportHeaderStatusBarSkeleton';
import OfflineWithFeedback from '@components/OfflineWithFeedback';
Expand Down Expand Up @@ -167,7 +167,7 @@
const {isBetaEnabled} = usePermissions();
const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true});
const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT);
const hasViolations = hasViolationsReportUtils(iouReport?.reportID, transactionViolations);
const hasViolations = hasViolationsReportUtils(iouReport?.reportID, transactionViolations, currentUserDetails.accountID, currentUserDetails.email ?? '');

const getCanIOUBePaid = useCallback(
(shouldShowOnlyPayElsewhere = false, shouldCheckApprovedState = true) =>
Expand Down Expand Up @@ -495,6 +495,7 @@
violations,
isIouReportArchived || isChatReportArchived,
currentUserDetails.email ?? '',
currentUserDetails.accountID,
iouReport,
policy,
transactions,
Expand All @@ -517,6 +518,7 @@
isChatReportArchived,
areStrictPolicyRulesEnabled,
currentUserDetails.email,
currentUserDetails.accountID,
]);

const addExpenseDropdownOptions = useMemo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,9 @@ function TransactionPreviewContent({
areThereDuplicates,
isReportAPolicyExpenseChat,
currentUserEmail: currentUserDetails.email ?? '',
currentUserAccountID: currentUserDetails.accountID,
}),
[areThereDuplicates, transactionPreviewCommonArguments, isReportAPolicyExpenseChat, currentUserDetails.email],
[areThereDuplicates, transactionPreviewCommonArguments, isReportAPolicyExpenseChat, currentUserDetails.email, currentUserDetails.accountID],
);

const {shouldShowRBR, shouldShowMerchant, shouldShowSplitShare, shouldShowTag, shouldShowCategory, shouldShowSkeleton, shouldShowDescription} = conditionals;
Expand All @@ -123,9 +124,10 @@ function TransactionPreviewContent({
violationMessage,
reportActions,
currentUserEmail: currentUserDetails.email ?? '',
currentUserAccountID: currentUserDetails.accountID,
originalTransaction,
}),
[transactionPreviewCommonArguments, shouldShowRBR, violationMessage, reportActions, currentUserDetails.email, originalTransaction],
[transactionPreviewCommonArguments, shouldShowRBR, violationMessage, reportActions, currentUserDetails.email, currentUserDetails.accountID, originalTransaction],
);
const getTranslatedText = (item: TranslationPathOrText) => (item.translationPath ? translate(item.translationPath) : (item.text ?? ''));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,14 @@ function TransactionGroupListExpanded<TItem extends ListItem>({
<TransactionItemRow
report={transaction.report}
transactionItem={transaction}
violations={getTransactionViolations(transaction, violations, currentUserDetails.email ?? '', transaction.report, transaction.policy)}
violations={getTransactionViolations(
transaction,
violations,
currentUserDetails.email ?? '',
currentUserDetails.accountID,
transaction.report,
transaction.policy,
)}
isSelected={!!transaction.isSelected}
dateColumnSize={dateColumnSize}
amountColumnSize={amountColumnSize}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,10 @@ function TransactionListItem<TItem extends ListItem>({
const transactionViolations = useMemo(() => {
return (violations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionItem.transactionID}`] ?? []).filter(
(violation: TransactionViolation) =>
!isViolationDismissed(transactionItem, violation, currentUserDetails.email ?? '', snapshotReport, snapshotPolicy) &&
!isViolationDismissed(transactionItem, violation, currentUserDetails.email ?? '', currentUserDetails.accountID, snapshotReport, snapshotPolicy) &&
shouldShowViolation(snapshotReport, snapshotPolicy, violation.name, currentUserDetails.email ?? '', false),
);
}, [snapshotPolicy, snapshotReport, transactionItem, violations, currentUserDetails.email]);
}, [snapshotPolicy, snapshotReport, transactionItem, violations, currentUserDetails.email, currentUserDetails.accountID]);

const handleActionButtonPress = useCallback(() => {
handleActionButtonPressUtil(
Expand Down
2 changes: 1 addition & 1 deletion src/components/SettlementButton/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ function SettlementButton({
const {isBetaEnabled} = usePermissions();
const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true});
const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT);
const hasViolations = hasViolationsReportUtils(iouReport?.reportID, transactionViolations);
const hasViolations = hasViolationsReportUtils(iouReport?.reportID, transactionViolations, accountID, email ?? '');

const isInvoiceReport = (!isEmptyObject(iouReport) && isInvoiceReportUtil(iouReport)) || false;

Expand Down
7 changes: 6 additions & 1 deletion src/hooks/useSearchTypeMenuSections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,12 @@ const useSearchTypeMenuSections = () => {
const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true});
const {isBetaEnabled} = usePermissions();
const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT);
const hasViolations = hasViolationsReportUtils(undefined, transactionViolations);
const hasViolations = hasViolationsReportUtils(
undefined,
transactionViolations,
currentUserLoginAndAccountID?.accountID ?? CONST.DEFAULT_NUMBER_ID,
currentUserLoginAndAccountID?.email ?? '',
);
const [pendingReportCreation, setPendingReportCreation] = useState<{policyID: string; policyName?: string; onConfirm: () => void} | null>(null);

const handlePendingConfirm = useCallback(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/hooks/useTransactionViolations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ function useTransactionViolations(transactionID?: string, shouldShowRterForSettl
mergeProhibitedViolations(
transactionViolations.filter(
(violation: TransactionViolation) =>
!isViolationDismissed(transaction, violation, currentUserDetails.email ?? '', iouReport, policy) &&
!isViolationDismissed(transaction, violation, currentUserDetails.email ?? '', currentUserDetails.accountID, iouReport, policy) &&
shouldShowViolation(iouReport, policy, violation.name, currentUserDetails.email ?? '', shouldShowRterForSettledReport),
),
),
[transaction, transactionViolations, iouReport, policy, shouldShowRterForSettledReport, currentUserDetails.email],
[transaction, transactionViolations, iouReport, policy, shouldShowRterForSettledReport, currentUserDetails.email, currentUserDetails.accountID],
);
}

Expand Down
5 changes: 3 additions & 2 deletions src/hooks/useTransactionsAndViolationsForReport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,15 @@ function useTransactionsAndViolationsForReport(reportID?: string) {

// This is our accumulator, it's okay to reassign
// eslint-disable-next-line no-param-reassign
filteredTransactionViolations[transactionViolationKey] = getTransactionViolations(transaction, violations, currentUserDetails.email ?? '', report, policy) ?? [];
filteredTransactionViolations[transactionViolationKey] =
getTransactionViolations(transaction, violations, currentUserDetails.email ?? '', currentUserDetails.accountID, report, policy) ?? [];
return filteredTransactionViolations;
},
{} as Record<string, TransactionViolations>,
);

return {transactions, violations: filteredViolations};
}, [transactions, violations, currentUserDetails?.email, report, policy]);
}, [transactions, violations, currentUserDetails?.email, currentUserDetails?.accountID, report, policy]);

return transactionsAndViolations;
}
Expand Down
2 changes: 1 addition & 1 deletion src/libs/NextStepUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@

let currentUserAccountID = -1;
let currentUserEmail = '';
Onyx.connect({

Check warning on line 45 in src/libs/NextStepUtils.ts

View workflow job for this annotation

GitHub Actions / ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function

Check warning on line 45 in src/libs/NextStepUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.SESSION,
callback: (value) => {
if (!value) {
Expand All @@ -55,20 +55,20 @@
});

let allPolicies: OnyxCollection<Policy>;
Onyx.connect({

Check warning on line 58 in src/libs/NextStepUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.POLICY,
waitForCollectionCallback: true,
callback: (value) => (allPolicies = value),
});

let allBetas: OnyxEntry<Beta[]>;
Onyx.connect({

Check warning on line 65 in src/libs/NextStepUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.BETAS,
callback: (value) => (allBetas = value),
});

let transactionViolations: OnyxCollection<TransactionViolations>;
Onyx.connect({

Check warning on line 71 in src/libs/NextStepUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS,
waitForCollectionCallback: true,
callback: (value) => {
Expand Down Expand Up @@ -395,7 +395,7 @@
const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`] ?? ({} as Policy);
const {harvesting, autoReportingOffset} = policy;
const autoReportingFrequency = getCorrectedAutoReportingFrequency(policy);
const hasViolations = hasViolationsReportUtils(report?.reportID, transactionViolations);
const hasViolations = hasViolationsReportUtils(report?.reportID, transactionViolations, currentUserAccountID, currentUserEmail);
const isASAPSubmitBetaEnabled = Permissions.isBetaEnabled(CONST.BETAS.ASAP_SUBMIT, allBetas);
const isInstantSubmitEnabled = autoReportingFrequency === CONST.POLICY.AUTO_REPORTING_FREQUENCIES.INSTANT;
const shouldShowFixMessage = hasViolations && isInstantSubmitEnabled && !isASAPSubmitBetaEnabled;
Expand Down
Loading
Loading