Skip to content

Commit

Permalink
Merge branch 'main' into @wolewicki/rn-76-upgrade
Browse files Browse the repository at this point in the history
  • Loading branch information
j-piasecki committed Nov 22, 2024
2 parents 9e0c2f2 + 5f483dc commit c847cd8
Show file tree
Hide file tree
Showing 183 changed files with 4,193 additions and 1,034 deletions.
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ This is a checklist for PR authors. Please make sure to complete all tasks and c
- [ ] I verified that comments were added to code that is not self explanatory
- [ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
- [ ] I verified any copy / text shown in the product is localized by adding it to `src/languages/*` files and using the [translation method](https://github.com/Expensify/App/blob/4bd99402cebdf4d7394e0d1f260879ea238197eb/src/components/withLocalize.js#L60)
- [ ] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
- [ ] If any non-english text was added/modified, I used [JaimeGPT](https://chatgpt.com/g/g-2dgOQl5VM-english-to-spanish-translator-aka-jaimegpt) to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
- [ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the [localization methods](https://github.com/Expensify/App/blob/4bd99402cebdf4d7394e0d1f260879ea238197eb/src/components/withLocalize.js#L60-L68)
- [ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
- [ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
Expand Down
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1009006403
versionName "9.0.64-3"
versionCode 1009006504
versionName "9.0.65-4"
// Supported language variants must be declared here to avoid from being removed during the compilation.
// This also helps us to not include unnecessary language variants in the APK.
resConfigs "en", "es"
Expand Down
8 changes: 8 additions & 0 deletions desktop/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ const {DESKTOP_SHORTCUT_ACCELERATOR, LOCALES} = CONST;
// geolocation api (window.navigator.geolocation.getCurrentPosition) to work on desktop.
// Source: https://github.com/electron/electron/blob/98cd16d336f512406eee3565be1cead86514db7b/docs/api/environment-variables.md#google_api_key
process.env.GOOGLE_API_KEY = CONFIG.GCP_GEOLOCATION_API_KEY;
/**
* Suppresses Content Security Policy (CSP) console warnings related to 'unsafe-eval'.
* This is required because:
* 1. Webpack utilizes eval() for module bundling
* 2. The application requires 'unsafe-eval' in CSP to function properly
* Note: CSP warnings are expected and unavoidable in this context
*/
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = CONFIG.ELECTRON_DISABLE_SECURITY_WARNINGS;

app.setName('New Expensify');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ You can receive bills in three ways:
- Manual Upload: For physical bills, create a Bill in Expensify from the Reports page.

# Bill Pay Workflow
1. When a vendor or supplier sends a bill to Expensify, the document is automatically SmartScanned, and a Bill is created. This Bill is managed by the primary domain contact, who can view it on the Reports page within their default group policy.
1. When a vendor or supplier sends a bill to Expensify, the document is automatically SmartScanned, and a Bill is created. This Bill is managed by the primary domain contact, who can view it on the Reports page within their default group workspace.

2. Once the Bill is ready for processing, it follows the established approval workflow. As each person approves it, the Bill appears in the next approver’s Inbox. The final approver will pay the Bill using one of the available payment methods.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Welcome to the world of effortless expense tracking! Connecting your personal cr
## How to connect your personal card to import expenses
Importing your card or bank via Account Settings will:
Automatically sync your bank/card transactions with your Expensify account. These will merge seamlessly with any SmartScanned expenses in your account.
Generate IRS-compliant eReceipts, provided your Policy Admin has enabled this feature.
Generate IRS-compliant eReceipts, provided your Workspace Admin has enabled this feature.
Discover below the numerous ways to easily bring your personal card expenses into Expensify below.

### *Important terms to know:*
Expand Down Expand Up @@ -45,7 +45,7 @@ _Please note: an OFX file type will require no editing but not all banks' OFX fi
6. Set the date format to match your CSV and adjust the currency to match your bank account currency.
7. If you've previously imported expenses for the same card, choose the default layout of a previously uploaded spreadsheet.
8. Scroll down and select which columns map to the merchant, date and amount (as a number without a currency symbol) – these are required presets which must be assigned.
9. If applicable, you can also map specific Categories and Tags as long as you don't have an integration connection to your default group policy. If you have an integration connected, you'll want to add the Categories and Tags to the expense after the expense is uploaded.
9. If applicable, you can also map specific Categories and Tags as long as you don't have an integration connection to your default group workspace. If you have an integration connected, you'll want to add the Categories and Tags to the expense after the expense is uploaded.
10. Check the preview of your selection under *Output Preview*. If everything looks good, you can then select *Add Expenses*.
11. For checking accounts, you may need to "Flip Amount Sign" as transactions are often exported as negative amounts.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ Personal Liability: Users are allowed to delete company card expenses.

If you update the settings on an existing company card feed, the changes will apply to expenses imported after the date the setting is saved. The update will not affect previously imported expenses.

## Preferred policy
## Preferred workspace

Setting a preferred policy for a company card feed will ensure that the imported transactions are added to a report on the policy you set. This setting is useful when members are on multiple policies and need to ensure their company card expenses are reported to a particular policy.
Setting a preferred workspace for a company card feed will ensure that the imported transactions are added to a report on the workspace you set. This setting is useful when members are on multiple workspaces and need to ensure their company card expenses are reported to a particular workspace.

# How to use Scheduled Submit with company cards
All expenses must be placed on a report if they need to be approved; with Scheduled Submit, you no longer need to worry about the arduous task of employees creating their expenses, adding them to a report, and submitting them manually. All they need to do is SmartScan their receipts and Concierge will take care of the rest, on a variety of schedules that you can set according to your preferences!
Expand All @@ -41,11 +41,11 @@ Concierge won't automatically submit expenses on reports that have Expense Viola
An employee can add comments in the Expense Comment field or at the bottom of the report to clarify any details.

## Enable Scheduled Submit
Scheduled Submit is enabled in the Group Policy by navigating to Settings > Policies > Group > Policy Name > Reports > Scheduled Submit
Scheduled Submit is enabled in the Group Workspace by navigating to Settings > Workspaces > Group > Workspace Name > Reports > Scheduled Submit
Use the toggle to enable Scheduled Submit
Choose your desired frequency

If Scheduled Submit is disabled on the group policy level (or set to a manual frequency), and you have noticed expense reports are still automatically submitted to the group policy, it's likely Scheduled Submit is enabled on the user’s Individual Policy settings.
If Scheduled Submit is disabled on the group workspace level (or set to a manual frequency), and you have noticed expense reports are still automatically submitted to the group workspace, it's likely Scheduled Submit is enabled on the user’s Individual Workspace settings.

# How to connect company cards to an accounting integration

Expand All @@ -59,7 +59,7 @@ You're all done. After the account is set, exported expenses will be mapped to t
## Pooled GL account

To export credit card expenses to a pooled GL account:
Go to Settings > Policies > Group > Policy Name > Connections > Accounting Integrations > Configure
Go to Settings > Workspaces > Group > Workspace Name > Connections > Accounting Integrations > Configure
Select Credit Card / Charge Card / Bank Transaction as your Non-reimbursable export option.
Please review the Export Settings page for exporting Expense Reports to NetSuite
Select the Vendor/liability account you want to export all non-reimbursable expenses to.
Expand All @@ -86,7 +86,7 @@ It's important to note that eReceipts are not generated for lodging expenses. Mo

{% include faq-begin.md %}
## What plan/subscription is required in order to manage corporate cards?
Group Policy (Collect or Control plan only)
Group Workspace (Collect or Control plan only)
## When do my company card transactions import to Expensify?
Credit card transactions are imported to Expensify once they’re posted to the bank account. This usually takes 1-3 business days between the point of purchase and when the transactions populate in your account.

Expand Down
6 changes: 3 additions & 3 deletions docs/articles/expensify-classic/connections/Deel.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Automatically sync expenses from Expensify to Deel

# Overview

This guide is for business clients who want to set up policies and synchronize expenses from Expensify to Deel. This one-way synchronization ensures that Expensify becomes the definitive source for all employee expenses.
This guide is for business clients who want to set up workspaces and synchronize expenses from Expensify to Deel. This one-way synchronization ensures that Expensify becomes the definitive source for all employee expenses.

If you are a contractor or employee working for a company using Expensify, please refer to:

Expand All @@ -16,7 +16,7 @@ If you are a contractor or employee working for a company using Expensify, pleas

By integrating Expensify with Deel, you can utilize Expensify’s approval workflows to ensure timely payment through Deel for your team.

This process involves aligning user profiles and expense policies between Expensify and Deel. Once connected, Deel will scan for approved expenses from matched users included in selected workspaces for integration, allowing Deel to import these expenses for reimbursement.
This process involves aligning user profiles and expense workspaces between Expensify and Deel. Once connected, Deel will scan for approved expenses from matched users included in selected workspaces for integration, allowing Deel to import these expenses for reimbursement.

This synchronization is one-way. Expenses and receipts logged and approved in Expensify will sync to Deel. Expenses logged in Deel will not sync to Expensify.

Expand All @@ -27,7 +27,7 @@ This synchronization is one-way. Expenses and receipts logged and approved in Ex
To establish a connection, make sure you have the following:

- Deel Organization Manager permissions
- Expensify Admin permissions for policies you wish to integrate with Deel
- Expensify Admin permissions for workspaces you wish to integrate with Deel
- A paid Expensify subscription to approve expenses and sync them to Deel

Expensify Admin permissions can be intricate. Refer to [Expensify’s Introduction to Integration]([https://example.com](https://integrations.expensify.com/Integration-Server/doc/#introduction)) for more details.
Expand Down
2 changes: 1 addition & 1 deletion docs/articles/expensify-classic/connections/Greenhouse.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,6 @@ Expensify's direct integration with Greenhouse allows you to automatically send

## In Expensify:

1. Navigate to **Settings > Policies > Group > _[Workspace Name]_ > Members**
1. Navigate to **Settings > Workspaces > Group > _[Workspace Name]_ > Members**
2. The candidate you just sent to Expensify should be listed in the workspace members list
3. If the Recruiter (or Recruiting Coordinator) field was filled in in Greenhouse, the candidate will already be configured to submit reports to that recruiter for approval. If no Recruiter was selected, then the candidate will submit based on the Expensify workspace approval settings.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Expensify and TSheets/QuickBooks Time Integration Guide
description: This help document explains how to connect TSheets/QuickBooks Time to your Expensify policy
description: This help document explains how to connect TSheets/QuickBooks Time to your Expensify workspace
---
# Overview

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,18 @@ The three options for the date your report will export with are:

**Expense Reports:** Expensify transactions will export reimbursable expenses as expense reports by default, which will be posted to the payables account designated in NetSuite.

**Vendor Bills:** Expensify transactions export as vendor bills in NetSuite and will be mapped to the subsidiary associated with the corresponding policy. Each report will be posted as payable to the vendor associated with the employee who submitted the report. You can also set an approval level in NetSuite for vendor bills.
**Vendor Bills:** Expensify transactions export as vendor bills in NetSuite and will be mapped to the subsidiary associated with the corresponding workspace. Each report will be posted as payable to the vendor associated with the employee who submitted the report. You can also set an approval level in NetSuite for vendor bills.

**Journal Entries:** Expensify transactions that are set to export as journal entries in NetSuite will be mapped to the subsidiary associated with this policy. All the transactions will be posted to the payable account specified in the policy. You can also set an approval level in NetSuite for the journal entries.
**Journal Entries:** Expensify transactions that are set to export as journal entries in NetSuite will be mapped to the subsidiary associated with this workspace. All the transactions will be posted to the payable account specified in the workspace. You can also set an approval level in NetSuite for the journal entries.

- Journal entry forms by default do not contain a customer column, so it is not possible to export customers or projects with this export option
- The credit line and header level classifications are pulled from the employee record

## Export Settings for Non-Reimbursable Expenses

**Vendor Bills:** Non-reimbursable expenses will be posted as a vendor bill payable to the default vendor specified in your policy's connection settings. If you centrally manage your company cards through Domains, you can export expenses from each card to a specific vendor in NetSuite. You can also set an approval level in NetSuite for the bills.
**Vendor Bills:** Non-reimbursable expenses will be posted as a vendor bill payable to the default vendor specified in your workspace's connection settings. If you centrally manage your company cards through Domains, you can export expenses from each card to a specific vendor in NetSuite. You can also set an approval level in NetSuite for the bills.

**Journal Entries:** Non-reimbursable expenses will be posted to the Journal Entries posting account selected in your policy's connection settings. If you centrally manage your company cards through Domains, you can export expenses from each card to a specific account in NetSuite.
**Journal Entries:** Non-reimbursable expenses will be posted to the Journal Entries posting account selected in your workspace's connection settings. If you centrally manage your company cards through Domains, you can export expenses from each card to a specific account in NetSuite.

- Expensify Card expenses will always export as Journal Entries, even if you have Expense Reports or Vendor Bills configured for non-reimbursable expenses on the Export tab
- Journal entry forms do not contain a customer column, so it is not possible to export customers or projects with this export option
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ This can happen if the employee’s subsidiary in NetSuite doesn’t match what
- Ensure the email on the employee record in NetSuite matches the email address of the report submitter in Expensify.
- In NetSuite, make sure the employee's hire date is in the past and/or the termination date is in the future.
4. **Currency Match for Journal Entries:**
- If exporting as Journal Entries, ensure the currency for the NetSuite employee record, NetSuite subsidiary, and Expensify policy all match.
- In NetSuite, go to the **Human Resources** tab > **Expense Report Currencies**, and add the subsidiary/policy currency if necessary.
- If exporting as Journal Entries, ensure the currency for the NetSuite employee record, NetSuite subsidiary, and Expensify workspace all match.
- In NetSuite, go to the **Human Resources** tab > **Expense Report Currencies**, and add the subsidiary/workspace currency if necessary.

# ExpensiError NS0024: Invalid Customer or Project Tag
Employees must be listed as a resource on the customer/project in NetSuite to be able to apply it to an expense. If that isn’t set up in NetSuite, you can run into this error.
Expand Down
2 changes: 1 addition & 1 deletion docs/articles/expensify-classic/domains/SAML-SSO.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ Before getting started, you will need a verified domain and Control plan to set
6. The new trust is now created. Highlight the trust, then click *Edit claim rules* on the right.
7. Click *Add a Rule*.
8. The default option should be *Send LDAP Attributes as Claims*. Click Next.
9. Depending upon how your Active Directory is set up, you may or may not have a useful email address associated with each user, or you may have a policy to use the UPN as the user attribute for authentication. If so, using the UPN user attribute may be appropriate for you. If not, you can use the email address attribute.
9. Depending upon how your Active Directory is set up, you may or may not have a useful email address associated with each user, or you may have a workspace to use the UPN as the user attribute for authentication. If so, using the UPN user attribute may be appropriate for you. If not, you can use the email address attribute.
10. Give the rule a name like *Get email address from AD*. Choose Active Directory as the attribute store from the dropdown list. Choose your source user attribute to pass to Expensify that has users’ email address info in it, usually either *E-Mail-Address* or *User-Principal-Name*. Select the outgoing claim type as “E-Mail Address”. Click OK.
11. Add another rule; this time, we want to *Transform an Incoming Claim*. Click Next.
12. Name the rule *Send email address*. The Incoming claim type should be *E-Mail Address*. The outgoing claim type should be *Name ID*, and the outgoing name ID format should be *Email*. Click OK.
Expand Down
Loading

0 comments on commit c847cd8

Please sign in to comment.