Skip to content

Commit

Permalink
Merge pull request #4634 from navikt/feature/deltakelsesprosent
Browse files Browse the repository at this point in the history
Feature/deltakelsesprosent
  • Loading branch information
sondrele authored Nov 15, 2024
2 parents bcfe9f7 + de811da commit dc14ede
Show file tree
Hide file tree
Showing 17 changed files with 66 additions and 87 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,14 +76,14 @@ object Prismodell {

val overlapFraction = overlapDuration.divide(totalDuration, 2, RoundingMode.HALF_UP)

val stillingsprosent = if (deltakelsePeriode.stillingsprosent < 50) {
val deltakelsesprosent = if (deltakelsePeriode.deltakelsesprosent < 50) {
BigDecimal(50)
} else {
BigDecimal(100)
}

overlapFraction
.multiply(stillingsprosent)
.multiply(deltakelsesprosent)
.divide(BigDecimal(100), 2, RoundingMode.HALF_UP)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ suspend fun toRefusjonskrav(
sluttDato = deltaker.startDato,
forstePeriodeStartDato = forstePeriode.start,
sistePeriodeSluttDato = sistePeriode.slutt.minusDays(1),
sistePeriodeDeltakelsesprosent = sistePeriode.stillingsprosent,
sistePeriodeDeltakelsesprosent = sistePeriode.deltakelsesprosent,
manedsverk = manedsverk,
person = person,
// TODO data om veileder hos arrangør
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class RefusjonService(
DeltakerStatus.Type.FULLFORT,
)
}
.filter { it.stillingsprosent != null }
.filter { it.deltakelsesprosent != null }
.filter {
it.startDato != null && it.startDato.isBefore(periode.slutt)
}
Expand All @@ -117,12 +117,12 @@ class RefusjonService(
.map { deltakelse ->
val start = maxOf(requireNotNull(deltakelse.startDato), periode.start)
val slutt = minOf(deltakelse.sluttDato?.plusDays(1) ?: periode.slutt, periode.slutt)
val stillingsprosent = requireNotNull(deltakelse.stillingsprosent) {
"stillingsprosent mangler for deltakelse id=${deltakelse.id}"
val deltakelsesprosent = requireNotNull(deltakelse.deltakelsesprosent) {
"deltakelsesprosent mangler for deltakelse id=${deltakelse.id}"
}

// TODO: periodisering av prosent - fra Komet
val perioder = listOf(DeltakelsePeriode(start, slutt, stillingsprosent))
val perioder = listOf(DeltakelsePeriode(start, slutt, deltakelsesprosent))

DeltakelsePerioder(
deltakelseId = deltakelse.id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ data class DeltakerDbo(
val registrertTidspunkt: LocalDateTime,
@Serializable(with = LocalDateTimeSerializer::class)
val endretTidspunkt: LocalDateTime,
val stillingsprosent: Double?,
val deltakelsesprosent: Double?,
val status: DeltakerStatus,
)
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class DeltakerRepository(private val db: Database) {
slutt_dato,
registrert_tidspunkt,
endret_tidspunkt,
stillingsprosent,
deltakelsesprosent,
status_type,
status_aarsak,
status_opprettet_tidspunkt)
Expand All @@ -29,7 +29,7 @@ class DeltakerRepository(private val db: Database) {
:slutt_dato,
:registrert_tidspunkt,
:endret_tidspunkt,
:stillingsprosent,
:deltakelsesprosent,
:status_type::deltaker_status_type,
:status_aarsak::deltaker_status_aarsak,
:status_opprettet_tidspunkt)
Expand All @@ -39,7 +39,7 @@ class DeltakerRepository(private val db: Database) {
slutt_dato = excluded.slutt_dato,
registrert_tidspunkt = excluded.registrert_tidspunkt,
endret_tidspunkt = excluded.endret_tidspunkt,
stillingsprosent = excluded.stillingsprosent,
deltakelsesprosent = excluded.deltakelsesprosent,
status_type = excluded.status_type,
status_aarsak = excluded.status_aarsak,
status_opprettet_tidspunkt = excluded.status_opprettet_tidspunkt
Expand All @@ -52,7 +52,7 @@ class DeltakerRepository(private val db: Database) {
"slutt_dato" to deltaker.sluttDato,
"registrert_tidspunkt" to deltaker.registrertTidspunkt,
"endret_tidspunkt" to deltaker.endretTidspunkt,
"stillingsprosent" to deltaker.stillingsprosent,
"deltakelsesprosent" to deltaker.deltakelsesprosent,
"status_type" to deltaker.status.type.name,
"status_aarsak" to deltaker.status.aarsak?.name,
"status_opprettet_tidspunkt" to deltaker.status.opprettetDato,
Expand Down Expand Up @@ -87,7 +87,7 @@ class DeltakerRepository(private val db: Database) {
slutt_dato,
registrert_tidspunkt,
endret_tidspunkt,
stillingsprosent,
deltakelsesprosent,
status_type,
status_aarsak,
status_opprettet_tidspunkt
Expand All @@ -113,7 +113,7 @@ class DeltakerRepository(private val db: Database) {
slutt_dato,
registrert_tidspunkt,
endret_tidspunkt,
stillingsprosent,
deltakelsesprosent,
status_type,
status_aarsak,
status_opprettet_tidspunkt
Expand All @@ -132,7 +132,8 @@ class DeltakerRepository(private val db: Database) {
fun delete(id: UUID) {
@Language("PostgreSQL")
val query = """
delete from deltaker
delete
from deltaker
where id = ?::uuid
""".trimIndent()

Expand All @@ -149,7 +150,7 @@ class DeltakerRepository(private val db: Database) {
sluttDato = localDateOrNull("slutt_dato"),
registrertTidspunkt = localDateTime("registrert_tidspunkt"),
endretTidspunkt = localDateTime("endret_tidspunkt"),
stillingsprosent = doubleOrNull("stillingsprosent"),
deltakelsesprosent = doubleOrNull("deltakelsesprosent"),
status = DeltakerStatus(
type = DeltakerStatus.Type.valueOf(string("status_type")),
aarsak = stringOrNull("status_aarsak")?.let { DeltakerStatus.Aarsak.valueOf(it) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ class RefusjonskravRepository(private val db: Database) {

@Language("PostgreSQL")
val insertPeriodeQuery = """
insert into refusjonskrav_deltakelse_periode (refusjonskrav_id, deltakelse_id, periode, prosent_stilling)
values (:refusjonskrav_id, :deltakelse_id, daterange(:start, :slutt), :stillingsprosent)
insert into refusjonskrav_deltakelse_periode (refusjonskrav_id, deltakelse_id, periode, deltakelsesprosent)
values (:refusjonskrav_id, :deltakelse_id, daterange(:start, :slutt), :deltakelsesprosent)
""".trimIndent()

val perioder = beregning.input.deltakelser.flatMap { deltakelse ->
Expand All @@ -93,7 +93,7 @@ class RefusjonskravRepository(private val db: Database) {
"deltakelse_id" to deltakelse.deltakelseId,
"start" to periode.start,
"slutt" to periode.slutt,
"stillingsprosent" to periode.stillingsprosent,
"deltakelsesprosent" to periode.deltakelsesprosent,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,13 @@ class AmtDeltakerV1KafkaConsumer(
private fun AmtDeltakerV1Dto.toDeltakerDbo(): DeltakerDbo {
val tiltakstype = tiltakstyper.getByGjennomforingId(gjennomforingId)

val stillingsprosent = when (tiltakstype.tiltakskode) {
// Hvis stillingsprosent mangler for AFT/VTA så kan det antas å være 100
val deltakelsesprosent = when (tiltakstype.tiltakskode) {
// Hvis deltakelsesprosent mangler for AFT/VTA så skal det antas å være 100
Tiltakskode.ARBEIDSFORBEREDENDE_TRENING, Tiltakskode.VARIG_TILRETTELAGT_ARBEID_SKJERMET -> {
prosentStilling?.toDouble() ?: 100.0
}

// TODO: ikke lese inn stillingsprosent for andre tiltakstyper?
// Skal visstnok ikke være relevant for disse, selv om det finnes en del data der per i dag
else -> prosentStilling?.toDouble()
else -> null
}
return DeltakerDbo(
id = id,
Expand All @@ -108,7 +106,7 @@ class AmtDeltakerV1KafkaConsumer(
sluttDato = sluttDato,
registrertTidspunkt = registrertDato,
endretTidspunkt = endretDato,
stillingsprosent = stillingsprosent,
deltakelsesprosent = deltakelsesprosent,
status = status,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ data class DeltakerDto(
val registrertTidspunkt: LocalDateTime,
@Serializable(with = LocalDateTimeSerializer::class)
val endretTidspunkt: LocalDateTime,
val stillingsprosent: Double?,
val deltakelsesprosent: Double?,
val status: DeltakerStatus,
)
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ data class DeltakelsePeriode(
val start: LocalDate,
@Serializable(with = LocalDateSerializer::class)
val slutt: LocalDate,
// TODO: egen Stillingsprosent-type?
val stillingsprosent: Double,
val deltakelsesprosent: Double,
)

@Serializable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ with deltakelse_perioder as (select refusjonskrav_id,
jsonb_agg(jsonb_build_object(
'start', lower(periode),
'slutt', upper(periode),
'stillingsprosent', prosent_stilling
'deltakelsesprosent', deltakelsesprosent
)) as perioder
from refusjonskrav_deltakelse_periode
group by refusjonskrav_id, deltakelse_id),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
drop view if exists refusjonskrav_aft_view;
drop view if exists refusjonskrav_admin_dto_view;

alter table refusjonskrav_deltakelse_periode
rename column prosent_stilling to deltakelsesprosent;

alter table deltaker
rename column stillingsprosent to deltakelsesprosent;
27 changes: 0 additions & 27 deletions mulighetsrommet-api/src/main/resources/web/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5147,33 +5147,6 @@ components:
required:
- navn

RefusjonKravDeltakelsePerioder:
type: object
properties:
deltakelseId:
type: string
format: uuid
perioder:
type: array
items:
$ref: "#/components/schemas/RefusjonKravDeltakelsePeriode"

RefusjonKravDeltakelsePeriode:
type: object
properties:
start:
type: string
format: date-time
slutt:
type: string
format: date-time
stillingsprosent:
type: number
required:
- start
- slutt
- stillingsprosent

UtdanningslopDbo:
type: object
properties:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ object DeltakerFixtures {
startDato: LocalDate = LocalDate.now(),
sluttDato: LocalDate = LocalDate.now().plusMonths(1),
statusType: DeltakerStatus.Type = DeltakerStatus.Type.DELTAR,
stillingsprosent: Double = 100.0,
deltakelsesprosent: Double = 100.0,
) = DeltakerDbo(
id = UUID.randomUUID(),
startDato = startDato,
sluttDato = sluttDato,
gjennomforingId = gjennomforingId,
registrertTidspunkt = LocalDateTime.now(),
endretTidspunkt = LocalDateTime.now(),
stillingsprosent = stillingsprosent,
deltakelsesprosent = deltakelsesprosent,
status = DeltakerStatus(
type = statusType,
aarsak = null,
Expand Down
Loading

0 comments on commit dc14ede

Please sign in to comment.