Skip to content

Commit 84a4838

Browse files
authored
fix: JE fixes (#1093)
* JE fixes
1 parent 304ba01 commit 84a4838

File tree

11 files changed

+39
-15
lines changed

11 files changed

+39
-15
lines changed

src/app/core/models/common/helper.model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export class HelperUtility {
1414
form.controls[controllerName].clearValidators();
1515

1616
// Temporary hack: Don't reset value for fields that are used in reimbursable + ccc section
17-
if (controllerName !== 'accountsPayable' && controllerName !== 'defaultCCCAccount' && controllerName !== 'bankAccount' && controllerName !== 'creditCardAccount' && controllerName !== 'defaultCreditCardVendor' && controllerName !== 'nameInJournalEntry' && controllerName !== 'exportScheduleFrequency') {
17+
if (controllerName !== 'accountsPayable' && controllerName !== 'defaultCCCAccount' && controllerName !== 'bankAccount' && controllerName !== 'creditCardAccount' && controllerName !== 'defaultCreditCardVendor' && controllerName !== 'nameInJournalEntry' && controllerName !== 'exportScheduleFrequency' && controllerName !== 'employeeMapping') {
1818
form.controls[controllerName].setValue(null);
1919
}
2020
}

src/app/core/models/db/destination-attribute.model.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { BusinessCentralDestinationAttributes } from "../business-central/db/business-central-destination-attribute.model";
2+
import { QbdDirectDestinationAttribute } from "../qbd-direct/db/qbd-direct-destination-attribuite.model";
23
import { Sage300DestinationAttributes } from "../sage300/db/sage300-destination-attribuite.model";
34
import { PaginatedResponse } from "./paginated-response.model";
45

@@ -36,7 +37,7 @@ export interface PaginatedDestinationAttribute extends PaginatedResponse {
3637
}
3738

3839
export type GroupedDestinationAttribute = {
39-
ACCOUNT: Sage300DestinationAttributes[] | BusinessCentralDestinationAttributes[],
40+
ACCOUNT: Sage300DestinationAttributes[] | BusinessCentralDestinationAttributes[] | QbdDirectDestinationAttribute[],
4041
EXPENSE_TYPE: Sage300DestinationAttributes[],
4142
EXPENSE_PAYMENT_TYPE: Sage300DestinationAttributes[] | BusinessCentralDestinationAttributes[],
4243
VENDOR_PAYMENT_ACCOUNT: DestinationAttribute[],

src/app/core/models/db/task-log.model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ export type TaskLogGetParams = {
2323
type__in?: string[];
2424
expense_group_ids?: number[];
2525
task_type?: string[];
26-
export_log__id?: number[];
26+
export_log__id__in?: number[];
2727
};

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@ export class QbdDirectAdvancedSettingsModel extends AdvancedSettingsModel {
2929
return ["employee_name", "Expense/Report ID"];
3030
}
3131

32+
static topMemoExpenseKeyNameConversion(keys: string[]): string[] {
33+
keys.forEach((key: string, index: number) => {
34+
if (key === 'expense_key') {
35+
keys[index] = 'Expense/Report ID';
36+
}
37+
});
38+
return keys;
39+
}
40+
3241
static formatMemoStructure(memoStructure: string[], defaultMemoOptions: string[]): string[] {
3342
const originMemo: string[] = [];
3443
defaultMemoOptions.forEach((field, index) => {
@@ -43,7 +52,7 @@ export class QbdDirectAdvancedSettingsModel extends AdvancedSettingsModel {
4352

4453
return new FormGroup({
4554
expenseMemoStructure: new FormControl(advancedSettings?.line_level_memo_structure && advancedSettings?.line_level_memo_structure.length > 0 ? this.formatMemoStructure(this.defaultMemoFields(), advancedSettings?.line_level_memo_structure) : this.defaultMemoFields(), Validators.required),
46-
topMemoStructure: new FormControl(advancedSettings?.top_level_memo_structure && advancedSettings?.top_level_memo_structure.length > 0 ? advancedSettings?.top_level_memo_structure : this.defaultTopMemoOptions(), Validators.required),
55+
topMemoStructure: new FormControl(advancedSettings?.top_level_memo_structure && advancedSettings?.top_level_memo_structure.length > 0 ? this.topMemoExpenseKeyNameConversion(advancedSettings?.top_level_memo_structure) : this.defaultTopMemoOptions(), Validators.required),
4756
exportSchedule: new FormControl(advancedSettings?.schedule_is_enabled ? advancedSettings?.schedule_is_enabled : false),
4857
email: new FormControl(advancedSettings?.emails_selected ? advancedSettings?.emails_selected : null),
4958
exportScheduleFrequency: new FormControl(advancedSettings?.schedule_is_enabled ? advancedSettings?.interval_hours : 1),

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,8 @@ export class QbdDirectExportSettingModel extends ExportSettingModel {
174174
return form.controls.creditCardExportType.value === QBDCorporateCreditCardExpensesObject.JOURNAL_ENTRY;
175175
case 'defaultCreditCardAccountName':
176176
return form.controls.creditCardExportType.value === QBDCorporateCreditCardExpensesObject.CREDIT_CARD_PURCHASE;
177+
case 'employeeMapping':
178+
return !form.get('reimbursableExportType')?.value && form.get('creditCardExportType')?.value && form.get('creditCardExportType')?.value === QBDCorporateCreditCardExpensesObject.JOURNAL_ENTRY;
177179
default:
178180
return false;
179181
}
@@ -182,23 +184,23 @@ export class QbdDirectExportSettingModel extends ExportSettingModel {
182184
static getValidators(): [ExportSettingValidatorRule, ExportModuleRule[]] {
183185

184186
const exportSettingValidatorRule: ExportSettingValidatorRule = {
185-
reimbursableExpense: ['reimbursableExportType', 'reimbursableExportGroup', 'reimbursableExportDate', 'reimbursableExpenseState', 'employeeMapping'],
187+
reimbursableExpense: ['reimbursableExportType', 'reimbursableExportGroup', 'reimbursableExportDate', 'reimbursableExpenseState'],
186188
creditCardExpense: ['creditCardExportType', 'creditCardExportGroup', 'creditCardExportDate', 'creditCardExpenseState']
187189
};
188190

189191
const exportModuleRule: ExportModuleRule[] = [
190192
{
191193
formController: 'reimbursableExportType',
192194
requiredValue: {
193-
[QbdDirectReimbursableExpensesObject.BILL]: [],
194-
[QbdDirectReimbursableExpensesObject.JOURNAL_ENTRY]: ['defaultReimbursableAccountsPayableAccountName']
195+
[QbdDirectReimbursableExpensesObject.BILL]: ['employeeMapping'],
196+
[QbdDirectReimbursableExpensesObject.JOURNAL_ENTRY]: ['defaultReimbursableAccountsPayableAccountName', 'employeeMapping']
195197
}
196198
},
197199
{
198200
formController: 'creditCardExportType',
199201
requiredValue: {
200202
[QBDCorporateCreditCardExpensesObject.CREDIT_CARD_PURCHASE]: ['defaultCreditCardAccountName'],
201-
[QBDCorporateCreditCardExpensesObject.JOURNAL_ENTRY]: ['defaultCCCAccountsPayableAccountName', 'nameInJE']
203+
[QBDCorporateCreditCardExpensesObject.JOURNAL_ENTRY]: ['defaultCCCAccountsPayableAccountName', 'nameInJE', 'employeeMapping']
202204
}
203205
}
204206
];

src/app/core/services/common/dashboard.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export class DashboardService {
5858
}
5959

6060
if (expenseGroupIds.length) {
61-
const expenseKey = appName === AppName.INTACCT ? 'expense_group_ids' : appName === AppName.QBD_DIRECT ? 'export_log__id' : 'expense_group_id__in';
61+
const expenseKey = appName === AppName.INTACCT ? 'expense_group_ids' : appName === AppName.QBD_DIRECT ? 'export_log__id__in' : 'expense_group_id__in';
6262
apiParams[expenseKey] = expenseGroupIds;
6363
}
6464

src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-dashboard/qbd-direct-dashboard.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
[isImportItemsEnabled]="isImportItemsEnabled"
4444
[destinationOptionsVersion]="'v1'"
4545
[importCodeFields]="importCodeFields"
46+
[chartOfAccounts]="chartOfAccounts"
4647
[errorsVersion]="'v1'">
4748
</app-dashboard-error-section>
4849
</div>

src/app/integrations/qbd-direct/qbd-direct-main/qbd-direct-dashboard/qbd-direct-dashboard.component.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ export class QbdDirectDashboardComponent implements OnInit {
7878

7979
importCodeFields: any;
8080

81+
chartOfAccounts: string[];
82+
8183
constructor(
8284
private accountingExportService: AccountingExportService,
8385
private dashboardService: DashboardService,
@@ -151,6 +153,8 @@ export class QbdDirectDashboardComponent implements OnInit {
151153

152154
this.importCodeFields = responses[5].import_settings?.import_code_fields;
153155

156+
this.chartOfAccounts = responses[5].import_settings.chart_of_accounts;
157+
154158
const queuedTasks: QbdDirectTaskLog[] = responses[2].results.filter((task: QbdDirectTaskLog) => this.exportLogProcessingStates.includes(task.status));
155159
this.failedExpenseGroupCount = responses[2].results.filter((task: QbdDirectTaskLog) => task.status === TaskLogState.FAILED || task.status === TaskLogState.FATAL).length;
156160

src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-export-settings/qbd-direct-export-settings.component.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141
[showExportPreview]="false">
142142
</app-configuration-select-field>
143143

144-
<div *ngIf="!exportSettingsForm.get('reimbursableExpense')?.value && exportSettingsForm.get('creditCardExportType')?.value && exportSettingsForm.get('creditCardExportType')?.value === QBDCorporateCreditCardExpensesObject.JOURNAL_ENTRY">
144+
<div *ngIf="exportSettingsForm.get('creditCardExportType')?.value && helperService.isFieldRequired(exportSettingsForm, 'employeeMapping')">
145145
<app-configuration-select-field
146146
[form]="exportSettingsForm"
147147
[isFieldMandatory]="true"
@@ -174,7 +174,7 @@
174174
<div *ngIf="exportSettingsForm.get('creditCardExportType')?.value && helperService.isFieldRequired(exportSettingsForm, 'defaultCreditCardAccountName')">
175175
<app-configuration-select-field
176176
[form]="exportSettingsForm"
177-
[destinationAttributes]="cccAccpuntOptions(exportSettingsForm.get('creditCardExportType')?.value)"
177+
[destinationAttributes]="cccAccountOptions(exportSettingsForm.get('creditCardExportType')?.value)"
178178
[destinationOptionKey]="QbdDirectExportSettingDestinationOptionKey.CREDIT_CARD_ACCOUNT"
179179
[isOptionSearchInProgress]="isOptionSearchInProgress"
180180
[isAdvanceSearchEnabled]="true"
@@ -194,7 +194,7 @@
194194
<div *ngIf="helperService.isFieldRequired(exportSettingsForm, 'defaultCCCAccountsPayableAccountName')">
195195
<app-configuration-select-field
196196
[form]="exportSettingsForm"
197-
[destinationAttributes]="destinationOptionsWatcher(['AccountsPayable'] , destinationAccounts)"
197+
[destinationAttributes]="cccAccountOptions(exportSettingsForm.get('creditCardExportType')?.value)"
198198
[destinationOptionKey]="QbdDirectExportSettingDestinationOptionKey.ACCOUNTS_PAYABLE"
199199
[isOptionSearchInProgress]="isOptionSearchInProgress"
200200
[isAdvanceSearchEnabled]="true"

src/app/integrations/qbd-direct/qbd-direct-shared/qbd-direct-export-settings/qbd-direct-export-settings.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ export class QbdDirectExportSettingsComponent implements OnInit{
108108
return this.destinationOptionsWatcher(['Bank', 'AccountsPayable', 'CreditCard', 'OtherCurrentLiability', 'LongTermLiability'], this.destinationAccounts);
109109
}
110110

111-
cccAccpuntOptions(cccExportType: string): DestinationAttribute[] {
111+
cccAccountOptions(cccExportType: string): DestinationAttribute[] {
112112
if (cccExportType === QBDCorporateCreditCardExpensesObject.CREDIT_CARD_PURCHASE) {
113113
return this.destinationOptionsWatcher(['CreditCard'], this.destinationAccounts);
114114
} else if (cccExportType === QBDCorporateCreditCardExpensesObject.JOURNAL_ENTRY && this.exportSettingsForm.controls.employeeMapping.value === EmployeeFieldMapping.EMPLOYEE && this.exportSettingsForm.controls.nameInJE.value === EmployeeFieldMapping.EMPLOYEE) {
@@ -182,7 +182,7 @@ export class QbdDirectExportSettingsComponent implements OnInit{
182182

183183
cccExportTypeWatcher(): void {
184184
this.exportSettingsForm.controls.creditCardExportType.valueChanges.subscribe((creditCardExportTypeValue) => {
185-
this.exportSettingsForm.controls.creditCardExportGroup.patchValue(this.creditCardExpenseGroupingFieldOptions[1].value);
185+
this.exportSettingsForm.controls.creditCardExportGroup.patchValue(QbdDirectExportSettingModel.expenseGroupingFieldOptions()[1].value);
186186
this.exportSettingsForm.controls.creditCardExportGroup.disable();
187187
this.creditCardExpenseGroupingFieldOptions = [QbdDirectExportSettingModel.expenseGroupingFieldOptions()[1]];
188188
});

0 commit comments

Comments
 (0)