Skip to content

Commit

Permalink
Merge branch 'main' into feature/onyx-skippable-collection-member-ids
Browse files Browse the repository at this point in the history
  • Loading branch information
fabioh8010 committed Jan 29, 2025
2 parents 8881b27 + 242b4c9 commit 9f10794
Show file tree
Hide file tree
Showing 128 changed files with 2,853 additions and 1,829 deletions.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ EXPENSIFY_ACCOUNT_ID_RECEIPTS=-1
EXPENSIFY_ACCOUNT_ID_REWARDS=-1
EXPENSIFY_ACCOUNT_ID_STUDENT_AMBASSADOR=-1
EXPENSIFY_ACCOUNT_ID_SVFG=-1
EXPENSIFY_ACCOUNT_ID_MANAGER_MCTEST=-1

FB_API_KEY=YOUR_API_KEY
FB_APP_ID=YOUR_APP_ID
Expand Down
27 changes: 0 additions & 27 deletions .github/workflows/commentOnNativeFileChanged.yml

This file was deleted.

30 changes: 0 additions & 30 deletions .github/workflows/compareNDandODbuilds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,14 @@ on:
workflow_dispatch:

jobs:
validateActor:
runs-on: ubuntu-latest
outputs:
READY_TO_BUILD: ${{ fromJSON(steps.isExpensifyEmployee.outputs.IS_EXPENSIFY_EMPLOYEE) && fromJSON(steps.hasReadyToBuildLabel.outputs.HAS_READY_TO_BUILD_LABEL) }}
steps:
- name: Is Expensify employee
id: isExpensifyEmployee
run: |
if gh api /orgs/Expensify/teams/expensify-expensify/memberships/${{ github.actor }} --silent; then
echo "IS_EXPENSIFY_EMPLOYEE=true" >> "$GITHUB_OUTPUT"
else
echo "IS_EXPENSIFY_EMPLOYEE=false" >> "$GITHUB_OUTPUT"
fi
env:
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}

- id: hasReadyToBuildLabel
name: Set HAS_READY_TO_BUILD_LABEL flag
run: |
echo "HAS_READY_TO_BUILD_LABEL=$(gh pr view "${{ env.PULL_REQUEST_NUMBER }}" --repo Expensify/App --json labels --jq '.labels[].name' | grep -q 'Ready To Build' && echo 'true')" >> "$GITHUB_OUTPUT"
if [[ "$HAS_READY_TO_BUILD_LABEL" != 'true' ]]; then
echo "The 'Ready to Build' label is not attached to the PR #${{ env.PULL_REQUEST_NUMBER }}"
fi
env:
GITHUB_TOKEN: ${{ github.token }}

buildHybridAppAndroid:
name: Build HybridApp Android
needs: [validateActor]
runs-on: macos-15-xlarge
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
ref: ${{ github.event.pull_request.head.sha }}
token: ${{ secrets.OS_BOTIFY_TOKEN }}

- name: Update submodule to match main
Expand Down Expand Up @@ -74,13 +46,11 @@ jobs:
buildStandaloneAndroid:
name: Build Standalone Android
needs: [ validateActor ]
runs-on: macos-15-xlarge
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
token: ${{ secrets.OS_BOTIFY_TOKEN }}

- name: Configure MapBox SDK
Expand Down
2 changes: 1 addition & 1 deletion Mobile-Expensify
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 1009009100
versionName "9.0.91-0"
versionCode 1009009101
versionName "9.0.91-1"
// 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
156 changes: 156 additions & 0 deletions assets/images/magnifying-glass-spy-mouth-closed.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions contributingGuides/PERFORMANCE_METRICS.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Project is using Firebase for tracking these metrics. However, not all of them a
| `open_report_from_preview` || Time taken to open a report from preview.<br><br>(previously `switch_report_from_preview`)<br><br>**Platforms:** All | Starts when the user presses the Report Preview. | Stops when the `ReportActionsList` finishes laying out. |
| `open_report_thread` || Time taken to open a thread in a report.<br><br>**Platforms:** All | Starts when user presses Report Action Item. | Stops when the `ReportActionsList` finishes laying out. |
| `send_message` || Time taken to send a message.<br><br>**Platforms:** All | Starts when the new message is sent. | Stops when the message is being rendered in the chat. |
| `pusher_ping_pong` || The time it takes to receive a PONG event through Pusher.<br><br>**Platforms:** All | Starts every minute and repeats on the minute. | Stops when the event is received from the server. |

