Browse Source

Merge remote-tracking branch 'upstream/main' into bugfix/average-unit-price-line-alignment

# Conflicts:
#	CHANGELOG.md
pull/7937/head
GabeSilvaDev 1 week ago
parent
commit
f201fad46d
  1. 4
      CHANGELOG.md
  2. 1
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  3. 12
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
  4. 16
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
  5. 2
      libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/interfaces/interfaces.ts
  6. 4
      libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
  7. 4
      package-lock.json
  8. 2
      package.json

4
CHANGELOG.md

@ -9,9 +9,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Fixed the visibility of the asset class, asset sub class, fee and quantity fields of a valuable in the create activity dialog
- Fixed the missing mapping for Aland Islands in the country weightings of the _Financial Modeling Prep_ service
- Fixed the alignment of the average price in the chart of the holding detail dialog for custom asset profiles
## 3.80.1 - 2026-10-05
## 3.80.2 - 2026-10-06
### Added

1
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -54,6 +54,7 @@ export class FinancialModelingPrepService
implements DataProviderInterface, OnModuleInit
{
private static countriesMapping = {
'Aland Islands': 'AX',
'Congo (Dem. Rep. of the)': 'CD',
'Congo (Rep. of)': 'CG',
'Czech Republic': 'CZ',

12
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts

@ -488,10 +488,18 @@ export class GfCreateOrUpdateActivityDialogComponent {
}
protected async onSubmit() {
const isAssetClassApplicable =
this.activityForm.get('type')?.value === 'VALUABLE' ||
this.mode === 'update';
const activity: CreateOrderDto | UpdateOrderDto = {
accountId: this.activityForm.get('accountId')?.value,
assetClass: this.activityForm.get('assetClass')?.value,
assetSubClass: this.activityForm.get('assetSubClass')?.value,
assetClass: isAssetClassApplicable
? this.activityForm.get('assetClass')?.value
: undefined,
assetSubClass: isAssetClassApplicable
? this.activityForm.get('assetSubClass')?.value
: undefined,
comment: getStringOrNull(this.activityForm.get('comment')?.value),
currency: this.activityForm.get('currency')?.value,
customCurrency: this.activityForm.get('currencyOfUnitPrice')?.value,

16
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html

@ -157,8 +157,8 @@
[class.d-none]="
activityForm.get('type')?.value === 'FEE' ||
activityForm.get('type')?.value === 'INTEREST' ||
activityForm.get('type')?.value === 'ITEM' ||
activityForm.get('type')?.value === 'LIABILITY'
activityForm.get('type')?.value === 'LIABILITY' ||
activityForm.get('type')?.value === 'VALUABLE'
"
>
<mat-form-field appearance="outline" class="w-100">
@ -180,10 +180,10 @@
@case ('INTEREST') {
<ng-container i18n>Value</ng-container>
}
@case ('ITEM') {
@case ('LIABILITY') {
<ng-container i18n>Value</ng-container>
}
@case ('LIABILITY') {
@case ('VALUABLE') {
<ng-container i18n>Value</ng-container>
}
@default {
@ -231,8 +231,8 @@
class="mb-3"
[class.d-none]="
activityForm.get('type')?.value === 'INTEREST' ||
activityForm.get('type')?.value === 'ITEM' ||
activityForm.get('type')?.value === 'LIABILITY'
activityForm.get('type')?.value === 'LIABILITY' ||
activityForm.get('type')?.value === 'VALUABLE'
"
>
<mat-form-field appearance="outline" class="w-100">
@ -262,7 +262,7 @@
</div>
<div
class="mb-3"
[class.d-none]="activityForm.get('type')?.value !== 'ITEM'"
[class.d-none]="activityForm.get('type')?.value !== 'VALUABLE'"
>
<mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Asset Class</mat-label>
@ -281,7 +281,7 @@
</div>
<div
class="mb-3"
[class.d-none]="activityForm.get('type')?.value !== 'ITEM'"
[class.d-none]="activityForm.get('type')?.value !== 'VALUABLE'"
>
<mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Asset Sub Class</mat-label>

2
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/interfaces/interfaces.ts

@ -2,7 +2,7 @@ import { User } from '@ghostfolio/common/interfaces';
import { DataSource } from '@ghostfolio/prisma/enums';
export interface HistoricalMarketDataEditorDialogParams {
currency: string;
currency?: string;
dataSource: DataSource;
dateString: string;
marketPrice?: number;

4
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts

@ -66,9 +66,9 @@ export class GfHistoricalMarketDataEditorComponent
DATE_FORMAT
)};123.45`;
@Input() currency: string;
@Input() currency?: string;
@Input() dataSource: DataSource;
@Input() dateOfFirstActivity: Date;
@Input() dateOfFirstActivity?: Date;
@Input() symbol: string;
@Input() user: User;

4
package-lock.json

@ -1,12 +1,12 @@
{
"name": "ghostfolio",
"version": "3.80.1",
"version": "3.80.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ghostfolio",
"version": "3.80.1",
"version": "3.80.2",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {

2
package.json

@ -1,6 +1,6 @@
{
"name": "ghostfolio",
"version": "3.80.1",
"version": "3.80.2",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",

Loading…
Cancel
Save