mirror of https://github.com/ghostfolio/ghostfolio
Browse Source
Root Causes
Issue 1: Import Validation Failure
- The validateActivities() method (called at apps/api/src/app/import/import.service.ts#L374) validates activities before
asset profiles from the import file are created in the database (apps/api/src/app/import/import.service.ts#L245)
- For MANUAL data source, ManualService.getAssetProfile() queries the database, which returns undefined for new profiles
- Validation at apps/api/src/app/import/import.service.ts#L774 requires assetProfile.name to exist, causing import to fail
Issue 2: Empty Name Column
- Even if validation passes, the validateActivities() method only checked for the existence of the name but didn't populate
it from the import data
- The asset profile object used for display lacked the complete profile information from the import file
Solution
Modified apps/api/src/app/import/import.service.ts:
1. Pass import data to validation (apps/api/src/app/import/import.service.ts#L376)
- Added assetProfilesWithMarketDataDto parameter to validateActivities() call
2. Check import data during validation (apps/api/src/app/import/import.service.ts#L755)
- When asset profile doesn't exist in database (no name), check if it exists in import data
- If found in import data, merge all asset profile fields (name, currency, assetClass, etc.) into the validation object
- This ensures the name and other fields are available for display in the UI
3. Maintain validation rules (apps/api/src/app/import/import.service.ts#L788)
- Keep existing validation that requires name for non-MANUAL BUY, DIVIDEND, and SELL activities
- Separate the data population logic from validation logic
pull/5670/head
committed by
Thomas Kaul
2 changed files with 87 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||||
|
{ |
||||
|
"meta": { |
||||
|
"date": "2023-02-05T00:00:00.000Z", |
||||
|
"version": "dev" |
||||
|
}, |
||||
|
"accounts": [], |
||||
|
"assetProfiles": [ |
||||
|
{ |
||||
|
"assetClass": null, |
||||
|
"assetSubClass": null, |
||||
|
"comment": null, |
||||
|
"countries": [], |
||||
|
"currency": "USD", |
||||
|
"cusip": null, |
||||
|
"dataSource": "MANUAL", |
||||
|
"figi": null, |
||||
|
"figiComposite": null, |
||||
|
"figiShareClass": null, |
||||
|
"holdings": [], |
||||
|
"isActive": true, |
||||
|
"isin": null, |
||||
|
"marketData": [], |
||||
|
"name": "Penthouse Apartment", |
||||
|
"scraperConfiguration": null, |
||||
|
"sectors": [], |
||||
|
"symbol": "7e91b7d4-1430-4212-8380-289a06c9bbc1", |
||||
|
"symbolMapping": {}, |
||||
|
"url": null |
||||
|
} |
||||
|
], |
||||
|
"platforms": [], |
||||
|
"tags": [], |
||||
|
"activities": [ |
||||
|
{ |
||||
|
"accountId": null, |
||||
|
"comment": null, |
||||
|
"fee": 0, |
||||
|
"quantity": 1, |
||||
|
"type": "BUY", |
||||
|
"unitPrice": 500000, |
||||
|
"currency": "USD", |
||||
|
"dataSource": "MANUAL", |
||||
|
"date": "2022-01-01T00:00:00.000Z", |
||||
|
"symbol": "7e91b7d4-1430-4212-8380-289a06c9bbc1", |
||||
|
"tags": [] |
||||
|
} |
||||
|
], |
||||
|
"user": { |
||||
|
"settings": { |
||||
|
"currency": "USD" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue