From 4039a6d032fdfc4750d5e9a7a639dbbd04087b94 Mon Sep 17 00:00:00 2001 From: Ashwin Thanaraj <37061471+ashwin1111@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:30:21 +0530 Subject: [PATCH 1/6] fix: remove validation temporarily (#1111) --- .gitignore | 2 ++ commits.tsv | 11 +++++++++++ deploy_dump.sh | 11 +++++++++++ ...bd-direct-onboarding-connector.component.ts | 18 ++++++++---------- 4 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 commits.tsv create mode 100644 deploy_dump.sh diff --git a/.gitignore b/.gitignore index 56824e890..59c3652fb 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,5 @@ documentation.json # Sentry Config File .sentryclirc + +commits.csv diff --git a/commits.tsv b/commits.tsv new file mode 100644 index 000000000..fc425f9f7 --- /dev/null +++ b/commits.tsv @@ -0,0 +1,11 @@ +64a9f70f7fa22b780786ec862d701b1ff2fc0ecd\tDhaarani\tWed Dec 11 12:43:59 2024 +0530\tfix: dashboard error section fixes (#1107)\tintegrations_app_release_2024_12_06\tintegrations-app +1a8fa49bd5b12eba678d70ceb5c7374fe3c35265\tAshwin Thanaraj\tWed Dec 11 11:48:28 2024 +0530\tfix: QBD fixes post testing (#1108)\tintegrations_app_release_2024_12_06\tintegrations-app +b8e33e07bc65da9ee932d798b6ac21f0f67cec87\tDhaarani\tTue Dec 10 19:13:59 2024 +0530\tfix: QBD direct bug fixes (#1101)\tintegrations_app_release_2024_12_06\tintegrations-app +4f73b406909e5713c4f79869da1b92af7b506a48\tAshwin Thanaraj\tTue Dec 10 19:05:59 2024 +0530\tfix: QBD app name references (#1106)\tintegrations_app_release_2024_12_06\tintegrations-app +5e0d388d65064b145c368af59ac48e6e05b8fa03\tAshwin Thanaraj\tTue Dec 10 18:12:49 2024 +0530\tfix: QBD landing page (#1104)\tintegrations_app_release_2024_12_06\tintegrations-app +0f88a7afc21f8e41557e97e76ebaf4e4fd8fcb6f\tAshwin Thanaraj\tTue Dec 10 15:14:27 2024 +0530\tfeat: Expose QBD connector app conditionally (#1100)\tintegrations_app_release_2024_12_06\tintegrations-app +357a9866ab91d686f6162751ae62f6cb0d76cafe\tAshwin Thanaraj\tTue Dec 10 17:29:08 2024 +0530\tfix: QBD Dashboard bugs (#1103)\tintegrations_app_release_2024_12_06\tintegrations-app +579ccd5469cffde6087481933ceefee1f41a3ee8\tViswas Haridas\tTue Dec 10 15:29:54 2024 +0530\tfix: update orgs to hide business central beta badge from (#1102)\tintegrations_app_release_2024_12_06\tintegrations-app +77ed17b9902815ad16f35f4b41c43778b1b9e870\tDhaarani\tTue Dec 10 13:47:11 2024 +0530\tfix: qbd direct team testing fixes (#1095)\tintegrations_app_release_2024_12_06\tintegrations-app +a11820f42d3538868891642368ba9baa2c54fd2a\tDhaarani\tTue Dec 10 13:43:04 2024 +0530\tfix: C1 xero bug fix (#1097)\tintegrations_app_release_2024_12_06\tintegrations-app +a32b5f73853bb25cd3ef926adb7b6cbcc5a9fb60\tHrishabh Tiwari\tTue Dec 10 13:28:34 2024 +0530\tRevert "feat: memo structure in xero app (#1094)"\tintegrations_app_release_2024_12_06\tintegrations-app \ No newline at end of file diff --git a/deploy_dump.sh b/deploy_dump.sh new file mode 100644 index 000000000..784149a5a --- /dev/null +++ b/deploy_dump.sh @@ -0,0 +1,11 @@ +if [ -z "$1" ]; then + echo "Usage: sh $0 '2024-12-09'" + exit 1 +fi + +base_url="https://github.com/fylein/fyle-integrations-app/commit" +branch_name=$(git rev-parse --abbrev-ref HEAD) + +git log --since="$1" --pretty=format:"$base_url/%H,%an,%ad,%s,$branch_name,integrations-app" > commits.csv + +open commits.csv diff --git a/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts b/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts index ed2533c6b..0c1cfbb48 100644 --- a/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts +++ b/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts @@ -86,16 +86,14 @@ export class QbdDirectOnboardingConnectorComponent implements OnInit { const normalizedPath = filePath.replace(/\\\\/g, "\\"); const filePathRegex = /^(\/?|\.?\/?|[a-zA-Z]:\\)([a-zA-Z0-9_-]+[\\/])*[a-zA-Z0-9 _-]+\.qbw$/; this.isCompanyPathInvalid = filePathRegex.test(normalizedPath); - if (this.isCompanyPathInvalid) { - this.isDownloadfileLoading = true; - this.qbdDirectConnectorService.postQbdDirectConntion({file_location: normalizedPath}).subscribe((connectionResponse: QbdConnectorGet) => { - this.password = connectionResponse.password; - this.xmlFileContent = connectionResponse.qwc; - this.triggerManualDownload(); - this.showDownloadLink = true; - }); - this.isDownloadfileLoading = false; - } + this.isDownloadfileLoading = true; + this.qbdDirectConnectorService.postQbdDirectConntion({file_location: normalizedPath}).subscribe((connectionResponse: QbdConnectorGet) => { + this.password = connectionResponse.password; + this.xmlFileContent = connectionResponse.qwc; + this.triggerManualDownload(); + this.showDownloadLink = true; + }); + this.isDownloadfileLoading = false; } triggerManualDownload() { From e29b6a5ea661ae76ec89dcd9419a004051d4263f Mon Sep 17 00:00:00 2001 From: Nilesh Pant <58652823+NileshPant1999@users.noreply.github.com> Date: Thu, 12 Dec 2024 11:27:39 +0530 Subject: [PATCH 2/6] fix: dynamic content for xero customize settings (#1112) --- src/app/branding/c1-contents-config.ts | 5 ++++- src/app/branding/fyle-contents-config.ts | 1 + src/app/core/models/branding/content-configuration.model.ts | 3 +++ .../xero-advanced-settings.component.html | 6 +++--- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/app/branding/c1-contents-config.ts b/src/app/branding/c1-contents-config.ts index a9d9ddb30..b24efc370 100644 --- a/src/app/branding/c1-contents-config.ts +++ b/src/app/branding/c1-contents-config.ts @@ -254,7 +254,10 @@ export const c1Contents = { accountingPeriodSubLabel: 'If the accounting period is closed, the expenses will be exported with a date stamp for the first day of the current open accounting period.', autoCreateVendorsSubLabel: 'Automatically create a new contact in Xero if an added merchant doesn\'t have a corresponding match.', customPreferencesLabel: 'Other preferences', - customPreferencesSubLabel: 'Create new records in Xero if no contacts found or the accounting period is closed.' + customPreferencesSubLabel: 'Create new records in Xero if no contacts found or the accounting period is closed.', + memoStructureLabel: 'Set the line-item description field in Xero', + memoStructureSubLabel: 'Choose from a list of available data points that you\'d like to export to the description field in Xero.', + customizeSectionSubLabel: 'Customize the data that you\'d like to export from Expense Management to Xero by choosing which data points need to be exported.' } } }, diff --git a/src/app/branding/fyle-contents-config.ts b/src/app/branding/fyle-contents-config.ts index 53b3f8f46..16d1977ca 100644 --- a/src/app/branding/fyle-contents-config.ts +++ b/src/app/branding/fyle-contents-config.ts @@ -250,6 +250,7 @@ export const fyleContents = { topLevelMemoStructureSubLabel: 'Select the datapoints you\'d like to export to Xero’s top-level memo field when exporting expenses from Fyle.', memoStructureLabel: 'Customize the Line-Item Level Memo Field', memoStructureSubLabel: 'Select the datapoints you\'d like to export to Xero\’s line-item level memo field when exporting expenses from Fyle.', + customizeSectionSubLabel: 'In this section, you can customize the data that you\'d like to export from ' + brandingConfig.brandName + ' to Xero. You can choose what data points need to be exported and what shouldn\'t be.', frequencySubLabel: 'Set a frequency based on how often you want your expenses in Fyle to be exported to Xero.', customPreferencesLabel: 'Other Preferences', customPreferencesSubLabel: 'Based on your preference, you can choose whether you want to create any new records in Xero from ' + brandingConfig.brandName + '. (when there is no employee record found, or when the accounting period is closed)', diff --git a/src/app/core/models/branding/content-configuration.model.ts b/src/app/core/models/branding/content-configuration.model.ts index 88af007c8..0d109e4bf 100644 --- a/src/app/core/models/branding/content-configuration.model.ts +++ b/src/app/core/models/branding/content-configuration.model.ts @@ -248,6 +248,9 @@ export type ContentConfiguration = { scheduleSubLabel: string; accountingPeriodSubLabel: string; autoCreateVendorsSubLabel: string; + memoStructureLabel: string; + memoStructureSubLabel: string; + customizeSectionSubLabel: string; frequencySubLabel: string; } }, diff --git a/src/app/integrations/xero/xero-shared/xero-advanced-settings/xero-advanced-settings.component.html b/src/app/integrations/xero/xero-shared/xero-advanced-settings/xero-advanced-settings.component.html index 08c523c4f..9aad805b2 100644 --- a/src/app/integrations/xero/xero-shared/xero-advanced-settings/xero-advanced-settings.component.html +++ b/src/app/integrations/xero/xero-shared/xero-advanced-settings/xero-advanced-settings.component.html @@ -103,7 +103,7 @@
+ [subLabel]="brandingContent.customizeSectionSubLAbel">
@@ -111,8 +111,8 @@ [form]="advancedSettingForm" [isFieldMandatory]="false" [mandatoryErrorListName]="'Item level description'" - [label]="'Set the line item-level Description Field in Xero'" - [subLabel]="'You can choose from a list of available data points that you\'d like to export to the description field in Xero.'" + [label]="brandingContent.memoStructureLabel" + [subLabel]="brandingContent.memoStructureSubLabel" [options]="defaultMemoFields" [iconPath]="'list'" [placeholder]="'Set description'" From 2f342c068ca8833d93e7778613861a8be60e2023 Mon Sep 17 00:00:00 2001 From: Nilesh Pant <58652823+NileshPant1999@users.noreply.github.com> Date: Thu, 12 Dec 2024 12:03:00 +0530 Subject: [PATCH 3/6] fix: update sublabel key to avoid build fail (#1116) --- .../xero-advanced-settings.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/integrations/xero/xero-shared/xero-advanced-settings/xero-advanced-settings.component.html b/src/app/integrations/xero/xero-shared/xero-advanced-settings/xero-advanced-settings.component.html index 9aad805b2..20da247c9 100644 --- a/src/app/integrations/xero/xero-shared/xero-advanced-settings/xero-advanced-settings.component.html +++ b/src/app/integrations/xero/xero-shared/xero-advanced-settings/xero-advanced-settings.component.html @@ -103,7 +103,7 @@
+ [subLabel]="brandingContent.customizeSectionSubLabel">
From 293360130e3afb68445490b4ed641e8d5c7d7842 Mon Sep 17 00:00:00 2001 From: Dhaarani <55541808+DhaaraniCIT@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:22:23 +0530 Subject: [PATCH 4/6] fix: Prod fixes of QBD direct (#1118) --- commits.tsv | 11 ----------- src/app/branding/c1-branding-config.ts | 2 -- src/app/branding/fyle-branding-config.ts | 12 +++++------- src/app/core/models/branding/kb-article.model.ts | 2 -- .../qbd-direct-dashboard.component.ts | 3 ++- .../qbd-direct-base-mapping.component.ts | 3 ++- .../qbd-direct-onboarding-connector.component.ts | 16 +++++++++------- .../qbd-direct-advanced-settings.component.html | 10 ++++++++-- .../qbd-direct-advanced-settings.component.ts | 15 +++++++++++++-- .../configuration-select-field.component.html | 4 ++-- 10 files changed, 41 insertions(+), 37 deletions(-) delete mode 100644 commits.tsv diff --git a/commits.tsv b/commits.tsv deleted file mode 100644 index fc425f9f7..000000000 --- a/commits.tsv +++ /dev/null @@ -1,11 +0,0 @@ -64a9f70f7fa22b780786ec862d701b1ff2fc0ecd\tDhaarani\tWed Dec 11 12:43:59 2024 +0530\tfix: dashboard error section fixes (#1107)\tintegrations_app_release_2024_12_06\tintegrations-app -1a8fa49bd5b12eba678d70ceb5c7374fe3c35265\tAshwin Thanaraj\tWed Dec 11 11:48:28 2024 +0530\tfix: QBD fixes post testing (#1108)\tintegrations_app_release_2024_12_06\tintegrations-app -b8e33e07bc65da9ee932d798b6ac21f0f67cec87\tDhaarani\tTue Dec 10 19:13:59 2024 +0530\tfix: QBD direct bug fixes (#1101)\tintegrations_app_release_2024_12_06\tintegrations-app -4f73b406909e5713c4f79869da1b92af7b506a48\tAshwin Thanaraj\tTue Dec 10 19:05:59 2024 +0530\tfix: QBD app name references (#1106)\tintegrations_app_release_2024_12_06\tintegrations-app -5e0d388d65064b145c368af59ac48e6e05b8fa03\tAshwin Thanaraj\tTue Dec 10 18:12:49 2024 +0530\tfix: QBD landing page (#1104)\tintegrations_app_release_2024_12_06\tintegrations-app -0f88a7afc21f8e41557e97e76ebaf4e4fd8fcb6f\tAshwin Thanaraj\tTue Dec 10 15:14:27 2024 +0530\tfeat: Expose QBD connector app conditionally (#1100)\tintegrations_app_release_2024_12_06\tintegrations-app -357a9866ab91d686f6162751ae62f6cb0d76cafe\tAshwin Thanaraj\tTue Dec 10 17:29:08 2024 +0530\tfix: QBD Dashboard bugs (#1103)\tintegrations_app_release_2024_12_06\tintegrations-app -579ccd5469cffde6087481933ceefee1f41a3ee8\tViswas Haridas\tTue Dec 10 15:29:54 2024 +0530\tfix: update orgs to hide business central beta badge from (#1102)\tintegrations_app_release_2024_12_06\tintegrations-app -77ed17b9902815ad16f35f4b41c43778b1b9e870\tDhaarani\tTue Dec 10 13:47:11 2024 +0530\tfix: qbd direct team testing fixes (#1095)\tintegrations_app_release_2024_12_06\tintegrations-app -a11820f42d3538868891642368ba9baa2c54fd2a\tDhaarani\tTue Dec 10 13:43:04 2024 +0530\tfix: C1 xero bug fix (#1097)\tintegrations_app_release_2024_12_06\tintegrations-app -a32b5f73853bb25cd3ef926adb7b6cbcc5a9fb60\tHrishabh Tiwari\tTue Dec 10 13:28:34 2024 +0530\tRevert "feat: memo structure in xero app (#1094)"\tintegrations_app_release_2024_12_06\tintegrations-app \ No newline at end of file diff --git a/src/app/branding/c1-branding-config.ts b/src/app/branding/c1-branding-config.ts index 86ac71d3a..9b14d4e90 100644 --- a/src/app/branding/c1-branding-config.ts +++ b/src/app/branding/c1-branding-config.ts @@ -128,9 +128,7 @@ export const c1KbArticles: KbArticle[string] = { IMPORT_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/9082146-configure-the-capital-one-sage-intacct-integration#h_78e1747002`, EXPORT_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/9082146-configure-the-capital-one-sage-intacct-integration#h_eebe5df4b7`, ADVANCED_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/9082146-configure-the-capital-one-sage-intacct-integration#h_498f2acc61`, - LANDING: `${brandingConfig.helpArticleDomain}/en/articles/9082146-configure-the-capital-one-sage-intacct-integration`, CONNECTOR: `${brandingConfig.helpArticleDomain}/en/articles/9081356-generate-credentials-to-connect-with-sage-intacct`, - SKIP_EXPORT: `${brandingConfig.helpArticleDomain}/en/articles/9082146-configure-the-capital-one-sage-intacct-integration`, HELPER_ARTICLE: `${brandingConfig.helpArticleDomain}/en/articles/7882821-how-to-skip-exporting-specific-expenses-from-fyle-to-sage-intacct` } } diff --git a/src/app/branding/fyle-branding-config.ts b/src/app/branding/fyle-branding-config.ts index c65ddfde4..609ce70d1 100644 --- a/src/app/branding/fyle-branding-config.ts +++ b/src/app/branding/fyle-branding-config.ts @@ -67,7 +67,7 @@ export const fyleKbArticles: KbArticle[string] = { SAGE300: `${brandingConfig.helpArticleDomain}/en/articles/8948413-how-to-set-up-the-fyle-sage-300-cre-integration`, BUSINESS_CENTRAL: `${brandingConfig.helpArticleDomain}/en/articles/8911018-how-to-configure-the-fyle-dynamics-365-business-central-integration`, XERO: `${brandingConfig.helpArticleDomain}/en/articles/6721333-how-to-set-up-the-fyle-xero-integration`, - QBD_DIRECT: `${brandingConfig.helpArticleDomain}/en/collections/215867-integrations-with-fyle#quickbooks-desktop` + QBD_DIRECT: `${brandingConfig.helpArticleDomain}/en/articles/10259583-quickbooks-desktop-integration-beta` }, onboardingArticles: { INTACCT: { @@ -126,12 +126,10 @@ export const fyleKbArticles: KbArticle[string] = { ADVANCED_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/6721333-how-to-set-up-the-fyle-xero-integration#h_d95b791edd` }, QBD_DIRECT: { - IMPORT_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/8394683-how-to-configure-the-fyle-sage-intacct-integration#h_85f929716c`, - EXPORT_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/8394683-how-to-configure-the-fyle-sage-intacct-integration#h_6492c5038d`, - ADVANCED_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/8394683-how-to-configure-the-fyle-sage-intacct-integration#h_3f6718633c`, - LANDING: `${brandingConfig.helpArticleDomain}/en/articles/8394683-how-to-configure-the-fyle-sage-intacct-integration`, - CONNECTOR: `${brandingConfig.helpArticleDomain}/en/articles/8394683-how-to-configure-the-fyle-sage-intacct-integration#h_38e0c9bea6`, - SKIP_EXPORT: `${brandingConfig.helpArticleDomain}/en/articles/7882821-how-to-skip-exporting-specific-expenses-from-fyle-to-sage-intacct`, + IMPORT_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/10259583-quickbooks-desktop-integration-beta#h_a170c7d562`, + EXPORT_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/10259583-quickbooks-desktop-integration-beta#h_1366df4107`, + ADVANCED_SETTING: `${brandingConfig.helpArticleDomain}/en/articles/10259583-quickbooks-desktop-integration-beta#h_b3850646c0`, + CONNECTOR: `${brandingConfig.helpArticleDomain}/en/articles/10259583-quickbooks-desktop-integration-beta#h_d3cc42849a`, HELPER_ARTICLE: `${brandingConfig.helpArticleDomain}/en/articles/7882821-how-to-skip-exporting-specific-expenses-from-fyle-to-sage-intacct` } } diff --git a/src/app/core/models/branding/kb-article.model.ts b/src/app/core/models/branding/kb-article.model.ts index 4d5f0f8a4..d7c1c2418 100644 --- a/src/app/core/models/branding/kb-article.model.ts +++ b/src/app/core/models/branding/kb-article.model.ts @@ -17,9 +17,7 @@ export type KbArticle = { IMPORT_SETTING: string; EXPORT_SETTING: string; ADVANCED_SETTING: string; - LANDING: string; CONNECTOR: string; - SKIP_EXPORT: string; HELPER_ARTICLE: string; }, INTACCT: { diff --git a/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-dashboard/qbd-direct-dashboard.component.ts b/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-dashboard/qbd-direct-dashboard.component.ts index 4847e4e1c..109b27b3b 100644 --- a/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-dashboard/qbd-direct-dashboard.component.ts +++ b/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-dashboard/qbd-direct-dashboard.component.ts @@ -9,6 +9,7 @@ import { DestinationFieldMap, DashboardModel } from 'src/app/core/models/db/dash import { AccountingGroupedErrors, AccountingGroupedErrorStat, Error, ErrorResponse } from 'src/app/core/models/db/error.model'; import { AppName, AccountingErrorType, QbdDirectTaskLogType, ReimbursableImportState, CCCImportState, AppUrl, TaskLogState } from 'src/app/core/models/enum/enum.model'; import { QbdDirectTaskResponse, QbdDirectTaskLog } from 'src/app/core/models/qbd-direct/db/qbd-direct-task-log.model'; +import { QbdDirectImportSettingModel } from 'src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-import-settings.model'; import { AccountingExportService } from 'src/app/core/services/common/accounting-export.service'; import { DashboardService } from 'src/app/core/services/common/dashboard.service'; import { WorkspaceService } from 'src/app/core/services/common/workspace.service'; @@ -151,7 +152,7 @@ export class QbdDirectDashboardComponent implements OnInit { this.importCodeFields = responses[5].import_settings?.import_code_fields; - this.chartOfAccounts = responses[5].import_settings.chart_of_accounts; + this.chartOfAccounts = responses[5].import_settings.import_account_as_category ? responses[5].import_settings.chart_of_accounts : QbdDirectImportSettingModel.getChartOfAccountTypesList(); const queuedTasks: QbdDirectTaskLog[] = responses[2].results.filter((task: QbdDirectTaskLog) => this.exportLogProcessingStates.includes(task.status)); this.failedExpenseGroupCount = responses[2].results.filter((task: QbdDirectTaskLog) => task.status === TaskLogState.ERROR || task.status === TaskLogState.FATAL).length; diff --git a/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-mapping/qbd-direct-base-mapping/qbd-direct-base-mapping.component.ts b/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-mapping/qbd-direct-base-mapping/qbd-direct-base-mapping.component.ts index 6e7266fc9..abfd042d8 100644 --- a/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-mapping/qbd-direct-base-mapping/qbd-direct-base-mapping.component.ts +++ b/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-mapping/qbd-direct-base-mapping/qbd-direct-base-mapping.component.ts @@ -8,6 +8,7 @@ import { MappingSetting } from 'src/app/core/models/db/mapping-setting.model'; import { FyleField, AppName, AccountingField, QBDReimbursableExpensesObject, QBDCorporateCreditCardExpensesObject, NameInJournalEntry } from 'src/app/core/models/enum/enum.model'; import { QbdDirectDestinationAttribute } from 'src/app/core/models/qbd-direct/db/qbd-direct-destination-attribuite.model'; import { QbdDirectExportSettingGet } from 'src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-export-settings.model'; +import { QbdDirectImportSettingModel } from 'src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-import-settings.model'; import { IntegrationsToastService } from 'src/app/core/services/common/integrations-toast.service'; import { MappingService } from 'src/app/core/services/common/mapping.service'; import { WorkspaceService } from 'src/app/core/services/common/workspace.service'; @@ -106,7 +107,7 @@ export class QbdDirectBaseMappingComponent implements OnInit { this.cccExpenseObject = responses[0].credit_card_expense_export_type; this.employeeFieldMapping = (responses[0].employee_field_mapping as unknown as FyleField); this.nameInJE = responses[0].name_in_journal_entry; - this.chartOfAccounts = responses[1].import_settings.chart_of_accounts; + this.chartOfAccounts = responses[1].import_settings.import_account_as_category ? responses[1].import_settings.chart_of_accounts : QbdDirectImportSettingModel.getChartOfAccountTypesList(); this.destinationField = this.getDestinationField(responses[0], responses[2].results); diff --git a/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts b/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts index 0c1cfbb48..a1bb46e03 100644 --- a/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts +++ b/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-connector/qbd-direct-onboarding-connector.component.ts @@ -83,17 +83,19 @@ export class QbdDirectOnboardingConnectorComponent implements OnInit { ) { } triggerDownload(filePath: string) { - const normalizedPath = filePath.replace(/\\\\/g, "\\"); - const filePathRegex = /^(\/?|\.?\/?|[a-zA-Z]:\\)([a-zA-Z0-9_-]+[\\/])*[a-zA-Z0-9 _-]+\.qbw$/; - this.isCompanyPathInvalid = filePathRegex.test(normalizedPath); - this.isDownloadfileLoading = true; - this.qbdDirectConnectorService.postQbdDirectConntion({file_location: normalizedPath}).subscribe((connectionResponse: QbdConnectorGet) => { + if (filePath) { + this.isDownloadfileLoading = true; + this.isCompanyPathInvalid = false; + this.qbdDirectConnectorService.postQbdDirectConntion({file_location: filePath}).subscribe((connectionResponse: QbdConnectorGet) => { this.password = connectionResponse.password; this.xmlFileContent = connectionResponse.qwc; this.triggerManualDownload(); this.showDownloadLink = true; - }); - this.isDownloadfileLoading = false; + }); + this.isDownloadfileLoading = false; + } else { + this.isCompanyPathInvalid = true; + } } triggerManualDownload() { diff --git a/src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-advanced-settings/qbd-direct-advanced-settings.component.html b/src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-advanced-settings/qbd-direct-advanced-settings.component.html index 2240fea34..9d5c3cfd6 100644 --- a/src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-advanced-settings/qbd-direct-advanced-settings.component.html +++ b/src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-advanced-settings/qbd-direct-advanced-settings.component.html @@ -8,6 +8,7 @@ [contentText]="brandingContent.contentText" [showSyncButton]="isOnboarding" [appName]="appName.QBD_DIRECT" + [redirectLink]="redirectLink" (refreshDimension)="refreshDimensions()">
@@ -88,6 +89,12 @@ [placeholder]="'Select top memo type'" [formControllerName]="'topMemoStructure'"> +
+

{{brandingContent.previewDescriptionFieldLabel}}

+
+ {{ topMemoPreviewText }} +
+
+ [iconPath]="'list'">
{ + this.memoStructure = memoChanges; + this.topMemoPreviewText = QbdDirectAdvancedSettingsModel.formatMemoPreview(this.memoStructure, this.defaultTopMemoOptions)[0]; + }); + } + private scheduledWatcher() { if (this.advancedSettingsForm.controls.exportSchedule.value) { this.helper.markControllerAsRequired(this.advancedSettingsForm, 'exportScheduleFrequency'); @@ -216,6 +226,7 @@ export class QbdDirectAdvancedSettingsComponent implements OnInit { this.createMemoStructureWatcher(); this.scheduledWatcher(); this.skipExportWatcher(); + this.createTopMemoStructureWatcher(); } private getSettingsAndSetupForm(): void { diff --git a/src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html b/src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html index 91bbe25e6..236939c74 100644 --- a/src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html +++ b/src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html @@ -97,8 +97,8 @@
in {{uiExposedAppName}}
- Auto-selected based on your export module - Auto-selected when your default credit account is set to an Accounts Payable account + Auto-selected based on your export module + Auto-selected when your default credit account is set to an Accounts Payable account
Using the Spend Date may lead to multiple single line
item entries.
From ae2b2a3c1c431fdbc1f80e23980ea0188a6cb286 Mon Sep 17 00:00:00 2001 From: Anish Kr Singh <116036738+anishfyle@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:34:08 +0530 Subject: [PATCH 5/6] fix bugs (#1119) --- src/app/core/models/common/advanced-settings.model.ts | 11 +++++++---- .../intacct-advanced-settings.component.ts | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/app/core/models/common/advanced-settings.model.ts b/src/app/core/models/common/advanced-settings.model.ts index 2fc4a360d..735a4d3f1 100644 --- a/src/app/core/models/common/advanced-settings.model.ts +++ b/src/app/core/models/common/advanced-settings.model.ts @@ -1,9 +1,10 @@ import { FormControl, FormGroup } from "@angular/forms"; -import { JoinOption, Operator } from "../enum/enum.model"; +import { AppName, JoinOption, Operator } from "../enum/enum.model"; import { environment } from "src/environments/environment"; import { ExportSettingGet } from "../intacct/intacct-configuration/export-settings.model"; import { QBOExportSettingGet } from "../qbo/qbo-configuration/qbo-export-setting.model"; import { NetSuiteExportSettingGet } from "../netsuite/netsuite-configuration/netsuite-export-setting.model"; +import { IntacctConfiguration } from "../db/configuration.model"; export type EmailOption = { email: string; @@ -75,17 +76,19 @@ export class AdvancedSettingsModel { return ['employee_email', 'employee_name', 'merchant', 'purpose', 'category', 'spent_on', 'report_number', 'expense_link', 'card_number']; } - static getMemoOptions(exportSettings: ExportSettingGet | NetSuiteExportSettingGet | QBOExportSettingGet, appName: string): string[] { + static getMemoOptions(exportSettings: IntacctConfiguration | ExportSettingGet | NetSuiteExportSettingGet | QBOExportSettingGet, appName: string): string[] { const defaultOptions = this.getDefaultMemoOptions(); let cccExportType: string | undefined; // Handle both configurations and configuration properties - if ('configurations' in exportSettings) { + if (appName === AppName.INTACCT) { + cccExportType = (exportSettings as IntacctConfiguration).corporate_credit_card_expenses_object ?? undefined; + } else if ('configurations' in exportSettings) { cccExportType = exportSettings.configurations?.corporate_credit_card_expenses_object ?? undefined; } else if ('workspace_general_settings' in exportSettings) { cccExportType = exportSettings.workspace_general_settings?.corporate_credit_card_expenses_object ?? undefined; } // Filter out options based on cccExportType and appName - if (cccExportType && ['netsuite', 'qbo', 'sage intacct'].includes(appName.toLowerCase())) { + if (cccExportType && ['netsuite', 'quickbooks online', 'sage intacct'].includes(appName.toLowerCase())) { return defaultOptions; // Allow all options including 'card_number' } return defaultOptions.filter(option => option !== 'card_number'); // Omit 'card_number' for other apps diff --git a/src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.ts b/src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.ts index 761b0691a..3377486ac 100644 --- a/src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.ts +++ b/src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.ts @@ -93,7 +93,7 @@ export class IntacctAdvancedSettingsComponent implements OnInit { private sessionStartTime = new Date(); - defaultMemoFields: string[] = ['employee_email', 'merchant', 'purpose', 'category', 'spent_on', 'report_number', 'expense_link']; + defaultMemoFields: string[] = AdvancedSettingsModel.getDefaultMemoOptions(); paymentSyncOptions: AdvancedSettingFormOption[] = [ { @@ -313,6 +313,7 @@ export class IntacctAdvancedSettingsComponent implements OnInit { if (this.advancedSettings.workspace_schedules?.additional_email_options) { this.adminEmails = this.adminEmails.concat(this.advancedSettings.workspace_schedules?.additional_email_options); } + this.defaultMemoFields = AdvancedSettingsModel.getMemoOptions(configuration, AppName.INTACCT); this.initializeAdvancedSettingsFormWithData(!!expenseFilter.count); this.initializeSkipExportForm(); this.isLoading = false; From d1d596ea91f48bad157fddfb29b0ba3eea0e7512 Mon Sep 17 00:00:00 2001 From: Ashwin Thanaraj <37061471+ashwin1111@users.noreply.github.com> Date: Thu, 12 Dec 2024 16:49:24 +0530 Subject: [PATCH 6/6] feat: Expose split grouping option for xero c1 (#1120) --- .../xero-export-settings/xero-export-settings.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/integrations/xero/xero-shared/xero-export-settings/xero-export-settings.component.html b/src/app/integrations/xero/xero-shared/xero-export-settings/xero-export-settings.component.html index 25f2a4943..b6fb9d100 100644 --- a/src/app/integrations/xero/xero-shared/xero-export-settings/xero-export-settings.component.html +++ b/src/app/integrations/xero/xero-shared/xero-export-settings/xero-export-settings.component.html @@ -191,7 +191,7 @@
-
+