[NO QA] [NetSuite] Add journal posting preference option for Travel Invoicing JE exports#89968
Conversation
5f11c7c to
5eb1218
Compare
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index e2dcc0b9..bf017109 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -4792,7 +4792,7 @@ ${amount} für ${merchant} – ${date}`,
label: 'Bevorzugte Verbuchung von Journalbuchungen',
values: {
[CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Einzelner Eintrag für jede Ausgabe',
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Einzelner, aufgeschlüsselter Eintrag für jeden Bericht',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Einzelner, aufgegliederter Eintrag für jeden Bericht',
},
},
invoiceItem: {
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 9098b8f9..19b166d9 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -4801,8 +4801,8 @@ ${amount} pour ${merchant} - ${date}`,
journalPostingPreference: {
label: 'Préférence de comptabilisation des écritures de journal',
values: {
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Une seule entrée pour chaque dépense',
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Saisie unique et détaillée pour chaque note de frais',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Saisie unique pour chaque dépense',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Entrée unique et détaillée pour chaque rapport',
},
},
invoiceItem: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 2ceb078e..5de5bc7d 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -4777,7 +4777,7 @@ ${amount} per ${merchant} - ${date}`,
label: 'Preferenze di registrazione delle scritture contabili',
values: {
[CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Voce singola per ogni spesa',
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Voce singola, con dettagli per ogni report',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Voce singola e dettagliata per ogni report',
},
},
invoiceItem: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index e90baf77..4af1e5be 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -4735,7 +4735,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの'
label: '仕訳の記帳設定',
values: {
[CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: '各経費につき1件の入力',
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: '各レポートごとの単一の項目別エントリ',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: '各レポートごとの単一の明細エントリ',
},
},
invoiceItem: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 7848b9b3..7cd14f28 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -4768,8 +4768,8 @@ ${amount} voor ${merchant} - ${date}`,
journalPostingPreference: {
label: 'Voorkeur voor het boeken van journaalposten',
values: {
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Eén boeking per uitgave',
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Enkele, uitgesplitste boeking voor elk rapport',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Enkele boeking per uitgave',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Enkele, uitgesplitste boeking per rapport',
},
},
invoiceItem: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index adc276c1..dd94c32b 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -4761,7 +4761,7 @@ ${amount} dla ${merchant} - ${date}`,
label: 'Preferencje księgowania zapisów w dzienniku',
values: {
[CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Pojedynczy wpis dla każdego wydatku',
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Pojedynczy, wyszczególniony wpis dla każdego raportu',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Pojedyncza, wyszczególniona pozycja dla każdego raportu',
},
},
invoiceItem: {
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index f25267f3..f61793b8 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -4764,7 +4764,7 @@ ${amount} para ${merchant} - ${date}`,
label: 'Preferência de lançamento de lançamentos contábeis',
values: {
[CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Lançamento único para cada despesa',
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Lançamento único, detalhado, para cada relatório',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Lançamento único e detalhado para cada relatório',
},
},
invoiceItem: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 20049075..1e6d3a08 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -4654,8 +4654,8 @@ ${amount},商户:${merchant} - 日期:${date}`,
journalPostingPreference: {
label: '日记账分录过账偏好',
values: {
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: '每笔报销一条记录',
- [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: '每个报表使用单独的分项条目',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: '每笔报销仅一条记录',
+ [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: '每份报表使用单一分项明细记录',
},
},
invoiceItem: {
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
| [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Single, itemized entry for each report', | ||
| [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Single entry for each expense', | ||
| [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Single entry for each expense', | ||
| [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Single, itemized entry for each report', |
There was a problem hiding this comment.
These are swapped. This is a bug with the existing preference UI. The copy for them was swapped. I confirmed it was a bug because (A) OldDot had the inverted string used for the same NVP and (B) the semantic meaning of the strings makes no sense in NewDot.
Single entry for each expense was creating 1 entry for multiple expenses
Single, itemized entry for each report was creating multiple entries for 1 report.
Sidenote: this drove me f***ing crazy and wasted so much of my time figuring this out 🫠.
|
@mkhutornyi 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] |
|
Please ignore ping @mkhutornyi |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
…ournalPostingPreferenceFrontend-botFixes
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 @rlinoz has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/rlinoz in version: 9.3.73-0 🚀
Bundle Size Analysis (Sentry): |
|
Yes, help site changes are required. PR #89968 adds a new Journal entries posting preference option to the NetSuite Travel Invoicing export configuration, but the existing help article only documents the travel payable account setting. I've created a draft PR with the update: #90429 Change made: Added the journal entries posting preference option and its two values (single entry per expense, single itemized entry per report) to the Travel Invoicing section of Note: The Expensify Classic |
|
🚀 Deployed to staging by https://github.com/rlinoz in version: 9.3.73-0 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Deployed to production by https://github.com/Beamanator in version: 9.3.73-4 🚀
|
Explanation of Change
Adds a Journal entries posting preference option to the NetSuite Travel Invoicing export configuration. Admins can now choose between exporting one journal entry per expense (individual, the default) or a single combined journal entry for the entire report (grouped). This mirrors the same option already available for standard NetSuite journal entry exports.
See this slack thread for more context.
This PR is frontend only and requires the companion Auth and Integration-Server PRs to take effect end-to-end:
Fixed Issues
$ https://github.com/Expensify/Expensify/issues/634604
PROPOSAL:
Tests
Offline tests
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand 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./** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)Screenshots/Videos
Screen.Recording.2026-05-07.at.2.25.06.PM.mov