Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge Xero freeze branch #42043

Merged
merged 98 commits into from
May 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
a585c77
add missing xero sync stages
lakchote May 2, 2024
391dd13
add xero sync keys to display meaningful messages
lakchote May 2, 2024
7b78601
Merge remote-tracking branch 'rushat/xero-export' into lucien/xero-pu…
lakchote May 3, 2024
5e4a004
add new keys for xero export
lakchote May 3, 2024
d62e826
add new route for bill date
lakchote May 3, 2024
02123c8
add new screen for bill date
lakchote May 3, 2024
8f8d0de
add translations keys for xero export date
lakchote May 3, 2024
e869ed1
add type for bill date screen
lakchote May 3, 2024
86243cc
configure path for bill date
lakchote May 3, 2024
632905b
add bill date to modal stack
lakchote May 3, 2024
bcd8b1e
add mapping for bill date
lakchote May 3, 2024
40a3800
redirect to bill date screen on press
lakchote May 3, 2024
4e26716
bill date select page
lakchote May 3, 2024
a9d0bab
fix style
lakchote May 3, 2024
62e5472
merge with rus
hungvu193 May 4, 2024
cbecce7
xero preferred export select page
hungvu193 May 4, 2024
4c1546b
add PreferredExportedConfiguration screen
hungvu193 May 6, 2024
e53f3e2
update pendingFields
hungvu193 May 6, 2024
7a39a6c
use correct component name
lakchote May 6, 2024
2a803b1
add new textStyle property
lakchote May 6, 2024
e80e904
fix other integrations style
lakchote May 6, 2024
d4706a4
Merge branch 'main' into lucien/xero-purchase-bill-date
lakchote May 6, 2024
2e67bfd
fix translations typo
lakchote May 6, 2024
f5a9405
use SelectionScreen component
lakchote May 6, 2024
d3e78ba
fix style
lakchote May 6, 2024
f62a762
fix style
lakchote May 6, 2024
6a40b76
feat: screen and nav setup
mananjadhav May 6, 2024
9352393
feat: connect page
mananjadhav May 6, 2024
295cbf2
feat: page setup with api call
mananjadhav May 6, 2024
d3ca32f
feat: advanced page current selection
mananjadhav May 6, 2024
6a0b68b
style: prettier fix
mananjadhav May 6, 2024
b32fd3d
update translation
hungvu193 May 7, 2024
09ead33
sync with latest parent branch
hungvu193 May 7, 2024
b4c8f72
Merge branch 'main' of github.com:mananjadhav/App into xero-advanced-…
mananjadhav May 7, 2024
3e4d740
Merge remote-tracking branch 'origin/main' into feat/preferred-export…
hungvu193 May 7, 2024
c688736
Merge branch 'main' into lucien/xero-purchase-bill-date
lakchote May 7, 2024
083e972
remove purchase bill status menu item (should be in advanced screen o…
lakchote May 7, 2024
7efeff0
add spanish DeepL translations
lakchote May 7, 2024
24638fe
fix lint
lakchote May 7, 2024
18ac3e3
add invoice statuses
lakchote May 7, 2024
46a6302
add translations for invoice statuses
lakchote May 7, 2024
c452140
Revert "remove purchase bill status menu item (should be in advanced …
lakchote May 7, 2024
389e0de
remove purchase bill status (it's in the export screen now)
lakchote May 7, 2024
224b394
translate purchase bill status key
lakchote May 7, 2024
8cc2391
fix spanish translations
lakchote May 7, 2024
5e5650f
fix prettier
lakchote May 7, 2024
c839dc8
fix: spanish translation
mananjadhav May 7, 2024
d0b31f2
refactor: merge usememo
mananjadhav May 7, 2024
dc2e2ce
Merge branch 'main' of github.com:mananjadhav/App into xero-advanced-…
mananjadhav May 7, 2024
9281743
fix: qbo charge of accounts padding
mananjadhav May 7, 2024
75145eb
refactor: prettier fixes
mananjadhav May 7, 2024
fe34369
Merge remote-tracking branch 'origin/main' into feat/preferred-export…
hungvu193 May 8, 2024
f992572
remove unused code
hungvu193 May 8, 2024
ccda26a
resolve conflict
hungvu193 May 8, 2024
7e1868a
refactor workspace.qbo and workspace.common translations
SzymczakJ May 8, 2024
7eaa38e
add XeroChartOfAccountsPage
SzymczakJ May 8, 2024
b34d095
fix enable toggle not working
SzymczakJ May 8, 2024
16794e8
fix translations on XeroImportPage
SzymczakJ May 8, 2024
8d81865
Merge branch 'xero-merge-freeze' into lucien/xero-purchase-bill-date
lakchote May 9, 2024
e8df050
Merge pull request #41690 from mananjadhav/xero-advanced-bill-payment…
lakchote May 9, 2024
a8da9fd
Merge pull request #41583 from Expensify/lucien/xero-purchase-bill-date
lakchote May 9, 2024
2fbf7c7
resolve conflicts
hungvu193 May 9, 2024
1822e23
update prettier
hungvu193 May 9, 2024
fe73203
Merge pull request #41641 from hungvu193/feat/preferred-exporter-sele…
lakchote May 9, 2024
bc7465b
Merge branch 'xero-merge-freeze' into @szymczak/xero-chart-of-accounts
SzymczakJ May 9, 2024
788b3f6
feat: added export bank account page
mananjadhav May 9, 2024
df25bf8
refactor: prettier fix
mananjadhav May 9, 2024
447dd75
Merge pull request #41490 from Expensify/lucien/fix-translation-xero-…
pecanoro May 10, 2024
4ef107e
Merge branch 'main' into xero-merge-freeze
lakchote May 10, 2024
794e313
remove subtitle and add header subtitle
rushatgabhane May 10, 2024
4daa8b9
show org name in export page
rushatgabhane May 10, 2024
97b9109
show org name in adv page
rushatgabhane May 10, 2024
3791ce0
rename to header subtitle
rushatgabhane May 10, 2024
3d9d675
Merge branch 'xero-merge-freeze' into org-name
rushatgabhane May 10, 2024
3265864
Merge branch 'xero-merge-freeze' of https://github.com/Expensify/App …
mananjadhav May 10, 2024
e085711
fix: es change
mananjadhav May 10, 2024
3c386ab
add get org name util
rushatgabhane May 10, 2024
51db147
use get org util
rushatgabhane May 10, 2024
60160e1
use get org util
rushatgabhane May 10, 2024
c2f18a7
use get org util
rushatgabhane May 10, 2024
edba277
use get org util
rushatgabhane May 10, 2024
fd22f00
fix merge
rushatgabhane May 10, 2024
f53b2b3
fix lint
rushatgabhane May 10, 2024
727a62f
fix: route
mananjadhav May 10, 2024
1cb0801
Merge pull request #41969 from rushatgabhane/org-name
lakchote May 13, 2024
8eb3743
Merge branch 'main' into xero-merge-freeze
lakchote May 13, 2024
f376d95
Merge branch 'xero-merge-freeze' of https://github.com/Expensify/App …
mananjadhav May 13, 2024
a905b59
style: prettier fix
mananjadhav May 13, 2024
b576dc5
fix pr comments
SzymczakJ May 13, 2024
ab5c3de
Merge pull request #41916 from mananjadhav/xero-export-bank-account-new
lakchote May 13, 2024
c059270
delete usused key prop
SzymczakJ May 13, 2024
c8f9bed
use proper naming
lakchote May 13, 2024
22c81b3
fix PR comments
SzymczakJ May 13, 2024
0667075
Merge pull request #41849 from software-mansion-labs/@szymczak/xero-c…
lakchote May 13, 2024
80a7483
Merge branch 'main' into xero-merge-freeze
lakchote May 14, 2024
3f1b069
improve naming
lakchote May 14, 2024
acc698d
add alias
lakchote May 14, 2024
1a2b82c
fix prettier
lakchote May 14, 2024
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
15 changes: 15 additions & 0 deletions src/CONST.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1298,8 +1298,15 @@ const CONST = {
XERO_CONFIG: {
AUTO_SYNC: 'autoSync',
SYNC: 'sync',
ENABLE_NEW_CATEGORIES: 'enableNewCategories',
EXPORT: 'export',
IMPORT_CUSTOMERS: 'importCustomers',
IMPORT_TAX_RATES: 'importTaxRates',
INVOICE_STATUS: {
AWAITING_PAYMENT: 'AWT_PAYMENT',
DRAFT: 'DRAFT',
AWAITING_APPROVAL: 'AWT_APPROVAL',
},
IMPORT_TRACKING_CATEGORIES: 'importTrackingCategories',
MAPPINGS: 'mappings',
TRACKING_CATEGORY_PREFIX: 'trackingCategory_',
Expand All @@ -1319,6 +1326,12 @@ const CONST = {
JOURNAL_ENTRY: 'journal_entry',
},

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

QUICKBOOKS_EXPORT_DATE: {
LAST_EXPENSE: 'LAST_EXPENSE',
REPORT_EXPORTED: 'REPORT_EXPORTED',
Expand Down Expand Up @@ -1784,6 +1797,8 @@ const CONST = {
XERO_SYNC_IMPORT_CUSTOMERS: 'xeroSyncImportCustomers',
XERO_SYNC_IMPORT_BANK_ACCOUNTS: 'xeroSyncImportBankAccounts',
XERO_SYNC_IMPORT_TAX_RATES: 'xeroSyncImportTaxRates',
XERO_CHECK_CONNECTION: 'xeroCheckConnection',
XERO_SYNC_TITLE: 'xeroSyncTitle',
},
},
ACCESS_VARIANTS: {
Expand Down
20 changes: 20 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -787,6 +787,10 @@ const ROUTES = {
route: 'settings/workspaces/:policyID/accounting/xero/import',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/import` as const,
},
POLICY_ACCOUNTING_XERO_CHART_OF_ACCOUNTS: {
route: 'settings/workspaces/:policyID/accounting/xero/import/accounts',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/import/accounts` as const,
},
POLICY_ACCOUNTING_XERO_ORGANIZATION: {
route: 'settings/workspaces/:policyID/accounting/xero/organization/:currentOrganizationID',
getRoute: (policyID: string, currentOrganizationID: string) => `settings/workspaces/${policyID}/accounting/xero/organization/${currentOrganizationID}` as const,
Expand Down Expand Up @@ -815,6 +819,18 @@ const ROUTES = {
route: 'settings/workspaces/:policyID/accounting/xero/export',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/export` as const,
},
POLICY_ACCOUNTING_XERO_PREFERRED_EXPORTER_SELECT: {
route: '/settings/workspaces/:policyID/connections/xero/export/preferred-exporter/select',
getRoute: (policyID: string) => `/settings/workspaces/${policyID}/connections/xero/export/preferred-exporter/select` as const,
},
POLICY_ACCOUNTING_XERO_EXPORT_PURCHASE_BILL_DATE_SELECT: {
route: 'settings/workspaces/:policyID/accounting/xero/export/purchase-bill-date-select',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/export/purchase-bill-date-select` as const,
},
POLICY_ACCOUNTING_XERO_EXPORT_BANK_ACCOUNT_SELECT: {
route: 'settings/workspaces/:policyID/accounting/xero/export/bank-account-select',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/export/bank-account-select` as const,
},
POLICY_ACCOUNTING_XERO_ADVANCED: {
route: 'settings/workspaces/:policyID/accounting/xero/advanced',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/advanced` as const,
Expand All @@ -823,6 +839,10 @@ const ROUTES = {
route: 'settings/workspaces/:policyID/accounting/xero/advanced/invoice-account-selector',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/advanced/invoice-account-selector` as const,
},
POLICY_ACCOUNTING_XERO_BILL_PAYMENT_ACCOUNT_SELECTOR: {
route: 'settings/workspaces/:policyID/accounting/xero/advanced/bill-payment-account-selector',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/advanced/bill-payment-account-selector` as const,
},
POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_IMPORT: {
route: 'settings/workspaces/:policyID/accounting/quickbooks-online/import',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/import` 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 @@ -245,14 +245,19 @@ const SCREENS = {
QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Invoice_Account_Selector',
XERO_IMPORT: 'Policy_Accounting_Xero_Import',
XERO_ORGANIZATION: 'Policy_Accounting_Xero_Customers',
XERO_CHART_OF_ACCOUNTS: 'Policy_Accounting_Xero_Import_Chart_Of_Accounts',
XERO_CUSTOMER: 'Policy_Acounting_Xero_Import_Customer',
XERO_TAXES: 'Policy_Accounting_Xero_Taxes',
XERO_TRACKING_CATEGORIES: 'Policy_Accounting_Xero_Tracking_Categories',
XERO_MAP_COST_CENTERS: 'Policy_Accounting_Xero_Map_Cost_Centers',
XERO_MAP_REGION: 'Policy_Accounting_Xero_Map_Region',
XERO_EXPORT: 'Policy_Accounting_Xero_Export',
XERO_EXPORT_PURCHASE_BILL_DATE_SELECT: 'Policy_Accounting_Xero_Export_Purchase_Bill_Date_Select',
XERO_ADVANCED: 'Policy_Accounting_Xero_Advanced',
XERO_INVOICE_ACCOUNT_SELECTOR: 'Policy_Accounting_Xero_Invoice_Account_Selector',
XERO_EXPORT_PREFERRED_EXPORTER_SELECT: 'Workspace_Accounting_Xero_Export_Preferred_Exporter_Select',
XERO_BILL_PAYMENT_ACCOUNT_SELECTOR: 'Policy_Accounting_Xero_Bill_Payment_Account_Selector',
XERO_EXPORT_BANK_ACCOUNT_SELECT: 'Policy_Accounting_Xero_Export_Bank_Account_Select',
},
INITIAL: 'Workspace_Initial',
PROFILE: 'Workspace_Profile',
Expand Down
7 changes: 5 additions & 2 deletions src/components/CollapsibleSection/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,17 @@ type CollapsibleSectionProps = ChildrenProps & {
/** Style of title of the collapsible section */
titleStyle?: StyleProp<TextStyle>;

/** Style for the text */
textStyle?: StyleProp<TextStyle>;

/** Style for the wrapper view */
wrapperStyle?: StyleProp<ViewStyle>;

/** Whether or not to show border between section title and expandable items */
shouldShowSectionBorder?: boolean;
};

function CollapsibleSection({title, children, titleStyle, wrapperStyle, shouldShowSectionBorder}: CollapsibleSectionProps) {
function CollapsibleSection({title, children, titleStyle, textStyle, wrapperStyle, shouldShowSectionBorder}: CollapsibleSectionProps) {
const theme = useTheme();
const styles = useThemeStyles();
const [isExpanded, setIsExpanded] = useState(false);
Expand All @@ -50,7 +53,7 @@ function CollapsibleSection({title, children, titleStyle, wrapperStyle, shouldSh
pressDimmingValue={0.2}
>
<Text
style={[styles.flex1, styles.textStrong, styles.userSelectNone, titleStyle]}
style={textStyle ?? [styles.flex1, styles.textStrong, styles.userSelectNone, titleStyle]}
dataSet={{[CONST.SELECTION_SCRAPER_HIDDEN_ELEMENT]: true}}
>
{title}
Expand Down
22 changes: 8 additions & 14 deletions src/components/ConnectionLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ type ConnectionLayoutProps = {
/** Header title for the connection */
headerTitle: TranslationPaths;

/** The subtitle to show in the header */
headerSubtitle?: string;

/** React nodes that will be shown */
children?: React.ReactNode;

/** Title of the connection component */
title?: TranslationPaths;

/** Subtitle of the connection */
subtitle?: TranslationPaths;

/** The current policyID */
policyID: string;

Expand All @@ -44,22 +44,18 @@ type ConnectionLayoutProps = {
/** Style of the title text */
titleStyle?: StyleProp<TextStyle> | undefined;

/** Style of the subtitle text */
subTitleStyle?: StyleProp<TextStyle> | undefined;

/** Whether to use ScrollView or not */
shouldUseScrollView?: boolean;
};

type ConnectionLayoutContentProps = Pick<ConnectionLayoutProps, 'title' | 'titleStyle' | 'subtitle' | 'subTitleStyle' | 'children'>;
type ConnectionLayoutContentProps = Pick<ConnectionLayoutProps, 'title' | 'titleStyle' | 'children'>;

function ConnectionLayoutContent({title, titleStyle, subtitle, subTitleStyle, children}: ConnectionLayoutContentProps) {
function ConnectionLayoutContent({title, titleStyle, children}: ConnectionLayoutContentProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
return (
<>
{title && <Text style={[styles.pb5, titleStyle]}>{translate(title)}</Text>}
{subtitle && <Text style={[styles.textLabelSupporting, subTitleStyle]}>{translate(subtitle)}</Text>}
{children}
</>
);
Expand All @@ -70,13 +66,12 @@ function ConnectionLayout({
headerTitle,
children,
title,
subtitle,
headerSubtitle,
policyID,
accessVariants,
featureName,
contentContainerStyle,
titleStyle,
subTitleStyle,
shouldUseScrollView = true,
}: ConnectionLayoutProps) {
const {translate} = useLocalize();
Expand All @@ -85,14 +80,12 @@ function ConnectionLayout({
() => (
<ConnectionLayoutContent
title={title}
subtitle={subtitle}
subTitleStyle={subTitleStyle}
titleStyle={titleStyle}
>
{children}
</ConnectionLayoutContent>
),
[title, subtitle, titleStyle, subTitleStyle, children],
[title, titleStyle, children],
);

return (
Expand All @@ -108,6 +101,7 @@ function ConnectionLayout({
>
<HeaderWithBackButton
title={translate(headerTitle)}
subtitle={headerSubtitle}
onBackButtonPress={() => Navigation.goBack()}
/>
{shouldUseScrollView ? (
Expand Down
57 changes: 56 additions & 1 deletion src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1890,6 +1890,7 @@ export default {
travel: 'Travel',
members: 'Members',
accounting: 'Accounting',
displayedAs: 'Displayed as',
plan: 'Plan',
profile: 'Profile',
bankAccount: 'Bank account',
Expand Down Expand Up @@ -1920,7 +1921,6 @@ export default {
classes: 'Classes',
locations: 'Locations',
customers: 'Customers/Projects',
displayedAs: 'Displayed as',
accountsDescription: 'When connected to Quickbooks Online, chart of accounts are always imported to Expensify as categories.',
accountsSwitchTitle: 'Below you can choose to have any new account imported as an enabled or disabled category by default.',
accountsSwitchDescription: 'Enabled categories are available for members to select when creating their expenses.',
Expand Down Expand Up @@ -2028,6 +2028,9 @@ export default {
organization: 'Xero organization',
organizationDescription: 'Select the organization in Xero you are importing data from.',
importDescription: 'Choose which coding configurations are imported from Xero to Expensify.',
accountsDescription: 'When connected to Xero, chart of accounts are always imported to Expensify as categories.',
accountsSwitchTitle: 'Below you can choose to have any new account imported as an enabled or disabled category by default.',
accountsSwitchDescription: 'Enabled categories are available for members to select when creating their expenses.',
trackingCategories: 'Tracking categories',
trackingCategoriesDescription: 'Choose whether to import tracking categories and see where they are displayed.',
mapXeroCostCentersTo: 'Map Xero cost centers to',
Expand All @@ -2050,6 +2053,7 @@ export default {
'Each exported expense posts as a bank transaction to the Xero bank account you select below, and transaction dates will match the dates on your bank statement.',
bankTransactions: 'Bank transactions',
xeroBankAccount: 'Xero bank account',
xeroBankAccountDescription: 'Select the bank account expenses will be posted to as bank transactions.',
preferredExporter: 'Preferred exporter',
exportExpenses: 'Export out-of-pocket expenses as',
exportExpensesDescription: 'Reports will export as a purchase bill, using the date and status you select below.',
Expand All @@ -2067,7 +2071,36 @@ export default {
xeroBillPaymentAccount: 'Xero Bill Payment Account',
xeroInvoiceCollectionAccount: 'Xero Invoice Collections Account',
invoiceAccountSelectorDescription: "As you've enabled exporting invoices from Expensify to Xero, this is the account the invoice will appear against once marked as paid.",
xeroBillPaymentAccountDescription:
"As you've enabled sync reimbursed reports, you will need to select the bank account your reimbursements are coming out of, and we'll create the payment in Xero.",
},
exportDate: {
label: 'Export date',
description: 'Use this date when exporting reports to Xero.',
values: {
[CONST.QUICKBOOKS_EXPORT_DATE.LAST_EXPENSE]: {
label: 'Date of last expense',
description: 'The date of the most recent expense on the report',
},
[CONST.QUICKBOOKS_EXPORT_DATE.REPORT_EXPORTED]: {
label: 'Export date',
description: 'The date the report was exported to Xero',
},
[CONST.QUICKBOOKS_EXPORT_DATE.REPORT_SUBMITTED]: {
label: 'Submitted date',
description: 'The date the report was submitted for approval',
},
},
},
invoiceStatus: {
values: {
[CONST.XERO_CONFIG.INVOICE_STATUS.AWAITING_PAYMENT]: 'Authorised',
[CONST.XERO_CONFIG.INVOICE_STATUS.DRAFT]: 'Draft',
[CONST.XERO_CONFIG.INVOICE_STATUS.AWAITING_APPROVAL]: 'Submitted',
},
},
exportPreferredExporterNote: 'This can be any workspace admin, but must be a domain admin if you set different export accounts for individual company cards in domain settings.',
exportPreferredExporterSubNote: 'Once set, the preferred exporter will see reports for export in their account.',
},
type: {
free: 'Free',
Expand Down Expand Up @@ -2367,6 +2400,28 @@ export default {
return 'Updating people list';
case 'quickbooksOnlineSyncApplyClassesLocations':
return 'Updating report fields';
case 'xeroSyncImportChartOfAccounts':
return 'Syncing chart of accounts';
case 'xeroSyncImportCategories':
return 'Syncing categories';
case 'xeroSyncImportCustomers':
return 'Syncing customers';
case 'xeroSyncXeroReimbursedReports':
return 'Marking Expensify reports as reimbursed';
case 'xeroSyncExpensifyReimbursedReports':
return 'Marking Xero bills and invoices as paid';
case 'xeroSyncImportTrackingCategories':
return 'Syncing tracking categories';
case 'xeroSyncImportBankAccounts':
return 'Syncing bank accounts';
case 'xeroSyncImportTaxRates':
return 'Syncing tax rates';
case 'xeroCheckConnection':
return 'Checking Xero connection';
case 'xeroSyncTitle':
return 'Synchronizing Xero data';
case 'xeroSyncStep':
return 'Loading data';
default: {
return `Translation missing for stage: ${stage}`;
}
Expand Down
Loading
Loading