Browse Source

Optimize stock split activity adjustments

pull/7568/head
David Requeno 3 weeks ago
parent
commit
d30a926361
  1. 2
      apps/api/src/app/activities/activities.service.spec.ts
  2. 26
      apps/api/src/app/activities/activities.service.ts
  3. 4
      apps/api/src/services/asset-profile-split/asset-profile-split.helper.spec.ts
  4. 2
      apps/api/src/services/asset-profile-split/asset-profile-split.helper.ts

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

@ -44,7 +44,7 @@ describe('ActivitiesService', () => {
const result = await getAdjustedActivity(activity, []); const result = await getAdjustedActivity(activity, []);
expect(result).toEqual(activity); expect(result).toEqual(activity);
expect(result).not.toBe(activity); expect(result).toBe(activity);
}); });
it.each([ it.each([

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

@ -948,18 +948,24 @@ export class ActivitiesService {
assetProfiles assetProfiles
); );
activities.activities = activities.activities.map((activity) => { const hasSplits = [...splitsByAssetProfile.values()].some((splits) => {
const key = getAssetProfileIdentifier({ return splits.length > 0;
dataSource: activity.assetProfile.dataSource,
symbol: activity.assetProfile.symbol
});
return adjustActivityBySplits(
activity,
splitsByAssetProfile.get(key) ?? []
);
}); });
if (hasSplits) {
activities.activities = activities.activities.map((activity) => {
const key = getAssetProfileIdentifier({
dataSource: activity.assetProfile.dataSource,
symbol: activity.assetProfile.symbol
});
return adjustActivityBySplits(
activity,
splitsByAssetProfile.get(key) ?? []
);
});
}
if (withCash && !this.areCashActivitiesExcludedByFilters(filters)) { if (withCash && !this.areCashActivitiesExcludedByFilters(filters)) {
const cashDetails = await this.accountService.getCashDetails({ const cashDetails = await this.accountService.getCashDetails({
filters, filters,

4
apps/api/src/services/asset-profile-split/asset-profile-split.helper.spec.ts

@ -54,9 +54,9 @@ describe('adjustActivityBySplits', () => {
); );
expect(adjustedActivityOnSplitDate).toEqual(activityOnSplitDate); expect(adjustedActivityOnSplitDate).toEqual(activityOnSplitDate);
expect(adjustedActivityOnSplitDate).not.toBe(activityOnSplitDate); expect(adjustedActivityOnSplitDate).toBe(activityOnSplitDate);
expect(adjustedActivityAfterSplit).toEqual(activityAfterSplit); expect(adjustedActivityAfterSplit).toEqual(activityAfterSplit);
expect(adjustedActivityAfterSplit).not.toBe(activityAfterSplit); expect(adjustedActivityAfterSplit).toBe(activityAfterSplit);
}); });
it('compares stored UTC split dates without normalizing them locally', () => { it('compares stored UTC split dates without normalizing them locally', () => {

2
apps/api/src/services/asset-profile-split/asset-profile-split.helper.ts

@ -19,7 +19,7 @@ export function adjustActivityBySplits(
} }
if (splitFactor.eq(1)) { if (splitFactor.eq(1)) {
return { ...activity }; return activity;
} }
return { return {

Loading…
Cancel
Save