diff --git a/.github/workflows/build-and-deploy-preprod.yml b/.github/workflows/build-and-deploy-preprod.yml
index 6924e189..85827556 100644
--- a/.github/workflows/build-and-deploy-preprod.yml
+++ b/.github/workflows/build-and-deploy-preprod.yml
@@ -2,7 +2,7 @@ name: Build-Deploy-Preprod
on:
push:
branches-ignore:
- - 'master'
+ - 'main'
workflow_dispatch:
env:
@@ -14,28 +14,25 @@ jobs:
permissions:
packages: write
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
persist-credentials: false
- - uses: actions/setup-java@v3
+ - uses: actions/setup-java@v4
with:
- java-version: 17
+ java-version: 21
distribution: 'temurin'
cache: 'maven'
- - name: Bygg med maven + sonar
+ - name: Bygg med maven
env:
- SONAR_PROJECTKEY: ${{ secrets.SONAR_PROJECTKEY }}
- SONAR_LOGIN: ${{ secrets.SONAR_LOGIN }}
GITHUB_USERNAME: x-access-token
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # run: mvn -B --no-transfer-progress package verify sonar:sonar --settings .m2/maven-settings.xml --file pom.xml
run: mvn -B --no-transfer-progress package verify --settings .m2/maven-settings.xml --file pom.xml
- name: Bygg Docker image
run: |
docker build -t $IMAGE .
- name: Login to GitHub Container Registry
if: github.triggering_actor != 'dependabot[bot]'
- uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
+ uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -49,9 +46,9 @@ jobs:
needs: build
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Deploy til dev-fss team namespace
- uses: nais/deploy/actions/deploy@v1
+ uses: nais/deploy/actions/deploy@v2
env:
APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }}
CLUSTER: dev-fss
diff --git a/.github/workflows/build-and-deploy-prod.yml b/.github/workflows/build-and-deploy-prod.yml
index 6ee3b6a7..267cba64 100644
--- a/.github/workflows/build-and-deploy-prod.yml
+++ b/.github/workflows/build-and-deploy-prod.yml
@@ -2,7 +2,7 @@ name: Build-Deploy-Prod
on:
push:
branches:
- - 'master'
+ - 'main'
env:
IMAGE: ghcr.io/navikt/familie-oppdrag:${{ github.sha }}
IMAGE_LATEST: ghcr.io/navikt/familie-oppdrag:latest
@@ -13,12 +13,12 @@ jobs:
permissions:
packages: write
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
persist-credentials: false
- - uses: actions/setup-java@v3
+ - uses: actions/setup-java@v4
with:
- java-version: 17
+ java-version: 21
distribution: 'temurin'
cache: 'maven'
- name: Bygg med maven
@@ -49,15 +49,15 @@ jobs:
needs: build
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Deploy til dev-fss team namespace
- uses: nais/deploy/actions/deploy@v1
+ uses: nais/deploy/actions/deploy@v2
env:
APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }}
CLUSTER: dev-fss
RESOURCE: app-preprod.yaml
- name: Deploy til prod-fss team namespace
- uses: nais/deploy/actions/deploy@v1
+ uses: nais/deploy/actions/deploy@v2
env:
APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }}
CLUSTER: prod-fss
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 00000000..91cd4d6f
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,90 @@
+#For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ "main" ]
+
+jobs:
+ analyze:
+ name: Analyze
+ # Runner size impacts CodeQL analysis time. To learn more, please see:
+ # - https://gh.io/recommended-hardware-resources-for-running-codeql
+ # - https://gh.io/supported-runners-and-hardware-resources
+ # - https://gh.io/using-larger-runners
+ # Consider using larger runners for possible analysis time improvements.
+ runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
+ timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
+ permissions:
+ # required for all workflows
+ security-events: write
+
+ # only required for workflows in private repositories
+ actions: read
+ contents: read
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'java-kotlin' ]
+ # CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ]
+ # Use only 'java-kotlin' to analyze code written in Java, Kotlin or both
+ # Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
+ # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v3
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+
+ # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
+ # queries: security-extended,security-and-quality
+
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Sett opp java
+ uses: actions/setup-java@v4
+ with:
+ java-version: 21
+ distribution: 'temurin'
+ cache: 'maven'
+ - name: Bygg med maven
+ env:
+ GITHUB_USERNAME: x-access-token
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: mvn -B --no-transfer-progress compile --settings .m2/maven-settings.xml
+
+
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
+
+ # If the Autobuild fails above, remove it and uncomment the following three lines.
+ # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
+
+ # - run: |
+ # echo "Run, Build Application using script"
+ # ./location_of_script_within_repo/buildscript.sh
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v3
+ with:
+ category: "/language:${{matrix.language}}"
diff --git a/Dockerfile b/Dockerfile
index 9cc2e037..852b86a4 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM ghcr.io/navikt/baseimages/temurin:17-appdynamics
+FROM ghcr.io/navikt/baseimages/temurin:21-appdynamics
ENV APPD_ENABLED=true
ENV APP_NAME=familie-oppdrag
diff --git a/app-preprod.yaml b/app-preprod.yaml
index 1db94d67..4680e208 100644
--- a/app-preprod.yaml
+++ b/app-preprod.yaml
@@ -69,9 +69,7 @@ spec:
external:
- host: b27apvl220.preprod.local
ports:
- - name: mq
- port: 1413
- protocol: TCP
+ - port: 1413
env:
- name: SPRING_PROFILES_ACTIVE
value: preprod
diff --git a/app-prod.yaml b/app-prod.yaml
index 28b03d0a..14505ef3 100644
--- a/app-prod.yaml
+++ b/app-prod.yaml
@@ -64,9 +64,7 @@ spec:
external:
- host: mpls02.adeo.no
ports:
- - name: mq
- port: 1414
- protocol: TCP
+ - port: 1414
env:
- name: SPRING_PROFILES_ACTIVE
value: prod
diff --git a/pom.xml b/pom.xml
index a26a596c..82b4835d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,19 +11,19 @@
org.springframework.boot
spring-boot-starter-parent
- 3.1.2
+ 3.2.2
1.0
-SNAPSHOT
- 17
- 1.9.0
+ 21
+ 1.9.22
no.nav.familie.oppdrag.LauncherKt
- 2.20230508082643_6b28bd8
- 3.0_20230808083340_ced4750
- 3.1.2
+ 2.20240123084817_35f03aa
+ 3.0_20240122110213_5591a29
+ 3.2.0
- ${SONAR_PROJECTKEY}
- navit
- https://sonarcloud.io
- **/config/FlywayConfig.kt,**/OppdragServiceE2E.kt
-
-
- ${SONAR_LOGIN}
- 2022.0.4
- 1.18.3
+ 2023.0.0
+ 1.19.4
1.0_20230718100517_1e1beb0
- 2.2.0
+ 2.3.0
@@ -141,7 +133,7 @@
com.ibm.mq
com.ibm.mq.jakarta.client
- 9.3.3.0
+ 9.3.4.1
jakarta.jms
@@ -154,7 +146,7 @@
org.messaginghub
pooled-jms
- 3.1.0
+ 3.1.5
@@ -437,27 +429,6 @@
${project.basedir}/src/test/kotlin
${project.artifactId}
-
-
-
- org.sonarsource.scanner.maven
- sonar-maven-plugin
- 3.9.1.2184
-
-
- org.jacoco
- jacoco-maven-plugin
- 0.8.10
-
-
- **/config/FlywayConfig.kt
- **/config/OppdragMQConfig.kt
-
-
-
-
-
-
org.springframework.boot
@@ -532,9 +503,9 @@
- com.pinterest
- ktlint
- 0.50.0
+ com.pinterest.ktlint
+ ktlint-cli
+ 1.1.1
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingMapper.kt b/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingMapper.kt
index 36809447..eb1827c9 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingMapper.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingMapper.kt
@@ -5,7 +5,6 @@ import java.util.Base64
import java.util.UUID
object AvstemmingMapper {
-
fun encodeUUIDBase64(uuid: UUID): String {
val bb = ByteBuffer.wrap(ByteArray(16))
bb.putLong(uuid.mostSignificantBits)
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingSender.kt b/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingSender.kt
index ac79616f..391ab9b0 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingSender.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingSender.kt
@@ -5,5 +5,6 @@ import no.nav.virksomhet.tjenester.avstemming.meldinger.v1.Avstemmingsdata
interface AvstemmingSender {
fun sendGrensesnittAvstemming(avstemmingsdata: Avstemmingsdata)
+
fun sendKonsistensAvstemming(avstemmingsdata: Konsistensavstemmingsdata)
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingSenderMQ.kt b/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingSenderMQ.kt
index 57e0ffaf..d3eb8de1 100755
--- a/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingSenderMQ.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingSenderMQ.kt
@@ -17,16 +17,16 @@ class AvstemmingSenderMQ(
val jmsTemplateAvstemming: JmsTemplate,
@Value("\${oppdrag.mq.enabled}") val erEnabled: String,
) : AvstemmingSender {
-
override fun sendGrensesnittAvstemming(avstemmingsdata: Avstemmingsdata) {
val avstemmingXml = JaxbGrensesnittAvstemmingsdata.tilXml(avstemmingsdata)
leggPåKø(avstemmingXml)
}
override fun sendKonsistensAvstemming(avstemmingsdata: Konsistensavstemmingsdata) {
- val konsistensavstemmingRequest = SendAsynkronKonsistensavstemmingsdata().apply {
- request = SendAsynkronKonsistensavstemmingsdataRequest().apply { konsistensavstemmingsdata = avstemmingsdata }
- }
+ val konsistensavstemmingRequest =
+ SendAsynkronKonsistensavstemmingsdata().apply {
+ request = SendAsynkronKonsistensavstemmingsdataRequest().apply { konsistensavstemmingsdata = avstemmingsdata }
+ }
val requestXml = JaxbKonsistensavstemming.tilXml(konsistensavstemmingRequest)
leggPåKø(requestXml)
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/common/RessursUtils.kt b/src/main/kotlin/no/nav/familie/oppdrag/common/RessursUtils.kt
index 89091f5a..30a12741 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/common/RessursUtils.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/common/RessursUtils.kt
@@ -6,32 +6,37 @@ import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
object RessursUtils {
-
private val LOG = LoggerFactory.getLogger(this::class.java)
private val secureLogger = LoggerFactory.getLogger("secureLogger")
fun unauthorized(errorMessage: String): ResponseEntity> =
ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(Ressurs.failure(errorMessage))
- fun notFound(errorMessage: String): ResponseEntity> =
- errorResponse(HttpStatus.NOT_FOUND, errorMessage, null)
+ fun notFound(errorMessage: String): ResponseEntity> = errorResponse(HttpStatus.NOT_FOUND, errorMessage, null)
- fun badRequest(errorMessage: String, throwable: Throwable?): ResponseEntity> =
- errorResponse(HttpStatus.BAD_REQUEST, errorMessage, throwable)
+ fun badRequest(
+ errorMessage: String,
+ throwable: Throwable?,
+ ): ResponseEntity> = errorResponse(HttpStatus.BAD_REQUEST, errorMessage, throwable)
- fun forbidden(errorMessage: String): ResponseEntity> =
- errorResponse(HttpStatus.FORBIDDEN, errorMessage, null)
+ fun forbidden(errorMessage: String): ResponseEntity> = errorResponse(HttpStatus.FORBIDDEN, errorMessage, null)
- fun conflict(errorMessage: String): ResponseEntity> =
- errorResponse(HttpStatus.CONFLICT, errorMessage, null, true)
+ fun conflict(errorMessage: String): ResponseEntity> = errorResponse(HttpStatus.CONFLICT, errorMessage, null, true)
- fun illegalState(errorMessage: String, throwable: Throwable? = null): ResponseEntity> =
- errorResponse(HttpStatus.INTERNAL_SERVER_ERROR, errorMessage, throwable)
+ fun illegalState(
+ errorMessage: String,
+ throwable: Throwable? = null,
+ ): ResponseEntity> = errorResponse(HttpStatus.INTERNAL_SERVER_ERROR, errorMessage, throwable)
- fun serviceUnavailable(errorMessage: String, throwable: Throwable? = null): ResponseEntity> =
- errorResponse(HttpStatus.INTERNAL_SERVER_ERROR, errorMessage, throwable)
+ fun serviceUnavailable(
+ errorMessage: String,
+ throwable: Throwable? = null,
+ ): ResponseEntity> = errorResponse(HttpStatus.INTERNAL_SERVER_ERROR, errorMessage, throwable)
- fun ok(data: T, melding: String? = null): ResponseEntity> = ResponseEntity.ok(Ressurs.success(data, melding))
+ fun ok(
+ data: T,
+ melding: String? = null,
+ ): ResponseEntity> = ResponseEntity.ok(Ressurs.success(data, melding))
fun noContent(): ResponseEntity> = ResponseEntity.noContent().build()
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/common/SOAPFaultExceptionUtil.kt b/src/main/kotlin/no/nav/familie/oppdrag/common/SOAPFaultExceptionUtil.kt
index a04b8afb..a023403b 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/common/SOAPFaultExceptionUtil.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/common/SOAPFaultExceptionUtil.kt
@@ -7,9 +7,10 @@ private val secureLogger = LoggerFactory.getLogger("secureLogger")
fun logSoapFaultException(e: Exception) {
if (e is SOAPFaultException) {
- val details = e.fault.detail?.let { detail ->
- detail.detailEntries.asSequence().mapNotNull { it.textContent }.joinToString(",")
- }
+ val details =
+ e.fault.detail?.let { detail ->
+ detail.detailEntries.asSequence().mapNotNull { it.textContent }.joinToString(",")
+ }
secureLogger.error(
"SOAPFaultException -" +
" faultCode=${e.fault.faultCode}" +
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/config/ApiExceptionHandler.kt b/src/main/kotlin/no/nav/familie/oppdrag/config/ApiExceptionHandler.kt
index e040596d..65d52a4a 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/config/ApiExceptionHandler.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/config/ApiExceptionHandler.kt
@@ -18,12 +18,13 @@ import org.springframework.web.bind.annotation.ExceptionHandler
@ControllerAdvice
class ApiExceptionHandler {
-
private val logger: Logger = LoggerFactory.getLogger(this::class.java)
private val secureLogger = LoggerFactory.getLogger("secureLogger")
@ExceptionHandler(JwtTokenUnauthorizedException::class)
- fun handleJwtTokenUnauthorizedException(jwtTokenUnauthorizedException: JwtTokenUnauthorizedException): ResponseEntity> {
+ fun handleJwtTokenUnauthorizedException(
+ jwtTokenUnauthorizedException: JwtTokenUnauthorizedException,
+ ): ResponseEntity> {
return unauthorized("Unauthorized")
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/config/ApplicationConfig.kt b/src/main/kotlin/no/nav/familie/oppdrag/config/ApplicationConfig.kt
index db511497..53c0a58b 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/config/ApplicationConfig.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/config/ApplicationConfig.kt
@@ -13,12 +13,11 @@ import org.springframework.context.annotation.ComponentScan
import org.springframework.scheduling.annotation.EnableScheduling
@SpringBootConfiguration
-@EntityScan(ApplicationConfig.pakkenavn, "no.nav.familie.sikkerhet")
-@ComponentScan(ApplicationConfig.pakkenavn, "no.nav.familie.sikkerhet")
+@EntityScan(ApplicationConfig.PAKKENAVN, "no.nav.familie.sikkerhet")
+@ComponentScan(ApplicationConfig.PAKKENAVN, "no.nav.familie.sikkerhet")
@EnableScheduling
@EnableJwtTokenValidation(ignore = ["org.springframework", "org.springdoc"])
class ApplicationConfig {
-
@Bean
fun servletWebServerFactory(): ServletWebServerFactory {
val serverFactory = JettyServletWebServerFactory()
@@ -43,7 +42,7 @@ class ApplicationConfig {
}
companion object {
- const val pakkenavn = "no.nav.familie.oppdrag"
- val LOKALE_PROFILER = setOf("dev", "e2e", "dev_psql_mq")
+ const val PAKKENAVN = "no.nav.familie.oppdrag"
+ val lokaleProfiler = setOf("dev", "e2e", "dev_psql_mq")
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/config/DatabaseConfiguration.kt b/src/main/kotlin/no/nav/familie/oppdrag/config/DatabaseConfiguration.kt
index 169e1165..f689ef0f 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/config/DatabaseConfiguration.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/config/DatabaseConfiguration.kt
@@ -19,7 +19,6 @@ import javax.sql.DataSource
@Configuration
class DatabaseConfiguration : AbstractJdbcConfiguration() {
-
@Bean
fun operations(dataSource: DataSource): NamedParameterJdbcTemplate {
return NamedParameterJdbcTemplate(dataSource)
@@ -44,7 +43,6 @@ class DatabaseConfiguration : AbstractJdbcConfiguration() {
@ReadingConverter
class PGobjectTilUtbetalingsoppdragConverter : Converter {
-
override fun convert(pGobject: PGobject): Utbetalingsoppdrag? {
return pGobject.value?.let { objectMapper.readValue(it) }
}
@@ -52,7 +50,6 @@ class DatabaseConfiguration : AbstractJdbcConfiguration() {
@WritingConverter
class UtbetalingsoppdragTilPGobjectConverter : Converter {
-
override fun convert(utbetalingsoppdrag: Utbetalingsoppdrag): PGobject =
PGobject().apply {
type = "json"
@@ -62,7 +59,6 @@ class DatabaseConfiguration : AbstractJdbcConfiguration() {
@ReadingConverter
class PGobjectTilMmelConverter : Converter {
-
override fun convert(pGobject: PGobject): Mmel? {
return pGobject.value?.let { objectMapper.readValue(it) }
}
@@ -70,7 +66,6 @@ class DatabaseConfiguration : AbstractJdbcConfiguration() {
@WritingConverter
class MmelTilPGobjectConverter : Converter {
-
override fun convert(utbetalingsoppdrag: Mmel): PGobject =
PGobject().apply {
type = "json"
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/config/FlywayConfig.kt b/src/main/kotlin/no/nav/familie/oppdrag/config/FlywayConfig.kt
index bc3b035e..acc29079 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/config/FlywayConfig.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/config/FlywayConfig.kt
@@ -12,11 +12,12 @@ import org.springframework.context.annotation.Profile
@Profile("!dev & !dev_psql_mq")
@ConditionalOnProperty("spring.flyway.enabled")
class FlywayConfig {
-
private val logger = LoggerFactory.getLogger(FlywayConfig::class.java)
@Bean
- fun setRole(@Value("\${spring.cloud.vault.database.role}") role: String): FlywayConfigurationCustomizer {
+ fun setRole(
+ @Value("\${spring.cloud.vault.database.role}") role: String,
+ ): FlywayConfigurationCustomizer {
logger.info("Setter rolle " + role)
return FlywayConfigurationCustomizer { c -> c.initSql(String.format("SET ROLE \"%s\"", role)) }
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/config/OppdragMQConfig.kt b/src/main/kotlin/no/nav/familie/oppdrag/config/OppdragMQConfig.kt
index da639b07..b055166e 100755
--- a/src/main/kotlin/no/nav/familie/oppdrag/config/OppdragMQConfig.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/config/OppdragMQConfig.kt
@@ -39,7 +39,6 @@ class OppdragMQConfig(
@Value("\${oppdrag.mq.user}") val user: String,
@Value("\${oppdrag.mq.password}") val password: String,
) {
-
private val logger = LoggerFactory.getLogger(javaClass)
private val secureLogger = LoggerFactory.getLogger("secureLogger")
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/config/ServiceConfig.kt b/src/main/kotlin/no/nav/familie/oppdrag/config/ServiceConfig.kt
index 09e6d7d9..d2ac5198 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/config/ServiceConfig.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/config/ServiceConfig.kt
@@ -15,7 +15,6 @@ class ServiceConfig(
@Value("\${SERVICEUSER_PASSWORD}") private val systemuserPwd: String,
@Value("\${OPPDRAG_SERVICE_URL}") private val simulerFpServiceUrl: String,
) {
-
@Bean
fun stsConfig(): StsConfig {
return StsConfig.builder()
@@ -26,7 +25,7 @@ class ServiceConfig(
}
@Bean
- fun SimulerFpServicePort(): SimulerFpService =
+ fun simulerFpServicePort(): SimulerFpService =
CXFClient(SimulerFpService::class.java)
.address(simulerFpServiceUrl)
.timeout(20000, 20000)
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/config/SwaggerConfig.kt b/src/main/kotlin/no/nav/familie/oppdrag/config/SwaggerConfig.kt
index ea9592eb..24a3a1bd 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/config/SwaggerConfig.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/config/SwaggerConfig.kt
@@ -10,7 +10,6 @@ import org.springframework.context.annotation.Configuration
@Configuration
class SwaggerConfig {
-
private val bearer = "JWT"
@Bean
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/config/VaultHikariConfig.kt b/src/main/kotlin/no/nav/familie/oppdrag/config/VaultHikariConfig.kt
index c2d95856..1025d849 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/config/VaultHikariConfig.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/config/VaultHikariConfig.kt
@@ -17,7 +17,6 @@ class VaultHikariConfig(
private val hikariDataSource: HikariDataSource,
private val props: VaultDatabaseProperties,
) : InitializingBean {
-
private val logger = LoggerFactory.getLogger(VaultHikariConfig::class.java)
override fun afterPropertiesSet() {
diff --git "a/src/main/kotlin/no/nav/familie/oppdrag/config/\303\230konomiClientConfig.kt" "b/src/main/kotlin/no/nav/familie/oppdrag/config/\303\230konomiClientConfig.kt"
index c6fb30c0..f74d81ac 100644
--- "a/src/main/kotlin/no/nav/familie/oppdrag/config/\303\230konomiClientConfig.kt"
+++ "b/src/main/kotlin/no/nav/familie/oppdrag/config/\303\230konomiClientConfig.kt"
@@ -16,29 +16,30 @@ import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import javax.xml.namespace.QName
+private const val WSDL = "wsdl/no/nav/tilbakekreving/tilbakekreving-v1-tjenestespesifikasjon.wsdl"
+private const val NAMESPACE = "http://okonomi.nav.no/tilbakekrevingService/"
+
@Configuration
class ØkonomiClientConfig(
@Value("\${TILBAKEKREVING_V1_URL}") private val tilbakekrevingUrl: String,
) {
-
- private val WSDL = "wsdl/no/nav/tilbakekreving/tilbakekreving-v1-tjenestespesifikasjon.wsdl"
- private val NAMESPACE = "http://okonomi.nav.no/tilbakekrevingService/"
- private val SERVICE = QName(NAMESPACE, "TilbakekrevingService")
- private val PORT = QName(NAMESPACE, "TilbakekrevingServicePort")
+ private val service = QName(NAMESPACE, "TilbakekrevingService")
+ private val port = QName(NAMESPACE, "TilbakekrevingServicePort")
@Bean
fun økonomiService(stsConfig: StsConfig): TilbakekrevingPortType {
- val factoryBean = JaxWsProxyFactoryBean().apply {
- wsdlURL = WSDL
- serviceName = SERVICE
- endpointName = PORT
- serviceClass = TilbakekrevingPortType::class.java
- address = tilbakekrevingUrl
- features.add(WSAddressingFeature())
- features.add(loggingFeature())
- outInterceptors.add(LoggingOutInterceptor())
- inInterceptors.add(LoggingInInterceptor())
- }
+ val factoryBean =
+ JaxWsProxyFactoryBean().apply {
+ wsdlURL = WSDL
+ serviceName = service
+ endpointName = port
+ serviceClass = TilbakekrevingPortType::class.java
+ address = tilbakekrevingUrl
+ features.add(WSAddressingFeature())
+ features.add(loggingFeature())
+ outInterceptors.add(LoggingOutInterceptor())
+ inInterceptors.add(LoggingInInterceptor())
+ }
return wrapWithSts(factoryBean.create(TilbakekrevingPortType::class.java), stsConfig).apply {
disableCnCheck()
}
@@ -59,7 +60,10 @@ class ØkonomiClientConfig(
conduit.tlsClientParameters = tlsParams
}
- private fun wrapWithSts(port: TilbakekrevingPortType, stsConfig: StsConfig): TilbakekrevingPortType {
+ private fun wrapWithSts(
+ port: TilbakekrevingPortType,
+ stsConfig: StsConfig,
+ ): TilbakekrevingPortType {
val client = ClientProxy.getClient(port)
STSConfigurationUtil.configureStsForSystemUserInFSS(client, stsConfig)
return port
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/domene/OppdragIdMapping.kt b/src/main/kotlin/no/nav/familie/oppdrag/domene/OppdragIdMapping.kt
index 9f8e63dc..c871869c 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/domene/OppdragIdMapping.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/domene/OppdragIdMapping.kt
@@ -4,8 +4,9 @@ import no.nav.familie.kontrakter.felles.oppdrag.OppdragId
import no.trygdeetaten.skjema.oppdrag.Oppdrag
val Oppdrag.id: OppdragId
- get() = OppdragId(
- this.oppdrag110.kodeFagomraade,
- this.oppdrag110.oppdragGjelderId,
- this.oppdrag110.oppdragsLinje150?.get(0)?.henvisning!!,
- )
+ get() =
+ OppdragId(
+ this.oppdrag110.kodeFagomraade,
+ this.oppdrag110.oppdragGjelderId,
+ this.oppdrag110.oppdragsLinje150?.get(0)?.henvisning!!,
+ )
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingMapper.kt b/src/main/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingMapper.kt
index 98fdbd52..a9200213 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingMapper.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingMapper.kt
@@ -21,13 +21,13 @@ import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.UUID
+private const val ANTALL_DETALJER_PER_MELDING = 70
+
class GrensesnittavstemmingMapper(
private val fagområde: String,
private val fom: LocalDateTime,
private val tom: LocalDateTime,
) {
-
- private val ANTALL_DETALJER_PER_MELDING = 70
private val tidspunktFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS")
val avstemmingId = AvstemmingMapper.encodeUUIDBase64(UUID.randomUUID())
@@ -37,11 +37,12 @@ class GrensesnittavstemmingMapper(
fun lagStartmelding() = lagMelding(AksjonType.START)
- fun lagTotalMelding() = lagMelding(AksjonType.DATA).apply {
- this.total = opprettTotalData()
- this.periode = opprettPeriodeData()
- this.grunnlag = opprettGrunnlagsData()
- }
+ fun lagTotalMelding() =
+ lagMelding(AksjonType.DATA).apply {
+ this.total = opprettTotalData()
+ this.periode = opprettPeriodeData()
+ this.grunnlag = opprettGrunnlagsData()
+ }
fun lagSluttmelding() = lagMelding(AksjonType.AVSL)
@@ -167,10 +168,12 @@ class GrensesnittavstemmingMapper(
}
private fun opprettPeriodeData(): Periodedata {
- val fom = avstemmingstidspunkt.fom
- ?: error("Mangler avstemmingstidspunkt::fom, vi skal ikke opprette meldinger hvis listen med oppdrag er tom")
- val tom = avstemmingstidspunkt.tom
- ?: error("Mangler avstemmingstidspunkt::tom, vi skal ikke opprette meldinger hvis listen med oppdrag er tom")
+ val fom =
+ avstemmingstidspunkt.fom
+ ?: error("Mangler avstemmingstidspunkt::fom, vi skal ikke opprette meldinger hvis listen med oppdrag er tom")
+ val tom =
+ avstemmingstidspunkt.tom
+ ?: error("Mangler avstemmingstidspunkt::tom, vi skal ikke opprette meldinger hvis listen med oppdrag er tom")
return Periodedata().apply {
this.datoAvstemtFom = formaterTilPeriodedataFormat(fom.format(tidspunktFormatter))
this.datoAvstemtTom = formaterTilPeriodedataFormat(tom.format(tidspunktFormatter))
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/JaxbGrensesnittAvstemmingsdata.kt b/src/main/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/JaxbGrensesnittAvstemmingsdata.kt
index d469c55b..c2e6b08c 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/JaxbGrensesnittAvstemmingsdata.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/JaxbGrensesnittAvstemmingsdata.kt
@@ -7,7 +7,6 @@ import no.nav.virksomhet.tjenester.avstemming.meldinger.v1.ObjectFactory
import java.io.StringWriter
object JaxbGrensesnittAvstemmingsdata {
-
val jaxbContext = JAXBContext.newInstance(Avstemmingsdata::class.java)
fun tilXml(avstemmingsmelding: Avstemmingsdata): String {
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/Jaxb.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/Jaxb.kt
index 995649e2..9404f18e 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/Jaxb.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/Jaxb.kt
@@ -13,56 +13,61 @@ import javax.xml.stream.XMLInputFactory
import javax.xml.transform.stream.StreamSource
object Jaxb {
-
- val jaxbContext = JAXBContext.newInstance(
- Oppdrag::class.java,
- SimulerBeregningRequest::class.java,
- SimulerBeregningResponse::class.java,
- TssSamhandlerData::class.java,
- )
+ val jaxbContext =
+ JAXBContext.newInstance(
+ Oppdrag::class.java,
+ SimulerBeregningRequest::class.java,
+ SimulerBeregningResponse::class.java,
+ TssSamhandlerData::class.java,
+ )
val xmlInputFactory = XMLInputFactory.newInstance()
fun tilOppdrag(oppdragXml: String): Oppdrag {
- val oppdrag = jaxbContext.createUnmarshaller().unmarshal(
- xmlInputFactory.createXMLStreamReader(StreamSource(StringReader(oppdragXml))),
- Oppdrag::class.java,
- )
+ val oppdrag =
+ jaxbContext.createUnmarshaller().unmarshal(
+ xmlInputFactory.createXMLStreamReader(StreamSource(StringReader(oppdragXml))),
+ Oppdrag::class.java,
+ )
return oppdrag.value
}
fun tilXml(oppdrag: Oppdrag): String {
val stringWriter = StringWriter()
- val marshaller = jaxbContext.createMarshaller().apply {
- setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
- }
+ val marshaller =
+ jaxbContext.createMarshaller().apply {
+ setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
+ }
marshaller.marshal(ObjectFactory().createOppdrag(oppdrag), stringWriter)
return stringWriter.toString()
}
fun tilXml(request: SimulerBeregningRequest): String {
val stringWriter = StringWriter()
- val marshaller = jaxbContext.createMarshaller().apply {
- setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
- }
+ val marshaller =
+ jaxbContext.createMarshaller().apply {
+ setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
+ }
marshaller.marshal(request, stringWriter)
return stringWriter.toString()
}
fun tilXml(response: SimulerBeregningResponse): String {
val stringWriter = StringWriter()
- val marshaller = jaxbContext.createMarshaller().apply {
- setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
- }
+ val marshaller =
+ jaxbContext.createMarshaller().apply {
+ setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
+ }
marshaller.marshal(response, stringWriter)
return stringWriter.toString()
}
fun tilSimuleringsrespons(responsXml: String): SimulerBeregningResponse {
- val simuleringBeregningResponse = jaxbContext.createUnmarshaller().unmarshal(
- xmlInputFactory.createXMLStreamReader(StreamSource(StringReader(responsXml))),
- SimulerBeregningResponse::class.java,
- )
+ val simuleringBeregningResponse =
+ jaxbContext.createUnmarshaller().unmarshal(
+ xmlInputFactory.createXMLStreamReader(StreamSource(StringReader(responsXml))),
+ SimulerBeregningResponse::class.java,
+ )
return simuleringBeregningResponse.value
}
@@ -76,10 +81,11 @@ object Jaxb {
}
fun tilTssSamhandlerData(responsXml: String): TssSamhandlerData {
- val tssSamhandlerData = jaxbContext.createUnmarshaller().unmarshal(
- xmlInputFactory.createXMLStreamReader(StreamSource(StringReader(responsXml))),
- TssSamhandlerData::class.java,
- )
+ val tssSamhandlerData =
+ jaxbContext.createUnmarshaller().unmarshal(
+ xmlInputFactory.createXMLStreamReader(StreamSource(StringReader(responsXml))),
+ TssSamhandlerData::class.java,
+ )
return tssSamhandlerData.value
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMapper.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMapper.kt
index 6b6e0db9..3a0a728c 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMapper.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMapper.kt
@@ -13,38 +13,40 @@ import java.time.format.DateTimeFormatter
@Component
class OppdragMapper {
-
private val objectFactory = ObjectFactory()
val tidspunktFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS")
fun tilOppdrag110(utbetalingsoppdrag: Utbetalingsoppdrag): Oppdrag110 {
- val avstemming = objectFactory.createAvstemming115().apply {
- nokkelAvstemming = utbetalingsoppdrag.avstemmingTidspunkt.format(tidspunktFormatter)
- kodeKomponent = fagområdeTilAvleverendeKomponentKode(utbetalingsoppdrag.fagSystem)
- tidspktMelding = utbetalingsoppdrag.avstemmingTidspunkt.format(tidspunktFormatter)
- }
+ val avstemming =
+ objectFactory.createAvstemming115().apply {
+ nokkelAvstemming = utbetalingsoppdrag.avstemmingTidspunkt.format(tidspunktFormatter)
+ kodeKomponent = fagområdeTilAvleverendeKomponentKode(utbetalingsoppdrag.fagSystem)
+ tidspktMelding = utbetalingsoppdrag.avstemmingTidspunkt.format(tidspunktFormatter)
+ }
- val oppdragsEnhet = objectFactory.createOppdragsEnhet120().apply {
- enhet = OppdragSkjemaConstants.ENHET
- typeEnhet = OppdragSkjemaConstants.ENHET_TYPE
- datoEnhetFom = OppdragSkjemaConstants.ENHET_DATO_FOM.toXMLDate()
- }
+ val oppdragsEnhet =
+ objectFactory.createOppdragsEnhet120().apply {
+ enhet = OppdragSkjemaConstants.ENHET
+ typeEnhet = OppdragSkjemaConstants.ENHET_TYPE
+ datoEnhetFom = OppdragSkjemaConstants.ENHET_DATO_FOM.toXMLDate()
+ }
- val oppdrag110 = objectFactory.createOppdrag110().apply {
- kodeAksjon = OppdragSkjemaConstants.KODE_AKSJON
- kodeEndring = EndringsKode.fromKode(utbetalingsoppdrag.kodeEndring.name).kode
- kodeFagomraade = utbetalingsoppdrag.fagSystem
- fagsystemId = utbetalingsoppdrag.saksnummer
- utbetFrekvens = UtbetalingsfrekvensKode.MÅNEDLIG.kode
- oppdragGjelderId = utbetalingsoppdrag.aktoer
- datoOppdragGjelderFom = OppdragSkjemaConstants.OPPDRAG_GJELDER_DATO_FOM.toXMLDate()
- saksbehId = utbetalingsoppdrag.saksbehandlerId
- avstemming115 = avstemming
- oppdragsEnhet120.add(oppdragsEnhet)
- utbetalingsoppdrag.utbetalingsperiode.map { periode ->
- oppdragsLinje150.add(tilOppdragsLinje150(utbetalingsperiode = periode, utbetalingsoppdrag = utbetalingsoppdrag))
+ val oppdrag110 =
+ objectFactory.createOppdrag110().apply {
+ kodeAksjon = OppdragSkjemaConstants.KODE_AKSJON
+ kodeEndring = EndringsKode.fromKode(utbetalingsoppdrag.kodeEndring.name).kode
+ kodeFagomraade = utbetalingsoppdrag.fagSystem
+ fagsystemId = utbetalingsoppdrag.saksnummer
+ utbetFrekvens = UtbetalingsfrekvensKode.MÅNEDLIG.kode
+ oppdragGjelderId = utbetalingsoppdrag.aktoer
+ datoOppdragGjelderFom = OppdragSkjemaConstants.OPPDRAG_GJELDER_DATO_FOM.toXMLDate()
+ saksbehId = utbetalingsoppdrag.saksbehandlerId
+ avstemming115 = avstemming
+ oppdragsEnhet120.add(oppdragsEnhet)
+ utbetalingsoppdrag.utbetalingsperiode.map { periode ->
+ oppdragsLinje150.add(tilOppdragsLinje150(utbetalingsperiode = periode, utbetalingsoppdrag = utbetalingsoppdrag))
+ }
}
- }
return oppdrag110
}
@@ -53,9 +55,10 @@ class OppdragMapper {
utbetalingsperiode: Utbetalingsperiode,
utbetalingsoppdrag: Utbetalingsoppdrag,
): OppdragsLinje150 {
- val attestant = objectFactory.createAttestant180().apply {
- attestantId = utbetalingsoppdrag.saksbehandlerId
- }
+ val attestant =
+ objectFactory.createAttestant180().apply {
+ attestantId = utbetalingsoppdrag.saksbehandlerId
+ }
return objectFactory.createOppdragsLinje150().apply {
kodeEndringLinje =
@@ -78,11 +81,12 @@ class OppdragMapper {
sats = utbetalingsperiode.sats
fradragTillegg = OppdragSkjemaConstants.FRADRAG_TILLEGG
typeSats = SatsTypeKode.fromKode(utbetalingsperiode.satsType.name).kode
- brukKjoreplan = if (utbetalingsoppdrag.gOmregning) {
- OppdragSkjemaConstants.BRUK_KJØREPLAN_G_OMBEREGNING
- } else {
- OppdragSkjemaConstants.BRUK_KJØREPLAN_DEFAULT
- }
+ brukKjoreplan =
+ if (utbetalingsoppdrag.gOmregning) {
+ OppdragSkjemaConstants.BRUK_KJØREPLAN_G_OMBEREGNING
+ } else {
+ OppdragSkjemaConstants.BRUK_KJØREPLAN_DEFAULT
+ }
saksbehId = utbetalingsoppdrag.saksbehandlerId
utbetalesTilId = utbetalingsperiode.utbetalesTil
henvisning = utbetalingsperiode.behandlingId.toString()
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt
index 136f39be..9b432829 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt
@@ -2,7 +2,7 @@ package no.nav.familie.oppdrag.iverksetting
import jakarta.jms.TextMessage
import no.nav.familie.kontrakter.felles.oppdrag.OppdragStatus
-import no.nav.familie.oppdrag.config.ApplicationConfig.Companion.LOKALE_PROFILER
+import no.nav.familie.oppdrag.config.ApplicationConfig.Companion.lokaleProfiler
import no.nav.familie.oppdrag.domene.id
import no.nav.familie.oppdrag.repository.OppdragLagerRepository
import no.nav.familie.oppdrag.repository.oppdragStatus
@@ -20,8 +20,7 @@ class OppdragMottaker(
val oppdragLagerRepository: OppdragLagerRepository,
val env: Environment,
) {
-
- internal var LOG = LoggerFactory.getLogger(OppdragMottaker::class.java)
+ internal var log = LoggerFactory.getLogger(OppdragMottaker::class.java)
private val secureLogger = LoggerFactory.getLogger("secureLogger")
@Transactional
@@ -37,7 +36,7 @@ class OppdragMottaker(
private fun behandleMelding(melding: TextMessage) {
var svarFraOppdrag = melding.text as String
- if (!env.activeProfiles.any { it in LOKALE_PROFILER }) {
+ if (!env.activeProfiles.any { it in lokaleProfiler }) {
if (svarFraOppdrag.contains("ns2:oppdrag")) {
svarFraOppdrag = svarFraOppdrag.replace("oppdrag xmlns", "ns2:oppdrag xmlns:ns2")
} else if (svarFraOppdrag.contains("ns6:oppdrag")) {
@@ -47,24 +46,27 @@ class OppdragMottaker(
val kvittering = lesKvittering(svarFraOppdrag)
val oppdragId = kvittering.id
- LOG.info("Mottatt melding på kvitteringskø for fagsak $oppdragId: Status ${kvittering.status}, se securelogg for beskrivende melding")
+ log.info(
+ "Mottatt melding på kvitteringskø for fagsak $oppdragId: Status ${kvittering.status}, se securelogg for beskrivende melding",
+ )
secureLogger.info(
"Mottatt melding på kvitteringskø for fagsak $oppdragId: Status ${kvittering.status}, " +
"svar ${kvittering.mmel?.beskrMelding ?: "Beskrivende melding ikke satt fra OS"}",
)
- LOG.debug("Henter oppdrag $oppdragId fra databasen")
+ log.debug("Henter oppdrag $oppdragId fra databasen")
- val førsteOppdragUtenKvittering = oppdragLagerRepository.hentKvitteringsinformasjon(oppdragId)
- .find { oppdrag -> oppdrag.status == OppdragStatus.LAGT_PÅ_KØ }
+ val førsteOppdragUtenKvittering =
+ oppdragLagerRepository.hentKvitteringsinformasjon(oppdragId)
+ .find { oppdrag -> oppdrag.status == OppdragStatus.LAGT_PÅ_KØ }
if (førsteOppdragUtenKvittering == null) {
- LOG.warn("Oppdraget tilknyttet mottatt kvittering har uventet status i databasen. Oppdraget er: $oppdragId")
+ log.warn("Oppdraget tilknyttet mottatt kvittering har uventet status i databasen. Oppdraget er: $oppdragId")
return
}
val oppdatertkvitteringsmelding = kvittering.mmel ?: førsteOppdragUtenKvittering.kvitteringsmelding
val status = hentStatus(kvittering)
- LOG.debug("Lagrer oppdatert oppdrag $oppdragId i databasen med ny status $status")
+ log.debug("Lagrer oppdatert oppdrag $oppdragId i databasen med ny status $status")
oppdragLagerRepository.oppdaterKvitteringsmelding(
oppdragId = oppdragId,
oppdragStatus = status,
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragSenderMQ.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragSenderMQ.kt
index cb0fe8f2..d96fd2d4 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragSenderMQ.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragSenderMQ.kt
@@ -16,7 +16,6 @@ class OppdragSenderMQ(
@Value("\${oppdrag.mq.enabled}") val erEnabled: String,
@Value("\${oppdrag.mq.mottak}") val kvitteringsKø: String,
) : OppdragSender {
-
override fun sendOppdrag(oppdrag: Oppdrag): String {
if (!erEnabled.toBoolean()) {
LOG.info("MQ-integrasjon mot oppdrag er skrudd av")
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragSkjemaConstants.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragSkjemaConstants.kt
index 8fc2bd68..48f6489d 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragSkjemaConstants.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragSkjemaConstants.kt
@@ -9,7 +9,6 @@ import javax.xml.datatype.DatatypeFactory
import javax.xml.datatype.XMLGregorianCalendar
class OppdragSkjemaConstants {
-
companion object {
val OPPDRAG_GJELDER_DATO_FOM: LocalDate = LocalDate.of(2000, 1, 1)
const val KODE_AKSJON = "1"
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/JaxbKonsistensavstemming.kt b/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/JaxbKonsistensavstemming.kt
index ff481dc6..18d4efa4 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/JaxbKonsistensavstemming.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/JaxbKonsistensavstemming.kt
@@ -6,13 +6,13 @@ import no.nav.virksomhet.tjenester.avstemming.v1.SendAsynkronKonsistensavstemmin
import java.io.StringWriter
object JaxbKonsistensavstemming {
-
val jaxbContext = JAXBContext.newInstance(SendAsynkronKonsistensavstemmingsdata::class.java)
fun tilXml(konsistensavstemmingRequest: SendAsynkronKonsistensavstemmingsdata): String {
- val marshaller = jaxbContext.createMarshaller().apply {
- setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
- }
+ val marshaller =
+ jaxbContext.createMarshaller().apply {
+ setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
+ }
val stringWriter = StringWriter()
marshaller.marshal(konsistensavstemmingRequest, stringWriter)
return stringWriter.toString()
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingConstants.kt b/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingConstants.kt
index 26db8fb9..b30dbb8d 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingConstants.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingConstants.kt
@@ -1,7 +1,6 @@
package no.nav.familie.oppdrag.konsistensavstemming
class KonsistensavstemmingConstants {
-
companion object {
const val START = "START"
const val AVSLUTT = "AVSL"
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingMapper.kt b/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingMapper.kt
index 90b37471..e220caaa 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingMapper.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingMapper.kt
@@ -34,7 +34,6 @@ class KonsistensavstemmingMapper(
private val sendAvsluttmelding: Boolean,
transaksjonsId: UUID? = UUID.randomUUID(),
) {
-
private val tidspunktFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS")
private val datoFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
val avstemmingId = AvstemmingMapper.encodeUUIDBase64(transaksjonsId ?: UUID.randomUUID())
@@ -45,11 +44,12 @@ class KonsistensavstemmingMapper(
fun lagAvstemmingsmeldinger(): List =
when {
sendStartmelding && sendAvsluttmelding -> (
- listOf(lagStartmelding()) + lagDatameldinger() + listOf(
- lagTotaldata(),
- lagSluttmelding(),
- )
- )
+ listOf(lagStartmelding()) + lagDatameldinger() +
+ listOf(
+ lagTotaldata(),
+ lagSluttmelding(),
+ )
+ )
sendStartmelding -> (listOf(lagStartmelding()) + lagDatameldinger())
sendAvsluttmelding -> (lagDatameldinger() + listOf(lagTotaldata(), lagSluttmelding()))
else -> lagDatameldinger()
@@ -111,10 +111,11 @@ class KonsistensavstemmingMapper(
refDelytelseId = utbetalingsoppdrag.saksnummer + it
}
klassifikasjonKode = utbetalingsperiode.klassifisering
- vedtakPeriode = Periode().apply {
- fom = utbetalingsperiode.vedtakdatoFom.format(datoFormatter)
- tom = utbetalingsperiode.vedtakdatoTom.format(datoFormatter)
- }
+ vedtakPeriode =
+ Periode().apply {
+ fom = utbetalingsperiode.vedtakdatoFom.format(datoFormatter)
+ tom = utbetalingsperiode.vedtakdatoTom.format(datoFormatter)
+ }
sats = utbetalingsperiode.sats
satstypeKode = SatsTypeKode.fromKode(utbetalingsperiode.satsType.name).kode
brukKjoreplan = OppdragSkjemaConstants.BRUK_KJØREPLAN_DEFAULT
@@ -166,11 +167,12 @@ class KonsistensavstemmingMapper(
private fun lagTotaldata(): Konsistensavstemmingsdata {
val konsistensavstemmingsdata = lagAksjonsmelding(KonsistensavstemmingConstants.DATA)
konsistensavstemmingsdata.apply {
- totaldata = Totaldata().apply {
- totalAntall = antallOppdrag.toBigInteger() + aggregertAntallOppdrag.toBigInteger()
- totalBelop = BigDecimal.valueOf(totalBeløp) + BigDecimal.valueOf(aggregertTotalBeløp)
- fortegn = getFortegn(totalBeløp + aggregertTotalBeløp)
- }
+ totaldata =
+ Totaldata().apply {
+ totalAntall = antallOppdrag.toBigInteger() + aggregertAntallOppdrag.toBigInteger()
+ totalBelop = BigDecimal.valueOf(totalBeløp) + BigDecimal.valueOf(aggregertTotalBeløp)
+ fortegn = getFortegn(totalBeløp + aggregertTotalBeløp)
+ }
}
return konsistensavstemmingsdata
}
@@ -203,7 +205,6 @@ class KonsistensavstemmingMapper(
}
companion object {
-
val LOG: Logger = LoggerFactory.getLogger(KonsistensavstemmingMapper::class.java)
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/InsertUpdateRepository.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/InsertUpdateRepository.kt
index b2b7a575..52d1cbc7 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/InsertUpdateRepository.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/InsertUpdateRepository.kt
@@ -1,10 +1,11 @@
package no.nav.familie.oppdrag.repository
interface InsertUpdateRepository {
-
fun insert(t: T): T
+
fun insertAll(list: List): List
fun update(t: T): T
+
fun updateAll(list: List): List
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/InsertUpdateRepositoryImpl.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/InsertUpdateRepositoryImpl.kt
index 2e9a2d94..6a526c7e 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/InsertUpdateRepositoryImpl.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/InsertUpdateRepositoryImpl.kt
@@ -6,7 +6,6 @@ import org.springframework.transaction.annotation.Transactional
@Component
class InsertUpdateRepositoryImpl(val entityOperations: JdbcAggregateOperations) : InsertUpdateRepository {
-
override fun insert(t: T): T {
return entityOperations.insert(t)
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/Kvitteringsinformasjon.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/Kvitteringsinformasjon.kt
index 534aecc6..193348d2 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/Kvitteringsinformasjon.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/Kvitteringsinformasjon.kt
@@ -27,8 +27,10 @@ val Kvitteringsinformasjon.id: OppdragId
}
object KvitteringsinformasjonRowMapper : RowMapper {
-
- override fun mapRow(resultSet: ResultSet, rowNumbers: Int): Kvitteringsinformasjon {
+ override fun mapRow(
+ resultSet: ResultSet,
+ rowNumbers: Int,
+ ): Kvitteringsinformasjon {
return Kvitteringsinformasjon(
fagsystem = resultSet.getString("fagsystem"),
personIdent = resultSet.getString("person_ident"),
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/MellomlagringKonsistensavstemmingRepository.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/MellomlagringKonsistensavstemmingRepository.kt
index 5a95ea01..551d659a 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/MellomlagringKonsistensavstemmingRepository.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/MellomlagringKonsistensavstemmingRepository.kt
@@ -8,10 +8,7 @@ import java.util.UUID
interface MellomlagringKonsistensavstemmingRepository :
RepositoryInterface,
InsertUpdateRepository {
-
- fun findAllByTransaksjonsId(
- transaksjonsId: UUID,
- ): List
+ fun findAllByTransaksjonsId(transaksjonsId: UUID): List
@Query(
"SELECT COALESCE(sum(antall_oppdrag),0) from mellomlagring_konsistensavstemming WHERE transaksjons_id = :transaksjonsId",
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLager.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLager.kt
index 8ee2cbf1..6282d5e8 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLager.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLager.kt
@@ -28,10 +28,12 @@ data class OppdragLager(
val kvitteringsmelding: Mmel?,
val versjon: Int = 0,
) {
-
companion object {
-
- fun lagFraOppdrag(utbetalingsoppdrag: Utbetalingsoppdrag, oppdrag: Oppdrag, versjon: Int = 0): OppdragLager {
+ fun lagFraOppdrag(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ oppdrag: Oppdrag,
+ versjon: Int = 0,
+ ): OppdragLager {
return OppdragLager(
personIdent = utbetalingsoppdrag.aktoer,
fagsystem = utbetalingsoppdrag.fagSystem,
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepository.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepository.kt
index 05b0e33f..caa465bb 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepository.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepository.kt
@@ -7,13 +7,36 @@ import no.trygdeetaten.skjema.oppdrag.Mmel
import java.time.LocalDateTime
interface OppdragLagerRepository {
+ fun hentOppdrag(
+ oppdragId: OppdragId,
+ versjon: Int = 0,
+ ): OppdragLager
+
+ fun hentUtbetalingsoppdrag(
+ oppdragId: OppdragId,
+ versjon: Int = 0,
+ ): Utbetalingsoppdrag
+
+ fun opprettOppdrag(
+ oppdragLager: OppdragLager,
+ versjon: Int = 0,
+ )
+
+ fun oppdaterStatus(
+ oppdragId: OppdragId,
+ oppdragStatus: OppdragStatus,
+ versjon: Int = 0,
+ )
- fun hentOppdrag(oppdragId: OppdragId, versjon: Int = 0): OppdragLager
- fun hentUtbetalingsoppdrag(oppdragId: OppdragId, versjon: Int = 0): Utbetalingsoppdrag
- fun opprettOppdrag(oppdragLager: OppdragLager, versjon: Int = 0)
- fun oppdaterStatus(oppdragId: OppdragId, oppdragStatus: OppdragStatus, versjon: Int = 0)
fun hentKvitteringsinformasjon(oppdragId: OppdragId): List
- fun oppdaterKvitteringsmelding(oppdragId: OppdragId, oppdragStatus: OppdragStatus, kvittering: Mmel?, versjon: Int = 0)
+
+ fun oppdaterKvitteringsmelding(
+ oppdragId: OppdragId,
+ oppdragStatus: OppdragStatus,
+ kvittering: Mmel?,
+ versjon: Int = 0,
+ )
+
fun hentIverksettingerForGrensesnittavstemming(
fomTidspunkt: LocalDateTime,
tomTidspunkt: LocalDateTime,
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepositoryJdbc.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepositoryJdbc.kt
index 022bc1a0..70cdf3f4 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepositoryJdbc.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepositoryJdbc.kt
@@ -17,86 +17,109 @@ import java.util.UUID
@Repository
class OppdragLagerRepositoryJdbc(val jdbcTemplate: NamedParameterJdbcTemplate) : OppdragLagerRepository {
+ internal val log = LoggerFactory.getLogger(OppdragLagerRepositoryJdbc::class.java)
- internal var LOG = LoggerFactory.getLogger(OppdragLagerRepositoryJdbc::class.java)
-
- override fun hentOppdrag(oppdragId: OppdragId, versjon: Int): OppdragLager {
- val hentStatement = "SELECT * FROM oppdrag_lager " +
- "WHERE behandling_id = :behandlingId AND person_ident = :personIdent AND fagsystem = :fagsystem " +
- "AND versjon = :versjon"
+ override fun hentOppdrag(
+ oppdragId: OppdragId,
+ versjon: Int,
+ ): OppdragLager {
+ val hentStatement =
+ "SELECT * FROM oppdrag_lager " +
+ "WHERE behandling_id = :behandlingId AND person_ident = :personIdent AND fagsystem = :fagsystem " +
+ "AND versjon = :versjon"
- val values = MapSqlParameterSource()
- .addValue("behandlingId", oppdragId.behandlingsId)
- .addValue("personIdent", oppdragId.personIdent)
- .addValue("fagsystem", oppdragId.fagsystem)
- .addValue("versjon", versjon)
+ val values =
+ MapSqlParameterSource()
+ .addValue("behandlingId", oppdragId.behandlingsId)
+ .addValue("personIdent", oppdragId.personIdent)
+ .addValue("fagsystem", oppdragId.fagsystem)
+ .addValue("versjon", versjon)
val listeAvOppdrag = jdbcTemplate.query(hentStatement, values, OppdragLagerRowMapper())
return when (listeAvOppdrag.size) {
0 -> {
- LOG.error("Feil ved henting av oppdrag. Fant ingen oppdrag med id $oppdragId")
+ log.error("Feil ved henting av oppdrag. Fant ingen oppdrag med id $oppdragId")
throw NoSuchElementException("Feil ved henting av oppdrag. Fant ingen oppdrag med id $oppdragId")
}
1 -> listeAvOppdrag[0]
else -> {
- LOG.error("Feil ved henting av oppdrag. Fant fler oppdrag med id $oppdragId")
+ log.error("Feil ved henting av oppdrag. Fant fler oppdrag med id $oppdragId")
throw Exception("Feil ved henting av oppdrag. Fant fler oppdrag med id $oppdragId")
}
}
}
- override fun opprettOppdrag(oppdragLager: OppdragLager, versjon: Int) {
- val insertStatement = "INSERT INTO oppdrag_lager " +
- "(id, utgaaende_oppdrag, status, opprettet_tidspunkt, person_ident, fagsak_id, behandling_id, fagsystem, avstemming_tidspunkt, utbetalingsoppdrag, versjon)" +
- " VALUES (:id,:utgåendeOppdrag,:status,:opprettetTid,:personIdent,:fagsakId,:behandlingId,:fagsystem,:avstemmingTid,:utbetalingsoppdrag,:versjon)"
-
- val values = MapSqlParameterSource()
- .addValue("id", UUID.randomUUID())
- .addValue("utgåendeOppdrag", oppdragLager.utgåendeOppdrag)
- .addValue("status", oppdragLager.status.name)
- .addValue("opprettetTid", oppdragLager.opprettetTidspunkt)
- .addValue("personIdent", oppdragLager.personIdent)
- .addValue("fagsakId", oppdragLager.fagsakId)
- .addValue("behandlingId", oppdragLager.behandlingId)
- .addValue("fagsystem", oppdragLager.fagsystem)
- .addValue("avstemmingTid", oppdragLager.avstemmingTidspunkt)
- .addValue("utbetalingsoppdrag", objectMapper.writeValueAsString(oppdragLager.utbetalingsoppdrag))
- .addValue("versjon", versjon)
+ override fun opprettOppdrag(
+ oppdragLager: OppdragLager,
+ versjon: Int,
+ ) {
+ val insertStatement =
+ "INSERT INTO oppdrag_lager " +
+ "(id, utgaaende_oppdrag, status, opprettet_tidspunkt, person_ident, fagsak_id, " +
+ "behandling_id, fagsystem, avstemming_tidspunkt, utbetalingsoppdrag, versjon)" +
+ " VALUES (:id,:utgåendeOppdrag,:status,:opprettetTid,:personIdent,:fagsakId," +
+ ":behandlingId,:fagsystem,:avstemmingTid,:utbetalingsoppdrag,:versjon)"
+
+ val values =
+ MapSqlParameterSource()
+ .addValue("id", UUID.randomUUID())
+ .addValue("utgåendeOppdrag", oppdragLager.utgåendeOppdrag)
+ .addValue("status", oppdragLager.status.name)
+ .addValue("opprettetTid", oppdragLager.opprettetTidspunkt)
+ .addValue("personIdent", oppdragLager.personIdent)
+ .addValue("fagsakId", oppdragLager.fagsakId)
+ .addValue("behandlingId", oppdragLager.behandlingId)
+ .addValue("fagsystem", oppdragLager.fagsystem)
+ .addValue("avstemmingTid", oppdragLager.avstemmingTidspunkt)
+ .addValue("utbetalingsoppdrag", objectMapper.writeValueAsString(oppdragLager.utbetalingsoppdrag))
+ .addValue("versjon", versjon)
jdbcTemplate.update(insertStatement, values)
}
- override fun oppdaterStatus(oppdragId: OppdragId, oppdragStatus: OppdragStatus, versjon: Int) {
- val update = "UPDATE oppdrag_lager SET status = :status " +
- "WHERE person_ident = :personIdent " +
- "AND fagsystem = :fagsystem " +
- "AND behandling_id = :behandlingId " +
- "AND versjon = :versjon"
-
- val values = MapSqlParameterSource()
- .addValue("status", oppdragStatus.name)
- .addValue("personIdent", oppdragId.personIdent)
- .addValue("fagsystem", oppdragId.fagsystem)
- .addValue("behandlingId", oppdragId.behandlingsId)
- .addValue("versjon", versjon)
+ override fun oppdaterStatus(
+ oppdragId: OppdragId,
+ oppdragStatus: OppdragStatus,
+ versjon: Int,
+ ) {
+ val update =
+ "UPDATE oppdrag_lager SET status = :status " +
+ "WHERE person_ident = :personIdent " +
+ "AND fagsystem = :fagsystem " +
+ "AND behandling_id = :behandlingId " +
+ "AND versjon = :versjon"
+
+ val values =
+ MapSqlParameterSource()
+ .addValue("status", oppdragStatus.name)
+ .addValue("personIdent", oppdragId.personIdent)
+ .addValue("fagsystem", oppdragId.fagsystem)
+ .addValue("behandlingId", oppdragId.behandlingsId)
+ .addValue("versjon", versjon)
jdbcTemplate.update(update, values)
}
- override fun oppdaterKvitteringsmelding(oppdragId: OppdragId, oppdragStatus: OppdragStatus, kvittering: Mmel?, versjon: Int) {
+ override fun oppdaterKvitteringsmelding(
+ oppdragId: OppdragId,
+ oppdragStatus: OppdragStatus,
+ kvittering: Mmel?,
+ versjon: Int,
+ ) {
val updateStatement =
"UPDATE oppdrag_lager SET status = :status, kvitteringsmelding = :kvitteringsmelding" +
" WHERE person_ident = :personIdent AND fagsystem = :fagsystem AND behandling_id = :behandlingId AND versjon = :versjon"
- val values = MapSqlParameterSource()
- .addValue("status", oppdragStatus.name)
- .addValue("kvitteringsmelding", objectMapper.writeValueAsString(kvittering))
- .addValue("personIdent", oppdragId.personIdent)
- .addValue("fagsystem", oppdragId.fagsystem)
- .addValue("behandlingId", oppdragId.behandlingsId)
- .addValue("versjon", versjon)
+ val values =
+ MapSqlParameterSource()
+ .addValue("status", oppdragStatus.name)
+ .addValue("kvitteringsmelding", objectMapper.writeValueAsString(kvittering))
+ .addValue("personIdent", oppdragId.personIdent)
+ .addValue("fagsystem", oppdragId.fagsystem)
+ .addValue("behandlingId", oppdragId.behandlingsId)
+ .addValue("versjon", versjon)
jdbcTemplate.update(updateStatement, values)
}
@@ -115,28 +138,38 @@ class OppdragLagerRepositoryJdbc(val jdbcTemplate: NamedParameterJdbcTemplate) :
WHERE avstemming_tidspunkt >= :fomTidspunkt AND avstemming_tidspunkt < :tomTidspunkt AND fagsystem = :fagsystem
ORDER BY behandling_id ASC OFFSET :offset LIMIT :limit
"""
- val values = MapSqlParameterSource()
- .addValue("fomTidspunkt", fomTidspunkt)
- .addValue("tomTidspunkt", tomTidspunkt)
- .addValue("fagsystem", fagOmråde)
- .addValue("offset", page * antall)
- .addValue("limit", antall)
+ val values =
+ MapSqlParameterSource()
+ .addValue("fomTidspunkt", fomTidspunkt)
+ .addValue("tomTidspunkt", tomTidspunkt)
+ .addValue("fagsystem", fagOmråde)
+ .addValue("offset", page * antall)
+ .addValue("limit", antall)
return jdbcTemplate.query(hentStatement, values, OppdragTilAvstemmingRowMapper)
}
- override fun hentUtbetalingsoppdrag(oppdragId: OppdragId, versjon: Int): Utbetalingsoppdrag {
+ override fun hentUtbetalingsoppdrag(
+ oppdragId: OppdragId,
+ versjon: Int,
+ ): Utbetalingsoppdrag {
val hentStatement =
- "SELECT utbetalingsoppdrag FROM oppdrag_lager WHERE behandling_id = :behandlingId AND person_ident = :personIdent AND fagsystem = :fagsystem AND versjon = :versjon"
-
- val values = MapSqlParameterSource()
- .addValue("behandlingId", oppdragId.behandlingsId)
- .addValue("personIdent", oppdragId.personIdent)
- .addValue("fagsystem", oppdragId.fagsystem)
- .addValue("versjon", versjon)
-
- val jsonUtbetalingsoppdrag = jdbcTemplate.queryForObject(hentStatement, values, String::class.java)
- ?: error("Fant ikke utbetalingsoppdrag for $oppdragId versjon=$versjon")
+ "SELECT utbetalingsoppdrag FROM oppdrag_lager " +
+ "WHERE behandling_id = :behandlingId " +
+ "AND person_ident = :personIdent " +
+ "AND fagsystem = :fagsystem " +
+ "AND versjon = :versjon"
+
+ val values =
+ MapSqlParameterSource()
+ .addValue("behandlingId", oppdragId.behandlingsId)
+ .addValue("personIdent", oppdragId.personIdent)
+ .addValue("fagsystem", oppdragId.fagsystem)
+ .addValue("versjon", versjon)
+
+ val jsonUtbetalingsoppdrag =
+ jdbcTemplate.queryForObject(hentStatement, values, String::class.java)
+ ?: error("Fant ikke utbetalingsoppdrag for $oppdragId versjon=$versjon")
return objectMapper.readValue(jsonUtbetalingsoppdrag)
}
@@ -147,10 +180,11 @@ class OppdragLagerRepositoryJdbc(val jdbcTemplate: NamedParameterJdbcTemplate) :
fagsystem, person_ident, fagsak_id, behandling_id, status, avstemming_tidspunkt, opprettet_tidspunkt, kvitteringsmelding, versjon
FROM oppdrag_lager WHERE behandling_id = :behandlingId AND person_ident = :personIdent AND fagsystem = :fagsystem"""
- val values = MapSqlParameterSource()
- .addValue("behandlingId", oppdragId.behandlingsId)
- .addValue("personIdent", oppdragId.personIdent)
- .addValue("fagsystem", oppdragId.fagsystem)
+ val values =
+ MapSqlParameterSource()
+ .addValue("behandlingId", oppdragId.behandlingsId)
+ .addValue("personIdent", oppdragId.personIdent)
+ .addValue("fagsystem", oppdragId.fagsystem)
return jdbcTemplate.query(hentStatement, values, KvitteringsinformasjonRowMapper)
}
@@ -169,10 +203,11 @@ class OppdragLagerRepositoryJdbc(val jdbcTemplate: NamedParameterJdbcTemplate) :
val status = setOf(OppdragStatus.KVITTERT_OK, OppdragStatus.KVITTERT_MED_MANGLER).map { it.name }
return behandlingIder.chunked(3000).map { behandlingIderChunked ->
- val values = MapSqlParameterSource()
- .addValue("fagsystem", fagsystem)
- .addValue("behandlingIder", behandlingIderChunked)
- .addValue("status", status)
+ val values =
+ MapSqlParameterSource()
+ .addValue("fagsystem", fagsystem)
+ .addValue("behandlingIder", behandlingIderChunked)
+ .addValue("status", status)
jdbcTemplate.query(query, values) { resultSet, _ ->
UtbetalingsoppdragForKonsistensavstemming(
@@ -188,7 +223,8 @@ class OppdragLagerRepositoryJdbc(val jdbcTemplate: NamedParameterJdbcTemplate) :
fagsystem: String,
fagsakIder: Set,
): List {
- val sqlSpørring = """
+ val sqlSpørring =
+ """
SELECT fagsak_id, behandling_id, utbetalingsoppdrag
FROM oppdrag_lager
WHERE (fagsak_id, opprettet_tidspunkt) IN (
@@ -197,7 +233,7 @@ class OppdragLagerRepositoryJdbc(val jdbcTemplate: NamedParameterJdbcTemplate) :
WHERE fagsystem=:fagsystem and fagsak_id IN (:fagsakIder)
GROUP BY fagsak_id
)
- """.trimIndent()
+ """.trimIndent()
return fagsakIder
.chunked(3000)
@@ -217,8 +253,10 @@ class OppdragLagerRepositoryJdbc(val jdbcTemplate: NamedParameterJdbcTemplate) :
}
class OppdragLagerRowMapper : RowMapper {
-
- override fun mapRow(resultSet: ResultSet, rowNumbers: Int): OppdragLager {
+ override fun mapRow(
+ resultSet: ResultSet,
+ rowNumbers: Int,
+ ): OppdragLager {
return OppdragLager(
uuid = UUID.fromString(resultSet.getString("id") ?: UUID.randomUUID().toString()),
fagsystem = resultSet.getString("fagsystem"),
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragTilAvstemming.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragTilAvstemming.kt
index 1e89eb16..5098b924 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragTilAvstemming.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/OppdragTilAvstemming.kt
@@ -22,8 +22,10 @@ data class OppdragTilAvstemming(
)
object OppdragTilAvstemmingRowMapper : RowMapper {
-
- override fun mapRow(resultSet: ResultSet, rowNumbers: Int): OppdragTilAvstemming {
+ override fun mapRow(
+ resultSet: ResultSet,
+ rowNumbers: Int,
+ ): OppdragTilAvstemming {
return OppdragTilAvstemming(
fagsystem = resultSet.getString("fagsystem"),
personIdent = resultSet.getString("person_ident"),
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/RepositoryInterface.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/RepositoryInterface.kt
index c335eecb..393ffeba 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/RepositoryInterface.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/RepositoryInterface.kt
@@ -8,7 +8,6 @@ import org.springframework.data.repository.NoRepositoryBean
*/
@NoRepositoryBean
interface RepositoryInterface : CrudRepository {
-
@Deprecated("Støttes ikke, bruk insert/update")
override fun save(entity: S): S {
error("Not implemented - Use InsertUpdateRepository - insert/update")
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLager.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLager.kt
index 25643d57..16ce86e4 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLager.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLager.kt
@@ -22,7 +22,6 @@ data class SimuleringLager(
@Column("response_xml") var responseXml: String? = null,
@Column("opprettet_tidspunkt") val opprettetTidspunkt: LocalDateTime = LocalDateTime.now(),
) {
-
companion object {
fun lagFraOppdrag(
utbetalingsoppdrag: Utbetalingsoppdrag,
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerRepository.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerRepository.kt
index 796c6620..c991026e 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerRepository.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerRepository.kt
@@ -6,7 +6,6 @@ import java.util.UUID
@Repository
interface SimuleringLagerRepository : RepositoryInterface, InsertUpdateRepository {
-
// language=PostgreSQL
@Query(
"""
@@ -16,5 +15,9 @@ interface SimuleringLagerRepository : RepositoryInterface
ORDER BY sim.opprettet_tidspunkt DESC LIMIT 1
""",
)
- fun finnSisteSimuleringsresultat(fagsystem: String, fagsakId: String, behandlingId: String): SimuleringLager
+ fun finnSisteSimuleringsresultat(
+ fagsystem: String,
+ fagsakId: String,
+ behandlingId: String,
+ ): SimuleringLager
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjeneste.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjeneste.kt
index f34f893a..66db9e4a 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjeneste.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjeneste.kt
@@ -1,9 +1,15 @@
package no.nav.familie.oppdrag.repository
interface SimuleringLagerTjeneste {
-
fun lagreINyTransaksjon(simuleringLager: SimuleringLager)
+
fun oppdater(simuleringLager: SimuleringLager)
+
fun finnAlleSimuleringsLager(): List
- fun hentSisteSimuleringsresultat(fagsystem: String, fagsakId: String, behandlingId: String): SimuleringLager
+
+ fun hentSisteSimuleringsresultat(
+ fagsystem: String,
+ fagsakId: String,
+ behandlingId: String,
+ ): SimuleringLager
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjenesteE2E.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjenesteE2E.kt
index 97036061..d31b81f4 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjenesteE2E.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjenesteE2E.kt
@@ -1,7 +1,6 @@
package no.nav.familie.oppdrag.repository
class SimuleringLagerTjenesteE2E : SimuleringLagerTjeneste {
-
override fun lagreINyTransaksjon(simuleringsLager: SimuleringLager) {
TODO("")
}
@@ -14,7 +13,11 @@ class SimuleringLagerTjenesteE2E : SimuleringLagerTjeneste {
TODO("")
}
- override fun hentSisteSimuleringsresultat(fagsystem: String, fagsakId: String, behandlingId: String): SimuleringLager {
+ override fun hentSisteSimuleringsresultat(
+ fagsystem: String,
+ fagsakId: String,
+ behandlingId: String,
+ ): SimuleringLager {
TODO("")
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjenesteImpl.kt b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjenesteImpl.kt
index 5a1d5267..bf1cc918 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjenesteImpl.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/repository/SimuleringLagerTjenesteImpl.kt
@@ -7,7 +7,6 @@ import org.springframework.transaction.annotation.Transactional
@Service
class SimuleringLagerTjenesteImpl : SimuleringLagerTjeneste {
-
@Autowired lateinit var simuleringLagerRepository: SimuleringLagerRepository
@Transactional(propagation = Propagation.REQUIRES_NEW)
@@ -23,7 +22,11 @@ class SimuleringLagerTjenesteImpl : SimuleringLagerTjeneste {
return simuleringLagerRepository.findAll().toList()
}
- override fun hentSisteSimuleringsresultat(fagsystem: String, fagsakId: String, behandlingId: String): SimuleringLager {
+ override fun hentSisteSimuleringsresultat(
+ fagsystem: String,
+ fagsakId: String,
+ behandlingId: String,
+ ): SimuleringLager {
return simuleringLagerRepository.finnSisteSimuleringsresultat(fagsystem, fagsakId, behandlingId)
}
}
diff --git "a/src/main/kotlin/no/nav/familie/oppdrag/repository/TidligereKj\303\270rtGrensesnittavstemming.kt" "b/src/main/kotlin/no/nav/familie/oppdrag/repository/TidligereKj\303\270rtGrensesnittavstemming.kt"
new file mode 100644
index 00000000..54569220
--- /dev/null
+++ "b/src/main/kotlin/no/nav/familie/oppdrag/repository/TidligereKj\303\270rtGrensesnittavstemming.kt"
@@ -0,0 +1,10 @@
+package no.nav.familie.oppdrag.repository
+
+import org.springframework.data.annotation.Id
+import org.springframework.data.relational.core.mapping.Table
+import java.util.UUID
+
+@Table("tidligere_kjoerte_grensesnittavstemminger")
+class TidligereKjørtGrensesnittavstemming(
+ @Id val id: UUID,
+)
diff --git "a/src/main/kotlin/no/nav/familie/oppdrag/repository/TidligereKj\303\270rteGrensesnittavstemmingerRepository.kt" "b/src/main/kotlin/no/nav/familie/oppdrag/repository/TidligereKj\303\270rteGrensesnittavstemmingerRepository.kt"
new file mode 100644
index 00000000..c67a75f2
--- /dev/null
+++ "b/src/main/kotlin/no/nav/familie/oppdrag/repository/TidligereKj\303\270rteGrensesnittavstemmingerRepository.kt"
@@ -0,0 +1,10 @@
+package no.nav.familie.oppdrag.repository
+
+import org.springframework.data.repository.CrudRepository
+import org.springframework.stereotype.Repository
+import java.util.UUID
+
+@Repository
+interface TidligereKjørteGrensesnittavstemmingerRepository :
+ InsertUpdateRepository,
+ CrudRepository
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/rest/AvstemmingController.kt b/src/main/kotlin/no/nav/familie/oppdrag/rest/AvstemmingController.kt
index aafcede9..57babc98 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/rest/AvstemmingController.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/rest/AvstemmingController.kt
@@ -33,9 +33,10 @@ class AvstemmingController(
@Autowired val grensesnittavstemmingService: GrensesnittavstemmingService,
@Autowired val konsistensavstemmingService: KonsistensavstemmingService,
) {
-
@PostMapping(path = ["/grensesnittavstemming"])
- fun grensesnittavstemming(@RequestBody request: GrensesnittavstemmingRequest): ResponseEntity> {
+ fun grensesnittavstemming(
+ @RequestBody request: GrensesnittavstemmingRequest,
+ ): ResponseEntity> {
LOG.info("Grensesnittavstemming: Kjører for ${request.fagsystem}-oppdrag fra ${request.fra} til ${request.til}")
return Result.runCatching { grensesnittavstemmingService.utførGrensesnittavstemming(request) }
@@ -108,7 +109,6 @@ class AvstemmingController(
ok(konsistensavstemmingService.hentSisteUtbetalingsoppdragForFagsaker(fagsystem.name, fagsakIder))
companion object {
-
val LOG: Logger = LoggerFactory.getLogger(AvstemmingController::class.java)
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/rest/OppdragController.kt b/src/main/kotlin/no/nav/familie/oppdrag/rest/OppdragController.kt
index 64918ae7..73081ebe 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/rest/OppdragController.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/rest/OppdragController.kt
@@ -11,6 +11,7 @@ import no.nav.familie.oppdrag.common.RessursUtils.notFound
import no.nav.familie.oppdrag.common.RessursUtils.ok
import no.nav.familie.oppdrag.iverksetting.OppdragMapper
import no.nav.familie.oppdrag.service.OppdragAlleredeSendtException
+import no.nav.familie.oppdrag.service.OppdragHarAlleredeKvitteringException
import no.nav.familie.oppdrag.service.OppdragService
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.springframework.beans.factory.annotation.Autowired
@@ -29,7 +30,6 @@ class OppdragController(
@Autowired val oppdragService: OppdragService,
@Autowired val oppdragMapper: OppdragMapper,
) {
-
@PostMapping(consumes = [MediaType.APPLICATION_JSON_VALUE], path = ["/oppdrag"])
fun sendOppdrag(
@Valid @RequestBody
@@ -76,7 +76,7 @@ class OppdragController(
}
@PostMapping("resend")
- fun resentOppdrag(
+ fun resendOppdrag(
@Valid @RequestBody
oppdragId: OppdragId,
) {
@@ -98,4 +98,24 @@ class OppdragController(
},
)
}
+
+ @PostMapping(consumes = [MediaType.APPLICATION_JSON_VALUE], path = ["/oppdrag/manuell-kvittering"])
+ fun opprettManuellKvitteringPåOppdrag(
+ @Valid @RequestBody
+ oppdragId: OppdragId,
+ ): ResponseEntity> {
+ return Result.runCatching { oppdragService.opprettManuellKvitteringPåOppdrag(oppdragId) }
+ .fold(
+ onFailure = {
+ if (it is OppdragHarAlleredeKvitteringException) {
+ conflict("Oppdrag med id $oppdragId er allerede kvittert ut.")
+ } else {
+ illegalState("Klarte ikke opprette manuell kvittering for oppdrag med id $oppdragId", it)
+ }
+ },
+ onSuccess = {
+ ok(it.status, it.kvitteringsmelding?.beskrMelding ?: "Savner kvitteringsmelding")
+ },
+ )
+ }
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/rest/SimuleringController.kt b/src/main/kotlin/no/nav/familie/oppdrag/rest/SimuleringController.kt
index 52bf76d1..89f185a2 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/rest/SimuleringController.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/rest/SimuleringController.kt
@@ -26,8 +26,9 @@ import org.springframework.web.bind.annotation.RestController
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@ProtectedWithClaims(issuer = "azuread")
-class SimuleringController(@Autowired val simuleringTjeneste: SimuleringTjeneste) {
-
+class SimuleringController(
+ @Autowired val simuleringTjeneste: SimuleringTjeneste,
+) {
val logger: Logger = LoggerFactory.getLogger(SimuleringController::class.java)
@PostMapping(path = ["/v1"])
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/rest/TilbakekrevingController.kt b/src/main/kotlin/no/nav/familie/oppdrag/rest/TilbakekrevingController.kt
index 1060dbfe..fb38a770 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/rest/TilbakekrevingController.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/rest/TilbakekrevingController.kt
@@ -23,7 +23,6 @@ import java.util.UUID
@RequestMapping("/api/tilbakekreving")
@ProtectedWithClaims(issuer = "azuread")
class TilbakekrevingController(private val økonomiClient: ØkonomiClient) {
-
@PostMapping(consumes = [MediaType.APPLICATION_JSON_VALUE], path = ["/iverksett/{behandlingId}"])
fun iverksettVedtak(
@PathVariable("behandlingId") behandlingId: UUID,
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/service/GrensesnittavstemmingService.kt b/src/main/kotlin/no/nav/familie/oppdrag/service/GrensesnittavstemmingService.kt
index 43cd6811..80462202 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/service/GrensesnittavstemmingService.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/service/GrensesnittavstemmingService.kt
@@ -7,20 +7,23 @@ import no.nav.familie.kontrakter.felles.oppdrag.GrensesnittavstemmingRequest
import no.nav.familie.oppdrag.avstemming.AvstemmingSender
import no.nav.familie.oppdrag.grensesnittavstemming.GrensesnittavstemmingMapper
import no.nav.familie.oppdrag.repository.OppdragLagerRepository
+import no.nav.familie.oppdrag.repository.TidligereKjørtGrensesnittavstemming
+import no.nav.familie.oppdrag.repository.TidligereKjørteGrensesnittavstemmingerRepository
import no.nav.virksomhet.tjenester.avstemming.meldinger.v1.Grunnlagsdata
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
import java.time.LocalDateTime
+import kotlin.jvm.optionals.getOrNull
@Service
class GrensesnittavstemmingService(
private val avstemmingSender: AvstemmingSender,
private val oppdragLagerRepository: OppdragLagerRepository,
+ private val tidligereKjørteGrensesnittavstemmingerRepository: TidligereKjørteGrensesnittavstemmingerRepository,
@Value("\${grensesnitt.antall:7000}") private val antall: Int,
) {
-
private val secureLogger = LoggerFactory.getLogger("secureLogger")
private var countere: MutableMap> = HashMap()
@@ -31,17 +34,25 @@ class GrensesnittavstemmingService(
}
fun utførGrensesnittavstemming(request: GrensesnittavstemmingRequest) {
- val (fagsystem: String, fra: LocalDateTime, til: LocalDateTime) = request
+ val (fagsystem: String, fra: LocalDateTime, til: LocalDateTime, avstemmingId) = request
+
+ val erGrensesnittavstemmingKjørtPåSammeAvstemmingId =
+ avstemmingId?.let { tidligereKjørteGrensesnittavstemmingerRepository.findById(it).getOrNull() } != null
+ if (erGrensesnittavstemmingKjørtPåSammeAvstemmingId) {
+ log.info("Grensesnittavstemming er allerede fullført for $avstemmingId og vil ikke bli kjørt på nytt")
+ return
+ }
+
var page = 0
var antallOppdragSomSkalAvstemmes = 0
var oppdragSomSkalAvstemmes =
oppdragLagerRepository.hentIverksettingerForGrensesnittavstemming(fra, til, fagsystem, antall, page++)
if (oppdragSomSkalAvstemmes.isEmpty()) {
- LOG.info("Ingen oppdrag å gjennomføre grensesnittavstemming for.")
+ log.info("Ingen oppdrag å gjennomføre grensesnittavstemming for.")
return
}
val avstemmingMapper = GrensesnittavstemmingMapper(fagsystem, fra, til)
- LOG.info("Utfører grensesnittavstemming for id: ${avstemmingMapper.avstemmingId}")
+ log.info("Utfører grensesnittavstemming for id: ${avstemmingMapper.avstemmingId}")
avstemmingSender.sendGrensesnittAvstemming(avstemmingMapper.lagStartmelding())
while (oppdragSomSkalAvstemmes.isNotEmpty()) {
val meldinger = avstemmingMapper.lagAvstemmingsmeldinger(oppdragSomSkalAvstemmes)
@@ -55,7 +66,11 @@ class GrensesnittavstemmingService(
avstemmingSender.sendGrensesnittAvstemming(totalmelding)
avstemmingSender.sendGrensesnittAvstemming(avstemmingMapper.lagSluttmelding())
- LOG.info(
+ if (avstemmingId != null) {
+ tidligereKjørteGrensesnittavstemmingerRepository.insert(TidligereKjørtGrensesnittavstemming(avstemmingId))
+ }
+
+ log.info(
"Fullført grensesnittavstemming for id: ${avstemmingMapper.avstemmingId}" +
" antallOppdragSomSkalAvstemmes=$antallOppdragSomSkalAvstemmes",
)
@@ -67,7 +82,10 @@ class GrensesnittavstemmingService(
oppdaterMetrikker(fagsystem, totalmelding.grunnlag)
}
- private fun oppdaterMetrikker(fagsystem: String, grunnlag: Grunnlagsdata) {
+ private fun oppdaterMetrikker(
+ fagsystem: String,
+ grunnlag: Grunnlagsdata,
+ ) {
val metrikkerForFagsystem = countere.getValue(fagsystem)
metrikkerForFagsystem.getValue(Status.GODKJENT.status).increment(grunnlag.godkjentAntall.toDouble())
@@ -77,43 +95,47 @@ class GrensesnittavstemmingService(
}
private fun opprettMetrikkerForFagsystem(fagsystem: Fagsystem): Map {
- val PACKAGE_NAME = "familie.oppdrag.grensesnittavstemming"
- val godkjentCounter = Metrics.counter(
- PACKAGE_NAME,
- "fagsystem",
- fagsystem.name,
- "status",
- Status.GODKJENT.status,
- "beskrivelse",
- Status.GODKJENT.beskrivelse,
- )
- val avvistCounter = Metrics.counter(
- PACKAGE_NAME,
- "fagsystem",
- fagsystem.name,
- "status",
- Status.AVVIST.status,
- "beskrivelse",
- Status.AVVIST.beskrivelse,
- )
- val manglerCounter = Metrics.counter(
- PACKAGE_NAME,
- "fagsystem",
- fagsystem.name,
- "status",
- Status.MANGLER.status,
- "beskrivelse",
- Status.MANGLER.beskrivelse,
- )
- val varselCounter = Metrics.counter(
- PACKAGE_NAME,
- "fagsystem",
- fagsystem.name,
- "status",
- Status.VARSEL.status,
- "beskrivelse",
- Status.VARSEL.beskrivelse,
- )
+ val packageName = "familie.oppdrag.grensesnittavstemming"
+ val godkjentCounter =
+ Metrics.counter(
+ packageName,
+ "fagsystem",
+ fagsystem.name,
+ "status",
+ Status.GODKJENT.status,
+ "beskrivelse",
+ Status.GODKJENT.beskrivelse,
+ )
+ val avvistCounter =
+ Metrics.counter(
+ packageName,
+ "fagsystem",
+ fagsystem.name,
+ "status",
+ Status.AVVIST.status,
+ "beskrivelse",
+ Status.AVVIST.beskrivelse,
+ )
+ val manglerCounter =
+ Metrics.counter(
+ packageName,
+ "fagsystem",
+ fagsystem.name,
+ "status",
+ Status.MANGLER.status,
+ "beskrivelse",
+ Status.MANGLER.beskrivelse,
+ )
+ val varselCounter =
+ Metrics.counter(
+ packageName,
+ "fagsystem",
+ fagsystem.name,
+ "status",
+ Status.VARSEL.status,
+ "beskrivelse",
+ Status.VARSEL.beskrivelse,
+ )
return hashMapOf(
Status.GODKJENT.status to godkjentCounter,
@@ -124,8 +146,7 @@ class GrensesnittavstemmingService(
}
companion object {
-
- val LOG: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java)
+ val log: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java)
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/service/KonsistensavstemmingService.kt b/src/main/kotlin/no/nav/familie/oppdrag/service/KonsistensavstemmingService.kt
index 70181f40..13f75d77 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/service/KonsistensavstemmingService.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/service/KonsistensavstemmingService.kt
@@ -20,7 +20,6 @@ class KonsistensavstemmingService(
private val oppdragLagerRepository: OppdragLagerRepository,
private val mellomlagringKonsistensavstemmingService: MellomlagringKonsistensavstemmingService,
) {
-
@Transactional
fun utførKonsistensavstemming(
request: KonsistensavstemmingUtbetalingsoppdrag,
@@ -40,9 +39,7 @@ class KonsistensavstemmingService(
)
}
- private fun utførKonsistensavstemming(
- metaInfo: KonsistensavstemmingMetaInfo,
- ) {
+ private fun utførKonsistensavstemming(metaInfo: KonsistensavstemmingMetaInfo) {
if (metaInfo.erFørsteBatchIEnSplittetBatch()) {
mellomlagringKonsistensavstemmingService.sjekkAtDetteErFørsteMelding(metaInfo.transaksjonsId!!)
}
@@ -74,7 +71,10 @@ class KonsistensavstemmingService(
LOG.info("Fullført konsistensavstemming for id ${konsistensavstemmingMapper.avstemmingId}")
}
- fun hentSisteUtbetalingsoppdragForFagsaker(fagsystem: String, fagsakIder: Set): List {
+ fun hentSisteUtbetalingsoppdragForFagsaker(
+ fagsystem: String,
+ fagsakIder: Set,
+ ): List {
return oppdragLagerRepository.hentSisteUtbetalingsoppdragForFagsaker(fagsystem, fagsakIder)
}
@@ -99,12 +99,13 @@ class KonsistensavstemmingService(
val utbetalingsoppdragForKonsistensavstemming =
oppdragLagerRepository.hentUtbetalingsoppdragForKonsistensavstemming(fagsystem, perioderPåBehandling.keys)
- val utbetalingsoppdrag = leggAktuellePerioderISisteUtbetalingsoppdraget(
- utbetalingsoppdragForKonsistensavstemming,
- perioderPåBehandling,
- fødselsnummerPåBehandling,
- utbetalesTilPåBehandling,
- )
+ val utbetalingsoppdrag =
+ leggAktuellePerioderISisteUtbetalingsoppdraget(
+ utbetalingsoppdragForKonsistensavstemming,
+ perioderPåBehandling,
+ fødselsnummerPåBehandling,
+ utbetalesTilPåBehandling,
+ )
utførKonsistensavstemming(
KonsistensavstemmingMetaInfo(
@@ -128,9 +129,7 @@ class KonsistensavstemmingService(
}
}
- private fun opprettKonsistensavstemmingMapper(
- metaInfo: KonsistensavstemmingMetaInfo,
- ): KonsistensavstemmingMapper {
+ private fun opprettKonsistensavstemmingMapper(metaInfo: KonsistensavstemmingMetaInfo): KonsistensavstemmingMapper {
val aggregertAntallOppdrag = mellomlagringKonsistensavstemmingService.hentAggregertAntallOppdrag(metaInfo)
val aggregertTotalBeløp = mellomlagringKonsistensavstemmingService.hentAggregertBeløp(metaInfo)
@@ -158,9 +157,10 @@ class KonsistensavstemmingService(
val utbetalingsoppdragPåFagsak = utbetalingsoppdrag.groupBy { it.fagsakId }
return utbetalingsoppdragPåFagsak.map { (saksnummer, utbetalingsoppdragListe) ->
- val senesteUtbetalingsoppdrag = utbetalingsoppdragListe.maxByOrNull { oppdrag ->
- oppdrag.utbetalingsoppdrag.utbetalingsperiode.maxOf { it.periodeId }
- }?.utbetalingsoppdrag ?: error("Finner ikke seneste behandling for fagsak=$saksnummer")
+ val senesteUtbetalingsoppdrag =
+ utbetalingsoppdragListe.maxByOrNull { oppdrag ->
+ oppdrag.utbetalingsoppdrag.utbetalingsperiode.maxOf { it.periodeId }
+ }?.utbetalingsoppdrag ?: error("Finner ikke seneste behandling for fagsak=$saksnummer")
val behandlingsIderForFagsak = utbetalingsoppdragListe.map { it.behandlingId }.toSet()
@@ -168,17 +168,18 @@ class KonsistensavstemmingService(
perioderPåBehandling.filter { behandlingsIderForFagsak.contains(it.key) }.values.flatten().toSet()
var aktivtFødselsnummer: String? = null
- val perioderTilKonsistensavstemming = utbetalingsoppdragListe.flatMap {
- aktivtFødselsnummer = hentFødselsnummerForBehandling(fødselsnummerPåBehandling, it.behandlingId)
- val utbetalesTil = utbetalesTilPåBehandling[it.behandlingId] ?: aktivtFødselsnummer
-
- it.utbetalingsoppdrag.utbetalingsperiode
- .filter { utbetalingsperiode -> aktuellePeriodeIderForFagsak.contains(utbetalingsperiode.periodeId) }
- // Setter aktivt fødselsnummer på behandling som mottok fra fagsystem
- .map { utbetalingsperiode ->
- utbetalingsperiode.copy(utbetalesTil = utbetalesTil ?: utbetalingsperiode.utbetalesTil)
- }
- }
+ val perioderTilKonsistensavstemming =
+ utbetalingsoppdragListe.flatMap {
+ aktivtFødselsnummer = hentFødselsnummerForBehandling(fødselsnummerPåBehandling, it.behandlingId)
+ val utbetalesTil = utbetalesTilPåBehandling[it.behandlingId] ?: aktivtFødselsnummer
+
+ it.utbetalingsoppdrag.utbetalingsperiode
+ .filter { utbetalingsperiode -> aktuellePeriodeIderForFagsak.contains(utbetalingsperiode.periodeId) }
+ // Setter aktivt fødselsnummer på behandling som mottok fra fagsystem
+ .map { utbetalingsperiode ->
+ utbetalingsperiode.copy(utbetalesTil = utbetalesTil ?: utbetalingsperiode.utbetalesTil)
+ }
+ }
senesteUtbetalingsoppdrag.let {
it.copy(
@@ -190,7 +191,10 @@ class KonsistensavstemmingService(
}
}
- private fun verifyUnikeBehandlinger(periodeIderPåBehandling: Map>, request: KonsistensavstemmingRequestV2) {
+ private fun verifyUnikeBehandlinger(
+ periodeIderPåBehandling: Map>,
+ request: KonsistensavstemmingRequestV2,
+ ) {
if (periodeIderPåBehandling.size != request.perioderForBehandlinger.size) {
val duplikateBehandlinger =
request.perioderForBehandlinger.map { it.behandlingId }.groupingBy { it }.eachCount().filter { it.value > 1 }
@@ -198,13 +202,15 @@ class KonsistensavstemmingService(
}
}
- private fun hentFødselsnummerForBehandling(fødselsnummerPåBehandling: Map, behandlingId: String): String {
+ private fun hentFødselsnummerForBehandling(
+ fødselsnummerPåBehandling: Map,
+ behandlingId: String,
+ ): String {
return fødselsnummerPåBehandling[behandlingId]
?: error("Finnes ikke et aktivt fødselsnummer for behandlingId $behandlingId")
}
companion object {
-
val LOG: Logger = LoggerFactory.getLogger(KonsistensavstemmingService::class.java)
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/service/MellomlagringKonsistensavstemmingService.kt b/src/main/kotlin/no/nav/familie/oppdrag/service/MellomlagringKonsistensavstemmingService.kt
index 9e926817..3f82ff5e 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/service/MellomlagringKonsistensavstemmingService.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/service/MellomlagringKonsistensavstemmingService.kt
@@ -13,18 +13,14 @@ import java.util.UUID
class MellomlagringKonsistensavstemmingService(
private val mellomlagringKonsistensavstemmingRepository: MellomlagringKonsistensavstemmingRepository,
) {
- fun hentAggregertBeløp(
- metaInfo: KonsistensavstemmingMetaInfo,
- ): Long =
+ fun hentAggregertBeløp(metaInfo: KonsistensavstemmingMetaInfo): Long =
if (metaInfo.erSisteBatchIEnSplittetBatch()) {
mellomlagringKonsistensavstemmingRepository.hentAggregertTotalBeløp(metaInfo.transaksjonsId!!)
} else {
0L
}
- fun hentAggregertAntallOppdrag(
- metaInfo: KonsistensavstemmingMetaInfo,
- ): Int {
+ fun hentAggregertAntallOppdrag(metaInfo: KonsistensavstemmingMetaInfo): Int {
return if (metaInfo.erSisteBatchIEnSplittetBatch()) {
mellomlagringKonsistensavstemmingRepository.hentAggregertAntallOppdrag(metaInfo.transaksjonsId!!)
} else {
@@ -37,12 +33,13 @@ class MellomlagringKonsistensavstemmingService(
antalOppdrag: Int,
totalBeløp: Long,
) {
- val mellomlagring = MellomlagringKonsistensavstemming(
- fagsystem = metaInfo.fagsystem,
- transaksjonsId = metaInfo.transaksjonsId!!,
- antallOppdrag = antalOppdrag,
- totalBeløp = totalBeløp,
- )
+ val mellomlagring =
+ MellomlagringKonsistensavstemming(
+ fagsystem = metaInfo.fagsystem,
+ transaksjonsId = metaInfo.transaksjonsId!!,
+ antallOppdrag = antalOppdrag,
+ totalBeløp = totalBeløp,
+ )
mellomlagringKonsistensavstemmingRepository.insert(mellomlagring)
LOG.info("Opprettet mellomlagring for transaksjonsId ${metaInfo.transaksjonsId}")
}
@@ -54,7 +51,6 @@ class MellomlagringKonsistensavstemmingService(
}
companion object {
-
val LOG: Logger = LoggerFactory.getLogger(MellomlagringKonsistensavstemmingService::class.java)
}
}
@@ -67,9 +63,11 @@ data class KonsistensavstemmingMetaInfo(
val sendAvsluttmelding: Boolean,
val utbetalingsoppdrag: List,
) {
-
fun erFørsteBatchIEnSplittetBatch(): Boolean = sendStartmelding && !sendAvsluttmelding
+
fun erSisteBatchIEnSplittetBatch(): Boolean = !sendStartmelding && sendAvsluttmelding
+
fun erSplittetBatchMenIkkeSisteBatch(): Boolean = erSplittetBatch() && !erSisteBatchIEnSplittetBatch()
+
fun erSplittetBatch(): Boolean = !sendStartmelding || !sendAvsluttmelding
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragService.kt b/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragService.kt
index 1f0d4a71..d96b0b98 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragService.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragService.kt
@@ -6,7 +6,15 @@ import no.nav.familie.oppdrag.repository.OppdragLager
import no.trygdeetaten.skjema.oppdrag.Oppdrag
interface OppdragService {
- fun opprettOppdrag(utbetalingsoppdrag: Utbetalingsoppdrag, oppdrag: Oppdrag, versjon: Int)
+ fun opprettOppdrag(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ oppdrag: Oppdrag,
+ versjon: Int,
+ )
+
fun hentStatusForOppdrag(oppdragId: OppdragId): OppdragLager
+
fun resendOppdrag(oppdragId: OppdragId)
+
+ fun opprettManuellKvitteringPåOppdrag(oppdragId: OppdragId): OppdragLager
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragServiceE2E.kt b/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragServiceE2E.kt
index fb5bd292..557d2c0d 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragServiceE2E.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragServiceE2E.kt
@@ -18,9 +18,12 @@ import org.springframework.transaction.annotation.Transactional
class OppdragServiceE2E(
@Autowired private val oppdragLagerRepository: OppdragLagerRepository,
) : OppdragService {
-
@Transactional(rollbackFor = [Throwable::class])
- override fun opprettOppdrag(utbetalingsoppdrag: Utbetalingsoppdrag, oppdrag: Oppdrag, versjon: Int) {
+ override fun opprettOppdrag(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ oppdrag: Oppdrag,
+ versjon: Int,
+ ) {
LOG.debug("Lagrer oppdrag i databasen " + oppdrag.id)
oppdragLagerRepository.opprettOppdrag(OppdragLager.lagFraOppdrag(utbetalingsoppdrag, oppdrag), versjon)
@@ -36,8 +39,11 @@ class OppdragServiceE2E(
throw NotImplementedError("Ikke implementert")
}
- companion object {
+ override fun opprettManuellKvitteringPåOppdrag(oppdragId: OppdragId): OppdragLager {
+ throw NotImplementedError("Ikke implementert")
+ }
+ companion object {
val LOG = LoggerFactory.getLogger(OppdragServiceE2E::class.java)
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragServiceImpl.kt b/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragServiceImpl.kt
index f98798ee..983a980a 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragServiceImpl.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/service/OppdragServiceImpl.kt
@@ -8,6 +8,7 @@ import no.nav.familie.oppdrag.iverksetting.Jaxb
import no.nav.familie.oppdrag.iverksetting.OppdragSender
import no.nav.familie.oppdrag.repository.OppdragLager
import no.nav.familie.oppdrag.repository.OppdragLagerRepository
+import no.trygdeetaten.skjema.oppdrag.Mmel
import no.trygdeetaten.skjema.oppdrag.Oppdrag
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
@@ -21,9 +22,12 @@ class OppdragServiceImpl(
@Autowired private val oppdragSender: OppdragSender,
@Autowired private val oppdragLagerRepository: OppdragLagerRepository,
) : OppdragService {
-
@Transactional(rollbackFor = [Throwable::class])
- override fun opprettOppdrag(utbetalingsoppdrag: Utbetalingsoppdrag, oppdrag: Oppdrag, versjon: Int) {
+ override fun opprettOppdrag(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ oppdrag: Oppdrag,
+ versjon: Int,
+ ) {
LOG.debug("Lagrer oppdrag i databasen " + oppdrag.id)
try {
oppdragLagerRepository.opprettOppdrag(OppdragLager.lagFraOppdrag(utbetalingsoppdrag, oppdrag), versjon)
@@ -52,10 +56,31 @@ class OppdragServiceImpl(
oppdragSender.sendOppdrag(oppdragXml)
}
- companion object {
+ @Transactional
+ override fun opprettManuellKvitteringPåOppdrag(oppdragId: OppdragId): OppdragLager {
+ val oppdrag = oppdragLagerRepository.hentOppdrag(oppdragId)
+
+ if (oppdrag.status != OppdragStatus.LAGT_PÅ_KØ) {
+ throw OppdragHarAlleredeKvitteringException("Oppdrag med id $oppdragId er allerede kvittert ut.")
+ }
+
+ val manuellKvittering = Mmel().apply { beskrMelding = "Manuelt kvittert ut" }
+ oppdragLagerRepository.oppdaterKvitteringsmelding(
+ oppdragId = oppdragId,
+ oppdragStatus = OppdragStatus.KVITTERT_OK,
+ kvittering = manuellKvittering,
+ versjon = oppdrag.versjon + 1,
+ )
+
+ return oppdrag
+ }
+
+ companion object {
val LOG = LoggerFactory.getLogger(OppdragServiceImpl::class.java)
}
}
class OppdragAlleredeSendtException() : RuntimeException()
+
+class OppdragHarAlleredeKvitteringException(melding: String) : RuntimeException(melding)
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimulerBeregningRequestMapper.kt b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimulerBeregningRequestMapper.kt
index 4c0b55fe..e85af37b 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimulerBeregningRequestMapper.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimulerBeregningRequestMapper.kt
@@ -38,11 +38,12 @@ class SimulerBeregningRequestMapper {
tidspktReg = utbetalingsoppdrag.avstemmingTidspunkt.format(tidspunktFormatter)
}
- val oppdragsEnhet = oppdragSkjemaFactory.createEnhet().apply {
- enhet = OppdragSkjemaConstants.ENHET
- typeEnhet = OppdragSkjemaConstants.ENHET_TYPE
- datoEnhetFom = OppdragSkjemaConstants.ENHET_DATO_FOM.toString()
- }
+ val oppdragsEnhet =
+ oppdragSkjemaFactory.createEnhet().apply {
+ enhet = OppdragSkjemaConstants.ENHET
+ typeEnhet = OppdragSkjemaConstants.ENHET_TYPE
+ datoEnhetFom = OppdragSkjemaConstants.ENHET_DATO_FOM.toString()
+ }
return fpServiceTypesFactory.createOppdrag().apply {
kodeEndring = EndringsKode.fromKode(utbetalingsoppdrag.kodeEndring.name).kode
@@ -61,10 +62,14 @@ class SimulerBeregningRequestMapper {
}
}
- private fun tilOppdragsLinje(utbetalingsperiode: Utbetalingsperiode, utbetalingsoppdrag: Utbetalingsoppdrag): Oppdragslinje {
- val attest = oppdragSkjemaFactory.createAttestant().apply {
- attestantId = utbetalingsoppdrag.saksbehandlerId
- }
+ private fun tilOppdragsLinje(
+ utbetalingsperiode: Utbetalingsperiode,
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ ): Oppdragslinje {
+ val attest =
+ oppdragSkjemaFactory.createAttestant().apply {
+ attestantId = utbetalingsoppdrag.saksbehandlerId
+ }
return fpServiceTypesFactory.createOppdragslinje().apply {
kodeEndringLinje =
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringResultatTransformer.kt b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringResultatTransformer.kt
index e9848578..6a338fb7 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringResultatTransformer.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringResultatTransformer.kt
@@ -16,8 +16,10 @@ import java.time.LocalDate
import java.time.format.DateTimeFormatter
class SimuleringResultatTransformer {
-
- fun mapSimulering(beregning: Beregning, utbetalingsoppdrag: Utbetalingsoppdrag): DetaljertSimuleringResultat {
+ fun mapSimulering(
+ beregning: Beregning,
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ ): DetaljertSimuleringResultat {
val mottakerMap = hashMapOf>()
for (periode in beregning.beregningsPeriode) {
for (stoppnivaa in periode.beregningStoppnivaa) {
@@ -33,13 +35,14 @@ class SimuleringResultatTransformer {
}
val requestMottakerId = hentOrgNrEllerFnr(utbetalingsoppdrag.aktoer)
- val simuleringMottakerListe = mottakerMap.map { (utbetalesTilId, simulertPostering) ->
- SimuleringMottaker(
- mottakerNummer = utbetalesTilId,
- simulertPostering = simulertPostering,
- mottakerType = utledMottakerType(utbetalesTilId, hentOrgNrEllerFnr(utbetalesTilId) == requestMottakerId),
- )
- }
+ val simuleringMottakerListe =
+ mottakerMap.map { (utbetalesTilId, simulertPostering) ->
+ SimuleringMottaker(
+ mottakerNummer = utbetalesTilId,
+ simulertPostering = simulertPostering,
+ mottakerType = utledMottakerType(utbetalesTilId, hentOrgNrEllerFnr(utbetalesTilId) == requestMottakerId),
+ )
+ }
return DetaljertSimuleringResultat(simuleringMottakerListe)
}
@@ -52,7 +55,11 @@ class SimuleringResultatTransformer {
betalingType = utledBetalingType(detaljer.belop),
erFeilkonto = stoppnivaa.isFeilkonto,
beløp = detaljer.belop,
- fagOmrådeKode = FagOmrådeKode.fraKode(stoppnivaa.kodeFagomraade.trim()), // Todo: fjerne.trim() når TØB har rettet trailing spaces-feilen (jira: TOB-1509)
+ fagOmrådeKode =
+ FagOmrådeKode.fraKode(
+ stoppnivaa.kodeFagomraade.trim(),
+ ),
+ // Todo: fjerne.trim() når TØB har rettet trailing spaces-feilen (jira: TOB-1509)
fom = parseDato(detaljer.faktiskFom),
tom = parseDato(detaljer.faktiskTom),
forfallsdato = parseDato(stoppnivaa.forfall),
@@ -69,7 +76,10 @@ class SimuleringResultatTransformer {
}
}
- private fun utledMottakerType(utbetalesTilId: String, harSammeAktørIdSomBruker: Boolean): MottakerType {
+ private fun utledMottakerType(
+ utbetalesTilId: String,
+ harSammeAktørIdSomBruker: Boolean,
+ ): MottakerType {
if (harSammeAktørIdSomBruker) {
return MottakerType.BRUKER
}
@@ -102,7 +112,6 @@ class SimuleringResultatTransformer {
}
companion object {
-
private const val DATO_PATTERN = "yyyy-MM-dd"
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringSender.kt b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringSender.kt
index fecb040f..b8639257 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringSender.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringSender.kt
@@ -4,6 +4,5 @@ import no.nav.system.os.tjenester.simulerfpservice.simulerfpservicegrensesnitt.S
import no.nav.system.os.tjenester.simulerfpservice.simulerfpservicegrensesnitt.SimulerBeregningResponse
interface SimuleringSender {
-
fun hentSimulerBeregningResponse(simulerBeregningRequest: SimulerBeregningRequest?): SimulerBeregningResponse
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringSenderImpl.kt b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringSenderImpl.kt
index 4d40d9f2..6db20dff 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringSenderImpl.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringSenderImpl.kt
@@ -12,7 +12,6 @@ import org.springframework.stereotype.Service
@Profile("!dev & !dev_psql_mq")
@Service
class SimuleringSenderImpl(private val port: SimulerFpService) : SimuleringSender {
-
@Override
@Retryable(value = [SimulerBeregningFeilUnderBehandling::class], maxAttempts = 3, backoff = Backoff(delay = 4000))
override fun hentSimulerBeregningResponse(simulerBeregningRequest: SimulerBeregningRequest?): SimulerBeregningResponse {
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjeneste.kt b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjeneste.kt
index f7d30b59..718aebec 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjeneste.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjeneste.kt
@@ -6,7 +6,7 @@ import no.nav.familie.kontrakter.felles.simulering.FeilutbetalingerFraSimulering
import no.nav.familie.kontrakter.felles.simulering.HentFeilutbetalingerFraSimuleringRequest
interface SimuleringTjeneste {
-
fun utførSimuleringOghentDetaljertSimuleringResultat(utbetalingsoppdrag: Utbetalingsoppdrag): DetaljertSimuleringResultat
+
fun hentFeilutbetalinger(request: HentFeilutbetalingerFraSimuleringRequest): FeilutbetalingerFraSimulering
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjenesteImpl.kt b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjenesteImpl.kt
index 4877b012..e62de6b7 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjenesteImpl.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjenesteImpl.kt
@@ -37,7 +37,6 @@ class SimuleringTjenesteImpl(
@Autowired val simulerBeregningRequestMapper: SimulerBeregningRequestMapper,
@Autowired val simuleringLagerTjeneste: SimuleringLagerTjeneste,
) : SimuleringTjeneste {
-
val mapper = jacksonObjectMapper()
val simuleringResultatTransformer = SimuleringResultatTransformer()
@@ -88,46 +87,51 @@ class SimuleringTjenesteImpl(
}
override fun hentFeilutbetalinger(request: HentFeilutbetalingerFraSimuleringRequest): FeilutbetalingerFraSimulering {
- val simuleringLager = simuleringLagerTjeneste.hentSisteSimuleringsresultat(
- request.ytelsestype.kode,
- request.eksternFagsakId,
- request.fagsystemsbehandlingId,
- )
+ val simuleringLager =
+ simuleringLagerTjeneste.hentSisteSimuleringsresultat(
+ request.ytelsestype.kode,
+ request.eksternFagsakId,
+ request.fagsystemsbehandlingId,
+ )
val respons = Jaxb.tilSimuleringsrespons(simuleringLager.responseXml!!)
val simulering = respons.response.simulering
val feilPosteringerMedPositivBeløp = finnFeilPosteringer(simulering)
val alleYtelPosteringer = finnYtelPosteringer(simulering)
- val feilutbetaltPerioder = feilPosteringerMedPositivBeløp.map { feilPostering ->
- val periode = feilPostering.key
- val feilutbetaltBeløp = feilPostering.value.sumOf { it.belop }
- val ytelPosteringerForPeriode = hentYtelPerioder(periode, alleYtelPosteringer)
- FeilutbetaltPeriode(
- fom = LocalDate.parse(periode.periodeFom),
- tom = LocalDate.parse(periode.periodeTom),
- feilutbetaltBeløp = feilutbetaltBeløp,
- tidligereUtbetaltBeløp = summerNegativeYtelPosteringer(
- ytelPosteringerForPeriode,
- alleYtelPosteringer,
- ).abs(),
- nyttBeløp = summerPostiveYtelPosteringer(
- ytelPosteringerForPeriode,
- alleYtelPosteringer,
- ) - feilutbetaltBeløp,
- )
- }
+ val feilutbetaltPerioder =
+ feilPosteringerMedPositivBeløp.map { feilPostering ->
+ val periode = feilPostering.key
+ val feilutbetaltBeløp = feilPostering.value.sumOf { it.belop }
+ val ytelPosteringerForPeriode = hentYtelPerioder(periode, alleYtelPosteringer)
+ FeilutbetaltPeriode(
+ fom = LocalDate.parse(periode.periodeFom),
+ tom = LocalDate.parse(periode.periodeTom),
+ feilutbetaltBeløp = feilutbetaltBeløp,
+ tidligereUtbetaltBeløp =
+ summerNegativeYtelPosteringer(
+ ytelPosteringerForPeriode,
+ alleYtelPosteringer,
+ ).abs(),
+ nyttBeløp =
+ summerPostiveYtelPosteringer(
+ ytelPosteringerForPeriode,
+ alleYtelPosteringer,
+ ) - feilutbetaltBeløp,
+ )
+ }
return FeilutbetalingerFraSimulering(feilutbetaltePerioder = feilutbetaltPerioder)
}
private fun finnFeilPosteringer(simulering: Beregning): Map> {
return simulering.beregningsPeriode.map { beregningsperiode ->
- beregningsperiode to beregningsperiode.beregningStoppnivaa.map { stoppNivå ->
- stoppNivå.beregningStoppnivaaDetaljer.filter { detalj ->
- detalj.typeKlasse == PosteringType.FEILUTBETALING.kode &&
- detalj.belop > BigDecimal.ZERO
- }
- }.flatten()
+ beregningsperiode to
+ beregningsperiode.beregningStoppnivaa.map { stoppNivå ->
+ stoppNivå.beregningStoppnivaaDetaljer.filter { detalj ->
+ detalj.typeKlasse == PosteringType.FEILUTBETALING.kode &&
+ detalj.belop > BigDecimal.ZERO
+ }
+ }.flatten()
}.filter { it.second.isNotEmpty() }.toMap()
}
@@ -154,20 +158,18 @@ class SimuleringTjenesteImpl(
private fun summerNegativeYtelPosteringer(
perioder: List,
ytelPerioder: Map>,
- ) =
- perioder.sumOf { beregningsperiode ->
- ytelPerioder.getValue(beregningsperiode).filter { it.belop < BigDecimal.ZERO }
- .sumOf { detalj -> detalj.belop }
- }
+ ) = perioder.sumOf { beregningsperiode ->
+ ytelPerioder.getValue(beregningsperiode).filter { it.belop < BigDecimal.ZERO }
+ .sumOf { detalj -> detalj.belop }
+ }
private fun summerPostiveYtelPosteringer(
perioder: List,
ytelPerioder: Map>,
- ) =
- perioder.sumOf { beregningsperiode ->
- ytelPerioder.getValue(beregningsperiode).filter { it.belop > BigDecimal.ZERO }
- .sumOf { detalj -> detalj.belop }
- }
+ ) = perioder.sumOf { beregningsperiode ->
+ ytelPerioder.getValue(beregningsperiode).filter { it.belop > BigDecimal.ZERO }
+ .sumOf { detalj -> detalj.belop }
+ }
private fun genererFeilmelding(ex: SimulerBeregningFeilUnderBehandling): String =
ex.faultInfo.let {
@@ -180,7 +182,6 @@ class SimuleringTjenesteImpl(
}
companion object {
-
val secureLogger: Logger = LoggerFactory.getLogger("secureLogger")
}
}
diff --git "a/src/main/kotlin/no/nav/familie/oppdrag/tilbakekreving/\303\230konomiClient.kt" "b/src/main/kotlin/no/nav/familie/oppdrag/tilbakekreving/\303\230konomiClient.kt"
index 4fd7812a..e4fb8819 100644
--- "a/src/main/kotlin/no/nav/familie/oppdrag/tilbakekreving/\303\230konomiClient.kt"
+++ "b/src/main/kotlin/no/nav/familie/oppdrag/tilbakekreving/\303\230konomiClient.kt"
@@ -18,7 +18,6 @@ import java.util.UUID
@Service
class ØkonomiClient(private val økonomiService: TilbakekrevingPortType) {
-
private val logger: Logger = LoggerFactory.getLogger(this::class.java)
fun iverksettVedtak(
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssController.kt b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssController.kt
index 855dfe18..84f98024 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssController.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssController.kt
@@ -19,7 +19,6 @@ import org.springframework.web.bind.annotation.RestController
@RequestMapping("/api/tss")
@ProtectedWithClaims(issuer = "azuread")
class TssController(private val tssOppslagService: TssOppslagService) {
-
@Operation(summary = "Henter informasjon om samhandler ved bruk av ORGNR og TSS-tjensten B910")
@PostMapping(path = ["/proxy/b910"])
fun hentSamhandlerDataForOrganisasjonProxy(
@@ -28,12 +27,18 @@ class TssController(private val tssOppslagService: TssOppslagService) {
return Ressurs.success(tssOppslagService.hentSamhandlerDataForOrganisasjonB910(tssSamhandlerIdent))
}
- @Operation(summary = "Søk informasjon samhandlere av type INST ved bruk av navn og TSS-tjensten B940 og TSS-tjensten B940. Returnerer TSS-output data i rå format")
+ @Operation(
+ summary =
+ "Søk informasjon samhandlere av type INST ved bruk av navn og TSS-tjensten B940 og TSS-tjensten B940. " +
+ "Returnerer TSS-output data i rå format",
+ )
@PostMapping(path = ["/proxy/b940"])
fun søkSamhnadlerinfoFraNavnProxy(
@RequestBody request: SøkSamhandlerInfoRequest,
): Ressurs {
- return Ressurs.success(tssOppslagService.hentInformasjonOmSamhandlerInstB940(request.navn, request.postNr, request.område, request.side).tssOutputData)
+ return Ressurs.success(
+ tssOppslagService.hentInformasjonOmSamhandlerInstB940(request.navn, request.postNr, request.område, request.side).tssOutputData,
+ )
}
@Operation(summary = "Henter informasjon om samhandler ved bruk av ORGNR og TSS-tjensten B910")
@@ -41,7 +46,9 @@ class TssController(private val tssOppslagService: TssOppslagService) {
fun hentSamhandlerDataForOrganisasjon(
@PathVariable("orgnr") orgnr: String,
): Ressurs {
- return Ressurs.success(tssOppslagService.hentSamhandlerInformasjon(TssSamhandlerIdent(ident = orgnr, type = TssSamhandlerIdentType.ORGNR)))
+ return Ressurs.success(
+ tssOppslagService.hentSamhandlerInformasjon(TssSamhandlerIdent(ident = orgnr, type = TssSamhandlerIdentType.ORGNR)),
+ )
}
@Operation(summary = "Henter informasjon om samhandler ved bruk av ekstern id fra TSS og TSS-tjensten B910")
@@ -49,7 +56,9 @@ class TssController(private val tssOppslagService: TssOppslagService) {
fun hentSamhandlerDataForTssEksternId(
@PathVariable("tssnr") tssnr: String,
): Ressurs {
- return Ressurs.success(tssOppslagService.hentSamhandlerInformasjon(TssSamhandlerIdent(ident = tssnr, type = TssSamhandlerIdentType.TSS)))
+ return Ressurs.success(
+ tssOppslagService.hentSamhandlerInformasjon(TssSamhandlerIdent(ident = tssnr, type = TssSamhandlerIdentType.TSS)),
+ )
}
@Operation(summary = "Søk samhandlere ved bruk av navn og TSS-tjensten B940. Første side er 0")
@@ -57,6 +66,8 @@ class TssController(private val tssOppslagService: TssOppslagService) {
fun søkSamhnadlerinfoFraNavn(
@RequestBody request: SøkSamhandlerInfoRequest,
): Ressurs {
- return Ressurs.success(tssOppslagService.hentInformasjonOmSamhandlerInst(request.navn, request.postNr, request.område, request.side))
+ return Ressurs.success(
+ tssOppslagService.hentInformasjonOmSamhandlerInst(request.navn, request.postNr, request.område, request.side),
+ )
}
}
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssException.kt b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssException.kt
index 48004d9f..b3fe26ce 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssException.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssException.kt
@@ -1,12 +1,21 @@
package no.nav.familie.oppdrag.tss
-open class TssException(feilmelding: String, var alvorligGrad: String? = null, var kodeMelding: String? = null, throwable: Throwable? = null) :
+open class TssException(
+ feilmelding: String,
+ var alvorligGrad: String? = null,
+ var kodeMelding: String? = null,
+ throwable: Throwable? = null,
+) :
RuntimeException(
- listOfNotNull(feilmelding, alvorligGrad, kodeMelding).joinToString("-"),
- throwable,
- )
+ listOfNotNull(feilmelding, alvorligGrad, kodeMelding).joinToString("-"),
+ throwable,
+ )
-class TssResponseException(feilmelding: String, alvorligGrad: String?, kodeMelding: String?) : TssException(feilmelding, alvorligGrad, kodeMelding)
+class TssResponseException(feilmelding: String, alvorligGrad: String?, kodeMelding: String?) : TssException(
+ feilmelding,
+ alvorligGrad,
+ kodeMelding,
+)
class TssConnectionException(feilmelding: String, throwable: Throwable? = null) : TssException(feilmelding, throwable = throwable)
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssMQClient.kt b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssMQClient.kt
index b2b5d2a0..47e5460c 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssMQClient.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssMQClient.kt
@@ -13,18 +13,21 @@ import org.springframework.stereotype.Service
import java.util.UUID
@Service
-class TssMQClient(@Qualifier("jmsTemplateTss") private val jmsTemplateTss: JmsTemplate) {
+class TssMQClient(
+ @Qualifier("jmsTemplateTss") private val jmsTemplateTss: JmsTemplate,
+) {
private val logger: Logger = LoggerFactory.getLogger(this::class.java)
private val secureLogger: Logger = LoggerFactory.getLogger("secureLogger")
private fun kallTss(rawRequest: String): String {
val uuid = UUID.randomUUID().toString()
try {
- val response: Message? = jmsTemplateTss.sendAndReceive { session: Session ->
- val requestMessage = session.createTextMessage(rawRequest)
- requestMessage.jmsCorrelationID = uuid
- requestMessage
- }
+ val response: Message? =
+ jmsTemplateTss.sendAndReceive { session: Session ->
+ val requestMessage = session.createTextMessage(rawRequest)
+ requestMessage.jmsCorrelationID = uuid
+ requestMessage
+ }
return if (response == null) {
throw TssConnectionException("En feil oppsto i kallet til TSS. Response var null (timeout?)")
@@ -48,66 +51,82 @@ class TssMQClient(@Qualifier("jmsTemplateTss") private val jmsTemplateTss: JmsTe
fun getOrgInfo(tssSamhandlerIdent: TssSamhandlerIdent): TssSamhandlerData {
val objectFactory = ObjectFactory()
- val samhandlerIDataB910Data = when (tssSamhandlerIdent.type) {
- TssSamhandlerIdentType.ORGNR -> {
- val offIdData = objectFactory.createTidOFF1().apply {
- idOff = tssSamhandlerIdent.ident
- kodeIdType = "ORG"
- kodeSamhType = "INST"
- }
- val samhandlerIDataB910Data = objectFactory.createSamhandlerIDataB910Type().apply {
- brukerID = BRUKER_ID
- historikk = "N"
- ofFid = offIdData
+ val samhandlerIDataB910Data =
+ when (tssSamhandlerIdent.type) {
+ TssSamhandlerIdentType.ORGNR -> {
+ val offIdData =
+ objectFactory.createTidOFF1().apply {
+ idOff = tssSamhandlerIdent.ident
+ kodeIdType = "ORG"
+ kodeSamhType = "INST"
+ }
+ val samhandlerIDataB910Data =
+ objectFactory.createSamhandlerIDataB910Type().apply {
+ brukerID = BRUKER_ID
+ historikk = "N"
+ ofFid = offIdData
+ }
+ samhandlerIDataB910Data
}
- samhandlerIDataB910Data
- }
- TssSamhandlerIdentType.TSS -> {
- val samhandlerIDataB910Data = objectFactory.createSamhandlerIDataB910Type().apply {
- idOffTSS = tssSamhandlerIdent.ident
- brukerID = BRUKER_ID
- historikk = "N"
+ TssSamhandlerIdentType.TSS -> {
+ val samhandlerIDataB910Data =
+ objectFactory.createSamhandlerIDataB910Type().apply {
+ idOffTSS = tssSamhandlerIdent.ident
+ brukerID = BRUKER_ID
+ historikk = "N"
+ }
+ samhandlerIDataB910Data
}
- samhandlerIDataB910Data
}
- }
- val servicerutiner = objectFactory.createTServicerutiner().apply {
- samhandlerIDataB910 = samhandlerIDataB910Data
- }
- val tssSamhandlerDataTssInputData = objectFactory.createTssSamhandlerDataTssInputData().apply {
- tssServiceRutine = servicerutiner
- }
- val tssSamhandlerData = objectFactory.createTssSamhandlerData().apply {
- tssInputData = tssSamhandlerDataTssInputData
- }
+ val servicerutiner =
+ objectFactory.createTServicerutiner().apply {
+ samhandlerIDataB910 = samhandlerIDataB910Data
+ }
+ val tssSamhandlerDataTssInputData =
+ objectFactory.createTssSamhandlerDataTssInputData().apply {
+ tssServiceRutine = servicerutiner
+ }
+ val tssSamhandlerData =
+ objectFactory.createTssSamhandlerData().apply {
+ tssInputData = tssSamhandlerDataTssInputData
+ }
val xml = Jaxb.tilXml(tssSamhandlerData)
val rawResponse = kallTss(xml)
return Jaxb.tilTssSamhandlerData(rawResponse)
}
- fun søkOrgInfo(navn: String?, postNummer: String?, område: String?, side: Int): TssSamhandlerData {
+ fun søkOrgInfo(
+ navn: String?,
+ postNummer: String?,
+ område: String?,
+ side: Int,
+ ): TssSamhandlerData {
val objectFactory = ObjectFactory()
- val samhandlerIDataB940Data = objectFactory.createSamhandlerIDataB940Type().apply {
- brukerID = BRUKER_ID
- navnSamh = navn
- kodeSamhType = "INST"
- postNr = postNummer
- omrade = område
- buffnr = side.toString().padStart(3, '0')
- }
+ val samhandlerIDataB940Data =
+ objectFactory.createSamhandlerIDataB940Type().apply {
+ brukerID = BRUKER_ID
+ navnSamh = navn
+ kodeSamhType = "INST"
+ postNr = postNummer
+ omrade = område
+ buffnr = side.toString().padStart(3, '0')
+ }
- val servicerutiner = objectFactory.createTServicerutiner().apply {
- samhandlerIDataB940 = samhandlerIDataB940Data
- }
+ val servicerutiner =
+ objectFactory.createTServicerutiner().apply {
+ samhandlerIDataB940 = samhandlerIDataB940Data
+ }
- val tssSamhandlerDataTssInputData = objectFactory.createTssSamhandlerDataTssInputData().apply {
- tssServiceRutine = servicerutiner
- }
- val tssSamhandlerData = objectFactory.createTssSamhandlerData().apply {
- tssInputData = tssSamhandlerDataTssInputData
- }
+ val tssSamhandlerDataTssInputData =
+ objectFactory.createTssSamhandlerDataTssInputData().apply {
+ tssServiceRutine = servicerutiner
+ }
+ val tssSamhandlerData =
+ objectFactory.createTssSamhandlerData().apply {
+ tssInputData = tssSamhandlerDataTssInputData
+ }
val rawResponse = kallTss(Jaxb.tilXml(tssSamhandlerData))
return Jaxb.tilTssSamhandlerData(rawResponse)
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssOppslagService.kt b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssOppslagService.kt
index bbfa6e11..17867567 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssOppslagService.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssOppslagService.kt
@@ -35,20 +35,35 @@ class TssOppslagService(private val tssMQClient: TssMQClient) {
return mapSamhandler(enkeltSamhandler, orgNr)
}
- fun hentInformasjonOmSamhandlerInstB940(navn: String?, postNummer: String?, område: String?, side: Int): TssSamhandlerData {
+ fun hentInformasjonOmSamhandlerInstB940(
+ navn: String?,
+ postNummer: String?,
+ område: String?,
+ side: Int,
+ ): TssSamhandlerData {
return tssMQClient.søkOrgInfo(navn, postNummer, område, side)
}
- fun hentInformasjonOmSamhandlerInst(navn: String?, postNummer: String?, område: String?, side: Int): SøkSamhandlerInfo {
+ fun hentInformasjonOmSamhandlerInst(
+ navn: String?,
+ postNummer: String?,
+ område: String?,
+ side: Int,
+ ): SøkSamhandlerInfo {
val samhandlerData = hentInformasjonOmSamhandlerInstB940(navn, postNummer, område, side)
val finnesMerInfo = validateB940response("$navn $postNummer $område", samhandlerData)
val samhandlerODataB940 = samhandlerData.tssOutputData.samhandlerODataB940
- val samhandlere = samhandlerODataB940.enkeltSamhandler
- .filter { enkeltSamhandler -> enkeltSamhandler.samhandlerAvd125.samhAvd.any { erInfotrygdTssAvdeling(it) } }
- .map { mapSamhandler(it) }
+ val samhandlere =
+ samhandlerODataB940.enkeltSamhandler
+ .filter { enkeltSamhandler -> enkeltSamhandler.samhandlerAvd125.samhAvd.any { erInfotrygdTssAvdeling(it) } }
+ .map { mapSamhandler(it) }
return SøkSamhandlerInfo(finnesMerInfo, samhandlere)
}
- private fun validateB910response(inputData: TssSamhandlerIdent, tssResponse: TssSamhandlerData) {
+
+ private fun validateB910response(
+ inputData: TssSamhandlerIdent,
+ tssResponse: TssSamhandlerData,
+ ) {
commonResponseValidation(tssResponse)
val svarStatus = tssResponse.tssOutputData.svarStatus
@@ -63,7 +78,10 @@ class TssOppslagService(private val tssMQClient: TssMQClient) {
}
}
- private fun validateB940response(inputData: String?, tssResponse: TssSamhandlerData): Boolean {
+ private fun validateB940response(
+ inputData: String?,
+ tssResponse: TssSamhandlerData,
+ ): Boolean {
commonResponseValidation(tssResponse)
val svarStatus = tssResponse.tssOutputData.svarStatus
if (svarStatus.alvorligGrad != TSS_STATUS_OK) {
@@ -81,15 +99,24 @@ class TssOppslagService(private val tssMQClient: TssMQClient) {
}
private fun commonResponseValidation(tssResponse: TssSamhandlerData) {
- if (tssResponse.tssOutputData == null || tssResponse.tssOutputData.svarStatus == null || tssResponse.tssOutputData.svarStatus.alvorligGrad == null) {
+ if (erTomResponse(tssResponse)) {
throw TssConnectionException("Ingen response. Mest sannsynlig timeout mot TSS")
}
}
- private fun mapSamhandler(enkeltSamhandler: Samhandler, orgnr: String?): SamhandlerInfo {
+ private fun erTomResponse(tssResponse: TssSamhandlerData) =
+ tssResponse.tssOutputData == null ||
+ tssResponse.tssOutputData.svarStatus == null ||
+ tssResponse.tssOutputData.svarStatus.alvorligGrad == null
+
+ private fun mapSamhandler(
+ enkeltSamhandler: Samhandler,
+ orgnr: String?,
+ ): SamhandlerInfo {
val navn = enkeltSamhandler.samhandler110.samhandler.first().navnSamh
- val orgnr = orgnr ?: enkeltSamhandler.alternativId111.samhId.filter { it.kodeAltIdentType == "ORG" && it.datoIdentTom.isBlank() }
- .firstOrNull()?.idAlternativ
+ val orgnr =
+ orgnr ?: enkeltSamhandler.alternativId111.samhId.filter { it.kodeAltIdentType == "ORG" && it.datoIdentTom.isBlank() }
+ .firstOrNull()?.idAlternativ
val (tssId, avdNr) = mapTssEksternIdOgAvdNr(enkeltSamhandler.samhandlerAvd125)
val avdelingsAdresser = madAdresse(enkeltSamhandler.adresse130, avdNr)
diff --git a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssSamhandlerIdent.kt b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssSamhandlerIdent.kt
index cbc42fb1..2a429f08 100644
--- a/src/main/kotlin/no/nav/familie/oppdrag/tss/TssSamhandlerIdent.kt
+++ b/src/main/kotlin/no/nav/familie/oppdrag/tss/TssSamhandlerIdent.kt
@@ -4,6 +4,8 @@ data class TssSamhandlerIdent(
val ident: String,
val type: TssSamhandlerIdentType,
)
+
enum class TssSamhandlerIdentType {
- ORGNR, TSS
+ ORGNR,
+ TSS,
}
diff --git a/src/main/resources/application-prod.yaml b/src/main/resources/application-prod.yaml
index 789090ff..91ef0cd8 100644
--- a/src/main/resources/application-prod.yaml
+++ b/src/main/resources/application-prod.yaml
@@ -20,7 +20,7 @@ no.nav.security.jwt:
spring:
datasource:
- url: jdbc:postgresql://A01DBVL011.adeo.no:5432/familie-oppdrag
+ url: jdbc:postgresql://A01DBVL035.adeo.no:5432/familie-oppdrag-15
OPPDRAG_SERVICE_URL: https://wasapp.adeo.no/cics/services/simulerFpServiceWSBinding
SECURITYTOKENSERVICE_URL: https://sts.adeo.no/SecurityTokenServiceProvider/
diff --git a/src/main/resources/bootstrap-prod.yaml b/src/main/resources/bootstrap-prod.yaml
index 9e734ea7..b6c52ec4 100644
--- a/src/main/resources/bootstrap-prod.yaml
+++ b/src/main/resources/bootstrap-prod.yaml
@@ -12,7 +12,7 @@ spring:
expiry-threshold: 2m
database:
enabled: true
- role: familie-oppdrag-admin
+ role: familie-oppdrag-15-admin
backend: postgresql/prod-fss
authentication: KUBERNETES
kubernetes:
diff --git a/src/main/resources/db/migration/V013__opprett_tidligere_kjoerte_grensesnittavstemminger.sql b/src/main/resources/db/migration/V013__opprett_tidligere_kjoerte_grensesnittavstemminger.sql
new file mode 100644
index 00000000..c6276c4f
--- /dev/null
+++ b/src/main/resources/db/migration/V013__opprett_tidligere_kjoerte_grensesnittavstemminger.sql
@@ -0,0 +1,4 @@
+CREATE TABLE tidligere_kjoerte_grensesnittavstemminger
+(
+ id UUID PRIMARY KEY NOT NULL
+);
\ No newline at end of file
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/DevLauncher.kt b/src/test/kotlin/no/nav/familie/oppdrag/DevLauncher.kt
index 6add6621..5b97f896 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/DevLauncher.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/DevLauncher.kt
@@ -6,8 +6,9 @@ import org.springframework.boot.builder.SpringApplicationBuilder
object DevLauncher {
@JvmStatic
fun main(args: Array) {
- val app = SpringApplicationBuilder(ApplicationConfig::class.java)
- .profiles("dev")
+ val app =
+ SpringApplicationBuilder(ApplicationConfig::class.java)
+ .profiles("dev")
app.run(*args)
}
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/DevPsqlMqLauncher.kt b/src/test/kotlin/no/nav/familie/oppdrag/DevPsqlMqLauncher.kt
index e15d33f6..01bd4b48 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/DevPsqlMqLauncher.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/DevPsqlMqLauncher.kt
@@ -9,17 +9,19 @@ import java.util.Properties
object DevPsqlMqLauncher {
@JvmStatic
fun main(args: Array) {
- val psql = KPostgreSQLContainer("postgres:15.2")
- .withDatabaseName("familie-oppdrag")
- .withUsername("postgres")
- .withPassword("test")
+ val psql =
+ KPostgreSQLContainer("postgres:15.2")
+ .withDatabaseName("familie-oppdrag")
+ .withUsername("postgres")
+ .withPassword("test")
psql.start()
- val mq = KGenericContainer("ibmcom/mq")
- .withEnv("LICENSE", "accept")
- .withEnv("MQ_QMGR_NAME", "QM1")
- .withExposedPorts(1414, 9443)
+ val mq =
+ KGenericContainer("ibmcom/mq")
+ .withEnv("LICENSE", "accept")
+ .withEnv("MQ_QMGR_NAME", "QM1")
+ .withExposedPorts(1414, 9443)
mq.start()
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingMQSenderTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingMQSenderTest.kt
index 71276585..08628a7d 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingMQSenderTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/avstemming/AvstemmingMQSenderTest.kt
@@ -30,25 +30,26 @@ private val IDAG = LocalDateTime.now()
@Testcontainers
@ContextConfiguration(initializers = [Containers.MQInitializer::class])
class AvstemmingMQSenderTest {
-
companion object {
@Container
var ibmMQContainer = Containers.ibmMQContainer
}
- private val mqConn = MQConnectionFactory().apply {
- hostName = "localhost"
- port = ibmMQContainer.getMappedPort(1414)
- channel = "DEV.ADMIN.SVRCONN"
- queueManager = "QM1"
- transportType = WMQConstants.WMQ_CM_CLIENT
- }
+ private val mqConn =
+ MQConnectionFactory().apply {
+ hostName = "localhost"
+ port = ibmMQContainer.getMappedPort(1414)
+ channel = "DEV.ADMIN.SVRCONN"
+ queueManager = "QM1"
+ transportType = WMQConstants.WMQ_CM_CLIENT
+ }
- private val cf = UserCredentialsConnectionFactoryAdapter().apply {
- setUsername("admin")
- setPassword("passw0rd")
- setTargetConnectionFactory(mqConn)
- }
+ private val cf =
+ UserCredentialsConnectionFactoryAdapter().apply {
+ setUsername("admin")
+ setPassword("passw0rd")
+ setTargetConnectionFactory(mqConn)
+ }
private val jmsTemplate = spyk(JmsTemplate(cf).apply { defaultDestinationName = TESTKØ })
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingIdTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingIdTest.kt
new file mode 100644
index 00000000..cd6c9f16
--- /dev/null
+++ b/src/test/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingIdTest.kt
@@ -0,0 +1,215 @@
+package no.nav.familie.oppdrag.grensesnittavstemming
+
+import ch.qos.logback.classic.Logger
+import ch.qos.logback.classic.spi.ILoggingEvent
+import ch.qos.logback.core.read.ListAppender
+import io.mockk.every
+import io.mockk.mockk
+import no.nav.familie.kontrakter.felles.oppdrag.GrensesnittavstemmingRequest
+import no.nav.familie.oppdrag.avstemming.AvstemmingSender
+import no.nav.familie.oppdrag.iverksetting.OppdragMapper
+import no.nav.familie.oppdrag.repository.OppdragLager
+import no.nav.familie.oppdrag.repository.OppdragLagerRepository
+import no.nav.familie.oppdrag.repository.TidligereKjørtGrensesnittavstemming
+import no.nav.familie.oppdrag.repository.TidligereKjørteGrensesnittavstemmingerRepository
+import no.nav.familie.oppdrag.service.GrensesnittavstemmingService
+import no.nav.familie.oppdrag.util.TestConfig
+import no.nav.familie.oppdrag.util.TestOppdragMedAvstemmingsdato
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import org.slf4j.LoggerFactory
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
+import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.jdbc.core.JdbcTemplate
+import org.springframework.test.context.ActiveProfiles
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
+import org.testcontainers.containers.PostgreSQLContainer
+import org.testcontainers.junit.jupiter.Container
+import org.testcontainers.junit.jupiter.Testcontainers
+import java.time.LocalDateTime
+import java.util.UUID
+
+@ActiveProfiles("dev")
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
+@SpringBootTest(classes = [TestConfig::class], properties = ["spring.cloud.vault.enabled=false"])
+@Testcontainers
+class GrensesnittavstemmingIdTest(
+ @Autowired
+ val tidligereKjørteGrensesnittavstemmingerRepository: TidligereKjørteGrensesnittavstemmingerRepository,
+ @Autowired
+ val jdbcTemplate: JdbcTemplate,
+ @Autowired
+ val oppdragLagerRepository: OppdragLagerRepository,
+ @Autowired val oppdragMapper: OppdragMapper,
+) {
+ val avstemmingSender: AvstemmingSender = mockk()
+
+ val grensesnittavstemmingService =
+ GrensesnittavstemmingService(
+ avstemmingSender = avstemmingSender,
+ oppdragLagerRepository = oppdragLagerRepository,
+ tidligereKjørteGrensesnittavstemmingerRepository = tidligereKjørteGrensesnittavstemmingerRepository,
+ antall = 2,
+ )
+
+ companion object {
+ protected fun initLoggingEventListAppender(): ListAppender {
+ val listAppender = ListAppender()
+ listAppender.start()
+ return listAppender
+ }
+
+ @Container
+ private val postgreSQLContainer = PostgreSQLContainer("postgres:latest")
+
+ @DynamicPropertySource
+ @JvmStatic
+ fun registerDynamicProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.datasource.url", postgreSQLContainer::getJdbcUrl)
+ registry.add("spring.datasource.username", postgreSQLContainer::getUsername)
+ registry.add("spring.datasource.password", postgreSQLContainer::getPassword)
+ }
+ }
+
+ private val listAppender = initLoggingEventListAppender()
+
+ @BeforeEach
+ fun setUp() {
+ jdbcTemplate.execute("TRUNCATE TABLE tidligere_kjoerte_grensesnittavstemminger")
+ }
+
+ @Test
+ fun `Skal kunne lagre avstemming Id`() {
+ val uuid = UUID.randomUUID()
+ tidligereKjørteGrensesnittavstemmingerRepository.insert(TidligereKjørtGrensesnittavstemming(uuid))
+
+ val lagretKjørtGrensesnittavstemming = tidligereKjørteGrensesnittavstemmingerRepository.findById(uuid)
+ Assertions.assertNotNull(lagretKjørtGrensesnittavstemming)
+ }
+
+ @Test
+ fun `Skal ikke kjøre grensesnittavstemming dersom det allerede er kjørt på samme avstemmingId`() {
+ val logger: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java) as Logger
+ logger.addAppender(listAppender)
+
+ opprettUtbetalingsoppdrag()
+ every { avstemmingSender.sendGrensesnittAvstemming(any()) } returns Unit
+
+ val avstemmingId = UUID.randomUUID()
+ grensesnittavstemmingService.utførGrensesnittavstemming(
+ GrensesnittavstemmingRequest(
+ fagsystem = "BA",
+ fra = LocalDateTime.now().minusDays(2),
+ til = LocalDateTime.now(),
+ avstemmingId = avstemmingId,
+ ),
+ )
+
+ grensesnittavstemmingService.utførGrensesnittavstemming(
+ GrensesnittavstemmingRequest(
+ fagsystem = "BA",
+ fra = LocalDateTime.now().minusDays(2),
+ til = LocalDateTime.now(),
+ avstemmingId = avstemmingId,
+ ),
+ )
+
+ val fullførtMeldinger = listAppender.list.filter { "Fullført grensesnittavstemming" in it.message }
+ Assertions.assertEquals(1, fullførtMeldinger.size)
+ }
+
+ @Test
+ fun `Skal være mulig å kjøre grensesnittavstemming selv om avstemmingId er null`() {
+ val logger: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java) as Logger
+ logger.addAppender(listAppender)
+
+ opprettUtbetalingsoppdrag()
+ every { avstemmingSender.sendGrensesnittAvstemming(any()) } returns Unit
+
+ grensesnittavstemmingService.utførGrensesnittavstemming(
+ GrensesnittavstemmingRequest(
+ fagsystem = "BA",
+ fra = LocalDateTime.now().minusDays(2),
+ til = LocalDateTime.now(),
+ avstemmingId = null,
+ ),
+ )
+
+ val fullførtMeldinger = listAppender.list.filter { "Fullført grensesnittavstemming" in it.message }
+ Assertions.assertEquals(1, fullførtMeldinger.size)
+ }
+
+ @Test
+ fun `Skal være mulig å kjøre grensesnittavstemming flere ganger når ikke avstemmingId er satt`() {
+ val logger: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java) as Logger
+ logger.addAppender(listAppender)
+
+ opprettUtbetalingsoppdrag()
+ every { avstemmingSender.sendGrensesnittAvstemming(any()) } returns Unit
+
+ grensesnittavstemmingService.utførGrensesnittavstemming(
+ GrensesnittavstemmingRequest(
+ fagsystem = "BA",
+ fra = LocalDateTime.now().minusDays(2),
+ til = LocalDateTime.now(),
+ avstemmingId = null,
+ ),
+ )
+
+ grensesnittavstemmingService.utførGrensesnittavstemming(
+ GrensesnittavstemmingRequest(
+ fagsystem = "BA",
+ fra = LocalDateTime.now().minusDays(2),
+ til = LocalDateTime.now(),
+ avstemmingId = null,
+ ),
+ )
+
+ val fullførtMeldinger = listAppender.list.filter { "Fullført grensesnittavstemming" in it.message }
+ Assertions.assertEquals(2, fullførtMeldinger.size)
+ }
+
+ @Test
+ fun `Skal være mulig å kjøre grensesnittavstemming flere ganger om man bruker forskjellig avstemmingId`() {
+ val logger: Logger = LoggerFactory.getLogger(GrensesnittavstemmingService::class.java) as Logger
+ logger.addAppender(listAppender)
+
+ opprettUtbetalingsoppdrag()
+ every { avstemmingSender.sendGrensesnittAvstemming(any()) } returns Unit
+
+ grensesnittavstemmingService.utførGrensesnittavstemming(
+ GrensesnittavstemmingRequest(
+ fagsystem = "BA",
+ fra = LocalDateTime.now().minusDays(2),
+ til = LocalDateTime.now(),
+ avstemmingId = UUID.randomUUID(),
+ ),
+ )
+
+ grensesnittavstemmingService.utførGrensesnittavstemming(
+ GrensesnittavstemmingRequest(
+ fagsystem = "BA",
+ fra = LocalDateTime.now().minusDays(2),
+ til = LocalDateTime.now(),
+ avstemmingId = UUID.randomUUID(),
+ ),
+ )
+
+ val fullførtMeldinger = listAppender.list.filter { "Fullført grensesnittavstemming" in it.message }
+ Assertions.assertEquals(2, fullførtMeldinger.size)
+ }
+
+ private fun opprettUtbetalingsoppdrag() {
+ val utbetalingsoppdrag =
+ TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag(
+ LocalDateTime.now().minusDays(1),
+ "BA",
+ utbetalingsperiode = arrayOf(TestOppdragMedAvstemmingsdato.lagUtbetalingsperiode()),
+ )
+ val oppdrag = oppdragMapper.tilOppdrag(oppdragMapper.tilOppdrag110(utbetalingsoppdrag))
+ oppdragLagerRepository.opprettOppdrag(OppdragLager.lagFraOppdrag(utbetalingsoppdrag, oppdrag), 0)
+ }
+}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingMapperTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingMapperTest.kt
index 2e6f37b4..e69ce56c 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingMapperTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/grensesnittavstemming/GrensesnittavstemmingMapperTest.kt
@@ -27,7 +27,6 @@ import java.time.format.DateTimeFormatter
import kotlin.test.assertEquals
class GrensesnittavstemmingMapperTest {
-
val fagområde = "BA"
val tidspunktFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS")
@@ -137,7 +136,10 @@ class GrensesnittavstemmingMapperTest {
assertEquals(fagområde, actual.brukerId)
}
- fun assertDetaljData(utbetalingsoppdrag: Utbetalingsoppdrag, actual: Detaljdata) {
+ fun assertDetaljData(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ actual: Detaljdata,
+ ) {
assertEquals(DetaljType.MANG, actual.detaljType)
assertEquals(utbetalingsoppdrag.aktoer, actual.offnr)
assertEquals(fagområde, actual.avleverendeTransaksjonNokkel)
@@ -147,13 +149,19 @@ class GrensesnittavstemmingMapperTest {
assertEquals(null, actual.tekstMelding)
}
- fun assertTotalData(utbetalingsoppdrag: Utbetalingsoppdrag, actual: Totaldata) {
+ fun assertTotalData(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ actual: Totaldata,
+ ) {
assertEquals(1, actual.totalAntall)
assertEquals(utbetalingsoppdrag.utbetalingsperiode.first().sats, actual.totalBelop)
assertEquals(Fortegn.T, actual.fortegn)
}
- fun assertPeriodeData(utbetalingsoppdrag: Utbetalingsoppdrag, actual: Periodedata) {
+ fun assertPeriodeData(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ actual: Periodedata,
+ ) {
assertEquals(
utbetalingsoppdrag.avstemmingTidspunkt.format(DateTimeFormatter.ofPattern("yyyyMMddHH")),
actual.datoAvstemtFom,
@@ -164,7 +172,10 @@ class GrensesnittavstemmingMapperTest {
)
}
- fun assertGrunnlagsdata(utbetalingsoppdrag: Utbetalingsoppdrag, actual: Grunnlagsdata) {
+ fun assertGrunnlagsdata(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ actual: Grunnlagsdata,
+ ) {
assertEquals(1, actual.manglerAntall)
assertEquals(utbetalingsoppdrag.utbetalingsperiode.first().sats, actual.manglerBelop)
assertEquals(Fortegn.T, actual.manglerFortegn)
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/JaxbTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/JaxbTest.kt
index 1bd6a641..8b673b38 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/JaxbTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/JaxbTest.kt
@@ -22,17 +22,19 @@ import no.nav.system.os.tjenester.simulerfpservice.simulerfpserviceservicetypes.
import no.nav.system.os.tjenester.simulerfpservice.simulerfpserviceservicetypes.SimulerBeregningResponse as SimulerBeregningResponse1
internal class JaxbTest {
-
@Test
internal fun `oppdrag tilXml`() {
val dato = LocalDate.of(2022, 1, 1)
- val xmlGregorianCalendar = DatatypeFactory.newInstance()
- .newXMLGregorianCalendar(GregorianCalendar.from(dato.atStartOfDay(ZoneId.of("Europe/Oslo"))))
- val oppdrag = Oppdrag().apply {
- oppdrag110 = Oppdrag110().apply {
- datoForfall = xmlGregorianCalendar
+ val xmlGregorianCalendar =
+ DatatypeFactory.newInstance()
+ .newXMLGregorianCalendar(GregorianCalendar.from(dato.atStartOfDay(ZoneId.of("Europe/Oslo"))))
+ val oppdrag =
+ Oppdrag().apply {
+ oppdrag110 =
+ Oppdrag110().apply {
+ datoForfall = xmlGregorianCalendar
+ }
}
- }
val xml = Jaxb.tilXml(oppdrag)
val obj = Jaxb.tilOppdrag(xml)
assertThat(xml).isEqualTo(Jaxb.tilXml(obj))
@@ -41,27 +43,33 @@ internal class JaxbTest {
@Test
internal fun `SimulerBeregningRequest tilXml`() {
- val request = SimulerBeregningRequest().apply {
- request = SimulerBeregningRequest1().apply {
- simuleringsPeriode = SimulerBeregningRequest1.SimuleringsPeriode().apply {
- datoSimulerFom = LocalDate.of(2022, 1, 2).toString()
- }
+ val request =
+ SimulerBeregningRequest().apply {
+ request =
+ SimulerBeregningRequest1().apply {
+ simuleringsPeriode =
+ SimulerBeregningRequest1.SimuleringsPeriode().apply {
+ datoSimulerFom = LocalDate.of(2022, 1, 2).toString()
+ }
+ }
}
- }
val xml = Jaxb.tilXml(request)
assertThat(xml).isEqualTo(loadResource("xml/SimulerBeregningRequest.xml"))
}
@Test
internal fun `SimulerBeregningResponse tilXml`() {
- val response = SimulerBeregningResponse().apply {
- response = SimulerBeregningResponse1().apply {
- simulering = Beregning().apply {
- belop = BigDecimal.TEN
- datoBeregnet = LocalDate.of(2022, 1, 2).toString()
- }
+ val response =
+ SimulerBeregningResponse().apply {
+ response =
+ SimulerBeregningResponse1().apply {
+ simulering =
+ Beregning().apply {
+ belop = BigDecimal.TEN
+ datoBeregnet = LocalDate.of(2022, 1, 2).toString()
+ }
+ }
}
- }
val xml = Jaxb.tilXml(response)
val obj = Jaxb.tilSimuleringsrespons(xml)
assertThat(xml).isEqualTo(Jaxb.tilXml(obj))
@@ -70,17 +78,22 @@ internal class JaxbTest {
@Test
internal fun `TssSamhandlerData tilXml`() {
- val tss = TssSamhandlerData().apply {
- tssInputData = TssSamhandlerData.TssInputData().apply {
- tssInputData = TssSamhandlerData.TssInputData().apply {
- tssOutputData = TOutputElementer().apply {
- svarStatus = SvarStatusType().apply {
- alvorligGrad = "høy"
- }
+ val tss =
+ TssSamhandlerData().apply {
+ tssInputData =
+ TssSamhandlerData.TssInputData().apply {
+ tssInputData =
+ TssSamhandlerData.TssInputData().apply {
+ tssOutputData =
+ TOutputElementer().apply {
+ svarStatus =
+ SvarStatusType().apply {
+ alvorligGrad = "høy"
+ }
+ }
+ }
}
- }
}
- }
val xml = Jaxb.tilXml(tss)
val obj = Jaxb.tilTssSamhandlerData(xml)
assertThat(xml).isEqualTo(Jaxb.tilXml(obj))
@@ -89,11 +102,13 @@ internal class JaxbTest {
@Test
internal fun `iverksetting av tilbakekreving skal returnere localdate og ikke xmlgregorian`() {
- val response = TilbakekrevingsvedtakResponse().apply {
- tilbakekrevingsvedtak = TilbakekrevingsvedtakDto().apply {
- datoVedtakFagsystem = LocalDate.of(2022, 1, 1)
+ val response =
+ TilbakekrevingsvedtakResponse().apply {
+ tilbakekrevingsvedtak =
+ TilbakekrevingsvedtakDto().apply {
+ datoVedtakFagsystem = LocalDate.of(2022, 1, 1)
+ }
}
- }
assertThat(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(response)).isEqualTo(
"""
{
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/KontraktTilOppdragTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/KontraktTilOppdragTest.kt
index d93df883..f32097f4 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/KontraktTilOppdragTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/KontraktTilOppdragTest.kt
@@ -15,45 +15,48 @@ class KontraktTilOppdragTest {
@Test
fun mappeVedtaketTilMariBerg() {
- val utbetalingsperiode1 = Utbetalingsperiode(
- erEndringPåEksisterendePeriode = false,
- opphør = null,
- periodeId = 1,
- forrigePeriodeId = null,
- datoForVedtak = iDag,
- klassifisering = "BATR",
- vedtakdatoFom = iDag,
- vedtakdatoTom = iDag.plusYears(6),
- sats = BigDecimal.valueOf(1354L),
- satsType = Utbetalingsperiode.SatsType.MND,
- utbetalesTil = "12345678911",
- behandlingId = 987654321L,
- )
+ val utbetalingsperiode1 =
+ Utbetalingsperiode(
+ erEndringPåEksisterendePeriode = false,
+ opphør = null,
+ periodeId = 1,
+ forrigePeriodeId = null,
+ datoForVedtak = iDag,
+ klassifisering = "BATR",
+ vedtakdatoFom = iDag,
+ vedtakdatoTom = iDag.plusYears(6),
+ sats = BigDecimal.valueOf(1354L),
+ satsType = Utbetalingsperiode.SatsType.MND,
+ utbetalesTil = "12345678911",
+ behandlingId = 987654321L,
+ )
- val utbetalingsperiode2 = Utbetalingsperiode(
- erEndringPåEksisterendePeriode = false,
- opphør = null,
- periodeId = 2,
- forrigePeriodeId = 1,
- datoForVedtak = iDag,
- klassifisering = "BATR",
- vedtakdatoFom = iDag.plusYears(6).plusMonths(1),
- vedtakdatoTom = iDag.plusYears(12).plusMonths(1),
- sats = BigDecimal.valueOf(1054L),
- satsType = Utbetalingsperiode.SatsType.MND,
- utbetalesTil = "12345678911",
- behandlingId = 987654321L,
- utbetalingsgrad = 60,
- )
+ val utbetalingsperiode2 =
+ Utbetalingsperiode(
+ erEndringPåEksisterendePeriode = false,
+ opphør = null,
+ periodeId = 2,
+ forrigePeriodeId = 1,
+ datoForVedtak = iDag,
+ klassifisering = "BATR",
+ vedtakdatoFom = iDag.plusYears(6).plusMonths(1),
+ vedtakdatoTom = iDag.plusYears(12).plusMonths(1),
+ sats = BigDecimal.valueOf(1054L),
+ satsType = Utbetalingsperiode.SatsType.MND,
+ utbetalesTil = "12345678911",
+ behandlingId = 987654321L,
+ utbetalingsgrad = 60,
+ )
- val utbetalingsoppdrag = Utbetalingsoppdrag(
- kodeEndring = Utbetalingsoppdrag.KodeEndring.NY,
- fagSystem = "BA",
- saksnummer = "12345678",
- aktoer = "12345678911",
- saksbehandlerId = "Z992991",
- utbetalingsperiode = listOf(utbetalingsperiode1, utbetalingsperiode2),
- )
+ val utbetalingsoppdrag =
+ Utbetalingsoppdrag(
+ kodeEndring = Utbetalingsoppdrag.KodeEndring.NY,
+ fagSystem = "BA",
+ saksnummer = "12345678",
+ aktoer = "12345678911",
+ saksbehandlerId = "Z992991",
+ utbetalingsperiode = listOf(utbetalingsperiode1, utbetalingsperiode2),
+ )
val oppdrag110 = OppdragMapper().tilOppdrag110(utbetalingsoppdrag)
@@ -64,28 +67,30 @@ class KontraktTilOppdragTest {
@Test
fun mappeOpphørPåVedtaketTilMariBerg() {
- val utbetalingsperiode1 = Utbetalingsperiode(
- erEndringPåEksisterendePeriode = true,
- opphør = Opphør(iDag.plusMonths(1)),
- periodeId = 3,
- forrigePeriodeId = 2,
- datoForVedtak = iDag,
- klassifisering = "BATR",
- vedtakdatoFom = iDag,
- vedtakdatoTom = iDag.plusYears(2),
- sats = BigDecimal.valueOf(1354L),
- satsType = Utbetalingsperiode.SatsType.MND,
- utbetalesTil = "12345678911",
- behandlingId = 987654321L,
- )
- val utbetalingsoppdrag = Utbetalingsoppdrag(
- kodeEndring = Utbetalingsoppdrag.KodeEndring.ENDR,
- fagSystem = "BA",
- saksnummer = "12345678",
- aktoer = "12345678911",
- saksbehandlerId = "Z992991",
- utbetalingsperiode = listOf(utbetalingsperiode1),
- )
+ val utbetalingsperiode1 =
+ Utbetalingsperiode(
+ erEndringPåEksisterendePeriode = true,
+ opphør = Opphør(iDag.plusMonths(1)),
+ periodeId = 3,
+ forrigePeriodeId = 2,
+ datoForVedtak = iDag,
+ klassifisering = "BATR",
+ vedtakdatoFom = iDag,
+ vedtakdatoTom = iDag.plusYears(2),
+ sats = BigDecimal.valueOf(1354L),
+ satsType = Utbetalingsperiode.SatsType.MND,
+ utbetalesTil = "12345678911",
+ behandlingId = 987654321L,
+ )
+ val utbetalingsoppdrag =
+ Utbetalingsoppdrag(
+ kodeEndring = Utbetalingsoppdrag.KodeEndring.ENDR,
+ fagSystem = "BA",
+ saksnummer = "12345678",
+ aktoer = "12345678911",
+ saksbehandlerId = "Z992991",
+ utbetalingsperiode = listOf(utbetalingsperiode1),
+ )
val oppdrag110 = OppdragMapper().tilOppdrag110(utbetalingsoppdrag)
@@ -93,7 +98,10 @@ class KontraktTilOppdragTest {
assertOppdragslinje150(utbetalingsperiode1, utbetalingsoppdrag, oppdrag110.oppdragsLinje150[0])
}
- private fun assertOppdrag110(utbetalingsoppdrag: Utbetalingsoppdrag, oppdrag110: Oppdrag110) {
+ private fun assertOppdrag110(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ oppdrag110: Oppdrag110,
+ ) {
Assertions.assertEquals(OppdragSkjemaConstants.KODE_AKSJON, oppdrag110.kodeAksjon)
Assertions.assertEquals(utbetalingsoppdrag.kodeEndring.name, oppdrag110.kodeEndring.toString())
Assertions.assertEquals(utbetalingsoppdrag.fagSystem, oppdrag110.kodeFagomraade)
@@ -156,7 +164,10 @@ class KontraktTilOppdragTest {
}
}
- private fun assertOpphør(utbetalingsperiode: Utbetalingsperiode, oppdragsLinje150: OppdragsLinje150) {
+ private fun assertOpphør(
+ utbetalingsperiode: Utbetalingsperiode,
+ oppdragsLinje150: OppdragsLinje150,
+ ) {
if (utbetalingsperiode.opphør == null) {
Assertions.assertEquals(utbetalingsperiode.opphør, oppdragsLinje150.kodeStatusLinje)
Assertions.assertEquals(utbetalingsperiode.opphør, oppdragsLinje150.datoStatusFom)
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt
index ea18ac24..e4b111bd 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt
@@ -18,7 +18,6 @@ import org.springframework.core.env.Environment
import kotlin.test.assertEquals
class OppdragMQMottakTest {
-
lateinit var oppdragMottaker: OppdragMottaker
val devEnv: Environment
@@ -101,10 +100,10 @@ class OppdragMQMottakTest {
every { oppdragLagerRepository.opprettOppdrag(any()) } just Runs
val oppdragMottaker = OppdragMottaker(oppdragLagerRepository, devEnv)
- oppdragMottaker.LOG = mockk()
+ oppdragMottaker.log = mockk()
- every { oppdragMottaker.LOG.info(any()) } just Runs
- every { oppdragMottaker.LOG.error(any()) } just Runs
+ every { oppdragMottaker.log.info(any()) } just Runs
+ every { oppdragMottaker.log.error(any()) } just Runs
assertThrows { oppdragMottaker.mottaKvitteringFraOppdrag("kvittering-akseptert.xml".fraRessursSomTextMessage) }
verify(exactly = 0) { oppdragLagerRepository.opprettOppdrag(any()) }
@@ -118,10 +117,10 @@ class OppdragMQMottakTest {
every { oppdragLagerRepository.opprettOppdrag(any()) } just Runs
val oppdragMottaker = OppdragMottaker(oppdragLagerRepository, devEnv)
- oppdragMottaker.LOG = mockk()
+ oppdragMottaker.log = mockk()
- every { oppdragMottaker.LOG.info(any()) } just Runs
- every { oppdragMottaker.LOG.error(any()) } just Runs
+ every { oppdragMottaker.log.info(any()) } just Runs
+ every { oppdragMottaker.log.error(any()) } just Runs
assertThrows { oppdragMottaker.mottaKvitteringFraOppdrag("kvittering-akseptert.xml".fraRessursSomTextMessage) }
verify(exactly = 0) { oppdragLagerRepository.opprettOppdrag(any()) }
@@ -140,16 +139,16 @@ class OppdragMQMottakTest {
every { oppdragLagerRepository.oppdaterKvitteringsmelding(any(), any(), any(), any()) } just Runs
val oppdragMottaker = OppdragMottaker(oppdragLagerRepository, devEnv)
- oppdragMottaker.LOG = mockk()
+ oppdragMottaker.log = mockk()
- every { oppdragMottaker.LOG.info(any()) } just Runs
- every { oppdragMottaker.LOG.warn(any()) } just Runs
- every { oppdragMottaker.LOG.debug(any()) } just Runs
+ every { oppdragMottaker.log.info(any()) } just Runs
+ every { oppdragMottaker.log.warn(any()) } just Runs
+ every { oppdragMottaker.log.debug(any()) } just Runs
oppdragMottaker.mottaKvitteringFraOppdrag("kvittering-akseptert.xml".fraRessursSomTextMessage)
verify(exactly = 1) { oppdragLagerRepository.hentKvitteringsinformasjon(any()) }
- verify(exactly = 1) { oppdragMottaker.LOG.warn(any()) }
+ verify(exactly = 1) { oppdragMottaker.log.warn(any()) }
}
private fun lesKvittering(filnavn: String): String {
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQSenderTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQSenderTest.kt
index f404d8c0..d4333aba 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQSenderTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQSenderTest.kt
@@ -35,24 +35,25 @@ private const val TEST_FAGSAKID = "123456789"
@ContextConfiguration(initializers = [Containers.MQInitializer::class])
@EnableJms
class OppdragMQSenderTest {
-
companion object {
@Container var ibmMQContainer: Containers.MyGeneralContainer = Containers.ibmMQContainer
}
- private val mqConn = MQConnectionFactory().apply {
- hostName = "localhost"
- port = ibmMQContainer.getMappedPort(1414)
- channel = "DEV.ADMIN.SVRCONN"
- queueManager = "QM1"
- transportType = WMQConstants.WMQ_CM_CLIENT
- }
+ private val mqConn =
+ MQConnectionFactory().apply {
+ hostName = "localhost"
+ port = ibmMQContainer.getMappedPort(1414)
+ channel = "DEV.ADMIN.SVRCONN"
+ queueManager = "QM1"
+ transportType = WMQConstants.WMQ_CM_CLIENT
+ }
- private val cf = UserCredentialsConnectionFactoryAdapter().apply {
- setUsername("admin")
- setPassword("passw0rd")
- setTargetConnectionFactory(mqConn)
- }
+ private val cf =
+ UserCredentialsConnectionFactoryAdapter().apply {
+ setUsername("admin")
+ setPassword("passw0rd")
+ setTargetConnectionFactory(mqConn)
+ }
private val jmsTemplate = spyk(JmsTemplate(cf).apply { defaultDestinationName = TESTKØ })
@@ -79,50 +80,53 @@ class OppdragMQSenderTest {
val avstemmingsTidspunkt = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS"))
val objectFactory = ObjectFactory()
- val testOppdragsLinje150 = objectFactory.createOppdragsLinje150().apply {
- kodeEndringLinje = EndringsKode.NY.kode
- vedtakId = avstemmingsTidspunkt
- delytelseId = TEST_FAGSAKID
- kodeKlassifik = KLASSEKODE_BARNETRYGD
- datoVedtakFom = LocalDate.now().toXMLDate()
- datoVedtakTom = LocalDate.now().plusDays(1).toXMLDate()
- sats = SATS_BARNETRYGD.toBigDecimal()
- fradragTillegg = OppdragSkjemaConstants.FRADRAG_TILLEGG
- typeSats = SatsTypeKode.MÅNEDLIG.kode
- brukKjoreplan = OppdragSkjemaConstants.BRUK_KJØREPLAN_DEFAULT
- saksbehId = "Z999999"
- utbetalesTilId = "12345678911"
- henvisning = "987654321"
- attestant180.add(
- objectFactory.createAttestant180().apply {
- attestantId = "Z999999"
- },
- )
- }
+ val testOppdragsLinje150 =
+ objectFactory.createOppdragsLinje150().apply {
+ kodeEndringLinje = EndringsKode.NY.kode
+ vedtakId = avstemmingsTidspunkt
+ delytelseId = TEST_FAGSAKID
+ kodeKlassifik = KLASSEKODE_BARNETRYGD
+ datoVedtakFom = LocalDate.now().toXMLDate()
+ datoVedtakTom = LocalDate.now().plusDays(1).toXMLDate()
+ sats = SATS_BARNETRYGD.toBigDecimal()
+ fradragTillegg = OppdragSkjemaConstants.FRADRAG_TILLEGG
+ typeSats = SatsTypeKode.MÅNEDLIG.kode
+ brukKjoreplan = OppdragSkjemaConstants.BRUK_KJØREPLAN_DEFAULT
+ saksbehId = "Z999999"
+ utbetalesTilId = "12345678911"
+ henvisning = "987654321"
+ attestant180.add(
+ objectFactory.createAttestant180().apply {
+ attestantId = "Z999999"
+ },
+ )
+ }
- val testOppdrag110 = Oppdrag110().apply {
- kodeAksjon = "1"
- kodeEndring = EndringsKode.NY.kode
- kodeFagomraade = FAGOMRÅDE_BARNETRYGD
- fagsystemId = TEST_FAGSAKID
- utbetFrekvens = UtbetalingsfrekvensKode.MÅNEDLIG.kode
- oppdragGjelderId = "12345678911"
- datoOppdragGjelderFom = OppdragSkjemaConstants.OPPDRAG_GJELDER_DATO_FOM.toXMLDate()
- saksbehId = "Z999999"
- oppdragsEnhet120.add(
- objectFactory.createOppdragsEnhet120().apply {
- enhet = OppdragSkjemaConstants.ENHET
- typeEnhet = OppdragSkjemaConstants.ENHET_TYPE
- datoEnhetFom = OppdragSkjemaConstants.ENHET_DATO_FOM.toXMLDate()
- },
- )
- avstemming115 = objectFactory.createAvstemming115().apply {
- nokkelAvstemming = avstemmingsTidspunkt
- kodeKomponent = FAGOMRÅDE_BARNETRYGD
- tidspktMelding = avstemmingsTidspunkt
+ val testOppdrag110 =
+ Oppdrag110().apply {
+ kodeAksjon = "1"
+ kodeEndring = EndringsKode.NY.kode
+ kodeFagomraade = FAGOMRÅDE_BARNETRYGD
+ fagsystemId = TEST_FAGSAKID
+ utbetFrekvens = UtbetalingsfrekvensKode.MÅNEDLIG.kode
+ oppdragGjelderId = "12345678911"
+ datoOppdragGjelderFom = OppdragSkjemaConstants.OPPDRAG_GJELDER_DATO_FOM.toXMLDate()
+ saksbehId = "Z999999"
+ oppdragsEnhet120.add(
+ objectFactory.createOppdragsEnhet120().apply {
+ enhet = OppdragSkjemaConstants.ENHET
+ typeEnhet = OppdragSkjemaConstants.ENHET_TYPE
+ datoEnhetFom = OppdragSkjemaConstants.ENHET_DATO_FOM.toXMLDate()
+ },
+ )
+ avstemming115 =
+ objectFactory.createAvstemming115().apply {
+ nokkelAvstemming = avstemmingsTidspunkt
+ kodeKomponent = FAGOMRÅDE_BARNETRYGD
+ tidspktMelding = avstemmingsTidspunkt
+ }
+ oppdragsLinje150.add(testOppdragsLinje150)
}
- oppdragsLinje150.add(testOppdragsLinje150)
- }
return objectFactory.createOppdrag().apply {
oppdrag110 = testOppdrag110
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingMapperTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingMapperTest.kt
index e1a2aed2..bc351bac 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingMapperTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingMapperTest.kt
@@ -26,7 +26,6 @@ import kotlin.test.assertEquals
import kotlin.test.assertNotNull
class KonsistensavstemmingMapperTest {
-
private val fagområde = "BA"
private val idag: LocalDateTime = LocalDateTime.now()
private val tidspunktFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS")
@@ -84,23 +83,25 @@ class KonsistensavstemmingMapperTest {
@Test
fun `totaldata skal akkumulere totalbeløp på alle perioder og totalAntall på alle oppdrag`() {
- val utbetalingsoppdrag = lagTestUtbetalingsoppdrag(
- idag,
- fagområde,
- "1",
- lagUtbetalingsperiode(beløp = 100),
- lagUtbetalingsperiode(beløp = 200),
- )
+ val utbetalingsoppdrag =
+ lagTestUtbetalingsoppdrag(
+ idag,
+ fagområde,
+ "1",
+ lagUtbetalingsperiode(beløp = 100),
+ lagUtbetalingsperiode(beløp = 200),
+ )
val utbetalingsoppdrag2 = lagTestUtbetalingsoppdrag(idag, fagområde, "2", lagUtbetalingsperiode(beløp = 50))
- val mapper = KonsistensavstemmingMapper(
- fagområde,
- listOf(utbetalingsoppdrag, utbetalingsoppdrag2),
- idag,
- 0,
- 0,
- true,
- true,
- )
+ val mapper =
+ KonsistensavstemmingMapper(
+ fagområde,
+ listOf(utbetalingsoppdrag, utbetalingsoppdrag2),
+ idag,
+ 0,
+ 0,
+ true,
+ true,
+ )
val meldinger = mapper.lagAvstemmingsmeldinger()
assertEquals(5, meldinger.size)
assertEquals(KonsistensavstemmingConstants.DATA, meldinger[3].aksjonsdata.aksjonsType)
@@ -110,13 +111,14 @@ class KonsistensavstemmingMapperTest {
@Test
fun `skal ikke lage melding hvis periode ikke er aktiv`() {
- val utbetalingsperiode = lagUtbetalingsperiode(
- fagområde,
- 1,
- 100,
- LocalDate.now().minusYears(1),
- LocalDate.now().minusYears(1),
- )
+ val utbetalingsperiode =
+ lagUtbetalingsperiode(
+ fagområde,
+ 1,
+ 100,
+ LocalDate.now().minusYears(1),
+ LocalDate.now().minusYears(1),
+ )
val utbetalingsoppdrag = lagTestUtbetalingsoppdrag(idag.plusYears(7), fagområde, "1", utbetalingsperiode)
val mapper = KonsistensavstemmingMapper(fagområde, listOf(utbetalingsoppdrag), idag, 0, 0, true, true)
val meldinger = mapper.lagAvstemmingsmeldinger()
@@ -131,21 +133,25 @@ class KonsistensavstemmingMapperTest {
internal fun `skal kaste feil hvis det finnes 2 utbetalingsoppdrag med samme saksnummer`() {
val utbetalingsoppdrag = lagTestUtbetalingsoppdrag(idag.plusYears(7), fagområde, "1")
val utbetalingsoppdrag2 = lagTestUtbetalingsoppdrag(idag.plusYears(7), fagområde, "1")
- val mapper = KonsistensavstemmingMapper(
- fagområde,
- listOf(utbetalingsoppdrag, utbetalingsoppdrag2),
- idag,
- 0,
- 0,
- true,
- true,
- )
+ val mapper =
+ KonsistensavstemmingMapper(
+ fagområde,
+ listOf(utbetalingsoppdrag, utbetalingsoppdrag2),
+ idag,
+ 0,
+ 0,
+ true,
+ true,
+ )
assertThat(catchThrowable { mapper.lagAvstemmingsmeldinger() })
.hasMessage("Har allerede lagt til 1 i listen over avstemminger")
}
- private fun assertAksjon(expected: String, actual: Aksjonsdata) {
+ private fun assertAksjon(
+ expected: String,
+ actual: Aksjonsdata,
+ ) {
assertEquals(expected, actual.aksjonsType)
assertEquals(KonsistensavstemmingConstants.KILDETYPE, actual.kildeType)
assertEquals(KonsistensavstemmingConstants.KONSISTENSAVSTEMMING, actual.avstemmingType)
@@ -156,13 +162,19 @@ class KonsistensavstemmingMapperTest {
assertEquals(fagområde, actual.brukerId)
}
- private fun assertTotaldata(utbetalingsperiode: Utbetalingsperiode, actual: Totaldata) {
+ private fun assertTotaldata(
+ utbetalingsperiode: Utbetalingsperiode,
+ actual: Totaldata,
+ ) {
assertEquals(BigInteger.ONE, actual.totalAntall)
assertEquals(utbetalingsperiode.sats, actual.totalBelop)
assertEquals(KonsistensavstemmingConstants.FORTEGN_T, actual.fortegn)
}
- private fun assertOppdragsdata(utbetalingsoppdrag: Utbetalingsoppdrag, actual: Oppdragsdata) {
+ private fun assertOppdragsdata(
+ utbetalingsoppdrag: Utbetalingsoppdrag,
+ actual: Oppdragsdata,
+ ) {
assertEquals(fagområde, actual.fagomradeKode)
assertEquals(utbetalingsoppdrag.saksnummer, actual.fagsystemId)
assertEquals(UtbetalingsfrekvensKode.MÅNEDLIG.kode, actual.utbetalingsfrekvens)
@@ -177,7 +189,11 @@ class KonsistensavstemmingMapperTest {
)
}
- private fun assertOppdragsLinjeListe(utbetalingsperiode: Utbetalingsperiode, saksbehandler: String, actual: Oppdragslinje) {
+ private fun assertOppdragsLinjeListe(
+ utbetalingsperiode: Utbetalingsperiode,
+ saksbehandler: String,
+ actual: Oppdragslinje,
+ ) {
assertEquals(utbetalingsperiode.datoForVedtak.format(datoFormatter), actual.vedtakId)
assertEquals(utbetalingsperiode.klassifisering, actual.klassifikasjonKode)
assertEquals(utbetalingsperiode.vedtakdatoFom.format(datoFormatter), actual.vedtakPeriode.fom)
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingServiceTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingServiceTest.kt
index cd0a59f1..89f854fc 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingServiceTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/konsistensavstemming/KonsistensavstemmingServiceTest.kt
@@ -32,7 +32,6 @@ import kotlin.test.assertEquals
import kotlin.test.assertTrue
class KonsistensavstemmingServiceTest {
-
private lateinit var konsistensavstemmingService: KonsistensavstemmingService
private lateinit var oppdragLagerRepository: OppdragLagerRepository
private lateinit var avstemmingSender: AvstemmingSender
@@ -44,7 +43,7 @@ class KonsistensavstemmingServiceTest {
private val aktiveFødselsnummere = listOf("12345678910", "11111111111")
- private val utbetalingsoppdrag1_1 =
+ private val utbetalingsoppdrag1Init =
lagUtbetalingsoppdrag(
saksnummer,
"1",
@@ -53,14 +52,14 @@ class KonsistensavstemmingServiceTest {
)
// Opphør på periode 2, ny periode med annet beløp
- private val utbetalingsoppdrag1_2 =
+ private val utbetalingsoppdrag1Periode2Opphørt =
lagUtbetalingsoppdrag(
saksnummer,
"2",
lagUtbetalingsperiode(periodeId = 2, beløp = 100, behandlingsId = 1, opphør = true),
lagUtbetalingsperiode(periodeId = 3, beløp = 211, behandlingsId = 2),
)
- private val utbetalingsoppdrag2_1 =
+ private val utbetalingsoppdrag2Init =
lagUtbetalingsoppdrag(
saksnummer2,
"3",
@@ -89,12 +88,13 @@ class KonsistensavstemmingServiceTest {
@Test
internal fun `plukker ut perioder fra 2 utbetalingsoppdrag fra samme fagsak til en melding`() {
every { oppdragLagerRepository.hentUtbetalingsoppdragForKonsistensavstemming(any(), eq(setOf("1", "2"))) } returns
- listOf(utbetalingsoppdrag1_1, utbetalingsoppdrag1_2)
+ listOf(utbetalingsoppdrag1Init, utbetalingsoppdrag1Periode2Opphørt)
- val perioder = listOf(
- PerioderForBehandling("1", setOf(1), aktiveFødselsnummere[0]),
- PerioderForBehandling("2", setOf(3), aktiveFødselsnummere[0]),
- )
+ val perioder =
+ listOf(
+ PerioderForBehandling("1", setOf(1), aktiveFødselsnummere[0]),
+ PerioderForBehandling("2", setOf(3), aktiveFødselsnummere[0]),
+ )
val request = KonsistensavstemmingRequestV2("BA", perioder, LocalDateTime.now())
konsistensavstemmingService.utførKonsistensavstemming(request, true, true, null)
@@ -123,12 +123,13 @@ class KonsistensavstemmingServiceTest {
@Test
internal fun `Bruk verdi fra input til å sette utbetalTilId`() {
every { oppdragLagerRepository.hentUtbetalingsoppdragForKonsistensavstemming(any(), eq(setOf("1", "2"))) } returns
- listOf(utbetalingsoppdrag1_1, utbetalingsoppdrag1_2)
+ listOf(utbetalingsoppdrag1Init, utbetalingsoppdrag1Periode2Opphørt)
- val perioder = listOf(
- PerioderForBehandling("1", setOf(1), aktiveFødselsnummere[0], "tss-id"),
- PerioderForBehandling("2", setOf(3), aktiveFødselsnummere[0]),
- )
+ val perioder =
+ listOf(
+ PerioderForBehandling("1", setOf(1), aktiveFødselsnummere[0], "tss-id"),
+ PerioderForBehandling("2", setOf(3), aktiveFødselsnummere[0]),
+ )
val request = KonsistensavstemmingRequestV2("BA", perioder, LocalDateTime.now())
konsistensavstemmingService.utførKonsistensavstemming(request, true, true, null)
@@ -155,12 +156,13 @@ class KonsistensavstemmingServiceTest {
@Test
internal fun `sender hver fagsak i ulike meldinger`() {
every { oppdragLagerRepository.hentUtbetalingsoppdragForKonsistensavstemming(any(), eq(setOf("1", "3"))) } returns
- listOf(utbetalingsoppdrag1_1, utbetalingsoppdrag2_1)
+ listOf(utbetalingsoppdrag1Init, utbetalingsoppdrag2Init)
- val perioder = listOf(
- PerioderForBehandling("1", setOf(1), aktiveFødselsnummere[0]),
- PerioderForBehandling("3", setOf(1, 2), aktiveFødselsnummere[1]),
- )
+ val perioder =
+ listOf(
+ PerioderForBehandling("1", setOf(1), aktiveFødselsnummere[0]),
+ PerioderForBehandling("3", setOf(1, 2), aktiveFødselsnummere[1]),
+ )
val request = KonsistensavstemmingRequestV2("BA", perioder, LocalDateTime.now())
@@ -260,16 +262,17 @@ class KonsistensavstemmingServiceTest {
@Test
internal fun `Sender oppdragsmeldinger uten start eller avslutt melding`() {
every { oppdragLagerRepository.hentUtbetalingsoppdragForKonsistensavstemming(any(), eq(setOf("1", "3"))) } returns
- listOf(utbetalingsoppdrag1_1, utbetalingsoppdrag2_1)
+ listOf(utbetalingsoppdrag1Init, utbetalingsoppdrag2Init)
every { oppdragLagerRepository.hentUtbetalingsoppdragForKonsistensavstemming(any(), eq(emptySet())) } returns
emptyList()
every { mellomlagringKonsistensavstemmingRepository.insert(any()) } returns mockk()
val avstemmingstidspunkt = LocalDateTime.now()
- val perioder = listOf(
- PerioderForBehandling("1", setOf(1), aktiveFødselsnummere[0]),
- PerioderForBehandling("3", setOf(1, 2), aktiveFødselsnummere[1]),
- )
+ val perioder =
+ listOf(
+ PerioderForBehandling("1", setOf(1), aktiveFødselsnummere[0]),
+ PerioderForBehandling("3", setOf(1, 2), aktiveFødselsnummere[1]),
+ )
val request = KonsistensavstemmingRequestV2("BA", perioder, avstemmingstidspunkt)
val transaksjonsId = UUID.randomUUID()
@@ -303,33 +306,35 @@ class KonsistensavstemmingServiceTest {
beløp: Int,
behandlingsId: Long,
opphør: Boolean = false,
- ) =
- Utbetalingsperiode(
- erEndringPåEksisterendePeriode = false,
- opphør = if (opphør) Opphør(LocalDate.now()) else null,
- periodeId = periodeId,
- forrigePeriodeId = forrigePeriodeId,
- datoForVedtak = LocalDate.now(),
- klassifisering = "EF",
- vedtakdatoFom = LocalDate.now().minusYears(1),
- vedtakdatoTom = LocalDate.now().plusYears(1),
- sats = BigDecimal(beløp),
- satsType = Utbetalingsperiode.SatsType.MND,
- utbetalesTil = "meg",
- behandlingId = behandlingsId,
- )
-
- private fun lagUtbetalingsoppdrag(saksnummer: String, behandlingId: String, vararg utbetalingsperiode: Utbetalingsperiode) =
- UtbetalingsoppdragForKonsistensavstemming(
- saksnummer,
- behandlingId,
- Utbetalingsoppdrag(
- kodeEndring = Utbetalingsoppdrag.KodeEndring.NY,
- fagSystem = "BA",
- saksnummer = saksnummer,
- aktoer = "aktoer",
- saksbehandlerId = "saksbehandler",
- utbetalingsperiode = utbetalingsperiode.toList(),
- ),
- )
+ ) = Utbetalingsperiode(
+ erEndringPåEksisterendePeriode = false,
+ opphør = if (opphør) Opphør(LocalDate.now()) else null,
+ periodeId = periodeId,
+ forrigePeriodeId = forrigePeriodeId,
+ datoForVedtak = LocalDate.now(),
+ klassifisering = "EF",
+ vedtakdatoFom = LocalDate.now().minusYears(1),
+ vedtakdatoTom = LocalDate.now().plusYears(1),
+ sats = BigDecimal(beløp),
+ satsType = Utbetalingsperiode.SatsType.MND,
+ utbetalesTil = "meg",
+ behandlingId = behandlingsId,
+ )
+
+ private fun lagUtbetalingsoppdrag(
+ saksnummer: String,
+ behandlingId: String,
+ vararg utbetalingsperiode: Utbetalingsperiode,
+ ) = UtbetalingsoppdragForKonsistensavstemming(
+ saksnummer,
+ behandlingId,
+ Utbetalingsoppdrag(
+ kodeEndring = Utbetalingsoppdrag.KodeEndring.NY,
+ fagSystem = "BA",
+ saksnummer = saksnummer,
+ aktoer = "aktoer",
+ saksbehandlerId = "saksbehandler",
+ utbetalingsperiode = utbetalingsperiode.toList(),
+ ),
+ )
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/repository/MellomlagringKonsistensavstemmingRepositoryTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/repository/MellomlagringKonsistensavstemmingRepositoryTest.kt
index 35dfbab8..3d680546 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/repository/MellomlagringKonsistensavstemmingRepositoryTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/repository/MellomlagringKonsistensavstemmingRepositoryTest.kt
@@ -1,23 +1,25 @@
package no.nav.familie.oppdrag.repository
import no.nav.familie.oppdrag.service.Fagsystem
-import no.nav.familie.oppdrag.util.Containers
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable
import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.FilterType
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
+import org.testcontainers.containers.PostgreSQLContainer
import org.testcontainers.junit.jupiter.Container
import org.testcontainers.junit.jupiter.Testcontainers
import java.util.UUID
import kotlin.test.assertEquals
@ActiveProfiles("dev")
-@ContextConfiguration(initializers = arrayOf(Containers.PostgresSQLInitializer::class))
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@SpringBootTest(
classes = [MellomlagringKonsistensavstemmingRepositoryTest.TestConfig::class],
properties = ["spring.cloud.vault.enabled=false"],
@@ -25,12 +27,19 @@ import kotlin.test.assertEquals
@DisabledIfEnvironmentVariable(named = "CIRCLECI", matches = "true")
@Testcontainers
internal class MellomlagringKonsistensavstemmingRepositoryTest {
-
@Autowired lateinit var repository: MellomlagringKonsistensavstemmingRepository
companion object {
+ @Container
+ private val postgreSQLContainer = PostgreSQLContainer("postgres:latest")
- @Container var postgreSQLContainer = Containers.postgreSQLContainer
+ @DynamicPropertySource
+ @JvmStatic
+ fun registerDynamicProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.datasource.url", postgreSQLContainer::getJdbcUrl)
+ registry.add("spring.datasource.username", postgreSQLContainer::getUsername)
+ registry.add("spring.datasource.password", postgreSQLContainer::getPassword)
+ }
}
@Test
@@ -63,13 +72,16 @@ internal class MellomlagringKonsistensavstemmingRepositoryTest {
assertEquals(0, repository.hentAggregertAntallOppdrag(transaksjonsId2))
}
- fun opprettMellomlagringKonsistensavstemming(antallOppdrag: Int, totalBeløp: Long, transaksjonsId: UUID) =
- MellomlagringKonsistensavstemming(
- fagsystem = Fagsystem.BA,
- transaksjonsId = transaksjonsId,
- antallOppdrag = antallOppdrag,
- totalBeløp = totalBeløp,
- )
+ fun opprettMellomlagringKonsistensavstemming(
+ antallOppdrag: Int,
+ totalBeløp: Long,
+ transaksjonsId: UUID,
+ ) = MellomlagringKonsistensavstemming(
+ fagsystem = Fagsystem.BA,
+ transaksjonsId = transaksjonsId,
+ antallOppdrag = antallOppdrag,
+ totalBeløp = totalBeløp,
+ )
@Configuration
@ComponentScan(
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepositoryJdbcTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepositoryJdbcTest.kt
index 4b687af6..5d4ebd42 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepositoryJdbcTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/repository/OppdragLagerRepositoryJdbcTest.kt
@@ -2,7 +2,6 @@ package no.nav.familie.oppdrag.repository
import no.nav.familie.kontrakter.felles.oppdrag.OppdragStatus
import no.nav.familie.oppdrag.iverksetting.Jaxb
-import no.nav.familie.oppdrag.util.Containers
import no.nav.familie.oppdrag.util.TestConfig
import no.nav.familie.oppdrag.util.TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag
import no.nav.familie.oppdrag.util.TestOppdragMedAvstemmingsdato.lagUtbetalingsperiode
@@ -14,11 +13,14 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable
import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.dao.DuplicateKeyException
import org.springframework.jdbc.core.JdbcTemplate
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
+import org.testcontainers.containers.PostgreSQLContainer
import org.testcontainers.junit.jupiter.Container
import org.testcontainers.junit.jupiter.Testcontainers
import java.time.LocalDate
@@ -28,19 +30,26 @@ import java.util.UUID
import kotlin.test.assertFailsWith
@ActiveProfiles("dev")
-@ContextConfiguration(initializers = arrayOf(Containers.PostgresSQLInitializer::class))
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@SpringBootTest(classes = [TestConfig::class], properties = ["spring.cloud.vault.enabled=false"])
@DisabledIfEnvironmentVariable(named = "CIRCLECI", matches = "true")
@Testcontainers
internal class OppdragLagerRepositoryJdbcTest {
-
@Autowired lateinit var oppdragLagerRepository: OppdragLagerRepository
@Autowired lateinit var jdbcTemplate: JdbcTemplate
companion object {
-
- @Container var postgreSQLContainer = Containers.postgreSQLContainer
+ @Container
+ private val postgreSQLContainer = PostgreSQLContainer("postgres:latest")
+
+ @DynamicPropertySource
+ @JvmStatic
+ fun registerDynamicProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.datasource.url", postgreSQLContainer::getJdbcUrl)
+ registry.add("spring.datasource.username", postgreSQLContainer::getUsername)
+ registry.add("spring.datasource.password", postgreSQLContainer::getPassword)
+ }
}
@BeforeEach
@@ -61,8 +70,9 @@ internal class OppdragLagerRepositoryJdbcTest {
@Test
fun skal_lagre_status() {
- val oppdragLager = utbetalingsoppdragMedTilfeldigAktoer().somOppdragLager
- .copy(status = OppdragStatus.LAGT_PÅ_KØ)
+ val oppdragLager =
+ utbetalingsoppdragMedTilfeldigAktoer().somOppdragLager
+ .copy(status = OppdragStatus.LAGT_PÅ_KØ)
oppdragLagerRepository.opprettOppdrag(oppdragLager)
@@ -77,8 +87,9 @@ internal class OppdragLagerRepositoryJdbcTest {
@Test
fun skal_lagre_kvitteringsmelding() {
- val oppdragLager = utbetalingsoppdragMedTilfeldigAktoer().somOppdragLager
- .copy(status = OppdragStatus.LAGT_PÅ_KØ)
+ val oppdragLager =
+ utbetalingsoppdragMedTilfeldigAktoer().somOppdragLager
+ .copy(status = OppdragStatus.LAGT_PÅ_KØ)
oppdragLagerRepository.opprettOppdrag(oppdragLager)
val hentetOppdrag = oppdragLagerRepository.hentKvitteringsinformasjon(oppdragLager.id).single()
@@ -95,8 +106,9 @@ internal class OppdragLagerRepositoryJdbcTest {
@Test
fun `skal kun sette kvitteringsmeldingen til null`() {
- val oppdragLager = utbetalingsoppdragMedTilfeldigAktoer().somOppdragLager
- .copy(status = OppdragStatus.LAGT_PÅ_KØ, kvitteringsmelding = kvitteringsmelding())
+ val oppdragLager =
+ utbetalingsoppdragMedTilfeldigAktoer().somOppdragLager
+ .copy(status = OppdragStatus.LAGT_PÅ_KØ, kvitteringsmelding = kvitteringsmelding())
oppdragLagerRepository.opprettOppdrag(oppdragLager)
val hentetOppdrag = oppdragLagerRepository.hentKvitteringsinformasjon(oppdragLager.id).single()
@@ -109,10 +121,11 @@ internal class OppdragLagerRepositoryJdbcTest {
}
private fun kvitteringsmelding(): Mmel {
- val kvitteringsmelding = Jaxb.tilOppdrag(
- this::class.java.getResourceAsStream("/kvittering-avvist.xml")
- .bufferedReader().use { it.readText() },
- )
+ val kvitteringsmelding =
+ Jaxb.tilOppdrag(
+ this::class.java.getResourceAsStream("/kvittering-avvist.xml")
+ .bufferedReader().use { it.readText() },
+ )
return kvitteringsmelding.mmel
}
@@ -157,21 +170,24 @@ internal class OppdragLagerRepositoryJdbcTest {
page,
).map { it.behandlingId.toInt() }
- val oppdrag1 = lagTestUtbetalingsoppdrag(
- dag.atTime(4, 0),
- "BA",
- utbetalingsperiode = arrayOf(lagUtbetalingsperiode(behandlingId = 3)),
- )
- val oppdrag2 = lagTestUtbetalingsoppdrag(
- dag.atTime(12, 0),
- "BA",
- utbetalingsperiode = arrayOf(lagUtbetalingsperiode(behandlingId = 1)),
- )
- val oppdrag3 = lagTestUtbetalingsoppdrag(
- dag.atTime(16, 0),
- "BA",
- utbetalingsperiode = arrayOf(lagUtbetalingsperiode(behandlingId = 2)),
- )
+ val oppdrag1 =
+ lagTestUtbetalingsoppdrag(
+ dag.atTime(4, 0),
+ "BA",
+ utbetalingsperiode = arrayOf(lagUtbetalingsperiode(behandlingId = 3)),
+ )
+ val oppdrag2 =
+ lagTestUtbetalingsoppdrag(
+ dag.atTime(12, 0),
+ "BA",
+ utbetalingsperiode = arrayOf(lagUtbetalingsperiode(behandlingId = 1)),
+ )
+ val oppdrag3 =
+ lagTestUtbetalingsoppdrag(
+ dag.atTime(16, 0),
+ "BA",
+ utbetalingsperiode = arrayOf(lagUtbetalingsperiode(behandlingId = 2)),
+ )
listOf(oppdrag1, oppdrag2, oppdrag3).forEach { oppdragLagerRepository.opprettOppdrag(it.somOppdragLager) }
assertThat(hentOppdragForGrensesnittsavstemming(page = 0)).containsExactly(1, 2)
@@ -281,10 +297,11 @@ internal class OppdragLagerRepositoryJdbcTest {
oppdragLagerRepository.opprettOppdrag(oppdragLager1)
oppdragLagerRepository.opprettOppdrag(oppdragLager2)
- val hentedeOppdrag = oppdragLagerRepository.hentSisteUtbetalingsoppdragForFagsaker(
- fagsystem = oppdragLager1.fagsystem,
- fagsakIder = setOf(oppdragLager1.fagsakId, oppdragLager2.fagsakId),
- )
+ val hentedeOppdrag =
+ oppdragLagerRepository.hentSisteUtbetalingsoppdragForFagsaker(
+ fagsystem = oppdragLager1.fagsystem,
+ fagsakIder = setOf(oppdragLager1.fagsakId, oppdragLager2.fagsakId),
+ )
assertThat(hentedeOppdrag.map { it.utbetalingsoppdrag }).containsAll(listOf(utbetalingsoppdrag1, utbetalingsoppdrag2))
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/repository/OppdragStatusTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/repository/OppdragStatusTest.kt
index ef53b649..997c31f7 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/repository/OppdragStatusTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/repository/OppdragStatusTest.kt
@@ -7,7 +7,6 @@ import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
internal class OppdragStatusTest {
-
@Test
fun skal_konvertere_status() {
assertEquals(OppdragStatus.KVITTERT_OK, lagOppdrag("00").oppdragStatus)
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/rest/OppdragControllerIntegrationTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/rest/OppdragControllerIntegrationTest.kt
index f0ed7363..bc2b9686 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/rest/OppdragControllerIntegrationTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/rest/OppdragControllerIntegrationTest.kt
@@ -14,11 +14,15 @@ import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable
import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.http.HttpStatus
import org.springframework.jms.annotation.EnableJms
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.context.ContextConfiguration
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
+import org.testcontainers.containers.PostgreSQLContainer
import org.testcontainers.junit.jupiter.Container
import org.testcontainers.junit.jupiter.Testcontainers
import org.testcontainers.shaded.org.awaitility.Awaitility.await
@@ -26,20 +30,28 @@ import java.time.Duration
import kotlin.test.assertEquals
@ActiveProfiles("dev")
-@ContextConfiguration(initializers = [Containers.PostgresSQLInitializer::class, Containers.MQInitializer::class])
+@ContextConfiguration(initializers = [ Containers.MQInitializer::class])
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@SpringBootTest(classes = [TestConfig::class], properties = ["spring.cloud.vault.enabled=false"])
@EnableJms
@DisabledIfEnvironmentVariable(named = "CIRCLECI", matches = "true")
@Testcontainers
internal class OppdragControllerIntegrationTest {
-
@Autowired lateinit var oppdragService: OppdragService
@Autowired lateinit var oppdragLagerRepository: OppdragLagerRepository
companion object {
+ @Container
+ private val postgreSQLContainer = PostgreSQLContainer("postgres:latest")
- @Container var postgreSQLContainer = Containers.postgreSQLContainer
+ @DynamicPropertySource
+ @JvmStatic
+ fun registerDynamicProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.datasource.url", postgreSQLContainer::getJdbcUrl)
+ registry.add("spring.datasource.username", postgreSQLContainer::getUsername)
+ registry.add("spring.datasource.password", postgreSQLContainer::getPassword)
+ }
@Container var ibmMQContainer = Containers.ibmMQContainer
}
@@ -83,11 +95,14 @@ internal class OppdragControllerIntegrationTest {
oppdragController.sendOppdrag(utbetalingsoppdrag)
oppdragLagerRepository.oppdaterStatus(utbetalingsoppdrag.oppdragId, OppdragStatus.KVITTERT_FUNKSJONELL_FEIL)
- oppdragController.resentOppdrag(utbetalingsoppdrag.oppdragId)
+ oppdragController.resendOppdrag(utbetalingsoppdrag.oppdragId)
assertOppdragStatus(utbetalingsoppdrag.oppdragId, OppdragStatus.KVITTERT_OK)
}
- private fun assertOppdragStatus(oppdragId: OppdragId, oppdragStatus: OppdragStatus) {
+ private fun assertOppdragStatus(
+ oppdragId: OppdragId,
+ oppdragStatus: OppdragStatus,
+ ) {
await()
.pollInterval(Duration.ofMillis(200))
.atMost(Duration.ofSeconds(10)).untilAsserted {
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/rest/OppdragControllerTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/rest/OppdragControllerTest.kt
index d78c3704..ef9f708f 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/rest/OppdragControllerTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/rest/OppdragControllerTest.kt
@@ -4,8 +4,10 @@ import io.mockk.Runs
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
+import io.mockk.runs
import io.mockk.verify
import no.nav.familie.kontrakter.felles.Ressurs
+import no.nav.familie.kontrakter.felles.oppdrag.OppdragId
import no.nav.familie.kontrakter.felles.oppdrag.OppdragStatus
import no.nav.familie.kontrakter.felles.oppdrag.Opphør
import no.nav.familie.kontrakter.felles.oppdrag.Utbetalingsoppdrag
@@ -15,6 +17,7 @@ import no.nav.familie.oppdrag.iverksetting.OppdragSender
import no.nav.familie.oppdrag.repository.OppdragLager
import no.nav.familie.oppdrag.repository.OppdragLagerRepository
import no.nav.familie.oppdrag.service.OppdragServiceImpl
+import no.trygdeetaten.skjema.oppdrag.Mmel
import org.junit.jupiter.api.Test
import org.springframework.http.HttpStatus
import java.math.BigDecimal
@@ -23,34 +26,34 @@ import java.time.LocalDateTime
import kotlin.test.assertEquals
internal class OppdragControllerTest {
-
val localDateTimeNow = LocalDateTime.now()
val localDateNow = LocalDate.now()
- val utbetalingsoppdrag = Utbetalingsoppdrag(
- Utbetalingsoppdrag.KodeEndring.NY,
- "BA",
- "SAKSNR",
- "PERSONID",
- "SAKSBEHANDLERID",
- localDateTimeNow,
- listOf(
- Utbetalingsperiode(
- true,
- Opphør(localDateNow),
- 2,
- 1,
- localDateNow,
- "BATR",
- localDateNow,
- localDateNow,
- BigDecimal.ONE,
- Utbetalingsperiode.SatsType.MND,
- "UTEBETALES_TIL",
- 1,
+ val utbetalingsoppdrag =
+ Utbetalingsoppdrag(
+ Utbetalingsoppdrag.KodeEndring.NY,
+ "BA",
+ "SAKSNR",
+ "PERSONID",
+ "SAKSBEHANDLERID",
+ localDateTimeNow,
+ listOf(
+ Utbetalingsperiode(
+ true,
+ Opphør(localDateNow),
+ 2,
+ 1,
+ localDateNow,
+ "BATR",
+ localDateNow,
+ localDateNow,
+ BigDecimal.ONE,
+ Utbetalingsperiode.SatsType.MND,
+ "UTEBETALES_TIL",
+ 1,
+ ),
),
- ),
- )
+ )
@Test
fun `Skal lagre oppdrag for utbetalingoppdrag`() {
@@ -81,13 +84,56 @@ internal class OppdragControllerTest {
verify(exactly = 1) { oppdragLagerRepository.opprettOppdrag(any()) }
}
+ @Test
+ fun `Skal kaste 409 feil om oppdrag allerede er kvittert ut`() {
+ val (oppdragLagerRepository, oppdragController) = mockkOppdragController(false)
+ val oppdragId = OppdragId(fagsystem = "BA", personIdent = "test", behandlingsId = "0")
+ val mocketOppdragLager = mockk()
+
+ every { mocketOppdragLager.status } returns OppdragStatus.KVITTERT_OK
+ every { oppdragLagerRepository.hentOppdrag(oppdragId) } returns mocketOppdragLager
+
+ val response = oppdragController.opprettManuellKvitteringPåOppdrag(oppdragId)
+
+ assertEquals(HttpStatus.CONFLICT, response.statusCode)
+ assertEquals(Ressurs.Status.FEILET, response.body?.status)
+
+ verify(exactly = 1) { oppdragLagerRepository.hentOppdrag(any()) }
+ }
+
+ @Test
+ fun `Skal returnere 200 OK om oppdrag ble manuelt kvittert ut`() {
+ val (oppdragLagerRepository, oppdragController) = mockkOppdragController(false)
+ val oppdragId = OppdragId(fagsystem = "BA", personIdent = "test", behandlingsId = "0")
+ val mocketOppdragLager = mockk()
+
+ every { mocketOppdragLager.status } returns OppdragStatus.LAGT_PÅ_KØ
+ every { mocketOppdragLager.versjon } returns 0
+ every { mocketOppdragLager.kvitteringsmelding } returns Mmel().apply { beskrMelding = "Manuelt kvittert ut" }
+
+ every { oppdragLagerRepository.hentOppdrag(oppdragId) } returns mocketOppdragLager
+ every { oppdragLagerRepository.oppdaterKvitteringsmelding(oppdragId, OppdragStatus.KVITTERT_OK, any(), 1) } just runs
+
+ val response = oppdragController.opprettManuellKvitteringPåOppdrag(oppdragId)
+
+ assertEquals(HttpStatus.OK, response.statusCode)
+ assertEquals("Manuelt kvittert ut", response.body?.melding)
+
+ verify(exactly = 1) { oppdragLagerRepository.hentOppdrag(any()) }
+ verify(exactly = 1) { oppdragLagerRepository.oppdaterKvitteringsmelding(oppdragId, OppdragStatus.KVITTERT_OK, any(), 1) }
+ }
+
private fun mockkOppdragController(alleredeOpprettet: Boolean = false): Pair {
val mapper = OppdragMapper()
val oppdragSender = mockk(relaxed = true)
val oppdragLagerRepository = mockk()
if (alleredeOpprettet) {
- every { oppdragLagerRepository.opprettOppdrag(any()) } throws org.springframework.dao.DuplicateKeyException("Duplicate key exception")
+ every {
+ oppdragLagerRepository.opprettOppdrag(
+ any(),
+ )
+ } throws org.springframework.dao.DuplicateKeyException("Duplicate key exception")
} else {
every { oppdragLagerRepository.opprettOppdrag(any()) } just Runs
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/service/GrensesnittavstemmingServiceTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/service/GrensesnittavstemmingServiceTest.kt
index d06a47f9..e70d6234 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/service/GrensesnittavstemmingServiceTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/service/GrensesnittavstemmingServiceTest.kt
@@ -7,6 +7,8 @@ import io.mockk.verify
import no.nav.familie.kontrakter.felles.oppdrag.GrensesnittavstemmingRequest
import no.nav.familie.oppdrag.avstemming.AvstemmingSender
import no.nav.familie.oppdrag.repository.OppdragLagerRepository
+import no.nav.familie.oppdrag.repository.TidligereKjørtGrensesnittavstemming
+import no.nav.familie.oppdrag.repository.TidligereKjørteGrensesnittavstemmingerRepository
import no.nav.familie.oppdrag.repository.somAvstemming
import no.nav.familie.oppdrag.util.TestOppdragMedAvstemmingsdato
import no.nav.virksomhet.tjenester.avstemming.meldinger.v1.AksjonType
@@ -15,15 +17,22 @@ import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import java.time.LocalDateTime
+import java.util.Optional
class GrensesnittavstemmingServiceTest {
-
val fagområde = "EFOG"
val antall = 2
val avstemmingSender = mockk()
val oppdragLagerRepository = mockk()
- val grensesnittavstemmingService = GrensesnittavstemmingService(avstemmingSender, oppdragLagerRepository, antall)
+ val tidligereKjørteGrensesnittavstemmingerRepository = mockk()
+ val grensesnittavstemmingService =
+ GrensesnittavstemmingService(
+ avstemmingSender = avstemmingSender,
+ oppdragLagerRepository = oppdragLagerRepository,
+ tidligereKjørteGrensesnittavstemmingerRepository = tidligereKjørteGrensesnittavstemmingerRepository,
+ antall = antall,
+ )
val slot = mutableListOf()
@@ -34,21 +43,59 @@ class GrensesnittavstemmingServiceTest {
oppdragLagerRepository.hentIverksettingerForGrensesnittavstemming(any(), any(), any(), antall, any())
} returns emptyList()
+ every {
+ tidligereKjørteGrensesnittavstemmingerRepository.findById(
+ any(),
+ )
+ } returns Optional.empty()
+
justRun { avstemmingSender.sendGrensesnittAvstemming(capture(slot)) }
}
@Test
fun `skal sende en melding på mq per batch`() {
- every { oppdragLagerRepository.hentIverksettingerForGrensesnittavstemming(any(), any(), any(), antall, 0) } returns
+ every {
+ oppdragLagerRepository.hentIverksettingerForGrensesnittavstemming(
+ any(),
+ any(),
+ any(),
+ antall,
+ 0,
+ )
+ } returns
+ listOf(
+ TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag(
+ LocalDateTime.now(),
+ fagområde,
+ ).somAvstemming,
+ TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag(
+ LocalDateTime.now(),
+ fagområde,
+ ).somAvstemming,
+ )
+ every {
+ oppdragLagerRepository.hentIverksettingerForGrensesnittavstemming(
+ any(),
+ any(),
+ any(),
+ antall,
+ 1,
+ )
+ } returns
listOf(
- TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag(LocalDateTime.now(), fagområde).somAvstemming,
- TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag(LocalDateTime.now(), fagområde).somAvstemming,
+ TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag(
+ LocalDateTime.now(),
+ fagområde,
+ ).somAvstemming,
)
- every { oppdragLagerRepository.hentIverksettingerForGrensesnittavstemming(any(), any(), any(), antall, 1) } returns
- listOf(TestOppdragMedAvstemmingsdato.lagTestUtbetalingsoppdrag(LocalDateTime.now(), fagområde).somAvstemming)
grensesnittavstemmingService.utførGrensesnittavstemming(
- GrensesnittavstemmingRequest(fagområde, LocalDateTime.now(), LocalDateTime.now()),
+ GrensesnittavstemmingRequest(
+ fagsystem = fagområde,
+ fra = LocalDateTime.now(),
+ til = LocalDateTime.now(),
+ avstemmingId = null,
+ ),
)
verify(exactly = 3) {
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/service/MellomlagringKonsistensavstemmingServiceTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/service/MellomlagringKonsistensavstemmingServiceTest.kt
index 686b15a9..4664daaa 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/service/MellomlagringKonsistensavstemmingServiceTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/service/MellomlagringKonsistensavstemmingServiceTest.kt
@@ -10,7 +10,6 @@ import java.util.UUID
import kotlin.test.assertEquals
class MellomlagringKonsistensavstemmingServiceTest {
-
private lateinit var mellomlagringKonsistensavstemmingRepository: MellomlagringKonsistensavstemmingRepository
private lateinit var mellomlagringKonsistensavstemmingService: MellomlagringKonsistensavstemmingService
@@ -20,7 +19,9 @@ class MellomlagringKonsistensavstemmingServiceTest {
fun setUp() {
mellomlagringKonsistensavstemmingRepository = mockk()
mellomlagringKonsistensavstemmingService =
- MellomlagringKonsistensavstemmingService(mellomlagringKonsistensavstemmingRepository = mellomlagringKonsistensavstemmingRepository)
+ MellomlagringKonsistensavstemmingService(
+ mellomlagringKonsistensavstemmingRepository = mellomlagringKonsistensavstemmingRepository,
+ )
}
@Test
@@ -73,6 +74,5 @@ class MellomlagringKonsistensavstemmingServiceTest {
sendStartmelding: Boolean,
sendAvsluttmelding: Boolean,
transaksjonsId: UUID?,
- ) =
- KonsistensavstemmingMetaInfo(Fagsystem.BA, transaksjonsId, LocalDateTime.now(), sendStartmelding, sendAvsluttmelding, emptyList())
+ ) = KonsistensavstemmingMetaInfo(Fagsystem.BA, transaksjonsId, LocalDateTime.now(), sendStartmelding, sendAvsluttmelding, emptyList())
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjenesteImplTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjenesteImplTest.kt
index 6dc5bf59..65310027 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjenesteImplTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/SimuleringTjenesteImplTest.kt
@@ -5,19 +5,21 @@ import no.nav.familie.kontrakter.felles.tilbakekreving.Ytelsestype
import no.nav.familie.oppdrag.repository.SimuleringLager
import no.nav.familie.oppdrag.repository.SimuleringLagerTjeneste
import no.nav.familie.oppdrag.simulering.util.lagTestUtbetalingsoppdragForFGBMedEttBarn
-import no.nav.familie.oppdrag.util.Containers
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable
import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.FilterType
import org.springframework.data.jdbc.core.JdbcAggregateOperations
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
+import org.testcontainers.containers.PostgreSQLContainer
import org.testcontainers.junit.jupiter.Container
import org.testcontainers.junit.jupiter.Testcontainers
import java.math.BigDecimal
@@ -26,12 +28,11 @@ import kotlin.test.assertEquals
import kotlin.test.assertTrue
@ActiveProfiles("dev")
-@ContextConfiguration(initializers = [Containers.PostgresSQLInitializer::class])
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@SpringBootTest(classes = [SimuleringTjenesteImplTest.TestConfig::class], properties = ["spring.cloud.vault.enabled=false"])
@DisabledIfEnvironmentVariable(named = "CIRCLECI", matches = "true")
@Testcontainers
internal class SimuleringTjenesteImplTest {
-
@Autowired lateinit var simuleringLagerTjeneste: SimuleringLagerTjeneste
@Autowired lateinit var simuleringTjeneste: SimuleringTjeneste
@@ -40,8 +41,16 @@ internal class SimuleringTjenesteImplTest {
private lateinit var jdbcAggregateOperations: JdbcAggregateOperations
companion object {
-
- @Container var postgreSQLContainer = Containers.postgreSQLContainer
+ @Container
+ private val postgreSQLContainer = PostgreSQLContainer("postgres:latest")
+
+ @DynamicPropertySource
+ @JvmStatic
+ fun registerDynamicProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.datasource.url", postgreSQLContainer::getJdbcUrl)
+ registry.add("spring.datasource.username", postgreSQLContainer::getUsername)
+ registry.add("spring.datasource.password", postgreSQLContainer::getPassword)
+ }
}
@BeforeEach
@@ -83,14 +92,15 @@ internal class SimuleringTjenesteImplTest {
),
)
- val feilutbetalingerFraSimulering = simuleringTjeneste
- .hentFeilutbetalinger(
- HentFeilutbetalingerFraSimuleringRequest(
- ytelsestype = Ytelsestype.OVERGANGSSTØNAD,
- eksternFagsakId = eksternFagsakId,
- fagsystemsbehandlingId = fagsystemsbehandlingId,
- ),
- )
+ val feilutbetalingerFraSimulering =
+ simuleringTjeneste
+ .hentFeilutbetalinger(
+ HentFeilutbetalingerFraSimuleringRequest(
+ ytelsestype = Ytelsestype.OVERGANGSSTØNAD,
+ eksternFagsakId = eksternFagsakId,
+ fagsystemsbehandlingId = fagsystemsbehandlingId,
+ ),
+ )
assertTrue {
feilutbetalingerFraSimulering.feilutbetaltePerioder.isNotEmpty() &&
feilutbetalingerFraSimulering.feilutbetaltePerioder.size == 1
@@ -123,14 +133,15 @@ internal class SimuleringTjenesteImplTest {
),
)
- val feilutbetalingerFraSimulering = simuleringTjeneste
- .hentFeilutbetalinger(
- HentFeilutbetalingerFraSimuleringRequest(
- ytelsestype = Ytelsestype.BARNETRYGD,
- eksternFagsakId = eksternFagsakId,
- fagsystemsbehandlingId = fagsystemsbehandlingId,
- ),
- )
+ val feilutbetalingerFraSimulering =
+ simuleringTjeneste
+ .hentFeilutbetalinger(
+ HentFeilutbetalingerFraSimuleringRequest(
+ ytelsestype = Ytelsestype.BARNETRYGD,
+ eksternFagsakId = eksternFagsakId,
+ fagsystemsbehandlingId = fagsystemsbehandlingId,
+ ),
+ )
assertTrue {
feilutbetalingerFraSimulering.feilutbetaltePerioder.isNotEmpty() &&
feilutbetalingerFraSimulering.feilutbetaltePerioder.size == 3
@@ -177,14 +188,15 @@ internal class SimuleringTjenesteImplTest {
),
)
- val feilutbetalingerFraSimulering = simuleringTjeneste
- .hentFeilutbetalinger(
- HentFeilutbetalingerFraSimuleringRequest(
- ytelsestype = Ytelsestype.BARNETILSYN,
- eksternFagsakId = eksternFagsakId,
- fagsystemsbehandlingId = fagsystemsbehandlingId,
- ),
- )
+ val feilutbetalingerFraSimulering =
+ simuleringTjeneste
+ .hentFeilutbetalinger(
+ HentFeilutbetalingerFraSimuleringRequest(
+ ytelsestype = Ytelsestype.BARNETILSYN,
+ eksternFagsakId = eksternFagsakId,
+ fagsystemsbehandlingId = fagsystemsbehandlingId,
+ ),
+ )
assertTrue { feilutbetalingerFraSimulering.feilutbetaltePerioder.isEmpty() }
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/Periode.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/Periode.kt
index 0b217957..59419b50 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/Periode.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/Periode.kt
@@ -46,11 +46,12 @@ data class Periode constructor(
sats = sats,
typeSats = typeSats,
kodeKlassifik = kodeKlassifik,
- periodeType = if (oldSats <= sats) {
- PeriodeType.ØKNING
- } else {
- PeriodeType.REDUKSJON
- },
+ periodeType =
+ if (oldSats <= sats) {
+ PeriodeType.ØKNING
+ } else {
+ PeriodeType.REDUKSJON
+ },
)
override fun compareTo(other: Periode): Int {
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/PeriodeGenerator.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/PeriodeGenerator.kt
index 076d5758..ac3f2324 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/PeriodeGenerator.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/PeriodeGenerator.kt
@@ -10,6 +10,7 @@ import java.util.Collections
class PeriodeGenerator {
var opphørsPerioder: MutableList = ArrayList()
var ytelsesPerioder: MutableList = ArrayList()
+
fun genererPerioder(oppdragslinjeList: List): List? {
lagOpphørOgYtelse(oppdragslinjeList)
Collections.sort(ytelsesPerioder)
@@ -297,7 +298,13 @@ class PeriodeGenerator {
removeYtelsesPerioder.add(ytelse)
continue@ytelseloop
// Scenario 9
- } else if (ytelse.fom.isAfter(opphør.fom) && !ytelse.tom.isAfter(opphør.tom)) { // ytelse.getFom() er implisit før opphør.getTom() da ytelse.getFom() ikke kan være etter ytelse.getTom()
+ } else if (ytelse.fom.isAfter(
+ opphør.fom,
+ ) &&
+ !ytelse.tom.isAfter(
+ opphør.tom,
+ )
+ ) { // ytelse.getFom() er implisit før opphør.getTom() da ytelse.getFom() ikke kan være etter ytelse.getTom()
opphør.sats?.let {
Periode(
ytelse.fom,
@@ -311,7 +318,13 @@ class PeriodeGenerator {
removeYtelsesPerioder.add(ytelse)
continue@ytelseloop
// Scenario 10 & 11
- } else if (ytelse.fom.isAfter(opphør.fom) && !ytelse.fom.isAfter(opphør.tom)) { // ytelse.getTom() er implisit after opphør.getTom() ellers ville den truffet forrige if-statement
+ } else if (ytelse.fom.isAfter(
+ opphør.fom,
+ ) &&
+ !ytelse.fom.isAfter(
+ opphør.tom,
+ )
+ ) { // ytelse.getTom() er implisit after opphør.getTom() ellers ville den truffet forrige if-statement
opphør.sats?.let {
Periode(
ytelse.fom,
@@ -360,9 +373,13 @@ class PeriodeGenerator {
private fun lagOpphørOgYtelse(oppdragslinjeList: List) {
for (oppdragslinje in oppdragslinjeList) {
- assert(oppdragslinje.typeSats == "MND" || oppdragslinje.typeSats == "DAG") { "Forventet at typeSats er enten DAG eller MND, men typeSats var: " + oppdragslinje.typeSats }
+ assert(oppdragslinje.typeSats == "MND" || oppdragslinje.typeSats == "DAG") {
+ "Forventet at typeSats er enten DAG eller MND, men typeSats var: " + oppdragslinje.typeSats
+ }
if (oppdragslinje.kodeEndringLinje == "ENDR") {
- assert(oppdragslinje.kodeStatusLinje == KodeStatusLinje.OPPH) { "Forventet at KodeStatusLinje er OPPH når KodeEndringLinje er ENDR" }
+ assert(
+ oppdragslinje.kodeStatusLinje == KodeStatusLinje.OPPH,
+ ) { "Forventet at KodeStatusLinje er OPPH når KodeEndringLinje er ENDR" }
if (oppdragslinje.datoStatusFom != null) {
opphørsPerioder.add(
Periode(
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/PeriodeType.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/PeriodeType.kt
index 22473aed..94ab5f4e 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/PeriodeType.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/PeriodeType.kt
@@ -1,5 +1,8 @@
package no.nav.familie.oppdrag.simulering.mock
enum class PeriodeType {
- YTEL, OPPH, ØKNING, REDUKSJON
+ YTEL,
+ OPPH,
+ ØKNING,
+ REDUKSJON,
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringGenerator.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringGenerator.kt
index 03b5bff1..9596a6aa 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringGenerator.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringGenerator.kt
@@ -20,6 +20,7 @@ class SimuleringGenerator {
var erRefusjon: Boolean? = null
var refunderesOrgNr: String? = null
var oppdragsPeriodeList: List? = ArrayList()
+
fun opprettSimuleringsResultat(simulerBeregningRequest: SimulerBeregningRequest): SimulerBeregningResponse {
erRefusjon = erRefusjon(simulerBeregningRequest.request.oppdrag.oppdragslinje)
oppdragsPeriodeList = periodeGenerator.genererPerioder(simulerBeregningRequest.request.oppdrag.oppdragslinje)
@@ -42,7 +43,10 @@ class SimuleringGenerator {
}
refunderesOrgNr = oppdragslinjer[0].refusjonsInfo.refunderesId
for (oppdragslinje in oppdragslinjer) {
- require(!(oppdragslinje.refusjonsInfo.refunderesId.isEmpty() || oppdragslinje.refusjonsInfo.refunderesId != refunderesOrgNr)) { "Ved refusjon må alle oppdragslinjer ha samme refusjonsInfo. Både orgnr " + refunderesOrgNr + " og " + oppdragslinje.refusjonsInfo.refunderesId + "ble funnet i samme request." }
+ require(!(oppdragslinje.refusjonsInfo.refunderesId.isEmpty() || oppdragslinje.refusjonsInfo.refunderesId != refunderesOrgNr)) {
+ "Ved refusjon må alle oppdragslinjer ha samme refusjonsInfo. Både orgnr " + refunderesOrgNr + " og " +
+ oppdragslinje.refusjonsInfo.refunderesId + "ble funnet i samme request."
+ }
}
return true
}
@@ -61,28 +65,32 @@ class SimuleringGenerator {
return beregning
}
- private fun leggTilBeregningsperioder(simulerBeregningRequest: SimulerBeregningRequest, beregning: Beregning) {
+ private fun leggTilBeregningsperioder(
+ simulerBeregningRequest: SimulerBeregningRequest,
+ beregning: Beregning,
+ ) {
val nesteMåned: YearMonth
- nesteMåned = if (LocalDate.now().dayOfMonth <= 19) {
- YearMonth.from(LocalDate.now())
- } else {
- YearMonth.from(LocalDate.now().plusMonths(1))
- }
+ nesteMåned =
+ if (LocalDate.now().dayOfMonth <= 19) {
+ YearMonth.from(LocalDate.now())
+ } else {
+ YearMonth.from(LocalDate.now().plusMonths(1))
+ }
val beregningsPerioder = beregning.beregningsPeriode
for (oppdragsperiode in oppdragsPeriodeList!!) {
var sisteMåned: YearMonth?
- sisteMåned = if (oppdragsperiode.periodeType == PeriodeType.OPPH) {
- nesteMåned.minusMonths(1)
- } else {
- nesteMåned
- }
+ sisteMåned =
+ if (oppdragsperiode.periodeType == PeriodeType.OPPH) {
+ nesteMåned.minusMonths(1)
+ } else {
+ nesteMåned
+ }
if (!YearMonth.from(oppdragsperiode.fom).isAfter(sisteMåned) && oppdragsperiode.antallVirkedager != 0) {
while (YearMonth.from(oppdragsperiode.tom).isAfter(sisteMåned)) {
- oppdragsperiode.tom = oppdragsperiode.tom.minusMonths(1)
- .withDayOfMonth(oppdragsperiode.tom.minusMonths(1).lengthOfMonth())
+ oppdragsperiode.tom =
+ oppdragsperiode.tom.minusMonths(1).withDayOfMonth(oppdragsperiode.tom.minusMonths(1).lengthOfMonth())
}
- val beregningsPeriode =
- opprettBeregningsperiode(oppdragsperiode, simulerBeregningRequest.request.oppdrag)
+ val beregningsPeriode = opprettBeregningsperiode(oppdragsperiode, simulerBeregningRequest.request.oppdrag)
if (!beregningsPeriode.beregningStoppnivaa.isEmpty()) {
beregningsPerioder.add(
opprettBeregningsperiode(
@@ -95,7 +103,10 @@ class SimuleringGenerator {
}
}
- private fun opprettBeregningsperiode(oppdragsperiode: Periode, oppdrag: Oppdrag): BeregningsPeriode {
+ private fun opprettBeregningsperiode(
+ oppdragsperiode: Periode,
+ oppdrag: Oppdrag,
+ ): BeregningsPeriode {
val beregningsPeriode = BeregningsPeriode()
beregningsPeriode.periodeFom = oppdragsperiode.fom.format(dateTimeFormatter)
beregningsPeriode.periodeTom = oppdragsperiode.tom.format(dateTimeFormatter)
@@ -103,21 +114,26 @@ class SimuleringGenerator {
return beregningsPeriode
}
- private fun opprettBeregningStoppNivaa(oppdragsperiode: Periode, oppdrag: Oppdrag): List {
+ private fun opprettBeregningStoppNivaa(
+ oppdragsperiode: Periode,
+ oppdrag: Oppdrag,
+ ): List {
val perioder = splittOppIPeriodePerMnd(oppdragsperiode)
val beregningStoppnivaaer: MutableList = ArrayList()
val nesteMåned: YearMonth
val sisteMåned: YearMonth
- nesteMåned = if (LocalDate.now().dayOfMonth <= 19) {
- YearMonth.from(LocalDate.now())
- } else {
- YearMonth.from(LocalDate.now().plusMonths(1))
- }
- sisteMåned = if (oppdragsperiode.periodeType == PeriodeType.OPPH) {
- nesteMåned.minusMonths(1)
- } else {
- nesteMåned
- }
+ nesteMåned =
+ if (LocalDate.now().dayOfMonth <= 19) {
+ YearMonth.from(LocalDate.now())
+ } else {
+ YearMonth.from(LocalDate.now().plusMonths(1))
+ }
+ sisteMåned =
+ if (oppdragsperiode.periodeType == PeriodeType.OPPH) {
+ nesteMåned.minusMonths(1)
+ } else {
+ nesteMåned
+ }
for (periode in perioder) {
if (!YearMonth.from(periode.fom).isAfter(sisteMåned)) {
val stoppnivaa = BeregningStoppnivaa()
@@ -151,7 +167,8 @@ class SimuleringGenerator {
),
)
}
- } else if (oppdragsperiode.periodeType == PeriodeType.REDUKSJON && YearMonth.from(periode.fom)
+ } else if (oppdragsperiode.periodeType == PeriodeType.REDUKSJON &&
+ YearMonth.from(periode.fom)
.isBefore(nesteMåned)
) {
stoppnivaa.beregningStoppnivaaDetaljer.add(
@@ -169,7 +186,8 @@ class SimuleringGenerator {
),
)
}
- } else if (oppdragsperiode.periodeType == PeriodeType.ØKNING && YearMonth.from(periode.fom)
+ } else if (oppdragsperiode.periodeType == PeriodeType.ØKNING &&
+ YearMonth.from(periode.fom)
.isBefore(nesteMåned)
) {
stoppnivaa.beregningStoppnivaaDetaljer.add(
@@ -303,12 +321,17 @@ class SimuleringGenerator {
return stoppnivaaDetaljer
}
- private fun setBeløp(antallVirkedager: Int, oppdragsperiode: Periode, sequence: Int): BigDecimal {
- val belop: BigDecimal = if (oppdragsperiode.typeSats == "DAG") {
- oppdragsperiode.sats!!.multiply(BigDecimal.valueOf(antallVirkedager.toLong()))
- } else {
- oppdragsperiode.sats!!
- }
+ private fun setBeløp(
+ antallVirkedager: Int,
+ oppdragsperiode: Periode,
+ sequence: Int,
+ ): BigDecimal {
+ val belop: BigDecimal =
+ if (oppdragsperiode.typeSats == "DAG") {
+ oppdragsperiode.sats!!.multiply(BigDecimal.valueOf(antallVirkedager.toLong()))
+ } else {
+ oppdragsperiode.sats!!
+ }
return if (oppdragsperiode.periodeType == PeriodeType.OPPH) {
if (sequence == 3) {
belop.negate()
@@ -319,11 +342,15 @@ class SimuleringGenerator {
if (sequence == 2) {
if (oppdragsperiode.typeSats == "DAG") {
belop.subtract(oppdragsperiode.oldSats!!.multiply(BigDecimal.valueOf(antallVirkedager.toLong()))).negate()
- } else { belop.subtract(oppdragsperiode.oldSats).negate() }
+ } else {
+ belop.subtract(oppdragsperiode.oldSats).negate()
+ }
} else if (sequence == 3) {
if (oppdragsperiode.typeSats == "DAG") {
oppdragsperiode.oldSats!!.multiply(BigDecimal.valueOf(antallVirkedager.toLong())).negate()
- } else { oppdragsperiode.oldSats!!.negate() }
+ } else {
+ oppdragsperiode.oldSats!!.negate()
+ }
} else {
belop
}
@@ -332,23 +359,26 @@ class SimuleringGenerator {
companion object {
val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
+
fun splittOppIPeriodePerMnd(oppdragsperiode: Periode): List {
val perioder: MutableList = ArrayList()
require(!oppdragsperiode.tom.isBefore(oppdragsperiode.fom)) {
- "Startdato " + oppdragsperiode.fom.format(
- dateTimeFormatter,
- ) + " kan ikke være etter sluttdato " + oppdragsperiode.tom.format(dateTimeFormatter)
+ "Startdato " +
+ oppdragsperiode.fom.format(
+ dateTimeFormatter,
+ ) + " kan ikke være etter sluttdato " + oppdragsperiode.tom.format(dateTimeFormatter)
}
var dato = oppdragsperiode.fom
while (!dato.isAfter(oppdragsperiode.tom)) {
val sisteDagIMnd = YearMonth.from(dato).atEndOfMonth()
- dato = if (sisteDagIMnd.isBefore(oppdragsperiode.tom)) {
- perioder.add(Periode(dato, sisteDagIMnd))
- sisteDagIMnd.plusDays(1)
- } else {
- perioder.add(Periode(dato, oppdragsperiode.tom))
- oppdragsperiode.tom.plusDays(1)
- }
+ dato =
+ if (sisteDagIMnd.isBefore(oppdragsperiode.tom)) {
+ perioder.add(Periode(dato, sisteDagIMnd))
+ sisteDagIMnd.plusDays(1)
+ } else {
+ perioder.add(Periode(dato, oppdragsperiode.tom))
+ oppdragsperiode.tom.plusDays(1)
+ }
}
return perioder
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringGeneratorTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringGeneratorTest.kt
index 725760ed..71925a27 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringGeneratorTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringGeneratorTest.kt
@@ -10,7 +10,6 @@ import org.junit.jupiter.api.Test
import java.math.BigDecimal
internal class SimuleringGeneratorTest {
-
private val simuleringGenerator = SimuleringGenerator()
@Test
@@ -18,7 +17,9 @@ internal class SimuleringGeneratorTest {
val oppdragGjelderId = "12345678901"
val kodeEndring = "NY"
val request: SimulerBeregningRequest = opprettSimulerBeregningRequest(oppdragGjelderId, kodeEndring)
- request.request.oppdrag.oppdragslinje.add(opprettOppdragslinje("NY", null, 2339, oppdragGjelderId, "2020-06-01", "2020-11-30", null))
+ request.request.oppdrag.oppdragslinje.add(
+ opprettOppdragslinje("NY", null, 2339, oppdragGjelderId, "2020-06-01", "2020-11-30", null),
+ )
val response = simuleringGenerator.opprettSimuleringsResultat(request)
assertThat(response.response.simulering.gjelderId)
@@ -27,16 +28,24 @@ internal class SimuleringGeneratorTest {
.withFailMessage("Forventet 'gjelderId' var feil og/eller mottaker av ytelsen stemte ikke overens med personen ytelsen gjelder")
assertThat(response.response.simulering.beregningsPeriode.size)
.isEqualTo(1)
- .withFailMessage("Resultatperioden ble delt opp feil, ettersom alle periodene er sammenhengende skal de komme som en lang resultatperiode")
+ .withFailMessage(
+ "Resultatperioden ble delt opp feil, ettersom alle periodene er sammenhengende skal de komme som en lang resultatperiode",
+ )
assertThat(response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size)
.isEqualTo(6)
- .withFailMessage("Perioden fom 01.06.2020 - tom 30.11.2020 skal være på totat 5 måneder. Antall måneder i resultatet var: " + response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size)
+ .withFailMessage(
+ "Perioden fom 01.06.2020 - tom 30.11.2020 skal være på totat 5 måneder. Antall måneder i resultatet var: " +
+ response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size,
+ )
val detaljer: List =
response.response.simulering.beregningsPeriode[0].beregningStoppnivaa[0].beregningStoppnivaaDetaljer
detaljer.sortedBy { beregningStoppnivaaDetaljer -> beregningStoppnivaaDetaljer.behandlingskode }
assertThat(detaljer.size)
.isEqualTo(1)
- .withFailMessage("En positiv respons skal bare ha en beregningStoppnivaaDetaljer. Det at den hadde flere enn 1 indikerer at det feilaktig er oppstått andre posteringer")
+ .withFailMessage(
+ "En positiv respons skal bare ha en beregningStoppnivaaDetaljer. Det at den hadde flere enn 1 indikerer at " +
+ "det feilaktig er oppstått andre posteringer",
+ )
}
@Test
@@ -44,8 +53,12 @@ internal class SimuleringGeneratorTest {
val oppdragGjelderId = "12345678902"
val kodeEndring = "ENDR"
val request: SimulerBeregningRequest = opprettSimulerBeregningRequest(oppdragGjelderId, kodeEndring)
- request.request.oppdrag.oppdragslinje.add(opprettOppdragslinje(kodeEndring, KodeStatusLinje.OPPH, 1330, oppdragGjelderId, "2020-07-01", "2020-11-30", "2020-07-01"))
- request.request.oppdrag.oppdragslinje.add(opprettOppdragslinje("NY", null, 1200, oppdragGjelderId, "2020-07-01", "2020-11-30", null))
+ request.request.oppdrag.oppdragslinje.add(
+ opprettOppdragslinje(kodeEndring, KodeStatusLinje.OPPH, 1330, oppdragGjelderId, "2020-07-01", "2020-11-30", "2020-07-01"),
+ )
+ request.request.oppdrag.oppdragslinje.add(
+ opprettOppdragslinje("NY", null, 1200, oppdragGjelderId, "2020-07-01", "2020-11-30", null),
+ )
val response = simuleringGenerator.opprettSimuleringsResultat(request)
assertThat(response.response.simulering.gjelderId)
@@ -54,7 +67,10 @@ internal class SimuleringGeneratorTest {
.withFailMessage("Forventet 'gjelderId' var feil og/eller mottaker av ytelsen stemte ikke overens med personen ytelsen gjelder")
assertThat(response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size)
.isEqualTo(5)
- .withFailMessage("Perioden fom 01.07.2020 - tom 30.11.2020 skal være på totat 5 måneder. Antall måneder i resultatet var: " + response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size)
+ .withFailMessage(
+ "Perioden fom 01.07.2020 - tom 30.11.2020 skal være på totat 5 måneder. Antall måneder i resultatet var: " +
+ response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size,
+ )
val detaljer: List =
response.response.simulering.beregningsPeriode[0].beregningStoppnivaa[0].beregningStoppnivaaDetaljer
@@ -87,7 +103,9 @@ internal class SimuleringGeneratorTest {
val oppdragGjelderId = "12345678903"
val kodeEndring = "ENDR"
val request: SimulerBeregningRequest = opprettSimulerBeregningRequest(oppdragGjelderId, kodeEndring)
- request.request.oppdrag.oppdragslinje.add(opprettOppdragslinje(kodeEndring, KodeStatusLinje.OPPH, 1330, oppdragGjelderId, "2020-07-01", "2020-10-31", "2020-07-01"))
+ request.request.oppdrag.oppdragslinje.add(
+ opprettOppdragslinje(kodeEndring, KodeStatusLinje.OPPH, 1330, oppdragGjelderId, "2020-07-01", "2020-10-31", "2020-07-01"),
+ )
val response = simuleringGenerator.opprettSimuleringsResultat(request)
assertThat(response.response.simulering.gjelderId)
@@ -96,7 +114,10 @@ internal class SimuleringGeneratorTest {
.withFailMessage("Forventet 'gjelderId' var feil og/eller mottaker av ytelsen stemte ikke overens med personen ytelsen gjelder")
assertThat(response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size)
.isEqualTo(4)
- .withFailMessage("Perioden fom 01.07.2020 - tom 31.10.2020 skal være på totat 4 måneder. Antall måneder i resultatet var: " + response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size)
+ .withFailMessage(
+ "Perioden fom 01.07.2020 - tom 31.10.2020 skal være på totat 4 måneder. Antall måneder i resultatet var: " +
+ response.response.simulering.beregningsPeriode[0].beregningStoppnivaa.size,
+ )
val detaljer: List =
response.response.simulering.beregningsPeriode[0].beregningStoppnivaa[0].beregningStoppnivaaDetaljer
@@ -124,7 +145,10 @@ internal class SimuleringGeneratorTest {
.withFailMessage("Beløp for gammel ytelse var feil, forventet månedsbeløp 1330 men fikk: " + detaljer[2].belop)
}
- private fun opprettSimulerBeregningRequest(oppdragGjelderId: String, kodeEndring: String): SimulerBeregningRequest {
+ private fun opprettSimulerBeregningRequest(
+ oppdragGjelderId: String,
+ kodeEndring: String,
+ ): SimulerBeregningRequest {
val request = SimulerBeregningRequest()
request.request =
no.nav.system.os.tjenester.simulerfpservice.simulerfpserviceservicetypes.SimulerBeregningRequest()
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringSenderMock.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringSenderMock.kt
index 938ef00a..dce14739 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringSenderMock.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/mock/SimuleringSenderMock.kt
@@ -9,7 +9,6 @@ import org.springframework.stereotype.Service
@Profile("dev", "dev_psql_mq")
@Service
class SimuleringSenderMock : SimuleringSender {
-
override fun hentSimulerBeregningResponse(simulerBeregningRequest: SimulerBeregningRequest?): SimulerBeregningResponse {
return SimuleringGenerator().opprettSimuleringsResultat(simulerBeregningRequest!!)
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/util/ClientMocks.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/util/ClientMocks.kt
index eb432787..0ed56f7b 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/util/ClientMocks.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/util/ClientMocks.kt
@@ -10,7 +10,6 @@ import org.springframework.stereotype.Component
@Component
class ClientMocks {
-
@Bean
@Profile("dev")
@Primary
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/simulering/util/SimuleringTestUtils.kt b/src/test/kotlin/no/nav/familie/oppdrag/simulering/util/SimuleringTestUtils.kt
index abbaec67..2d3a57ce 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/simulering/util/SimuleringTestUtils.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/simulering/util/SimuleringTestUtils.kt
@@ -51,7 +51,10 @@ fun lagTestUtbetalingsoppdragForFGBMedEttBarn(): Utbetalingsoppdrag {
)
}
-fun lagBeregningsPeriode(bergeningStopNiva: List, date: LocalDate): BeregningsPeriode {
+fun lagBeregningsPeriode(
+ bergeningStopNiva: List,
+ date: LocalDate,
+): BeregningsPeriode {
val beregningsPeriode = BeregningsPeriode()
beregningsPeriode.periodeFom = date.with(TemporalAdjusters.firstDayOfMonth()).toString()
beregningsPeriode.periodeTom = date.with(TemporalAdjusters.lastDayOfMonth()).toString()
@@ -79,15 +82,17 @@ fun lagTestSimuleringResponse(): SimulerBeregningResponse {
val enTideligereMåned = currentDate.plusMonths(1)
- val periodeNåværendeMåned = lagBeregningsPeriode(
- listOf(lagBeregningStoppniva(currentDate)),
- currentDate,
- )
-
- val periodeTidligereMåned = lagBeregningsPeriode(
- listOf(lagBeregningStoppniva(enTideligereMåned, 2)),
- enTideligereMåned,
- )
+ val periodeNåværendeMåned =
+ lagBeregningsPeriode(
+ listOf(lagBeregningStoppniva(currentDate)),
+ currentDate,
+ )
+
+ val periodeTidligereMåned =
+ lagBeregningsPeriode(
+ listOf(lagBeregningStoppniva(enTideligereMåned, 2)),
+ enTideligereMåned,
+ )
return lagSimulerBeregningResponse(listOf(periodeNåværendeMåned, periodeTidligereMåned))
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/tss/TssOppslagServiceTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/tss/TssOppslagServiceTest.kt
index 4b6cf397..ecfca81f 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/tss/TssOppslagServiceTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/tss/TssOppslagServiceTest.kt
@@ -13,7 +13,6 @@ import kotlin.test.assertFalse
import kotlin.test.assertTrue
internal class TssOppslagServiceTest {
-
private val jmsTemplate: JmsTemplate = mockk(relaxed = false)
private val mockedMessage: Message = mockk()
@@ -34,7 +33,10 @@ internal class TssOppslagServiceTest {
val response = service.hentSamhandlerDataForOrganisasjonB910(TssSamhandlerIdent("ORGNR", ORGNR))
assertEquals(1, response.enkeltSamhandler.size)
assertEquals("2", response.enkeltSamhandler.first().samhandlerAvd125.antSamhAvd)
- assertEquals("80000112244", response.enkeltSamhandler.first().samhandlerAvd125.samhAvd.filter { it.kilde == "IT00" }.first().idOffTSS)
+ assertEquals(
+ "80000112244",
+ response.enkeltSamhandler.first().samhandlerAvd125.samhAvd.filter { it.kilde == "IT00" }.first().idOffTSS,
+ )
}
@Test
@@ -54,9 +56,10 @@ internal class TssOppslagServiceTest {
fun `Skal få TssNoDataFoundException hvis man ikke finner samhandlerinfo for orgnr ved bruk av proxytjenesten`() {
every { mockedMessage.getBody(String::class.java) } returns lesFil("tss-910-notfound-response.xml")
- val tssNoDataFoundException = assertThrows(TssNoDataFoundException::class.java) {
- service.hentSamhandlerInformasjon(TssSamhandlerIdent("ORGNR", ORGNR))
- }
+ val tssNoDataFoundException =
+ assertThrows(TssNoDataFoundException::class.java) {
+ service.hentSamhandlerInformasjon(TssSamhandlerIdent("ORGNR", ORGNR))
+ }
assertEquals("Ingen treff med inputData=TssSamhandlerIdent(ident=ORGNR, type=ORGNR)", tssNoDataFoundException.message)
}
@@ -65,9 +68,10 @@ internal class TssOppslagServiceTest {
fun `Skal få TssConnectionException hvis jmstemplate returnerer er null pga timeout`() {
every { jmsTemplate.sendAndReceive(any()) } returns null
- val tssNoDataFoundException = assertThrows(TssConnectionException::class.java) {
- service.hentSamhandlerInformasjon(TssSamhandlerIdent("ORGNR", ORGNR))
- }
+ val tssNoDataFoundException =
+ assertThrows(TssConnectionException::class.java) {
+ service.hentSamhandlerInformasjon(TssSamhandlerIdent("ORGNR", ORGNR))
+ }
assertEquals("En feil oppsto i kallet til TSS. Response var null (timeout?)", tssNoDataFoundException.message)
}
@@ -76,9 +80,10 @@ internal class TssOppslagServiceTest {
fun `Skal få TssConnectionException hvis jmstemplate kaster JmsException pga ukjent feil`() {
every { jmsTemplate.sendAndReceive(any()) } throws RuntimeException("Ukjent feil")
- val tssNoDataFoundException = assertThrows(TssConnectionException::class.java) {
- service.hentSamhandlerInformasjon(TssSamhandlerIdent("ORGNR", ORGNR))
- }
+ val tssNoDataFoundException =
+ assertThrows(TssConnectionException::class.java) {
+ service.hentSamhandlerInformasjon(TssSamhandlerIdent("ORGNR", ORGNR))
+ }
assertEquals("En feil oppsto i kallet til TSS", tssNoDataFoundException.message)
}
@@ -87,9 +92,10 @@ internal class TssOppslagServiceTest {
fun `Skal få TssResponseException hvis b910 returerner feil med en annen feilkode enn Ingen treff`() {
every { mockedMessage.getBody(String::class.java) } returns lesFil("tss-910-error-response.xml")
- val tssResponseException = assertThrows(TssResponseException::class.java) {
- service.hentSamhandlerInformasjon(TssSamhandlerIdent("ORGNR", ORGNR))
- }
+ val tssResponseException =
+ assertThrows(TssResponseException::class.java) {
+ service.hentSamhandlerInformasjon(TssSamhandlerIdent("ORGNR", ORGNR))
+ }
assertEquals("DET FINNES MER INFORMASJON-04-B9XX018I", tssResponseException.message)
}
@@ -97,11 +103,23 @@ internal class TssOppslagServiceTest {
@Test
fun `Skal hente samhandlerinfo ved søk på navn ved bruk av proxytjenesten b940`() {
every { mockedMessage.getBody(String::class.java) } returns lesFil("tss-940-response.xml")
- val response = service.hentInformasjonOmSamhandlerInstB940(navn = "Inst", postNummer = null, område = null, side = 0).tssOutputData.samhandlerODataB940
+ val response =
+ service.hentInformasjonOmSamhandlerInstB940(
+ navn = "Inst",
+ postNummer = null,
+ område = null,
+ side = 0,
+ ).tssOutputData.samhandlerODataB940
assertEquals(3, response.enkeltSamhandler.size)
assertEquals("2", response.enkeltSamhandler.first().samhandlerAvd125.antSamhAvd)
- assertEquals("80000442211", response.enkeltSamhandler.first().samhandlerAvd125.samhAvd.filter { it.kilde == "IT00" }.first().idOffTSS)
- assertEquals("80000112244", response.enkeltSamhandler.get(1).samhandlerAvd125.samhAvd.filter { it.kilde == "IT00" }.first().idOffTSS)
+ assertEquals(
+ "80000442211",
+ response.enkeltSamhandler.first().samhandlerAvd125.samhAvd.filter { it.kilde == "IT00" }.first().idOffTSS,
+ )
+ assertEquals(
+ "80000112244",
+ response.enkeltSamhandler.get(1).samhandlerAvd125.samhAvd.filter { it.kilde == "IT00" }.first().idOffTSS,
+ )
assertEquals(0, response.enkeltSamhandler.get(2).samhandlerAvd125.samhAvd.filter { it.kilde == "IT00" }.size)
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/util/ContainerTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/util/ContainerTest.kt
index bffd64e5..3994161b 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/util/ContainerTest.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/util/ContainerTest.kt
@@ -6,42 +6,22 @@ import org.springframework.context.ConfigurableApplicationContext
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
import org.testcontainers.containers.GenericContainer
-import org.testcontainers.containers.PostgreSQLContainer
@Configuration
@ComponentScan("no.nav.familie.oppdrag")
class TestConfig
object Containers {
+ var ibmMQContainer =
+ MyGeneralContainer("ibmcom/mq")
+ .withEnv("LICENSE", "accept")
+ .withEnv("MQ_QMGR_NAME", "QM1")
+ .withEnv("persistance.enabled", "true")
+ .withExposedPorts(1414)
- var postgreSQLContainer = MyPostgreSQLContainer("postgres:latest")
- .withDatabaseName("familie-oppdrag")
- .withUsername("postgres")
- .withPassword("test")
- .withExposedPorts(5432)
-
- var ibmMQContainer = MyGeneralContainer("ibmcom/mq")
- .withEnv("LICENSE", "accept")
- .withEnv("MQ_QMGR_NAME", "QM1")
- .withEnv("persistance.enabled", "true")
- .withExposedPorts(1414)
-
- class MyPostgreSQLContainer(imageName: String) : PostgreSQLContainer(imageName)
class MyGeneralContainer(imageName: String) : GenericContainer(imageName)
- class PostgresSQLInitializer : ApplicationContextInitializer {
-
- override fun initialize(configurableApplicationContext: ConfigurableApplicationContext) {
- TestPropertyValues.of(
- "spring.datasource.url=" + postgreSQLContainer.jdbcUrl,
- "spring.datasource.username=" + postgreSQLContainer.username,
- "spring.datasource.password=" + postgreSQLContainer.password,
- ).applyTo(configurableApplicationContext.environment)
- }
- }
-
class MQInitializer : ApplicationContextInitializer {
-
override fun initialize(configurableApplicationContext: ConfigurableApplicationContext) {
TestPropertyValues.of(
"oppdrag.mq.port=" + ibmMQContainer.getMappedPort(1414),
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/util/TestOppdragMedAvstemmingsdato.kt b/src/test/kotlin/no/nav/familie/oppdrag/util/TestOppdragMedAvstemmingsdato.kt
index 43f58467..91819392 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/util/TestOppdragMedAvstemmingsdato.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/util/TestOppdragMedAvstemmingsdato.kt
@@ -7,7 +7,6 @@ import java.time.LocalDateTime
import kotlin.random.Random
object TestOppdragMedAvstemmingsdato {
-
private val FAGSAKID = "123456789"
private val AKTOER = "12345678911"
@@ -16,16 +15,15 @@ object TestOppdragMedAvstemmingsdato {
fagområde: String,
fagsak: String = FAGSAKID,
vararg utbetalingsperiode: Utbetalingsperiode = arrayOf(lagUtbetalingsperiode(fagområde)),
- ) =
- Utbetalingsoppdrag(
- kodeEndring = Utbetalingsoppdrag.KodeEndring.NY,
- fagSystem = fagområde,
- saksnummer = fagsak,
- aktoer = AKTOER,
- saksbehandlerId = "Z999999",
- avstemmingTidspunkt = avstemmingstidspunkt,
- utbetalingsperiode = utbetalingsperiode.toList(),
- )
+ ) = Utbetalingsoppdrag(
+ kodeEndring = Utbetalingsoppdrag.KodeEndring.NY,
+ fagSystem = fagområde,
+ saksnummer = fagsak,
+ aktoer = AKTOER,
+ saksbehandlerId = "Z999999",
+ avstemmingTidspunkt = avstemmingstidspunkt,
+ utbetalingsperiode = utbetalingsperiode.toList(),
+ )
fun lagUtbetalingsperiode(
fagområde: String = "BA",
@@ -34,20 +32,19 @@ object TestOppdragMedAvstemmingsdato {
fom: LocalDate = LocalDate.now().withDayOfMonth(1),
tom: LocalDate = LocalDate.now().plusYears(6),
behandlingId: Long? = null,
- ) =
- Utbetalingsperiode(
- erEndringPåEksisterendePeriode = false,
- opphør = null,
- periodeId = periodeId,
- forrigePeriodeId = null,
- datoForVedtak = LocalDate.now(),
- klassifisering = if (fagområde.equals("BA")) "BATR" else "EF",
- vedtakdatoFom = fom,
- vedtakdatoTom = tom,
- sats = beløp.toBigDecimal(),
- satsType = Utbetalingsperiode.SatsType.MND,
- utbetalesTil = AKTOER,
- behandlingId = behandlingId ?: Random.nextLong(),
- utbetalingsgrad = 50,
- )
+ ) = Utbetalingsperiode(
+ erEndringPåEksisterendePeriode = false,
+ opphør = null,
+ periodeId = periodeId,
+ forrigePeriodeId = null,
+ datoForVedtak = LocalDate.now(),
+ klassifisering = if (fagområde.equals("BA")) "BATR" else "EF",
+ vedtakdatoFom = fom,
+ vedtakdatoTom = tom,
+ sats = beløp.toBigDecimal(),
+ satsType = Utbetalingsperiode.SatsType.MND,
+ utbetalesTil = AKTOER,
+ behandlingId = behandlingId ?: Random.nextLong(),
+ utbetalingsgrad = 50,
+ )
}
diff --git a/src/test/kotlin/no/nav/familie/oppdrag/util/TestUtbetalingsoppdrag.kt b/src/test/kotlin/no/nav/familie/oppdrag/util/TestUtbetalingsoppdrag.kt
index 9a825d49..36554748 100644
--- a/src/test/kotlin/no/nav/familie/oppdrag/util/TestUtbetalingsoppdrag.kt
+++ b/src/test/kotlin/no/nav/familie/oppdrag/util/TestUtbetalingsoppdrag.kt
@@ -9,32 +9,33 @@ import java.time.LocalDateTime
import java.util.UUID
object TestUtbetalingsoppdrag {
-
private val localDateTimeNow = LocalDateTime.now()
private val localDateNow = LocalDate.now()
- fun utbetalingsoppdragMedTilfeldigAktoer() = Utbetalingsoppdrag(
- Utbetalingsoppdrag.KodeEndring.NY,
- "EFOG",
- "SAKSNR",
- UUID.randomUUID().toString(), // Foreløpig plass til en 50-tegn string og ingen gyldighetssjekk
- "SAKSBEHANDLERID",
- localDateTimeNow,
- listOf(
- Utbetalingsperiode(
- false,
- Opphør(localDateNow),
- 1,
- null,
- localDateNow,
- "KLASSE A",
- localDateNow,
- localDateNow,
- BigDecimal.ONE,
- Utbetalingsperiode.SatsType.MND,
- "UTEBETALES_TIL",
- 1,
+ fun utbetalingsoppdragMedTilfeldigAktoer() =
+ Utbetalingsoppdrag(
+ Utbetalingsoppdrag.KodeEndring.NY,
+ "EFOG",
+ "SAKSNR",
+ // Foreløpig plass til en 50-tegn string og ingen gyldighetssjekk
+ UUID.randomUUID().toString(),
+ "SAKSBEHANDLERID",
+ localDateTimeNow,
+ listOf(
+ Utbetalingsperiode(
+ false,
+ Opphør(localDateNow),
+ 1,
+ null,
+ localDateNow,
+ "KLASSE A",
+ localDateNow,
+ localDateNow,
+ BigDecimal.ONE,
+ Utbetalingsperiode.SatsType.MND,
+ "UTEBETALES_TIL",
+ 1,
+ ),
),
- ),
- )
+ )
}