Skip to content

Commit c2657ae

Browse files
committed
Merge branch 'main' of github.com:Expensify/App into jsenyitko-reenable-export
2 parents 5e6f715 + d212634 commit c2657ae

154 files changed

Lines changed: 1460 additions & 2053 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/createNewVersion.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,11 @@ jobs:
126126
echo "Race condition! E/App main was updated while this workflow was running, so push failed. Fetching remote, rebasing, and retrying push once."
127127
git fetch origin main
128128
if ! git rebase origin/main; then
129-
echo "::error:: Rebase failed while retrying Mobile-Expensify push"
129+
echo "::error:: Rebase failed while retrying E/App push"
130130
exit 1
131131
fi
132132
if ! git push origin main; then
133-
echo "::error:: Mobile-Expensify change failed to push after rebase"
133+
echo "::error:: E/App change failed to push after rebase"
134134
exit 1
135135
fi
136136
fi

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ android {
114114
minSdkVersion rootProject.ext.minSdkVersion
115115
targetSdkVersion rootProject.ext.targetSdkVersion
116116
multiDexEnabled rootProject.ext.multiDexEnabled
117-
versionCode 1009018003
118-
versionName "9.1.80-3"
117+
versionCode 1009018102
118+
versionName "9.1.81-2"
119119
// Supported language variants must be declared here to avoid from being removed during the compilation.
120120
// This also helps us to not include unnecessary language variants in the APK.
121121
resConfigs "en", "es"

desktop/package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

desktop/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"dependencies": {
77
"electron-context-menu": "^2.3.0",
88
"electron-log": "^4.4.8",
9-
"electron-updater": "^6.6.4",
9+
"electron-updater": "^6.6.5",
1010
"mime-types": "^2.1.35",
1111
"node-machine-id": "^1.1.12"
1212
},

docs/articles/expensify-classic/expenses/Edit-expenses.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ The submitter can only delete expenses, and the report must be in the Open state
141141

142142
# FAQ
143143

144+
## Can I add multiple attachments to a single expense?
145+
No, it's only possible to add one attachment per expense.
146+
144147
## Who can edit an expense?
145148
- **Expense owner**: Can edit expenses if the report is Open.
146149
- **Approvers and Workspace Admins**: Can edit submitted expenses before final approval.

docs/articles/expensify-classic/expensify-billing/Billing-Overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ Earn **1%–2% cash back**
6666
- 2% if monthly spend reaches **$250,000+**
6767
- Cash back is applied to your bill first, then to your bank account
6868

69-
👉 Use the [savings calculator](https://use.expensify.com/resource-center/tools/savings-calculator) to estimate your monthly savings.
69+
👉 Use the [savings calculator](https://use.expensify.com/savings-calculator) to estimate your monthly savings.
7070

7171
## 📅 Annual Subscription Only
7272

docs/articles/expensify-classic/reports/Edit-and-Submit-Expense-Reports.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -272,33 +272,31 @@ You can export full reports for archiving or analysis.
272272
- **Default CSV** – Expensify’s built-in layout.
273273
- **Create new CSV export layout** – Customize your export format.
274274

275+
---
276+
275277
# FAQ
276278

277279
## Can I view my teammate's expense reports?
278280

279281
Yes, if you have **Copilot access**. Ask your teammate to add you as a Copilot so you can view, edit, or submit their reports.
280282

281-
---
282283

283284
## Can I export an expense report as a spreadsheet?
284285

285286
Yes! Open the report, click **Details**, then choose **Export to CSV**.
286287

287-
---
288288

289289
## How are credits or refunds displayed?
290290

291291
They appear as **negative expenses** (e.g., -$1.00) and reduce the report total.
292292

293-
---
294293

295294
## What’s the difference between an expense, a receipt, and a report attachment?
296295

297296
- **Expense** – Created when a receipt is scanned or manually entered.
298297
- **Receipt** – Image attached to an expense.
299298
- **Attachment** – Additional files added at the bottom of the report (e.g., documents).
300299

301-
---
302300

303301
## What’s the difference between reports, invoices, and bills?
304302

docs/articles/new-expensify/billing-and-subscriptions/Billing-Overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ For a full breakdown, visit the [Expensify pricing page](https://www.expensify.c
6262
- 2% if monthly spend reaches **$250,000+**
6363
- Cash back is applied to your Expensify bill first, then to your bank account
6464

65-
👉 Use the [savings calculator](https://use.expensify.com/resource-center/tools/savings-calculator) to estimate your monthly savings.
65+
👉 Use the [savings calculator](https://use.expensify.com/savings-calculator) to estimate your monthly savings.
6666

6767
## 📅 Annual Subscription
6868

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
---
2+
title: Customize and Enforce Report Titles
3+
description: Learn how to set dynamic report titles using custom formulas and enforce naming consistency across your workspace.
4+
keywords: [New Expensify, default report title, report naming, enforce report title, report formula, dynamic report name, workspace report titles]
5+
---
6+
<div id="new-expensify" markdown="1">
7+
8+
Automatically generate standardized report titles across your workspace using formulas. Admins can pull in dynamic data like report type or member name, and even lock naming rules to prevent edits.
9+
10+
---
11+
12+
# Customize Report Titles Using Formulas
13+
14+
**Navigation:**
15+
**Settings > Workspaces > [Workspace Name] > Reports**
16+
17+
1. Scroll to the **Report title** section.
18+
2. Click to open the formula editor.
19+
3. Use the formula list below to build your title.
20+
4. (Optional) Enable **Prevent members from changing custom report names** to lock naming rules.
21+
22+
**Example formula:**
23+
`{report:type} - {report:submit:from:firstname} {report:startdate}`
24+
**Result:** `Expense Report - Alice 2025-05-15`
25+
26+
---
27+
28+
# How Dynamic Titles Work
29+
30+
- Custom report names update automatically when the value of the fields they reference is updated. For example:
31+
- {report:total} will update when new expenses are added to the report.
32+
- {report:workspaceName} will update when the workspace name changes.
33+
- Report titles freeze once a report is **Approved** or **Reimbursed**.
34+
- Fields related to report submission are snapshots of the data at the time the report was submitted. For example:
35+
- {report:submit:from:firstName} may capture the first name of Joanne and won't be updated if Joanne changes her first name to "Jo" in Expensify
36+
- The report title will need to be manually edited by an admin, or the report unapproved and submitted again
37+
---
38+
39+
# Report Title Formula Reference
40+
41+
## Report-level data
42+
43+
| Formula | Example | Description |
44+
| -- | -- | -- |
45+
| `{report:id}` | R00I7J3xs5fn | Unique report ID in a base 62 representation |
46+
| `{report:oldID}` | R3513250790654885 | unique report ID |
47+
| `{report:total}` | $325.34 | Total amount on report |
48+
| `{report:type}` | Expense Report | Report type (Expense Report, Invoice, Bill) |
49+
| `{report:reimbursable}` | $143.43 | Reimbursable amount |
50+
| `{report:currency}` | USD | Currency used |
51+
| `{field:Employee ID}` | 123456 | Custom field from the report |
52+
| `{report:created}` | 2024-09-15 12:00:00 | When report was created |
53+
| `{report:created:yyyy-MM-dd}` | 2024-09-15 | Created date (custom format - see below for more formats) |
54+
| `{report:startdate}` | 2024-09-15 | Earliest expense date |
55+
| `{report:enddate}` | 2024-09-26 | Latest expense date |
56+
| `{report:submit:date}` | 2023-09-15 12:00:00 | Submission time |
57+
| `{report:submit:date:yyyy-MM-dd}` | 2023-09-15 | Submission date (formatted) |
58+
| `{report:approve:date}` | 2011-09-25 12:00:00 | Approval timestamp |
59+
| `{report:approve:date:yyyy-MM-dd}` | 2011-09-25 | Approval date (formatted) |
60+
| `{report:expensescount}` | 10 | Number of expenses |
61+
| `{report:workspaceName}` | Sales | Name of the workspace |
62+
| `{report:status}` | Approved | Current report status |
63+
| `{report:submit:to}` | alice@email.com | Approver’s email |
64+
| `{report:submit:from}` | Sally Ride | Submitter full name |
65+
| `{report:submit:from:firstname}` | Sally | Submitter’s first name |
66+
| `{report:submit:from:lastname}` | Ride | Submitter’s last name |
67+
| `{report:submit:from:fullname}` | Sally Ride | Submitter full name |
68+
| `{report:submit:from:email}` | sride@email.com | Submitter email |
69+
| `{report:submit:from:customfield1}` | 100 | Submitter custom field 1 |
70+
| `{report:submit:from:customfield2}` | 1234 | Submitter custom field 2 |
71+
72+
---
73+
74+
# Date Format Options
75+
76+
Customize date appearance with these formats:
77+
78+
| Format | Example |
79+
| -- | -- |
80+
| M/dd/yyyy | 5/23/2024 |
81+
| MMMM dd, yyyy | May 23, 2024 |
82+
| dd MMM yyyy | 23 May 2024 |
83+
| yyyy/MM/dd | 2024/05/23 |
84+
| MMMM, yyyy | May, 2024 |
85+
| yy/MM/dd | 24/05/23 |
86+
| dd/MM/yy | 23/05/24 |
87+
| yyyy | 2024 |
88+
89+
---
90+
91+
# Advanced Formula Functions
92+
93+
Add `|` functions to format results:
94+
95+
| Function | Example | Description |
96+
| -- | -- | -- |
97+
| `frontpart` | `{report:submit:from:email|frontpart}` → alice | Gets first word or string before `@` |
98+
| `substr:x` | `{report:policyname|substr:20}` → Sales Expenses | Trims to first `x` characters |
99+
| `substr:x:y` | `{report:policyname|substr:20|frontpart}` → Sales | Chains multiple functions |
100+
| `domain` | `{report:submit:from:email|domain}` → email.com | Returns email domain |
101+
102+
</div>

0 commit comments

Comments
 (0)