diff --git a/apps/api/src/app/portfolio/portfolio-calculator.ts b/apps/api/src/app/portfolio/portfolio-calculator.ts index d37a872c5..364ac0652 100644 --- a/apps/api/src/app/portfolio/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/portfolio-calculator.ts @@ -90,9 +90,12 @@ export class PortfolioCalculator { if (oldAccumulatedSymbol) { let investment = oldAccumulatedSymbol.investment; - const newQuantity = order.quantity - .mul(factor) - .plus(oldAccumulatedSymbol.quantity); + const newQuantity = + order.type === 'SPLIT' + ? order.quantity.s === 1 + ? oldAccumulatedSymbol.quantity.mul(order.quantity) + : oldAccumulatedSymbol.quantity.div(order.quantity) + : order.quantity.mul(factor).plus(oldAccumulatedSymbol.quantity); if (order.type === 'BUY') { investment = oldAccumulatedSymbol.investment.plus( diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 061c4b8be..71377df49 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -741,7 +741,9 @@ export class PortfolioService { .filter((order) => { tags = tags.concat(order.tags); - return ['BUY', 'DIVIDEND', 'ITEM', 'SELL'].includes(order.type); + return ['BUY', 'DIVIDEND', 'ITEM', 'SELL', 'SPLIT'].includes( + order.type + ); }) .map((order) => ({ currency: order.SymbolProfile.currency, diff --git a/apps/api/src/helper/portfolio.helper.ts b/apps/api/src/helper/portfolio.helper.ts index 01b532cbf..0535bb693 100644 --- a/apps/api/src/helper/portfolio.helper.ts +++ b/apps/api/src/helper/portfolio.helper.ts @@ -6,6 +6,7 @@ export function getFactor(activityType: ActivityType) { switch (activityType) { case 'BUY': case 'ITEM': + case 'SPLIT': factor = 1; break; case 'LIABILITY':