-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/rezkiy37/Expensify into cho…
…re/53322-bump-eslint-config-expensify
- Loading branch information
Showing
72 changed files
with
815 additions
and
562 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 | ||
|
@@ -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 | ||
|
||
|
@@ -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 | ||
|
@@ -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 }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 61 additions & 0 deletions
61
docs/articles/expensify-classic/expenses/Create-Expense-Rules.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 %} |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.