diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index f84f085a35..2098062340 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -37,11 +37,26 @@ export class AccountService { public async account({ id_userId }: Prisma.AccountWhereUniqueInput): Promise { - const [account] = await this.accounts({ - where: id_userId + const account = await this.prismaService.account.findUnique({ + include: { + balances: { + orderBy: { date: 'desc' }, + take: 1 + } + }, + where: { id_userId } }); - return account; + if (!account) { + return null; + } + + const { balances, ...accountData } = account; + + return { + ...accountData, + balance: balances[0]?.value ?? 0 + }; } public async accountWithActivities( diff --git a/apps/api/src/app/activities/activities.service.ts b/apps/api/src/app/activities/activities.service.ts index 459293abdd..fbe93d9a07 100644 --- a/apps/api/src/app/activities/activities.service.ts +++ b/apps/api/src/app/activities/activities.service.ts @@ -275,7 +275,7 @@ export class ActivitiesService { include: { SymbolProfile: true } }); - if (updateAccountBalance === true) { + if (accountId && updateAccountBalance === true) { let amount = new Big(data.unitPrice).mul(data.quantity); if (['BUY', 'FEE'].includes(data.type)) { diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index 10bc7ccc83..e79c508687 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -265,14 +265,14 @@ export class GfCreateOrUpdateActivityDialogComponent { this.activityForm.get('currency')?.setValue(currency); this.activityForm.get('currencyOfUnitPrice')?.setValue(currency); + } - if (['FEE', 'INTEREST'].includes(type)) { - if (this.activityForm.get('accountId')?.value) { - this.activityForm.get('updateAccountBalance')?.enable(); - } else { - this.activityForm.get('updateAccountBalance')?.disable(); - this.activityForm.get('updateAccountBalance')?.setValue(false); - } + if (!['LIABILITY', 'VALUABLE'].includes(type)) { + if (accountId) { + this.activityForm.get('updateAccountBalance')?.enable(); + } else { + this.activityForm.get('updateAccountBalance')?.disable(); + this.activityForm.get('updateAccountBalance')?.setValue(false); } } }); @@ -298,7 +298,10 @@ export class GfCreateOrUpdateActivityDialogComponent { }); this.activityForm.get('date')?.valueChanges.subscribe(() => { - if (isToday(this.activityForm.get('date')?.value)) { + if ( + isToday(this.activityForm.get('date')?.value) && + this.activityForm.get('accountId')?.value + ) { this.activityForm.get('updateAccountBalance')?.enable(); } else { this.activityForm.get('updateAccountBalance')?.disable(); @@ -441,7 +444,13 @@ export class GfCreateOrUpdateActivityDialogComponent { .get('searchSymbol') ?.setValidators(Validators.required); this.activityForm.get('searchSymbol')?.updateValueAndValidity(); - this.activityForm.get('updateAccountBalance')?.enable(); + + if (this.activityForm.get('accountId')?.value) { + this.activityForm.get('updateAccountBalance')?.enable(); + } else { + this.activityForm.get('updateAccountBalance')?.disable(); + this.activityForm.get('updateAccountBalance')?.setValue(false); + } } this.changeDetectorRef.markForCheck();