@@ -11,33 +11,20 @@ class Inntekt(
1111 val sisteAvsluttendeKalenderMåned : YearMonth ,
1212 val hentetTidspunkt : LocalDateTime ? = null ,
1313) {
14- fun splitIntoInntektsPerioder (): InntektsPerioder =
15- Triple (
16- (0L .. 11L )
17- .map { i ->
18- inntektsListe.find { it.årMåned == sisteAvsluttendeKalenderMåned.minusMonths(i) }
19- ? : KlassifisertInntektM åned(
20- sisteAvsluttendeKalenderMåned.minusMonths(i),
21- emptyList(),
22- )
23- }.sortedBy { it.årMåned },
24- (12L .. 23L )
25- .map { i ->
26- inntektsListe.find { it.årMåned == sisteAvsluttendeKalenderMåned.minusMonths(i) }
27- ? : KlassifisertInntektM åned(
28- sisteAvsluttendeKalenderMåned.minusMonths(i),
29- emptyList(),
30- )
31- }.sortedBy { it.årMåned },
32- (24L .. 35L )
33- .map { i ->
34- inntektsListe.find { it.årMåned == sisteAvsluttendeKalenderMåned.minusMonths(i) }
35- ? : KlassifisertInntektM åned(
36- sisteAvsluttendeKalenderMåned.minusMonths(i),
37- emptyList(),
38- )
39- }.sortedBy { it.årMåned },
14+ fun splitIntoInntektsPerioder (): InntektsPerioder {
15+ val inntektMap = inntektsListe.associateBy { it.årMåned }
16+
17+ fun getOrCreateInntektM åned (antallMånederTilbake : Long ): KlassifisertInntektM åned {
18+ val måned = sisteAvsluttendeKalenderMåned.minusMonths(antallMånederTilbake)
19+ return inntektMap[måned] ? : KlassifisertInntektM åned(måned, emptyList())
20+ }
21+
22+ return Triple (
23+ (0L .. 11L ).map { getOrCreateInntektMåned(it) }.sortedBy { it.årMåned },
24+ (12L .. 23L ).map { getOrCreateInntektMåned(it) }.sortedBy { it.årMåned },
25+ (24L .. 35L ).map { getOrCreateInntektMåned(it) }.sortedBy { it.årMåned },
4026 )
27+ }
4128
4229 fun filterPeriod (
4330 from : YearMonth ,
0 commit comments