| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -176,66 +176,73 @@ export class PortfolioService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const userCurrency = this.request.user.settings.settings.baseCurrency; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return accounts.map((account) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      let dividendInBaseCurrency = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      let interestInBaseCurrency = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      let transactionCount = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return Promise.all( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      accounts.map(async (account) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let dividendInBaseCurrency = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let interestInBaseCurrency = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let transactionCount = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      for (const { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        isDraft, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        currency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        SymbolProfile, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        type, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        unitPrice | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } of account.activities) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        switch (type) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          case ActivityType.DIVIDEND: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            dividendInBaseCurrency += this.exchangeRateDataService.toCurrency( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              unitPrice, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              currency ?? SymbolProfile.currency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              userCurrency | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          case ActivityType.INTEREST: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            interestInBaseCurrency += this.exchangeRateDataService.toCurrency( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              unitPrice, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              currency ?? SymbolProfile.currency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              userCurrency | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (const { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          currency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          date, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          isDraft, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          SymbolProfile, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          type, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          unitPrice | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } of account.activities) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          switch (type) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            case ActivityType.DIVIDEND: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              dividendInBaseCurrency += | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                await this.exchangeRateDataService.toCurrencyAtDate( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  unitPrice, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  currency ?? SymbolProfile.currency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  userCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  date | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            case ActivityType.INTEREST: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              interestInBaseCurrency += | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                await this.exchangeRateDataService.toCurrencyAtDate( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  unitPrice, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  currency ?? SymbolProfile.currency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  userCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  date | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (!isDraft) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          transactionCount += 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          if (!isDraft) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            transactionCount += 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const valueInBaseCurrency = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        details.accounts[account.id]?.valueInBaseCurrency ?? 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const valueInBaseCurrency = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          details.accounts[account.id]?.valueInBaseCurrency ?? 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const result = { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ...account, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        dividendInBaseCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        interestInBaseCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        transactionCount, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        valueInBaseCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        allocationInPercentage: null, // TODO
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        balanceInBaseCurrency: this.exchangeRateDataService.toCurrency( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          account.balance, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          account.currency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          userCurrency | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        value: this.exchangeRateDataService.toCurrency( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const result = { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ...account, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          dividendInBaseCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          interestInBaseCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          transactionCount, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          valueInBaseCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          userCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          account.currency | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          allocationInPercentage: null, // TODO
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          balanceInBaseCurrency: this.exchangeRateDataService.toCurrency( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            account.balance, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            account.currency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            userCurrency | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          value: this.exchangeRateDataService.toCurrency( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            valueInBaseCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            userCurrency, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            account.currency | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      delete result.activities; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        delete result.activities; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      return result; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return result; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public async getAccountsWithAggregations({ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |