From 7110f3aaa11edb00f2b89d1b210781f23ed2bd48 Mon Sep 17 00:00:00 2001 From: DhaaraniCIT Date: Wed, 5 Feb 2025 12:46:43 +0530 Subject: [PATCH] poc for date grouping --- .../models/common/export-settings.model.ts | 73 +++++++++++++++++++ .../qbo-export-settings.component.ts | 25 +++---- 2 files changed, 84 insertions(+), 14 deletions(-) diff --git a/src/app/core/models/common/export-settings.model.ts b/src/app/core/models/common/export-settings.model.ts index eb103cfcb..af25625d8 100644 --- a/src/app/core/models/common/export-settings.model.ts +++ b/src/app/core/models/common/export-settings.model.ts @@ -1,3 +1,4 @@ +import { brandingContent } from "src/app/branding/branding-config"; import { DefaultDestinationAttribute, DestinationAttribute } from "../db/destination-attribute.model"; import { DestinationOptionKey, ExpenseGroupingFieldOption, ExportDateType, IntacctCorporateCreditCardExpensesObject, IntacctExportSettingDestinationOptionKey, IntacctReimbursableExpensesObject, NetsuiteExportSettingDestinationOptionKey, QboExportSettingDestinationOptionKey, SplitExpenseGrouping } from "../enum/enum.model"; import { SelectFormOption } from "./select-form-option.model"; @@ -87,6 +88,78 @@ export class ExportSettingModel { } + static getCreditCardExpenseGroupingDateOptions(): SelectFormOption[] { + return [ + { + label: 'Card Transaction Post Date', + value: ExportDateType.POSTED_AT + }, + { + label: 'Spend date', + value: ExportDateType.SPENT_AT + }, + { + label: 'Last Spend date', + value: ExportDateType.LAST_SPENT_AT + }, + { + label: brandingContent.common.currentDate, + value: ExportDateType.CURRENT_DATE + } + ]; + } + + static getReimbursableExpenseGroupingDateOption(): SelectFormOption[] { + return [ + { + label: brandingContent.common.currentDate, + value: ExportDateType.CURRENT_DATE + }, + { + label: 'Verification date', + value: ExportDateType.VERIFIED_AT + }, + { + label: 'Spend date', + value: ExportDateType.SPENT_AT + }, + { + label: 'Approval date', + value: ExportDateType.APPROVED_AT + }, + { + label: 'Last Spend date', + value: ExportDateType.LAST_SPENT_AT + } + ]; + } + + static dateGrouping(exportType:string, expenseGrouping: string, showApprovedDate: boolean, showVerificationDate: boolean): SelectFormOption[] { + + const excludedDate = expenseGrouping === 'expense' + ? ExportDateType.LAST_SPENT_AT + : ExportDateType.SPENT_AT; + + if (exportType === 'CCC') { + return this.getCreditCardExpenseGroupingDateOptions().filter(option => option.value !== excludedDate); + } + + let dateOptions = this.getReimbursableExpenseGroupingDateOption(); + let filterOptions: ExportDateType[] = []; + + if (showApprovedDate) { + filterOptions.push(ExportDateType.VERIFIED_AT); + } else if (showVerificationDate) { + filterOptions.push(ExportDateType.APPROVED_AT); + } + + filterOptions.push(excludedDate); + + return dateOptions.filter((item): item is { label: string; value: ExportDateType } => + item.value !== null && !filterOptions.includes(item.value as ExportDateType)) + + } + static filterDateOptions(exportDateType: ExportDateType, dateOptions: SelectFormOption[]){ const dateOptionToRemove = exportDateType; const filteredOptions = dateOptions.filter(option => option.value !== dateOptionToRemove); diff --git a/src/app/integrations/qbo/qbo-shared/qbo-export-settings/qbo-export-settings.component.ts b/src/app/integrations/qbo/qbo-shared/qbo-export-settings/qbo-export-settings.component.ts index 6b4763137..97ef274b0 100644 --- a/src/app/integrations/qbo/qbo-shared/qbo-export-settings/qbo-export-settings.component.ts +++ b/src/app/integrations/qbo/qbo-shared/qbo-export-settings/qbo-export-settings.component.ts @@ -312,17 +312,12 @@ export class QboExportSettingsComponent implements OnInit { private updateCCCExpenseGroupingDateOptions(selectedValue: QBOCorporateCreditCardExpensesObject): void { if ([QBOCorporateCreditCardExpensesObject.CREDIT_CARD_PURCHASE, QBOCorporateCreditCardExpensesObject.DEBIT_CARD_EXPENSE].includes(selectedValue)) { - this.cccExpenseGroupingDateOptions = QBOExportSettingModel.getAdditionalCreditCardExpenseGroupingDateOptions(); - if (selectedValue === QBOCorporateCreditCardExpensesObject.CREDIT_CARD_PURCHASE) { - this.cccExpenseGroupingDateOptions.push({ - label: brandingContent.common.currentDate, - value: ExportDateType.CURRENT_DATE - }); - } this.exportSettingForm.controls.creditCardExportGroup.setValue(ExpenseGroupingFieldOption.EXPENSE_ID); this.exportSettingForm.controls.creditCardExportGroup.disable(); + + this.cccExpenseGroupingDateOptions = ExportSettingModel.dateGrouping('CCC', this.exportSettingForm.controls.creditCardExportGroup.value, false, false); } else { - this.cccExpenseGroupingDateOptions = this.reimbursableExpenseGroupingDateOptions.concat(); + this.cccExpenseGroupingDateOptions = ExportSettingModel.dateGrouping('rem', this.exportSettingForm.controls.creditCardExportGroup.value, false, false); this.helperService.enableFormField(this.exportSettingForm, 'creditCardExportGroup'); } const allowedValues = this.cccExpenseGroupingDateOptions.map(option => option.value); @@ -346,19 +341,21 @@ export class QboExportSettingsComponent implements OnInit { private setupCustomDateOptionWatchers(): void { this.exportSettingForm.controls.reimbursableExportGroup?.valueChanges.subscribe((reimbursableExportGroup) => { - this.reimbursableExpenseGroupingDateOptions = QBOExportSettingModel.getReimbursableExpenseGroupingDateOptions(); - this.reimbursableExpenseGroupingDateOptions = ExportSettingModel.constructGroupingDateOptions(reimbursableExportGroup, this.reimbursableExpenseGroupingDateOptions); + // this.reimbursableExpenseGroupingDateOptions = QBOExportSettingModel.getReimbursableExpenseGroupingDateOptions(); + // this.reimbursableExpenseGroupingDateOptions = ExportSettingModel.constructGroupingDateOptions(reimbursableExportGroup, this.reimbursableExpenseGroupingDateOptions); + this.reimbursableExpenseGroupingDateOptions = ExportSettingModel.dateGrouping('rem', this.exportSettingForm.controls.reimbursableExportGroup.value, true, false) }); this.exportSettingForm.controls.creditCardExportType?.valueChanges.subscribe(creditCardExportType => { - this.updateCCCExpenseGroupingDateOptions(this.exportSettingForm.get('creditCardExportType')?.value); + this.updateCCCExpenseGroupingDateOptions(creditCardExportType); }); this.exportSettingForm.controls.creditCardExportGroup?.valueChanges.subscribe((creditCardExportGroup) => { - if (brandingConfig.brandId==='fyle' && this.exportSettingForm.get('creditCardExportType')?.value && this.exportSettingForm.get('creditCardExportType')?.value !== QBOCorporateCreditCardExpensesObject.CREDIT_CARD_PURCHASE && this.exportSettingForm.get('creditCardExportType')?.value !== QBOCorporateCreditCardExpensesObject.DEBIT_CARD_EXPENSE) { - this.cccExpenseGroupingDateOptions = QBOExportSettingModel.getReimbursableExpenseGroupingDateOptions(); - this.cccExpenseGroupingDateOptions = ExportSettingModel.constructGroupingDateOptions(creditCardExportGroup, this.cccExpenseGroupingDateOptions); + if (this.exportSettingForm.get('creditCardExportType')?.value && this.exportSettingForm.get('creditCardExportType')?.value !== QBOCorporateCreditCardExpensesObject.CREDIT_CARD_PURCHASE && this.exportSettingForm.get('creditCardExportType')?.value !== QBOCorporateCreditCardExpensesObject.DEBIT_CARD_EXPENSE) { + // // this.cccExpenseGroupingDateOptions = QBOExportSettingModel.getReimbursableExpenseGroupingDateOptions(); + // // this.cccExpenseGroupingDateOptions = ExportSettingModel.constructGroupingDateOptions(creditCardExportGroup, this.cccExpenseGroupingDateOptions); + this.cccExpenseGroupingDateOptions = ExportSettingModel.dateGrouping('rem', creditCardExportGroup, true, false) } }); }