From 73ef0abc88f9299926425e62999b47d77b81432a Mon Sep 17 00:00:00 2001 From: Dhaarani <55541808+DhaaraniCIT@users.noreply.github.com> Date: Tue, 24 Sep 2024 17:24:57 +0530 Subject: [PATCH] feat: intacct code prepend fixes (#965) intacct code prepend fixes --- .../intacct-dashboard.component.html | 1 + .../intacct-dashboard.component.ts | 13 +++++-------- .../intacct-base-mapping.component.ts | 2 +- .../intacct-c1-import-settings.component.ts | 4 +++- .../intacct-import-settings.component.ts | 18 +++++++++++++----- .../generic-mapping-v2.component.html | 2 +- .../mapping-card-header.component.ts | 3 +++ 7 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.html b/src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.html index 50759fccb..58571a2bd 100644 --- a/src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.html +++ b/src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.html @@ -41,6 +41,7 @@ [destinationFieldMap]="destinationFieldMap" [isCategoryMappingGeneric]="false" [destinationOptionsVersion]="'v1'" + [importCodeFields]="acceptedCodeField" [errorsVersion]="'v1'"> diff --git a/src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.ts b/src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.ts index 6ddab3508..0bb455177 100644 --- a/src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.ts +++ b/src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.ts @@ -1,18 +1,13 @@ import { Component, OnInit } from '@angular/core'; -import { Observable, catchError, forkJoin, from, interval, map, of, switchMap, takeWhile } from 'rxjs'; +import { Observable, catchError, forkJoin, from, interval, of, switchMap, takeWhile } from 'rxjs'; import { brandingConfig, brandingFeatureConfig } from 'src/app/branding/branding-config'; -import { AccountingErrorType, AppName, AppUrl, CCCImportState, ClickEvent, ExpenseState, ExportState, FyleField, FyleReferenceType, IntacctCategoryDestination, IntacctCorporateCreditCardExpensesObject, IntacctErrorType, IntacctReimbursableExpensesObject, RefinerSurveyType, ReimbursableImportState, TaskLogState, TaskLogType, TrackingApp } from 'src/app/core/models/enum/enum.model'; -import { ExpenseGroupSetting } from 'src/app/core/models/db/expense-group-setting.model'; -import { ExpenseGroup, ExpenseGroupList, ExportableExpenseGroup } from 'src/app/core/models/intacct/db/expense-group.model'; +import { AccountingErrorType, AppName, AppUrl, CCCImportState, ExpenseState, ExportState, FyleReferenceType, IntacctCategoryDestination, IntacctCorporateCreditCardExpensesObject, IntacctErrorType, IntacctReimbursableExpensesObject, MappingSourceField, ReimbursableImportState, SageIntacctField, TaskLogState, TaskLogType } from 'src/app/core/models/enum/enum.model'; +import { ExpenseGroupList } from 'src/app/core/models/intacct/db/expense-group.model'; import { Expense } from 'src/app/core/models/intacct/db/expense.model'; import { LastExport } from 'src/app/core/models/intacct/db/last-export.model'; import { IntacctTaskLog, IntacctTaskResponse } from 'src/app/core/models/intacct/db/task-log.model'; -import { RefinerService } from 'src/app/core/services/integration/refiner.service'; -import { TrackingService } from 'src/app/core/services/integration/tracking.service'; import { UserService } from 'src/app/core/services/misc/user.service'; import { ExportLogService } from 'src/app/core/services/si/export-log/export-log.service'; -import { SiWorkspaceService } from 'src/app/core/services/si/si-core/si-workspace.service'; -import { environment } from 'src/environments/environment'; import { AccountingExportSummary, AccountingExportSummaryModel } from 'src/app/core/models/db/accounting-export-summary.model'; import { AccountingGroupedErrorStat, AccountingGroupedErrors, Error } from 'src/app/core/models/db/error.model'; import { DashboardModel, DestinationFieldMap } from 'src/app/core/models/db/dashboard.model'; @@ -91,6 +86,8 @@ export class IntacctDashboardComponent implements OnInit { destinationFieldMap : DestinationFieldMap; + acceptedCodeField: string[] = [SageIntacctField.ACCOUNT, SageIntacctField.DEPARTMENT, MappingSourceField.PROJECT, IntacctCategoryDestination.EXPENSE_TYPE]; + readonly dummyExpenseGroupList: ExpenseGroupList[] = [{ index: 0, exportedAt: new Date(), diff --git a/src/app/integrations/intacct/intacct-main/intacct-mapping/intacct-base-mapping/intacct-base-mapping.component.ts b/src/app/integrations/intacct/intacct-main/intacct-mapping/intacct-base-mapping/intacct-base-mapping.component.ts index 47a3a5841..a70dccfaf 100644 --- a/src/app/integrations/intacct/intacct-main/intacct-mapping/intacct-base-mapping/intacct-base-mapping.component.ts +++ b/src/app/integrations/intacct/intacct-main/intacct-mapping/intacct-base-mapping/intacct-base-mapping.component.ts @@ -38,7 +38,7 @@ export class IntacctBaseMappingComponent implements OnInit { cccExpenseObject: IntacctCorporateCreditCardExpensesObject | null; - acceptedCodeField: string[] = [SageIntacctField.ACCOUNT, SageIntacctField.DEPARTMENT, MappingSourceField.PROJECT]; + acceptedCodeField: string[] = [SageIntacctField.ACCOUNT, SageIntacctField.DEPARTMENT, MappingSourceField.PROJECT, IntacctCategoryDestination.EXPENSE_TYPE]; brandingConfig = brandingConfig; diff --git a/src/app/integrations/intacct/intacct-shared/intacct-c1-import-settings/intacct-c1-import-settings.component.ts b/src/app/integrations/intacct/intacct-shared/intacct-c1-import-settings/intacct-c1-import-settings.component.ts index 88d0d50f7..207fb5863 100644 --- a/src/app/integrations/intacct/intacct-shared/intacct-c1-import-settings/intacct-c1-import-settings.component.ts +++ b/src/app/integrations/intacct/intacct-shared/intacct-c1-import-settings/intacct-c1-import-settings.component.ts @@ -435,7 +435,9 @@ export class IntacctC1ImportSettingsComponent implements OnInit { costTypes: [importSettings.dependent_field_settings?.cost_type_field_name ? this.dependentFieldFormValue(importSettings.dependent_field_settings.cost_type_field_name, importSettings.dependent_field_settings.cost_type_placeholder, 'costTypes') : null], isDependentImportEnabled: [importSettings.dependent_field_settings?.is_import_enabled || false], sageIntacctTaxCodes: [importSettings.general_mappings.default_tax_code.id || null], - expenseFields: this.formBuilder.array(this.constructFormArray()) + expenseFields: this.formBuilder.array(this.constructFormArray()), + importCodeField: [importSettings.configurations.import_code_fields], + importCodeFields: this.formBuilder.array([]) }); this.importSettingWatcher(); diff --git a/src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.ts b/src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.ts index 2dd704db7..c20bd2466 100644 --- a/src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.ts +++ b/src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.ts @@ -2,11 +2,10 @@ import { Component, Inject, OnInit } from '@angular/core'; import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; import { RxwebValidators } from '@rxweb/reactive-form-validators'; -import { InputSwitchChangeEvent } from 'primeng/inputswitch'; import { forkJoin } from 'rxjs'; import { brandingConfig, brandingFeatureConfig, brandingKbArticles } from 'src/app/branding/branding-config'; import { ImportSettingsModel } from 'src/app/core/models/common/import-settings.model'; -import { IntacctCategoryDestination, ConfigurationCta, IntacctOnboardingState, IntacctUpdateEvent, Page, ProgressPhase, ToastSeverity, MappingSourceField, AppName, TrackingApp, DefaultImportFields, SageIntacctField } from 'src/app/core/models/enum/enum.model'; +import { IntacctCategoryDestination, ConfigurationCta, IntacctOnboardingState, IntacctUpdateEvent, Page, ProgressPhase, ToastSeverity, MappingSourceField, AppName, TrackingApp, SageIntacctField, IntacctReimbursableExpensesObject, IntacctCorporateCreditCardExpensesObject } from 'src/app/core/models/enum/enum.model'; import { IntacctDestinationAttribute } from 'src/app/core/models/intacct/db/destination-attribute.model'; import { ExpenseField } from 'src/app/core/models/intacct/db/expense-field.model'; import { LocationEntityMapping } from 'src/app/core/models/intacct/db/location-entity-mapping.model'; @@ -260,7 +259,7 @@ export class IntacctImportSettingsComponent implements OnInit { const defaultFieldData: MappingSetting = { source_field: '', destination_field: '', - import_to_fyle: true, + import_to_fyle: false, is_custom: false, source_placeholder: null }; @@ -299,6 +298,7 @@ export class IntacctImportSettingsComponent implements OnInit { this.customFieldControl.disable(); this.customFieldForDependentField = false; } else { + this.addImportCodeField({checked: true}, this.customFieldControl.get('destination_field')?.value); this.customField = { attribute_type: this.customFieldForm.value.attribute_type.split(' ').join('_').toUpperCase(), display_name: this.customFieldForm.value.attribute_type, @@ -506,6 +506,9 @@ export class IntacctImportSettingsComponent implements OnInit { // Get the 'import_to_fyle' control at the specified index and disable it (this.importSettingsForm.get('expenseFields') as FormArray).at(index)?.get('import_to_fyle')?.disable(); + } else { + (this.importSettingsForm.get('expenseFields') as FormArray).at(index)?.get('import_to_fyle')?.setValue(true); + this.addImportCodeField({checked: true}, (this.importSettingsForm.get('expenseFields') as FormArray).at(index)?.get('destination_field')?.value); } if (selectedValue === 'custom_field') { @@ -552,7 +555,12 @@ export class IntacctImportSettingsComponent implements OnInit { this.fyleFields = this.fyleFields.filter(field => !field.is_dependent); } - if (this.importSettings.configurations.import_code_fields.length > 0 && !this.importSettings.configurations.import_code_fields.includes(this.intacctCategoryDestination) && this.intacctImportCodeConfig[this.intacctCategoryDestination] && this.importSettings.configurations.import_categories) { + let sourceField = this.intacctCategoryDestination; + if (sourceField === IntacctCategoryDestination.GL_ACCOUNT) { + sourceField = IntacctCategoryDestination.ACCOUNT; + } + + if (this.importSettings.configurations.import_code_fields && this.importSettings.configurations.import_code_fields.length > 0 && !this.importSettings.configurations.import_code_fields.includes(sourceField) && this.intacctImportCodeConfig[sourceField] && this.importSettings.configurations.import_categories) { this.addImportCodeField({checked: true}, this.intacctCategoryDestination); } @@ -634,7 +642,7 @@ export class IntacctImportSettingsComponent implements OnInit { } } - if (configuration.employee_field_mapping==='EMPLOYEE') { + if (configuration.reimbursable_expenses_object === IntacctReimbursableExpensesObject.EXPENSE_REPORT || configuration.corporate_credit_card_expenses_object === IntacctCorporateCreditCardExpensesObject.EXPENSE_REPORT) { this.intacctCategoryDestination = IntacctCategoryDestination.EXPENSE_TYPE; } else { this.intacctCategoryDestination = IntacctCategoryDestination.GL_ACCOUNT; 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 aee015ab0..70af8a002 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 @@ -4,7 +4,7 @@
- +
diff --git a/src/app/shared/components/helper/mapping/mapping-card-header/mapping-card-header.component.ts b/src/app/shared/components/helper/mapping/mapping-card-header/mapping-card-header.component.ts index fc36b29cf..dd31f80f9 100644 --- a/src/app/shared/components/helper/mapping/mapping-card-header/mapping-card-header.component.ts +++ b/src/app/shared/components/helper/mapping/mapping-card-header/mapping-card-header.component.ts @@ -28,11 +28,14 @@ export class MappingCardHeaderComponent implements OnInit { destinationField = new SnakeCaseToSpaceCasePipe().transform(destinationField).toLowerCase(); const lastChar = destinationField.slice(-1).toLowerCase(); const lastTwoChars = destinationField.slice(-2).toLowerCase(); + const pattern = new RegExp('[^a-zA-Z\d\s:]'); if (lastChar === 'y') { return destinationField.slice(0, -1) + 'ies'; } else if (['s', 'x', 'z'].includes(lastChar) || ['sh', 'ch'].includes(lastTwoChars)) { return destinationField + 'es'; + } else if (pattern.test(lastChar)) { + return destinationField; } return destinationField + 's'; }