Skip to content

Commit 73ef0ab

Browse files
DhaaraniCITHrishabh17
authored andcommitted
feat: intacct code prepend fixes (#965)
intacct code prepend fixes
1 parent 87a7a5c commit 73ef0ab

File tree

7 files changed

+27
-16
lines changed

7 files changed

+27
-16
lines changed

src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.html

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
[destinationFieldMap]="destinationFieldMap"
4242
[isCategoryMappingGeneric]="false"
4343
[destinationOptionsVersion]="'v1'"
44+
[importCodeFields]="acceptedCodeField"
4445
[errorsVersion]="'v1'">
4546
</app-dashboard-error-section>
4647
</div>

src/app/integrations/intacct/intacct-main/intacct-dashboard/intacct-dashboard.component.ts

+5-8
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
11
import { Component, OnInit } from '@angular/core';
2-
import { Observable, catchError, forkJoin, from, interval, map, of, switchMap, takeWhile } from 'rxjs';
2+
import { Observable, catchError, forkJoin, from, interval, of, switchMap, takeWhile } from 'rxjs';
33
import { brandingConfig, brandingFeatureConfig } from 'src/app/branding/branding-config';
4-
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';
5-
import { ExpenseGroupSetting } from 'src/app/core/models/db/expense-group-setting.model';
6-
import { ExpenseGroup, ExpenseGroupList, ExportableExpenseGroup } from 'src/app/core/models/intacct/db/expense-group.model';
4+
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';
5+
import { ExpenseGroupList } from 'src/app/core/models/intacct/db/expense-group.model';
76
import { Expense } from 'src/app/core/models/intacct/db/expense.model';
87
import { LastExport } from 'src/app/core/models/intacct/db/last-export.model';
98
import { IntacctTaskLog, IntacctTaskResponse } from 'src/app/core/models/intacct/db/task-log.model';
10-
import { RefinerService } from 'src/app/core/services/integration/refiner.service';
11-
import { TrackingService } from 'src/app/core/services/integration/tracking.service';
129
import { UserService } from 'src/app/core/services/misc/user.service';
1310
import { ExportLogService } from 'src/app/core/services/si/export-log/export-log.service';
14-
import { SiWorkspaceService } from 'src/app/core/services/si/si-core/si-workspace.service';
15-
import { environment } from 'src/environments/environment';
1611
import { AccountingExportSummary, AccountingExportSummaryModel } from 'src/app/core/models/db/accounting-export-summary.model';
1712
import { AccountingGroupedErrorStat, AccountingGroupedErrors, Error } from 'src/app/core/models/db/error.model';
1813
import { DashboardModel, DestinationFieldMap } from 'src/app/core/models/db/dashboard.model';
@@ -91,6 +86,8 @@ export class IntacctDashboardComponent implements OnInit {
9186

9287
destinationFieldMap : DestinationFieldMap;
9388

89+
acceptedCodeField: string[] = [SageIntacctField.ACCOUNT, SageIntacctField.DEPARTMENT, MappingSourceField.PROJECT, IntacctCategoryDestination.EXPENSE_TYPE];
90+
9491
readonly dummyExpenseGroupList: ExpenseGroupList[] = [{
9592
index: 0,
9693
exportedAt: new Date(),

src/app/integrations/intacct/intacct-main/intacct-mapping/intacct-base-mapping/intacct-base-mapping.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export class IntacctBaseMappingComponent implements OnInit {
3838

3939
cccExpenseObject: IntacctCorporateCreditCardExpensesObject | null;
4040

41-
acceptedCodeField: string[] = [SageIntacctField.ACCOUNT, SageIntacctField.DEPARTMENT, MappingSourceField.PROJECT];
41+
acceptedCodeField: string[] = [SageIntacctField.ACCOUNT, SageIntacctField.DEPARTMENT, MappingSourceField.PROJECT, IntacctCategoryDestination.EXPENSE_TYPE];
4242

4343
brandingConfig = brandingConfig;
4444

src/app/integrations/intacct/intacct-shared/intacct-c1-import-settings/intacct-c1-import-settings.component.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,9 @@ export class IntacctC1ImportSettingsComponent implements OnInit {
435435
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],
436436
isDependentImportEnabled: [importSettings.dependent_field_settings?.is_import_enabled || false],
437437
sageIntacctTaxCodes: [importSettings.general_mappings.default_tax_code.id || null],
438-
expenseFields: this.formBuilder.array(this.constructFormArray())
438+
expenseFields: this.formBuilder.array(this.constructFormArray()),
439+
importCodeField: [importSettings.configurations.import_code_fields],
440+
importCodeFields: this.formBuilder.array([])
439441
});
440442

441443
this.importSettingWatcher();

src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.ts

+13-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ import { Component, Inject, OnInit } from '@angular/core';
22
import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';
33
import { Router } from '@angular/router';
44
import { RxwebValidators } from '@rxweb/reactive-form-validators';
5-
import { InputSwitchChangeEvent } from 'primeng/inputswitch';
65
import { forkJoin } from 'rxjs';
76
import { brandingConfig, brandingFeatureConfig, brandingKbArticles } from 'src/app/branding/branding-config';
87
import { ImportSettingsModel } from 'src/app/core/models/common/import-settings.model';
9-
import { IntacctCategoryDestination, ConfigurationCta, IntacctOnboardingState, IntacctUpdateEvent, Page, ProgressPhase, ToastSeverity, MappingSourceField, AppName, TrackingApp, DefaultImportFields, SageIntacctField } from 'src/app/core/models/enum/enum.model';
8+
import { IntacctCategoryDestination, ConfigurationCta, IntacctOnboardingState, IntacctUpdateEvent, Page, ProgressPhase, ToastSeverity, MappingSourceField, AppName, TrackingApp, SageIntacctField, IntacctReimbursableExpensesObject, IntacctCorporateCreditCardExpensesObject } from 'src/app/core/models/enum/enum.model';
109
import { IntacctDestinationAttribute } from 'src/app/core/models/intacct/db/destination-attribute.model';
1110
import { ExpenseField } from 'src/app/core/models/intacct/db/expense-field.model';
1211
import { LocationEntityMapping } from 'src/app/core/models/intacct/db/location-entity-mapping.model';
@@ -260,7 +259,7 @@ export class IntacctImportSettingsComponent implements OnInit {
260259
const defaultFieldData: MappingSetting = {
261260
source_field: '',
262261
destination_field: '',
263-
import_to_fyle: true,
262+
import_to_fyle: false,
264263
is_custom: false,
265264
source_placeholder: null
266265
};
@@ -299,6 +298,7 @@ export class IntacctImportSettingsComponent implements OnInit {
299298
this.customFieldControl.disable();
300299
this.customFieldForDependentField = false;
301300
} else {
301+
this.addImportCodeField({checked: true}, this.customFieldControl.get('destination_field')?.value);
302302
this.customField = {
303303
attribute_type: this.customFieldForm.value.attribute_type.split(' ').join('_').toUpperCase(),
304304
display_name: this.customFieldForm.value.attribute_type,
@@ -506,6 +506,9 @@ export class IntacctImportSettingsComponent implements OnInit {
506506

507507
// Get the 'import_to_fyle' control at the specified index and disable it
508508
(this.importSettingsForm.get('expenseFields') as FormArray).at(index)?.get('import_to_fyle')?.disable();
509+
} else {
510+
(this.importSettingsForm.get('expenseFields') as FormArray).at(index)?.get('import_to_fyle')?.setValue(true);
511+
this.addImportCodeField({checked: true}, (this.importSettingsForm.get('expenseFields') as FormArray).at(index)?.get('destination_field')?.value);
509512
}
510513

511514
if (selectedValue === 'custom_field') {
@@ -552,7 +555,12 @@ export class IntacctImportSettingsComponent implements OnInit {
552555
this.fyleFields = this.fyleFields.filter(field => !field.is_dependent);
553556
}
554557

555-
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) {
558+
let sourceField = this.intacctCategoryDestination;
559+
if (sourceField === IntacctCategoryDestination.GL_ACCOUNT) {
560+
sourceField = IntacctCategoryDestination.ACCOUNT;
561+
}
562+
563+
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) {
556564
this.addImportCodeField({checked: true}, this.intacctCategoryDestination);
557565
}
558566

@@ -634,7 +642,7 @@ export class IntacctImportSettingsComponent implements OnInit {
634642
}
635643
}
636644

637-
if (configuration.employee_field_mapping==='EMPLOYEE') {
645+
if (configuration.reimbursable_expenses_object === IntacctReimbursableExpensesObject.EXPENSE_REPORT || configuration.corporate_credit_card_expenses_object === IntacctCorporateCreditCardExpensesObject.EXPENSE_REPORT) {
638646
this.intacctCategoryDestination = IntacctCategoryDestination.EXPENSE_TYPE;
639647
} else {
640648
this.intacctCategoryDestination = IntacctCategoryDestination.GL_ACCOUNT;

src/app/shared/components/helper/mapping/generic-mapping-v2/generic-mapping-v2.component.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<div>
66
<div>
7-
<app-card-mapping-header *ngIf="mappings" (triggerAutoMapEmployee)="triggerAutoMapEmployees()" [sourceField]="sourceField" [showAutoMapEmployee]="showAutoMapEmployee" [mappingStats]="mappingStats" (triggerAutoMapEmployee)="triggerAutoMapEmployees"></app-card-mapping-header>
7+
<app-card-mapping-header *ngIf="mappings" (triggerAutoMapEmployee)="triggerAutoMapEmployees()" [sourceField]="sourceType" [showAutoMapEmployee]="showAutoMapEmployee" [mappingStats]="mappingStats" (triggerAutoMapEmployee)="triggerAutoMapEmployees()"></app-card-mapping-header>
88
</div>
99

1010
<div class="tw-rounded-8-px tw-bg-white tw-border-1-px tw-border-border-tertiary tw-mt-16-px" [ngClass]="{'tw-shadow-app-card': brandingConfig.brandId === 'fyle', 'tw-shadow-shadow-level-1': brandingConfig.brandId === 'co'}">

src/app/shared/components/helper/mapping/mapping-card-header/mapping-card-header.component.ts

+3
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@ export class MappingCardHeaderComponent implements OnInit {
2828
destinationField = new SnakeCaseToSpaceCasePipe().transform(destinationField).toLowerCase();
2929
const lastChar = destinationField.slice(-1).toLowerCase();
3030
const lastTwoChars = destinationField.slice(-2).toLowerCase();
31+
const pattern = new RegExp('[^a-zA-Z\d\s:]');
3132

3233
if (lastChar === 'y') {
3334
return destinationField.slice(0, -1) + 'ies';
3435
} else if (['s', 'x', 'z'].includes(lastChar) || ['sh', 'ch'].includes(lastTwoChars)) {
3536
return destinationField + 'es';
37+
} else if (pattern.test(lastChar)) {
38+
return destinationField;
3639
}
3740
return destinationField + 's';
3841
}

0 commit comments

Comments
 (0)