[NO QA] Preserve original creation timestamp during partial approval#78142
Conversation
- Added getReportOriginalCreationTimestamp helper function to extract original timestamp from CREATED action - Updated approveMoneyRequest to use original timestamp when creating new reports during partial approval - Updated getPayMoneyRequestParams to preserve timestamp for payment flows - Modified buildOptimisticExpenseReport and buildOptimisticIOUReport to accept createdTimestamp parameter - Updated getReportFromHoldRequestsOnyxData to pass timestamp through optimistic data - Added comprehensive unit tests for timestamp preservation logic - Fixed issue Expensify#77988 where new reports during partial approval used current time instead of original report's creation timestamp
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
- Combined duplicate type imports from react-native-onyx into a single import statement - Resolved ESLint import/no-duplicates error
|
@jjcoffee @cristipaval One of you needs to 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] |
|
Does this need a C+ review? I saw that it was assigned to me and then reassigned to someone else. If it does require C+, I’m available to review it now. |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppandroid-app-2025-12-23_15.58.53.mp4Android: mWeb Chromeandroid-chrome-2025-12-23_16.01.41.mp4iOS: HybridAppios-app-2025-12-23_15.54.34.mp4iOS: mWeb Safariios-safari-2025-12-23_15.30.29.mp4MacOS: Chrome / Safaridesktop-chrome-2025-12-23_15.27.27.mp4 |
|
ios-safari-2025-12-23_15.30.29.mp4Full steps:
(Note I have an instant submit workspace, but I don't think that's the cause). |
Nice catch. I fixed in this commit d32fcfd |
|
@hoangzinh You have conflicts. |
Tests well! |
Resolved conflicts @jjcoffee |
|
@hoangzinh could you please resolve conflicts? |
|
can't believe it. Conflicts again 😢 |
|
@cristipaval conflict is resolved 🙏 |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/cristipaval in version: 9.2.94-0 🚀
|
…timestamp-partial-approval [NO QA] Preserve original creation timestamp during partial approval
|
🚀 Deployed to production by https://github.com/arosiclair in version: 9.2.94-4 🚀
|
| }); | ||
| }); | ||
|
|
||
| describe('getReportOriginalCreationTimestamp', () => { |
Explanation of Change
Fixed Issues
$ #77988
PROPOSAL:
Tests
Offline tests
createdvalue of new report (that contains held expenses) same as the original report creation timestampsQA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
N/A
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Screen.Recording.2025-12-20.at.16.25.04.android.mov
Android: mWeb Chrome
Screen.Recording.2025-12-20.at.16.28.14.android.c.mov
iOS: Native
Screen.Recording.2025-12-20.at.16.35.07.ios.mov
iOS: mWeb Safari
Screen.Recording.2025-12-20.at.16.32.05.ios.s.mov
MacOS: Chrome / Safari
Screen.Recording.2025-12-20.at.16.19.34.web.mov