## Documentation Maintenance

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
---
title: Manage Company Credit Cards in Expensify
description: Learn how to assign, manage, and unassign company cards in Expensify to streamline expense tracking and maintain accurate transaction records.
---
Assigning company cards in Expensify ensures employees can seamlessly track business expenses, while administrators maintain accurate transaction records. This guide explains how to assign, manage, and unassign company cards to keep your expense management streamlined

## Main Uses
- **Streamlined Expense Tracking**: Automatically import credit card transactions to ensure accurate reporting and reconciliation.
- **Flexible Connection Options**: Connect cards via direct bank connections, commercial feeds, or CSV uploads.
- **Centralized Management**: Simplify administration of company cards and individual expenses within Expensify.

## Core Users
- **Domain Admins**: Manage credit card connections and assignments across the organization.
- **Employees**: Track and manage their assigned card transactions.
- **Finance Teams**: Ensure accurate reporting and reconciliation of expenses.

## Advantages
- **Automation**: Reduce manual entry with automatic imports for supported card programs.
- **Compatibility**: Support for major banks and custom CSV uploads for unsupported cards.
- **Control**: Assign, manage, and configure credit cards in one central place.

---
# Key Concepts

## Direct Bank Connections
A direct bank connection links Expensify to your bank for automatic transaction imports.

- **Supported Banks**: Includes major institutions like Chase, Amex, Citibank, Wells Fargo, and others.
- **Credentials**: Requires master administrative login credentials.
- **Import History**: Banks typically provide 30-90 days of historical transactions.
- **Troubleshooting**: If your connection fails, ensure your bank login credentials are correct and security questions are up to date. Disable two-factor authentication temporarily if necessary, as Expensify cannot bypass it. Use the "Fix Card" option in **Settings > Domains > [Domain Name] > Company Cards** to resolve issues.

## Commercial Card Feed
A commercial card feed is a direct connection between Expensify and your bank for reliable daily transaction imports.

- **Supported Networks**: Visa, Mastercard, and American Express.
- **Setup**: Initiated by your bank and configured in Expensify.
- **Advantages**: More stable and not affected by changes to login credentials.
- **Deep Dive**: For Mastercard, use the Common Data File (CDF) format; for Visa, enable the Variant Call Format (VCF). American Express requires specific forms. Ensure you provide accurate distribution IDs and start dates during setup to avoid data gaps.

## CSV Upload
A CSV upload is a manual method for importing credit card transactions into Expensify.

