diff --git a/src/app/branding/c1-contents-config.ts b/src/app/branding/c1-contents-config.ts index 85a41921c..a9d9ddb30 100644 --- a/src/app/branding/c1-contents-config.ts +++ b/src/app/branding/c1-contents-config.ts @@ -17,7 +17,7 @@ export const c1Contents = { }, connector: { configurationHeaderText: 'Connect to QuickBooks Desktop', - configurationSubHeaderText: 'Connect to QuickBooks desktop by completing the following steps.', + configurationSubHeaderText: 'Connect to QuickBooks Desktop by completing the following steps.', stepName: 'Connect to QuickBooks Desktop', subLabel: 'Provide your credentials to establish a secure connection between your Expense Management and NetSuite account' }, diff --git a/src/app/branding/fyle-branding-config.ts b/src/app/branding/fyle-branding-config.ts index 0d6d9bd8e..c65ddfde4 100644 --- a/src/app/branding/fyle-branding-config.ts +++ b/src/app/branding/fyle-branding-config.ts @@ -147,6 +147,6 @@ export const fyleDemoVideoLinks: DemoVideo[string] = { TRAVELPERK: 'https://www.youtube.com/embed/2oYdc8KcQnk', XERO: 'https://www.youtube.com/embed/IplJd7tGWBk', NETSUITE: 'https://www.youtube.com/embed/wQXQYTLsVH8', - QBD_DIRECT: 'https://www.youtube.com/embed/wQXQYTLsVH8' + QBD_DIRECT: 'https://www.youtube.com/embed/b63lS2DG5j4' } }; \ No newline at end of file diff --git a/src/app/branding/fyle-contents-config.ts b/src/app/branding/fyle-contents-config.ts index e3f6cd023..53b3f8f46 100644 --- a/src/app/branding/fyle-contents-config.ts +++ b/src/app/branding/fyle-contents-config.ts @@ -16,8 +16,8 @@ export const fyleContents = { configurationSubHeaderText: 'Begin your QuickBooks integration by completing the following steps.' }, connector: { - configurationHeaderText: 'Connect to QuickBooks desktop', - configurationSubHeaderText: 'Connect to QuickBooks desktop by completing the following steps.', + configurationHeaderText: 'Connect to QuickBooks Desktop', + configurationSubHeaderText: 'Connect to QuickBooks Desktop by completing the following steps.', stepName: 'Connect to QuickBooks Desktop', subLabel: 'Expenses will be posted to the NetSuite Tenant Mapping selected here. Once configured, you can not change ' + brandingConfig.brandName + ' organization or Tenant Mapping.' }, diff --git a/src/app/core/models/common/advanced-settings.model.ts b/src/app/core/models/common/advanced-settings.model.ts index 5c196295f..55e91e272 100644 --- a/src/app/core/models/common/advanced-settings.model.ts +++ b/src/app/core/models/common/advanced-settings.model.ts @@ -105,7 +105,7 @@ export class AdvancedSettingsModel { merchant: 'Pizza Hut', report_number: 'C/2021/12/R/1', spent_on: today.toLocaleDateString(), - expense_key: 'txDdlUFWkahX', + expense_key: 'E/2024/02/T/11', expense_link: `${environment.fyle_app_url}/app/main/#/enterprise/view_expense/` }; let memoPreviewText = ''; diff --git a/src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-advanced-settings.model.ts b/src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-advanced-settings.model.ts index ba926e848..664164dde 100644 --- a/src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-advanced-settings.model.ts +++ b/src/app/core/models/qbd-direct/qbd-direct-configuration/qbd-direct-advanced-settings.model.ts @@ -9,7 +9,7 @@ export type QbdDirectAdvancedSettingsPost = { emails_added: EmailOption[], interval_hours: number, auto_create_merchant_as_vendor: boolean - auto_create_reimbursable_enitity: boolean, + auto_create_reimbursable_entity: boolean, } export interface QbdDirectAdvancedSettingsGet extends QbdDirectAdvancedSettingsPost { @@ -56,7 +56,7 @@ export class QbdDirectAdvancedSettingsModel extends AdvancedSettingsModel { exportSchedule: new FormControl(advancedSettings?.schedule_is_enabled ? advancedSettings?.schedule_is_enabled : false), email: new FormControl(advancedSettings?.emails_selected ? advancedSettings?.emails_selected : null), exportScheduleFrequency: new FormControl(advancedSettings?.schedule_is_enabled ? advancedSettings?.interval_hours : 1), - autoCreateReimbursableEnitity: new FormControl(advancedSettings?.auto_create_reimbursable_enitity ? advancedSettings?.auto_create_reimbursable_enitity : false), + autoCreateReimbursableEnitity: new FormControl(advancedSettings?.auto_create_reimbursable_entity ? advancedSettings?.auto_create_reimbursable_entity : false), autoCreateMerchantsAsVendors: new FormControl(advancedSettings?.auto_create_merchant_as_vendor ? advancedSettings?.auto_create_merchant_as_vendor : false), skipExport: new FormControl(isSkipExportEnabled), searchOption: new FormControl('') @@ -79,7 +79,7 @@ export class QbdDirectAdvancedSettingsModel extends AdvancedSettingsModel { schedule_is_enabled: advancedSettingForm.get('exportSchedule')?.value ? advancedSettingForm.get('exportSchedule')?.value : false, emails_selected: advancedSettingForm.get('exportSchedule')?.value ? selectedEmailsEmails : [], interval_hours: advancedSettingForm.get('exportSchedule')?.value ? advancedSettingForm.get('exportScheduleFrequency')?.value : null, - auto_create_reimbursable_enitity: advancedSettingForm.get('autoCreateReimbursableEnitity')?.value ? advancedSettingForm.get('autoCreateReimbursableEnitity')?.value : false, + auto_create_reimbursable_entity: advancedSettingForm.get('autoCreateReimbursableEnitity')?.value ? advancedSettingForm.get('autoCreateReimbursableEnitity')?.value : false, auto_create_merchant_as_vendor: advancedSettingForm.get('autoCreateMerchantsAsVendors')?.value ? advancedSettingForm.get('autoCreateMerchantsAsVendors')?.value : false, emails_added: advancedSettingForm.get('exportSchedule')?.value ? additionalEmails : [] }; diff --git a/src/app/core/services/common/dashboard.service.ts b/src/app/core/services/common/dashboard.service.ts index e84b1f0ae..9945ebdfc 100644 --- a/src/app/core/services/common/dashboard.service.ts +++ b/src/app/core/services/common/dashboard.service.ts @@ -36,10 +36,10 @@ export class DashboardService { return this.apiService.post(url, {}); } - getExportErrors(version?: string | 'v1', appName?: string): Observable { - if (!appName && version === 'v1') { + getExportErrors(version?: string | 'v1'): Observable { + if (version === 'v1') { return this.apiService.get(`/v2/workspaces/${this.workspaceId}/errors/`, {is_resolved: false}); - } else if (appName === AppName.QBD_DIRECT) { + } else if (version === AppName.QBD_DIRECT) { return this.apiService.get(`/workspaces/${this.workspaceId}/export_logs/errors/`, {is_resolved: false}); } 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 edd5cfe96..4847e4e1c 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 @@ -52,7 +52,7 @@ export class QbdDirectDashboardComponent implements OnInit { [AccountingErrorType.CATEGORY_MAPPING]: null }; - getExportErrors$: Observable = this.dashboardService.getExportErrors(undefined, AppName.QBD_DIRECT); + getExportErrors$: Observable = this.dashboardService.getExportErrors(AppName.QBD_DIRECT); getAccountingExportSummary$: Observable = this.accountingExportService.getAccountingExportSummary(AppName.QBD_DIRECT); diff --git a/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-mapping/qbd-direct-base-mapping/qbd-direct-base-mapping.component.html b/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-mapping/qbd-direct-base-mapping/qbd-direct-base-mapping.component.html index 16b3abc96..205fd4020 100644 --- a/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-mapping/qbd-direct-base-mapping/qbd-direct-base-mapping.component.html +++ b/src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-mapping/qbd-direct-base-mapping/qbd-direct-base-mapping.component.html @@ -8,5 +8,6 @@ [appName]="AppName.QBD_DIRECT" [isCategoryMappingGeneric]="sourceField === FyleField.CATEGORY ? true : false" [displayName]="displayName" + [detailAccountType] = "detailAccountType" [isMultiLineOption]="sourceField === FyleField.CATEGORY && brandingConfig.brandId !== 'co' ? true : false"> 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 53b5e181c..6e7266fc9 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 @@ -52,6 +52,8 @@ export class QbdDirectBaseMappingComponent implements OnInit { chartOfAccounts: string[]; + detailAccountType: string[] | undefined; + constructor( private route: ActivatedRoute, private mappingService: MappingService, @@ -72,6 +74,7 @@ export class QbdDirectBaseMappingComponent implements OnInit { } destinationOptionsWatcher(detailAccountType?: string[]): void { + this.detailAccountType = detailAccountType; this.mappingService.getPaginatedDestinationAttributes(this.destinationField, undefined, this.displayName, '', detailAccountType).subscribe((responses) => { this.destinationOptions = responses.results as QbdDirectDestinationAttribute[]; this.isLoading = false; diff --git a/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-landing/qbd-direct-onboarding-landing.component.html b/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-landing/qbd-direct-onboarding-landing.component.html index d059d2059..023b581fd 100644 --- a/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-landing/qbd-direct-onboarding-landing.component.html +++ b/src/app/integrations/qbd-direct/qbd-direct-onboarding/qbd-direct-onboarding-landing/qbd-direct-onboarding-landing.component.html @@ -1,8 +1,8 @@
- +
- +
\ No newline at end of file diff --git a/src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-export-settings/qbd-direct-export-settings.component.html b/src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-export-settings/qbd-direct-export-settings.component.html index f5f969547..0f07129cc 100644 --- a/src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-export-settings/qbd-direct-export-settings.component.html +++ b/src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-export-settings/qbd-direct-export-settings.component.html @@ -203,11 +203,11 @@ (searchOptionsDropdown)="searchOptionsDropdown($event)" [optionLabel]="'value'" [isFieldMandatory]="true" - [mandatoryErrorListName]="'accounts payable'" + [mandatoryErrorListName]="'a default credit account'" [label]="brandingContent.corporateCard.defaultCCCAccountPayableLabel + (exportSettingsForm.get('creditCardExportType')?.value | snakeCaseToSpaceCase | titlecase)" [subLabel]="brandingContent.corporateCard.defaultCCCAccountPayableSubLabel + (exportSettingsForm.get('creditCardExportType')?.value | snakeCaseToSpaceCase | titlecase) + ' ,while debit lines will reflect the category chosen by the employee for each respective expense'" [iconPath]="'list'" - [placeholder]="'Select accounts payable'" + [placeholder]="'Select default account'" [isMultiLineOption]="true" [formControllerName]="'defaultCCCAccountsPayableAccountName'"> diff --git a/src/app/shared/components/dashboard/dashboard-error-section/dashboard-error-section.component.html b/src/app/shared/components/dashboard/dashboard-error-section/dashboard-error-section.component.html index b7f6ca97d..4b5147ac1 100644 --- a/src/app/shared/components/dashboard/dashboard-error-section/dashboard-error-section.component.html +++ b/src/app/shared/components/dashboard/dashboard-error-section/dashboard-error-section.component.html @@ -78,7 +78,7 @@
{{ error.error_title | snakeCaseToSpaceCase | titlecase }}
\ No newline at end of file diff --git a/src/app/shared/components/dashboard/dashboard-error-section/dashboard-error-section.component.ts b/src/app/shared/components/dashboard/dashboard-error-section/dashboard-error-section.component.ts index 5cfdab4b3..12ac7bd43 100644 --- a/src/app/shared/components/dashboard/dashboard-error-section/dashboard-error-section.component.ts +++ b/src/app/shared/components/dashboard/dashboard-error-section/dashboard-error-section.component.ts @@ -104,6 +104,8 @@ export class DashboardErrorSectionComponent implements OnInit { isMultiLineOption: boolean; + detailAccountType: string[] | undefined; + constructor( private dashboardService: DashboardService, private mappingService: MappingService, @@ -147,10 +149,12 @@ export class DashboardErrorSectionComponent implements OnInit { this.mappingService.getGroupedDestinationAttributes([this.destinationField], 'v2').subscribe(groupedDestinationResponse => { if (this.sourceField === 'EMPLOYEE') { this.destinationOptions = this.destinationField === FyleField.EMPLOYEE ? groupedDestinationResponse.EMPLOYEE : groupedDestinationResponse.VENDOR; + this.detailAccountType = undefined; } else if (this.sourceField === 'CATEGORY') { if (this.destinationField === 'EXPENSE_TYPE') { this.destinationOptions = groupedDestinationResponse.EXPENSE_TYPE; } else { + this.detailAccountType = this.chartOfAccounts; this.destinationOptions = this.appName !== AppName.QBD_DIRECT ? groupedDestinationResponse.ACCOUNT : this.destinationOptionsWatcher( this.chartOfAccounts, groupedDestinationResponse.ACCOUNT as QbdDirectDestinationAttribute[]); } } @@ -212,8 +216,9 @@ export class DashboardErrorSectionComponent implements OnInit { } handleResolvedMappingStat(): void { - this.dashboardService.getExportErrors(this.errorsVersion, this.appName).subscribe((errors) => { - const argument = this.errorsVersion === 'v1' ? errors : (errors as ErrorResponse).results; + const errorVersion = this.appName === AppName.QBD_DIRECT ? this.appName : this.errorsVersion; + this.dashboardService.getExportErrors(errorVersion).subscribe((errors) => { + const argument = errorVersion === 'v1' ? errors : (errors as ErrorResponse).results; const newError: AccountingGroupedErrors = this.formatErrors(argument); if (this.errors.CATEGORY_MAPPING.length !== newError.CATEGORY_MAPPING.length) { diff --git a/src/app/shared/components/helper/app-landing-page-header/app-landing-page-header.component.html b/src/app/shared/components/helper/app-landing-page-header/app-landing-page-header.component.html index 62c7ef4b4..50812409c 100644 --- a/src/app/shared/components/helper/app-landing-page-header/app-landing-page-header.component.html +++ b/src/app/shared/components/helper/app-landing-page-header/app-landing-page-header.component.html @@ -40,9 +40,9 @@ - diff --git a/src/app/shared/components/helper/app-landing-page-header/app-landing-page-header.component.ts b/src/app/shared/components/helper/app-landing-page-header/app-landing-page-header.component.ts index 771235d6e..1df996eba 100644 --- a/src/app/shared/components/helper/app-landing-page-header/app-landing-page-header.component.ts +++ b/src/app/shared/components/helper/app-landing-page-header/app-landing-page-header.component.ts @@ -92,7 +92,7 @@ export class AppLandingPageHeaderComponent implements OnInit { } connect(): void { - if (this.appName === AppName.TRAVELPERK || this.appName === AppName.BUSINESS_CENTRAL || this.appName === AppName.BAMBOO_HR || this.appName === AppName.XERO || this.appName.includes('QuickBooks Desktop - Direct Integration')) { + if (this.appName === AppName.TRAVELPERK || this.appName === AppName.BUSINESS_CENTRAL || this.appName === AppName.BAMBOO_HR || this.appName === AppName.XERO || this.appName.includes('QuickBooks Desktop ')) { this.initiateOAuth(); return; } else if (this.postConnectionRoute === 'qbd/onboarding/export_settings') { diff --git a/src/app/shared/components/helper/mapping/generic-mapping-table/generic-mapping-table.component.ts b/src/app/shared/components/helper/mapping/generic-mapping-table/generic-mapping-table.component.ts index a289ea991..cba6695d9 100644 --- a/src/app/shared/components/helper/mapping/generic-mapping-table/generic-mapping-table.component.ts +++ b/src/app/shared/components/helper/mapping/generic-mapping-table/generic-mapping-table.component.ts @@ -46,6 +46,8 @@ export class GenericMappingTableComponent implements OnInit { @Input() isMultiLineOption: boolean = false; + @Input() detailAccountType: string[] | undefined; + private searchSubject = new Subject(); searchQuery: string; @@ -134,7 +136,7 @@ export class GenericMappingTableComponent implements OnInit { const existingOptions = this.destinationOptions.concat(); const newOptions: DestinationAttribute[] = []; - this.mappingService.getPaginatedDestinationAttributes(this.destinationField, event.searchTerm, this.displayName, this.appName).subscribe((response) => { + this.mappingService.getPaginatedDestinationAttributes(this.destinationField, event.searchTerm, this.displayName, this.appName, this.detailAccountType).subscribe((response) => { response.results.forEach((option) => { // If option is not already present in the list, add it if (!this.optionsMap[option.id.toString()]) { diff --git a/src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.html b/src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.html index 70af8a002..e7c068101 100644 --- a/src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.html +++ b/src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.html @@ -13,7 +13,7 @@
- +
diff --git a/src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.ts b/src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.ts index ea38f4a86..62a07b5ba 100644 --- a/src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.ts +++ b/src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.ts @@ -40,6 +40,8 @@ export class GenericMappingV2Component implements OnInit { @Input() isMultiLineOption: boolean = false; + @Input() detailAccountType: string[] | undefined; + isInitialSetupComplete: boolean = false; mappingStats: MappingStats; diff --git a/src/assets/flow-charts/fyle-qbd-direct-flow-chart.svg b/src/assets/flow-charts/fyle-qbd-direct-flow-chart.svg index ca36370ea..4c18cca58 100644 --- a/src/assets/flow-charts/fyle-qbd-direct-flow-chart.svg +++ b/src/assets/flow-charts/fyle-qbd-direct-flow-chart.svg @@ -2,22 +2,22 @@ - + - - + + - + - - + + - + diff --git a/src/assets/sprites/sprite.svg b/src/assets/sprites/sprite.svg index 62277cbcc..48e191453 100644 --- a/src/assets/sprites/sprite.svg +++ b/src/assets/sprites/sprite.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file