Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
b42a1c4
define export pages
s77rt Jun 29, 2026
a95101f
safer ts
s77rt Jun 29, 2026
627ba1e
add RilletExportPage
s77rt Jun 30, 2026
9f0b9b3
lint + ts
s77rt Jun 30, 2026
c47de78
merge s77rt:Rillet-integration-import
s77rt Jun 30, 2026
60e4522
add RilletPreferredExporterPage
s77rt Jul 1, 2026
9e9b9d2
add RilletVendorBillDatePage
s77rt Jul 1, 2026
0132e5d
add RilletDefaultCompanyCardVendorPage
s77rt Jul 1, 2026
dabddf4
add RilletCompanyCardAccountPage
s77rt Jul 1, 2026
a24abe1
add translate keys
s77rt Jul 1, 2026
3bc3297
define export API params
s77rt Jul 1, 2026
a3ecb00
add prepareRilletExportOptimisticData
s77rt Jul 1, 2026
2d6f34b
fix ts
s77rt Jul 1, 2026
8415423
add export API calls
s77rt Jul 1, 2026
a8991a2
wire API calls on value change
s77rt Jul 1, 2026
bc8d147
use correct field for optimisitc data
s77rt Jul 1, 2026
5704806
fix ts
s77rt Jul 1, 2026
37999d4
merge s77rt:Rillet-integration-import
s77rt Jul 2, 2026
df30699
fix access control
s77rt Jul 2, 2026
2d355fa
update api params for UpdateRilletCreditCardAccount
s77rt Jul 2, 2026
cef5fe3
filter company card accounts
s77rt Jul 2, 2026
e4d4a2f
add missed screen
s77rt Jul 2, 2026
bd18ff7
add Rillet exporter path
s77rt Jul 2, 2026
a5da7f1
update comment
s77rt Jul 2, 2026
861a61a
Merge branch 'Rillet-integration-import' into Rillet-integration-export
s77rt Jul 3, 2026
6a77f89
add empty list content
s77rt Jul 3, 2026
d41a24b
add empty list content
s77rt Jul 3, 2026
0d19261
style
s77rt Jul 3, 2026
41be5cb
Merge branch 'main' into Rillet-integration-export
s77rt Jul 6, 2026
9917fa3
fix typo
s77rt Jul 6, 2026
166b90e
fix callback name
s77rt Jul 6, 2026
99d7150
safer access
s77rt Jul 6, 2026
e9173f9
translate
s77rt Jul 6, 2026
a927578
Revert "translate"
s77rt Jul 7, 2026
09daf26
Merge branch 'main' into Rillet-integration-export
s77rt Jul 7, 2026
f74d08a
translate
s77rt Jul 7, 2026
a134640
add Rillet non-reimbursable url
s77rt Jul 7, 2026
ec2ce24
Revert "add Rillet non-reimbursable url"
s77rt Jul 7, 2026
83173d8
add Rillet non-reimbursable url (2)
s77rt Jul 7, 2026
0cfe6fd
lint
s77rt Jul 7, 2026
fa7a51d
Merge branch 'main' into Rillet-integration-export
s77rt Jul 7, 2026
360388a
Merge branch 'main' into Rillet-integration-export
s77rt Jul 8, 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
31 changes: 31 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3386,6 +3386,37 @@ const CONST = {
TAG: 'TAG',
},

RILLET_EXPORT_REIMBURSABLE: {
VENDOR_BILL: 'VENDOR_BILL',
},

RILLET_EXPORT_COMPANY_CARD: {
CREDIT_CARD: 'CREDIT_CARD',
},

RILLET_EXPORT_DATE: {
LAST_EXPENSE: 'LAST_EXPENSE',
REPORT_EXPORTED: 'REPORT_EXPORTED',
REPORT_SUBMITTED: 'REPORT_SUBMITTED',
},

RILLET_ACCOUNT_STATUS: {
ACTIVE: 'ACTIVE',
INACTIVE: 'INACTIVE',
},

RILLET_ACCOUNT_TYPE: {
ASSET: 'ASSET',
LIABILITY: 'LIABILITY',
EQUITY: 'EQUITY',
EXPENSE: 'EXPENSE',
INCOME: 'INCOME',
},

RILLET_ACCOUNT_SUBTYPE: {
CREDIT_CARD: 'Credit Card',
},

