@ -569,7 +569,7 @@ export class PortfolioService {
const emergencyFundInCash = emergencyFund
. minus (
this . getEmergencyFundPosition sValueInBaseCurrency ( {
this . getEmergencyFundHolding sValueInBaseCurrency ( {
holdings
} )
)
@ -608,8 +608,8 @@ export class PortfolioService {
userCurrency ,
userId ,
balanceInBaseCurrency : cashDetails.balanceInBaseCurrency ,
emergencyFundPosition sValueInBaseCurrency :
this . getEmergencyFundPosition sValueInBaseCurrency ( {
emergencyFundHolding sValueInBaseCurrency :
this . getEmergencyFundHolding sValueInBaseCurrency ( {
holdings
} )
} ) ;
@ -1263,7 +1263,11 @@ export class PortfolioService {
[
new EmergencyFundSetup (
this . exchangeRateDataService ,
userSettings . emergencyFund
this . getTotalEmergencyFund ( {
userSettings ,
emergencyFundHoldingsValueInBaseCurrency :
this . getEmergencyFundHoldingsValueInBaseCurrency ( { holdings } )
} ) . toNumber ( )
)
] ,
userSettings
@ -1585,7 +1589,7 @@ export class PortfolioService {
return dividendsByGroup ;
}
private getEmergencyFundPosition sValueInBaseCurrency ( {
private getEmergencyFundHolding sValueInBaseCurrency ( {
holdings
} : {
holdings : PortfolioDetails [ 'holdings' ] ;
@ -1600,14 +1604,14 @@ export class PortfolioService {
) ;
} ) ;
let valueInBaseCurrencyOfEmergencyFundPosition s = new Big ( 0 ) ;
let valueInBaseCurrencyOfEmergencyFundHolding s = new Big ( 0 ) ;
for ( const { valueInBaseCurrency } of emergencyFundHoldings ) {
valueInBaseCurrencyOfEmergencyFundPosition s =
valueInBaseCurrencyOfEmergencyFundPosition s . plus ( valueInBaseCurrency ) ;
valueInBaseCurrencyOfEmergencyFundHolding s =
valueInBaseCurrencyOfEmergencyFundHolding s . plus ( valueInBaseCurrency ) ;
}
return valueInBaseCurrencyOfEmergencyFundPosition s . toNumber ( ) ;
return valueInBaseCurrencyOfEmergencyFundHolding s . toNumber ( ) ;
}
private getInitialCashPosition ( {
@ -1774,7 +1778,7 @@ export class PortfolioService {
private async getSummary ( {
balanceInBaseCurrency ,
emergencyFundPosition sValueInBaseCurrency ,
emergencyFundHolding sValueInBaseCurrency ,
filteredValueInBaseCurrency ,
impersonationId ,
portfolioCalculator ,
@ -1782,7 +1786,7 @@ export class PortfolioService {
userId
} : {
balanceInBaseCurrency : number ;
emergencyFundPosition sValueInBaseCurrency : number ;
emergencyFundHolding sValueInBaseCurrency : number ;
filteredValueInBaseCurrency : Big ;
impersonationId : string ;
portfolioCalculator : PortfolioCalculator ;
@ -1827,12 +1831,10 @@ export class PortfolioService {
const dividendInBaseCurrency =
await portfolioCalculator . getDividendInBaseCurrency ( ) ;
const emergencyFund = new Big (
Math . max (
emergencyFundPositionsValueInBaseCurrency ,
( user . Settings ? . settings as UserSettings ) ? . emergencyFund ? ? 0
)
) ;
const totalEmergencyFund = this . getTotalEmergencyFund ( {
emergencyFundHoldingsValueInBaseCurrency ,
userSettings : user.Settings?.settings as UserSettings
} ) ;
const fees = await portfolioCalculator . getFeesInBaseCurrency ( ) ;
@ -1858,8 +1860,8 @@ export class PortfolioService {
} ) . toNumber ( ) ;
const cash = new Big ( balanceInBaseCurrency )
. minus ( e mergencyFund)
. plus ( emergencyFundPosition sValueInBaseCurrency )
. minus ( totalE mergencyFund)
. plus ( emergencyFundHolding sValueInBaseCurrency )
. toNumber ( ) ;
const committedFunds = new Big ( totalBuy ) . minus ( totalSell ) ;
@ -1928,11 +1930,11 @@ export class PortfolioService {
currentValueInBaseCurrency : currentValueInBaseCurrency.toNumber ( ) ,
dividendInBaseCurrency : dividendInBaseCurrency.toNumber ( ) ,
emergencyFund : {
assets : emergencyFundPosition sValueInBaseCurrency ,
cash : e mergencyFund
. minus ( emergencyFundPosition sValueInBaseCurrency )
assets : emergencyFundHolding sValueInBaseCurrency ,
cash : totalE mergencyFund
. minus ( emergencyFundHolding sValueInBaseCurrency )
. toNumber ( ) ,
total : e mergencyFund.toNumber( )
total : totalE mergencyFund.toNumber( )
} ,
fees : fees.toNumber ( ) ,
filteredValueInBaseCurrency : filteredValueInBaseCurrency.toNumber ( ) ,
@ -1940,7 +1942,7 @@ export class PortfolioService {
? filteredValueInBaseCurrency . div ( netWorth ) . toNumber ( )
: undefined ,
fireWealth : new Big ( currentValueInBaseCurrency )
. minus ( emergencyFundPosition sValueInBaseCurrency )
. minus ( emergencyFundHolding sValueInBaseCurrency )
. toNumber ( ) ,
grossPerformance : new Big ( netPerformance ) . plus ( fees ) . toNumber ( ) ,
grossPerformanceWithCurrencyEffect : new Big (
@ -1985,6 +1987,21 @@ export class PortfolioService {
) ;
}
private getTotalEmergencyFund ( {
emergencyFundHoldingsValueInBaseCurrency ,
userSettings
} : {
emergencyFundHoldingsValueInBaseCurrency : number ;
userSettings : UserSettings ;
} ) {
return new Big (
Math . max (
emergencyFundHoldingsValueInBaseCurrency ,
userSettings ? . emergencyFund ? ? 0
)
) ;
}
private getUserCurrency ( aUser? : UserWithSettings ) {
return (
aUser ? . Settings ? . settings . baseCurrency ? ?