Skip to content
Merged
4 changes: 4 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2575,6 +2575,10 @@ const ROUTES = {
route: 'workspaces/:policyID/travel/settings/account',
getRoute: (policyID: string) => `workspaces/${policyID}/travel/settings/account` as const,
},
WORKSPACE_TRAVEL_SETTINGS_FREQUENCY: {
route: 'workspaces/:policyID/travel/settings/frequency',
getRoute: (policyID: string) => `workspaces/${policyID}/travel/settings/frequency` as const,
},
WORKSPACE_CREATE_DISTANCE_RATE: {
route: 'workspaces/:policyID/distance-rates/new',
getRoute: (policyID: string, transactionID?: string, reportID?: string) =>
Expand Down
1 change: 1 addition & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,7 @@ const SCREENS = {
DISTANCE_RATES: 'Distance_Rates',
TRAVEL: 'Travel',
TRAVEL_SETTINGS_ACCOUNT: 'Workspace_Travel_Settings_Account',
TRAVEL_SETTINGS_FREQUENCY: 'Workspace_Travel_Settings_Frequency',
CREATE_DISTANCE_RATE: 'Create_Distance_Rate',
CREATE_DISTANCE_RATE_UPGRADE: 'Create_Distance_Rate_Upgrade',
DISTANCE_RATES_SETTINGS: 'Distance_Rates_Settings',
Expand Down
1 change: 1 addition & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5209,6 +5209,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
currentTravelLimitLabel: 'Aktuelles Reisekontingent',
settlementAccountLabel: 'Verrechnungskonto',
settlementFrequencyLabel: 'Auszahlungsfrequenz',
settlementFrequencyDescription: 'Wie oft Expensify Ihr Geschäftskonto belastet, um aktuelle Expensify Travel-Transaktionen zu begleichen.',
},
},
},
Expand Down
1 change: 1 addition & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5162,6 +5162,7 @@ const translations = {
currentTravelLimitLabel: 'Current travel limit',
settlementAccountLabel: 'Settlement account',
settlementFrequencyLabel: 'Settlement frequency',
settlementFrequencyDescription: 'How often Expensify will pull from your business bank account to settle recent Expensify Travel transactions.',
},
},
},
Expand Down
2 changes: 2 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4920,6 +4920,8 @@ ${amount} para ${merchant} - ${date}`,
currentTravelLimitLabel: 'Límite actual de viajes',
settlementAccountLabel: 'Cuenta de liquidación',
settlementFrequencyLabel: 'Frecuencia de liquidación',
settlementFrequencyDescription:
'Con qué frecuencia Expensify retirará fondos de la cuenta bancaria de tu empresa para liquidar transacciones recientes de Expensify Travel.',
},
},
},
Expand Down
2 changes: 2 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5217,6 +5217,8 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
currentTravelLimitLabel: 'Plafond de déplacement actuel',
settlementAccountLabel: 'Compte de règlement',
settlementFrequencyLabel: 'Fréquence de règlement',
settlementFrequencyDescription:
'Fréquence à laquelle Expensify prélèvera sur votre compte bancaire professionnel pour régler les transactions récentes d’Expensify Travel.',
},
},
},
Expand Down
2 changes: 2 additions & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5190,6 +5190,8 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
currentTravelLimitLabel: 'Limite di viaggio attuale',
settlementAccountLabel: 'Conto di regolamento',
settlementFrequencyLabel: 'Frequenza di regolamento',
settlementFrequencyDescription:
'Con quale frequenza Expensify preleverà dal tuo conto bancario aziendale per saldare le recenti transazioni di Expensify Travel.',
},
},
},
Expand Down
1 change: 1 addition & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5153,6 +5153,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO
currentTravelLimitLabel: '現在の出張上限',
settlementAccountLabel: '決済口座',
settlementFrequencyLabel: '清算頻度',
settlementFrequencyDescription: 'Expensify が直近の Expensify Travel 取引を精算するために、あなたのビジネス銀行口座から資金を引き落とす頻度。',
},
},
},
Expand Down
1 change: 1 addition & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5183,6 +5183,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_
currentTravelLimitLabel: 'Huidige reisl imiet',
settlementAccountLabel: 'Verrekeningsrekening',
settlementFrequencyLabel: 'Uitbetalingsfrequentie',
settlementFrequencyDescription: 'Hoe vaak Expensify geld van uw zakelijke bankrekening zal incasseren om recente Expensify Travel-transacties te vereffenen.',
},
},
},
Expand Down
1 change: 1 addition & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5171,6 +5171,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
currentTravelLimitLabel: 'Aktualny limit podróży',
settlementAccountLabel: 'Konto rozliczeniowe',
settlementFrequencyLabel: 'Częstotliwość rozliczeń',
settlementFrequencyDescription: 'Jak często Expensify będzie pobierać środki z firmowego konta bankowego, aby rozliczyć ostatnie transakcje Expensify Travel.',
},
},
},
Expand Down
2 changes: 2 additions & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5175,6 +5175,8 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS
currentTravelLimitLabel: 'Limite de viagem atual',
settlementAccountLabel: 'Conta de liquidação',
settlementFrequencyLabel: 'Frequência de liquidação',
settlementFrequencyDescription:
'Com que frequência o Expensify vai debitar da sua conta bancária empresarial para liquidar as transações recentes do Expensify Travel.',
},
},
},
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 @@ -5083,6 +5083,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
currentTravelLimitLabel: '当前出行限额',
settlementAccountLabel: '结算账户',
settlementFrequencyLabel: '结算频率',
settlementFrequencyDescription: 'Expensify 从您的企业银行账户中扣款以结算最近 Expensify Travel 交易的频率。',
},
},
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type {ValueOf} from 'type-fest';
import type CONST from '@src/CONST';

type UpdateTravelInvoicingSettlementFrequencyParams = {
policyID: string;
workspaceAccountID: number;
settlementFrequency: ValueOf<typeof CONST.EXPENSIFY_CARD.FREQUENCY_SETTING>;
};

export default UpdateTravelInvoicingSettlementFrequencyParams;
1 change: 1 addition & 0 deletions src/libs/API/parameters/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,7 @@ export type {default as RemoveDomainAdminParams} from './RemoveDomainAdminParams
export type {default as DeleteDomainMemberParams} from './DeleteDomainMemberParams';
export type {default as DeleteDomainParams} from './DeleteDomainParams';
export type {default as GetDuplicateTransactionDetailsParams} from './GetDuplicateTransactionDetailsParams';
export type {default as UpdateTravelInvoicingSettlementFrequencyParams} from './UpdateTravelInvoicingSettlementFrequencyParams';
export type {default as SetPolicyCodingRuleParams} from './SetPolicyCodingRuleParams';
export type {default as RegisterAuthenticationKeyParams} from './RegisterAuthenticationKeyParams';
export type {default as TroubleshootMultifactorAuthenticationParams} from './TroubleshootMultifactorAuthenticationParams';
Expand Down
2 changes: 2 additions & 0 deletions src/libs/API/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,7 @@ const WRITE_COMMANDS = {
UPDATE_CARD_SETTLEMENT_FREQUENCY: 'UpdateCardSettlementFrequency',
UPDATE_CARD_SETTLEMENT_ACCOUNT: 'UpdateCardSettlementAccount',
SET_TRAVEL_INVOICING_SETTLEMENT_ACCOUNT: 'SetTravelInvoicingSettlementAccount',
UPDATE_TRAVEL_INVOICE_SETTLEMENT_FREQUENCY: 'UpdateTravelInvoiceSettlementFrequency',
UPDATE_XERO_IMPORT_TRACKING_CATEGORIES: 'UpdateXeroImportTrackingCategories',
UPDATE_XERO_IMPORT_TAX_RATES: 'UpdateXeroImportTaxRates',
UPDATE_XERO_TENANT_ID: 'UpdateXeroTenantID',
Expand Down Expand Up @@ -1054,6 +1055,7 @@ type WriteCommandParameters = {
[WRITE_COMMANDS.UPDATE_CARD_SETTLEMENT_FREQUENCY]: Parameters.UpdateCardSettlementFrequencyParams;
[WRITE_COMMANDS.UPDATE_CARD_SETTLEMENT_ACCOUNT]: Parameters.UpdateCardSettlementAccountParams;
[WRITE_COMMANDS.SET_TRAVEL_INVOICING_SETTLEMENT_ACCOUNT]: Parameters.SetTravelInvoicingSettlementAccountParams;
[WRITE_COMMANDS.UPDATE_TRAVEL_INVOICE_SETTLEMENT_FREQUENCY]: Parameters.UpdateTravelInvoicingSettlementFrequencyParams;
[WRITE_COMMANDS.SET_PERSONAL_DETAILS_AND_SHIP_EXPENSIFY_CARDS]: Parameters.SetPersonalDetailsAndShipExpensifyCardsParams;
[WRITE_COMMANDS.SELF_TOUR_VIEWED]: null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,7 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
[SCREENS.WORKSPACE.EXPENSIFY_CARD_SETTINGS_ACCOUNT]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/WorkspaceSettlementAccountPage').default,
[SCREENS.WORKSPACE.EXPENSIFY_CARD_SETTINGS_FREQUENCY]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/WorkspaceSettlementFrequencyPage').default,
[SCREENS.WORKSPACE.TRAVEL_SETTINGS_ACCOUNT]: () => require<ReactComponentModule>('../../../../pages/workspace/travel/WorkspaceTravelInvoicingSettlementAccountPage').default,
[SCREENS.WORKSPACE.TRAVEL_SETTINGS_FREQUENCY]: () => require<ReactComponentModule>('../../../../pages/workspace/travel/WorkspaceTravelInvoicingSettlementFrequencyPage').default,
[SCREENS.WORKSPACE.EXPENSIFY_CARD_SELECT_FEED]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/WorkspaceExpensifyCardSelectorPage').default,
[SCREENS.WORKSPACE.EXPENSIFY_CARD_BANK_ACCOUNT]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/WorkspaceExpensifyCardBankAccounts').default,
[SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage').default,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ const WORKSPACE_TO_RHP: Partial<Record<keyof WorkspaceSplitNavigatorParamList, s
SCREENS.WORKSPACE.DISTANCE_RATE_DETAILS,
SCREENS.WORKSPACE.CREATE_DISTANCE_RATE,
],
[SCREENS.WORKSPACE.TRAVEL]: [SCREENS.WORKSPACE.TRAVEL_SETTINGS_ACCOUNT],
[SCREENS.WORKSPACE.TRAVEL]: [SCREENS.WORKSPACE.TRAVEL_SETTINGS_ACCOUNT, SCREENS.WORKSPACE.TRAVEL_SETTINGS_FREQUENCY],
[SCREENS.WORKSPACE.REPORTS]: [
SCREENS.WORKSPACE.REPORTS_DEFAULT_TITLE,
SCREENS.WORKSPACE.REPORT_FIELDS_CREATE,
Expand Down
3 changes: 3 additions & 0 deletions src/libs/Navigation/linkingConfig/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -826,6 +826,9 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
[SCREENS.WORKSPACE.TRAVEL_SETTINGS_ACCOUNT]: {
path: ROUTES.WORKSPACE_TRAVEL_SETTINGS_ACCOUNT.route,
},
[SCREENS.WORKSPACE.TRAVEL_SETTINGS_FREQUENCY]: {
path: ROUTES.WORKSPACE_TRAVEL_SETTINGS_FREQUENCY.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_SETTINGS]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_SETTINGS.route,
},
Expand Down
3 changes: 3 additions & 0 deletions src/libs/Navigation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1282,6 +1282,9 @@ type SettingsNavigatorParamList = {
[SCREENS.WORKSPACE.TRAVEL_SETTINGS_ACCOUNT]: {
policyID: string;
};
[SCREENS.WORKSPACE.TRAVEL_SETTINGS_FREQUENCY]: {
policyID: string;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_SETTINGS]: {
policyID: string;
};
Expand Down
8 changes: 6 additions & 2 deletions src/libs/TravelInvoicingUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,16 @@ function getTravelSettlementAccount(cardSettings: OnyxEntry<ExpensifyCardSetting

/**
* Gets the settlement frequency for Travel Invoicing.
* Returns 'daily' or 'monthly' based on whether a monthly settlement date is configured.
* - If monthlySettlementDate is truthy (a Date), frequency is Monthly.
* - If monthlySettlementDate is falsy (null/undefined), frequency is Daily.
* - If cardSettings is missing, default to Monthly per design doc.
*/
function getTravelSettlementFrequency(cardSettings: OnyxEntry<ExpensifyCardSettings>): string {
// Default to monthly per design doc when no settings exist
if (!cardSettings) {
return CONST.EXPENSIFY_CARD.FREQUENCY_SETTING.DAILY;
return CONST.EXPENSIFY_CARD.FREQUENCY_SETTING.MONTHLY;
}
// If monthlySettlementDate is set, it's monthly; otherwise it's daily
return cardSettings.monthlySettlementDate ? CONST.EXPENSIFY_CARD.FREQUENCY_SETTING.MONTHLY : CONST.EXPENSIFY_CARD.FREQUENCY_SETTING.DAILY;
}

Expand Down
Loading
Loading