Skip to content

Commit

Permalink
Merge branch 'main' into georgia-cardTransactionsTS
Browse files Browse the repository at this point in the history
  • Loading branch information
grgia committed Oct 6, 2023
2 parents f827aa6 + 4b0752a commit 38f8f58
Show file tree
Hide file tree
Showing 147 changed files with 12,527 additions and 1,532 deletions.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ USE_WEB_PROXY=false
USE_WDYR=false
CAPTURE_METRICS=false
ONYX_METRICS=false
GOOGLE_GEOLOCATION_API_KEY=AIzaSyBqg6bMvQU7cPWDKhhzpYqJrTEnSorpiLI

EXPENSIFY_ACCOUNT_ID_ACCOUNTING=-1
EXPENSIFY_ACCOUNT_ID_ADMIN=-1
Expand Down
1 change: 1 addition & 0 deletions .env.production
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ PUSHER_APP_KEY=268df511a204fbb60884
USE_WEB_PROXY=false
ENVIRONMENT=production
SEND_CRASH_REPORTS=true
GOOGLE_GEOLOCATION_API_KEY=AIzaSyBFKujMpzExz0_z2pAGfPUwkmlaUc-uw1Q
1 change: 1 addition & 0 deletions .env.staging
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ PUSHER_APP_KEY=268df511a204fbb60884
USE_WEB_PROXY=false
ENVIRONMENT=staging
SEND_CRASH_REPORTS=true
GOOGLE_GEOLOCATION_API_KEY=AIzaSyD2T1mlByThbUN88O8OPOD8vKuMMwLD4-M
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 1001037702
versionName "1.3.77-2"
versionCode 1001037901
versionName "1.3.79-1"
}

flavorDimensions "default"
Expand Down
1 change: 1 addition & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS"/>

