App
App copied to clipboard
[HOLD] Implement Send Invoice flow from Global Create
Held on https://github.com/Expensify/App/pull/40303
Details
Implementation of invoice creation flow from Global Create
Fixed Issues
$ https://github.com/Expensify/App/issues/40012 PROPOSAL: N/A
Tests
- [x] Verify that no errors appear in the JS console
Note (!): Use staging server by turning it on in Settings
-> Troubleshoot
-> Use Staging Server
Note (!): the backend has a know issue related to the invoice currency. If you want your test results to not be affected by that issue, set the sender workspace and the invoice currencies to be USD.
Note (!): the display of Invoice room and related report actions is implemented in this PR https://github.com/Expensify/App/pull/40303. So until the PR is not merged, you need to pull it manually to this for testing.
Flow 1
- Sign in to the app with a workspace admin account
- Open Global Create and verify
Send Invoice
appears in Global Create - Click Send invoice in Global Create: 3.1 Verify “Distance” and “Scan" do not appear in the big number pad (BNP) screen. 3.2 Verify the Currency can be modified
- Add an amount -> tap Next
- Select the participant, and make sure the participant's step works as expected. Press Next.
- Verify all of the information on the confirmation screen looks as expected. 6.1 The sender Workspace is displayed as expected. 6.2 The receiver is displayed as expected.
- Tap on the
Send from
workspace, you should be navigated to the Send from the screen. - Select another workspace, and make sure it works as expected.
- tap Send $XX.XX invoice, verify all of the necessary data is created in Onyx.
Flow 2
- Repeat Flow 1, but select the same sender and receiver.
- Make sure you are navigated to the same room after invoice confirmation.
Flow 3
- Sign in to the app with an account without workspaces
- Confirm you have no
Send Invoice
option in Global Create
Offline tests
Same as in the Tests section
QA Steps
- [x] Verify that no errors appear in the JS console
Same as in the Tests section
PR Author Checklist
- [x] I linked the correct issue in the
### Fixed Issues
section above - [x] I wrote clear testing steps that cover the changes made in this PR
- [x] I added steps for local testing in the
Tests
section - [x] I added steps for the expected offline behavior in the
Offline steps
section - [x] I added steps for Staging and/or Production testing in the
QA steps
section - [x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
- [x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
- [x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
- [x] I added steps for local testing in the
- [x] I included screenshots or videos for tests on all platforms
- [x] I ran the tests on all platforms & verified they passed on:
- [x] Android: Native
- [x] Android: mWeb Chrome
- [x] iOS: Native
- [x] iOS: mWeb Safari
- [x] MacOS: Chrome / Safari
- [x] MacOS: Desktop
- [x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
- [x] I followed proper code patterns (see Reviewing the code)
- [x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e.
toggleReport
and notonIconClick
) - [x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g.
myBool && <MyComponent />
. - [x] I verified that comments were added to code that is not self explanatory
- [x] 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.
- [x] I verified any copy / text shown in the product is localized by adding it to
src/languages/*
files and using the translation method- [x] 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:
- [x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
- [x] 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)
- [x] 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.
- [x] I verified the JSDocs style guidelines (in
STYLE.md
) were followed
- [x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e.
- [x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
- [x] I followed the guidelines as stated in the Review Guidelines
- [x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like
Avatar
, I verified the components usingAvatar
are working as expected) - [x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
- [x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
- [x] I verified that if a function's arguments changed that all usages have also been updated correctly
- [x] If any new file was added I verified that:
- [x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
- [x] If a new CSS style is added I verified that:
- [x] A similar style doesn't already exist
- [x] The style can't be created with an existing StyleUtils function (i.e.
StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
)
- [x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
- [x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like
Avatar
is modified, I verified thatAvatar
is working as expected in all cases) - [x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
- [x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
- [x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
- [x] I verified that all the inputs inside a form are aligned with each other.
- [x] I added
Design
label and/or tagged@Expensify/design
so the design team can review the changes.
- [x] If a new page is added, I verified it's using the
ScrollView
component to make it scrollable when more elements are added to the page. - [x] If the
main
branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTest
steps.
Screenshots/Videos
Android: Native
https://github.com/Expensify/App/assets/23176449/6b690c1a-9bdf-4f0b-8ef8-746b09e688c3
Android: mWeb Chrome
https://github.com/Expensify/App/assets/23176449/7e2e98ba-64b4-47a9-a6cf-008097071c2e
iOS: Native
https://github.com/Expensify/App/assets/23176449/9aed0d1c-527b-4d61-a6b7-c9506621f751
iOS: mWeb Safari
https://github.com/Expensify/App/assets/23176449/9f0479cb-cc97-450c-9752-55e755d730fb
MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/23176449/dabd2cec-add8-478b-816a-11079abd3e62
MacOS: Desktop
https://github.com/Expensify/App/assets/23176449/adb5e566-a501-4531-9ae8-fd5dc17b0140
Updates:
- Updated param invoiceRoomID -> invoiceRoomReportID
- Updates to follow main branch changes (MoneyTemporaryForRefactorRequestConfirmationList.tsx got removed)
- Tested API updates
TODOs:
- Waiting for API fixes to be able to progress PR
@Pujan92 Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]
This PR is still waiting for some API fixes, but due to the short timeline, we need to start the review process the sooner the better! cc @cristipaval
For the big number pad screen, we decided that there should be no tab control at the top:
Also just wanted to double check with @JmillsExpensify @dannymcclain @davidcardoza - are we going to add the Next steps right into the preview card? Looks like this PR has them:
I thought we might have decided to punt that?
Can we also get updated screen shots/videos without the offline mode enabled?
@shawnborton Unfortunately, there are some API known issues that block me from doing the correct screenshots/videos without the offline mode. But it should be resolved tomorrow morning, and I'll update the recordings as soon as it will be done
Sounds good!
Also just wanted to double check with @JmillsExpensify @dannymcclain @davidcardoza - are we going to add the Next steps right into the preview card? I thought we might have decided to punt that?
Yes I believe we did decide to not tackle that right now.
@shawnborton @dannymcclain
Yes I believe we did decide to not tackle that right now.
Just to confirm, we shouldn't show Awaiting payment by xxx
for now, right?
^^ @rezkiy37
Let's get confirmation from @JmillsExpensify on that first. If we implement it for invoices, we should be implementing it for all preview cards as well.
Brought the topic up in the VIP room - https://expensify.slack.com/archives/CSL3XBCCR/p1713994340869369
After discussing in Slack, let's move ahead without next steps being included in the report preview. I will update screenshots in the design doc to reflect the change.
@shubham1206agra I've applied your feedback, please take another look! I've also updated Notes in the PR Tests section, so please take a look at them before testing. Updated recordings in online mode have also been attached.
the display of Invoice room and related report actions is implemented in this PR https://github.com/Expensify/App/pull/40303. So until the PR is not merged, you need to pull it manually to this for testing.
@VickyStash Do I need to do anything extra or changes are already present here?
@shawnborton @dannymcclain is this PR approved from the design standpoint?
the display of Invoice room and related report actions is implemented in this PR #40303. So until the PR is not merged, you need to pull it manually to this for testing.
@VickyStash Do I need to do anything extra or changes are already present here?
@shubham1206agra I held this one on https://github.com/Expensify/App/pull/40303
@VickyStash Do I need to do anything extra or changes are already present here?
@shubham1206agra You don't need to make any additional changes, maybe just minor conflict resolution can be required
Wooot! 🎉 The other PR is merged. Let's pull main
into this one and test the end-to-end Send Invoice flow
@shubham1206agra I've updated the PR, please take a look 👀
Looks good at my first glance, but I know @shawnborton is closer to this, so I'll let him chime in
Asked for access of design doc.
https://github.com/Expensify/App/assets/58412969/fd37a8c3-07cf-40bf-865f-1f6c8db90824
@VickyStash Erroneous total and GBR showing while editing amount in invoice room. cc @cristipaval
Opening Invoice report from the other account has weird amount.
No GBR present here.
The subtitle seems to be broken.
Edit - Title in LHN seems to be broken too.
And why did we allowed addition of receipts in this?
I thought we have disabled this in Send Invoice flow.
@shubham1206agra
And why did we allowed addition of receipts in this?
Could you please clarify where were you able to add a receipt?
@shubham1206agra
And why did we allowed addition of receipts in this?
Could you please clarify where were you able to add a receipt?
If I can see the symbol for adding a receipt, which shouldn't be seen? Maybe
I will check if I can add a receipt, then I will update it here
After doing clear cache and restart
, the App crashes on opening invoices. (I have added a receipt in one invoice).