Skip to content

Commit

Permalink
Fix skip export - QBO (#444)
Browse files Browse the repository at this point in the history
* Fix skip export - QBO

* mild change

* skip export save()
  • Loading branch information
ashwin1111 authored Jan 12, 2024
1 parent 2866528 commit 17c66f7
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/app/core/services/common/skip-export.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ export class SkipExportService {
helper.setBaseApiURL();
}

getExpenseFields(): Observable<ConditionField[]> {
return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/fyle/expense_fields/`, {});
getExpenseFields(version?: 'v1'): Observable<ConditionField[]> {
return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/fyle/${version === 'v1' ? 'custom_fields': 'expense_fields'}/`, {});
}

getAdminEmail(): Observable<EmailOption[]> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ import { FormGroup, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import { forkJoin } from 'rxjs';
import { brandingConfig, brandingKbArticles } from 'src/app/branding/branding-config';
import { AdvancedSettingsModel, ConditionField, EmailOption, ExpenseFilterResponse, SkipExportModel } from 'src/app/core/models/common/advanced-settings.model';
import { AdvancedSettingsModel, ConditionField, EmailOption, ExpenseFilterPayload, ExpenseFilterResponse, SkipExportModel, SkipExportValidatorRule, skipExportValidator } from 'src/app/core/models/common/advanced-settings.model';
import { SelectFormOption } from 'src/app/core/models/common/select-form-option.model';
import { DefaultDestinationAttribute, DestinationAttribute } from 'src/app/core/models/db/destination-attribute.model';
import { AppName, AutoMapEmployeeOptions, ConfigurationCta, EmployeeFieldMapping, NameInJournalEntry, QBOCorporateCreditCardExpensesObject, QBOOnboardingState, QBOPaymentSyncDirection, QBOReimbursableExpensesObject, ToastSeverity } from 'src/app/core/models/enum/enum.model';
import { QBOWorkspaceGeneralSetting } from 'src/app/core/models/qbo/db/workspace-general-setting.model';
import { QBOAdvancedSettingGet, QBOAdvancedSettingModel } from 'src/app/core/models/qbo/qbo-configuration/qbo-advanced-setting.model';
import { QBOExportSettingModel } from 'src/app/core/models/qbo/qbo-configuration/qbo-export-setting.model';
import { ConfigurationService } from 'src/app/core/services/common/configuration.service';
import { HelperService } from 'src/app/core/services/common/helper.service';
import { IntegrationsToastService } from 'src/app/core/services/common/integrations-toast.service';
import { MappingService } from 'src/app/core/services/common/mapping.service';
import { SkipExportService } from 'src/app/core/services/common/skip-export.service';
Expand Down Expand Up @@ -75,6 +76,7 @@ export class QboAdvancedSettingsComponent implements OnInit {
constructor(
private advancedSettingsService: QboAdvancedSettingsService,
private configurationService: ConfigurationService,
private helper: HelperService,
private qboHelperService: QboHelperService,
private mappingService: MappingService,
private router: Router,
Expand All @@ -88,8 +90,41 @@ export class QboAdvancedSettingsComponent implements OnInit {
this.router.navigate([`/integrations/qbo/onboarding/import_settings`]);
}

private saveSkipExportFields(): void {
if (!this.skipExportForm.valid) {
return;
}
let valueField = this.skipExportForm.getRawValue();
if (!valueField.condition1.field_name) {
return;
}
valueField = SkipExportModel.constructSkipExportValue(valueField);
valueField.rank = 1;
const skipExportRank1: ExpenseFilterPayload = SkipExportModel.constructExportFilterPayload(valueField);
const payload1 = SkipExportModel.constructSkipExportPayload(skipExportRank1, this.skipExportForm.value.value1);
this.skipExportService.postExpenseFilter(payload1).subscribe(() => {
if (valueField.condition2 && valueField.operator2) {
valueField.rank = 2;
const skipExportRank2: ExpenseFilterPayload = SkipExportModel.constructExportFilterPayload(valueField);
const payload2 = SkipExportModel.constructSkipExportPayload(skipExportRank2, this.skipExportForm.value.value2);
this.skipExportService.postExpenseFilter(payload2).subscribe(() => {});
}
});
}

private saveSkipExport(): void {
if (!this.advancedSettingForm.value.skipExport && this.expenseFilters.results.length > 0){
this.expenseFilters.results.forEach((value) => {
this.deleteExpenseFilter(value.rank);
});
}
if (this.advancedSettingForm.value.skipExport) {
this.saveSkipExportFields();
}
}

save(): void {
// TODO, save skip export
this.saveSkipExport();
const advancedSettingPayload = QBOAdvancedSettingModel.constructPayload(this.advancedSettingForm);
this.isSaveInProgress = true;

Expand Down Expand Up @@ -141,19 +176,35 @@ export class QboAdvancedSettingsComponent implements OnInit {
});
}

skipExportWatcher(): void {
const skipExportFormWatcherFields: SkipExportValidatorRule = {
condition1: ['operator1', 'value1'],
condition2: ['operator2', 'value2'],
operator1: ['value1'],
operator2: ['value2']
};
this.helper.setConfigurationSettingValidatorsAndWatchers(skipExportFormWatcherFields, this.skipExportForm);

const formWatcher: skipExportValidator = {
'isChanged': ['condition1', 'operator1', 'value1'],
'isNotChanged': ['condition1', 'operator1', 'value1', 'condition2', 'operator2', 'value2', 'join_by']
};
this.helper.handleSkipExportFormInAdvancedSettingsUpdates(this.skipExportForm, formWatcher, this.advancedSettingForm);
}

private setupFormWatchers() {
// TODO: skip export watchers
this.createMemoStructureWatcher();

QBOAdvancedSettingModel.setConfigurationSettingValidatorsAndWatchers(this.advancedSettingForm);
this.skipExportWatcher();
}

private getSettingsAndSetupForm(): void {
this.isOnboarding = this.router.url.includes('onboarding');
forkJoin([
this.advancedSettingsService.getAdvancedSettings(),
this.skipExportService.getExpenseFilter(),
this.skipExportService.getExpenseFields(),
this.skipExportService.getExpenseFields('v1'),
this.mappingService.getGroupedDestinationAttributes(['BANK_ACCOUNT'], 'v1', 'qbo'),
this.configurationService.getAdditionalEmails(),
this.workspaceService.getWorkspaceGeneralSettings()
Expand Down

0 comments on commit 17c66f7

Please sign in to comment.