<!-- android:hardwareAccelerated is essential for Android performance: https://developer.android.com/topic/performance/hardware-accel -->
Expand Down
1 change: 0 additions & 1 deletion contributingGuides/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,6 @@ Additionally if you want to discuss an idea with the open source community witho
#### Important note about JavaScript Style
- Read our official [JavaScript and React style guide](https://github.com/Expensify/App/blob/main/contributingGuides/STYLE.md). Please refer to our Style Guide before asking for a review.
- We have nothing against Prettier or any other automatic style fixers, but we generally don't use them here at Expensify. Do not use Prettier. The style changes these tools enforce don't always align with the ones we recommend and require in our eslint configs and can result in unnecessary changes for our reviewers. Ignoring this advice will ultimately make your changes take longer to review as we will ask you to undo any style changes that are not related to the important changes you are making.
#### For external agencies that Expensify partners with
Follow all the above above steps and processes. When you find a job you'd like to work on:
Expand Down
5 changes: 5 additions & 0 deletions desktop/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ const Localize = require('../src/libs/Localize');
const port = process.env.PORT || 8082;
const {DESKTOP_SHORTCUT_ACCELERATOR, LOCALES} = CONST;

// Setup google api key in process environment, we are setting it this way intentionally. It is required by the
// 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.GOOGLE_GEOLOCATION_API_KEY;

app.setName('New Expensify');

/**
Expand Down
2 changes: 1 addition & 1 deletion docs/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ gem "webrick", "~> 1.7"
gem 'jekyll-seo-tag'

gem 'jekyll-redirect-from'

gem 'liquid', '~> 4.0.4'
29 changes: 15 additions & 14 deletions docs/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ GEM
execjs
coffee-script-source (1.11.1)
colorator (1.1.0)
commonmarker (0.23.5)
commonmarker (0.23.10)
concurrent-ruby (1.1.10)
dnsruby (1.61.9)
simpleidn (~> 0.1)
Expand All @@ -32,12 +32,12 @@ GEM
ffi (1.15.5)
forwardable-extended (2.6.0)
gemoji (3.0.1)
github-pages (226)
github-pages (228)
github-pages-health-check (= 1.17.9)
jekyll (= 3.9.2)
jekyll (= 3.9.3)
jekyll-avatar (= 0.7.0)
jekyll-coffeescript (= 1.1.1)
jekyll-commonmark-ghpages (= 0.2.0)
jekyll-commonmark-ghpages (= 0.4.0)
jekyll-default-layout (= 0.1.4)
jekyll-feed (= 0.15.1)
jekyll-gist (= 1.5.0)
Expand Down Expand Up @@ -71,10 +71,10 @@ GEM
jemoji (= 0.12.0)
kramdown (= 2.3.2)
kramdown-parser-gfm (= 1.1.0)
liquid (= 4.0.3)
liquid (= 4.0.4)
mercenary (~> 0.3)
minima (= 2.5.1)
nokogiri (>= 1.13.4, < 2.0)
nokogiri (>= 1.13.6, < 2.0)
rouge (= 3.26.0)
terminal-table (~> 1.4)
github-pages-health-check (1.17.9)
Expand All @@ -89,11 +89,11 @@ GEM
http_parser.rb (0.8.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.9.2)
jekyll (3.9.3)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
i18n (>= 0.7, < 2)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (>= 1.17, < 3)
Expand All @@ -109,11 +109,11 @@ GEM
coffee-script-source (~> 1.11.1)
jekyll-commonmark (1.4.0)
commonmarker (~> 0.22)
jekyll-commonmark-ghpages (0.2.0)
commonmarker (~> 0.23.4)
jekyll-commonmark-ghpages (0.4.0)
commonmarker (~> 0.23.7)
jekyll (~> 3.9.0)
jekyll-commonmark (~> 1.4.0)
rouge (>= 2.0, < 4.0)
rouge (>= 2.0, < 5.0)
jekyll-default-layout (0.1.4)
jekyll (~> 3.0)
jekyll-feed (0.15.1)
Expand Down Expand Up @@ -201,7 +201,7 @@ GEM
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
liquid (4.0.4)
listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
Expand All @@ -211,9 +211,9 @@ GEM
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
minitest (5.16.2)
nokogiri (1.13.10-arm64-darwin)
nokogiri (1.15.4-arm64-darwin)
racc (~> 1.4)
nokogiri (1.13.10-x86_64-darwin)
nokogiri (1.15.4-x86_64-darwin)
racc (~> 1.4)
octokit (4.25.1)
faraday (>= 1, < 3)
Expand Down Expand Up @@ -265,6 +265,7 @@ DEPENDENCIES
jekyll-feed (~> 0.12)
jekyll-redirect-from
jekyll-seo-tag
liquid (~> 4.0.4)
tzinfo (~> 1.2)
tzinfo-data
wdm (~> 0.1.1)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: Connect ANZ
description: If you're an ANZ Visa customer, you can set up your cards to import transactions directly into Expensify and get a discount on your Expensify subscription.
---

# How to connect your ANZ Visa cards to Expensify
Importing your ANZ Visa into Expensify will allow your card transactions to flow into your Expensify account. These transactions will then merge automatically with any SmartScanned receipts in your Expensify reports.

## To connect via ANZ Internet Banking

1. Navigate to the ANZ Internet Banking portal.
2. Input your ANZ credentials to log into your online banking account.
3. Go to 'Your Settings' and click 'Manage bank feeds'.
4. Select 'Expensify'.
5. Fill out the Internet Banking data authority form and submit.
6. Once you’ve filled out and submitted your Internet Banking data authority form or ANZ Direct Online authority form, ANZ will set up the feed and send all the details directly to Expensify.
7. Then, we’ll add the card feed to your Expensify account and send you a message to let you know that it has been set up. We'll also include some webinar training resources to ensure you have all the information you need!

## To connect via ANZ Direct Online

1. Log into ANZ Direct Online with your ANZ credentials
2. Complete the ANZ Direct authority form by creating a batch and submitting the secure mail template form ‘Expensify Accounts Disclosure Authority’.
3. Detailed ANZ Direct Online instructions can be accessed here.
4. Once you’ve filled out and submitted your Internet Banking data authority form or ANZ Direct Online authority form, ANZ will set up the feed and send all the details directly to Expensify.
5. Then, we’ll add the card feed to your Expensify account and send you a message to let you know that it has been set up. We'll also include some webinar training resources to ensure you have all the information you need!

# FAQ
## Are there discounts available for ANZ customers?

As ANZ’s preferred receipt tracking and expense management partner, Expensify offers ANZ business customers a few special perks:
- 50% Expensify discount for the first 12 months.
- 15% Expensify discount after the first 12 months.

This offer applies to all *new* ANZ New Zealand business customers.

Sign up via www.use.expensify.com/anz to take advantage of this discount.

If you’d like to get even more savings, you can do so by committing to an Annual subscription. More information on that on our pricing page.

## What happens during the free trial?

While on the free trial, you’ll be able to configure and use the full suite of Expensify features. In your Expensify account, you can see many days you have left on your free trial. Towards the end of the free trial, you’ll be prompted for a payment card.
After the free trial, you’ll get preferred pricing at 50% off the current rates for the first 12 months, which is automatically applied to your account. At the end of the initial 12 months, the ongoing discount of 15% off the current rates, will be applied automatically.

## Do I need to sign up for a specific period in order to receive the discount?
There is no obligation to sign up for a certain period to receive the discount. After your free trial, the 50% discount for the first 12 months, will be applied automatically to your account. After the initial 12 months, the 15% discount will also be applied automatically.
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
---
title: Consolidated Domain Billing
description: Consolidated Domain Billing
description: Consolidated Domain Billing allows organizations to have different billing owners with only one person being billed for all paid workspaces.
---
## Resource Coming Soon!
<!-- The lines above are required by Jekyll to process the .md file -->
# Overview
If your organization requires that different workspaces have different billing owners, but only one person should pay the Expensify bill each month, you can enable Consolidated Domain Billing.
# How to enable Consolidated Domain Billing
Consolidated Domain Billing is a domain-level feature, so to access this setting, you’ll first need to claim and verify your domain. You can do this by heading to **Settings > Domains > Domain Name** > clicking on a setting such as **Groups** > and then clicking **Verify**.

Once the domain is verified, you can enable Consolidated Domain Billing under **Settings > Domains > Domain Name > Domain Admins > Primary Contact and Billing**.
# How to use Consolidated Domain Billing
When a Domain Admin enables Consolidated Domain Billing, all Group workspaces owned by any user with an email address matching the domain will get billed to the Consolidated Domain Billing owner’s account.
# Deep Dive
## Consolidated Domain Billing best practices
If you don’t have multiple billing owners across your organization, or if you want to keep billing separate for any reason, then this feature isn’t necessary.

If you have an Annual Subscription and enable Consolidated Domain Billing, the Consolidated Domain Billing feature will gather the amounts due for each Group workspace Billing Owner (listed under **Settings > Workspaces > Group**). To make full use of the Annual Subscription for all workspaces in your domain, you should also be the billing owner for all Group workspaces.
# FAQ
## How do I take over the billing of a workspace with Consolidated Domain Billing enabled?
You’ll have to toggle off Consolidated Domain Billing, take over ownership of the workspace, and then toggle it back on.
## Can I use Consolidated Domain Billing to cover the bill for some workspaces, but not others?
No, this feature means that you’ll be paying the bill for all domain members who choose a subscription.
62 changes: 59 additions & 3 deletions docs/articles/expensify-classic/expensify-card/File-A-Dispute.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,61 @@
---
title: File a Dispute
description: File a Dispute
title: Expensify Card - Transaction Disputes & Fraud
description: Learn how to dispute an Expensify Card transaction.
---
## Resource Coming Soon!
# Overview
When using your Expensify Card, you may come across transaction errors, which can include things like:
- Unrecognized, unauthorized, or fraudulent charges.
- Transactions of an incorrect amount.
- Duplicate charges for a single transaction.
- Missing a promised merchant refund.

You’ll find all the relevant information on handling these below.

# How to Navigate the Dispute Process
## Disputing a Transaction

If you spot an Expensify Card transaction error, please contact us immediately at [[email protected]](mailto:[email protected]). After that, we'll ask a few questions to better understand the situation. If the transaction has already settled in your account (no longer pending), we can file a dispute with our card processor on your behalf.

If you suspect fraud on your Expensify Card, don't hesitate to cancel it by heading to Settings > Account > Credit Card Import > Request A New Card. Better safe than sorry!

Lastly, if you haven’t enabled Two-Factor Authentication (2FA) yet, please do so ASAP to add an additional layer of security to your account.

## Types of Disputes

There are two main dispute types:

1. Unauthorized charges/fraud disputes, which include:
- Charges made with your card after it was lost or stolen.
- Unauthorized charges while your card is still in your possession (indicating compromised card information).
- Continued charges for a canceled recurring subscription.

2. Service disputes, which include:
- Received damaged or defective merchandise.
- Charged for merchandise but never received it.
- Double-charged for a purchase made with another method (e.g., cash).
- Made a return but didn't receive a timely refund.
- Multiple charges for a single transaction.
- Charges settled for an incorrect amount.

You don't need to categorize your dispute; we'll handle that. However, this may help you assess if a situation warrants a dispute. In most cases, the initial step for resolving a dispute should be contacting the merchant, as they can often address the issue promptly.

## Simplifying the Dispute Process

To ensure the dispute process goes smoothly, please:
- Provide detailed information about the disputed charge, including why you're disputing it, what occurred, and any steps you've taken to address the issue.
- If you recognize the merchant but not the charge, and you've transacted with them before, contact the merchant directly, as it may be a non-fraudulent error.
- Include supporting documentation like receipts or cancellation confirmations when submitting your dispute to enhance the likelihood of a favorable resolution.

# FAQ

## **How am I protected from fraud using the Expensify Card?**
Real-time push notifications alert you of every card charge upfront, helping identify potential issues immediately. Expensify also leverages sophisticated algorithms to detect and/or block unusual card activity.

Expensify cardholders can dispute suspicious transactions directly via Concierge, either within the Expensify app or by emailing [[email protected]](mailto:[email protected]). Cardholders can also cancel their Expensify Card anytime within our platform.

## **How long does the dispute process take?**
The dispute process can take a few days to a few months. It depends on the type of dispute.

## **Can I cancel a dispute?**
Contact Concierge if you've filed a dispute and want to cancel it. You might do this if you recognize a previously reported unauthorized charge or if the merchant has already resolved the issue.

39 changes: 39 additions & 0 deletions docs/articles/expensify-classic/exports/Other-Export-Options.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
title: Other Export Options
description: Other Export Options
---

# Overview
Here’s a quick look at how to export your expense and report data into a spreadsheet, accounting package, or PDF. We’ll also show you how to print out your reports in a few easy steps.

# How to export expenses and reports to a CSV or accounting package
From the **Expenses** page, you can export individual expenses into a CSV. From the Reports page, you can export entire reports into a CSV or connected accounting package. Here’s how to do both:

1. Go to either the Expenses or Reports page
2. On the left hand side, select the expenses/reports you’d like to export
3. Click **Export to** at the top right of the page
4. Choose the desired export option

You can use one of the default templates or create your own template. The default templates and the option to export to a connected accounting package are only available on the **Reports** page. Visit the specific help page for your accounting package to learn more about how to get this set up.

# How to export a report as a PDF
1. Go to the **Reports** page
2. Click into a report
3. Click on **Details** in the top right of the report
4. Click the **download icon** to generate a PDF

The PDF will include all expenses, any attached receipts, and all report notes.

# How to print a report
1. Go to the Reports page
2. Click into a report
3. Click on **Details** in the top right of the report
4. Click the **print icon**

# FAQ
## Why isn’t my report exporting?
Big reports with lots of expenses may cause the PDF download to fail due to images with large resolutions. In that case, try breaking the report into multiple smaller reports. Also, please note that a report must have at least one expense to be exported or saved as a PDF.
## Can I download multiple PDFs at once?
No, you can’t download multiple reports as PDFs at the same time. If you’d like to export multiple reports, an alternative to consider is the CSV export option.
## The data exported to Excel is showing incorrectly. How can I fix this?
When opening a CSV file export from Expensify in Excel, it’ll automatically register report IDs and transaction IDs as numbers and assign the number format to the report ID column. If a number is greater than a certain length, Excel will contract the number and display it in exponential form. To prevent this, the number needs to be imported as text, which can be done by opening Excel and clicking File > Import > select your CSV file > follow the prompts and on step 3 set the report ID/transactionID column to import as Text.
Loading

0 comments on commit 38f8f58

Please sign in to comment.