Skip to content

Commit

Permalink
Merge branch 'main' into fix/27495
Browse files Browse the repository at this point in the history
  • Loading branch information
Pujan92 committed Nov 6, 2023
2 parents 9983f88 + b35b195 commit 6a17f8a
Show file tree
Hide file tree
Showing 113 changed files with 1,716 additions and 762 deletions.
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1001039402
versionName "1.3.94-2"
versionCode 1001039505
versionName "1.3.95-5"
}

flavorDimensions "default"
Expand Down
5 changes: 5 additions & 0 deletions assets/css/fonts.css
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@
src: url('/fonts/ExpensifyNewKansas-MediumItalic.woff2') format('woff2'), url('/fonts/ExpensifyNewKansas-MediumItalic.woff') format('woff');
}

@font-face {
font-family: Windows Segoe UI Emoji;
src: url('/fonts/seguiemj.ttf');
}

* {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
Expand Down
Binary file added assets/fonts/web/seguiemj.ttf
Binary file not shown.
1 change: 0 additions & 1 deletion config/webpack/webpack.common.js
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,6 @@ const webpackConfig = ({envFile = '.env', platform = 'web'}) => ({
'react-native-config': 'react-web-config',
'react-native$': '@expensify/react-native-web',
'react-native-web': '@expensify/react-native-web',
'lottie-react-native': 'react-native-web-lottie',

// Module alias for web & desktop
// https://webpack.js.org/configuration/resolve/#resolvealias
Expand Down
67 changes: 37 additions & 30 deletions docs/_sass/_main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -35,31 +35,8 @@ html {
}

table {
margin-bottom: 20px;
border-spacing: 0;
border-collapse: collapse;
border-radius: 8px;

// Box shadow is used here because border-radius and border-collapse don't work together. It leads to double borders.
// https://stackoverflow.com/questions/628301/the-border-radius-property-and-border-collapsecollapse-dont-mix-how-can-i-use
border-style: hidden;
box-shadow: 0 0 0 1px $color-green-borders;
}

th:first-child {
border-top-left-radius: 8px;
}

th:last-child {
border-top-right-radius: 8px;
}

tr:last-child > td:first-child {
border-bottom-left-radius: 8px;
}

tr:last-child > td:last-child {
border-bottom-right-radius: 8px;
}

caption,
Expand All @@ -68,13 +45,6 @@ td {
text-align: left;
font-weight: 400;
vertical-align: middle;
padding: 6px 13px;
border: 1px solid $color-green-borders;
}

thead tr th {
font-weight: bold;
background-color: $color-green-highlightBG;
}

q,
Expand Down Expand Up @@ -395,6 +365,43 @@ button {
}
}

table {
margin-bottom: 20px;
border-radius: 8px;

// Box shadow is used here because border-radius and border-collapse don't work together. It leads to double borders.
// https://stackoverflow.com/questions/628301/the-border-radius-property-and-border-collapsecollapse-dont-mix-how-can-i-use
border-style: hidden;
box-shadow: 0 0 0 1px $color-green-borders;
}

th:first-child {
border-top-left-radius: 8px;
}

th:last-child {
border-top-right-radius: 8px;
}

tr:last-child > td:first-child {
border-bottom-left-radius: 8px;
}

tr:last-child > td:last-child {
border-bottom-right-radius: 8px;
}

th,
td {
padding: 6px 13px;
border: 1px solid $color-green-borders;
}

thead tr th {
font-weight: bold;
background-color: $color-green-highlightBG;
}

.img-wrap {
display: flex;
justify-content: space-around;
Expand Down
69 changes: 69 additions & 0 deletions docs/articles/expensify-classic/account-settings/Copilot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: Copilot
description: Safely delegate tasks without sharing login information.
---

# About
The Copilot feature allows you to safely delegate tasks without sharing login information. Your chosen user can access your account through their own Expensify account, with customizable permissions to manage expenses, create reports, and more. This can even be extended to users outside your policy or domain.

# How-to
# How to add a Copilot
1. Log into the Expensify desktop website.
2. Navigate to *Settings > Account > Account Details > _Copilot: Delegated Access_*.
3. Enter the email address or phone number of your Copilot and select whether you want to give them Full Access or the ability to Submit Only.
- *Full Access Copilot*: Your Copilot will have full access to your account. Nearly every action you can do and everything you can see in your account will also be available to your Copilot. They *will not* have the ability to add or remove other Copilots from your account.
- *Submit Only Copilot*: Your Copilot will have the same limitations as a Full Access Copilot, with the added restriction of not being able to approve reports on your behalf.
4. Click Invite Copilot.

If your Copilot already has an Expensify account, they will get an email notifying them that they can now access your account from within their account as well.
If they do not already have an Expensify account, they will be provided with a link to create one. Once they have created their Expensify account, they will be able to access your account from within their own account.

# How to use Copilot
A designated copilot can access another account via the Expensify website or the mobile app.

## How to switch to Copilot mode (on the Expensify website):
1. Click your profile icon in the upper left side of the page.
2. In the “Copilot Access” section of the dropdown, choose the account you wish to access.
3. When you Copilot into someone else’s account, the Expensify header will change color and an airplane icon will appear.
4. You can return to your own account at any time by accessing the user menu and choosing “Return to your account”.

## How to switch to Copilot Mode (on the mobile app):
1. Tap on the menu icon on the top left-hand side of the screen, then tap your profile icon.
2. Tap “Switch to Copilot Mode”, then choose the account you wish to access.
3. You can return to your own account at any time by accessing the user menu and choosing “Return to your account”.

# How to remove a Copilot
If you ever need to remove a Copilot, you can do so by following the below steps:
1. Log into the Expensify desktop website
2. Navigate to *Settings > Your Account > Account Details > _Copilot: Delegated Access_*
3. Click the red X next to the Copilot you'd like to remove


# Deep Dive
## Copilot Permissions
A Copilot can do the following actions in your account:
- Prepare expenses on your behalf
- Approve and reimburse others' expenses on your behalf (Note: this applies only to **Full Access** Copilots)
- View and make changes to your account/domain/policy settings
- View all expenses you can see within your own account

## Copilot restrictions
A Copilot cannot do the following actions in your account:
- Change or reset your password
- Add/remove other Copilots

## Forwarding receipts to receipts@expensify.com as a Copilot
To ensure a receipt is routed to the Expensify account in which you are a copilot rather than your own you’ll need to do the following:
1. Forward the email to receipts@expensify.com
2. Put the email of the account in which you are a copilot in the subject line
3. Send


# FAQ
## Can a Copilot's Secondary Login be used to forward receipts?
Yes! A Copilot can use any of the email addresses tied to their account to forward receipts into the account of the person they're assisting.

## I'm in Copilot mode for an account; Can I add another Copilot to that account on their behalf?
No, only the original account holder can add another Copilot to the account.
## Is there a restriction on the number of Copilots I can have or the number of users for whom I can act as a Copilot?
There is no limit! You can have as many Copilots as you like, and you can be a Copilot for as many users as you need.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,101 @@
---
title: CSV Import
description: CSV Import
title: Import and assign company cards from CSV file
description: uploading a CSV file containing your company card transactions
---
## Resource Coming Soon!

# Overview
Expensify offers a convenient CSV import feature for managing company card expenses when direct connections or commercial card feeds aren't available. This feature allows you to upload a CSV file containing your company card transactions and assign them to cardholders within your Expensify domain.
This feature is available on Group Workspaces and requires Domain Admin access.

# How to import company cards via CSV
1. Download a CSV of transactions from your bank by logging into their website and finding the relevant statement.
2. Format the CSV for upload using [this template](https://s3-us-west-1.amazonaws.com/concierge-responses-expensify-com/uploads%2F1594908368712-Best+Example+CSV+for+Domains.csv) as a guide.
- At a minimum, your file must include the following columns:
- **Card Number** - each number in this column should display at least the last four digits, and you can obscure up to 12 characters
(e.g., 543212XXXXXX12334).
- **Posted Date** - use the YYYY-MM-DD format in this column (and any other date column in your spreadsheet).
- **Merchant** - the name of the individual or business that provided goods or services for the transaction. This is a free-text field.
- **Posted Amount** - use the number format in this column, and indicate negative amounts with parentheses (e.g., (335.98) for -$335.98).
- **Posted Currency** - use currency codes (e.g., USD, GBP, EUR) to indicate the currency of the posted transactions.
- You can also add mapping for Categories and Tags, but those parameters are optional.
3. Log into Expensify on your web browser.
4. Head to Settings > Domains > Domain Name > Company Cards
5. Click Manage/Import CSV
6. Create a Company Card Layout Name for your spreadsheet
7. Click Upload CSV
8. Review the mapping of your spreadsheet to ensure that the Card Number, Date, Merchant, Amount, and Currency match your data.
9. Double-check the Output Preview for any errors and, if needed, refer to the common error solutions listed in the FAQ below.
10. Once the mapping is correct, click Submit Spreadsheet to complete the import.
11. After submitting the spreadsheet, click I'll wait a minute. Then, wait about 1-2 minutes for the import to process. The domain page will refresh once the upload is complete.

# How to assign new cards
If you're assigning cards via CSV upload for the first time:
1. Head to **Settings > Domains > Domain Name > Company Cards**
2. Find the new CSV feed in the drop-down list underneath **Imported Cards**
3. Click **Assign New Cards**
4. Under **Assign a Card**, enter the relevant info
5. Click **Assign**
From there, transactions will be imported to the cardholder's account, where they can add receipts, code the expenses, and submit them for review and approval.

# How to upload new expenses for existing assigned cards
There's no need to create a new upload layout for subsequent CSV uploads. Instead, add new expenses to the existing CSV:
1. Head to **Settings > Domains > Domain Name > Company Cards**
2. Click **Manage/Import CSV**
3. Select the saved layout from the drop-down list
4. Click **Upload CSV**
5. After uploading the more recent CSV, click **Update All Cards** to retrieve the new expenses for the assigned cards.

# Deep dive
If the CSV upload isn't formatted correctly, it will cause issues when you try to import or assign cards. Let's go over some common issues and how to fix them.

## Error: "Attribute value mapping is missing"
If you encounter an error that says "Attribute-value mapping is missing," the spreadsheet likely lacks critical details like Card Number, Date, Merchant, Amount, or Currency. To resolve:
1. Click the **X** at the top of the page to close the mapping window
2. Confirm what's missing from the spreadsheet
3. Add a new column to your spreadsheet and add the missing detail
4. Upload the revised spreadsheet by clicking **Manage Spreadsheet**
5. Enter a **Company Card Layout Name** for the contents of your spreadsheet
6. Click **Upload CSV**

## Error: "We've detected an error while processing your spreadsheet feed"
This error usually occurs when there's an upload issue.
To troubleshoot this:
1. Head to **Settings > Domains > Domain Name > Company Cards** and click **Manage/Import CSV**
2. In the **Upload Company Card transactions for** dropdown list, look for the layout name you previously created.
3. If the layout is listed, wait at least one hour and then sync the cards to see if new transactions are imported.
4. If the layout isn't listed, create a new **Company Card Layout Name** and upload the spreadsheet again.

## Error: "An unexpected error occurred, and we could not retrieve the list of cards"
This error occurs when there's an issue uploading the spreadsheet or the upload fails.
To troubleshoot this:
1. Head to **Settings > Domains > Domain Name > Company Cards** and click **Manage/Import CSV**
2. In the **Upload Company Card transactions for** dropdown list, look for the layout name you previously created.
3. If the layout is listed, wait at least one hour and then sync the cards to see if new transactions are imported.
4. If the layout isn't listed, create a new **Company Card Layout Name** and upload the spreadsheet again.


## I added a new parameter to an existing spreadsheet, but the data isn't showing in Expensify after the upload completes. What's going on?
If you added a new card to an existing spreadsheet and imported it via a saved layout, but it isn't showing up for assignment, this suggests that the modification may have caused an issue.
The next step in troubleshooting this issue is to compare the number of rows on the revised spreadsheet to the Output Preview to ensure the row count matches the revised spreadsheet.
To check this:
1. Head to **Settings > Domains > Domain Name > Company Cards** and click **Manage/Import CSV**
2. Select your saved layout in the dropdown list
3. Click **Upload CSV** and select the revised spreadsheet
4. Compare the Output Preview row count to your revised spreadsheet to ensure they match


If they don't match, you'll need to revise the spreadsheet by following the CSV formatting guidelines in step 2 of "How to import company cards via CSV" above.
Once you do that, save the revised spreadsheet with a new layout name.
Then, try to upload the revised spreadsheet again:

1. Click **Upload CSV**
2. Upload the revised file
3. Check the row count again on the Output Preview to confirm it matches the spreadsheet
4. Click **Submit Spreadsheet**

# FAQ
## Why can't I see my CSV transactions immediately after uploading them?
Don't worry! You'll typically need to wait 1-2 minutes after clicking **I understand, I'll wait!**

## I'm trying to import a credit. Why isn't it uploading?
Negative expenses shouldn't include a minus sign. Instead, they should just be wrapped in parentheses. For example, to indicate "-335.98," you'll want to make sure it's formatted as "(335.98)."
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Billing in Expensify
title: Billing Overview
description: An overview of how billing works in Expensify.
---
# Overview
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@ Every expense has an Attendees field and will list the expense creator’s name
## How to Add Additional Attendees to an Expense
* Go to the attendees field
* Search for the names of the attendees
* The default list will be of internal attendees belonging to your workspace and domain.
* The default list will be of internal attendees belonging to your workspace and domain
* External attendees are not part of your workspace or domain, so you will need to enter their name or email
* Select the attendees you would like to add
* Save the expense
* Once added, the list of attendees for each expense will be visible on the expense line.
* An amount per employee expense will also be displayed on the report for easy viewing
* Once added, the list of attendees for each expense will be visible on the expense line
* An amount per employee expense will also be displayed on the report for easy viewing

![image of an expense with attendee tracking]({{site.url}}/assets/images/attendee-tracking.png){:width="100%"}

# FAQ

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Expensify Card Settings
description: Admin Card Settings and Features
title: Admin Card Settings and Features
description: An in-depth look into the Expensify Card program's admin controls and settings.
---

# Overview
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: Fringe Benefits
description: How to track your Fringe Benefits
---
# Overview
If you’re looking to track and report expense data to calculate Fringe Benefits Tax (FBT), you can use Expensify’s special workflow that allows you to capture extra information and use a template to export to a spreadsheet.

# How to set up Fringe Benefit Tax

## Add Attendee Count Tags
First, you’ll need to add these two tags to your Workspace:
1) Number of Internal Attendees
2) Number of External Attendees

These tags must be named exactly as written above, ensuring there are no extra spaces at the beginning or at the end. You’ll need to set the tags to be numbers 00 - 10 or whatever number you wish to go up to (up to the maximum number of attendees you would expect at any one time), one tag per number i.e. “01”, “02”, “03” etc. These tags can be added in addition to those that are pulled in from your accounting solution. Follow these [instructions](https://help.expensify.com/articles/expensify-classic/workspace-and-domain-settings/Tags#gsc.tab=0) to add tags.

## Add Payroll Code
Go to **Settings > Workspaces > Group > _Workspace Name_ > Categories** and within the categories you wish to track FBT against, select **Edit Category** and add the code “TAG”:

## Enable Workflow
Once you’ve added both tags (Internal Attendees and External Attendees) and added the payroll code “TAG” to FBT categories, you can send a request to Expensify at concierge@expensify.com to enable the FBT workflow. Please send the following request:
>“Can you please add the custom workflow/DEW named FRINGE_BENEFIT_TAX to my company workspace named <insert your company workspace name> ?”
Once the FBT workflow is enabled, it will require anything with the code “TAG” to include the two attendee count tags in order to be submitted.


# For Users
Once these steps are completed, users who create expenses coded with any category that has the payroll code “TAG” (e.g. Entertainment Expenses) but don’t add the internal and external attendee counts, will not be able to submit their expenses.
# For Admins
You are now able to create and run a report, which shows all expenses under these categories and also shows the number of internal and external attendees. Because we don’t presume to know all of the data points you wish to capture, you’ll need to create a Custom CSV export.
Here are a couple of examples of Excel formulas to use to report on attendees:
- `{expense:tag:ntag-1}` outputs the first tag the user chooses.
- `{expense:tag:ntag-3}` outputs the third tag the user chooses.

Your expenses may have multiple levels of coding, i.e.:
- GL Code (Category)
- Department (Tag 1)
- Location (Tag 2)
- Number of Internal Attendees (Tag 3)
- Number of External Attendees (Tag 4)

In the above case, you’ll want to use `{expense:tag:ntag-3}` and `{expense:tag:ntag-4}` as formulas to report on the number of internal and external attendees.

Our article on [Custom Templates](https://help.expensify.com/articles/expensify-classic/insights-and-custom-reporting/Custom-Templates#gsc.tab=0) shows how to create a custom CSV.
Loading

0 comments on commit 6a17f8a

Please sign in to comment.