You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: contributingGuides/PR_REVIEW_GUIDELINES.md
+21-2Lines changed: 21 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,7 +38,7 @@ This document lists specific guidelines for all PR reviews and aims to clarify i
38
38
## Good code patterns to require
39
39
40
40
1. Check that functions have comments when appropriate.
41
-
- If the function has params or returns something, use [JSDocs syntax]((https://github.com/Expensify/App/blob/main/contributingGuides/STYLE.md#jsdocs)) to describe them.
41
+
- If the function has params or returns something, use [JSDocs syntax](https://github.com/Expensify/App/blob/main/contributingGuides/STYLE.md#jsdocs) to describe them.
42
42
- Indicate the param name(s), data type passed and / or returned, and purpose if not immediately obvious.
43
43
- Obvious functions (with no params / return value) should not have comments.
44
44
-**In short: _Add comments & docs, only when useful._**
@@ -66,8 +66,27 @@ Here are some guidelines we use in order to make the best decisions:
66
66
1. Specialization
67
67
- When one component is a special case of another, we should opt for the technique of composition. Here are the [React docs](https://reactjs.org/docs/composition-vs-inheritance.html#specialization) on Specialization. The idea is that it’s better to establish a pattern of creating increasingly specific components, instead of adding dozens of use cases to a single component.
68
68
- You might consider this when a component is being reused because the new use case is “close enough” to the original. Rather than adding functionality to that component with subtle additions, it may be better to create a new, more specialized version of that component.
69
-
1. Refactors
69
+
2. Refactors
70
70
- During a code review it often becomes apparent that a refactor is needed. In this case, we recommend following these steps:
71
71
1. Identify the refactor and confirm with others that it’s needed.
72
72
2. Do that refactor first (as a separate job, if it qualifies), merge it, test for regressions.
73
73
3. Proceed with the original issue & job.
74
+
75
+
# C+ Best Practices
76
+
77
+
To reduce delays and improve PR turnaround, reviewers should follow these additional practices:
78
+
79
+
1.**Continue reviewing the full PR even after spotting a bug.**
80
+
- Always complete a full review pass. Finding an issue early on shouldn’t stop you from checking the rest of the code. This helps the author address all feedback in one go, rather than dealing with staggered comments across days.
81
+
82
+
2.**Don’t let minor merge conflicts block your review.**
83
+
- You can still review logic, structure, and tests while conflicts are being resolved.
84
+
85
+
3.**If you find a bug, test if it exists on `main`.**
86
+
- If the issue also appears on `main`, **do not block the PR** — it likely wasn’t introduced by the current changes.
87
+
- Report such bug in `#expensify-bugs` Slack channel following the bug template to make sure its addressed.
88
+
89
+
4.**Don’t block or delay review due to unrelated failing workflows or test flakes.**
90
+
- If failures are clearly not introduced by the PR, don’t treat them as blockers. These can be resolved when syncing with `main` later.
91
+
92
+
These practices help minimize asynchronous lag and keep development moving smoothly across time zones.
description: Learn how to arrange travel in Expensify on behalf of another member, using either Classic or New Expensify.
4
+
keywords: [arrange travel, book for others, travel arranger, expensify travel, classic, new expensify]
5
+
---
6
+
7
+
<divid="new-expensify"markdown="1">
8
+
9
+
Once granted the Travel Arranger role, you can arrange travel for another member of your organization using Expensify Travel.
10
+
11
+
---
12
+
13
+
## How to access the travel tool
14
+
15
+
-**In New Expensify:** Click the green **+** button in the bottom-left corner of your screen, then select **Book travel**.
16
+
-**In Classic Expensify:** Click **Travel** in the left-hand menu, then select **Book or manage travel**.
17
+
18
+
**Need to enable travel still?** Reach out to your Account Manager or Concierge to schedule a travel demo and get it enabled for your account.
19
+
20
+
---
21
+
22
+
## How to get access
23
+
24
+
Before arranging travel for another traveler, a Travel Admin must assign you the **Travel Arranger** role.
25
+
26
+
**To set the Travel Arranger role for another travel member:**
27
+
28
+
1. Head to Expensify Travel.
29
+
2. Click on **Program** > **Users** > search and select the name of the user who needs to arrange travel.
30
+
3. Click the **Roles** tab and then select **Travel Arranger** from the dropdown.
31
+
4. Click **Save**.
32
+
33
+
---
34
+
35
+
## How to book for another member
36
+
37
+
1. Head to the [Booking](https://travel.expensify.com/flights) page of your travel account.
38
+
2. Click the **Pencil** icon to the right of your name in the booking tool.
39
+
3. Search for the traveler by name or email and select them.
40
+
4. Choose a travel type:
41
+
- Flights
42
+
- Hotels
43
+
- Cars
44
+
- Rail
45
+
5. Enter the relevant trip details for the selected travel type.
46
+
6. Browse and select the desired travel accommodations.
47
+
7. Apply the booking to an existing trip or create a new one.
48
+
8. Confirm the payment method and finalize the booking.
49
+
50
+
---
51
+
52
+
## What happens next
53
+
54
+
- The selected traveler will receive a confirmation email.
55
+
- Receipts will automatically be sent to their Expensify account and added to a trip report.
56
+
- As the arranger, you’ll see a history of bookings you’ve made for others.
57
+
58
+
---
59
+
60
+
# FAQ
61
+
62
+
## Who can book travel for other members?
63
+
Only members with the **Travel Arranger** role assigned by a Travel Admin can arrange travel for others.
64
+
65
+
## Will I be charged or the traveler?
66
+
The traveler's account is responsible for the charge. Receipts will route directly to them.
67
+
68
+
## Can I manage trips I’ve booked for someone else?
69
+
Yes. If you booked the trip on behalf of someone else, you can view and manage it from the Trips > My trips page. Click the **Pencil** icon to the right of your name in the traveler selection button and search for the traveler to pull up their trips.
description: Learn how to book travel for guests in Expensify, even if they don’t have an Expensify account, with instructions for Classic and New Expensify.
4
+
keywords: [book guest travel, guest traveler, expensify travel, book for non-member, travel booking, classic, new expensify]
5
+
---
6
+
7
+
<divid="new-expensify"markdown="1">
8
+
9
+
Any member with guest booking permission can book travel for a guest, aka someone who doesn’t have an Expensify account.
10
+
11
+
---
12
+
13
+
## How to access the travel tool
14
+
15
+
-**In New Expensify:** Click the green **+** button in the bottom-left corner of your screen, then select **Book travel**.
16
+
-**In Classic Expensify:** Click **Travel** in the left-hand menu, then select **Book or manage travel**.
17
+
18
+
**Need to enable travel still?** Reach out to your Account Manager or Concierge to schedule a travel demo and get it enabled for your account.
19
+
20
+
---
21
+
22
+
## How to get access
23
+
24
+
Before arranging travel for another traveler, a Travel Admin must assign you the **Travel Arranger** role.
25
+
26
+
**To set the Travel Arranger role for another travel member:**
27
+
28
+
1. Head to Expensify Travel.
29
+
2. Click on **Program** > **Users** > search and select the name of the user who needs to arrange travel.
30
+
3. Click the **Configuration** tab and then click the toggle for **Allow employee to book for guests**.
31
+
32
+
---
33
+
34
+
## How to book travel for a guest
35
+
36
+
1. Click **Book for Guest** at the bottom of the booking tool.
37
+
2. Choose a travel type:
38
+
- Flights
39
+
- Hotels
40
+
- Cars
41
+
- Rail
42
+
3. Enter the relevant trip details for the selected travel type.
43
+
4. Browse and select the desired travel accommodations.
44
+
5. On the checkout page, enter the guest's information in the **Traveler information** section.
45
+
6. Apply the booking to an existing trip or create a new one.
46
+
7. Confirm the payment method and finalize the booking.
47
+
48
+
---
49
+
50
+
## What happens next
51
+
52
+
- Bookings may require approval based on your company’s travel policy.
53
+
- The guest will receive a confirmation email with their travel details.
54
+
- Receipts will be added to your Expensify account and SmartScanned for reporting.
55
+
- If the payment card is connected to your Expensify account, the receipt will auto-merge with the imported expense.
56
+
57
+
---
58
+
59
+
# FAQ
60
+
61
+
## Will the guest need an Expensify account?
62
+
No. Guest travelers don’t need an account to receive or use their travel reservation.
63
+
64
+
## Will the travel show up in my reports?
65
+
Yes. The booking appears in your Expensify account, and receipts are automatically added to an expense report.
0 commit comments