Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2af2fbb
feat: Add support for group-by:violation-approver
nkdengineer Sep 30, 2026
9bed177
Merge branch 'main' into fix/99931
nkdengineer Oct 1, 2026
c7bd8c9
update transaction query
nkdengineer Oct 1, 2026
0c036fd
fix unit test
nkdengineer Oct 1, 2026
0372886
update parser
nkdengineer Oct 1, 2026
5c65e73
fix AI review comment
nkdengineer Oct 1, 2026
4f8c0bb
update translation
nkdengineer Oct 1, 2026
711f4c9
resolve conflict
nkdengineer Oct 13, 2026
284b097
revert unchange code
nkdengineer Oct 13, 2026
fe1e3d7
change violation-approver to approver group-by
nkdengineer Oct 13, 2026
9c0d9dc
Merge branch 'main' into fix/99931
nkdengineer Oct 13, 2026
ae30a39
resolve conflict
nkdengineer Oct 14, 2026
32d4389
resolve conflict
nkdengineer Oct 16, 2026
80da9de
Revert unintended Mobile-Expensify submodule change
nkdengineer Oct 16, 2026
86dea38
resolve conflict
nkdengineer Oct 21, 2026
0dcd22c
run parser
nkdengineer Oct 21, 2026
cca8577
Merge branch 'main' into fix/99931
nkdengineer Oct 23, 2026
6784100
revert unrelated language
nkdengineer Oct 23, 2026
d445cfa
Merge branch 'main' into fix/99931
nkdengineer Oct 26, 2026
25b9fa9
resolve conflict
nkdengineer Oct 28, 2026
e934520
run parser
nkdengineer Oct 28, 2026
24f52bb
update default sortable column to approver
nkdengineer Oct 28, 2026
05ec1dd
resolve conflict
nkdengineer Oct 28, 2026
86ce0c7
Merge branch 'main' into fix/99931
nkdengineer Oct 30, 2026
fd99d9d
Merge branch 'main' into fix/99931
nkdengineer Oct 30, 2026
c3b60ad
support approver full filter
nkdengineer Oct 30, 2026
785d284
show approver filter in advance filter
nkdengineer Oct 30, 2026
7e94e50
only allow approver filter for type:expense
nkdengineer Oct 30, 2026
2e59b23
remove duplicate code
nkdengineer Oct 30, 2026
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
12 changes: 12 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8220,6 +8220,7 @@ const CONST = {
WEEK: 'week',
YEAR: 'year',
QUARTER: 'quarter',
APPROVER: 'approver',
},
/**
* Single source of truth for which transaction-level columns are available in each column-picker surface:
Expand Down Expand Up @@ -8568,6 +8569,12 @@ const CONST = {
EXPENSES: this.TABLE_COLUMNS.GROUP_EXPENSES,
TOTAL: this.TABLE_COLUMNS.GROUP_TOTAL,
},
APPROVER: {
AVATAR: this.TABLE_COLUMNS.AVATAR,
APPROVER: this.TABLE_COLUMNS.GROUP_APPROVER,
EXPENSES: this.TABLE_COLUMNS.GROUP_EXPENSES,
TOTAL: this.TABLE_COLUMNS.GROUP_TOTAL,
},
};
},
get TYPE_DEFAULT_COLUMNS() {
Expand Down Expand Up @@ -8629,6 +8636,7 @@ const CONST = {
WEEK: [this.TABLE_COLUMNS.GROUP_WEEK, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL],
YEAR: [this.TABLE_COLUMNS.GROUP_YEAR, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL],
QUARTER: [this.TABLE_COLUMNS.GROUP_QUARTER, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL],
APPROVER: [this.TABLE_COLUMNS.AVATAR, this.TABLE_COLUMNS.GROUP_APPROVER, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL],
};
},
BOOLEAN: {
Expand Down Expand Up @@ -8757,6 +8765,7 @@ const CONST = {
GROUP_WITHDRAWAL_STATUS: 'groupWithdrawalStatus',
GROUP_AMOUNT_DEBITED: 'groupAmountDebited',
GROUP_AMOUNT_REIMBURSED: 'groupAmountReimbursed',
GROUP_APPROVER: 'groupApprover',
START_DATE: 'startDate',
END_DATE: 'endDate',
TRIP_NAME: 'tripName',
Expand Down Expand Up @@ -8869,6 +8878,7 @@ const CONST = {
SUBMITTER_USER_ID: 'submitterUserID',
SUBMITTER_PAYROLL_ID: 'submitterPayrollID',
ORDER_DEAL_NUMBERS: 'orderDealNumbers',
APPROVER: 'approver',
// The Spend footer's display selections. They travel as filters because that is where the backend reads
// them from, but they never narrow the result set: only `footerTotal` changes the response, by swapping
// which aggregate comes back as the search total.
Expand Down Expand Up @@ -8963,6 +8973,7 @@ const CONST = {
SUBMITTER_USER_ID: 'submitter-user-id',
SUBMITTER_PAYROLL_ID: 'submitter-payroll-id',
ORDER_DEAL_NUMBERS: 'order-deal-numbers',
APPROVER: 'approver',
COLUMNS: 'columns',
LIMIT: 'limit',
FOOTER_COUNT: 'footer-count',
Expand Down Expand Up @@ -9041,6 +9052,7 @@ const CONST = {
[this.TABLE_COLUMNS.GROUP_WITHDRAWAL_STATUS]: 'group-withdrawal-status',
[this.TABLE_COLUMNS.GROUP_AMOUNT_DEBITED]: 'group-amount-debited',
[this.TABLE_COLUMNS.GROUP_AMOUNT_REIMBURSED]: 'group-amount-reimbursed',
[this.TABLE_COLUMNS.GROUP_APPROVER]: 'group-approver',
[this.TABLE_COLUMNS.AMOUNT_DEBITED]: 'amount-debited',
[this.TABLE_COLUMNS.AMOUNT_REIMBURSED]: 'amount-reimbursed',
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ function ListFilterContent({
case CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.TO:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM: {
content = (
<UserSelector
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ const INITIAL_FILTER = CONST.SEARCH.SYNTAX_FILTER_KEYS.TYPE;
/** The filters whose contents are derived from the whole contact list, the one derivation heavy enough to be felt. */
const DEFERRED_CONTENT_FILTERS = new Set<SearchFilter['key']>([
CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM,
CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER,
CONST.SEARCH.SYNTAX_FILTER_KEYS.TO,
CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE,
CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE,
Expand Down
9 changes: 9 additions & 0 deletions src/components/Search/SearchList/ListItem/GroupHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,15 @@ function GroupHeader({
{...commonProps}
/>
);
case CONST.SEARCH.GROUP_BY.APPROVER:
return (
<MemberListItemHeader
member={groupItem}
nameColumn={CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER}
{...commonProps}
isLargeScreenWidth={isLargeScreenWidth}
/>
);
default:
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,22 @@ import CONST from '@src/CONST';
import React from 'react';
import {View} from 'react-native';

import type {TransactionMemberGroupListItemType} from './types';
import type {TransactionApproverGroupListItemType, TransactionMemberGroupListItemType} from './types';

import ExpandCollapseArrowButton from './ExpandCollapseArrowButton';
import TextCell from './TextCell';
import TotalCell from './TotalCell';

type MemberGroupListItemType = TransactionMemberGroupListItemType | TransactionApproverGroupListItemType;

type MemberListItemHeaderProps = {
member: TransactionMemberGroupListItemType;
onCheckboxPress?: (item: TransactionMemberGroupListItemType) => void;
/** The person this group is for: the submitter when grouping by from, the approver when grouping by approver */
member: MemberGroupListItemType;

onCheckboxPress?: (item: MemberGroupListItemType) => void;

/** The column that shows the member's name, which differs between the from and approver groupings */
nameColumn?: typeof CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM | typeof CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER;

/** Whether this section items disabled for selection */
isDisabled?: boolean | null;
Expand Down Expand Up @@ -59,6 +66,7 @@ function MemberListItemHeader({
onDownArrowClick,
columns,
isLargeScreenWidth,
nameColumn = CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM,
}: MemberListItemHeaderProps) {
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
Expand All @@ -83,10 +91,10 @@ function MemberListItemHeader({
</UserDetailsTooltip>
</View>
),
[CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM]: (
[nameColumn]: (
<View
key={CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM}
style={StyleUtils.getReportTableColumnStyles(CONST.SEARCH.TABLE_COLUMNS.FROM)}
key={nameColumn}
style={StyleUtils.getReportTableColumnStyles(nameColumn)}
>
<View style={styles.flexShrink1}>
<TextWithTooltip
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import type {TransactionPreviewData} from '@libs/actions/Search';
import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID';
import type {ModifiedMouseEvent} from '@libs/Navigation/helpers/openInternalRouteInNewTab';
import {getLoginByAccountID} from '@libs/PersonalDetailsUtils';
import {isCashBackWithdrawalGroup, isTransactionDayGroupListItemType} from '@libs/SearchUIUtils';
import {isCashBackWithdrawalGroup, isTransactionApproverGroupListItemType, isTransactionDayGroupListItemType} from '@libs/SearchUIUtils';
import {COPYABLE_ROW_DATA_SET} from '@libs/SelectionScraper';
import {getVisibleTransactionViolations, isTransactionPendingDelete} from '@libs/TransactionUtils';

Expand Down Expand Up @@ -483,6 +483,26 @@ function TransactionGroupListItemImpl({
isExpanded={isExpanded}
/>
),
[CONST.SEARCH.GROUP_BY.APPROVER]: (() => {
if (!isTransactionApproverGroupListItemType(groupItem)) {
return null;
}
return (
<MemberListItemHeader
member={groupItem}
nameColumn={CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER}
onCheckboxPress={handleSelectionButtonPress}
isDisabled={isDisabledOrEmpty}
columns={columns}
canSelectMultiple={canSelectMultiple}
isSelectAllChecked={isSelectAllChecked}
isIndeterminate={isIndeterminate}
onDownArrowClick={onExpandIconPress}
isExpanded={isExpanded}
isLargeScreenWidth={isLargeScreenWidth}
/>
);
})(),
};

if (searchType === CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT) {
Expand Down
9 changes: 9 additions & 0 deletions src/components/Search/SearchList/ListItem/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import type {
} from '@src/types/onyx';
import type {Errors, Icon} from '@src/types/onyx/OnyxCommon';
import type {
SearchApproverGroup,
SearchCardGroup,
SearchCategoryGroup,
SearchDataTypes,
Expand Down Expand Up @@ -530,6 +531,12 @@ type TransactionQuarterGroupListItemType = TransactionGroupListItemType & {group
sortKey: number;
};

type TransactionApproverGroupListItemType = TransactionGroupListItemType & {groupedBy: typeof CONST.SEARCH.GROUP_BY.APPROVER} & PersonalDetails &
SearchApproverGroup & {
/** Final and formatted approver name used for displaying and sorting */
formattedApprover?: string;
};

type TransactionListItemProps<TItem extends ListItem> = ListItemProps<TItem> &
SearchListActionProps & {
/** Whether the item's action is loading */
Expand Down Expand Up @@ -602,6 +609,7 @@ type GroupHeaderItemType =
| (TransactionWeekGroupListItemType & GroupHeaderListItemType)
| (TransactionYearGroupListItemType & GroupHeaderListItemType)
| (TransactionQuarterGroupListItemType & GroupHeaderListItemType)
| (TransactionApproverGroupListItemType & GroupHeaderListItemType)
| (TransactionGroupListItemType & GroupHeaderListItemType);

type GroupChildrenContainerItemType = TransactionGroupListItemType & {
Expand Down Expand Up @@ -661,6 +669,7 @@ export type {
TransactionWeekGroupListItemType,
TransactionYearGroupListItemType,
TransactionQuarterGroupListItemType,
TransactionApproverGroupListItemType,
TransactionWithdrawalIDGroupListItemType,
TransactionGroupListItemProps,
TransactionGroupListExpandedProps,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ function ReportDropdown({label, value, PopoverComponent, sentryLabel, onClosePre

const FILTER_COMPONENT_MAP: Partial<Record<SearchFilter['key'], React.ComponentType<DropdownProps>>> = {
[CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM]: UserDropdown,
[CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER]: UserDropdown,
[CONST.SEARCH.SYNTAX_FILTER_KEYS.TO]: UserDropdown,
[CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY]: UserDropdown,
[CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE]: UserDropdown,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ function buildSubstitutionsMap(
}
} else if (
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM ||
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER ||
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.TO ||
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.IN ||
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.CARD_ID ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const getSubstitutionMapKey = (filterKey: SearchFilterKey, value: string) => `${

const USER_FILTER_KEYS = new Set<string>([
CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM,
CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER,
CONST.SEARCH.SYNTAX_FILTER_KEYS.TO,
CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER,
Expand Down
15 changes: 15 additions & 0 deletions src/components/Search/SearchTableHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -577,6 +577,21 @@ const getTransactionGroupHeaders = (groupBy: SearchGroupBy, icons: SearchHeaderI
},
...commonGroupHeaders,
];
case CONST.SEARCH.GROUP_BY.APPROVER:
return [
{
columnName: CONST.SEARCH.TABLE_COLUMNS.AVATAR,
translationKey: undefined,
icon: icons.Profile,
isColumnSortable: false,
},
{
columnName: CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER,
translationKey: 'search.filters.groupBy.approver',
isColumnSortable: true,
},
...commonGroupHeaders,
];
default:
return [];
}
Expand Down
5 changes: 5 additions & 0 deletions src/components/Search/chartGroupByConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@ const CHART_GROUP_BY_CONFIG: Record<SearchGroupBy, ChartGroupByConfig> = {
},
getDateRange: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.QUARTER ? DateUtils.getQuarterDateRange(item.year, item.quarter) : undefined),
},
[CONST.SEARCH.GROUP_BY.APPROVER]: {
titleIconName: 'Users',
getLabel: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.APPROVER ? (item.formattedApprover ?? '') : ''),
getFilterQuery: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.APPROVER ? `${CONST.SEARCH.GROUP_BY.APPROVER}:${item.accountID}` : ''),
},
};

export default CHART_GROUP_BY_CONFIG;
Expand Down
3 changes: 2 additions & 1 deletion src/components/Search/hooks/useGroupedItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ function useGroupedItems(searchResults: OnyxEntry<SearchResults>, queryJSON: Rea
const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID);
const [rules] = useOnyx(ONYXKEYS.COLLECTION.RULE);
const groupBy = queryJSON?.groupBy;
const [onyxPersonalDetailsList] = usePersonalDetailsByIDs(groupBy === CONST.SEARCH.GROUP_BY.FROM ? getGroupedAccountIDs(searchResults?.data) : undefined);
const shouldLoadGroupPersonalDetails = groupBy === CONST.SEARCH.GROUP_BY.FROM || groupBy === CONST.SEARCH.GROUP_BY.APPROVER;
const [onyxPersonalDetailsList] = usePersonalDetailsByIDs(shouldLoadGroupPersonalDetails ? getGroupedAccountIDs(searchResults?.data) : undefined);

const sortedSections =
searchResults?.data && queryJSON && groupBy && login
Expand Down
7 changes: 5 additions & 2 deletions src/components/Search/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import type {
TransactionMonthGroupListItemType,
TransactionQuarterGroupListItemType,
TransactionTagGroupListItemType,
TransactionApproverGroupListItemType,
TransactionWeekGroupListItemType,
TransactionWithdrawalIDGroupListItemType,
TransactionYearGroupListItemType,
Expand Down Expand Up @@ -195,7 +196,8 @@ type SearchCustomColumnIds =
| ValueOf<typeof CONST.SEARCH.GROUP_CUSTOM_COLUMNS.MONTH>
| ValueOf<typeof CONST.SEARCH.GROUP_CUSTOM_COLUMNS.WEEK>
| ValueOf<typeof CONST.SEARCH.GROUP_CUSTOM_COLUMNS.YEAR>
| ValueOf<typeof CONST.SEARCH.GROUP_CUSTOM_COLUMNS.QUARTER>;
| ValueOf<typeof CONST.SEARCH.GROUP_CUSTOM_COLUMNS.QUARTER>
| ValueOf<typeof CONST.SEARCH.GROUP_CUSTOM_COLUMNS.APPROVER>;

type SearchQueryContextValue = {
currentSearchHash: number;
Expand Down Expand Up @@ -477,7 +479,8 @@ type GroupedItem =
| TransactionMonthGroupListItemType
| TransactionWeekGroupListItemType
| TransactionYearGroupListItemType
| TransactionQuarterGroupListItemType;
| TransactionQuarterGroupListItemType
| TransactionApproverGroupListItemType;

type SearchChartDataRow = {
/** The point plotted on the chart */
Expand Down
1 change: 1 addition & 0 deletions src/hooks/useAdvancedSearchFilters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ const typeFiltersKeys = {
CONST.SEARCH.SYNTAX_FILTER_KEYS.HELD,
CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVED,
CONST.SEARCH.SYNTAX_FILTER_KEYS.ANY_APPROVAL,
CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY,
],
Expand Down
1 change: 1 addition & 0 deletions src/hooks/useAutocompleteSuggestions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,7 @@ function useAutocompleteSuggestions({
case CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.TO:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE:
Expand Down
1 change: 1 addition & 0 deletions src/hooks/useSearchBulkActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,7 @@ function getAllMatchingReportQuery(queryJSON: SearchQueryJSON, excludedTransacti
*/
const TEMPLATE_EXPORTABLE_GROUP_BYS = new Set<SearchGroupBy>([
CONST.SEARCH.GROUP_BY.FROM,
CONST.SEARCH.GROUP_BY.APPROVER,
CONST.SEARCH.GROUP_BY.CARD,
CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID,
CONST.SEARCH.GROUP_BY.CATEGORY,
Expand Down
2 changes: 2 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10830,6 +10830,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
[CONST.SEARCH.GROUP_BY.WEEK]: 'Woche',
[CONST.SEARCH.GROUP_BY.YEAR]: 'Jahr',
[CONST.SEARCH.GROUP_BY.QUARTER]: 'Quartal',
[CONST.SEARCH.GROUP_BY.APPROVER]: 'Genehmiger',
},
feed: 'Feed',
withdrawalType: {
Expand Down Expand Up @@ -10889,6 +10890,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
[CONST.SEARCH.GROUP_BY.WEEK]: 'Wochen',
[CONST.SEARCH.GROUP_BY.YEAR]: 'Jahre',
[CONST.SEARCH.GROUP_BY.QUARTER]: 'Quartale',
[CONST.SEARCH.GROUP_BY.APPROVER]: 'Genehmiger',
},
moneyRequestReport: {emptyStateTitle: 'Noch keine Ausgaben', accessPlaceHolder: 'Für Details öffnen'},
noCategory: 'Keine Kategorie',
Expand Down
2 changes: 2 additions & 0 deletions src/languages/el.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11041,6 +11041,7 @@ ${reportName}`,
[CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδα',
[CONST.SEARCH.GROUP_BY.YEAR]: 'Έτος',
[CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνο',
[CONST.SEARCH.GROUP_BY.APPROVER]: 'Εγκρίνων',
},
feed: 'Ροή',
withdrawalType: {
Expand Down Expand Up @@ -11104,6 +11105,7 @@ ${reportName}`,
[CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδες',
[CONST.SEARCH.GROUP_BY.YEAR]: 'Έτη',
[CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνα',
[CONST.SEARCH.GROUP_BY.APPROVER]: 'Εγκρίνοντες',
},
moneyRequestReport: {
emptyStateTitle: 'Καμία δαπάνη ακόμη',
Expand Down
2 changes: 2 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11113,6 +11113,7 @@ const translations = {
[CONST.SEARCH.GROUP_BY.WEEK]: 'Week',
[CONST.SEARCH.GROUP_BY.YEAR]: 'Year',
[CONST.SEARCH.GROUP_BY.QUARTER]: 'Quarter',
[CONST.SEARCH.GROUP_BY.APPROVER]: 'Approver',
},
feed: 'Feed',
transactionStatus: {
Expand Down Expand Up @@ -11176,6 +11177,7 @@ const translations = {
[CONST.SEARCH.GROUP_BY.WEEK]: 'Weeks',
[CONST.SEARCH.GROUP_BY.YEAR]: 'Years',
[CONST.SEARCH.GROUP_BY.QUARTER]: 'Quarters',
[CONST.SEARCH.GROUP_BY.APPROVER]: 'Approvers',
},
moneyRequestReport: {
emptyStateTitle: 'No expenses yet',
Expand Down
2 changes: 2 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10682,6 +10682,7 @@ ${reportName}`,
[CONST.SEARCH.GROUP_BY.WEEK]: 'Semana',
[CONST.SEARCH.GROUP_BY.YEAR]: 'Año',
[CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre',
[CONST.SEARCH.GROUP_BY.APPROVER]: 'Aprobador',
},
feed: 'Feed',
withdrawalType: {
Expand Down Expand Up @@ -10727,6 +10728,7 @@ ${reportName}`,
[CONST.SEARCH.GROUP_BY.WEEK]: 'Semanas',
[CONST.SEARCH.GROUP_BY.YEAR]: 'Años',
[CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestres',
[CONST.SEARCH.GROUP_BY.APPROVER]: 'Aprobadores',
},
moneyRequestReport: {emptyStateTitle: 'Aún no hay gastos', accessPlaceHolder: 'Abrir para ver detalles'},
noCategory: 'Sin categoría',
Expand Down
Loading
Loading