Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1635,6 +1635,7 @@ const CONST = {
INTEGRATIONS_MESSAGE: 'INTEGRATIONSMESSAGE', // OldDot Action
MANAGER_ATTACH_RECEIPT: 'MANAGERATTACHRECEIPT', // OldDot Action
MANAGER_DETACH_RECEIPT: 'MANAGERDETACHRECEIPT', // OldDot Action
MARKED_REDEEMED: 'MARKEDREDEEMED', // OldDot Action
MARKED_REIMBURSED: 'MARKEDREIMBURSED', // OldDot Action
MARK_REIMBURSED_FROM_INTEGRATION: 'ACTIONMARKEDREIMBURSEDFROMINTEGRATION', // OldDot Action
MERGED_WITH_CASH_TRANSACTION: 'MERGEDWITHCASHTRANSACTION',
Expand Down Expand Up @@ -7115,6 +7116,7 @@ const CONST = {
APPROVED: this.TABLE_COLUMNS.APPROVED,
FIRST_APPROVER: this.TABLE_COLUMNS.FIRST_APPROVER,
FIRST_APPROVED: this.TABLE_COLUMNS.FIRST_APPROVED,
PAID_BY: this.TABLE_COLUMNS.PAID_BY,
EXPORTED: this.TABLE_COLUMNS.EXPORTED,
STATUS: this.TABLE_COLUMNS.STATUS,
PAID_STATUS: this.TABLE_COLUMNS.PAID_STATUS,
Expand Down Expand Up @@ -7309,6 +7311,7 @@ const CONST = {
APPROVED: 'approved',
FIRST_APPROVER: 'firstapprover',
FIRST_APPROVED: 'firstapproved',
PAID_BY: 'paidBy',
POSTED: 'posted',
EXPORTED: 'exported',
MERCHANT: 'merchant',
Expand Down Expand Up @@ -7416,6 +7419,7 @@ const CONST = {
FROM: 'from',
TO: 'to',
PAYER: 'payer',
PAID_BY: 'paidBy',
EXPORTER: 'exporter',
CATEGORY: 'category',
TAG: 'tag',
Expand Down Expand Up @@ -7497,6 +7501,7 @@ const CONST = {
FROM: 'from',
TO: 'to',
PAYER: 'payer',
PAID_BY: 'paid-by',
EXPORTER: 'exporter',
CATEGORY: 'category',
TAG: 'tag',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ function ListFilterContent({
case CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE:
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.FROM: {
content = (
<UserSelector
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,18 @@ function ExpenseReportListItemRowWide({
/>
</View>
),
[CONST.SEARCH.TABLE_COLUMNS.PAID_BY]: (
<View style={[StyleUtils.getReportTableColumnStyles(CONST.SEARCH.TABLE_COLUMNS.PAID_BY)]}>
{!!item.paidByAccountID && (
<UserInfoCell
accountID={item.paidByAccountID}
avatar={item.paidByAvatar}
displayName={item.formattedPaidBy ?? ''}
isLargeScreenWidth
/>
)}
</View>
),
[CONST.SEARCH.TABLE_COLUMNS.EXPORTED]: (
<View style={[StyleUtils.getReportTableColumnStyles(CONST.SEARCH.TABLE_COLUMNS.EXPORTED, {isExportedColumnWide: item.shouldShowYearExported})]}>
<DateCell
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 @@ -267,6 +267,15 @@ type TransactionReportGroupListItemType = TransactionGroupListItemType & {groupe
/** Final and formatted "first approver" value used for displaying and sorting */
formattedFirstApprover?: string;

/** The avatar of the user the report was paid by */
paidByAvatar?: AvatarSource;

/** Account ID of the user the report was paid by (actor on the latest payment report action) */
paidByAccountID?: number;

/** Final and formatted "paid by" value used for displaying and sorting */
formattedPaidBy?: string;

/** Whether the status field should be shown in a pending state */
shouldShowStatusAsPending?: boolean;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,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.TO]: UserDropdown,
[CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY]: UserDropdown,
[CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE]: UserDropdown,
[CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE]: UserDropdown,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ function buildSubstitutionsMap(
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE ||
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER ||
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER ||
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY ||
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE
) {
const displayValue = getFilterDisplayValue({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const USER_FILTER_KEYS = new Set<string>([
CONST.SEARCH.SYNTAX_FILTER_KEYS.TO,
CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY,
CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER,
CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE,
]);
Expand Down
4 changes: 4 additions & 0 deletions src/components/Search/SearchTableHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,10 @@ const getExpenseReportHeaders = (profileIcon?: IconAsset): SearchColumnConfig[]
columnName: CONST.SEARCH.TABLE_COLUMNS.FIRST_APPROVED,
translationKey: 'search.filters.firstApproved',
},
{
columnName: CONST.SEARCH.TABLE_COLUMNS.PAID_BY,
translationKey: 'search.filters.paidBy',
},
{
columnName: CONST.SEARCH.TABLE_COLUMNS.EXPORTED,
translationKey: 'search.filters.exported',
Expand Down
4 changes: 4 additions & 0 deletions src/hooks/useAdvancedSearchFilters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ const typeFiltersKeys = {
CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS,
CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM,
CONST.SEARCH.SYNTAX_FILTER_KEYS.TO,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY,
CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID,
],
[
Expand Down Expand Up @@ -81,6 +82,7 @@ const typeFiltersKeys = {
CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS,
CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM,
CONST.SEARCH.SYNTAX_FILTER_KEYS.TO,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY,
CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID,
],
[
Expand Down Expand Up @@ -111,6 +113,7 @@ const typeFiltersKeys = {
CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS,
CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM,
CONST.SEARCH.SYNTAX_FILTER_KEYS.TO,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY,
CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID,
],
[
Expand Down Expand Up @@ -151,6 +154,7 @@ const typeFiltersKeys = {
CONST.SEARCH.SYNTAX_FILTER_KEYS.STATUS,
CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM,
CONST.SEARCH.SYNTAX_FILTER_KEYS.TO,
CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY,
CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID,
],
[
Expand Down
3 changes: 2 additions & 1 deletion src/hooks/useAutocompleteSuggestions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ function useAutocompleteSuggestions({
case CONST.SEARCH.SYNTAX_FILTER_KEYS.TO:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER: {
// Soft-exclude Expensify-team logins (current and former AMs/Guides) from user filter suggestions. Users can still type any email manually because the search bar accepts free text.
Expand Down Expand Up @@ -273,7 +274,7 @@ function useAutocompleteSuggestions({
}).options.personalDetails.filter((participant) => participant.text && !alreadyAutocompletedKeys.has(participant.text.toLowerCase()));

return participants.map((participant) => ({
filterKey: autocompleteKey,
filterKey: getUserFriendlyKey(autocompleteKey),
text: participant.login === currentUserEmail ? CONST.SEARCH.ME : (participant.text ?? ''),
autocompleteID: String(participant.accountID),
mapKey: autocompleteKey,
Expand Down
1 change: 1 addition & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9045,6 +9045,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
approved: 'Genehmigt',
firstApprover: 'Erste:r Genehmiger:in',
firstApproved: 'Zuerst genehmigt',
paidBy: 'Bezahlt von',
paid: 'Bezahlt',
exported: 'Exportiert',
posted: 'Gebucht',
Expand Down
1 change: 1 addition & 0 deletions src/languages/el.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9269,6 +9269,7 @@ ${reportName}`,
approved: 'Εγκρίθηκε',
firstApprover: 'Πρώτος εγκρίνων',
firstApproved: 'Πρώτη έγκριση',
paidBy: 'Πληρώθηκε από',
paid: 'Πληρωμένο',
exported: 'Έγινε εξαγωγή',
posted: 'Καταχωρισμένο',
Expand Down
1 change: 1 addition & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9186,6 +9186,7 @@ const translations = {
approved: 'Approved',
firstApprover: 'First approver',
firstApproved: 'First approved',
paidBy: 'Paid by',
paid: 'Paid',
exported: 'Exported',
posted: 'Posted',
Expand Down
1 change: 1 addition & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8908,6 +8908,7 @@ El plan Controlar empieza en 9 $ por miembro activo al mes.`,
approved: 'Aprobación',
firstApprover: 'Primer aprobador',
firstApproved: 'Primera aprobación',
paidBy: 'Pagado por',
paid: 'Pago',
exported: 'Exportación',
posted: 'Contabilización',
Expand Down
1 change: 1 addition & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9081,6 +9081,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
approved: 'Approuvé',
firstApprover: 'Premier approbateur',
firstApproved: 'Approuvé en premier',
paidBy: 'Payé par',
paid: 'Payé',
exported: 'Exporté',
posted: 'Publié',
Expand Down
1 change: 1 addition & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9017,6 +9017,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
approved: 'Approvato',
firstApprover: 'Primo approvatore',
firstApproved: 'Approvato per primo',
paidBy: 'Pagato da',
paid: 'Pagato',
exported: 'Esportato',
posted: 'Pubblicato',
Expand Down
1 change: 1 addition & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8905,6 +8905,7 @@ ${reportName}`,
approved: '承認済み',
firstApprover: '最初の承認者',
firstApproved: '最初に承認済み',
paidBy: '支払者',
paid: '支払い済み',
exported: 'エクスポート済み',
posted: '投稿日',
Expand Down
1 change: 1 addition & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8989,6 +8989,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
approved: 'Goedgekeurd',
firstApprover: 'Eerste gemachtigde',
firstApproved: 'Eerst goedgekeurd',
paidBy: 'Betaald door',
paid: 'Betaald',
exported: 'Geëxporteerd',
posted: 'Gepost',
Expand Down
1 change: 1 addition & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8966,6 +8966,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
approved: 'Zatwierdzono',
firstApprover: 'Pierwszy zatwierdzający',
firstApproved: 'Najpierw zatwierdzono',
paidBy: 'Zapłacone przez',
paid: 'Zapłacono',
exported: 'Wyeksportowano',
posted: 'Opublikowano',
Expand Down
1 change: 1 addition & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8984,6 +8984,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
approved: 'Aprovado',
firstApprover: 'Primeira pessoa aprovadora',
firstApproved: 'Primeira aprovada',
paidBy: 'Pago por',
paid: 'Pago',
exported: 'Exportado',
posted: 'Publicado',
Expand Down
1 change: 1 addition & 0 deletions src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8670,6 +8670,7 @@ ${reportName}`,
approved: '已批准',
firstApprover: '首位审批人',
firstApproved: '首次批准',
paidBy: '付款人',
paid: '已支付',
exported: '已导出',
posted: '已发布',
Expand Down
1 change: 1 addition & 0 deletions src/libs/SearchAutocompleteUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ function filterOutRangesWithCorrectValue(
case CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.ASSIGNEE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAYER:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.PAID_BY:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.EXPORTER:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.ATTENDEE:
return substitutionMap[`${range.key}:${range.value}`] !== undefined || userLogins.get().includes(range.value) || range.value === CONST.SEARCH.ME;
Expand Down
Loading
Loading