UPDATE_PERSONAL_BANK_ACCOUNT: {
PAGE_NAME: {
LEGAL_NAME: 'legal-name',
Expand Down
20 changes: 20 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4043,6 +4043,26 @@ const ROUTES = {
route: 'workspaces/:policyID/accounting/rillet/import',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/rillet/import` as const,
},
POLICY_ACCOUNTING_RILLET_EXPORT: {
route: 'workspaces/:policyID/accounting/rillet/export',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/rillet/export` as const,
},
POLICY_ACCOUNTING_RILLET_PREFERRED_EXPORTER: {
route: 'workspaces/:policyID/accounting/rillet/export/preferred-exporter',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/rillet/export/preferred-exporter` as const,
},
POLICY_ACCOUNTING_RILLET_VENDOR_BILL_DATE: {
route: 'workspaces/:policyID/accounting/rillet/export/vendor-bill-date',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/rillet/export/vendor-bill-date` as const,
},
POLICY_ACCOUNTING_RILLET_COMPANY_CARD_ACCOUNT: {
route: 'workspaces/:policyID/accounting/rillet/export/company-card-account',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/rillet/export/company-card-account` as const,
},
POLICY_ACCOUNTING_RILLET_DEFAULT_COMPANY_CARD_VENDOR: {
route: 'workspaces/:policyID/accounting/rillet/export/default-company-card-vendor',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/rillet/export/default-company-card-vendor` as const,
},
ADD_EXISTING_EXPENSE: {
route: 'search/r/:reportID/add-existing-expense/:backToReport?',
getRoute: (reportID: string | undefined, backToReport?: string) => `search/r/${reportID}/add-existing-expense/${backToReport ?? ''}` as const,
Expand Down
5 changes: 5 additions & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -661,6 +661,11 @@ const SCREENS = {
RILLET_EXISTING_CONNECTIONS: 'Policy_Accounting_Rillet_Existing_Connections',
RILLET_SUBSIDIARY_SELECTOR: 'Policy_Accounting_Rillet_Subsidiary_Selector',
RILLET_IMPORT: 'Policy_Accounting_Rillet_Import',
RILLET_EXPORT: 'Policy_Accounting_Rillet_Export',
RILLET_PREFERRED_EXPORTER: 'Policy_Accounting_Rillet_Preferred_Exporter',
RILLET_VENDOR_BILL_DATE: 'Policy_Accounting_Rillet_Vendor_Bill_Date',
RILLET_COMPANY_CARD_ACCOUNT: 'Policy_Accounting_Rillet_Company_Card_Account',
RILLET_DEFAULT_COMPANY_CARD_VENDOR: 'Policy_Accounting_Rillet_Default_Company_Card_Vendor',
CARD_RECONCILIATION: 'Policy_Accounting_Card_Reconciliation',
CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC: 'Policy_Accounting_Card_Reconciliation_Sage_Intacct_Auto_Sync',
DYNAMIC_RECONCILIATION_ACCOUNT_SETTINGS: 'Dynamic_Policy_Accounting_Reconciliation_Account_Settings',
Expand Down
51 changes: 40 additions & 11 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,3 @@
import type {OnboardingTask} from '@libs/actions/Welcome/OnboardingFlow';
import StringUtils from '@libs/StringUtils';

import CONST from '@src/CONST';
import type {Country} from '@src/CONST';
import type OriginalMessage from '@src/types/onyx/OriginalMessage';
import type {OriginalMessageSettlementAccountLocked, PersonalRulesModifiedFields, PolicyRulesModifiedFields} from '@src/types/onyx/OriginalMessage';

import type {ValueOf} from 'type-fest';

/**
* _____ __ __
* / ___/__ ___ ___ _______ _/ /____ ___/ /
Expand All @@ -19,6 +9,16 @@ import type {ValueOf} from 'type-fest';
* - Improve the prompts in prompts/translation, or
* - Improve context annotations in src/languages/en.ts
*/
import type {OnboardingTask} from '@libs/actions/Welcome/OnboardingFlow';
import StringUtils from '@libs/StringUtils';

import CONST from '@src/CONST';
import type {Country} from '@src/CONST';
import type OriginalMessage from '@src/types/onyx/OriginalMessage';
import type {OriginalMessageSettlementAccountLocked, PersonalRulesModifiedFields, PolicyRulesModifiedFields} from '@src/types/onyx/OriginalMessage';

import type {ValueOf} from 'type-fest';

import {CONST as COMMON_CONST, Str} from 'expensify-common';
import startCase from 'lodash/startCase';

Expand Down Expand Up @@ -63,7 +63,6 @@ import type {
YourPlanPriceParams,
} from './params';
import type {TranslationDeepObject} from './types';

type StateValue = {
stateISO: string;
stateName: string;
Expand Down Expand Up @@ -5531,6 +5530,36 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
enableNewAccountsDescription: 'Neue Rillet-Konten werden als Kategorien verfügbar sein.',
dimensionsImport: 'Alle Rillet-Dimensionen werden als Tags importiert',
importDescription: 'Wählen Sie, welche Buchungskonfigurationen aus Rillet importiert werden sollen.',
noVendorsFound: 'Keine Anbieter gefunden',
noVendorsFoundDescription: 'Bitte fügen Sie Lieferanten in Rillet hinzu und synchronisieren Sie die Verbindung erneut',
noAccountsFound: 'Keine Konten gefunden',
noAccountsFoundDescription: 'Bitte fügen Sie Konten in Rillet hinzu und synchronisieren Sie die Verbindung erneut',
exportDescription: 'Konfigurieren Sie, wie Expensify-Daten nach Rillet exportiert werden.',
exportReimbursable: {label: 'Erstattungsfähige Ausgaben exportieren als', values: {[CONST.RILLET_EXPORT_REIMBURSABLE.VENDOR_BILL]: {label: 'Lieferantenrechnungen'}}},
exportDate: {
label: 'Rechnungsdatum des Lieferanten',
description: 'Verwenden Sie dieses Datum beim Exportieren von Berichten nach Rillet.',
values: {
[CONST.RILLET_EXPORT_DATE.LAST_EXPENSE]: {
label: 'Datum der letzten Ausgabe',
description: 'Datum der letzten im Bericht erfassten Ausgabe.',
},
[CONST.RILLET_EXPORT_DATE.REPORT_EXPORTED]: {
label: 'Exportdatum',
description: 'Datum, an dem der Bericht nach Rillet exportiert wurde.',
},
[CONST.RILLET_EXPORT_DATE.REPORT_SUBMITTED]: {
label: 'Einreichungsdatum',
description: 'Datum, an dem der Bericht zur Genehmigung eingereicht wurde.',
},
},
},
exportCompanyCard: {label: 'Firmenkartenausgaben exportieren als', values: {[CONST.RILLET_EXPORT_COMPANY_CARD.CREDIT_CARD]: {label: 'Kreditkarten'}}},
defaultCompanyCardVendor: {
label: 'Standardanbieter für Firmenkarten',
description: 'Wählen Sie einen standardmäßigen Rillet-Anbieter für Ausgaben, die nicht automatisch zugeordnet werden.',
},
companyCardAccount: {label: 'Firmenkartenkonto', description: 'Wählen Sie aus, wohin die Firmenkartentransaktionen exportiert werden sollen.'},
},
type: {
free: 'Kostenlos',
Expand Down
47 changes: 47 additions & 0 deletions src/languages/en.ts
Comment thread
s77rt marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -5586,11 +5586,58 @@ const translations = {
subsidiarySelectDescription: "Choose the subsidiary in Rillet that you'd like to import data from.",
noSubsidiariesFound: 'No subsidiaries found',
noSubsidiariesFoundDescription: 'Please add a subsidiary in Rillet and sync the connection again',
noVendorsFound: 'No vendors found',
noVendorsFoundDescription: 'Please add vendors in Rillet and sync the connection again',
noAccountsFound: 'No accounts found',
noAccountsFoundDescription: 'Please add accounts in Rillet and sync the connection again',
accountTypesDescription: 'Your Rillet accounts will import as categories.',
enableNewAccountsTitle: 'Enable newly imported accounts',
enableNewAccountsDescription: 'New Rillet accounts will be available as categories.',
dimensionsImport: 'All Rillet dimensions import as tags',
importDescription: 'Choose which coding configurations to import from Rillet.',
exportDescription: 'Configure how Expensify data exports to Rillet.',
exportReimbursable: {
label: 'Export reimbursable expenses as',
values: {
[CONST.RILLET_EXPORT_REIMBURSABLE.VENDOR_BILL]: {
label: 'Vendor bills',
},
},
},
exportDate: {
label: 'Vendor bill date',
description: 'Use this date when exporting reports to Rillet.',
values: {
[CONST.RILLET_EXPORT_DATE.LAST_EXPENSE]: {
label: 'Date of last expense',
description: 'Date of the most recent expense on the report.',
},
[CONST.RILLET_EXPORT_DATE.REPORT_EXPORTED]: {
label: 'Export date',
description: 'Date the report was exported to Rillet.',
},
[CONST.RILLET_EXPORT_DATE.REPORT_SUBMITTED]: {
label: 'Submitted date',
description: 'Date the report was submitted for approval.',
},
},
},
exportCompanyCard: {
label: 'Export company card expenses as',
values: {
[CONST.RILLET_EXPORT_COMPANY_CARD.CREDIT_CARD]: {
label: 'Credit cards',
},
},
},
defaultCompanyCardVendor: {
label: 'Default company card vendor',
description: "Choose a default Rillet vendor for expenses that don't match automatically.",
},
companyCardAccount: {
label: 'Company card account',
description: 'Choose where to export company card transactions.',
},
},
type: {
free: 'Free',
Expand Down
37 changes: 33 additions & 4 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import CONST from '@src/CONST';
import type {OriginalMessageSettlementAccountLocked, PersonalRulesModifiedFields, PolicyRulesModifiedFields} from '@src/types/onyx/OriginalMessage';

/**
* _____ __ __
* / ___/__ ___ ___ _______ _/ /____ ___/ /
Expand All @@ -12,12 +9,14 @@ import type {OriginalMessageSettlementAccountLocked, PersonalRulesModifiedFields
* - Improve the prompts in prompts/translation, or
* - Improve context annotations in src/languages/en.ts
*/
import CONST from '@src/CONST';
import type {OriginalMessageSettlementAccountLocked, PersonalRulesModifiedFields, PolicyRulesModifiedFields} from '@src/types/onyx/OriginalMessage';

import {CONST as COMMON_CONST, Str} from 'expensify-common';

import type en from './en';
import type {ConciergeBrokenCardConnectionParams, PaidElsewhereParams, RemoveCopilotAccessConfirmationParams, UnsupportedFormulaValueErrorParams} from './params';
import type {TranslationDeepObject} from './types';

const translations: TranslationDeepObject<typeof en> = {
common: {
count: 'Contar',
Expand Down Expand Up @@ -5366,6 +5365,36 @@ ${amount} para ${merchant} - ${date}`,
enableNewAccountsDescription: 'Las nuevas cuentas de Rillet estarán disponibles como categorías.',
dimensionsImport: 'Todas las dimensiones de Rillet se importan como etiquetas',
importDescription: 'Elige qué configuraciones de codificación quieres importar desde Rillet.',
noVendorsFound: 'No se encontraron proveedores',
noVendorsFoundDescription: 'Por favor, añade proveedores en Rillet y sincroniza la conexión de nuevo',
noAccountsFound: 'No se encontraron cuentas',
noAccountsFoundDescription: 'Por favor, añade cuentas en Rillet y sincroniza la conexión de nuevo',
exportDescription: 'Configura cómo se exportan los datos de Expensify a Rillet.',
exportReimbursable: {label: 'Exportar gastos reembolsables como', values: {[CONST.RILLET_EXPORT_REIMBURSABLE.VENDOR_BILL]: {label: 'Facturas de proveedor'}}},
exportDate: {
label: 'Fecha de factura del proveedor',
description: 'Usa esta fecha al exportar informes a Rillet.',
values: {
[CONST.RILLET_EXPORT_DATE.LAST_EXPENSE]: {
label: 'Fecha del último gasto',
description: 'Fecha del gasto más reciente del informe.',
},
[CONST.RILLET_EXPORT_DATE.REPORT_EXPORTED]: {
label: 'Fecha de exportación',
description: 'Fecha en que se exportó el informe a Rillet.',
},
[CONST.RILLET_EXPORT_DATE.REPORT_SUBMITTED]: {
label: 'Fecha de envío',
description: 'Fecha en que se envió el informe para su aprobación.',
},
},
},
exportCompanyCard: {label: 'Exportar gastos de tarjetas de empresa como', values: {[CONST.RILLET_EXPORT_COMPANY_CARD.CREDIT_CARD]: {label: 'Tarjetas de crédito'}}},
defaultCompanyCardVendor: {
label: 'Proveedor predeterminado de la tarjeta de empresa',
description: 'Elige un proveedor Rillet predeterminado para los gastos que no se asignen automáticamente.',
},
companyCardAccount: {label: 'Cuenta de tarjeta de empresa', description: 'Elige dónde exportar las transacciones de las tarjetas de la empresa.'},
},
type: {
free: 'Gratis',
Expand Down
51 changes: 40 additions & 11 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,3 @@
import type {OnboardingTask} from '@libs/actions/Welcome/OnboardingFlow';
import StringUtils from '@libs/StringUtils';

import CONST from '@src/CONST';
import type {Country} from '@src/CONST';
import type OriginalMessage from '@src/types/onyx/OriginalMessage';
import type {OriginalMessageSettlementAccountLocked, PersonalRulesModifiedFields, PolicyRulesModifiedFields} from '@src/types/onyx/OriginalMessage';

import type {ValueOf} from 'type-fest';

/**
* _____ __ __
* / ___/__ ___ ___ _______ _/ /____ ___/ /
Expand All @@ -19,6 +9,16 @@ import type {ValueOf} from 'type-fest';
* - Improve the prompts in prompts/translation, or
* - Improve context annotations in src/languages/en.ts
*/
import type {OnboardingTask} from '@libs/actions/Welcome/OnboardingFlow';
import StringUtils from '@libs/StringUtils';

import CONST from '@src/CONST';
import type {Country} from '@src/CONST';
import type OriginalMessage from '@src/types/onyx/OriginalMessage';
import type {OriginalMessageSettlementAccountLocked, PersonalRulesModifiedFields, PolicyRulesModifiedFields} from '@src/types/onyx/OriginalMessage';

import type {ValueOf} from 'type-fest';

import {CONST as COMMON_CONST, Str} from 'expensify-common';
import startCase from 'lodash/startCase';

Expand Down Expand Up @@ -63,7 +63,6 @@ import type {
YourPlanPriceParams,
} from './params';
import type {TranslationDeepObject} from './types';

type StateValue = {
stateISO: string;
stateName: string;
Expand Down Expand Up @@ -5543,6 +5542,36 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
enableNewAccountsDescription: 'Les nouveaux comptes Rillet seront disponibles en tant que catégories.',
dimensionsImport: 'Toutes les dimensions Rillet sont importées en tant que tags',
importDescription: 'Choisissez quelles configurations de codage importer depuis Rillet.',
noVendorsFound: 'Aucun fournisseur trouvé',
noVendorsFoundDescription: 'Veuillez ajouter des fournisseurs dans Rillet et synchroniser de nouveau la connexion',
noAccountsFound: 'Aucun compte trouvé',
noAccountsFoundDescription: 'Veuillez ajouter des comptes dans Rillet et synchroniser à nouveau la connexion',
exportDescription: 'Configurez comment les données Expensify sont exportées vers Rillet.',
exportReimbursable: {label: 'Exporter les dépenses remboursables en tant que', values: {[CONST.RILLET_EXPORT_REIMBURSABLE.VENDOR_BILL]: {label: 'Factures fournisseurs'}}},
exportDate: {
label: 'Date de la facture fournisseur',
description: 'Utiliser cette date lors de l’exportation des notes de frais vers Rillet.',
values: {
[CONST.RILLET_EXPORT_DATE.LAST_EXPENSE]: {
label: 'Date de la dernière dépense',
description: 'Date de la dépense la plus récente figurant dans le rapport.',
},
[CONST.RILLET_EXPORT_DATE.REPORT_EXPORTED]: {
label: "Date d'exportation",
description: "Date d'exportation du rapport vers Rillet.",
},
[CONST.RILLET_EXPORT_DATE.REPORT_SUBMITTED]: {
label: 'Date de soumission',
description: 'Date de soumission du rapport pour approbation.',
},
},
},
exportCompanyCard: {label: 'Exporter les dépenses de carte d’entreprise en tant que', values: {[CONST.RILLET_EXPORT_COMPANY_CARD.CREDIT_CARD]: {label: 'Cartes de crédit'}}},
defaultCompanyCardVendor: {
label: 'Fournisseur de carte entreprise par défaut',
description: 'Choisissez un fournisseur Rillet par défaut pour les dépenses qui ne correspondent pas automatiquement.',
},
companyCardAccount: {label: 'Compte de carte d’entreprise', description: 'Choisissez où exporter les transactions de carte d’entreprise.'},
},
type: {
free: 'Gratuit',
Expand Down
Loading
Loading