diff --git a/src/views/desktop/transactions/import/tabs/ImportTransactionDefineColumnTab.vue b/src/views/desktop/transactions/import/tabs/ImportTransactionDefineColumnTab.vue index 7711b3d8..d2ce3203 100644 --- a/src/views/desktop/transactions/import/tabs/ImportTransactionDefineColumnTab.vue +++ b/src/views/desktop/transactions/import/tabs/ImportTransactionDefineColumnTab.vue @@ -27,7 +27,7 @@ + @click="toggleDataMappingColumn(parseInt(column.key), columnType.type)"> {{ columnType.displayName }} @@ -228,7 +228,7 @@ import { ref, computed, useTemplateRef, watch } from 'vue'; import { useI18n } from '@/locales/helpers.ts'; -import { type NameValue, type NameNumeralValue, type TypeAndDisplayName, itemAndIndex, entries } from '@/core/base.ts'; +import { type NameValue, type NameNumeralValue, type TypeAndDisplayName, itemAndIndex, keys, entries } from '@/core/base.ts'; import { type NumeralSystem, KnownAmountFormat } from '@/core/numeral.ts'; import { type DateFormatOrder, KnownDateTimeFormat } from '@/core/datetime.ts'; import { KnownDateTimezoneFormat } from '@/core/timezone.ts'; @@ -492,6 +492,26 @@ function getParseDataMappedColumnDisplayName(columnIndex: number): string { return tt('Unspecified'); } +function toggleDataMappingColumn(columnIndex: number, columnType: number): void { + parsedFileDataColumnMapping.value.toggleDataMappingColumn(columnIndex, columnType); + + if (columnType === ImportTransactionColumnType.TransactionType.type) { + if (!parsedFileDataColumnMapping.value.isColumnMappingSet(ImportTransactionColumnType.TransactionType)) { + parsedFileDataColumnMapping.value.transactionTypeMapping = {}; + } else { + const allTransactionTypes = parsedFileAllTransactionTypes.value; + + for (const transactionTypeName of keys(parsedFileDataColumnMapping.value.transactionTypeMapping)) { + if (!allTransactionTypes.includes(transactionTypeName)) { + delete parsedFileDataColumnMapping.value.transactionTypeMapping[transactionTypeName]; + } + } + } + + autoSetTransactionTypeMapping(); + } +} + function autoSetColumnMapping(): void { if (!props.parsedFileData) { return;