Browse Source

Apply feedback

- Move short-form property assignments to top of objects (style consistency)                                                                                                    │
- Improve CHANGELOG entry description                                                                                                                                           │
- Use destructuring for importCsv return value                                                                                                                                  │
- Move comment inside if block for better context                                                                                                                               │
pull/5749/head
Sven Günther 3 weeks ago
parent
commit
2b29d85f1f
  1. 2
      CHANGELOG.md
  2. 19
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
  3. 12
      apps/client/src/app/services/import-activities.service.ts

2
CHANGELOG.md

@ -19,7 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Import of activity with MANUAL data source fails for CSV file
- Fixed an issue in the `csv` file import where custom asset profiles failed due to validation errors
## 2.208.0 - 2025-10-11

19
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts

@ -360,16 +360,17 @@ export class GfImportActivitiesDialogComponent implements OnDestroy {
const content = fileContent.split('\n').slice(1);
try {
const data = await this.importActivitiesService.importCsv({
fileContent,
isDryRun: true,
userAccounts: this.data.user.accounts
});
this.activities = data.activities;
this.assetProfiles = data.assetProfiles;
this.dataSource = new MatTableDataSource(data.activities.reverse());
const { activities, assetProfiles } =
await this.importActivitiesService.importCsv({
fileContent,
isDryRun: true,
userAccounts: this.data.user.accounts
});
this.activities = activities;
this.assetProfiles = assetProfiles;
this.dataSource = new MatTableDataSource(activities.reverse());
this.pageIndex = 0;
this.totalItems = data.activities.length;
this.totalItems = activities.length;
} catch (error) {
console.error(error);
this.handleImportError({

12
apps/client/src/app/services/import-activities.service.ts

@ -62,27 +62,28 @@ export class ImportActivitiesService {
const currency = this.parseCurrency({ content, index, item });
activities.push({
accountId: this.parseAccount({ item, userAccounts }),
comment: this.parseComment({ item }),
currency,
dataSource,
symbol,
accountId: this.parseAccount({ item, userAccounts }),
comment: this.parseComment({ item }),
date: this.parseDate({ content, index, item }),
fee: this.parseFee({ content, index, item }),
quantity: this.parseQuantity({ content, index, item }),
symbol,
type: this.parseType({ content, index, item }),
unitPrice: this.parseUnitPrice({ content, index, item }),
updateAccountBalance: false
});
// Create synthetic asset profile for MANUAL data source
if (dataSource === DataSource.MANUAL) {
// Create synthetic asset profile for MANUAL data source
assetProfiles.push({
currency,
symbol,
assetClass: null,
assetSubClass: null,
comment: null,
countries: [],
currency,
cusip: null,
dataSource: DataSource.MANUAL,
figi: null,
@ -95,7 +96,6 @@ export class ImportActivitiesService {
name: symbol,
scraperConfiguration: null,
sectors: [],
symbol,
symbolMapping: {},
url: null
});

Loading…
Cancel
Save