Skip to content

Commit b3ad044

Browse files
authored
fix: Fix Xero clone settings save() (#1200)
* fix: Clone settings CCC date options * fixes
1 parent 3094bd7 commit b3ad044

File tree

6 files changed

+41
-20
lines changed

6 files changed

+41
-20
lines changed

src/app/core/models/xero/xero-configuration/clone-setting.model.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,9 @@ export type XeroCloneSettingPost = {
2020

2121
export class XeroCloneSettingModel {
2222
static constructPayload(exportSettingForm: FormGroup, importSettingForm: FormGroup, advancedSettingForm: FormGroup, isTaxGroupSyncAllowed: boolean): XeroCloneSettingPost {
23-
const exportSettingPayload = XeroExportSettingModel.constructPayload(exportSettingForm);
24-
const importSettingPayload = XeroImportSettingModel.constructPayload(importSettingForm);
25-
const advancedSettingPayload = XeroAdvancedSettingModel.constructPayload(advancedSettingForm);
26-
27-
// Set the bank_account in the payload to the selected field value without formatting it
28-
// Since we format them on component init (clone settings only)
29-
exportSettingPayload.general_mappings.bank_account = exportSettingForm.get('bankAccount')?.value;
30-
importSettingPayload.general_mappings.default_tax_code = importSettingForm.get('defaultTaxCode')?.value;
31-
advancedSettingPayload.general_mappings.payment_account = advancedSettingForm.get('billPaymentAccount')?.value;
23+
const exportSettingPayload = XeroExportSettingModel.constructPayload(exportSettingForm, true);
24+
const importSettingPayload = XeroImportSettingModel.constructPayload(importSettingForm, true);
25+
const advancedSettingPayload = XeroAdvancedSettingModel.constructPayload(advancedSettingForm, true);
3226

3327
if (!isTaxGroupSyncAllowed) {
3428
importSettingPayload.workspace_general_settings.import_tax_codes = false;

src/app/core/models/xero/xero-configuration/xero-advanced-settings.model.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,16 @@ export class XeroAdvancedSettingModel extends HelperUtility{
121121
});
122122
}
123123

124-
static constructPayload(advancedSettingsForm: FormGroup): XeroAdvancedSettingPost {
125-
const emptyDestinationAttribute = {id: null, name: null};
124+
static constructPayload(advancedSettingsForm: FormGroup, isCloneSettings: boolean = false): XeroAdvancedSettingPost {
125+
const emptyDestinationAttribute: DefaultDestinationAttribute = {id: null, name: null};
126+
let paymentAccount = {...emptyDestinationAttribute};
127+
if (advancedSettingsForm.get('billPaymentAccount')?.value) {
128+
if (isCloneSettings) {
129+
paymentAccount = advancedSettingsForm.get('billPaymentAccount')?.value;
130+
} else {
131+
paymentAccount = ExportSettingModel.formatGeneralMappingPayload(advancedSettingsForm.get('billPaymentAccount')?.value);
132+
}
133+
}
126134
const advancedSettingPayload: XeroAdvancedSettingPost = {
127135
workspace_general_settings: {
128136
sync_fyle_to_xero_payments: advancedSettingsForm.get('paymentSync')?.value && advancedSettingsForm.get('paymentSync')?.value === PaymentSyncDirection.FYLE_TO_XERO ? true : false,
@@ -133,7 +141,7 @@ export class XeroAdvancedSettingModel extends HelperUtility{
133141
memo_structure: advancedSettingsForm.get('memoStructure')?.value
134142
},
135143
general_mappings: {
136-
payment_account: advancedSettingsForm.get('billPaymentAccount')?.value ? ExportSettingModel.formatGeneralMappingPayload(advancedSettingsForm.get('billPaymentAccount')?.value) : emptyDestinationAttribute
144+
payment_account: paymentAccount
137145
},
138146
workspace_schedules: {
139147
enabled: advancedSettingsForm.get('exportSchedule')?.value ? true : false,

src/app/core/models/xero/xero-configuration/xero-export-settings.model.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,19 @@ export class XeroExportSettingModel {
224224
});
225225
}
226226

227-
static constructPayload(exportSettingsForm: FormGroup): XeroExportSettingPost {
228-
const emptyDestinationAttribute = {id: null, name: null};
227+
static constructPayload(exportSettingsForm: FormGroup, isCloneSettings: boolean = false): XeroExportSettingPost {
228+
const emptyDestinationAttribute: DefaultDestinationAttribute = {id: null, name: null};
229+
230+
let bankAccount = {...emptyDestinationAttribute};
231+
232+
if (exportSettingsForm.get('bankAccount')?.value) {
233+
if (isCloneSettings) {
234+
bankAccount = exportSettingsForm.get('bankAccount')?.value;
235+
} else {
236+
bankAccount = ExportSettingModel.formatGeneralMappingPayload(exportSettingsForm.get('bankAccount')?.value);
237+
}
238+
}
239+
229240
const exportSettingPayload: XeroExportSettingPost = {
230241
expense_group_settings: {
231242
reimbursable_expense_state: exportSettingsForm.get('expenseState')?.value,
@@ -240,7 +251,7 @@ export class XeroExportSettingModel {
240251
auto_map_employees: exportSettingsForm.get('autoMapEmployees')?.value
241252
},
242253
general_mappings: {
243-
bank_account: exportSettingsForm.get('bankAccount')?.value ? ExportSettingModel.formatGeneralMappingPayload(exportSettingsForm.get('bankAccount')?.value) : emptyDestinationAttribute
254+
bank_account: bankAccount
244255
}
245256
};
246257

src/app/core/models/xero/xero-configuration/xero-import-settings.model.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,21 @@ export class XeroImportSettingModel extends ImportSettingsModel {
8989
});
9090
}
9191

92-
static constructPayload(importSettingsForm: FormGroup): XeroImportSettingPost {
92+
static constructPayload(importSettingsForm: FormGroup, isCloneSettings: boolean = false): XeroImportSettingPost {
9393

94-
const emptyDestinationAttribute = {id: null, name: null};
94+
const emptyDestinationAttribute: DefaultDestinationAttribute = {id: null, name: null};
9595
const COA = importSettingsForm.get('chartOfAccountTypes')?.value.map((name: string) => name.toUpperCase());
9696
const expenseFieldArray = importSettingsForm.getRawValue().expenseFields.filter(((data:any) => data.destination_field !== XeroFyleField.CUSTOMER));
9797
const mappingSettings = this.constructMappingSettingPayload(expenseFieldArray);
9898

99+
let defaultTaxCode = {...emptyDestinationAttribute};
100+
if (importSettingsForm.get('defaultTaxCode')?.value) {
101+
if (isCloneSettings) {
102+
defaultTaxCode = importSettingsForm.get('defaultTaxCode')?.value;
103+
} else {
104+
defaultTaxCode = ExportSettingModel.formatGeneralMappingPayload(importSettingsForm.get('defaultTaxCode')?.value);
105+
}
106+
}
99107
const importSettingPayload: XeroImportSettingPost = {
100108
workspace_general_settings: {
101109
import_categories: importSettingsForm.get('importCategories')?.value ?? false,
@@ -105,7 +113,7 @@ export class XeroImportSettingModel extends ImportSettingsModel {
105113
import_customers: importSettingsForm.get('importCustomers')?.value ? importSettingsForm.get('importCustomers')?.value : false
106114
},
107115
general_mappings: {
108-
default_tax_code: importSettingsForm.get('defaultTaxCode')?.value ? ExportSettingModel.formatGeneralMappingPayload(importSettingsForm.get('defaultTaxCode')?.value) : emptyDestinationAttribute
116+
default_tax_code: defaultTaxCode
109117
},
110118
mapping_settings: mappingSettings
111119
};

src/app/integrations/qbo/qbo-onboarding/qbo-clone-settings/qbo-clone-settings.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@
233233
<app-clone-setting-field
234234
[iconSource]="'question-square-outline'"
235235
[label]="'At which state should the expenses be ready to export from ' + brandingConfig.brandName + '?'"
236-
[options]="expenseStateOptions"
236+
[options]="cccExpenseStateOptions"
237237
[placeholder]="'Select CCC expense state'"
238238
[form]="exportSettingForm"
239239
[isFieldMandatory]="true"

src/app/integrations/xero/xero-onboarding/xero-clone-settings/xero-clone-settings.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
<app-clone-setting-field
141141
[iconSource]="'question-square-outline'"
142142
[label]="'At which state should the expenses be ready to export from ' + brandingConfig.brandName + '?'"
143-
[options]="expenseStateOptions"
143+
[options]="cccExpenseStateOptions"
144144
[placeholder]="'Select CCC expense state'"
145145
[form]="exportSettingForm"
146146
[isFieldMandatory]="true"

0 commit comments

Comments
 (0)