Browse Source

Fix update account balance of activity without account

pull/7402/head
Thomas Kaul 1 month ago
parent
commit
f54af84748
  1. 21
      apps/api/src/app/account/account.service.ts
  2. 2
      apps/api/src/app/activities/activities.service.ts
  3. 17
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts

21
apps/api/src/app/account/account.service.ts

@ -37,11 +37,26 @@ export class AccountService {
public async account({ public async account({
id_userId id_userId
}: Prisma.AccountWhereUniqueInput): Promise<Account | null> { }: Prisma.AccountWhereUniqueInput): Promise<Account | null> {
const [account] = await this.accounts({ const account = await this.prismaService.account.findUnique({
where: id_userId 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( public async accountWithActivities(

2
apps/api/src/app/activities/activities.service.ts

@ -275,7 +275,7 @@ export class ActivitiesService {
include: { SymbolProfile: true } include: { SymbolProfile: true }
}); });
if (updateAccountBalance === true) { if (accountId && updateAccountBalance === true) {
let amount = new Big(data.unitPrice).mul(data.quantity); let amount = new Big(data.unitPrice).mul(data.quantity);
if (['BUY', 'FEE'].includes(data.type)) { if (['BUY', 'FEE'].includes(data.type)) {

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

@ -265,16 +265,16 @@ export class GfCreateOrUpdateActivityDialogComponent {
this.activityForm.get('currency')?.setValue(currency); this.activityForm.get('currency')?.setValue(currency);
this.activityForm.get('currencyOfUnitPrice')?.setValue(currency); this.activityForm.get('currencyOfUnitPrice')?.setValue(currency);
}
if (['FEE', 'INTEREST'].includes(type)) { if (!['LIABILITY', 'VALUABLE'].includes(type)) {
if (this.activityForm.get('accountId')?.value) { if (accountId) {
this.activityForm.get('updateAccountBalance')?.enable(); this.activityForm.get('updateAccountBalance')?.enable();
} else { } else {
this.activityForm.get('updateAccountBalance')?.disable(); this.activityForm.get('updateAccountBalance')?.disable();
this.activityForm.get('updateAccountBalance')?.setValue(false); this.activityForm.get('updateAccountBalance')?.setValue(false);
} }
} }
}
}); });
this.activityForm this.activityForm
@ -298,7 +298,10 @@ export class GfCreateOrUpdateActivityDialogComponent {
}); });
this.activityForm.get('date')?.valueChanges.subscribe(() => { 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(); this.activityForm.get('updateAccountBalance')?.enable();
} else { } else {
this.activityForm.get('updateAccountBalance')?.disable(); this.activityForm.get('updateAccountBalance')?.disable();
@ -441,7 +444,13 @@ export class GfCreateOrUpdateActivityDialogComponent {
.get('searchSymbol') .get('searchSymbol')
?.setValidators(Validators.required); ?.setValidators(Validators.required);
this.activityForm.get('searchSymbol')?.updateValueAndValidity(); this.activityForm.get('searchSymbol')?.updateValueAndValidity();
if (this.activityForm.get('accountId')?.value) {
this.activityForm.get('updateAccountBalance')?.enable(); this.activityForm.get('updateAccountBalance')?.enable();
} else {
this.activityForm.get('updateAccountBalance')?.disable();
this.activityForm.get('updateAccountBalance')?.setValue(false);
}
} }
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();

Loading…
Cancel
Save