Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/rezkiy37/Expensify into cho…
Browse files Browse the repository at this point in the history
…re/53322-bump-eslint-config-expensify
  • Loading branch information
rezkiy37 committed Dec 5, 2024
2 parents 277547d + 0ff0cdf commit 7e908fa
Show file tree
Hide file tree
Showing 72 changed files with 815 additions and 562 deletions.
60 changes: 11 additions & 49 deletions .github/workflows/testBuildHybrid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ jobs:
run:
working-directory: Mobile-Expensify/react-native
outputs:
APK_FILE_NAME: ${{ steps.build.outputs.APK_FILE_NAME }}
S3_APK_PATH: ${{ steps.exportAndroidS3Path.outputs.S3_APK_PATH }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down Expand Up @@ -139,9 +139,6 @@ jobs:
bundler-cache: true
working-directory: 'Mobile-Expensify/react-native'

- name: Install New Expensify Gems
run: bundle install

- name: Install 1Password CLI
uses: 1password/install-cli-action@v1

Expand Down Expand Up @@ -175,68 +172,33 @@ jobs:
ANDROID_UPLOAD_KEYSTORE_PASSWORD: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEYSTORE_PASSWORD }}
ANDROID_UPLOAD_KEYSTORE_ALIAS: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEYSTORE_ALIAS }}
ANDROID_UPLOAD_KEY_PASSWORD: ${{ steps.load-credentials.outputs.ANDROID_UPLOAD_KEY_PASSWORD }}
run: |
bundle exec fastlane android build_adhoc_hybrid
# Refresh environment variables from GITHUB_ENV that are updated when running fastlane
# shellcheck disable=SC1090
source "$GITHUB_ENV"
# apkPath is set within the Fastfile
echo "APK_FILE_NAME=$(basename "$apkPath")" >> "$GITHUB_OUTPUT"
uploadAndroid:
name: Upload Android hybrid app to S3
needs: [androidHybrid]
runs-on: ubuntu-latest
outputs:
S3_APK_PATH: ${{ steps.exportS3Path.outputs.S3_APK_PATH }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Ruby
uses: ruby/[email protected]
with:
bundler-cache: true

- name: Download Android build artifacts
uses: actions/download-artifact@v4
with:
path: /tmp/artifacts
pattern: android-*-artifact
merge-multiple: true

- name: Log downloaded artifact paths
run: ls -R /tmp/artifacts

run: bundle exec fastlane android build_adhoc_hybrid

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1

- name: Upload AdHoc build to S3
- name: Upload Android AdHoc build to S3
run: bundle exec fastlane android upload_s3
env:
apkPath: /tmp/artifacts/${{ needs.androidHybrid.outputs.APK_FILE_NAME }}
S3_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
S3_BUCKET: ad-hoc-expensify-cash
S3_REGION: us-east-1
S3_REGION: us-east-1

- name: Export S3 paths
id: exportS3Path
- name: Export S3 path
id: exportAndroidS3Path
run: |
# $s3APKPath is set from within the Fastfile, android upload_s3 lane
echo "S3_APK_PATH=$s3APKPath" >> "$GITHUB_OUTPUT"
postGithubComment:
runs-on: ubuntu-latest
name: Post a GitHub comment with app download links for testing
needs: [validateActor, getBranchRef, uploadAndroid] #TODO add ios job
needs: [validateActor, getBranchRef, androidHybrid]
if: ${{ always() }}
steps:
- name: Checkout
Expand All @@ -255,5 +217,5 @@ jobs:
with:
PR_NUMBER: ${{ env.PULL_REQUEST_NUMBER }}
GITHUB_TOKEN: ${{ github.token }}
ANDROID: ${{ needs.uploadAndroid.result }}
ANDROID_LINK: ${{ needs.uploadAndroid.outputs.S3_APK_PATH }}
ANDROID: ${{ needs.androidHybrid.result }}
ANDROID_LINK: ${{ needs.androidHybrid.outputs.S3_APK_PATH }}
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 1009007100
versionName "9.0.71-0"
versionCode 1009007102
versionName "9.0.71-2"
// 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
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ To connect a deposit-only account,

1. Hover over **Settings**, then click **Account**.
2. Click the **Payments** tab on the left.
3. Click **Add Deposit-Only Bank Account**, then click **Connect to your bank**.
3. Click **Add Deposit-Only Bank Account**, then click **Connect to your bank**.
4. Click **Continue**.
5. Search for your bank account in the list of banks and follow the prompts to sign in to your bank account.
- If your bank doesn’t appear, click the X in the right corner of the Plaid pop-up window, then click **Connect Manually**. You’ll then manually enter your account information and click **Save & Continue**.
Expand All @@ -19,6 +19,10 @@ To connect a deposit-only account,

You’ll now receive reimbursements for your expense reports and invoices directly to this bank account.

{% include info.html %}
If your organization has global reimbursement enabled and you want to add a bank account outside of the US, you can do so by following the steps above. However, after clicking on **Add Deposit-Only Bank Account**, look for a button that says **Switch Country**. This will allow you to add a deposit account from a supported country and receive reimbursements in your local currency.
{% include end-info.html %}

{% include faq-begin.md %}

**I connected my deposit-only bank account. Why haven’t I received my reimbursement?**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Add Domain Members and Admins
description: Add members and admins to a domain
title: Add and remove Domain Members and Admins
description: Add and remove members and admins to a domain
---
<div id="expensify-classic" markdown="1">

Expand Down Expand Up @@ -34,7 +34,19 @@ Once the member verifies their email address, all Domain Admins will be notified
1. Hover over Settings, then click **Domains**.
2. Click the name of the domain.
3. Click the **Domain Members** tab on the left.
4. Under the Domain Members section, enter the first part of the member’s email address and click **Invite**.
4. Under the Domain Members section, enter the first part of the member’s email address and click **Invite**.

# Close a Domain Member’s account

1. Hover over Settings, then click **Domains**.
2. Click the name of the domain.
3. Click the **Domain Members** tab on the left.
4. Find the user account you’d like to close, and select it
5. Click **Close** to close the account

{% include info.html %}
Any closed account can be reopened at any time, by reinviting the user via the Domain Member page
{% include end-info.html %}

# Add Domain Admin

Expand All @@ -47,4 +59,12 @@ Once the member verifies their email address, all Domain Admins will be notified
This can be any email address—it does not have to be an email address under the domain.
{% include end-info.html %}

# Remove Domain Admin

1. Hover over Settings, then click **Domains**.
2. Click the name of the domain.
3. Click the **Domain Admins** tab on the left.
4. Under the Domain Admins section, click the red trash can button next to the Domain Admin you’d like to remove

</div>

61 changes: 61 additions & 0 deletions docs/articles/expensify-classic/expenses/Create-Expense-Rules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: Create Expense Rules
description: Automatically categorize, tag, and report expenses based on the merchant's name
---

Expense rules allow you to automatically categorize, tag, and report expenses based on the merchant’s name.

# Create expense rules

1. Hover over **Settings** and click **Account**.
2. Click **Expense Rules**.
2. Click **New Rule**.
3. Add what the merchant name should contain in order for the rule to be applied. *Note: If you enter just a period, the rule will apply to all expenses regardless of the merchant name. Universal Rules will always take precedence over all other expense rules.*
4. Choose from the following rules:
- **Merchant:** Updates the merchant name (e.g., “Starbucks #238” could be changed to “Starbucks”)
- **Category:** Applies a workspace category to the expense
- **Tag:** Applies a tag to the expense (e.g., a Department or Location)
- **Description:** Adds a description to the description field on the expense
- **Reimbursability:** Determines whether the expense will be marked as reimbursable or non-reimbursable
- **Billable**: Determines whether the expense is billable
- **Add to a report named:** Adds the expense to a report with the name you type into the field. If no report with that name exists, a new report will be created if the "Create report if necessary" checkbox is selected.

![Fields to create a new expense rule, including the characters a merchant's name should contain for the rule to apply, as well as what changes should be applied to the expense including the merchant name, category, tag, description, reimbursability, whether it is billable, and what report it will be added to.](https://help.expensify.com/assets/images/ExpensifyHelp_ExpenseRules_01.png){:width="100%"}

{:start="6"}
6. (Optional) To apply the rule to previously entered expenses, select the **Apply to existing matching expenses** checkbox. You can also click **Preview Matching Expenses** to see if your rule matches the intended expenses.

# How rules are applied

In general, your expense rules will be applied in order, from **top to bottom**, (i.e., from the first rule). However, other settings can impact how expense rules are applied. Here is the hierarchy that determines how these are applied:

1. A Universal Rule will **always** be applied over any other expense category rules. Rules that would otherwise change the expense category will **not** override the Universal Rule.
2. If Scheduled Submit and the setting “Enforce Default Report Title” are enabled on the workspace, this will take precedence over any rules trying to add the expense to a report.
3. If the expense is from a company card that is forced to a workspace with strict rule enforcement, those rules will take precedence over individual expense rules.
4. If you belong to a workspace that is tied to an accounting integration, the configuration settings for this connection may update your expense details upon export, even if the expense rules were successfully applied to the expense.

# Create an expense rule from changes made to an expense

If you open an expense and change it, you can then create an expense rule based on those changes by selecting the “Create a rule based on your changes" checkbox. *Note: The expense must be saved, reopened, and edited for this option to appear.*

![The "Create a rule based on your changes" checkbox is located in the bottom right corner of the popup window, to the left of the Save button.](https://help.expensify.com/assets/images/ExpensifyHelp_ExpenseRules_02.png){:width="100%"}

# Delete an expense rule

To delete an expense rule,

1. Hover over **Settings** and click **Account**.
2. Click **Expense Rules**.
3. Scroll down to the rule you’d like to remove and click the trash can icon.

![The Trash icon to delete an expense rule is located at the top right of the box containing the expense rule, to the left of the Edit icon.](https://help.expensify.com/assets/images/ExpensifyHelp_ExpenseRules_03.png){:width="100%"}

{% include faq-begin.md %}

## How can I use expense rules to vendor match when exporting to an accounting package?

When exporting non-reimbursable expenses to your connected accounting package, the payee field will list "Credit Card Misc." if the merchant name on the expense in Expensify is not an exact match to a vendor in the accounting package. When an exact match is unavailable, "Credit Card Misc." prevents multiple variations of the same vendor (e.g., Starbucks and Starbucks #1234, as is often seen in credit card statements) from being created in your accounting package.

For repeated expenses, the best practice is to use Expense Rules, which will automatically update the merchant name without having to do it manually each time. This only works for connections to QuickBooks Online, Desktop, and Xero. Vendor matching cannot be performed in this manner for NetSuite or Sage Intacct due to limitations in the API of the accounting package.

{% include faq-end.md %}
55 changes: 0 additions & 55 deletions docs/articles/expensify-classic/expenses/Expense-Rules.md

This file was deleted.

Loading

0 comments on commit 7e908fa

Please sign in to comment.