Skip to content

Commit

Permalink
base mapping xero
Browse files Browse the repository at this point in the history
  • Loading branch information
anishfyle committed Mar 15, 2024
1 parent 05ca761 commit 2011f00
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/app/core/models/enum/enum.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,8 @@ export enum MappingState {
}

export enum AccountingField {
ACCOUNT = 'ACCOUNT'
ACCOUNT = 'ACCOUNT',
CONTACT = 'CONTACT'
}

export enum Sage300Field {
Expand Down
4 changes: 3 additions & 1 deletion src/app/integrations/xero/xero-main/xero-main.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { XeroSharedModule } from '../xero-shared/xero-shared.module';
import { SharedModule } from 'src/app/shared/shared.module';
import { XeroCompleteExportLogComponent } from './xero-export-log/xero-complete-export-log/xero-complete-export-log.component';
import { XeroSkippedExportLogComponent } from './xero-export-log/xero-skipped-export-log/xero-skipped-export-log.component';
import { XeroBaseMappingComponent } from './xero-mapping/xero-base-mapping/xero-base-mapping.component';


@NgModule({
Expand All @@ -19,7 +20,8 @@ import { XeroSkippedExportLogComponent } from './xero-export-log/xero-skipped-ex
XeroMappingComponent,
XeroExportLogComponent,
XeroCompleteExportLogComponent,
XeroSkippedExportLogComponent
XeroSkippedExportLogComponent,
XeroBaseMappingComponent
],
imports: [
CommonModule,
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,12 @@
<p>xero-base-mapping works!</p>
<app-generic-mapping-v2 *ngIf="!isLoading"
[isLoading]="isLoading"
[destinationOptions]="destinationOptions"
[employeeFieldMapping]="employeeFieldMapping"
[sourceField]="sourceField"
[destinationField]="destinationField"
[showAutoMapEmployee]="showAutoMapEmployee"
[appName]="AppName.QBO"
[isCategoryMappingGeneric]="sourceField === FyleField.CATEGORY ? true : false"
[displayName]="displayName"
(triggerAutoMapEmployee)="triggerAutoMapEmployees()">
</app-generic-mapping-v2>
Original file line number Diff line number Diff line change
@@ -1,15 +1,97 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { forkJoin } from 'rxjs';
import { DestinationAttribute } from 'src/app/core/models/db/destination-attribute.model';
import { MappingSetting } from 'src/app/core/models/db/mapping-setting.model';
import { AccountingDisplayName, AccountingField, AppName, FyleField, MappingDestinationField, MappingSourceField, ToastSeverity, XeroCorporateCreditCardExpensesObject, XeroReimbursableExpensesObject } from 'src/app/core/models/enum/enum.model';
import { XeroWorkspaceGeneralSetting } from 'src/app/core/models/xero/db/xero-workspace-general-setting.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';

@Component({
selector: 'app-xero-base-mapping',
templateUrl: './xero-base-mapping.component.html',
styleUrls: ['./xero-base-mapping.component.scss']
})
export class XeroBaseMappingComponent implements OnInit {
isLoading: boolean = true;

constructor() { }
destinationOptions: DestinationAttribute[];

employeeFieldMapping: FyleField;

sourceField: string;

destinationField: string;

showAutoMapEmployee: boolean;

reimbursableExpenseObject: XeroReimbursableExpensesObject | null;

cccExpenseObject: XeroCorporateCreditCardExpensesObject | null;

AppName = AppName;

FyleField = FyleField;

displayName: string | undefined = undefined;

constructor(
private route: ActivatedRoute,
private mappingService: MappingService,
private toastService: IntegrationsToastService,
private workspaceService: WorkspaceService
) { }

triggerAutoMapEmployees(): void {
this.isLoading = true;
this.mappingService.triggerAutoMapEmployees().subscribe(() => {
this.isLoading = false;
this.toastService.displayToastMessage(ToastSeverity.INFO, 'Auto mapping of employees may take few minutes');
}, () => {
this.isLoading = false;
this.toastService.displayToastMessage(ToastSeverity.ERROR, 'Something went wrong, please try again');
});
}

private getDestinationField(workspaceGeneralSetting: XeroWorkspaceGeneralSetting, mappingSettings: MappingSetting[]): string {
if (this.sourceField === FyleField.EMPLOYEE) {
return AccountingField.CONTACT;
} else if (this.sourceField === FyleField.CATEGORY) {
return AccountingField.ACCOUNT;
} else if (this.sourceField === MappingSourceField.TAX_GROUP) {
return MappingDestinationField.TAX_CODE;
}

return mappingSettings.find((setting) => setting.source_field === this.sourceField)?.destination_field || '';
}

private setupPage(): void {
this.sourceField = decodeURIComponent(this.route.snapshot.params.source_field.toUpperCase());
forkJoin([
this.workspaceService.getWorkspaceGeneralSettings(),
this.mappingService.getMappingSettings()
]).subscribe((responses) => {
this.reimbursableExpenseObject = responses[0].reimbursable_expenses_object;
this.cccExpenseObject = responses[0].corporate_credit_card_expenses_object;
this.employeeFieldMapping = (responses[0].employee_field_mapping as unknown as FyleField);
this.showAutoMapEmployee = responses[0].auto_map_employees ? true : false;

this.destinationField = this.getDestinationField(responses[0], responses[1].results);

this.mappingService.getPaginatedDestinationAttributes(this.destinationField, undefined, this.displayName).subscribe((responses) => {
this.destinationOptions = responses.results;
this.isLoading = false;
});
});
}

ngOnInit(): void {
this.route.params.subscribe(() => {
this.isLoading = true;
this.setupPage();
});
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ import { XeroBaseMappingComponent } from './xero-base-mapping/xero-base-mapping.


@NgModule({
declarations: [
XeroBaseMappingComponent
],
declarations: [],
imports: [
CommonModule,
XeroMappingRoutingModule
Expand Down

0 comments on commit 2011f00

Please sign in to comment.