- **File Formats**: Accepts CSV, OFX, QFX, or XLS files.
- **Minimum Required Fields**: Includes card number, date, merchant, amount, and currency.
- **Use Case**: Ideal for unsupported banks or importing older transactions.
- **Common Issues**: If you encounter errors such as "Attribute value mapping is missing," ensure all required fields are included and formatted correctly. Use Expensify’s [CSV template](https://s3-us-west-1.amazonaws.com/concierge-responses-expensify-com/uploads%2F1594908368712-Best+Example+CSV+for+Domains.csv) as a guide.

---
# Direct Connection: How do I connect credit cards via direct bank connection?
1. Go to **Settings > Domains > [Domain Name] > Company Cards**.
2. Click **Import Card**.
3. Select your card issuer and enter the master administrative login credentials.
4. Assign accounts to cardholders.
5. Set a start date to determine which transactions will appear.

---
# Commercial Card Feed: How do I set up a commercial card feed?

## Mastercard
1. Contact your bank and request a Common Data File (CDF) feed for Expensify.
2. Provide the desired start date for transaction imports.
3. Submit the distribution ID to Expensify via the [submission form](https://expensify.typeform.com/to/cGlCAz).
4. Expensify will notify you once the feed is enabled.

## Visa
1. Request a Variant Call Format (VCF) feed for Expensify from your bank.
2. Obtain the feed file name or raw file information.
3. Submit the file details via the [submission form](https://expensify.typeform.com/to/cGlCAz).

## American Express
1. Complete the required [Amex forms](https://drive.google.com/file/d/1zqDA_MCk06jk_fWjzx2y0r4gOyAMqKJe/view?usp=sharing).
2. Email the forms to American Express.
3. Submit the provided production file information to Expensify.

---
# CSV Upload: How do I import credit card transactions using a CSV?
1. Download your card transactions in a CSV, OFX, QFX, or XLS format from your bank.
2. Format the file to include the card number, date, merchant, amount, and currency.
3. Go to **Settings > Domains > [Domain Name] > Company Cards > Manage/Import CSV**.
4. Upload the file and map the fields to Expensify’s requirements.
5. Review the Output Preview for errors and submit the file.

---
# Assign Cards: How do I assign cards to employees?
1. Go to **Settings > Domains > [Domain Name] > Company Cards**.
2. Select the card feed from the dropdown list.
3. Click **Assign New Cards** and select the employee’s email and card number.
4. (Optional) Set a transaction start date.
5. Click **Assign** to complete the process.

---
# Unassign Cards: How do I unassign cards?
1. Go to **Settings > Domains > [Domain Name] > Company Cards**.
2. Locate the card and click **Actions > Unassign**.
3. (Optional) To remove the card feed, unassign all associated cards and refresh the page.

_**Note: Unassigning a card deletes all open or unreported expenses linked to it.**_

---
# Configure Company Card Settings
1. Go to **Settings > Domains > [Domain Name] > Company Cards > Settings**.
2. Adjust preferences for:
- **Preferred Workspace**: Ensures transactions are reported to a specific workspace.
- **Reimbursable Preference**: Controls whether expenses are flagged as reimbursable or non-reimbursable.
- **Liability Type**: Sets corporate or personal liability for expenses. Corporate liability prevents users from deleting company card expenses, while personal liability allows users to manage and delete expenses directly.
3. Save the settings to apply changes.

**Tip**: For businesses using accounting integrations like QuickBooks or NetSuite, connect the cards to export expenses to specific general ledger (GL) accounts via the "Edit Exports" option.

---
# FAQ

## Missing Transactions: Why aren’t all transactions appearing?
Transactions may take up to 24 hours to post. Update the card feed or check the Reconciliation Dashboard to review transaction data.

- **Reconciliation Dashboard**: Navigate to **Settings > Domains > [Domain Name] > Company Cards > Reconciliation** to identify missing or unapproved expenses within a specific timeframe.
- **Common Issues**: Ensure the transaction date range is correct. If gaps persist, contact Concierge to request a historical data update.

## Direct vs. Commercial Feeds: Which option is better?
Commercial feeds are more stable and reliable but require setup by your bank. Direct connections are easier to set up but may experience occasional disruptions.

## CSV Upload Errors: What should I do if my upload fails?
Ensure the file includes the required fields and matches the formatting guidelines. Use Expensify’s [CSV template](https://s3-us-west-1.amazonaws.com/concierge-responses-expensify-com/uploads%2F1594908368712-Best+Example+CSV+for+Domains.csv) for reference.

## Unassigning Cards: What happens when I unassign a card?
Unassigning a card deletes all open or unreported expenses linked to it. Submitted or processed expenses remain unaffected.

## Connection Issues: Why is my card connection broken?
Check for changes to bank credentials, security questions, or login details. Update the information in Expensify and re-establish the connection via **Fix Card**.

## Historical Data: How far back can I import transactions?
Most banks provide 30-90 days of historical data. Older transactions can be imported using the CSV upload method.
Loading

0 comments on commit 9f10794

Please sign in to comment.