diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index a02c4248f..aac5b2ca2 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -219,12 +219,12 @@ export class ImportActivitiesService { item: any; }) { item = this.lowercaseKeys(item); + for (const key of ImportActivitiesService.DATE_KEYS) { if (item[key]) { - const parsedDate = parseDateHelper(item[key]); - if (parsedDate !== null) { - return parsedDate.toISOString(); - } + try { + return parseDateHelper(item[key].toString()).toISOString(); + } catch {} } } diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index 6d92619da..04e443bc5 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -292,44 +292,34 @@ export const DATE_FORMAT = 'yyyy-MM-dd'; export const DATE_FORMAT_MONTHLY = 'MMMM yyyy'; export const DATE_FORMAT_YEARLY = 'yyyy'; -// Define the supported date format patterns -const DATE_FORMATS = [ - 'dd-MM-yyyy', - 'dd/MM/yyyy', - 'dd.MM.yyyy', - 'yyyy-MM-dd', - 'yyyy.MM.dd', - 'yyyy/MM/dd', - 'yyyyMMdd' -]; - -// Helper function to parse a date string export function parseDate(date: string): Date | null { // Transform 'yyyyMMdd' format to supported format by parse function - if (`${date}`.length === 8) { - date = date.toString(); + if (date.length === 8) { const match = date.match(/^(\d{4})(\d{2})(\d{2})$/); + if (match) { const [, year, month, day] = match; date = `${year}-${month}-${day}`; } } - const matchingFormat = DATE_FORMATS.find( - (format) => isMatch(date, format) && date.length === format.length - ); + const dateFormat = [ + 'dd-MM-yyyy', + 'dd/MM/yyyy', + 'dd.MM.yyyy', + 'yyyy-MM-dd', + 'yyyy/MM/dd', + 'yyyy.MM.dd', + 'yyyyMMdd' + ].find((format) => { + return isMatch(date, format) && format.length === date.length; + }); - if (matchingFormat) { - return parse(date, matchingFormat, new Date()); + if (dateFormat) { + return parse(date, dateFormat, new Date()); } - try { - return parseISO(date); - } catch (error) { - console.error(`Error parsing date: ${error}`); - // Return null to indicate parsing failure - return null; - } + return parseISO(date); } export function prettifySymbol(aSymbol: string): string { diff --git a/test/import/ok.csv b/test/import/ok.csv index 7709afafb..732ab4699 100644 --- a/test/import/ok.csv +++ b/test/import/ok.csv @@ -1,12 +1,5 @@ Date,Code,Currency,Price,Quantity,Action,Fee +16-09-2021,MSFT,USD,298.580,5,buy,19.00 17/11/2021,MSFT,USD,0.62,5,dividend,0.00 -16/09/2021,MSFT,USD,298.580,5,buy,19.00 -01/01/2022,Penthouse Apartment,USD,500000.0,1,item,0.00 -06/06/2050,MSFT,USD,0.00,0,buy,0.00 -01-02-2021,MSFT,USD,3.15,5,dividend,0.00 -02/03/2021,AAPL,USD,210.581,5,buy,30.00 -03.04.2022,Small Apartment,USD,205000.0,1,item,0.00 -2040-02-01,MSFT,USD,0.00,0,buy,0.00 -2040/03/02,AAPL,USD,100.00,0,buy,2.00 -2040.04.03,MSFT,USD,62.00,0,buy,3.00 -11110202,AAPL,USD,5.20,0,buy,20.00 +01.01.2022,Penthouse Apartment,USD,500000.0,1,item,0.00 +20500606,MSFT,USD,0.00,0,buy,0.00