Skip to content
Merged
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
9 changes: 9 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7928,6 +7928,11 @@ const CONST = {
search: true,
reportView: true,
},
HELD: {
column: this.TABLE_COLUMNS.HELD,
search: true,
reportView: true,
},
MCC: {column: this.TABLE_COLUMNS.MCC, search: true, reportView: true},
TAX_CODE: {
column: this.TABLE_COLUMNS.TAX_CODE,
Expand Down Expand Up @@ -8223,6 +8228,7 @@ const CONST = {
ORIGINAL_AMOUNT: 'originalamount',
REIMBURSABLE: 'reimbursable',
BILLABLE: 'billable',
HELD: 'held',
TAX_RATE: 'taxrate',
TOTAL_AMOUNT: 'amount',
ATTENDEES: 'attendees',
Expand Down Expand Up @@ -8373,6 +8379,7 @@ const CONST = {
REIMBURSABLE: 'reimbursable',
BILLABLE: 'billable',
DECLINED: 'declined',
HELD: 'held',
POLICY_ID: 'policyID',
ACTION: 'action',
HAS: 'has',
Expand Down Expand Up @@ -8465,6 +8472,7 @@ const CONST = {
REIMBURSABLE: 'reimbursable',
BILLABLE: 'billable',
DECLINED: 'declined',
HELD: 'held',
ACTION: 'action',
HAS: 'has',
PURCHASE_AMOUNT: 'purchase-amount',
Expand Down Expand Up @@ -8505,6 +8513,7 @@ const CONST = {
[this.TABLE_COLUMNS.ORIGINAL_AMOUNT]: 'purchase-amount',
[this.TABLE_COLUMNS.REIMBURSABLE]: 'reimbursable',
[this.TABLE_COLUMNS.BILLABLE]: 'billable',
[this.TABLE_COLUMNS.HELD]: 'held',
[this.TABLE_COLUMNS.TAX_RATE]: 'tax-rate',
[this.TABLE_COLUMNS.TOTAL_AMOUNT]: 'amount',
[this.TABLE_COLUMNS.TOTAL]: 'total',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ type SingleSelectFilterKeys =
| typeof CONST.SEARCH.SYNTAX_FILTER_KEYS.BILLABLE
| typeof CONST.SEARCH.SYNTAX_FILTER_KEYS.REIMBURSABLE
| typeof CONST.SEARCH.SYNTAX_FILTER_KEYS.DECLINED
| typeof CONST.SEARCH.SYNTAX_FILTER_KEYS.HELD
| typeof CONST.SEARCH.SYNTAX_FILTER_KEYS.WITHDRAWAL_TYPE
| typeof CONST.SEARCH.SYNTAX_FILTER_KEYS.TRANSACTION_STATUS;
type SingleSelectListFilterContentProps = SearchFilterCommonProps<SearchAdvancedFiltersForm[SingleSelectFilterKeys] | undefined> & {
Expand Down Expand Up @@ -252,6 +253,7 @@ function ListFilterContent({
case CONST.SEARCH.SYNTAX_FILTER_KEYS.BILLABLE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.REIMBURSABLE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.DECLINED:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.HELD:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.TRANSACTION_STATUS:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.WITHDRAWAL_TYPE: {
const isSingleSelectFilterValue = (v: ListFilterContentProps['value']): v is SingleSelectListFilterContentProps['value'] => {
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 @@ -136,6 +136,10 @@ const getExpenseHeaders = (groupBy?: SearchGroupBy): SearchColumnConfig[] => [
columnName: CONST.SEARCH.TABLE_COLUMNS.BILLABLE,
translationKey: 'common.billable',
},
{
columnName: CONST.SEARCH.TABLE_COLUMNS.HELD,
translationKey: 'search.filters.held',
},
{
columnName: CONST.SEARCH.TABLE_COLUMNS.MCC,
translationKey: 'common.mcc',
Expand Down
5 changes: 3 additions & 2 deletions src/components/Search/SortableTableHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,16 @@ function SortableTableHeader({
const isSortable = shouldShowSorting && isColumnSortable;
const sortByColumnName = sortColumnName ?? columnName;
const isActive = sortBy === sortByColumnName;
const isReimbursableOrBillableColumn = columnName === CONST.SEARCH.TABLE_COLUMNS.REIMBURSABLE || columnName === CONST.SEARCH.TABLE_COLUMNS.BILLABLE;
const isYesNoColumn =
columnName === CONST.SEARCH.TABLE_COLUMNS.REIMBURSABLE || columnName === CONST.SEARCH.TABLE_COLUMNS.BILLABLE || columnName === CONST.SEARCH.TABLE_COLUMNS.HELD;
const isConversionAmountColumn =
columnName === CONST.SEARCH.TABLE_COLUMNS.GROUP_AMOUNT_DEBITED ||
columnName === CONST.SEARCH.TABLE_COLUMNS.GROUP_AMOUNT_REIMBURSED ||
columnName === CONST.SEARCH.TABLE_COLUMNS.AMOUNT_DEBITED ||
columnName === CONST.SEARCH.TABLE_COLUMNS.AMOUNT_REIMBURSED;
const textStyle = [
columnName === CONST.SEARCH.TABLE_COLUMNS.RECEIPT ? StyleUtils.getTextOverflowStyle('clip') : null,
isReimbursableOrBillableColumn || isConversionAmountColumn ? styles.flexShrink1 : null,
isYesNoColumn || isConversionAmountColumn ? styles.flexShrink1 : null,
];

return (
Expand Down
45 changes: 19 additions & 26 deletions src/components/TransactionItemRow/TransactionItemRowWide.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ import {
getTaxName,
isDeletedTransaction as isDeletedTransactionUtil,
isExpenseUnreported,
isOnHold,
isPerDiemRequest,
isScanning,
isTimeRequest,
Expand Down Expand Up @@ -178,6 +179,20 @@ function TransactionItemRowWide({
fullHeightMainRowStyle = hasValidationMessage ? styles.mnh13 : styles.tableRowHeight;
}

const renderYesNoCell = (columnName: SearchColumnType, value: boolean) => (
<View
key={columnName}
style={[getSearchColumnStyles(columnName)]}
>
<Text
selectable
dataSet={COPYABLE_TEXT_DATA_SET}
>
{value ? translate('common.yes') : translate('common.no')}
</Text>
</View>
);

const renderColumn = (column: SearchColumnType): React.ReactNode => {
const shouldHideTaxValueByRequestType = isTimeRequest(transactionItem) || isPerDiemRequest(transactionItem);
switch (column) {
Expand Down Expand Up @@ -338,33 +353,11 @@ function TransactionItemRowWide({
</View>
);
case CONST.SEARCH.TABLE_COLUMNS.REIMBURSABLE:
return (
<View
key={column}
style={[getSearchColumnStyles(CONST.SEARCH.TABLE_COLUMNS.REIMBURSABLE)]}
>
<Text
selectable
dataSet={COPYABLE_TEXT_DATA_SET}
>
{getReimbursable(transactionItem) ? translate('common.yes') : translate('common.no')}
</Text>
</View>
);
return renderYesNoCell(column, getReimbursable(transactionItem));
case CONST.SEARCH.TABLE_COLUMNS.BILLABLE:
return (
<View
key={column}
style={[getSearchColumnStyles(CONST.SEARCH.TABLE_COLUMNS.BILLABLE)]}
>
<Text
selectable
dataSet={COPYABLE_TEXT_DATA_SET}
>
{transactionItem.billable ? translate('common.yes') : translate('common.no')}
</Text>
</View>
);
return renderYesNoCell(column, !!transactionItem.billable);
case CONST.SEARCH.TABLE_COLUMNS.HELD:
return renderYesNoCell(column, isOnHold(transactionItem));
case CONST.SEARCH.TABLE_COLUMNS.ACTION:
return (
<View
Expand Down
1 change: 1 addition & 0 deletions src/hooks/useAdvancedSearchFilters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ const typeFiltersKeys = {
CONST.SEARCH.SYNTAX_FILTER_KEYS.REIMBURSABLE,
CONST.SEARCH.SYNTAX_FILTER_KEYS.BILLABLE,
CONST.SEARCH.SYNTAX_FILTER_KEYS.DECLINED,
CONST.SEARCH.SYNTAX_FILTER_KEYS.HELD,
CONST.SEARCH.SYNTAX_FILTER_KEYS.CARD_ID,
CONST.SEARCH.SYNTAX_FILTER_KEYS.BANK_ACCOUNT,
CONST.SEARCH.SYNTAX_FILTER_KEYS.FEED,
Expand Down
3 changes: 2 additions & 1 deletion src/hooks/useAutocompleteSuggestions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,8 @@ function useAutocompleteSuggestions({
}
case CONST.SEARCH.SYNTAX_FILTER_KEYS.REIMBURSABLE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.BILLABLE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.DECLINED: {
case CONST.SEARCH.SYNTAX_FILTER_KEYS.DECLINED:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.HELD: {
const filteredValues = BOOLEAN_VALUES.filter((value) => value.includes(autocompleteValue.toLowerCase()) && !alreadyAutocompletedKeys.has(value)).sort();

return filteredValues.map((value) => ({
Expand Down
1 change: 1 addition & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10291,6 +10291,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
withdrawn: 'Zurückgezogen',
billable: 'Abrechenbar',
rejected: 'Abgelehnt',
held: 'Zurückgestellt',
reimbursable: 'Erstattungsfähig',
purchaseCurrency: 'Kaufwährung',
sortOrder: {
Expand Down
1 change: 1 addition & 0 deletions src/languages/el.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10495,6 +10495,7 @@ ${reportName}`,
withdrawn: 'Ανακλήθηκε',
billable: 'Χρεώσιμη',
rejected: 'Απορρίφθηκε',
held: 'Σε αναμονή',
reimbursable: 'Επανεντάξιμο',
purchaseCurrency: 'Νόμισμα αγοράς',
sortOrder: {
Expand Down
1 change: 1 addition & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10540,6 +10540,7 @@ const translations = {
withdrawn: 'Withdrawn',
billable: 'Billable',
rejected: 'Rejected',
held: 'Held',
reimbursable: 'Reimbursable',
purchaseCurrency: 'Purchase currency',
sortOrder: {
Expand Down
1 change: 1 addition & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10135,6 +10135,7 @@ ${reportName}`,
withdrawn: 'Retirada',
billable: 'Facturable',
rejected: 'Rechazado',
held: 'Retenido',
reimbursable: 'Reembolsable',
purchaseCurrency: 'Moneda de compra',
sortOrder: {
Expand Down
1 change: 1 addition & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10321,6 +10321,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
withdrawn: 'Retiré',
billable: 'Facturable',
rejected: 'Rejeté',
held: 'En attente',
reimbursable: 'Remboursable',
purchaseCurrency: 'Devise d’achat',
sortOrder: {
Expand Down
1 change: 1 addition & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10242,6 +10242,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
withdrawn: 'Ritirata',
billable: 'Fatturabile',
rejected: 'Rifiutato',
held: 'In sospeso',
reimbursable: 'Rimborsabile',
purchaseCurrency: 'Valuta di acquisto',
sortOrder: {
Expand Down
1 change: 1 addition & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10099,6 +10099,7 @@ ${reportName}`,
withdrawn: '取下済み',
billable: '請求可能',
rejected: '却下済み',
held: '保留中',
reimbursable: '払い戻し対象',
purchaseCurrency: '購入通貨',
sortOrder: {
Expand Down
1 change: 1 addition & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10209,6 +10209,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
withdrawn: 'Ingetrokken',
billable: 'Factureerbaar',
rejected: 'Afgekeurd',
held: 'In de wacht',
reimbursable: 'Vergoedbaar',
purchaseCurrency: 'Aankoopvaluta',
sortOrder: {
Expand Down
1 change: 1 addition & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10225,6 +10225,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
withdrawn: 'Wycofano',
billable: 'Fakturowalne',
rejected: 'Odrzucone',
held: 'Wstrzymane',
reimbursable: 'Podlegające zwrotowi',
purchaseCurrency: 'Waluta zakupu',
sortOrder: {
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 @@ -10206,6 +10206,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
withdrawn: 'Retirado',
billable: 'Faturável',
rejected: 'Rejeitado',
held: 'Em espera',
reimbursable: 'Reembolsável',
purchaseCurrency: 'Moeda de compra',
sortOrder: {
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 @@ -9830,6 +9830,7 @@ ${reportName}`,
withdrawn: '已撤回',
billable: '可计费',
rejected: '已拒绝',
held: '已搁置',
reimbursable: '可报销',
purchaseCurrency: '购买货币',
sortOrder: {
Expand Down
3 changes: 3 additions & 0 deletions src/libs/ReportUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15042,6 +15042,7 @@ const sortableColumnNames = [
CONST.SEARCH.TABLE_COLUMNS.TOTAL,
CONST.SEARCH.TABLE_COLUMNS.REIMBURSABLE,
CONST.SEARCH.TABLE_COLUMNS.BILLABLE,
CONST.SEARCH.TABLE_COLUMNS.HELD,
CONST.SEARCH.TABLE_COLUMNS.EXCHANGE_RATE,
CONST.SEARCH.TABLE_COLUMNS.ORIGINAL_AMOUNT,
CONST.SEARCH.TABLE_COLUMNS.MCC,
Expand Down Expand Up @@ -15119,6 +15120,8 @@ function getTransactionSortValue(
return getReimbursable(transaction) ? 1 : 0;
case CONST.SEARCH.TABLE_COLUMNS.BILLABLE:
return transaction.billable ? 1 : 0;
case CONST.SEARCH.TABLE_COLUMNS.HELD:
return isOnHoldTransactionUtils(transaction) ? 1 : 0;
case CONST.SEARCH.TABLE_COLUMNS.EXCHANGE_RATE:
return getExchangeRate(transaction, report?.currency);
case CONST.SEARCH.TABLE_COLUMNS.ORIGINAL_AMOUNT:
Expand Down
1 change: 1 addition & 0 deletions src/libs/SearchAutocompleteUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ function filterOutRangesWithCorrectValue(
case CONST.SEARCH.SYNTAX_FILTER_KEYS.BILLABLE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.REIMBURSABLE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.DECLINED:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.HELD:
return booleanList.includes(range.value);
case CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE:
case CONST.SEARCH.SYNTAX_FILTER_KEYS.SUBMITTED:
Expand Down
Loading
Loading