diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 975dbaeb..00000000 --- a/.editorconfig +++ /dev/null @@ -1,279 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 4 -indent_style = space -insert_final_newline = true -max_line_length = 150 -tab_width = 4 -trim_trailing_whitespace = true -ij_continuation_indent_size = 4 -ij_formatter_off_tag = @formatter:off -ij_formatter_on_tag = @formatter:on -ij_formatter_tags_enabled = false -ij_smart_tabs = false -ij_wrap_on_typing = false - -[*.json] -indent_size = 2 - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[*.java] -ij_java_align_consecutive_assignments = false -ij_java_align_consecutive_variable_declarations = false -ij_java_align_group_field_declarations = false -ij_java_align_multiline_annotation_parameters = false -ij_java_align_multiline_array_initializer_expression = false -ij_java_align_multiline_assignment = false -ij_java_align_multiline_binary_operation = false -ij_java_align_multiline_chained_methods = false -ij_java_align_multiline_extends_list = true -ij_java_align_multiline_for = true -ij_java_align_multiline_method_parentheses = false -ij_java_align_multiline_parameters = true -ij_java_align_multiline_parameters_in_calls = false -ij_java_align_multiline_parenthesized_expression = false -ij_java_align_multiline_records = true -ij_java_align_multiline_resources = true -ij_java_align_multiline_ternary_operation = false -ij_java_align_multiline_text_blocks = false -ij_java_align_multiline_throws_list = false -ij_java_align_subsequent_simple_methods = false -ij_java_align_throws_keyword = false -ij_java_annotation_parameter_wrap = off -ij_java_array_initializer_new_line_after_left_brace = false -ij_java_array_initializer_right_brace_on_new_line = false -ij_java_array_initializer_wrap = off -ij_java_assert_statement_colon_on_next_line = false -ij_java_assert_statement_wrap = off -ij_java_assignment_wrap = off -ij_java_binary_operation_sign_on_next_line = true -ij_java_binary_operation_wrap = normal -ij_java_blank_lines_after_anonymous_class_header = 0 -ij_java_blank_lines_after_class_header = 0 -ij_java_blank_lines_after_imports = 1 -ij_java_blank_lines_after_package = 1 -ij_java_blank_lines_around_class = 1 -ij_java_blank_lines_around_field = 0 -ij_java_blank_lines_around_field_in_interface = 0 -ij_java_blank_lines_around_initializer = 1 -ij_java_blank_lines_around_method = 1 -ij_java_blank_lines_around_method_in_interface = 1 -ij_java_blank_lines_before_class_end = 0 -ij_java_blank_lines_before_imports = 1 -ij_java_blank_lines_before_method_body = 0 -ij_java_blank_lines_before_package = 0 -ij_java_block_brace_style = end_of_line -ij_java_block_comment_at_first_column = true -ij_java_call_parameters_new_line_after_left_paren = false -ij_java_call_parameters_right_paren_on_new_line = false -ij_java_call_parameters_wrap = normal -ij_java_case_statement_on_separate_line = true -ij_java_catch_on_new_line = false -ij_java_class_annotation_wrap = split_into_lines -ij_java_class_brace_style = end_of_line -ij_java_class_count_to_use_import_on_demand = 999999 -ij_java_class_names_in_javadoc = 1 -ij_java_do_not_indent_top_level_class_members = false -ij_java_do_not_wrap_after_single_annotation = false -ij_java_do_while_brace_force = always -ij_java_doc_add_blank_line_after_description = true -ij_java_doc_add_blank_line_after_param_comments = false -ij_java_doc_add_blank_line_after_return = false -ij_java_doc_add_p_tag_on_empty_lines = true -ij_java_doc_align_exception_comments = true -ij_java_doc_align_param_comments = true -ij_java_doc_do_not_wrap_if_one_line = false -ij_java_doc_enable_formatting = true -ij_java_doc_enable_leading_asterisks = true -ij_java_doc_indent_on_continuation = false -ij_java_doc_keep_empty_lines = true -ij_java_doc_keep_empty_parameter_tag = true -ij_java_doc_keep_empty_return_tag = true -ij_java_doc_keep_empty_throws_tag = true -ij_java_doc_keep_invalid_tags = true -ij_java_doc_param_description_on_new_line = false -ij_java_doc_preserve_line_breaks = false -ij_java_doc_use_throws_not_exception_tag = true -ij_java_else_on_new_line = false -ij_java_entity_dd_suffix = EJB -ij_java_entity_eb_suffix = Bean -ij_java_entity_hi_suffix = Home -ij_java_entity_lhi_prefix = Local -ij_java_entity_lhi_suffix = Home -ij_java_entity_li_prefix = Local -ij_java_entity_pk_class = java.lang.String -ij_java_entity_vo_suffix = VO -ij_java_enum_constants_wrap = split_into_lines -ij_java_extends_keyword_wrap = off -ij_java_extends_list_wrap = off -ij_java_field_annotation_wrap = split_into_lines -ij_java_finally_on_new_line = false -ij_java_for_brace_force = always -ij_java_for_statement_new_line_after_left_paren = false -ij_java_for_statement_right_paren_on_new_line = false -ij_java_for_statement_wrap = off -ij_java_generate_final_locals = false -ij_java_generate_final_parameters = false -ij_java_if_brace_force = always -ij_java_imports_layout = $*, |, java.**, |, javax.**, |, org.**, |, com.**, |, *, | -ij_java_indent_case_from_switch = true -ij_java_insert_inner_class_imports = false -ij_java_insert_override_annotation = true -ij_java_keep_blank_lines_before_right_brace = 2 -ij_java_keep_blank_lines_between_package_declaration_and_header = 2 -ij_java_keep_blank_lines_in_code = 2 -ij_java_keep_blank_lines_in_declarations = 2 -ij_java_keep_control_statement_in_one_line = false -ij_java_keep_first_column_comment = false -ij_java_keep_indents_on_empty_lines = false -ij_java_keep_line_breaks = false -ij_java_keep_multiple_expressions_in_one_line = false -ij_java_keep_simple_blocks_in_one_line = false -ij_java_keep_simple_classes_in_one_line = false -ij_java_keep_simple_lambdas_in_one_line = false -ij_java_keep_simple_methods_in_one_line = false -ij_java_label_indent_absolute = false -ij_java_label_indent_size = 0 -ij_java_lambda_brace_style = end_of_line -ij_java_layout_static_imports_separately = true -ij_java_line_comment_add_space = false -ij_java_line_comment_at_first_column = true -ij_java_message_dd_suffix = EJB -ij_java_message_eb_suffix = Bean -ij_java_method_annotation_wrap = split_into_lines -ij_java_method_brace_style = end_of_line -ij_java_method_call_chain_wrap = on_every_item -ij_java_method_parameters_new_line_after_left_paren = false -ij_java_method_parameters_right_paren_on_new_line = false -ij_java_method_parameters_wrap = on_every_item -ij_java_modifier_list_wrap = false -ij_java_names_count_to_use_import_on_demand = 9999999 -ij_java_new_line_after_lparen_in_record_header = false -ij_java_packages_to_use_import_on_demand = java.awt.*, javax.swing.* -ij_java_parameter_annotation_wrap = off -ij_java_parentheses_expression_new_line_after_left_paren = false -ij_java_parentheses_expression_right_paren_on_new_line = false -ij_java_place_assignment_sign_on_next_line = false -ij_java_prefer_longer_names = true -ij_java_prefer_parameters_wrap = false -ij_java_record_components_wrap = normal -ij_java_repeat_synchronized = true -ij_java_replace_instanceof_and_cast = false -ij_java_replace_null_check = true -ij_java_replace_sum_lambda_with_method_ref = true -ij_java_resource_list_new_line_after_left_paren = false -ij_java_resource_list_right_paren_on_new_line = false -ij_java_resource_list_wrap = off -ij_java_rparen_on_new_line_in_record_header = false -ij_java_session_dd_suffix = EJB -ij_java_session_eb_suffix = Bean -ij_java_session_hi_suffix = Home -ij_java_session_lhi_prefix = Local -ij_java_session_lhi_suffix = Home -ij_java_session_li_prefix = Local -ij_java_session_si_suffix = Service -ij_java_space_after_closing_angle_bracket_in_type_argument = false -ij_java_space_after_colon = true -ij_java_space_after_comma = true -ij_java_space_after_comma_in_type_arguments = true -ij_java_space_after_for_semicolon = true -ij_java_space_after_quest = true -ij_java_space_after_type_cast = true -ij_java_space_before_annotation_array_initializer_left_brace = false -ij_java_space_before_annotation_parameter_list = false -ij_java_space_before_array_initializer_left_brace = false -ij_java_space_before_catch_keyword = true -ij_java_space_before_catch_left_brace = true -ij_java_space_before_catch_parentheses = true -ij_java_space_before_class_left_brace = true -ij_java_space_before_colon = true -ij_java_space_before_colon_in_foreach = true -ij_java_space_before_comma = false -ij_java_space_before_do_left_brace = true -ij_java_space_before_else_keyword = true -ij_java_space_before_else_left_brace = true -ij_java_space_before_finally_keyword = true -ij_java_space_before_finally_left_brace = true -ij_java_space_before_for_left_brace = true -ij_java_space_before_for_parentheses = true -ij_java_space_before_for_semicolon = false -ij_java_space_before_if_left_brace = true -ij_java_space_before_if_parentheses = true -ij_java_space_before_method_call_parentheses = false -ij_java_space_before_method_left_brace = true -ij_java_space_before_method_parentheses = false -ij_java_space_before_opening_angle_bracket_in_type_parameter = false -ij_java_space_before_quest = true -ij_java_space_before_switch_left_brace = true -ij_java_space_before_switch_parentheses = true -ij_java_space_before_synchronized_left_brace = true -ij_java_space_before_synchronized_parentheses = true -ij_java_space_before_try_left_brace = true -ij_java_space_before_try_parentheses = true -ij_java_space_before_type_parameter_list = false -ij_java_space_before_while_keyword = true -ij_java_space_before_while_left_brace = true -ij_java_space_before_while_parentheses = true -ij_java_space_inside_one_line_enum_braces = false -ij_java_space_within_empty_array_initializer_braces = false -ij_java_space_within_empty_method_call_parentheses = false -ij_java_space_within_empty_method_parentheses = false -ij_java_spaces_around_additive_operators = true -ij_java_spaces_around_assignment_operators = true -ij_java_spaces_around_bitwise_operators = true -ij_java_spaces_around_equality_operators = true -ij_java_spaces_around_lambda_arrow = true -ij_java_spaces_around_logical_operators = true -ij_java_spaces_around_method_ref_dbl_colon = false -ij_java_spaces_around_multiplicative_operators = true -ij_java_spaces_around_relational_operators = true -ij_java_spaces_around_shift_operators = true -ij_java_spaces_around_type_bounds_in_type_parameters = true -ij_java_spaces_around_unary_operator = false -ij_java_spaces_within_angle_brackets = false -ij_java_spaces_within_annotation_parentheses = false -ij_java_spaces_within_array_initializer_braces = false -ij_java_spaces_within_braces = false -ij_java_spaces_within_brackets = false -ij_java_spaces_within_cast_parentheses = false -ij_java_spaces_within_catch_parentheses = false -ij_java_spaces_within_for_parentheses = false -ij_java_spaces_within_if_parentheses = false -ij_java_spaces_within_method_call_parentheses = false -ij_java_spaces_within_method_parentheses = false -ij_java_spaces_within_parentheses = false -ij_java_spaces_within_switch_parentheses = false -ij_java_spaces_within_synchronized_parentheses = false -ij_java_spaces_within_try_parentheses = false -ij_java_spaces_within_while_parentheses = false -ij_java_special_else_if_treatment = true -ij_java_subclass_name_suffix = Impl -ij_java_ternary_operation_signs_on_next_line = false -ij_java_ternary_operation_wrap = off -ij_java_test_name_suffix = Test -ij_java_throws_keyword_wrap = off -ij_java_throws_list_wrap = off -ij_java_use_external_annotations = false -ij_java_use_fq_class_names = false -ij_java_use_relative_indents = false -ij_java_use_single_class_imports = true -ij_java_variable_annotation_wrap = off -ij_java_visibility = public -ij_java_while_brace_force = always -ij_java_while_on_new_line = false -ij_java_wrap_comments = false -ij_java_wrap_first_method_in_call_chain = false -ij_java_wrap_long_lines = false - -[pom.xml] -charset = utf-8 -indent_style = space -indent_size = 4 diff --git a/LICENSE.md b/LICENSE.md index d2e1b746..8497bee3 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -18,4 +18,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index b98b59c1..8b3d24dd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ fp-uttak -================ +======== + [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=navikt_fp-uttak&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=navikt_fp-uttak) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=navikt_fp-uttak&metric=coverage)](https://sonarcloud.io/summary/new_code?id=navikt_fp-uttak) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=navikt_fp-uttak&metric=alert_status)](https://sonarcloud.io/dashboard?id=navikt_fp-uttak) diff --git a/pom.xml b/pom.xml index 25a4ece3..70857c78 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,5 @@ - + 4.0.0 no.nav.foreldrepenger @@ -11,13 +10,6 @@ Uttaksregler for foreldrepenger. https://github.com/navikt/fp-uttak - - scm:git:git@github.com:navikt/fp-uttak.git - scm:git:git@github.com:navikt/fp-uttak.git - https://github.com/navikt/fp-uttak - HEAD - - no.nav https://github.com/navikt @@ -32,12 +24,25 @@ - NAV (Arbeids- og velferdsdirektoratet) - The Norwegian Labour and Welfare Administration - + NAV (Arbeids- og velferdsdirektoratet) - The Norwegian Labour and Welfare Administration https://www.nav.no + + scm:git:git@github.com:navikt/fp-uttak.git + scm:git:git@github.com:navikt/fp-uttak.git + HEAD + https://github.com/navikt/fp-uttak + + + + github + Github navikt Maven Packages + https://maven.pkg.github.com/navikt/fp-uttak/ + + + 21 ${java.version} @@ -47,6 +52,7 @@ 2.6.1 5.10.2 3.26.0 + 2.43.0 navikt @@ -82,6 +88,12 @@ + + + true + src/main/resources + + org.apache.maven.plugins @@ -114,17 +126,17 @@ flatten - process-resources flatten + process-resources flatten.clean - clean clean + clean @@ -168,27 +180,65 @@ report - verify report-aggregate + verify + + + + + com.diffplug.spotless + spotless-maven-plugin + ${spotless.version} + + + + + 2.39.0 + + true + + + + + + + false + 4 + + + + + src/**/*.json + + + + + + + + **/*.md + + + + + + src/**/*.yaml + src/**/*.yml + + + + + + + + + check + - - - src/main/resources - true - - - - - github - Github navikt Maven Packages - https://maven.pkg.github.com/navikt/fp-uttak/ - - - diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/UttakParametre.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/UttakParametre.java index f8cac23a..8231a45d 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/UttakParametre.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/UttakParametre.java @@ -2,19 +2,15 @@ import java.time.LocalDate; import java.util.Optional; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.FarUttakRundtFødsel; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Konfigurasjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Parametertype; public class UttakParametre { - private UttakParametre() { - } + private UttakParametre() {} - /** - * Grenser for mors uttak og periode forbeholdt mor - */ + /** Grenser for mors uttak og periode forbeholdt mor */ public static int ukerFørTerminTidligstUttak(LocalDate dato) { return Konfigurasjon.STANDARD.getParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, dato); } @@ -27,26 +23,22 @@ private UttakParametre() { return Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, dato); } - /** - * Grenser for fars/medmors uttak i forbindelse med fødsel. - */ - public static Optional utledFarsPeriodeRundtFødsel(boolean utenFarUttakRundtFødsel, - boolean gjelderFødsel, - LocalDate familieHendelseDato, - LocalDate terminDato) { - return FarUttakRundtFødsel.utledFarsPeriodeRundtFødsel(utenFarUttakRundtFødsel, gjelderFødsel, familieHendelseDato, terminDato); + /** Grenser for fars/medmors uttak i forbindelse med fødsel. */ + public static Optional utledFarsPeriodeRundtFødsel( + boolean utenFarUttakRundtFødsel, + boolean gjelderFødsel, + LocalDate familieHendelseDato, + LocalDate terminDato) { + return FarUttakRundtFødsel.utledFarsPeriodeRundtFødsel( + utenFarUttakRundtFødsel, gjelderFødsel, familieHendelseDato, terminDato); } - /** - * Dødsfall - */ + /** Dødsfall */ public static int ukerTilgjengeligEtterDødsfall(LocalDate dato) { return Konfigurasjon.STANDARD.getParameter(Parametertype.UTTAK_ETTER_BARN_DØDT_UKER, dato); } - /** - * Stønadsperiode - */ + /** Stønadsperiode */ public static int ukerMellomTetteFødsler(LocalDate dato) { return Konfigurasjon.STANDARD.getParameter(Parametertype.TETTE_SAKER_MELLOMROM_UKER, dato); } @@ -54,6 +46,4 @@ private UttakParametre() { public static int årMaksimalStønadsperiode(LocalDate dato) { return Konfigurasjon.STANDARD.getParameter(Parametertype.GRENSE_ETTER_FØDSELSDATO_ÅR, dato); } - - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeGrunnlag.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeGrunnlag.java index 8ef1249b..86383f2d 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeGrunnlag.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeGrunnlag.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.Optional; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; @@ -19,15 +18,11 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregning; import no.nav.fpsak.nare.doc.RuleDocumentationGrunnlag; -/** - * Interface for fastsette periode grunnlaget. Det er kun dette interfacet som skal brukes i selve regelen. - */ +/** Interface for fastsette periode grunnlaget. Det er kun dette interfacet som skal brukes i selve regelen. */ @RuleDocumentationGrunnlag public interface FastsettePeriodeGrunnlag { - /** - * @return Aktuell periode. Det er den perioden som skal behandles av regel. - */ + /** @return Aktuell periode. Det er den perioden som skal behandles av regel. */ OppgittPeriode getAktuellPeriode(); /** @@ -86,7 +81,6 @@ public interface FastsettePeriodeGrunnlag { * * @return true dersom rett. */ - boolean isMorRett(); /** @@ -104,16 +98,14 @@ public interface FastsettePeriodeGrunnlag { boolean isBareFarHarRettMorUføretrygd(); /** - * Har saken perioder uten aktivitetskrav iht 14-14 tredje ledd - * Slike saker skal ikke ha minsterett. + * Har saken perioder uten aktivitetskrav iht 14-14 tredje ledd Slike saker skal ikke ha minsterett. * * @return true dersom saken tilsier dager uten aktivitetskrav. */ boolean isSakMedDagerUtenAktivitetskrav(); /** - * Har saken en minsterett for uttak. - * Slike saker skal ikke ha dager uten aktivitetskrav. + * Har saken en minsterett for uttak. Slike saker skal ikke ha dager uten aktivitetskrav. * * @return true dersom saken tilsier en minsterett for uttak. */ @@ -139,54 +131,34 @@ public interface FastsettePeriodeGrunnlag { boolean harAleneomsorg(); - /** - * Om det finnes en opphørsdato der søker ikke lengre oppfyller medlemskapsvilkåret - */ + /** Om det finnes en opphørsdato der søker ikke lengre oppfyller medlemskapsvilkåret */ LocalDate getOpphørsdatoForMedlemskap(); - /** - * Om det finnes en dødsdato for søker - */ + /** Om det finnes en dødsdato for søker */ LocalDate getDødsdatoForSøker(); - /** - * Om det finnes en dødsdato for barn - */ + /** Om det finnes en dødsdato for barn */ LocalDate getDødsdatoForBarn(); - /** - * Om alle barn er døde eller ikke - */ + /** Om alle barn er døde eller ikke */ boolean erAlleBarnDøde(); - /** - * Aktuell periode begyunner på eller etter startdato neste stønadsperiode - */ + /** Aktuell periode begyunner på eller etter startdato neste stønadsperiode */ boolean erAktuellPeriodeEtterStartNesteStønadsperiode(); - /** - * Inngangsvilkår - */ + /** Inngangsvilkår */ Inngangsvilkår getInngangsvilkår(); - /** - * Adopsjon - */ + /** Adopsjon */ Adopsjon getAdopsjon(); - /** - * Søkers stønadskontotyper - */ + /** Søkers stønadskontotyper */ Set getGyldigeStønadskontotyper(); - /** - * Fødselsdato - */ + /** Fødselsdato */ LocalDate getFødselsdato(); - /** - * Termindato - */ + /** Termindato */ LocalDate getTermindato(); boolean isBerørtBehandling(); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeGrunnlagImpl.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeGrunnlagImpl.java index 4090fdf7..ac4e71d9 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeGrunnlagImpl.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeGrunnlagImpl.java @@ -7,7 +7,6 @@ import java.util.List; import java.util.Optional; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; @@ -33,10 +32,11 @@ public class FastsettePeriodeGrunnlagImpl implements FastsettePeriodeGrunnlag { private final LukketPeriode farRundtFødselIntervall; - public FastsettePeriodeGrunnlagImpl(RegelGrunnlag regelGrunnlag, - LukketPeriode farRundtFødselIntervall, - SaldoUtregning saldoUtregning, - OppgittPeriode aktuellPeriode) { + public FastsettePeriodeGrunnlagImpl( + RegelGrunnlag regelGrunnlag, + LukketPeriode farRundtFødselIntervall, + SaldoUtregning saldoUtregning, + OppgittPeriode aktuellPeriode) { this.regelGrunnlag = regelGrunnlag; this.saldoUtregning = saldoUtregning; this.aktuellPeriode = aktuellPeriode; @@ -55,12 +55,13 @@ public Arbeid getArbeid() { @Override public List getPleiepengerInnleggelse() { - return regelGrunnlag.getYtelser() - .pleiepenger() - .map(pleiepengerMedInnleggelse -> pleiepengerMedInnleggelse.innleggelser()) - .orElse(List.of()) - .stream() - .toList(); + return regelGrunnlag + .getYtelser() + .pleiepenger() + .map(pleiepengerMedInnleggelse -> pleiepengerMedInnleggelse.innleggelser()) + .orElse(List.of()) + .stream() + .toList(); } @Override @@ -111,19 +112,19 @@ public boolean isMorRett() { @Override public boolean isSakMedMinsterett() { return regelGrunnlag.getKontoer().harSpesialkonto(Spesialkontotype.BARE_FAR_MINSTERETT) - && regelGrunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.BARE_FAR_MINSTERETT) > 0; + && regelGrunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.BARE_FAR_MINSTERETT) > 0; } @Override public boolean isSakMedDagerUtenAktivitetskrav() { return regelGrunnlag.getKontoer().harSpesialkonto(Spesialkontotype.UTEN_AKTIVITETSKRAV) - && regelGrunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.UTEN_AKTIVITETSKRAV) > 0; + && regelGrunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.UTEN_AKTIVITETSKRAV) > 0; } @Override public boolean isSakMedRettEtterStartNesteStønadsperiode() { return regelGrunnlag.getKontoer().harSpesialkonto(Spesialkontotype.TETTE_FØDSLER) - && regelGrunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.TETTE_FØDSLER) > 0; + && regelGrunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.TETTE_FØDSLER) > 0; } @Override @@ -133,12 +134,16 @@ public SaldoUtregning getSaldoUtregning() { @Override public List getAnnenPartUttaksperioder() { - return regelGrunnlag.getAnnenPart() != null ? regelGrunnlag.getAnnenPart().getUttaksperioder() : Collections.emptyList(); + return regelGrunnlag.getAnnenPart() != null + ? regelGrunnlag.getAnnenPart().getUttaksperioder() + : Collections.emptyList(); } @Override public LocalDateTime getAnnenPartSisteSøknadMottattTidspunkt() { - return Optional.ofNullable(regelGrunnlag.getAnnenPart()).map(AnnenPart::getSisteSøknadMottattTidspunkt).orElse(null); + return Optional.ofNullable(regelGrunnlag.getAnnenPart()) + .map(AnnenPart::getSisteSøknadMottattTidspunkt) + .orElse(null); } @Override @@ -148,28 +153,39 @@ public boolean harAleneomsorg() { @Override public LocalDate getOpphørsdatoForMedlemskap() { - return regelGrunnlag.getMedlemskap() == null ? null : regelGrunnlag.getMedlemskap().getOpphørsdato(); + return regelGrunnlag.getMedlemskap() == null + ? null + : regelGrunnlag.getMedlemskap().getOpphørsdato(); } @Override public LocalDate getDødsdatoForSøker() { - return regelGrunnlag.getDatoer().getDødsdatoer() == null ? null : regelGrunnlag.getDatoer().getDødsdatoer().getSøkersDødsdato(); + return regelGrunnlag.getDatoer().getDødsdatoer() == null + ? null + : regelGrunnlag.getDatoer().getDødsdatoer().getSøkersDødsdato(); } @Override public LocalDate getDødsdatoForBarn() { - return regelGrunnlag.getDatoer().getDødsdatoer() == null ? null : regelGrunnlag.getDatoer().getDødsdatoer().getBarnsDødsdato(); + return regelGrunnlag.getDatoer().getDødsdatoer() == null + ? null + : regelGrunnlag.getDatoer().getDødsdatoer().getBarnsDødsdato(); } @Override public boolean erAlleBarnDøde() { - return regelGrunnlag.getDatoer().getDødsdatoer() != null && regelGrunnlag.getDatoer().getDødsdatoer().erAlleBarnDøde(); + return regelGrunnlag.getDatoer().getDødsdatoer() != null + && regelGrunnlag.getDatoer().getDødsdatoer().erAlleBarnDøde(); } @Override public boolean erAktuellPeriodeEtterStartNesteStønadsperiode() { var fom = aktuellPeriode.getFom(); - return regelGrunnlag.getDatoer().getStartdatoNesteStønadsperiode().filter(d -> !fom.isBefore(d)).isPresent(); + return regelGrunnlag + .getDatoer() + .getStartdatoNesteStønadsperiode() + .filter(d -> !fom.isBefore(d)) + .isPresent(); } @Override @@ -204,7 +220,9 @@ public LocalDate getTermindato() { @Override public LocalDateTime getSisteSøknadMottattTidspunkt() { - return Optional.ofNullable(regelGrunnlag.getSøknad()).map(Søknad::getMottattTidspunkt).orElse(null); + return Optional.ofNullable(regelGrunnlag.getSøknad()) + .map(Søknad::getMottattTidspunkt) + .orElse(null); } @Override diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeResultat.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeResultat.java index 3301544e..7cfc088d 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeResultat.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeResultat.java @@ -1,20 +1,32 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; import java.util.Objects; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Perioderesultattype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UttakPeriode; -public record FastsettePeriodeResultat(UttakPeriode uttakPeriode, String evalueringResultat, String innsendtGrunnlag, - OppgittPeriode periodeEtterKnekk, String versjon) { +public record FastsettePeriodeResultat( + UttakPeriode uttakPeriode, + String evalueringResultat, + String innsendtGrunnlag, + OppgittPeriode periodeEtterKnekk, + String versjon) { public FastsettePeriodeResultat { Objects.requireNonNull(uttakPeriode); } - public FastsettePeriodeResultat(UttakPeriode uttakPeriode, String evalueringResultat, String innsendtGrunnlag, OppgittPeriode periodeEtterKnekk) { - this(uttakPeriode, evalueringResultat, innsendtGrunnlag, periodeEtterKnekk, UttakVersion.UTTAK_VERSION.version()); + public FastsettePeriodeResultat( + UttakPeriode uttakPeriode, + String evalueringResultat, + String innsendtGrunnlag, + OppgittPeriode periodeEtterKnekk) { + this( + uttakPeriode, + evalueringResultat, + innsendtGrunnlag, + periodeEtterKnekk, + UttakVersion.UTTAK_VERSION.version()); } public boolean isManuellBehandling() { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestrering.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestrering.java index 4a1a7328..0903bc86 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestrering.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestrering.java @@ -10,7 +10,6 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; - import no.nav.foreldrepenger.regler.feil.UttakRegelFeil; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; @@ -49,27 +48,30 @@ public class FastsettePerioderRegelOrkestrering { public List fastsettePerioder(RegelGrunnlag grunnlag) { - var fastsettePeriodeRegel = new FastsettePeriodeRegel(); var orkestreringTillegg = lagOrkestreringTillegg(grunnlag); var allePerioderSomSkalFastsettes = samletUttaksperioder(grunnlag, orkestreringTillegg).stream() - .filter(periode -> !erHelg(periode)) - .filter(periode -> !oppholdSomFyllesAvAnnenpart(periode, annenpartUttaksperioder(grunnlag))) - .filter(periode -> grunnlag.getBehandling().isKreverSammenhengendeUttak() || !periode.isOpphold()) - .map(periode -> oppdaterMedAktiviteter(periode, grunnlag.getArbeid())) - .toList(); + .filter(periode -> !erHelg(periode)) + .filter(periode -> !oppholdSomFyllesAvAnnenpart(periode, annenpartUttaksperioder(grunnlag))) + .filter(periode -> grunnlag.getBehandling().isKreverSammenhengendeUttak() || !periode.isOpphold()) + .map(periode -> oppdaterMedAktiviteter(periode, grunnlag.getArbeid())) + .toList(); validerOverlapp(map(allePerioderSomSkalFastsettes)); - var farRundtFødselIntervall = FarUttakRundtFødsel.utledFarsPeriodeRundtFødsel(grunnlag).orElse(null); + var farRundtFødselIntervall = + FarUttakRundtFødsel.utledFarsPeriodeRundtFødsel(grunnlag).orElse(null); var resultatPerioder = new ArrayList(); for (var aktuellPeriode : allePerioderSomSkalFastsettes) { FastsettePeriodeResultat resultat; + do { - var saldoUtregningGrunnlag = saldoGrunnlag(grunnlag, resultatPerioder, aktuellPeriode, allePerioderSomSkalFastsettes); + var saldoUtregningGrunnlag = + saldoGrunnlag(grunnlag, resultatPerioder, aktuellPeriode, allePerioderSomSkalFastsettes); var saldoUtregning = lagUtregning(saldoUtregningGrunnlag); - resultat = fastsettPeriode(fastsettePeriodeRegel, grunnlag, aktuellPeriode, saldoUtregning, farRundtFødselIntervall); + resultat = fastsettPeriode( + fastsettePeriodeRegel, grunnlag, aktuellPeriode, saldoUtregning, farRundtFødselIntervall); resultatPerioder.add(resultat); validerOverlapp(map(resultatPerioder)); if (resultat.harFørtTilKnekk()) { @@ -78,7 +80,7 @@ public List fastsettePerioder(RegelGrunnlag grunnlag) } while (resultat.harFørtTilKnekk()); } - //Bare for å sikre rekkefølge + // Bare for å sikre rekkefølge return sortByFom(resultatPerioder); } @@ -89,18 +91,19 @@ private OppgittPeriode oppdaterMedAktiviteter(OppgittPeriode periode, Arbeid arb } private Set aktiviteterIPeriode(OppgittPeriode periode, Arbeid arbeid) { - var aktiviteter = arbeid.getArbeidsforhold() - .stream() - .filter(arbeidsforhold -> arbeid.getArbeidsforhold().size() == 1 || arbeidsforhold.erAktivtPåDato(periode.getFom())) - .map(Arbeidsforhold::identifikator) - .collect(Collectors.toSet()); - //Vi kan opprette manglende søkt i en periode som ikke har noe arbeid. Typisk bare far rett og søker ikke fra uke 7 + var aktiviteter = arbeid.getArbeidsforhold().stream() + .filter(arbeidsforhold -> + arbeid.getArbeidsforhold().size() == 1 || arbeidsforhold.erAktivtPåDato(periode.getFom())) + .map(Arbeidsforhold::identifikator) + .collect(Collectors.toSet()); + // Vi kan opprette manglende søkt i en periode som ikke har noe arbeid. Typisk bare far rett + // og + // søker ikke fra uke 7 if (aktiviteter.isEmpty()) { - var aktivitetMedTidligstStartdato = arbeid.getArbeidsforhold() - .stream() - .min(Comparator.comparing(Arbeidsforhold::startdato)) - .map(a -> a.identifikator()) - .orElseThrow(); + var aktivitetMedTidligstStartdato = arbeid.getArbeidsforhold().stream() + .min(Comparator.comparing(Arbeidsforhold::startdato)) + .map(a -> a.identifikator()) + .orElseThrow(); aktiviteter.add(aktivitetMedTidligstStartdato); } return aktiviteter; @@ -114,7 +117,9 @@ private boolean oppholdSomFyllesAvAnnenpart(OppgittPeriode periode, List ap.overlapper(periode)).anyMatch(ap -> harTrekkdager(ap) || innvilgetUtsettelse(ap)); + return annenpartUttak.stream() + .filter(ap -> ap.overlapper(periode)) + .anyMatch(ap -> harTrekkdager(ap) || innvilgetUtsettelse(ap)); } private boolean innvilgetUtsettelse(AnnenpartUttakPeriode ap) { @@ -126,25 +131,32 @@ private boolean harTrekkdager(AnnenpartUttakPeriode ap) { } private List sortByFom(List resultatPerioder) { - return resultatPerioder.stream().sorted(Comparator.comparing(res -> res.uttakPeriode().getFom())).toList(); + return resultatPerioder.stream() + .sorted(Comparator.comparing(res -> res.uttakPeriode().getFom())) + .toList(); } - private FastsettePeriodeResultat fastsettPeriode(FastsettePeriodeRegel fastsettePeriodeRegel, - RegelGrunnlag grunnlag, - OppgittPeriode aktuellPeriode, - SaldoUtregning saldoUtregning, - LukketPeriode farRundtFødselIntervall) { - var fastsettePeriodeGrunnlag = new FastsettePeriodeGrunnlagImpl(grunnlag, farRundtFødselIntervall, saldoUtregning, aktuellPeriode); + private FastsettePeriodeResultat fastsettPeriode( + FastsettePeriodeRegel fastsettePeriodeRegel, + RegelGrunnlag grunnlag, + OppgittPeriode aktuellPeriode, + SaldoUtregning saldoUtregning, + LukketPeriode farRundtFødselIntervall) { + var fastsettePeriodeGrunnlag = + new FastsettePeriodeGrunnlagImpl(grunnlag, farRundtFødselIntervall, saldoUtregning, aktuellPeriode); var regelResultatBehandler = new RegelResultatBehandler(saldoUtregning, grunnlag); var evaluering = fastsettePeriodeRegel.evaluer(fastsettePeriodeGrunnlag); var inputJson = toJson(fastsettePeriodeGrunnlag); var regelJson = EvaluationSerializer.asJson(evaluering, UttakVersion.UTTAK_VERSION, NareVersion.NARE_VERSION); - var regelResultatBehandlerResultat = behandleRegelresultat(evaluering, fastsettePeriodeGrunnlag, regelResultatBehandler, grunnlag, - saldoUtregning); - - return new FastsettePeriodeResultat(regelResultatBehandlerResultat.getPeriode(), regelJson, inputJson, - regelResultatBehandlerResultat.getEtterKnekkPeriode()); + var regelResultatBehandlerResultat = behandleRegelresultat( + evaluering, fastsettePeriodeGrunnlag, regelResultatBehandler, grunnlag, saldoUtregning); + + return new FastsettePeriodeResultat( + regelResultatBehandlerResultat.getPeriode(), + regelJson, + inputJson, + regelResultatBehandlerResultat.getEtterKnekkPeriode()); } private List samletUttaksperioder(RegelGrunnlag grunnlag, OrkestreringTillegg orkestreringTillegg) { @@ -161,7 +173,8 @@ private List samletUttaksperioder(RegelGrunnlag grunnlag, Orkest private List knekk(List førKnekk, LocalDate knekkpunkt) { List etterKnekk = new ArrayList<>(); for (var oppgittPeriode : førKnekk) { - if (oppgittPeriode.overlapper(knekkpunkt) && !oppgittPeriode.getFom().equals(knekkpunkt)) { + if (oppgittPeriode.overlapper(knekkpunkt) + && !oppgittPeriode.getFom().equals(knekkpunkt)) { etterKnekk.add(oppgittPeriode.kopiMedNyPeriode(oppgittPeriode.getFom(), knekkpunkt.minusDays(1))); etterKnekk.add(oppgittPeriode.kopiMedNyPeriode(knekkpunkt, oppgittPeriode.getTom())); } else { @@ -185,56 +198,81 @@ private OrkestreringTillegg lagOrkestreringTillegg(RegelGrunnlag grunnlag) { return ManglendeSøktePerioderTjeneste.finnManglendeSøktePerioder(grunnlag); } - private RegelResultatBehandlerResultat behandleRegelresultat(Evaluation evaluering, - FastsettePeriodeGrunnlag fastsettePeriodeGrunnlag, - RegelResultatBehandler behandler, - RegelGrunnlag regelGrunnlag, - SaldoUtregning saldoUtregning) { + private RegelResultatBehandlerResultat behandleRegelresultat( + Evaluation evaluering, + FastsettePeriodeGrunnlag fastsettePeriodeGrunnlag, + RegelResultatBehandler behandler, + RegelGrunnlag regelGrunnlag, + SaldoUtregning saldoUtregning) { var aktuellPeriode = fastsettePeriodeGrunnlag.getAktuellPeriode(); var regelresultat = new FastsettePerioderRegelresultat(evaluering); var utfallType = regelresultat.getUtfallType(); - var knekkpunktOpt = finnKnekkpunkt(aktuellPeriode, regelGrunnlag, saldoUtregning, regelresultat, - fastsettePeriodeGrunnlag.periodeFarRundtFødsel().orElse(null)); + var knekkpunktOpt = finnKnekkpunkt( + aktuellPeriode, + regelGrunnlag, + saldoUtregning, + regelresultat, + fastsettePeriodeGrunnlag.periodeFarRundtFødsel().orElse(null)); - var annenpartSamtidigUttaksprosent = SamtidigUttakUtil.kanRedusereUtbetalingsgradForTapende(fastsettePeriodeGrunnlag, - regelGrunnlag) ? SamtidigUttakUtil.uttaksprosentAnnenpart(fastsettePeriodeGrunnlag) : SamtidigUttaksprosent.ZERO; + var annenpartSamtidigUttaksprosent = + SamtidigUttakUtil.kanRedusereUtbetalingsgradForTapende(fastsettePeriodeGrunnlag, regelGrunnlag) + ? SamtidigUttakUtil.uttaksprosentAnnenpart(fastsettePeriodeGrunnlag) + : SamtidigUttaksprosent.ZERO; return switch (utfallType) { - case AVSLÅTT -> behandler.avslåAktuellPeriode(aktuellPeriode, regelresultat, knekkpunktOpt, - overlapperMedInnvilgetAnnenpartsPeriode(aktuellPeriode, annenpartUttaksperioder(regelGrunnlag))); - case INNVILGET -> behandler.innvilgAktuellPeriode(aktuellPeriode, knekkpunktOpt, regelresultat, annenpartSamtidigUttaksprosent); + case AVSLÅTT -> behandler.avslåAktuellPeriode( + aktuellPeriode, + regelresultat, + knekkpunktOpt, + overlapperMedInnvilgetAnnenpartsPeriode(aktuellPeriode, annenpartUttaksperioder(regelGrunnlag))); + case INNVILGET -> behandler.innvilgAktuellPeriode( + aktuellPeriode, knekkpunktOpt, regelresultat, annenpartSamtidigUttaksprosent); case MANUELL_BEHANDLING -> behandler.manuellBehandling(aktuellPeriode, regelresultat); }; } private List annenpartUttaksperioder(RegelGrunnlag regelGrunnlag) { - return regelGrunnlag.getAnnenPart() == null ? Collections.emptyList() : regelGrunnlag.getAnnenPart().getUttaksperioder(); + return regelGrunnlag.getAnnenPart() == null + ? Collections.emptyList() + : regelGrunnlag.getAnnenPart().getUttaksperioder(); } - private boolean overlapperMedInnvilgetAnnenpartsPeriode(OppgittPeriode aktuellPeriode, List annenPartUttaksperioder) { + private boolean overlapperMedInnvilgetAnnenpartsPeriode( + OppgittPeriode aktuellPeriode, List annenPartUttaksperioder) { return annenPartUttaksperioder.stream() - .anyMatch(annenpartsPeriode -> annenpartsPeriode.overlapper(aktuellPeriode) && annenpartsPeriode.isInnvilget()); + .anyMatch(annenpartsPeriode -> + annenpartsPeriode.overlapper(aktuellPeriode) && annenpartsPeriode.isInnvilget()); } - private Optional finnKnekkpunkt(OppgittPeriode aktuellPeriode, - RegelGrunnlag regelGrunnlag, - SaldoUtregning saldoUtregning, - FastsettePerioderRegelresultat regelresultat, - LukketPeriode farRundtFødselIntervall) { + private Optional finnKnekkpunkt( + OppgittPeriode aktuellPeriode, + RegelGrunnlag regelGrunnlag, + SaldoUtregning saldoUtregning, + FastsettePerioderRegelresultat regelresultat, + LukketPeriode farRundtFødselIntervall) { if (erFPFF(aktuellPeriode)) { return Optional.empty(); } var stønadskontotype = utledKonto(aktuellPeriode, regelGrunnlag, saldoUtregning); - var startdatoNesteStønadsperiode = regelGrunnlag.getDatoer().getStartdatoNesteStønadsperiode().orElse(null); - return TomKontoIdentifiserer.identifiser(aktuellPeriode, new ArrayList<>(aktuellPeriode.getAktiviteter()), saldoUtregning, - stønadskontotype.orElse(null), farRundtFødselIntervall, startdatoNesteStønadsperiode, regelresultat.trekkDagerFraSaldo(), - regelresultat.getAvklaringÅrsak(), regelresultat.getUtfallType()); + var startdatoNesteStønadsperiode = + regelGrunnlag.getDatoer().getStartdatoNesteStønadsperiode().orElse(null); + return TomKontoIdentifiserer.identifiser( + aktuellPeriode, + new ArrayList<>(aktuellPeriode.getAktiviteter()), + saldoUtregning, + stønadskontotype.orElse(null), + farRundtFødselIntervall, + startdatoNesteStønadsperiode, + regelresultat.trekkDagerFraSaldo(), + regelresultat.getAvklaringÅrsak(), + regelresultat.getUtfallType()); } - private Optional utledKonto(OppgittPeriode aktuellPeriode, RegelGrunnlag regelGrunnlag, SaldoUtregning saldoUtregning) { + private Optional utledKonto( + OppgittPeriode aktuellPeriode, RegelGrunnlag regelGrunnlag, SaldoUtregning saldoUtregning) { return Optional.ofNullable(aktuellPeriode.getStønadskontotype()) - .or(() -> ValgAvStønadskontoTjeneste.velgStønadskonto(aktuellPeriode, regelGrunnlag, saldoUtregning)); + .or(() -> ValgAvStønadskontoTjeneste.velgStønadskonto(aktuellPeriode, regelGrunnlag, saldoUtregning)); } private boolean erFPFF(OppgittPeriode aktuellPeriode) { @@ -249,39 +287,45 @@ private String toJson(FastsettePeriodeGrunnlag grunnlag) { } } - private SaldoUtregningGrunnlag saldoGrunnlag(RegelGrunnlag grunnlag, - List resultatPerioder, - OppgittPeriode aktuellPeriode, - List allePerioderSomSkalFastsettes) { + private SaldoUtregningGrunnlag saldoGrunnlag( + RegelGrunnlag grunnlag, + List resultatPerioder, + OppgittPeriode aktuellPeriode, + List allePerioderSomSkalFastsettes) { List annenpartPerioder = Optional.ofNullable(grunnlag.getAnnenPart()) - .map(AnnenPart::getUttaksperioder) - .orElse(List.of()); + .map(AnnenPart::getUttaksperioder) + .orElse(List.of()); var vedtaksperioder = vedtaksperioder(grunnlag); var søkersFastsattePerioder = map(resultatPerioder, vedtaksperioder); var utregningsdato = aktuellPeriode.getFom(); if (grunnlag.getBehandling().isBerørtBehandling()) { var søktePerioder = new ArrayList(allePerioderSomSkalFastsettes); - return SaldoUtregningGrunnlag.forUtregningAvDelerAvUttakBerørtBehandling(søkersFastsattePerioder, annenpartPerioder, grunnlag, - utregningsdato, søktePerioder); + return SaldoUtregningGrunnlag.forUtregningAvDelerAvUttakBerørtBehandling( + søkersFastsattePerioder, annenpartPerioder, grunnlag, utregningsdato, søktePerioder); } - return SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(søkersFastsattePerioder, annenpartPerioder, grunnlag, utregningsdato); + return SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + søkersFastsattePerioder, annenpartPerioder, grunnlag, utregningsdato); } private List vedtaksperioder(RegelGrunnlag grunnlag) { - return Optional.ofNullable(grunnlag.getRevurdering()).map(Revurdering::getGjeldendeVedtak).map(Vedtak::getPerioder).orElse(List.of()); + return Optional.ofNullable(grunnlag.getRevurdering()) + .map(Revurdering::getGjeldendeVedtak) + .map(Vedtak::getPerioder) + .orElse(List.of()); } private FastsattUttakPeriode map(UttakPeriode periode) { - return new FastsattUttakPeriode.Builder().tidsperiode(periode.getFom(), periode.getTom()) - .aktiviteter(mapAktiviteter(periode)) - .flerbarnsdager(periode.isFlerbarnsdager()) - .resultatÅrsak(mapTilÅrsak(periode.getPeriodeResultatÅrsak())) - .utsettelse(periode.getUtsettelseÅrsak() != null) - .oppholdÅrsak(periode.getOppholdÅrsak()) - .samtidigUttak(periode.erSamtidigUttak()) - .periodeResultatType(periode.getPerioderesultattype()) - .build(); + return new FastsattUttakPeriode.Builder() + .tidsperiode(periode.getFom(), periode.getTom()) + .aktiviteter(mapAktiviteter(periode)) + .flerbarnsdager(periode.isFlerbarnsdager()) + .resultatÅrsak(mapTilÅrsak(periode.getPeriodeResultatÅrsak())) + .utsettelse(periode.getUtsettelseÅrsak() != null) + .oppholdÅrsak(periode.getOppholdÅrsak()) + .samtidigUttak(periode.erSamtidigUttak()) + .periodeResultatType(periode.getPerioderesultattype()) + .build(); } public static FastsattUttakPeriode.ResultatÅrsak mapTilÅrsak(PeriodeResultatÅrsak årsak) { @@ -300,7 +344,8 @@ private FastsattUttakPeriode map(UttakPeriode periode) { return FastsattUttakPeriode.ResultatÅrsak.ANNET; } - private List map(List resultatPerioder, List vedtaksperioder) { + private List map( + List resultatPerioder, List vedtaksperioder) { var fastsattePerioder = new ArrayList<>(vedtaksperioder); var mapped = resultatPerioder.stream().map(this::map).toList(); fastsattePerioder.addAll(mapped); @@ -308,7 +353,9 @@ private List map(List resultatPe } private List map(List allePerioderSomSkalFastsettes) { - return allePerioderSomSkalFastsettes.stream().map(LukketPeriode.class::cast).toList(); + return allePerioderSomSkalFastsettes.stream() + .map(LukketPeriode.class::cast) + .toList(); } private void validerOverlapp(List perioder) { @@ -329,14 +376,15 @@ private FastsattUttakPeriode map(FastsettePeriodeResultat fastsattPeriode) { } private List mapAktiviteter(UttakPeriode periode) { - return periode.getAktiviteter() - .stream() - .map(aktivitet -> new FastsattUttakPeriodeAktivitet(aktivitet.getTrekkdager(), periode.getStønadskontotype(), - aktivitet.getIdentifikator())) - .toList(); + return periode.getAktiviteter().stream() + .map(aktivitet -> new FastsattUttakPeriodeAktivitet( + aktivitet.getTrekkdager(), periode.getStønadskontotype(), aktivitet.getIdentifikator())) + .toList(); } private List map(ArrayList resultatPerioder) { - return resultatPerioder.stream().map(p -> (LukketPeriode) p.uttakPeriode()).toList(); + return resultatPerioder.stream() + .map(p -> (LukketPeriode) p.uttakPeriode()) + .toList(); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelresultat.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelresultat.java index 54427669..d372840c 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelresultat.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelresultat.java @@ -16,12 +16,11 @@ class FastsettePerioderRegelresultat { FastsettePerioderRegelresultat(Evaluation evaluation) { this.evaluationSummary = new EvaluationSummary(evaluation); - this.utfall = evaluationSummary.allOutcomes() - .stream() - .filter(UttakOutcome.class::isInstance) - .map(UttakOutcome.class::cast) - .findFirst() - .orElseThrow(); + this.utfall = evaluationSummary.allOutcomes().stream() + .filter(UttakOutcome.class::isInstance) + .map(UttakOutcome.class::cast) + .findFirst() + .orElseThrow(); } public FastsettePerioderRegelresultat(Evaluation evaluation, UttakOutcome utfall) { @@ -58,12 +57,10 @@ boolean skalUtbetale() { } public String sluttpunktId() { - return evaluationSummary.leafEvaluations() - .stream() - .filter(e -> e.ruleIdentification() != null) - .findFirst() - .map(Evaluation::ruleIdentification) - .orElse(null); + return evaluationSummary.leafEvaluations().stream() + .filter(e -> e.ruleIdentification() != null) + .findFirst() + .map(Evaluation::ruleIdentification) + .orElse(null); } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktIdentifiserer.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktIdentifiserer.java index da63826b..e733ae7a 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktIdentifiserer.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktIdentifiserer.java @@ -7,7 +7,6 @@ import java.util.TreeSet; import java.util.stream.Collectors; import java.util.stream.Stream; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmPeriodenErEtterMaksgrenseForUttak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; @@ -28,7 +27,7 @@ class KnekkpunktIdentifiserer { private KnekkpunktIdentifiserer() { - //hindrer instansiering + // hindrer instansiering } static Set finnKnekkpunkter(RegelGrunnlag grunnlag) { @@ -43,19 +42,22 @@ static Set finnKnekkpunkter(RegelGrunnlag grunnlag) { knekkpunkter.add(maksimumsgrenseForLovligeUttak); grunnlag.getDatoer().getStartdatoNesteStønadsperiode().ifPresent(knekkpunkter::add); - if (PrematurukerUtil.oppfyllerKravTilPrematuruker(grunnlag.getDatoer().getFødsel(), grunnlag.getDatoer().getTermin())) { + if (PrematurukerUtil.oppfyllerKravTilPrematuruker( + grunnlag.getDatoer().getFødsel(), grunnlag.getDatoer().getTermin())) { knekkpunkter.add(grunnlag.getDatoer().getTermin()); } if (søkersDødsdatoFinnes(grunnlag)) { - knekkpunkter.add(grunnlag.getDatoer().getDødsdatoer().getSøkersDødsdato().plusDays(1)); + knekkpunkter.add( + grunnlag.getDatoer().getDødsdatoer().getSøkersDødsdato().plusDays(1)); } if (barnsDødsdatoFinnes(grunnlag)) { knekkpunkter.add(grunnlag.getDatoer() - .getDødsdatoer() - .getBarnsDødsdato() - .plusWeeks(Konfigurasjon.STANDARD.getParameter(Parametertype.UTTAK_ETTER_BARN_DØDT_UKER, familiehendelseDato))); + .getDødsdatoer() + .getBarnsDødsdato() + .plusWeeks(Konfigurasjon.STANDARD.getParameter( + Parametertype.UTTAK_ETTER_BARN_DØDT_UKER, familiehendelseDato))); } if (medlemskapOpphørsdatoFinnes(grunnlag)) { @@ -63,21 +65,25 @@ static Set finnKnekkpunkter(RegelGrunnlag grunnlag) { } knekkpunkter.addAll(knekkpunkterPåArbeid(grunnlag.getArbeid())); - leggTilKnekkpunkterForUtsettelsePgaFerie(grunnlag, minimumsgrenseForLovligUttak, maksimumsgrenseForLovligeUttak, knekkpunkter); + leggTilKnekkpunkterForUtsettelsePgaFerie( + grunnlag, minimumsgrenseForLovligUttak, maksimumsgrenseForLovligeUttak, knekkpunkter); leggTilKnekkpunkter(knekkpunkter, grunnlag.getSøknad().getOppgittePerioder()); if (grunnlag.getSøknad().getType().gjelderTerminFødsel()) { - // Før Prop 15L 21/22: Første 6 uker forbeholdt mor, unntatt flerbarn og aleneomsorg - // Etter Prop 15L 21/22: Første 6 uker forbeholdt mor kun for kvoter. Far har opptil 10 dager samtidig uttak ifm fødsel - knekkpunkter.add( - familiehendelseDato.minusWeeks(Konfigurasjon.STANDARD.getParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, familiehendelseDato))); + // Før Prop 15L 21/22: Første 6 uker forbeholdt mor, unntatt flerbarn og + // aleneomsorg + // Etter Prop 15L 21/22: Første 6 uker forbeholdt mor kun for kvoter. Far har + // opptil 10 + // dager samtidig uttak ifm fødsel + knekkpunkter.add(familiehendelseDato.minusWeeks(Konfigurasjon.STANDARD.getParameter( + Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, familiehendelseDato))); var hjemletFarUttakRundtFødsel = grunnlag.getKontoer().harSpesialkonto(Spesialkontotype.FAR_RUNDT_FØDSEL) - && grunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.FAR_RUNDT_FØDSEL) > 0; + && grunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.FAR_RUNDT_FØDSEL) > 0; var sakUtenKvoter = grunnlag.getKontoer().harStønadskonto(Stønadskontotype.FORELDREPENGER); var erMor = grunnlag.getBehandling().isSøkerMor(); if (!hjemletFarUttakRundtFødsel || !sakUtenKvoter || erMor) { - knekkpunkter.add(familiehendelseDato.plusWeeks( - Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelseDato))); + knekkpunkter.add(familiehendelseDato.plusWeeks(Konfigurasjon.STANDARD.getParameter( + Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelseDato))); } if (hjemletFarUttakRundtFødsel && !erMor) { knekkpunkter.addAll(finnKnekkpunkterFarsPeriodeRundtFødsel(grunnlag, sakUtenKvoter)); @@ -90,36 +96,40 @@ static Set finnKnekkpunkter(RegelGrunnlag grunnlag) { } return knekkpunkter.stream() - .filter(k -> !k.isBefore(minimumsgrenseForLovligUttak)) - .filter(k -> !k.isAfter(maksimumsgrenseForLovligeUttak)) - .collect(Collectors.toSet()); + .filter(k -> !k.isBefore(minimumsgrenseForLovligUttak)) + .filter(k -> !k.isAfter(maksimumsgrenseForLovligeUttak)) + .collect(Collectors.toSet()); } private static Set knekkBasertPåYtelser(RegelGrunnlag grunnlag) { var ytelser = grunnlag.getYtelser(); var pleiepenger = ytelser.pleiepenger(); - return pleiepenger.map( - p -> p.perioder().stream().flatMap(per -> Stream.of(per.getFom(), per.getTom().plusDays(1))).collect(Collectors.toSet())) - .orElseGet(Set::of); + return pleiepenger + .map(p -> p.perioder().stream() + .flatMap(per -> Stream.of(per.getFom(), per.getTom().plusDays(1))) + .collect(Collectors.toSet())) + .orElseGet(Set::of); } private static Set knekkPunkterBaserPåFørsteLovligeUttaksdag(RegelGrunnlag grunnlag) { - return grunnlag.getSøknad() - .getOppgittePerioder() - .stream() - .filter(p -> p.getTidligstMottattDato().isPresent()) - .filter(p -> p.overlapper(SøknadsfristUtil.finnFørsteLoveligeUttaksdag(p.getTidligstMottattDato().get()))) - .map(p -> SøknadsfristUtil.finnFørsteLoveligeUttaksdag(p.getTidligstMottattDato().get())) - .collect(Collectors.toSet()); + return grunnlag.getSøknad().getOppgittePerioder().stream() + .filter(p -> p.getTidligstMottattDato().isPresent()) + .filter(p -> p.overlapper(SøknadsfristUtil.finnFørsteLoveligeUttaksdag( + p.getTidligstMottattDato().get()))) + .map(p -> SøknadsfristUtil.finnFørsteLoveligeUttaksdag( + p.getTidligstMottattDato().get())) + .collect(Collectors.toSet()); } private static LocalDate finnMinimumgrenseLovligUttak(RegelGrunnlag grunnlag) { if (grunnlag.getSøknad().getType() == Søknadstype.TERMIN) { var termin = grunnlag.getDatoer().getTermin(); - return termin.minusWeeks(Konfigurasjon.STANDARD.getParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, termin)); + return termin.minusWeeks( + Konfigurasjon.STANDARD.getParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, termin)); } var familiehendelseDato = grunnlag.getDatoer().getFamiliehendelse(); - return familiehendelseDato.minusWeeks(Konfigurasjon.STANDARD.getParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, familiehendelseDato)); + return familiehendelseDato.minusWeeks( + Konfigurasjon.STANDARD.getParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, familiehendelseDato)); } private static Set knekkpunkterPåArbeid(Arbeid arbeid) { @@ -134,25 +144,30 @@ private static LocalDate finnMinimumgrenseLovligUttak(RegelGrunnlag grunnlag) { } private static boolean barnsDødsdatoFinnes(RegelGrunnlag grunnlag) { - return grunnlag.getDatoer().getDødsdatoer() != null && grunnlag.getDatoer().getDødsdatoer().getBarnsDødsdato() != null; + return grunnlag.getDatoer().getDødsdatoer() != null + && grunnlag.getDatoer().getDødsdatoer().getBarnsDødsdato() != null; } private static boolean søkersDødsdatoFinnes(RegelGrunnlag grunnlag) { - return grunnlag.getDatoer().getDødsdatoer() != null && grunnlag.getDatoer().getDødsdatoer().getSøkersDødsdato() != null; + return grunnlag.getDatoer().getDødsdatoer() != null + && grunnlag.getDatoer().getDødsdatoer().getSøkersDødsdato() != null; } - private static void leggTilKnekkpunkterForUtsettelsePgaFerie(RegelGrunnlag grunnlag, - LocalDate minimumsgrenseForLovligUttak, - LocalDate maksimumsgrenseForLovligeUttak, - Set knekkpunkter) { + private static void leggTilKnekkpunkterForUtsettelsePgaFerie( + RegelGrunnlag grunnlag, + LocalDate minimumsgrenseForLovligUttak, + LocalDate maksimumsgrenseForLovligeUttak, + Set knekkpunkter) { var bevegeligeHelligdager = finnKnekkpunktPåBevegeligeHelligdagerI( - new LukketPeriode(minimumsgrenseForLovligUttak, maksimumsgrenseForLovligeUttak)); + new LukketPeriode(minimumsgrenseForLovligUttak, maksimumsgrenseForLovligeUttak)); var perioderMedFerie = perioderMedFerie(grunnlag); knekkpunkter.addAll(knekkpunkterForUtsettelsePgaFerie(bevegeligeHelligdager, perioderMedFerie)); } private static List perioderMedFerie(RegelGrunnlag grunnlag) { - return grunnlag.getSøknad().getOppgittePerioder().stream().filter(p -> p.isUtsettelsePga(UtsettelseÅrsak.FERIE)).toList(); + return grunnlag.getSøknad().getOppgittePerioder().stream() + .filter(p -> p.isUtsettelsePga(UtsettelseÅrsak.FERIE)) + .toList(); } private static void knekkBasertPåAnnenPart(RegelGrunnlag grunnlag, Set knekkpunkter) { @@ -160,7 +175,8 @@ private static List perioderMedFerie(RegelGrunnlag grunnlag) { } private static LocalDate finnMaksgrenseForLovligUttak(RegelGrunnlag grunnlag) { - return SjekkOmPeriodenErEtterMaksgrenseForUttak.regnUtMaksgrenseForLovligeUttaksdag(grunnlag.getDatoer().getFamiliehendelse()); + return SjekkOmPeriodenErEtterMaksgrenseForUttak.regnUtMaksgrenseForLovligeUttaksdag( + grunnlag.getDatoer().getFamiliehendelse()); } private static List finnKnekkpunktPåBevegeligeHelligdagerI(LukketPeriode uttaksperiode) { @@ -173,7 +189,8 @@ private static LocalDate finnMaksgrenseForLovligUttak(RegelGrunnlag grunnlag) { return knekkpunkt; } - private static List knekkpunkterForUtsettelsePgaFerie(List bevegeligeHelligdager, List utsettelsePerioder) { + private static List knekkpunkterForUtsettelsePgaFerie( + List bevegeligeHelligdager, List utsettelsePerioder) { List knekkpunkter = new ArrayList<>(); for (Periode periode : utsettelsePerioder) { for (var helligdag : bevegeligeHelligdager) { @@ -185,11 +202,10 @@ private static List knekkpunkterForUtsettelsePgaFerie(List return knekkpunkter; } - private static Set finnKnekkpunkterFarsPeriodeRundtFødsel(RegelGrunnlag grunnlag, boolean medTom) { return FarUttakRundtFødsel.utledFarsPeriodeRundtFødsel(grunnlag) - .map(p -> medTom ? Set.of(p.getFom(), p.getTom().plusDays(1)) : Set.of(p.getFom())) - .orElse(Set.of()); + .map(p -> medTom ? Set.of(p.getFom(), p.getTom().plusDays(1)) : Set.of(p.getFom())) + .orElse(Set.of()); } private static void leggTilKnekkpunkter(Set knekkpunkter, List perioder) { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/OrkestreringTillegg.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/OrkestreringTillegg.java index 7fafaad8..9435864e 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/OrkestreringTillegg.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/OrkestreringTillegg.java @@ -3,7 +3,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; public class OrkestreringTillegg { @@ -26,7 +25,9 @@ public Set getKnekkpunkter() { @Override public String toString() { - var msp = manglendeSøktPerioder.stream().map(p -> p.getFom() + " - " + p.getTom()).toList(); + var msp = manglendeSøktPerioder.stream() + .map(p -> p.getFom() + " - " + p.getTom()) + .toList(); return "OrkestreringTillegg{" + "manglendeSøktPerioder=" + msp + ", knekkpunkter=" + knekkpunkter + '}'; } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandler.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandler.java index a985c463..f41bc76f 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandler.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandler.java @@ -1,3 +1,4 @@ +/* (C)2024 */ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.ValgAvStønadskontoTjeneste.velgStønadskonto; @@ -5,16 +6,7 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; - -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Perioderesultattype; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.RegelGrunnlag; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UttakPeriode; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UttakPeriodeAktivitet; +import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.*; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregning; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.TomKontoKnekkpunkt; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.UtfallType; @@ -29,17 +21,25 @@ class RegelResultatBehandler { this.regelGrunnlag = regelGrunnlag; } - RegelResultatBehandlerResultat innvilgAktuellPeriode(OppgittPeriode oppgittPeriode, - Optional knekkpunktOpt, - FastsettePerioderRegelresultat regelresultat, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { - var innvilgPeriode = knekkpunktOpt.map(TomKontoKnekkpunkt::dato) - .map(k -> oppgittPeriode.kopiMedNyPeriode(oppgittPeriode.getFom(), k.minusDays(1))) - .orElse(oppgittPeriode); - - var innvilget = new UttakPeriode(innvilgPeriode, Perioderesultattype.INNVILGET, null, regelresultat.getAvklaringÅrsak(), - regelresultat.getGraderingIkkeInnvilgetÅrsak(), lagAktiviteter(innvilgPeriode, regelresultat, false, annenpartSamtidigUttaksprosent), - regnSamtidigUttaksprosentMotGradering(innvilgPeriode, annenpartSamtidigUttaksprosent), innvilgPeriode.getStønadskontotype()); + RegelResultatBehandlerResultat innvilgAktuellPeriode( + OppgittPeriode oppgittPeriode, + Optional knekkpunktOpt, + FastsettePerioderRegelresultat regelresultat, + SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { + var innvilgPeriode = knekkpunktOpt + .map(TomKontoKnekkpunkt::dato) + .map(k -> oppgittPeriode.kopiMedNyPeriode(oppgittPeriode.getFom(), k.minusDays(1))) + .orElse(oppgittPeriode); + + var innvilget = new UttakPeriode( + innvilgPeriode, + Perioderesultattype.INNVILGET, + null, + regelresultat.getAvklaringÅrsak(), + regelresultat.getGraderingIkkeInnvilgetÅrsak(), + lagAktiviteter(innvilgPeriode, regelresultat, false, annenpartSamtidigUttaksprosent), + regnSamtidigUttaksprosentMotGradering(innvilgPeriode, annenpartSamtidigUttaksprosent), + innvilgPeriode.getStønadskontotype()); if (knekkpunktOpt.isEmpty()) { return RegelResultatBehandlerResultat.utenKnekk(innvilget); @@ -50,19 +50,27 @@ RegelResultatBehandlerResultat innvilgAktuellPeriode(OppgittPeriode oppgittPerio } } - RegelResultatBehandlerResultat avslåAktuellPeriode(OppgittPeriode oppgittPeriode, - FastsettePerioderRegelresultat regelresultat, - Optional knekkpunktOpt, - boolean overlapperInnvilgetAnnenpartsPeriode) { - var avslåPeriode = knekkpunktOpt.map(TomKontoKnekkpunkt::dato) - .filter(d -> !overlapperInnvilgetAnnenpartsPeriode) - .map(knekkdato -> oppgittPeriode.kopiMedNyPeriode(oppgittPeriode.getFom(), knekkdato.minusDays(1))) - .orElse(oppgittPeriode); - - var avslått = new UttakPeriode(avslåPeriode, Perioderesultattype.AVSLÅTT, null, regelresultat.getAvklaringÅrsak(), - regelresultat.getGraderingIkkeInnvilgetÅrsak(), - lagAktiviteter(avslåPeriode, regelresultat, overlapperInnvilgetAnnenpartsPeriode, SamtidigUttaksprosent.ZERO), - regnSamtidigUttaksprosentMotGradering(avslåPeriode, SamtidigUttaksprosent.ZERO), konto(avslåPeriode).orElse(null)); + RegelResultatBehandlerResultat avslåAktuellPeriode( + OppgittPeriode oppgittPeriode, + FastsettePerioderRegelresultat regelresultat, + Optional knekkpunktOpt, + boolean overlapperInnvilgetAnnenpartsPeriode) { + var avslåPeriode = knekkpunktOpt + .map(TomKontoKnekkpunkt::dato) + .filter(d -> !overlapperInnvilgetAnnenpartsPeriode) + .map(knekkdato -> oppgittPeriode.kopiMedNyPeriode(oppgittPeriode.getFom(), knekkdato.minusDays(1))) + .orElse(oppgittPeriode); + + var avslått = new UttakPeriode( + avslåPeriode, + Perioderesultattype.AVSLÅTT, + null, + regelresultat.getAvklaringÅrsak(), + regelresultat.getGraderingIkkeInnvilgetÅrsak(), + lagAktiviteter( + avslåPeriode, regelresultat, overlapperInnvilgetAnnenpartsPeriode, SamtidigUttaksprosent.ZERO), + regnSamtidigUttaksprosentMotGradering(avslåPeriode, SamtidigUttaksprosent.ZERO), + konto(avslåPeriode).orElse(null)); if (!overlapperInnvilgetAnnenpartsPeriode && knekkpunktOpt.isPresent()) { validerKnekkpunkt(oppgittPeriode, knekkpunktOpt.get()); @@ -73,28 +81,37 @@ RegelResultatBehandlerResultat innvilgAktuellPeriode(OppgittPeriode oppgittPerio } } - private static SamtidigUttaksprosent regnSamtidigUttaksprosentMotGradering(OppgittPeriode oppgittPeriode, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { + private static SamtidigUttaksprosent regnSamtidigUttaksprosentMotGradering( + OppgittPeriode oppgittPeriode, SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { if (!oppgittPeriode.erSøktSamtidigUttak() && !annenpartSamtidigUttaksprosent.merEnn0()) { return null; } if (annenpartSamtidigUttaksprosent.merEnn0()) { return SamtidigUttaksprosent.HUNDRED.subtract(annenpartSamtidigUttaksprosent); } - return oppgittPeriode.erSøktGradering() ? SamtidigUttaksprosent.HUNDRED.subtract( - oppgittPeriode.getArbeidsprosent()) : oppgittPeriode.getSamtidigUttaksprosent(); + return oppgittPeriode.erSøktGradering() + ? SamtidigUttaksprosent.HUNDRED.subtract(oppgittPeriode.getArbeidsprosent()) + : oppgittPeriode.getSamtidigUttaksprosent(); } private Optional konto(OppgittPeriode oppgittPeriode) { - return oppgittPeriode.getStønadskontotype() != null ? Optional.of(oppgittPeriode.getStønadskontotype()) : utledKonto(oppgittPeriode); + return oppgittPeriode.getStønadskontotype() != null + ? Optional.of(oppgittPeriode.getStønadskontotype()) + : utledKonto(oppgittPeriode); } - RegelResultatBehandlerResultat manuellBehandling(OppgittPeriode oppgittPeriode, FastsettePerioderRegelresultat regelresultat) { + RegelResultatBehandlerResultat manuellBehandling( + OppgittPeriode oppgittPeriode, FastsettePerioderRegelresultat regelresultat) { var stønadskontotype = konto(oppgittPeriode); - var resultat = new UttakPeriode(oppgittPeriode, Perioderesultattype.MANUELL_BEHANDLING, regelresultat.getManuellbehandlingårsak(), - regelresultat.getAvklaringÅrsak(), regelresultat.getGraderingIkkeInnvilgetÅrsak(), - lagAktiviteter(oppgittPeriode, regelresultat, false, SamtidigUttaksprosent.ZERO), - regnSamtidigUttaksprosentMotGradering(oppgittPeriode, SamtidigUttaksprosent.ZERO), stønadskontotype.orElse(null)); + var resultat = new UttakPeriode( + oppgittPeriode, + Perioderesultattype.MANUELL_BEHANDLING, + regelresultat.getManuellbehandlingårsak(), + regelresultat.getAvklaringÅrsak(), + regelresultat.getGraderingIkkeInnvilgetÅrsak(), + lagAktiviteter(oppgittPeriode, regelresultat, false, SamtidigUttaksprosent.ZERO), + regnSamtidigUttaksprosentMotGradering(oppgittPeriode, SamtidigUttaksprosent.ZERO), + stønadskontotype.orElse(null)); return RegelResultatBehandlerResultat.utenKnekk(resultat); } @@ -102,37 +119,53 @@ RegelResultatBehandlerResultat manuellBehandling(OppgittPeriode oppgittPeriode, return velgStønadskonto(oppgittPeriode, regelGrunnlag, saldoUtregning); } - private Set lagAktiviteter(OppgittPeriode oppgittPeriode, - FastsettePerioderRegelresultat regelresultat, - boolean overlapperMedInnvilgetPeriodeHosAnnenpart, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { - return oppgittPeriode.getAktiviteter() - .stream() - .map(a -> lagAktivitet(a, regelresultat, overlapperMedInnvilgetPeriodeHosAnnenpart, oppgittPeriode, annenpartSamtidigUttaksprosent)) - .collect(Collectors.toSet()); + private Set lagAktiviteter( + OppgittPeriode oppgittPeriode, + FastsettePerioderRegelresultat regelresultat, + boolean overlapperMedInnvilgetPeriodeHosAnnenpart, + SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { + return oppgittPeriode.getAktiviteter().stream() + .map(a -> lagAktivitet( + a, + regelresultat, + overlapperMedInnvilgetPeriodeHosAnnenpart, + oppgittPeriode, + annenpartSamtidigUttaksprosent)) + .collect(Collectors.toSet()); } - private UttakPeriodeAktivitet lagAktivitet(AktivitetIdentifikator identifikator, - FastsettePerioderRegelresultat regelresultat, - boolean overlapperMedInnvilgetPeriodeHosAnnenpart, - OppgittPeriode oppgittPeriode, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { + private UttakPeriodeAktivitet lagAktivitet( + AktivitetIdentifikator identifikator, + FastsettePerioderRegelresultat regelresultat, + boolean overlapperMedInnvilgetPeriodeHosAnnenpart, + OppgittPeriode oppgittPeriode, + SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { var søktGradering = oppgittPeriode.erSøktGradering(identifikator); - var periodeAktivitetResultat = finnPeriodeAktivitetResultat(oppgittPeriode, overlapperMedInnvilgetPeriodeHosAnnenpart, identifikator, - regelresultat, annenpartSamtidigUttaksprosent); - return new UttakPeriodeAktivitet(identifikator, periodeAktivitetResultat.utbetalingsgrad(), periodeAktivitetResultat.trekkdager(), - søktGradering); + var periodeAktivitetResultat = finnPeriodeAktivitetResultat( + oppgittPeriode, + overlapperMedInnvilgetPeriodeHosAnnenpart, + identifikator, + regelresultat, + annenpartSamtidigUttaksprosent); + return new UttakPeriodeAktivitet( + identifikator, + periodeAktivitetResultat.utbetalingsgrad(), + periodeAktivitetResultat.trekkdager(), + søktGradering); } - private PeriodeAktivitetResultat finnPeriodeAktivitetResultat(OppgittPeriode oppgittPeriode, - boolean overlapperMedInnvilgetPeriodeHosAnnenpart, - AktivitetIdentifikator aktivitet, - FastsettePerioderRegelresultat regelresultat, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { - //Må sjekke saldo her, ved flere arbeidsforhold kan det reglene ha gått til sluttpunkt som trekkes dager selv om ett av arbeidsforholdene er tom - //På arbeidsforholdet som er tom på konto skal det settes 0 trekkdager + private PeriodeAktivitetResultat finnPeriodeAktivitetResultat( + OppgittPeriode oppgittPeriode, + boolean overlapperMedInnvilgetPeriodeHosAnnenpart, + AktivitetIdentifikator aktivitet, + FastsettePerioderRegelresultat regelresultat, + SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { + // Må sjekke saldo her, ved flere arbeidsforhold kan det reglene ha gått til sluttpunkt som + // trekkes dager selv om ett av arbeidsforholdene er tom + // På arbeidsforholdet som er tom på konto skal det settes 0 trekkdager var stønadskonto = konto(oppgittPeriode); - var harIgjenTrekkdager = isHarIgjenTrekkdager(oppgittPeriode, aktivitet, regelresultat, stønadskonto.orElse(null)); + var harIgjenTrekkdager = + isHarIgjenTrekkdager(oppgittPeriode, aktivitet, regelresultat, stønadskonto.orElse(null)); var manuellBehandling = manuellBehandling(regelresultat); if (overlapperMedInnvilgetPeriodeHosAnnenpart || (!manuellBehandling && !harIgjenTrekkdager)) { @@ -141,7 +174,8 @@ private PeriodeAktivitetResultat finnPeriodeAktivitetResultat(OppgittPeriode opp var utbetalingsgrad = Utbetalingsgrad.ZERO; if (regelresultat.skalUtbetale()) { - var utbetalingsgradUtregning = bestemUtbetalingsgradUtregning(oppgittPeriode, aktivitet, annenpartSamtidigUttaksprosent); + var utbetalingsgradUtregning = + bestemUtbetalingsgradUtregning(oppgittPeriode, aktivitet, annenpartSamtidigUttaksprosent); utbetalingsgrad = utbetalingsgradUtregning.resultat(); } var trekkdager = Trekkdager.ZERO; @@ -149,23 +183,30 @@ private PeriodeAktivitetResultat finnPeriodeAktivitetResultat(OppgittPeriode opp if (manuellBehandling && stønadskonto.isEmpty()) { trekkdager = Trekkdager.ZERO; } else { - var graderingInnvilget = regelresultat.getGraderingIkkeInnvilgetÅrsak() == null && oppgittPeriode.erSøktGradering(aktivitet); - trekkdager = TrekkdagerUtregningUtil.trekkdagerFor(oppgittPeriode, graderingInnvilget, oppgittPeriode.getArbeidsprosent(), - regnSamtidigUttaksprosentMotGradering(oppgittPeriode, annenpartSamtidigUttaksprosent)); + var graderingInnvilget = regelresultat.getGraderingIkkeInnvilgetÅrsak() == null + && oppgittPeriode.erSøktGradering(aktivitet); + trekkdager = TrekkdagerUtregningUtil.trekkdagerFor( + oppgittPeriode, + graderingInnvilget, + oppgittPeriode.getArbeidsprosent(), + regnSamtidigUttaksprosentMotGradering(oppgittPeriode, annenpartSamtidigUttaksprosent)); } } return new PeriodeAktivitetResultat(utbetalingsgrad, trekkdager); } - private boolean isHarIgjenTrekkdager(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - FastsettePerioderRegelresultat regelresultat, - Stønadskontotype stønadskonto) { - var nettosaldo = saldoUtregning.nettoSaldoJustertForMinsterett(stønadskonto, aktivitet, oppgittPeriode.kanTrekkeAvMinsterett()); - if (regelresultat.getAvklaringÅrsak() != null && regelresultat.getAvklaringÅrsak().trekkerMinsterett()) { + private boolean isHarIgjenTrekkdager( + OppgittPeriode oppgittPeriode, + AktivitetIdentifikator aktivitet, + FastsettePerioderRegelresultat regelresultat, + Stønadskontotype stønadskonto) { + var nettosaldo = saldoUtregning.nettoSaldoJustertForMinsterett( + stønadskonto, aktivitet, oppgittPeriode.kanTrekkeAvMinsterett()); + if (regelresultat.getAvklaringÅrsak() != null + && regelresultat.getAvklaringÅrsak().trekkerMinsterett()) { var minsterettSaldo = saldoUtregning.restSaldoMinsterett(aktivitet); var utenAktivitetskravSaldo = saldoUtregning.restSaldoDagerUtenAktivitetskrav(); - return nettosaldo.merEnn0() && (minsterettSaldo.merEnn0() || utenAktivitetskravSaldo.merEnn0()); + return (nettosaldo.merEnn0() && (minsterettSaldo.merEnn0() || utenAktivitetskravSaldo.merEnn0())); } return nettosaldo.merEnn0(); } @@ -176,24 +217,26 @@ private boolean manuellBehandling(FastsettePerioderRegelresultat regelresultat) private void validerKnekkpunkt(OppgittPeriode uttakPeriode, TomKontoKnekkpunkt knekkpunkt) { if (!uttakPeriode.overlapper(knekkpunkt.dato())) { - throw new IllegalArgumentException("Knekkpunkt må være i periode. " + knekkpunkt.dato() + " - " + uttakPeriode); + throw new IllegalArgumentException( + "Knekkpunkt må være i periode. " + knekkpunkt.dato() + " - " + uttakPeriode); } } - private UtbetalingsgradUtregning bestemUtbetalingsgradUtregning(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { + private UtbetalingsgradUtregning bestemUtbetalingsgradUtregning( + OppgittPeriode oppgittPeriode, + AktivitetIdentifikator aktivitet, + SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { if (oppgittPeriode.erSøktGradering(aktivitet)) { return new UtbetalingsgradMedGraderingUtregning(oppgittPeriode, aktivitet, annenpartSamtidigUttaksprosent); } - var samtidigUttaksprosent = regnSamtidigUttaksprosentMotGradering(oppgittPeriode, annenpartSamtidigUttaksprosent); + var samtidigUttaksprosent = + regnSamtidigUttaksprosentMotGradering(oppgittPeriode, annenpartSamtidigUttaksprosent); if (samtidigUttaksprosent != null) { - return new UtbetalingsgradSamtidigUttakUtregning(samtidigUttaksprosent, oppgittPeriode.getArbeidsprosent(), - annenpartSamtidigUttaksprosent); + return new UtbetalingsgradSamtidigUttakUtregning( + samtidigUttaksprosent, oppgittPeriode.getArbeidsprosent(), annenpartSamtidigUttaksprosent); } return new UtbetalingsgradUtenGraderingUtregning(annenpartSamtidigUttaksprosent); } - private record PeriodeAktivitetResultat(Utbetalingsgrad utbetalingsgrad, Trekkdager trekkdager) { - } + private record PeriodeAktivitetResultat(Utbetalingsgrad utbetalingsgrad, Trekkdager trekkdager) {} } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Trekkdager.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Trekkdager.java index 0f84591a..38ee6f9a 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Trekkdager.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Trekkdager.java @@ -51,7 +51,11 @@ public int rundOpp() { } public boolean gårAkkuratOppIHeleVirkedager(BigDecimal uttaksprosent) { - return decimalValue().remainder(uttaksprosent).setScale(0, RoundingMode.UP).compareTo(BigDecimal.ZERO) == 0; + return decimalValue() + .remainder(uttaksprosent) + .setScale(0, RoundingMode.UP) + .compareTo(BigDecimal.ZERO) + == 0; } @Override diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtil.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtil.java index acfc176a..941957c3 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtil.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtil.java @@ -2,38 +2,38 @@ import java.math.BigDecimal; import java.math.RoundingMode; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Periode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; public final class TrekkdagerUtregningUtil { - private TrekkdagerUtregningUtil() { - } + private TrekkdagerUtregningUtil() {} - public static Trekkdager trekkdagerFor(Periode periode, - boolean gradert, - BigDecimal gradertArbeidstidsprosent, - SamtidigUttaksprosent samtidigUttaksprosent) { + public static Trekkdager trekkdagerFor( + Periode periode, + boolean gradert, + BigDecimal gradertArbeidstidsprosent, + SamtidigUttaksprosent samtidigUttaksprosent) { var trekkdagerUtenGradering = Virkedager.beregnAntallVirkedager(periode); if (gradert) { return trekkdagerMedGradering(trekkdagerUtenGradering, gradertArbeidstidsprosent); } if (samtidigUttaksprosent != null) { - //Samme utregning som med gradering - return trekkdagerMedGradering(trekkdagerUtenGradering, BigDecimal.valueOf(100).subtract(samtidigUttaksprosent.decimalValue())); + // Samme utregning som med gradering + return trekkdagerMedGradering( + trekkdagerUtenGradering, BigDecimal.valueOf(100).subtract(samtidigUttaksprosent.decimalValue())); } return new Trekkdager(trekkdagerUtenGradering); } - private static Trekkdager trekkdagerMedGradering(int trekkdagerUtenGradering, BigDecimal gradertArbeidstidsprosent) { + private static Trekkdager trekkdagerMedGradering( + int trekkdagerUtenGradering, BigDecimal gradertArbeidstidsprosent) { if (gradertArbeidstidsprosent.compareTo(BigDecimal.valueOf(100)) >= 0) { return Trekkdager.ZERO; } var trekkdager = BigDecimal.valueOf(trekkdagerUtenGradering) - .multiply(BigDecimal.valueOf(100).subtract(gradertArbeidstidsprosent)) - .divide(BigDecimal.valueOf(100), 1, RoundingMode.DOWN); + .multiply(BigDecimal.valueOf(100).subtract(gradertArbeidstidsprosent)) + .divide(BigDecimal.valueOf(100), 1, RoundingMode.DOWN); return new Trekkdager(trekkdager); } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradMedGraderingUtregning.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradMedGraderingUtregning.java index d859db7d..42d7a450 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradMedGraderingUtregning.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradMedGraderingUtregning.java @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; import java.util.Optional; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; @@ -13,9 +12,10 @@ class UtbetalingsgradMedGraderingUtregning implements UtbetalingsgradUtregning { private final AktivitetIdentifikator aktivitet; private final SamtidigUttaksprosent annenpartSamtidigUttaksprosent; - UtbetalingsgradMedGraderingUtregning(OppgittPeriode uttakPeriode, - AktivitetIdentifikator aktivitet, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { + UtbetalingsgradMedGraderingUtregning( + OppgittPeriode uttakPeriode, + AktivitetIdentifikator aktivitet, + SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { this.uttakPeriode = uttakPeriode; this.aktivitet = aktivitet; this.annenpartSamtidigUttaksprosent = annenpartSamtidigUttaksprosent; @@ -24,9 +24,11 @@ class UtbetalingsgradMedGraderingUtregning implements UtbetalingsgradUtregning { @Override public Utbetalingsgrad resultat() { // Samtidiguttaksprosent med mindre gradering på noen aktiviteter i perioden - var lokalSamtidigUttaksprosent = uttakPeriode.erSøktGradering(aktivitet) ? Optional.ofNullable(uttakPeriode.getArbeidsprosent()) - .map(SamtidigUttaksprosent.HUNDRED::subtract) - .orElseThrow(() -> new IllegalArgumentException("arbeidstidsprosent kan ikke være null")) : SamtidigUttaksprosent.HUNDRED; + var lokalSamtidigUttaksprosent = uttakPeriode.erSøktGradering(aktivitet) + ? Optional.ofNullable(uttakPeriode.getArbeidsprosent()) + .map(SamtidigUttaksprosent.HUNDRED::subtract) + .orElseThrow(() -> new IllegalArgumentException("arbeidstidsprosent kan ikke være null")) + : SamtidigUttaksprosent.HUNDRED; var maksSamtidigUttakUtFraAnnenpart = SamtidigUttaksprosent.HUNDRED.subtract(annenpartSamtidigUttaksprosent); // Reduser utbetaling dersom annenpart > 0 og det ligger an til mer enn 100 prosent if (lokalSamtidigUttaksprosent.subtract(maksSamtidigUttakUtFraAnnenpart).merEnn0()) { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradSamtidigUttakUtregning.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradSamtidigUttakUtregning.java index 3de83505..0b03a213 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradSamtidigUttakUtregning.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradSamtidigUttakUtregning.java @@ -3,7 +3,6 @@ import java.math.BigDecimal; import java.util.Objects; import java.util.Optional; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; @@ -13,9 +12,10 @@ class UtbetalingsgradSamtidigUttakUtregning implements UtbetalingsgradUtregning private final BigDecimal graderingArbeidstidsprosent; private final SamtidigUttaksprosent annenpartSamtidigUttaksprosent; - UtbetalingsgradSamtidigUttakUtregning(SamtidigUttaksprosent samtidigUttaksprosent, - BigDecimal graderingArbeidstidsprosent, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { + UtbetalingsgradSamtidigUttakUtregning( + SamtidigUttaksprosent samtidigUttaksprosent, + BigDecimal graderingArbeidstidsprosent, + SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { Objects.requireNonNull(samtidigUttaksprosent); Objects.requireNonNull(annenpartSamtidigUttaksprosent); this.graderingArbeidstidsprosent = graderingArbeidstidsprosent; @@ -27,8 +27,8 @@ class UtbetalingsgradSamtidigUttakUtregning implements UtbetalingsgradUtregning public Utbetalingsgrad resultat() { // Samtidiguttaksprosent med mindre gradering på noen aktiviteter i perioden var lokalSamtidigUttaksprosent = Optional.ofNullable(graderingArbeidstidsprosent) - .map(SamtidigUttaksprosent.HUNDRED::subtract) - .orElse(samtidigUttaksprosent); + .map(SamtidigUttaksprosent.HUNDRED::subtract) + .orElse(samtidigUttaksprosent); var maksSamtidigUttakUtFraAnnenpart = SamtidigUttaksprosent.HUNDRED.subtract(annenpartSamtidigUttaksprosent); // Reduser utbetaling dersom annenpart > 0 og det ligger an til mer enn 100 prosent if (lokalSamtidigUttaksprosent.subtract(maksSamtidigUttakUtFraAnnenpart).merEnn0()) { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradUtenGraderingUtregning.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradUtenGraderingUtregning.java index 04425d82..56f06f84 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradUtenGraderingUtregning.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradUtenGraderingUtregning.java @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; import java.util.Objects; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UttakVersion.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UttakVersion.java index b229655d..cf95596e 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UttakVersion.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UttakVersion.java @@ -5,9 +5,8 @@ public class UttakVersion { - private UttakVersion() { - } - - public static final EvaluationVersion UTTAK_VERSION = NareVersion.readVersionPropertyFor("fp-uttak", "nare/fp-uttak-version.properties"); + private UttakVersion() {} + public static final EvaluationVersion UTTAK_VERSION = + NareVersion.readVersionPropertyFor("fp-uttak", "nare/fp-uttak-version.properties"); } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ValgAvSt\303\270nadskontoTjeneste.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ValgAvSt\303\270nadskontoTjeneste.java" index 2415bae8..a11f7081 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ValgAvSt\303\270nadskontoTjeneste.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ValgAvSt\303\270nadskontoTjeneste.java" @@ -3,7 +3,6 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.RegelGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; @@ -11,15 +10,13 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.PrematurukerUtil; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregning; -/** - * Brukes ved når det skal trekkes dager fra periode uten stønadskontotype - */ +/** Brukes ved når det skal trekkes dager fra periode uten stønadskontotype */ final class ValgAvStønadskontoTjeneste { - private ValgAvStønadskontoTjeneste() { - } + private ValgAvStønadskontoTjeneste() {} - static Optional velgStønadskonto(OppgittPeriode periode, RegelGrunnlag regelGrunnlag, SaldoUtregning saldoUtregning) { + static Optional velgStønadskonto( + OppgittPeriode periode, RegelGrunnlag regelGrunnlag, SaldoUtregning saldoUtregning) { if (periode.getStønadskontotype() != null) { throw new IllegalArgumentException("Forventet periode uten stønadskontotype"); } @@ -29,22 +26,21 @@ final class ValgAvStønadskontoTjeneste { return velgStønadskontoVanligPeriode(periode, regelGrunnlag, saldoUtregning); } - private static Optional velgStønadskontoVanligPeriode(OppgittPeriode periode, - RegelGrunnlag regelGrunnlag, - SaldoUtregning saldoUtregning) { + private static Optional velgStønadskontoVanligPeriode( + OppgittPeriode periode, RegelGrunnlag regelGrunnlag, SaldoUtregning saldoUtregning) { return velg(periode, regelGrunnlag, saldoUtregning); } - private static Optional velgStønadskontoForUtsettelse(OppgittPeriode periode, - RegelGrunnlag regelGrunnlag, - SaldoUtregning saldoUtregning) { + private static Optional velgStønadskontoForUtsettelse( + OppgittPeriode periode, RegelGrunnlag regelGrunnlag, SaldoUtregning saldoUtregning) { if (periodeErPleiepenger(periode, regelGrunnlag)) { return stønadskontoVedPleiepenger(regelGrunnlag); } return velg(periode, regelGrunnlag, saldoUtregning); } - private static Optional velg(OppgittPeriode periode, RegelGrunnlag regelGrunnlag, SaldoUtregning saldoUtregning) { + private static Optional velg( + OppgittPeriode periode, RegelGrunnlag regelGrunnlag, SaldoUtregning saldoUtregning) { for (var stønadskontotype : hentSøkerSineKontoer(regelGrunnlag)) { if (!erTomForKonto(periode, stønadskontotype, saldoUtregning)) { return Optional.of(stønadskontotype); @@ -54,43 +50,51 @@ final class ValgAvStønadskontoTjeneste { } private static boolean periodeErPleiepenger(OppgittPeriode periode, RegelGrunnlag regelGrunnlag) { - return PrematurukerUtil.oppfyllerKravTilPrematuruker(regelGrunnlag.getDatoer().getFødsel(), regelGrunnlag.getDatoer().getTermin()) - && periodeErFørTermin(periode, regelGrunnlag) && periode.isUtsettelsePga(UtsettelseÅrsak.INNLAGT_BARN); + return PrematurukerUtil.oppfyllerKravTilPrematuruker( + regelGrunnlag.getDatoer().getFødsel(), + regelGrunnlag.getDatoer().getTermin()) + && periodeErFørTermin(periode, regelGrunnlag) + && periode.isUtsettelsePga(UtsettelseÅrsak.INNLAGT_BARN); } private static boolean periodeErFørTermin(OppgittPeriode periode, RegelGrunnlag regelGrunnlag) { - return regelGrunnlag.getDatoer().getTermin() != null && periode.getTom().isBefore(regelGrunnlag.getDatoer().getTermin()); + return regelGrunnlag.getDatoer().getTermin() != null + && periode.getTom().isBefore(regelGrunnlag.getDatoer().getTermin()); } private static Optional stønadskontoVedPleiepenger(RegelGrunnlag regelGrunnlag) { - //Trenger ikke å sjekke om tom på konto, ettersom bruker ikke kan gå tom før termin + // Trenger ikke å sjekke om tom på konto, ettersom bruker ikke kan gå tom før termin if (regelGrunnlag.getGyldigeStønadskontotyper().contains(Stønadskontotype.FELLESPERIODE)) { return Optional.of(Stønadskontotype.FELLESPERIODE); } if (regelGrunnlag.getGyldigeStønadskontotyper().contains(Stønadskontotype.FORELDREPENGER)) { return Optional.of(Stønadskontotype.FORELDREPENGER); } - throw new IllegalStateException( - "Trenger enten fellesperiode eller foreldrepenger konto. Kontotyper: " + regelGrunnlag.getGyldigeStønadskontotyper()); + throw new IllegalStateException("Trenger enten fellesperiode eller foreldrepenger konto. Kontotyper: " + + regelGrunnlag.getGyldigeStønadskontotyper()); } private static List hentSøkerSineKontoer(RegelGrunnlag regelGrunnlag) { final List søkerSineKonto; var gyldige = regelGrunnlag.getGyldigeStønadskontotyper(); if (regelGrunnlag.getBehandling().isSøkerMor() && gyldige.contains(Stønadskontotype.MØDREKVOTE)) { - søkerSineKonto = Arrays.asList(Stønadskontotype.MØDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); + søkerSineKonto = Arrays.asList( + Stønadskontotype.MØDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); } else if (gyldige.contains(Stønadskontotype.FEDREKVOTE)) { - søkerSineKonto = Arrays.asList(Stønadskontotype.FEDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); + søkerSineKonto = Arrays.asList( + Stønadskontotype.FEDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); } else { søkerSineKonto = List.of(Stønadskontotype.FORELDREPENGER); } return søkerSineKonto; } - private static boolean erTomForKonto(OppgittPeriode periode, Stønadskontotype stønadskontotype, SaldoUtregning saldoUtregning) { + private static boolean erTomForKonto( + OppgittPeriode periode, Stønadskontotype stønadskontotype, SaldoUtregning saldoUtregning) { var tomForKonto = true; for (var arbeidsforhold : periode.getAktiviteter()) { - var saldo = saldoUtregning.nettoSaldoJustertForMinsterett(stønadskontotype, arbeidsforhold, periode.kanTrekkeAvMinsterett()); + var saldo = saldoUtregning.nettoSaldoJustertForMinsterett( + stønadskontotype, arbeidsforhold, periode.kanTrekkeAvMinsterett()); if (saldo.merEnn0()) { tomForKonto = false; } else { @@ -100,5 +104,4 @@ private static boolean erTomForKonto(OppgittPeriode periode, Stønadskontotype s } return tomForKonto; } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Virkedager.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Virkedager.java index 7dbb79a0..65627c37 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Virkedager.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Virkedager.java @@ -8,7 +8,6 @@ import java.time.temporal.ChronoUnit; import java.util.Objects; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Periode; public class Virkedager { @@ -40,8 +39,9 @@ public static int beregnAntallVirkedager(LocalDate fom, LocalDate tom) { // Utvid til nærmeste søndag fram i tid fra og med slutt (tom) (0-6 dager) var padAfter = DayOfWeek.SUNDAY.getValue() - tom.getDayOfWeek().getValue(); // Antall virkedager i perioden utvidet til hele uker - var virkedagerPadded = toIntExact( - ChronoUnit.WEEKS.between(fom.minusDays(padBefore), tom.plusDays(padAfter).plusDays(1)) * VIRKEDAGER_PR_UKE); + var virkedagerPadded = toIntExact(ChronoUnit.WEEKS.between( + fom.minusDays(padBefore), tom.plusDays(padAfter).plusDays(1)) + * VIRKEDAGER_PR_UKE); // Antall virkedager i utvidelse var virkedagerPadding = Math.min(padBefore, VIRKEDAGER_PR_UKE) + Math.max(padAfter - HELGEDAGER_PR_UKE, 0); // Virkedager i perioden uten virkedagene fra utvidelse @@ -67,5 +67,4 @@ private static LocalDate plusVirkedag(LocalDate dato) { var plussen = dato.plusDays(1); return WEEKEND.contains(plussen.getDayOfWeek()) ? dato.with(next(DayOfWeek.MONDAY)) : plussen; } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkGyldigGrunnForTidligOppstartHelePerioden.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkGyldigGrunnForTidligOppstartHelePerioden.java index 1b11ec7b..81172b62 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkGyldigGrunnForTidligOppstartHelePerioden.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkGyldigGrunnForTidligOppstartHelePerioden.java @@ -17,7 +17,9 @@ public SjekkGyldigGrunnForTidligOppstartHelePerioden() { @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var aktuellPeriode = grunnlag.getAktuellPeriode(); - return aktuellPeriode.getDokumentasjonVurdering() != null && aktuellPeriode.getDokumentasjonVurdering() - .erGyldigGrunnForTidligOppstart() ? ja() : nei(); + return aktuellPeriode.getDokumentasjonVurdering() != null + && aktuellPeriode.getDokumentasjonVurdering().erGyldigGrunnForTidligOppstart() + ? ja() + : nei(); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAkseptertSamtidigUttak.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAkseptertSamtidigUttak.java index f91b97cb..6bbb7a61 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAkseptertSamtidigUttak.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAkseptertSamtidigUttak.java @@ -37,5 +37,4 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { } return nei(); } - } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAlleBarnErD\303\270de.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAlleBarnErD\303\270de.java" index 27e163eb..5c07a3ab 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAlleBarnErD\303\270de.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAlleBarnErD\303\270de.java" @@ -1,6 +1,5 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.fpsak.nare.doc.RuleDocumentation; import no.nav.fpsak.nare.evaluation.Evaluation; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse.java index 5531e025..701b55e3 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse.java @@ -18,10 +18,9 @@ public SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse() { @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var aktuellPeriode = grunnlag.getAktuellPeriode(); - var overlappErUtsettelse = grunnlag.getAnnenPartUttaksperioder() - .stream() - .filter(app -> PerioderUtenHelgUtil.perioderUtenHelgOverlapper(aktuellPeriode, app)) - .anyMatch(app -> app.isUtsettelse() && app.isInnvilget()); + var overlappErUtsettelse = grunnlag.getAnnenPartUttaksperioder().stream() + .filter(app -> PerioderUtenHelgUtil.perioderUtenHelgOverlapper(aktuellPeriode, app)) + .anyMatch(app -> app.isUtsettelse() && app.isInnvilget()); return overlappErUtsettelse ? ja() : nei(); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmBareFarHarRett.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmBareFarHarRett.java index 888528d3..c3a7a64d 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmBareFarHarRett.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmBareFarHarRett.java @@ -10,7 +10,6 @@ public class SjekkOmBareFarHarRett extends LeafSpecification { public static final String ID = "FP_VK 10.5.3"; - public static final String BESKRIVELSE = "Er det dager igjen på alle aktiviteter for minst en av bruker sine stønadskonto?"; + public static final String BESKRIVELSE = + "Er det dager igjen på alle aktiviteter for minst en av bruker sine stønadskonto?"; public SjekkOmDagerIgjenPåAlleAktiviteter() { super(ID); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmErAlleDisponibleDagerIgjenMinsterett.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmErAlleDisponibleDagerIgjenMinsterett.java index 4af2644a..99fb56e8 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmErAlleDisponibleDagerIgjenMinsterett.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmErAlleDisponibleDagerIgjenMinsterett.java @@ -1,6 +1,5 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser; - import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmTomForAlleSineKontoer.hentSøkerSineKontoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmEtterNesteSt\303\270nadsperiodeHarDisponibleDager.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmEtterNesteSt\303\270nadsperiodeHarDisponibleDager.java" index 55a633d2..f7c74f92 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmEtterNesteSt\303\270nadsperiodeHarDisponibleDager.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmEtterNesteSt\303\270nadsperiodeHarDisponibleDager.java" @@ -1,6 +1,5 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.fpsak.nare.doc.RuleDocumentation; import no.nav.fpsak.nare.evaluation.Evaluation; @@ -18,7 +17,8 @@ public class SjekkOmEtterNesteStønadsperiodeHarDisponibleDager extends LeafSpec @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { - if (!grunnlag.isSakMedRettEtterStartNesteStønadsperiode() || !grunnlag.erAktuellPeriodeEtterStartNesteStønadsperiode()) { + if (!grunnlag.isSakMedRettEtterStartNesteStønadsperiode() + || !grunnlag.erAktuellPeriodeEtterStartNesteStønadsperiode()) { return nei(); } if (grunnlag.getAktuellPeriode().isUtsettelse()) { @@ -27,7 +27,9 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { if (grunnlag.getAktuellPeriode().gjelderPeriodeMinsterett()) { for (var aktivitet : grunnlag.getAktuellPeriode().getAktiviteter()) { var saldoUtregning = grunnlag.getSaldoUtregning(); - if (saldoUtregning.saldoITrekkdager(grunnlag.getAktuellPeriode().getStønadskontotype(), aktivitet).merEnn0()) { + if (saldoUtregning + .saldoITrekkdager(grunnlag.getAktuellPeriode().getStønadskontotype(), aktivitet) + .merEnn0()) { var saldo = saldoUtregning.restSaldoEtterNesteStønadsperiode(aktivitet); if (saldo.merEnn0()) { return ja(); diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFarsUttakRundtF\303\270dselTilgjengeligeDager.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFarsUttakRundtF\303\270dselTilgjengeligeDager.java" index 336e5830..022e8f3e 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFarsUttakRundtF\303\270dselTilgjengeligeDager.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFarsUttakRundtF\303\270dselTilgjengeligeDager.java" @@ -17,15 +17,17 @@ public class SjekkOmFarsUttakRundtFødselTilgjengeligeDager extends LeafSpecific @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { - if (grunnlag.isSøkerMor() || grunnlag.getSaldoUtregning().getFarUttakRundtFødselDager().equals(Trekkdager.ZERO) - || grunnlag.periodeFarRundtFødsel().isEmpty()) { + if (grunnlag.isSøkerMor() + || grunnlag.getSaldoUtregning().getFarUttakRundtFødselDager().equals(Trekkdager.ZERO) + || grunnlag.periodeFarRundtFødsel().isEmpty()) { return nei(); } var periodeForUttakRundtFødsel = grunnlag.periodeFarRundtFødsel().orElseThrow(); var aktuellPeriode = grunnlag.getAktuellPeriode(); if (aktuellPeriode.erOmsluttetAv(periodeForUttakRundtFødsel)) { for (var aktivitet : aktuellPeriode.getAktiviteter()) { - var saldo = grunnlag.getSaldoUtregning().restSaldoFarUttakRundtFødsel(aktivitet, periodeForUttakRundtFødsel); + var saldo = grunnlag.getSaldoUtregning() + .restSaldoFarUttakRundtFødsel(aktivitet, periodeForUttakRundtFødsel); if (saldo.merEnn0()) { return ja(); } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFerieP\303\245BevegeligHelligdag.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFerieP\303\245BevegeligHelligdag.java" index bde08fa0..6616efbb 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFerieP\303\245BevegeligHelligdag.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFerieP\303\245BevegeligHelligdag.java" @@ -23,5 +23,4 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { } return nei(); } - } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmForeldrepengerF\303\270rF\303\270dselStarterForTidligEllerSlutterForSent.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmForeldrepengerF\303\270rF\303\270dselStarterForTidligEllerSlutterForSent.java" index bbe140fb..887156c9 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmForeldrepengerF\303\270rF\303\270dselStarterForTidligEllerSlutterForSent.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmForeldrepengerF\303\270rF\303\270dselStarterForTidligEllerSlutterForSent.java" @@ -8,7 +8,8 @@ import no.nav.fpsak.nare.specification.LeafSpecification; @RuleDocumentation(SjekkOmForeldrepengerFørFødselStarterForTidligEllerSlutterForSent.ID) -public class SjekkOmForeldrepengerFørFødselStarterForTidligEllerSlutterForSent extends LeafSpecification { +public class SjekkOmForeldrepengerFørFødselStarterForTidligEllerSlutterForSent + extends LeafSpecification { public static final String ID = "FP_VK 27.3.2"; @@ -22,16 +23,17 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var familiehendelse = grunnlag.getFamiliehendelse(); - var ukerFørFødsel = Konfigurasjon.STANDARD.getParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, familiehendelse); + var ukerFørFødsel = + Konfigurasjon.STANDARD.getParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, familiehendelse); var førsteLovligeDag = familiehendelse.minusWeeks(ukerFørFødsel); var sisteLovligeDag = familiehendelse.minusDays(1); - if (aktuellPeriode.getFom().isBefore(førsteLovligeDag) || aktuellPeriode.getTom().isAfter(sisteLovligeDag)) { + if (aktuellPeriode.getFom().isBefore(førsteLovligeDag) + || aktuellPeriode.getTom().isAfter(sisteLovligeDag)) { return ja(); } return nei(); - } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFulltArbeidForUtsettelse.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFulltArbeidForUtsettelse.java index b35f95fa..ea4f8352 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFulltArbeidForUtsettelse.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmFulltArbeidForUtsettelse.java @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser; import java.math.BigDecimal; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.fpsak.nare.evaluation.Evaluation; import no.nav.fpsak.nare.specification.LeafSpecification; diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmGyldigOverf\303\270ringPgaAleneomsorg.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmGyldigOverf\303\270ringPgaAleneomsorg.java" index 958e9326..0e3bb6c2 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmGyldigOverf\303\270ringPgaAleneomsorg.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmGyldigOverf\303\270ringPgaAleneomsorg.java" @@ -20,7 +20,9 @@ public class SjekkOmGyldigOverføringPgaAleneomsorg extends LeafSpecification PerioderUtenHelgUtil.perioderUtenHelgOverlapper(aktuellPeriode, app)) - .findFirst() - .isEmpty(); + return grunnlag.getAnnenPartUttaksperioder().stream() + .filter(app -> PerioderUtenHelgUtil.perioderUtenHelgOverlapper(aktuellPeriode, app)) + .findFirst() + .isEmpty(); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmMinsterettHarDisponibleDager.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmMinsterettHarDisponibleDager.java index a4d6f4bd..b59b36fd 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmMinsterettHarDisponibleDager.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmMinsterettHarDisponibleDager.java @@ -1,6 +1,5 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.fpsak.nare.doc.RuleDocumentation; import no.nav.fpsak.nare.evaluation.Evaluation; @@ -18,11 +17,14 @@ public SjekkOmMinsterettHarDisponibleDager() { @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { - if (grunnlag.isSakMedMinsterett() && grunnlag.getAktuellPeriode().gjelderPeriodeMinsterett() - && !grunnlag.erAktuellPeriodeEtterStartNesteStønadsperiode()) { + if (grunnlag.isSakMedMinsterett() + && grunnlag.getAktuellPeriode().gjelderPeriodeMinsterett() + && !grunnlag.erAktuellPeriodeEtterStartNesteStønadsperiode()) { for (var aktivitet : grunnlag.getAktuellPeriode().getAktiviteter()) { var saldoUtregning = grunnlag.getSaldoUtregning(); - if (saldoUtregning.saldoITrekkdager(grunnlag.getAktuellPeriode().getStønadskontotype(), aktivitet).merEnn0()) { + if (saldoUtregning + .saldoITrekkdager(grunnlag.getAktuellPeriode().getStønadskontotype(), aktivitet) + .merEnn0()) { var saldo = saldoUtregning.restSaldoMinsterett(aktivitet); if (saldo.merEnn0()) { return ja(); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOppholdKvoteAnnenForelder.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOppholdKvoteAnnenForelder.java index ff48a54e..9f097659 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOppholdKvoteAnnenForelder.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOppholdKvoteAnnenForelder.java @@ -16,8 +16,9 @@ public SjekkOmOppholdKvoteAnnenForelder() { @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var oppgittPeriode = grunnlag.getAktuellPeriode(); - var erOppholdKvote = oppgittPeriode.isOppholdPga(OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER) || oppgittPeriode.isOppholdPga( - OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) || oppgittPeriode.isOppholdPga(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER); + var erOppholdKvote = oppgittPeriode.isOppholdPga(OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER) + || oppgittPeriode.isOppholdPga(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + || oppgittPeriode.isOppholdPga(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER); return erOppholdKvote ? ja() : nei(); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOpph\303\270rsdatoTrefferPerioden.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOpph\303\270rsdatoTrefferPerioden.java" index b89c63ec..7eb16338 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOpph\303\270rsdatoTrefferPerioden.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOpph\303\270rsdatoTrefferPerioden.java" @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser; import java.time.LocalDate; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; import no.nav.fpsak.nare.evaluation.Evaluation; @@ -27,7 +26,6 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { return erOpphørsdatoIEllerFørPerioden(oppgittPeriode, opphørsdatoForMedlemskap) ? ja() : nei(); } - private boolean erOpphørsdatoIEllerFørPerioden(OppgittPeriode oppgittPeriode, LocalDate opphørsdato) { return oppgittPeriode.overlapper(opphørsdato) || oppgittPeriode.getFom().isAfter(opphørsdato); } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOverf\303\270ringPgaSykdomSkade.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOverf\303\270ringPgaSykdomSkade.java" index 784acab8..6e2056f3 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOverf\303\270ringPgaSykdomSkade.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmOverf\303\270ringPgaSykdomSkade.java" @@ -24,4 +24,3 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { return nei(); } } - diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodeErForeldrepengerF\303\270rF\303\270dsel.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodeErForeldrepengerF\303\270rF\303\270dsel.java" index 0aba62e0..3613cc42 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodeErForeldrepengerF\303\270rF\303\270dsel.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodeErForeldrepengerF\303\270rF\303\270dsel.java" @@ -15,7 +15,6 @@ public class SjekkOmPeriodeErForeldrepengerFørFødsel extends LeafSpecification super(ID); } - @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var stønadskontotype = grunnlag.getAktuellPeriode().getStønadskontotype(); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodeErUtsettelse.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodeErUtsettelse.java index ab851b28..e452b75b 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodeErUtsettelse.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodeErUtsettelse.java @@ -19,8 +19,4 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var oppgittPeriode = grunnlag.getAktuellPeriode(); return oppgittPeriode.isUtsettelse() ? ja() : nei(); } - } - - - diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenErEtterMaksgrenseForUttak.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenErEtterMaksgrenseForUttak.java index 7c38c888..4b94e8cf 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenErEtterMaksgrenseForUttak.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenErEtterMaksgrenseForUttak.java @@ -2,7 +2,6 @@ import java.time.LocalDate; import java.time.Period; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Konfigurasjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Parametertype; @@ -32,7 +31,7 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { public static LocalDate regnUtMaksgrenseForLovligeUttaksdag(LocalDate familiehendelse) { var maksGrenseRelativTilFamiliehendelse = Period.ofYears( - Konfigurasjon.STANDARD.getParameter(Parametertype.GRENSE_ETTER_FØDSELSDATO_ÅR, familiehendelse)); + Konfigurasjon.STANDARD.getParameter(Parametertype.GRENSE_ETTER_FØDSELSDATO_ÅR, familiehendelse)); return familiehendelse.plus(maksGrenseRelativTilFamiliehendelse); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenInnenforUkerReservertMor.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenInnenforUkerReservertMor.java index 43a42b1b..4682f401 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenInnenforUkerReservertMor.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenInnenforUkerReservertMor.java @@ -23,15 +23,20 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var familiehendelse = grunnlag.getFamiliehendelse(); - var antallUkerEtterFødsel = Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelse); + var antallUkerEtterFødsel = + Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelse); - var periodeEtterFødselNormaltReservertMor = new LukketPeriode(familiehendelse, familiehendelse.plusWeeks(antallUkerEtterFødsel).minusDays(1)); + var periodeEtterFødselNormaltReservertMor = new LukketPeriode( + familiehendelse, + familiehendelse.plusWeeks(antallUkerEtterFødsel).minusDays(1)); if (periodeEtterFødselNormaltReservertMor.overlapper(aktuellPeriode)) { if (aktuellPeriode.erOmsluttetAv(periodeEtterFødselNormaltReservertMor)) { return ja(); } - throw new IllegalArgumentException( - "Utvikler-feil: periode er ikke knekt riktig fom=" + aktuellPeriode.getFom() + " tom=" + aktuellPeriode.getTom()); + throw new IllegalArgumentException("Utvikler-feil: periode er ikke knekt riktig fom=" + + aktuellPeriode.getFom() + + " tom=" + + aktuellPeriode.getTom()); } return nei(); } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenOpprettetAvF\303\270dselshendelse.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenOpprettetAvF\303\270dselshendelse.java" index defd5ce2..f5131414 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenOpprettetAvF\303\270dselshendelse.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenOpprettetAvF\303\270dselshendelse.java" @@ -4,7 +4,6 @@ import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.PerioderUtenHelgUtil.helgBlirFredag; import java.time.LocalDate; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Konfigurasjon; @@ -35,16 +34,19 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { return nei(); } - //Ved fødsel etter termin vil det ligge en periode fellesperiode som første periode i uttaket. Sjekker dette for - //å ikke innvilge msp hvis det ikke har vært noe justering. Best effort + // Ved fødsel etter termin vil det ligge en periode fellesperiode som første periode i + // uttaket. Sjekker dette for + // å ikke innvilge msp hvis det ikke har vært noe justering. Best effort if (!forbruktFellesperiode(grunnlag)) { return nei(); } - var antallUkerEtterFødsel = Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, fødselsdato); + var antallUkerEtterFødsel = + Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, fødselsdato); var aktuellPeriode = grunnlag.getAktuellPeriode(); - //Noen caser vil vi innvilge msp selv om bruker bestemt har søkt om å ikke ha uttak i perioden. Burde være veldig få saker + // Noen caser vil vi innvilge msp selv om bruker bestemt har søkt om å ikke ha uttak i + // perioden. Burde være veldig få saker if (erPeriodeISisteDelAvFørsteUkeneForbeholdtMor(fødselsdato, antallUkerEtterFødsel, aktuellPeriode)) { return ja(); } @@ -56,9 +58,11 @@ private boolean forbruktFellesperiode(FastsettePeriodeGrunnlag grunnlag) { return saldoUtregning.getMaxDager(FELLESPERIODE) > saldoUtregning.saldo(FELLESPERIODE); } - private static boolean erPeriodeISisteDelAvFørsteUkeneForbeholdtMor(LocalDate fødselsdato, - Integer antallUkerEtterFødsel, - OppgittPeriode aktuellPeriode) { - return aktuellPeriode.getTom().isEqual(helgBlirFredag(fødselsdato.plusWeeks(antallUkerEtterFødsel).minusDays(1))); + private static boolean erPeriodeISisteDelAvFørsteUkeneForbeholdtMor( + LocalDate fødselsdato, Integer antallUkerEtterFødsel, OppgittPeriode aktuellPeriode) { + return aktuellPeriode + .getTom() + .isEqual(helgBlirFredag( + fødselsdato.plusWeeks(antallUkerEtterFødsel).minusDays(1))); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenSlutterF\303\270rFamiliehendelse.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenSlutterF\303\270rFamiliehendelse.java" index 21b23cfe..2f3be3b7 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenSlutterF\303\270rFamiliehendelse.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenSlutterF\303\270rFamiliehendelse.java" @@ -23,6 +23,4 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { } return nei(); } - - } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rFamiliehendelse.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rFamiliehendelse.java" index c4984b3c..4291142c 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rFamiliehendelse.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rFamiliehendelse.java" @@ -24,5 +24,4 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { } return nei(); } - } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rLovligUttakF\303\270rF\303\270dselTermin.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rLovligUttakF\303\270rF\303\270dselTermin.java" index 1220e638..20d75fe6 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rLovligUttakF\303\270rF\303\270dselTermin.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rLovligUttakF\303\270rF\303\270dselTermin.java" @@ -4,7 +4,6 @@ import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype.TERMIN; import java.time.LocalDate; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Konfigurasjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Parametertype; @@ -27,7 +26,8 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var hendelseDato = hendelseDato(grunnlag); var aktuellPeriode = grunnlag.getAktuellPeriode(); var startDatoUttak = aktuellPeriode.getFom(); - var ukerFørFamiliehendelseUttaksgrense = Konfigurasjon.STANDARD.getParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, hendelseDato); + var ukerFørFamiliehendelseUttaksgrense = + Konfigurasjon.STANDARD.getParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, hendelseDato); if (startDatoUttak.isBefore(hendelseDato.minusWeeks(ukerFørFamiliehendelseUttaksgrense))) { return ja(); } @@ -39,7 +39,8 @@ private LocalDate hendelseDato(FastsettePeriodeGrunnlag grunnlag) { if (søknadType != TERMIN && søknadType != FØDSEL) { throw new IllegalArgumentException("Forventer Søknadstype termin eller fødsel, fikk " + søknadType); } - return søknadType == TERMIN ? grunnlag.getTermindato() // søknadsfrist regnes fra termindato ved terminsøknad - : grunnlag.getFødselsdato(); + return søknadType == TERMIN + ? grunnlag.getTermindato() // søknadsfrist regnes fra termindato ved terminsøknad + : grunnlag.getFødselsdato(); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rUke7.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rUke7.java" index b2b43f92..342e92b8 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rUke7.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmPeriodenStarterF\303\270rUke7.java" @@ -18,8 +18,11 @@ public class SjekkOmPeriodenStarterFørUke7 extends LeafSpecification pp.overlapper(periode)) ? ja() : nei(); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmS\303\270kerErMor.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmS\303\270kerErMor.java" index 5afc53c2..240e1bc6 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmS\303\270kerErMor.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmS\303\270kerErMor.java" @@ -11,7 +11,6 @@ public class SjekkOmSøkerErMor extends LeafSpecification { +public class SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto + extends LeafSpecification { public static final String ID = "FP_VK 10.5"; public static final String BESKRIVELSE = "Har noen aktiviteter disponible stønadsdager på kvoten?"; @@ -35,5 +36,4 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { } return nei(); } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTomForAlleSineKontoer.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTomForAlleSineKontoer.java index e715d4bd..d28f530d 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTomForAlleSineKontoer.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTomForAlleSineKontoer.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; import no.nav.fpsak.nare.doc.RuleDocumentation; @@ -27,8 +26,11 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { for (var stønadskontotype : hentSøkerSineKontoer(grunnlag)) { for (var aktivitet : grunnlag.getAktuellPeriode().getAktiviteter()) { var nettosaldo = grunnlag.getSaldoUtregning() - .nettoSaldoJustertForMinsterett(stønadskontotype, aktivitet, - !sakMedMinsterett || grunnlag.getAktuellPeriode().kanTrekkeAvMinsterett()); + .nettoSaldoJustertForMinsterett( + stønadskontotype, + aktivitet, + !sakMedMinsterett + || grunnlag.getAktuellPeriode().kanTrekkeAvMinsterett()); if (nettosaldo.merEnn0()) { tomForAlleSineKontoer = false; } @@ -41,11 +43,15 @@ public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { final List søkerSineKonto; if (!søkerOgAnnenForelderSineKontoer(grunnlag).contains(Stønadskontotype.FORELDREPENGER)) { if (grunnlag.isSøkerMor()) { - søkerSineKonto = Arrays.asList(Stønadskontotype.MØDREKVOTE, Stønadskontotype.FELLESPERIODE, - Stønadskontotype.FORELDREPENGER); // 1 og 5 + søkerSineKonto = Arrays.asList( + Stønadskontotype.MØDREKVOTE, + Stønadskontotype.FELLESPERIODE, + Stønadskontotype.FORELDREPENGER); // 1 og 5 } else { - søkerSineKonto = Arrays.asList(Stønadskontotype.FEDREKVOTE, Stønadskontotype.FELLESPERIODE, - Stønadskontotype.FORELDREPENGER); // 3 og 7 + søkerSineKonto = Arrays.asList( + Stønadskontotype.FEDREKVOTE, + Stønadskontotype.FELLESPERIODE, + Stønadskontotype.FORELDREPENGER); // 3 og 7 } } else { // en har rett søkerSineKonto = List.of(Stønadskontotype.FORELDREPENGER); // 2 4 6 og 8 diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUf\303\270reUtenAktivitetskravHarDisponibleDager.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUf\303\270reUtenAktivitetskravHarDisponibleDager.java" index f450d6aa..0c914a2b 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUf\303\270reUtenAktivitetskravHarDisponibleDager.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUf\303\270reUtenAktivitetskravHarDisponibleDager.java" @@ -1,6 +1,5 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.fpsak.nare.doc.RuleDocumentation; import no.nav.fpsak.nare.evaluation.Evaluation; @@ -18,10 +17,13 @@ public class SjekkOmUføreUtenAktivitetskravHarDisponibleDager extends LeafSpeci @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { - if (grunnlag.isSakMedDagerUtenAktivitetskrav() && grunnlag.getAktuellPeriode().gjelderPeriodeMinsterett()) { + if (grunnlag.isSakMedDagerUtenAktivitetskrav() + && grunnlag.getAktuellPeriode().gjelderPeriodeMinsterett()) { for (var aktivitet : grunnlag.getAktuellPeriode().getAktiviteter()) { var saldoUtregning = grunnlag.getSaldoUtregning(); - if (saldoUtregning.saldoITrekkdager(grunnlag.getAktuellPeriode().getStønadskontotype(), aktivitet).merEnn0()) { + if (saldoUtregning + .saldoITrekkdager(grunnlag.getAktuellPeriode().getStønadskontotype(), aktivitet) + .merEnn0()) { var saldo = saldoUtregning.restSaldoDagerUtenAktivitetskrav(aktivitet); if (saldo.merEnn0()) { return ja(); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUtsettelsePgaSykdomSkade.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUtsettelsePgaSykdomSkade.java index 0d21da33..885f39ef 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUtsettelsePgaSykdomSkade.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUtsettelsePgaSykdomSkade.java @@ -15,7 +15,6 @@ public SjekkOmUtsettelsePgaSykdomSkade() { super(ID); } - @Override public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { var oppgittPeriode = grunnlag.getAktuellPeriode(); diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUttakSkjerEtterDeF\303\270rsteUkene.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUttakSkjerEtterDeF\303\270rsteUkene.java" index 70ddd86e..a996b18b 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUttakSkjerEtterDeF\303\270rsteUkene.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmUttakSkjerEtterDeF\303\270rsteUkene.java" @@ -20,9 +20,10 @@ public class SjekkOmUttakSkjerEtterDeFørsteUkene extends LeafSpecification Optional.ofNullable(fødsel)) + .or(() -> Optional.ofNullable(termin)) + .orElseThrow(() -> new IllegalStateException("Ingen familiehendelse")); } public LocalDate getTermin() { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/DokumentasjonVurdering.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/DokumentasjonVurdering.java index b2c2e8bc..862399ee 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/DokumentasjonVurdering.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/DokumentasjonVurdering.java @@ -18,7 +18,13 @@ public enum DokumentasjonVurdering { TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT; public boolean erGyldigGrunnForTidligOppstart() { - return Set.of(SYKDOM_ANNEN_FORELDER_GODKJENT, INNLEGGELSE_ANNEN_FORELDER_GODKJENT, MORS_AKTIVITET_GODKJENT, ER_ALENEOMSORG_GODKJENT, - ER_BARE_SØKER_RETT_GODKJENT, TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT).contains(this); + return Set.of( + SYKDOM_ANNEN_FORELDER_GODKJENT, + INNLEGGELSE_ANNEN_FORELDER_GODKJENT, + MORS_AKTIVITET_GODKJENT, + ER_ALENEOMSORG_GODKJENT, + ER_BARE_SØKER_RETT_GODKJENT, + TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT) + .contains(this); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/D\303\270dsdatoer.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/D\303\270dsdatoer.java" index 60c4ff20..714b2e4c 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/D\303\270dsdatoer.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/D\303\270dsdatoer.java" @@ -8,8 +8,7 @@ public final class Dødsdatoer { private LocalDate barnsDødsdato; private boolean alleBarnDøde; - private Dødsdatoer() { - } + private Dødsdatoer() {} public LocalDate getSøkersDødsdato() { return søkersDødsdato; @@ -45,5 +44,4 @@ public static class Builder { return kladd; } } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/EndringAvStilling.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/EndringAvStilling.java index 873cc2c1..6d7f47b3 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/EndringAvStilling.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/EndringAvStilling.java @@ -3,6 +3,4 @@ import java.math.BigDecimal; import java.time.LocalDate; - -public record EndringAvStilling(LocalDate dato, BigDecimal summertStillingsprosent) { -} +public record EndringAvStilling(LocalDate dato, BigDecimal summertStillingsprosent) {} diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriode.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriode.java index 130c45fb..bfb1dfb6 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriode.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriode.java @@ -22,8 +22,7 @@ public class FastsattUttakPeriode { private FastsattUttakPeriode.ResultatÅrsak resultatÅrsak; private boolean utsettelse; - private FastsattUttakPeriode() { - } + private FastsattUttakPeriode() {} private FastsattUttakPeriode(FastsattUttakPeriode periode) { this.perioderesultattype = periode.perioderesultattype; @@ -70,19 +69,23 @@ public boolean isForbrukMinsterett() { return trekkerMinsterett(perioderesultattype, resultatÅrsak, utsettelse); } - public static boolean trekkerMinsterett(Perioderesultattype perioderesultattype, - FastsattUttakPeriode.ResultatÅrsak resultatÅrsak, - boolean utsettelse) { - return (Perioderesultattype.INNVILGET.equals(perioderesultattype) && !erPeriodeMedGodkjentAktivitet(resultatÅrsak)) || ( - Perioderesultattype.AVSLÅTT.equals(perioderesultattype) && IKKE_OPPFYLT_SØKNADSFRIST.equals(resultatÅrsak)) || ( - Perioderesultattype.MANUELL_BEHANDLING.equals(perioderesultattype) && !utsettelse); + public static boolean trekkerMinsterett( + Perioderesultattype perioderesultattype, + FastsattUttakPeriode.ResultatÅrsak resultatÅrsak, + boolean utsettelse) { + return (Perioderesultattype.INNVILGET.equals(perioderesultattype) + && !erPeriodeMedGodkjentAktivitet(resultatÅrsak)) + || (Perioderesultattype.AVSLÅTT.equals(perioderesultattype) + && IKKE_OPPFYLT_SØKNADSFRIST.equals(resultatÅrsak)) + || (Perioderesultattype.MANUELL_BEHANDLING.equals(perioderesultattype) && !utsettelse); } private static boolean erPeriodeMedGodkjentAktivitet(FastsattUttakPeriode.ResultatÅrsak resultatÅrsak) { - // Inntil videre: Perioder med godkjent aktivitet iht 14-14 første ledd skal ikke gå til fratrekk på rett etter tredje ledd + // Inntil videre: Perioder med godkjent aktivitet iht 14-14 første ledd skal ikke gå til + // fratrekk på rett etter tredje ledd // Når logikken skal utvides til andre tilfelle - vær obs på flerbarnsdager - return INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT.equals(resultatÅrsak) || INNVILGET_GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT.equals( - resultatÅrsak); + return INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT.equals(resultatÅrsak) + || INNVILGET_GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT.equals(resultatÅrsak); } public Optional getMottattDato() { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriodeAktivitet.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriodeAktivitet.java index cddd4a14..a6e27988 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriodeAktivitet.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriodeAktivitet.java @@ -7,7 +7,8 @@ public class FastsattUttakPeriodeAktivitet { private final Stønadskontotype stønadskontotype; private final AktivitetIdentifikator aktivitetIdentifikator; - public FastsattUttakPeriodeAktivitet(Trekkdager trekkdager, Stønadskontotype stønadskontotype, AktivitetIdentifikator aktivitetIdentifikator) { + public FastsattUttakPeriodeAktivitet( + Trekkdager trekkdager, Stønadskontotype stønadskontotype, AktivitetIdentifikator aktivitetIdentifikator) { this.trekkdager = trekkdager; this.stønadskontotype = stønadskontotype; this.aktivitetIdentifikator = aktivitetIdentifikator; diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Inngangsvilk\303\245r.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Inngangsvilk\303\245r.java" index 0c9812b3..2ec9f373 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Inngangsvilk\303\245r.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Inngangsvilk\303\245r.java" @@ -7,9 +7,7 @@ public final class Inngangsvilkår { private boolean fødselOppfylt; private boolean opptjeningOppfylt; - private Inngangsvilkår() { - - } + private Inngangsvilkår() {} public boolean erAdopsjonOppfylt() { return adopsjonOppfylt; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Konto.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Konto.java index b6c2b92e..681101a6 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Konto.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Konto.java @@ -5,8 +5,7 @@ public final class Konto { private Stønadskontotype type; private int trekkdager; - private Konto() { - } + private Konto() {} public Stønadskontotype getType() { return type; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Kontoer.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Kontoer.java index 37353feb..a742c9d2 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Kontoer.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Kontoer.java @@ -1,6 +1,5 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag; - import java.util.EnumMap; import java.util.List; import java.util.Map; @@ -11,9 +10,7 @@ public final class Kontoer { private final Map stønadskonti = new EnumMap<>(Stønadskontotype.class); private final Map spesialkonti = new EnumMap<>(Spesialkontotype.class); - private Kontoer() { - - } + private Kontoer() {} public Set getStønadskontotyper() { return stønadskonti.keySet(); @@ -58,7 +55,9 @@ public Builder konto(Konto.Builder konto) { } public Builder kontoList(List kontoList) { - kontoList.stream().map(Konto.Builder::build).forEach(k -> kladd.stønadskonti.put(k.getType(), k.getTrekkdager())); + kontoList.stream() + .map(Konto.Builder::build) + .forEach(k -> kladd.stønadskonti.put(k.getType(), k.getTrekkdager())); return this; } @@ -96,7 +95,8 @@ public Builder flerbarnsdager(int flerbarnsdager) { public Kontoer build() { if (this.minsterettDager > 0 && this.utenAktivitetskravDager > 0) { - throw new IllegalArgumentException("Utviklerfeil: Sak med både minsterett og dager uten aktivitetskrav"); + throw new IllegalArgumentException( + "Utviklerfeil: Sak med både minsterett og dager uten aktivitetskrav"); } return kladd; } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/LukketPeriode.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/LukketPeriode.java index c1d61736..71b0b6ce 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/LukketPeriode.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/LukketPeriode.java @@ -2,12 +2,9 @@ import java.time.LocalDate; import java.util.Objects; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; -/** - * En periode som har definert både start- og slutt-tidpunkt - */ +/** En periode som har definert både start- og slutt-tidpunkt */ public class LukketPeriode extends Periode { public LukketPeriode(LocalDate fom, LocalDate tom) { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Medlemskap.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Medlemskap.java index 1ef8b647..07336da0 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Medlemskap.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Medlemskap.java @@ -6,9 +6,7 @@ public class Medlemskap { private LocalDate opphørsdato; - private Medlemskap() { - - } + private Medlemskap() {} public LocalDate getOpphørsdato() { return opphørsdato; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/MorsAktivitet.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/MorsAktivitet.java index 2fd6ba8b..8fda6163 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/MorsAktivitet.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/MorsAktivitet.java @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag; public enum MorsAktivitet { - ARBEID, SYK, INNLAGT, diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/OppgittPeriode.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/OppgittPeriode.java index 00de2843..ca697d21 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/OppgittPeriode.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/OppgittPeriode.java @@ -1,3 +1,4 @@ +/* (C)2024 */ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag; import java.math.BigDecimal; @@ -23,21 +24,22 @@ public final class OppgittPeriode extends LukketPeriode { private final DokumentasjonVurdering dokumentasjonVurdering; private Set aktiviteter = Set.of(); - private OppgittPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - boolean manglendeSøktPeriode, - BigDecimal arbeidsprosent, - Set gradertAktiviteter, - OverføringÅrsak overføringÅrsak, - SamtidigUttaksprosent samtidigUttaksprosent, - boolean flerbarnsdager, - UtsettelseÅrsak utsettelseÅrsak, - OppholdÅrsak oppholdÅrsak, - LocalDate senestMottattDato, - LocalDate tidligstMottattDato, - MorsAktivitet morsAktivitet, - DokumentasjonVurdering dokumentasjonVurdering) { + private OppgittPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + boolean manglendeSøktPeriode, + BigDecimal arbeidsprosent, + Set gradertAktiviteter, + OverføringÅrsak overføringÅrsak, + SamtidigUttaksprosent samtidigUttaksprosent, + boolean flerbarnsdager, + UtsettelseÅrsak utsettelseÅrsak, + OppholdÅrsak oppholdÅrsak, + LocalDate senestMottattDato, + LocalDate tidligstMottattDato, + MorsAktivitet morsAktivitet, + DokumentasjonVurdering dokumentasjonVurdering) { super(fom, tom); this.arbeidsprosent = arbeidsprosent; this.gradertAktiviteter = gradertAktiviteter; @@ -55,15 +57,28 @@ private OppgittPeriode(Stønadskontotype stønadskontotype, } public OppgittPeriode kopiMedNyPeriode(LocalDate nyFom, LocalDate nyTom) { - var kopi = new OppgittPeriode(stønadskontotype, nyFom, nyTom, manglendeSøktPeriode, arbeidsprosent, gradertAktiviteter, overføringÅrsak, - samtidigUttaksprosent, flerbarnsdager, utsettelseÅrsak, oppholdÅrsak, senestMottattDato, tidligstMottattDato, morsAktivitet, - dokumentasjonVurdering); + var kopi = new OppgittPeriode( + stønadskontotype, + nyFom, + nyTom, + manglendeSøktPeriode, + arbeidsprosent, + gradertAktiviteter, + overføringÅrsak, + samtidigUttaksprosent, + flerbarnsdager, + utsettelseÅrsak, + oppholdÅrsak, + senestMottattDato, + tidligstMottattDato, + morsAktivitet, + dokumentasjonVurdering); kopi.aktiviteter = aktiviteter; return kopi; } public boolean erSøktGradering() { - return arbeidsprosent != null && getArbeidsprosent().compareTo(BigDecimal.ZERO) > 0; + return (arbeidsprosent != null && getArbeidsprosent().compareTo(BigDecimal.ZERO) > 0); } public Optional getTidligstMottattDato() { @@ -159,7 +174,7 @@ public MorsAktivitet getMorsAktivitet() { } public boolean kanTrekkeAvMinsterett() { - return !manglendeSøktPeriode && oppholdÅrsak == null && utsettelseÅrsak == null; + return (!manglendeSøktPeriode && oppholdÅrsak == null && utsettelseÅrsak == null); } public boolean gjelderPeriodeMinsterett() { @@ -171,66 +186,142 @@ public DokumentasjonVurdering getDokumentasjonVurdering() { } public static OppgittPeriode forManglendeSøkt(Stønadskontotype type, LocalDate fom, LocalDate tom) { - return new OppgittPeriode(type, fom, tom, true, null, Set.of(), null, null, false, null, null, null, null, null, null); - } - - public static OppgittPeriode forUtsettelse(LocalDate fom, - LocalDate tom, - UtsettelseÅrsak utsettelseÅrsak, - LocalDate senestMottattDato, - LocalDate tidligstMottattDato, - MorsAktivitet morsAktivitet, - DokumentasjonVurdering dokumentasjonVurdering) { - return new OppgittPeriode(null, fom, tom, false, null, Set.of(), null, null, false, utsettelseÅrsak, null, senestMottattDato, - tidligstMottattDato, morsAktivitet, dokumentasjonVurdering); - } - - public static OppgittPeriode forOverføring(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - OverføringÅrsak overføringÅrsak, - LocalDate senestMottattDato, - LocalDate tidligstMottattDato, - DokumentasjonVurdering dokumentasjonVurdering) { - return new OppgittPeriode(stønadskontotype, fom, tom, false, null, Set.of(), overføringÅrsak, null, false, null, null, senestMottattDato, - tidligstMottattDato, null, dokumentasjonVurdering); - } - - public static OppgittPeriode forOpphold(LocalDate fom, - LocalDate tom, - OppholdÅrsak oppholdÅrsak, - LocalDate senestMottattDato, - LocalDate tidligstMottattDato) { - return new OppgittPeriode(OppholdÅrsak.map(oppholdÅrsak), fom, tom, false, null, Set.of(), null, null, false, null, oppholdÅrsak, - senestMottattDato, tidligstMottattDato, null, null); - } - - public static OppgittPeriode forGradering(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - BigDecimal arbeidsprosent, - SamtidigUttaksprosent samtidigUttaksprosent, - boolean flerbarnsdager, - Set gradertAktiviteter, - LocalDate senestMottattDato, - LocalDate tidligstMottattDato, - MorsAktivitet morsAktivitet, - DokumentasjonVurdering dokumentasjonVurdering) { - return new OppgittPeriode(stønadskontotype, fom, tom, false, arbeidsprosent, gradertAktiviteter, null, samtidigUttaksprosent, flerbarnsdager, - null, null, senestMottattDato, tidligstMottattDato, morsAktivitet, dokumentasjonVurdering); - } - - public static OppgittPeriode forVanligPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - SamtidigUttaksprosent samtidigUttaksprosent, - boolean flerbarnsdager, - LocalDate senestMottattDato, - LocalDate tidligstMottattDato, - MorsAktivitet morsAktivitet, - DokumentasjonVurdering dokumentasjonVurdering) { - return new OppgittPeriode(stønadskontotype, fom, tom, false, null, Set.of(), null, samtidigUttaksprosent, flerbarnsdager, null, null, - senestMottattDato, tidligstMottattDato, morsAktivitet, dokumentasjonVurdering); + return new OppgittPeriode( + type, fom, tom, true, null, Set.of(), null, null, false, null, null, null, null, null, null); + } + + public static OppgittPeriode forUtsettelse( + LocalDate fom, + LocalDate tom, + UtsettelseÅrsak utsettelseÅrsak, + LocalDate senestMottattDato, + LocalDate tidligstMottattDato, + MorsAktivitet morsAktivitet, + DokumentasjonVurdering dokumentasjonVurdering) { + return new OppgittPeriode( + null, + fom, + tom, + false, + null, + Set.of(), + null, + null, + false, + utsettelseÅrsak, + null, + senestMottattDato, + tidligstMottattDato, + morsAktivitet, + dokumentasjonVurdering); + } + + public static OppgittPeriode forOverføring( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + OverføringÅrsak overføringÅrsak, + LocalDate senestMottattDato, + LocalDate tidligstMottattDato, + DokumentasjonVurdering dokumentasjonVurdering) { + return new OppgittPeriode( + stønadskontotype, + fom, + tom, + false, + null, + Set.of(), + overføringÅrsak, + null, + false, + null, + null, + senestMottattDato, + tidligstMottattDato, + null, + dokumentasjonVurdering); + } + + public static OppgittPeriode forOpphold( + LocalDate fom, + LocalDate tom, + OppholdÅrsak oppholdÅrsak, + LocalDate senestMottattDato, + LocalDate tidligstMottattDato) { + return new OppgittPeriode( + OppholdÅrsak.map(oppholdÅrsak), + fom, + tom, + false, + null, + Set.of(), + null, + null, + false, + null, + oppholdÅrsak, + senestMottattDato, + tidligstMottattDato, + null, + null); + } + + public static OppgittPeriode forGradering( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + BigDecimal arbeidsprosent, + SamtidigUttaksprosent samtidigUttaksprosent, + boolean flerbarnsdager, + Set gradertAktiviteter, + LocalDate senestMottattDato, + LocalDate tidligstMottattDato, + MorsAktivitet morsAktivitet, + DokumentasjonVurdering dokumentasjonVurdering) { + return new OppgittPeriode( + stønadskontotype, + fom, + tom, + false, + arbeidsprosent, + gradertAktiviteter, + null, + samtidigUttaksprosent, + flerbarnsdager, + null, + null, + senestMottattDato, + tidligstMottattDato, + morsAktivitet, + dokumentasjonVurdering); + } + + public static OppgittPeriode forVanligPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + SamtidigUttaksprosent samtidigUttaksprosent, + boolean flerbarnsdager, + LocalDate senestMottattDato, + LocalDate tidligstMottattDato, + MorsAktivitet morsAktivitet, + DokumentasjonVurdering dokumentasjonVurdering) { + return new OppgittPeriode( + stønadskontotype, + fom, + tom, + false, + null, + Set.of(), + null, + samtidigUttaksprosent, + flerbarnsdager, + null, + null, + senestMottattDato, + tidligstMottattDato, + morsAktivitet, + dokumentasjonVurdering); } @Override @@ -242,25 +333,70 @@ public boolean equals(Object o) { return false; } var that = (OppgittPeriode) o; - return flerbarnsdager == that.flerbarnsdager && manglendeSøktPeriode == that.manglendeSøktPeriode && stønadskontotype == that.stønadskontotype - && Objects.equals(arbeidsprosent, that.arbeidsprosent) && overføringÅrsak == that.overføringÅrsak && Objects.equals(samtidigUttaksprosent, - that.samtidigUttaksprosent) && utsettelseÅrsak == that.utsettelseÅrsak && oppholdÅrsak == that.oppholdÅrsak && Objects.equals( - senestMottattDato, that.senestMottattDato) && Objects.equals(tidligstMottattDato, that.tidligstMottattDato) - && morsAktivitet == that.morsAktivitet && dokumentasjonVurdering == that.dokumentasjonVurdering; + return (flerbarnsdager == that.flerbarnsdager + && manglendeSøktPeriode == that.manglendeSøktPeriode + && stønadskontotype == that.stønadskontotype + && Objects.equals(arbeidsprosent, that.arbeidsprosent) + && overføringÅrsak == that.overføringÅrsak + && Objects.equals(samtidigUttaksprosent, that.samtidigUttaksprosent) + && utsettelseÅrsak == that.utsettelseÅrsak + && oppholdÅrsak == that.oppholdÅrsak + && Objects.equals(senestMottattDato, that.senestMottattDato) + && Objects.equals(tidligstMottattDato, that.tidligstMottattDato) + && morsAktivitet == that.morsAktivitet + && dokumentasjonVurdering == that.dokumentasjonVurdering); } @Override public int hashCode() { - return Objects.hash(stønadskontotype, arbeidsprosent, overføringÅrsak, flerbarnsdager, samtidigUttaksprosent, utsettelseÅrsak, oppholdÅrsak, - manglendeSøktPeriode, senestMottattDato, tidligstMottattDato, morsAktivitet, dokumentasjonVurdering); + return Objects.hash( + stønadskontotype, + arbeidsprosent, + overføringÅrsak, + flerbarnsdager, + samtidigUttaksprosent, + utsettelseÅrsak, + oppholdÅrsak, + manglendeSøktPeriode, + senestMottattDato, + tidligstMottattDato, + morsAktivitet, + dokumentasjonVurdering); } @Override public String toString() { - return "OppgittPeriode{" + "stønadskontotype=" + stønadskontotype + ", fom=" + getFom() + ", tom=" + getTom() + ", arbeidsprosent=" - + arbeidsprosent + ", gradertAktiviteter=" + gradertAktiviteter + ", overføringÅrsak=" + overføringÅrsak + ", manglendeSøktPeriode=" - + manglendeSøktPeriode + ", flerbarnsdager=" + flerbarnsdager + ", samtidigUttak=" + samtidigUttaksprosent + ", utsettelseÅrsak=" - + utsettelseÅrsak + ", oppholdÅrsak=" + oppholdÅrsak + ", senestMottattDato=" + senestMottattDato + ", tidligstMottattDato=" - + tidligstMottattDato + ", aktiviteter=" + aktiviteter + ", dokumentasjonVurdering=" + dokumentasjonVurdering + '}'; + return ("OppgittPeriode{" + + "stønadskontotype=" + + stønadskontotype + + ", fom=" + + getFom() + + ", tom=" + + getTom() + + ", arbeidsprosent=" + + arbeidsprosent + + ", gradertAktiviteter=" + + gradertAktiviteter + + ", overføringÅrsak=" + + overføringÅrsak + + ", manglendeSøktPeriode=" + + manglendeSøktPeriode + + ", flerbarnsdager=" + + flerbarnsdager + + ", samtidigUttak=" + + samtidigUttaksprosent + + ", utsettelseÅrsak=" + + utsettelseÅrsak + + ", oppholdÅrsak=" + + oppholdÅrsak + + ", senestMottattDato=" + + senestMottattDato + + ", tidligstMottattDato=" + + tidligstMottattDato + + ", aktiviteter=" + + aktiviteter + + ", dokumentasjonVurdering=" + + dokumentasjonVurdering + + '}'); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Opphold\303\205rsak.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Opphold\303\205rsak.java" index 2a027216..aa78c84b 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Opphold\303\205rsak.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Opphold\303\205rsak.java" @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag; public enum OppholdÅrsak { - FELLESPERIODE_ANNEN_FORELDER, MØDREKVOTE_ANNEN_FORELDER, FEDREKVOTE_ANNEN_FORELDER, diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Opptjening.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Opptjening.java index 1f394ab4..36a18759 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Opptjening.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Opptjening.java @@ -7,14 +7,12 @@ public final class Opptjening { private LocalDate skjæringstidspunkt; - private Opptjening() { - } + private Opptjening() {} public LocalDate getSkjæringstidspunkt() { return skjæringstidspunkt; } - public static class Builder { private final Opptjening kladd = new Opptjening(); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Periode.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Periode.java index 494387f6..8ee55555 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Periode.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Periode.java @@ -32,7 +32,7 @@ public boolean overlapper(Periode periode) { return overlapper(periode.getFom()) || overlapper(periode.getTom()) || erOmsluttetAv(periode); } - //Også true hvis perioden er lik + // Også true hvis perioden er lik public boolean erOmsluttetAv(Periode periode) { return !periode.getFom().isAfter(fom) && !periode.getTom().isBefore(tom); } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/RegelGrunnlag.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/RegelGrunnlag.java index 69365ed4..f18a10ff 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/RegelGrunnlag.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/RegelGrunnlag.java @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.ytelser.Ytelser; public class RegelGrunnlag { @@ -20,9 +19,7 @@ public class RegelGrunnlag { private Kontoer kontoer; private Ytelser ytelser; - private RegelGrunnlag() { - - } + private RegelGrunnlag() {} public Søknad getSøknad() { return søknad; @@ -160,7 +157,7 @@ public RegelGrunnlag build() { if (kladd.ytelser == null) { kladd.ytelser = new Ytelser(null); } - //Hindre gjenbruk + // Hindre gjenbruk var regelGrunnlag = this.kladd; kladd = null; return regelGrunnlag; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/RettOgOmsorg.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/RettOgOmsorg.java index fff4986f..a70171ee 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/RettOgOmsorg.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/RettOgOmsorg.java @@ -12,8 +12,7 @@ public final class RettOgOmsorg { private boolean morOppgittUføretrygd; private boolean harOmsorg = true; - private RettOgOmsorg() { - } + private RettOgOmsorg() {} public boolean getFarHarRett() { return farHarRett || farHarRettEØS; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Revurdering.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Revurdering.java index 08bf56aa..6e25a27a 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Revurdering.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Revurdering.java @@ -7,8 +7,7 @@ public final class Revurdering { private LocalDate endringsdato; private Vedtak gjeldendeVedtak; - private Revurdering() { - } + private Revurdering() {} public LocalDate getEndringsdato() { return endringsdato; diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/S\303\270knad.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/S\303\270knad.java" index ad84ce55..a3ab7946 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/S\303\270knad.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/S\303\270knad.java" @@ -11,11 +11,12 @@ public final class Søknad { private Søknadstype type = Søknadstype.FØDSEL; private LocalDateTime mottattTidspunkt; - private Søknad() { - } + private Søknad() {} public List getOppgittePerioder() { - return oppgittePerioder.stream().sorted(Comparator.comparing(OppgittPeriode::getFom)).toList(); + return oppgittePerioder.stream() + .sorted(Comparator.comparing(OppgittPeriode::getFom)) + .toList(); } public Søknadstype getType() { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/UttakPeriode.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/UttakPeriode.java index 52fc5b1a..3442851e 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/UttakPeriode.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/UttakPeriode.java @@ -3,7 +3,6 @@ import java.math.BigDecimal; import java.util.Objects; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.GraderingIkkeInnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; @@ -25,15 +24,16 @@ public final class UttakPeriode extends LukketPeriode { private final OverføringÅrsak overføringÅrsak; private final MorsAktivitet morsAktivitet; - public UttakPeriode(OppgittPeriode oppgittPeriode, - // NOSONAR - Perioderesultattype perioderesultattype, - Manuellbehandlingårsak manuellbehandlingårsak, - PeriodeResultatÅrsak periodeResultatÅrsak, - GraderingIkkeInnvilgetÅrsak graderingIkkeInnvilgetÅrsak, - Set aktiviteter, - SamtidigUttaksprosent samtidigUttaksprosent, - Stønadskontotype stønadskontotype) { + public UttakPeriode( + OppgittPeriode oppgittPeriode, + // NOSONAR + Perioderesultattype perioderesultattype, + Manuellbehandlingårsak manuellbehandlingårsak, + PeriodeResultatÅrsak periodeResultatÅrsak, + GraderingIkkeInnvilgetÅrsak graderingIkkeInnvilgetÅrsak, + Set aktiviteter, + SamtidigUttaksprosent samtidigUttaksprosent, + Stønadskontotype stønadskontotype) { super(oppgittPeriode.getFom(), oppgittPeriode.getTom()); this.perioderesultattype = perioderesultattype; this.manuellbehandlingårsak = manuellbehandlingårsak; @@ -52,7 +52,8 @@ public UttakPeriode(OppgittPeriode oppgittPeriode, } private void validerKontoVedTrekkdager() { - if (stønadskontotype == null && getAktiviteter().stream().anyMatch(a -> a.getTrekkdager().compareTo(Trekkdager.ZERO) > 0)) { + if (stønadskontotype == null + && getAktiviteter().stream().anyMatch(a -> a.getTrekkdager().compareTo(Trekkdager.ZERO) > 0)) { throw new IllegalStateException("Kan ikke trekke dager ved ukjent stønadskonto"); } } @@ -97,7 +98,10 @@ public Trekkdager getTrekkdager(AktivitetIdentifikator aktivitetIdentifikator) { } private UttakPeriodeAktivitet finnAktivitet(AktivitetIdentifikator aktivitetIdentifikator) { - return getAktiviteter().stream().filter(a -> a.getIdentifikator().equals(aktivitetIdentifikator)).findFirst().orElseThrow(); + return getAktiviteter().stream() + .filter(a -> a.getIdentifikator().equals(aktivitetIdentifikator)) + .findFirst() + .orElseThrow(); } public boolean isFlerbarnsdager() { @@ -145,25 +149,62 @@ public boolean equals(Object o) { return false; } var that = (UttakPeriode) o; - return flerbarnsdager == that.flerbarnsdager && perioderesultattype == that.perioderesultattype - && manuellbehandlingårsak == that.manuellbehandlingårsak && Objects.equals(periodeResultatÅrsak, that.periodeResultatÅrsak) - && graderingIkkeInnvilgetÅrsak == that.graderingIkkeInnvilgetÅrsak && Objects.equals(aktiviteter, that.aktiviteter) && Objects.equals( - samtidigUttaksprosent, that.samtidigUttaksprosent) && oppholdÅrsak == that.oppholdÅrsak && stønadskontotype == that.stønadskontotype - && Objects.equals(arbeidsprosent, that.arbeidsprosent) && Objects.equals(morsAktivitet, that.morsAktivitet); + return flerbarnsdager == that.flerbarnsdager + && perioderesultattype == that.perioderesultattype + && manuellbehandlingårsak == that.manuellbehandlingårsak + && Objects.equals(periodeResultatÅrsak, that.periodeResultatÅrsak) + && graderingIkkeInnvilgetÅrsak == that.graderingIkkeInnvilgetÅrsak + && Objects.equals(aktiviteter, that.aktiviteter) + && Objects.equals(samtidigUttaksprosent, that.samtidigUttaksprosent) + && oppholdÅrsak == that.oppholdÅrsak + && stønadskontotype == that.stønadskontotype + && Objects.equals(arbeidsprosent, that.arbeidsprosent) + && Objects.equals(morsAktivitet, that.morsAktivitet); } @Override public int hashCode() { - return Objects.hash(perioderesultattype, manuellbehandlingårsak, periodeResultatÅrsak, graderingIkkeInnvilgetÅrsak, aktiviteter, - flerbarnsdager, samtidigUttaksprosent, oppholdÅrsak, stønadskontotype, arbeidsprosent, morsAktivitet); + return Objects.hash( + perioderesultattype, + manuellbehandlingårsak, + periodeResultatÅrsak, + graderingIkkeInnvilgetÅrsak, + aktiviteter, + flerbarnsdager, + samtidigUttaksprosent, + oppholdÅrsak, + stønadskontotype, + arbeidsprosent, + morsAktivitet); } @Override public String toString() { - return "UttakPeriode{" + "perioderesultattype=" + perioderesultattype + ", fom=" + getFom() + ", tom=" + getTom() - + ", manuellbehandlingårsak=" + manuellbehandlingårsak + ", periodeResultatÅrsak=" + periodeResultatÅrsak - + ", graderingIkkeInnvilgetÅrsak=" + graderingIkkeInnvilgetÅrsak + ", aktiviteter=" + aktiviteter + ", flerbarnsdager=" + flerbarnsdager - + ", samtidigUttak=" + samtidigUttaksprosent + ", oppholdÅrsak=" + oppholdÅrsak + ", stønadskontotype=" + stønadskontotype - + ", arbeidsprosent=" + arbeidsprosent + '}'; + return "UttakPeriode{" + + "perioderesultattype=" + + perioderesultattype + + ", fom=" + + getFom() + + ", tom=" + + getTom() + + ", manuellbehandlingårsak=" + + manuellbehandlingårsak + + ", periodeResultatÅrsak=" + + periodeResultatÅrsak + + ", graderingIkkeInnvilgetÅrsak=" + + graderingIkkeInnvilgetÅrsak + + ", aktiviteter=" + + aktiviteter + + ", flerbarnsdager=" + + flerbarnsdager + + ", samtidigUttak=" + + samtidigUttaksprosent + + ", oppholdÅrsak=" + + oppholdÅrsak + + ", stønadskontotype=" + + stønadskontotype + + ", arbeidsprosent=" + + arbeidsprosent + + '}'; } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/UttakPeriodeAktivitet.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/UttakPeriodeAktivitet.java index 482dd09c..d0a4c4bf 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/UttakPeriodeAktivitet.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/UttakPeriodeAktivitet.java @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag; import java.util.Objects; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; public class UttakPeriodeAktivitet { @@ -11,10 +10,11 @@ public class UttakPeriodeAktivitet { private final Trekkdager trekkdager; private final boolean søktGradering; - public UttakPeriodeAktivitet(AktivitetIdentifikator identifikator, - Utbetalingsgrad utbetalingsgrad, - Trekkdager trekkdager, - boolean søktGradering) { + public UttakPeriodeAktivitet( + AktivitetIdentifikator identifikator, + Utbetalingsgrad utbetalingsgrad, + Trekkdager trekkdager, + boolean søktGradering) { this.identifikator = identifikator; this.utbetalingsgrad = utbetalingsgrad; this.trekkdager = trekkdager; @@ -46,8 +46,10 @@ public boolean equals(Object o) { return false; } var that = (UttakPeriodeAktivitet) o; - return søktGradering == that.søktGradering && Objects.equals(identifikator, that.identifikator) && Objects.equals(utbetalingsgrad, - that.utbetalingsgrad) && Objects.equals(trekkdager, that.trekkdager); + return søktGradering == that.søktGradering + && Objects.equals(identifikator, that.identifikator) + && Objects.equals(utbetalingsgrad, that.utbetalingsgrad) + && Objects.equals(trekkdager, that.trekkdager); } @Override @@ -57,7 +59,15 @@ public int hashCode() { @Override public String toString() { - return "UttakPeriodeAktivitet{" + "identifikator=" + identifikator + ", utbetalingsgrad=" + utbetalingsgrad + ", trekkdager=" + trekkdager - + ", gradering=" + søktGradering + '}'; + return "UttakPeriodeAktivitet{" + + "identifikator=" + + identifikator + + ", utbetalingsgrad=" + + utbetalingsgrad + + ", trekkdager=" + + trekkdager + + ", gradering=" + + søktGradering + + '}'; } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Vedtak.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Vedtak.java index e0fe6693..59462f34 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Vedtak.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/Vedtak.java @@ -7,8 +7,7 @@ public final class Vedtak { private final List perioder = new ArrayList<>(); - private Vedtak() { - } + private Vedtak() {} public List getPerioder() { return perioder; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/ytelser/PleiepengerPeriode.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/ytelser/PleiepengerPeriode.java index 3eed4ebb..c7716098 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/ytelser/PleiepengerPeriode.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/ytelser/PleiepengerPeriode.java @@ -2,7 +2,6 @@ import java.time.LocalDate; import java.util.Objects; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; public class PleiepengerPeriode extends LukketPeriode { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/BevegeligeHelligdagerUtil.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/BevegeligeHelligdagerUtil.java index c0383484..e5e58f15 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/BevegeligeHelligdagerUtil.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/BevegeligeHelligdagerUtil.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; public class BevegeligeHelligdagerUtil { @@ -13,7 +12,7 @@ public class BevegeligeHelligdagerUtil { private static final Set WEEKEND = Set.of(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY); private BevegeligeHelligdagerUtil() { - //Privat constructor for å hindre instanser. + // Privat constructor for å hindre instanser. } public static List finnBevegeligeHelligdagerUtenHelg(LukketPeriode uttaksperiode) { @@ -65,9 +64,11 @@ public static List finnBevegeligeHelligdagerUtenHelg(LukketPeriode ut return fjernHelg(bevegeligeHelligdager); } - private static List fjernHelg(List bevegeligeHelligdager) { - return bevegeligeHelligdager.stream().filter(hd -> !WEEKEND.contains(hd.getDayOfWeek())).sorted().toList(); + return bevegeligeHelligdager.stream() + .filter(hd -> !WEEKEND.contains(hd.getDayOfWeek())) + .sorted() + .toList(); } private static LocalDate utledPåskedag(int år) { @@ -91,7 +92,9 @@ private static List fjernHelg(List bevegeligeHelligdager) private static List utledÅreneDetSkalFinnesHelligdagerFor(LukketPeriode uttaksperiode) { List årene = new ArrayList<>(); - for (var i = uttaksperiode.getFom().getYear(); i <= uttaksperiode.getTom().getYear(); i++) { + for (var i = uttaksperiode.getFom().getYear(); + i <= uttaksperiode.getTom().getYear(); + i++) { årene.add(i); } return årene; diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/FarUttakRundtF\303\270dsel.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/FarUttakRundtF\303\270dsel.java" index 77dea053..1bfb3547 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/FarUttakRundtF\303\270dsel.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/FarUttakRundtF\303\270dsel.java" @@ -4,7 +4,6 @@ import java.time.Period; import java.util.Objects; import java.util.Optional; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Kontoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; @@ -16,7 +15,7 @@ public class FarUttakRundtFødsel { private FarUttakRundtFødsel() { - //hindrer instansiering + // hindrer instansiering } public static boolean erKontoRelevant(Stønadskontotype konto) { @@ -28,39 +27,47 @@ public static boolean erPeriodeRelevant(LukketPeriode farRundtFødselIntervall, } public static Optional utledFarsPeriodeRundtFødsel(RegelGrunnlag grunnlag) { - return utledFarsPeriodeRundtFødsel(grunnlag.getDatoer(), grunnlag.getKontoer(), grunnlag.getSøknad().getType()); + return utledFarsPeriodeRundtFødsel( + grunnlag.getDatoer(), + grunnlag.getKontoer(), + grunnlag.getSøknad().getType()); } - public static Optional utledFarsPeriodeRundtFødsel(Datoer datoer, Kontoer kontoer, Søknadstype søknadstype) { - if (!kontoer.harSpesialkonto(Spesialkontotype.FAR_RUNDT_FØDSEL) || kontoer.getSpesialkontoTrekkdager(Spesialkontotype.FAR_RUNDT_FØDSEL) == 0 - || !søknadstype.gjelderTerminFødsel()) { + public static Optional utledFarsPeriodeRundtFødsel( + Datoer datoer, Kontoer kontoer, Søknadstype søknadstype) { + if (!kontoer.harSpesialkonto(Spesialkontotype.FAR_RUNDT_FØDSEL) + || kontoer.getSpesialkontoTrekkdager(Spesialkontotype.FAR_RUNDT_FØDSEL) == 0 + || !søknadstype.gjelderTerminFødsel()) { return Optional.empty(); } - return utledFarsPeriodeRundtFødsel(false, søknadstype.gjelderTerminFødsel(), datoer.getFamiliehendelse(), datoer.getTermin()); - + return utledFarsPeriodeRundtFødsel( + false, søknadstype.gjelderTerminFødsel(), datoer.getFamiliehendelse(), datoer.getTermin()); } - public static Optional utledFarsPeriodeRundtFødsel(boolean utenFarUttakRundtFødsel, - boolean gjelderFødsel, - LocalDate familieHendelseDato, - LocalDate terminDato) { + public static Optional utledFarsPeriodeRundtFødsel( + boolean utenFarUttakRundtFødsel, + boolean gjelderFødsel, + LocalDate familieHendelseDato, + LocalDate terminDato) { if (utenFarUttakRundtFødsel || !gjelderFødsel || familieHendelseDato == null) { return Optional.empty(); } - var farFørTermin = Konfigurasjon.STANDARD.getParameterHvisAktivVed(Parametertype.FAR_UTTAK_FØR_TERMIN_UKER, familieHendelseDato) - .map(Period::ofWeeks) - .orElse(Period.ZERO); - var farEtterFødsel = Konfigurasjon.STANDARD.getParameterHvisAktivVed(Parametertype.FAR_UTTAK_ETTER_FØDSEL_UKER, familieHendelseDato) - .map(Period::ofWeeks) - .orElse(Period.ZERO); + var farFørTermin = Konfigurasjon.STANDARD + .getParameterHvisAktivVed(Parametertype.FAR_UTTAK_FØR_TERMIN_UKER, familieHendelseDato) + .map(Period::ofWeeks) + .orElse(Period.ZERO); + var farEtterFødsel = Konfigurasjon.STANDARD + .getParameterHvisAktivVed(Parametertype.FAR_UTTAK_ETTER_FØDSEL_UKER, familieHendelseDato) + .map(Period::ofWeeks) + .orElse(Period.ZERO); if (farFørTermin.equals(Period.ZERO) && farEtterFødsel.equals(Period.ZERO)) { return Optional.empty(); } // Bruker min(Termin-2uker, Fødsel) var farUttakFom = Optional.ofNullable(terminDato) - .filter(d -> d.minus(farFørTermin).isBefore(familieHendelseDato)) - .map(d -> d.minus(farFørTermin)) - .orElse(familieHendelseDato); + .filter(d -> d.minus(farFørTermin).isBefore(familieHendelseDato)) + .map(d -> d.minus(farFørTermin)) + .orElse(familieHendelseDato); // Bruker fødsel + 6uker var farUttakTom = familieHendelseDato.plus(farEtterFødsel).minusDays(1); return Optional.of(new LukketPeriode(farUttakFom, farUttakTom)); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Konfigurasjon.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Konfigurasjon.java index 61ccb1e4..62bb9a53 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Konfigurasjon.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Konfigurasjon.java @@ -19,20 +19,31 @@ public class Konfigurasjon { var d_2019_07_01 = LocalDate.of(2019, Month.JULY, 1); var d_2022_08_02 = LocalDate.of(2022, Month.AUGUST, 1); STANDARD = KonfigurasjonBuilder.create() - // Uttaksperioder - .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, d_2010_01_01, null, 6) - .leggTilParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, d_2010_01_01, null, 12) - .leggTilParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, d_2010_01_01, null, 3) - .leggTilParameter(Parametertype.UTTAK_ETTER_BARN_DØDT_UKER, d_2017_01_01, null, 6) - .leggTilParameter(Parametertype.FAR_UTTAK_FØR_TERMIN_UKER, d_2017_01_01, null, 2) // TODO: endre til aug 2022 etter overgang - .leggTilParameter(Parametertype.FAR_UTTAK_ETTER_FØDSEL_UKER, d_2017_01_01, null, 6) // TODO: endre til aug 2022 etter overgang - - // Grenser - .leggTilParameter(Parametertype.GRENSE_ETTER_FØDSELSDATO_ÅR, d_2010_01_01, null, 3) - .leggTilParameter(Parametertype.TETTE_SAKER_MELLOMROM_UKER, d_2017_01_01, null, - 48) // TODO: endre til aug 2022 el 48 uker tidligere etter overgang - .leggTilParameter(Parametertype.PREMATURUKER_ANTALL_DAGER_FØR_TERMIN, d_2019_07_01, null, 52) - .build(); + // Uttaksperioder + .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, d_2010_01_01, null, 6) + .leggTilParameter(Parametertype.TIDLIGST_UTTAK_FØR_TERMIN_UKER, d_2010_01_01, null, 12) + .leggTilParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, d_2010_01_01, null, 3) + .leggTilParameter(Parametertype.UTTAK_ETTER_BARN_DØDT_UKER, d_2017_01_01, null, 6) + .leggTilParameter( + Parametertype.FAR_UTTAK_FØR_TERMIN_UKER, + d_2017_01_01, + null, + 2) // TODO: endre til aug 2022 etter overgang + .leggTilParameter( + Parametertype.FAR_UTTAK_ETTER_FØDSEL_UKER, + d_2017_01_01, + null, + 6) // TODO: endre til aug 2022 etter overgang + + // Grenser + .leggTilParameter(Parametertype.GRENSE_ETTER_FØDSELSDATO_ÅR, d_2010_01_01, null, 3) + .leggTilParameter( + Parametertype.TETTE_SAKER_MELLOMROM_UKER, + d_2017_01_01, + null, + 48) // TODO: endre til aug 2022 el 48 uker tidligere etter overgang + .leggTilParameter(Parametertype.PREMATURUKER_ANTALL_DAGER_FØR_TERMIN, d_2019_07_01, null, 52) + .build(); } private final Map> parameterMap = new EnumMap<>(Parametertype.class); @@ -42,21 +53,24 @@ public class Konfigurasjon { } public Optional getParameterHvisAktivVed(Parametertype parametertype, final LocalDate dato) { - return Optional.ofNullable(this.parameterMap.get(parametertype)) - .flatMap(param -> param.stream().filter(p -> p.overlapper(dato)).findFirst().map(Parameter::getVerdi)); + return Optional.ofNullable(this.parameterMap.get(parametertype)).flatMap(param -> param.stream() + .filter(p -> p.overlapper(dato)) + .findFirst() + .map(Parameter::getVerdi)); } public Integer getParameter(Parametertype parametertype, final LocalDate dato) { return getParameterVerdier(parametertype).stream() - .filter(p -> p.overlapper(dato)) - .findFirst() - .map(Parameter::getVerdi) - .orElseThrow(() -> new IllegalArgumentException("Ingen parameter funnet for " + parametertype.name() + " på dato " + dato)); + .filter(p -> p.overlapper(dato)) + .findFirst() + .map(Parameter::getVerdi) + .orElseThrow(() -> new IllegalArgumentException( + "Ingen parameter funnet for " + parametertype.name() + " på dato " + dato)); } public Collection getParameterVerdier(Parametertype parametertype) { return Optional.ofNullable(this.parameterMap.get(parametertype)) - .orElseThrow(() -> new IllegalArgumentException("Konfigurasjon-feil/Utvikler-feil: mangler parameter av type " + parametertype)); + .orElseThrow(() -> new IllegalArgumentException( + "Konfigurasjon-feil/Utvikler-feil: mangler parameter av type " + parametertype)); } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/KonfigurasjonBuilder.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/KonfigurasjonBuilder.java index bea00506..8628eecf 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/KonfigurasjonBuilder.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/KonfigurasjonBuilder.java @@ -38,5 +38,4 @@ KonfigurasjonBuilder leggTilParameter(Parametertype parametertype, LocalDate fom public Konfigurasjon build() { return new Konfigurasjon(parameterMap); } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Parameter.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Parameter.java index f5936008..db54ab4a 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Parameter.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Parameter.java @@ -2,7 +2,6 @@ import java.time.LocalDate; import java.util.Objects; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Periode; class Parameter extends Periode { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Parametertype.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Parametertype.java index 0a3a1001..56e26af3 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Parametertype.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/Parametertype.java @@ -2,7 +2,7 @@ public enum Parametertype { - //Uttaksperidoer + // Uttaksperidoer FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, TIDLIGST_UTTAK_FØR_TERMIN_UKER, SENEST_UTTAK_FØR_TERMIN_UKER, @@ -10,9 +10,8 @@ public enum Parametertype { FAR_UTTAK_FØR_TERMIN_UKER, FAR_UTTAK_ETTER_FØDSEL_UKER, - //Grenser + // Grenser PREMATURUKER_ANTALL_DAGER_FØR_TERMIN, TETTE_SAKER_MELLOMROM_UKER, GRENSE_ETTER_FØDSELSDATO_ÅR - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PerioderUtenHelgUtil.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PerioderUtenHelgUtil.java index c9d3da8d..9a29b57a 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PerioderUtenHelgUtil.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PerioderUtenHelgUtil.java @@ -5,7 +5,6 @@ import java.time.DayOfWeek; import java.time.LocalDate; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; public final class PerioderUtenHelgUtil { @@ -13,7 +12,7 @@ public final class PerioderUtenHelgUtil { private static final Set WEEKEND = Set.of(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY); private PerioderUtenHelgUtil() { - //Privat constructor for å hindre instanser. + // Privat constructor for å hindre instanser. } public static boolean periodeUtenHelgOmslutter(LukketPeriode omsluttendePeriode, LukketPeriode omsluttetPeriode) { @@ -70,5 +69,4 @@ public static LocalDate helgBlirFredag(LocalDate dato) { public static LocalDate fredagLørdagBlirSøndag(LocalDate dato) { return WEEKEND.contains(dato.plusDays(1).getDayOfWeek()) ? dato.with(next(DayOfWeek.MONDAY)) : dato; } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PrematurukerUtil.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PrematurukerUtil.java index 0cf0aae2..0b2e0081 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PrematurukerUtil.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PrematurukerUtil.java @@ -6,15 +6,15 @@ public final class PrematurukerUtil { - private PrematurukerUtil() { - } + private PrematurukerUtil() {} public static boolean oppfyllerKravTilPrematuruker(LocalDate fødselsdato, LocalDate termindato) { if (fødselsdato == null || termindato == null) { return false; } if (erEtterRegelendringStartdato(fødselsdato)) { - var antallDagerFørTermin = Konfigurasjon.STANDARD.getParameter(Parametertype.PREMATURUKER_ANTALL_DAGER_FØR_TERMIN, fødselsdato); + var antallDagerFørTermin = Konfigurasjon.STANDARD.getParameter( + Parametertype.PREMATURUKER_ANTALL_DAGER_FØR_TERMIN, fødselsdato); return fødselsdato.plusDays(antallDagerFørTermin).isBefore(termindato); } return false; diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/S\303\270knadsfristUtil.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/S\303\270knadsfristUtil.java" index bb8cec9b..25629a2b 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/S\303\270knadsfristUtil.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/S\303\270knadsfristUtil.java" @@ -9,8 +9,7 @@ public final class SøknadsfristUtil { private static final long SØKNADSFRIST_MÅNEDER = 3; - private SøknadsfristUtil() { - } + private SøknadsfristUtil() {} public static LocalDate finnFørsteLoveligeUttaksdag(LocalDate søknadMottattDato) { return søknadMottattDato.withDayOfMonth(1).minusMonths(SØKNADSFRIST_MÅNEDER); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/AvslagAktivitetskravDelregel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/AvslagAktivitetskravDelregel.java index 58cd6010..6b6939d2 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/AvslagAktivitetskravDelregel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/AvslagAktivitetskravDelregel.java @@ -44,146 +44,171 @@ import no.nav.fpsak.nare.doc.RuleDocumentation; import no.nav.fpsak.nare.specification.Specification; -@RuleDocumentation(value = AvslagAktivitetskravDelregel.ID, specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") +@RuleDocumentation( + value = AvslagAktivitetskravDelregel.ID, + specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") public class AvslagAktivitetskravDelregel implements RuleService { public static final String ID = "AVSLAG_AKT"; private final Ruleset rs = new Ruleset<>(); - @Override public Specification getSpecification() { return rs.hvisRegel(SjekkOmTomForAlleSineKontoer.ID, SjekkOmTomForAlleSineKontoer.BESKRIVELSE) - //Går til manuell for at saksbehandler skal velge riktig hjemmel - .hvis(new SjekkOmTomForAlleSineKontoer(), IkkeOppfylt.opprett("UT1319", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, false, false)) - .ellers(sjekkOmKjentAktivitet()); + // Går til manuell for at saksbehandler skal velge riktig hjemmel + .hvis( + new SjekkOmTomForAlleSineKontoer(), + IkkeOppfylt.opprett("UT1319", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, false, false)) + .ellers(sjekkOmKjentAktivitet()); } private Specification sjekkOmKjentAktivitet() { return rs.hvisRegel(SjekkOmMorsAktivitetErKjent.ID, SjekkOmMorsAktivitetErKjent.BESKRIVELSE) - .hvis(new SjekkOmMorsAktivitetErKjent(), sjekkOmMorArbeid()) - .ellers(sjekkOmUkjentAktivitetErUttakUtenAktivitetskrav()); + .hvis(new SjekkOmMorsAktivitetErKjent(), sjekkOmMorArbeid()) + .ellers(sjekkOmUkjentAktivitetErUttakUtenAktivitetskrav()); } private Specification sjekkOmMorArbeid() { - return rs.hvisRegel(SjekkOmMorArbeid.ID, SjekkOmMorArbeid.BESKRIVELSE).hvis(new SjekkOmMorArbeid(), morArbeid()).ellers(sjekkOmMorSyk()); + return rs.hvisRegel(SjekkOmMorArbeid.ID, SjekkOmMorArbeid.BESKRIVELSE) + .hvis(new SjekkOmMorArbeid(), morArbeid()) + .ellers(sjekkOmMorSyk()); } private Specification sjekkOmMorSyk() { - return rs.hvisRegel(SjekkOmMorSyk.ID, SjekkOmMorSyk.BESKRIVELSE).hvis(new SjekkOmMorSyk(), morSyk()).ellers(sjekkOmMorInnlagt()); + return rs.hvisRegel(SjekkOmMorSyk.ID, SjekkOmMorSyk.BESKRIVELSE) + .hvis(new SjekkOmMorSyk(), morSyk()) + .ellers(sjekkOmMorInnlagt()); } private Specification sjekkOmMorInnlagt() { return rs.hvisRegel(SjekkOmMorInnlagt.ID, SjekkOmMorInnlagt.BESKRIVELSE) - .hvis(new SjekkOmMorInnlagt(), morInnlagt()) - .ellers(sjekkOmMorUtdanning()); + .hvis(new SjekkOmMorInnlagt(), morInnlagt()) + .ellers(sjekkOmMorUtdanning()); } private Specification sjekkOmMorUtdanning() { return rs.hvisRegel(SjekkOmMorUtdanning.ID, SjekkOmMorUtdanning.BESKRIVELSE) - .hvis(new SjekkOmMorUtdanning(), morUtdannning()) - .ellers(sjekkOmMorKvalifiseringsprogram()); + .hvis(new SjekkOmMorUtdanning(), morUtdannning()) + .ellers(sjekkOmMorKvalifiseringsprogram()); } private Specification sjekkOmMorKvalifiseringsprogram() { return rs.hvisRegel(SjekkOmMorKvalifiseringsprogram.ID, SjekkOmMorKvalifiseringsprogram.BESKRIVELSE) - .hvis(new SjekkOmMorKvalifiseringsprogram(), morKvalifiseringsprogram()) - .ellers(sjekkOmMorIntroduksjonsprogram()); + .hvis(new SjekkOmMorKvalifiseringsprogram(), morKvalifiseringsprogram()) + .ellers(sjekkOmMorIntroduksjonsprogram()); } private Specification sjekkOmMorIntroduksjonsprogram() { return rs.hvisRegel(SjekkOmMorIntroduksjonsprogram.ID, SjekkOmMorIntroduksjonsprogram.BESKRIVELSE) - .hvis(new SjekkOmMorIntroduksjonsprogram(), morIntroduksjonsprogram()) - .ellers(sjekkOmMorKombinasjonArbeidUtdanning()); + .hvis(new SjekkOmMorIntroduksjonsprogram(), morIntroduksjonsprogram()) + .ellers(sjekkOmMorKombinasjonArbeidUtdanning()); } private Specification sjekkOmMorKombinasjonArbeidUtdanning() { return rs.hvisRegel(SjekkOmMorKombinasjonArbeidUtdanning.ID, SjekkOmMorKombinasjonArbeidUtdanning.BESKRIVELSE) - .hvis(new SjekkOmMorKombinasjonArbeidUtdanning(), morKombinasjonArbeidUtdanning()) - .ellers(sjekkOmMorOppgittUføretrygd()); + .hvis(new SjekkOmMorKombinasjonArbeidUtdanning(), morKombinasjonArbeidUtdanning()) + .ellers(sjekkOmMorOppgittUføretrygd()); } private Specification sjekkOmMorOppgittUføretrygd() { return rs.hvisRegel(SjekkOmMorOppgittUføre.ID, SjekkOmMorOppgittUføre.BESKRIVELSE) - .hvis(new SjekkOmMorOppgittUføre(), sjekkOmMorBekreftetUføretrygd()) - .ellers(utfall1314AvklarAktivitetSituasjon()); + .hvis(new SjekkOmMorOppgittUføre(), sjekkOmMorBekreftetUføretrygd()) + .ellers(utfall1314AvklarAktivitetSituasjon()); } private Specification sjekkOmMorBekreftetUføretrygd() { return rs.hvisRegel(SjekkOmMorBekreftetUføre.ID, SjekkOmMorBekreftetUføre.BESKRIVELSE) - .hvis(new SjekkOmMorBekreftetUføre(), sjekkOmMorBekreftetUføretrygdErUttak()) - .ellers(avslåSjekkSkalTrekkeDager("UT1322", FORELDREPENGER_KUN_FAR_HAR_RETT_MOR_IKKE_UFØR)); + .hvis(new SjekkOmMorBekreftetUføre(), sjekkOmMorBekreftetUføretrygdErUttak()) + .ellers(avslåSjekkSkalTrekkeDager("UT1322", FORELDREPENGER_KUN_FAR_HAR_RETT_MOR_IKKE_UFØR)); } private Specification sjekkOmMorBekreftetUføretrygdErUttak() { return rs.hvisRegel(SjekkOmUttakOgUtenAktivitetskrav.ID, SjekkOmUttakOgUtenAktivitetskrav.BESKRIVELSE) - .hvis(new SjekkOmUttakOgUtenAktivitetskrav(), avslå("UT1324", AKTIVITET_UKJENT_UDOKUMENTERT)) - .ellers(utfall1314AvklarAktivitetSituasjon()); + .hvis(new SjekkOmUttakOgUtenAktivitetskrav(), avslå("UT1324", AKTIVITET_UKJENT_UDOKUMENTERT)) + .ellers(utfall1314AvklarAktivitetSituasjon()); } private Specification sjekkOmUkjentAktivitetErUttakUtenAktivitetskrav() { return rs.hvisRegel(SjekkOmUttakOgUtenAktivitetskrav.ID, SjekkOmUttakOgUtenAktivitetskrav.BESKRIVELSE) - .hvis(new SjekkOmUttakOgUtenAktivitetskrav(), avslå("UT1323", AKTIVITET_UKJENT_UDOKUMENTERT)) - .ellers(sjekkOmUkjentAktivitetErFriUtsettelse()); + .hvis(new SjekkOmUttakOgUtenAktivitetskrav(), avslå("UT1323", AKTIVITET_UKJENT_UDOKUMENTERT)) + .ellers(sjekkOmUkjentAktivitetErFriUtsettelse()); } private Specification sjekkOmUkjentAktivitetErFriUtsettelse() { // Pga praksis med tekniske perioder u/aktivitet fra søknader fram til første uttak. return rs.hvisRegel(SjekkOmFriUtsettelse.ID, SjekkOmFriUtsettelse.BESKRIVELSE) - .hvis(new SjekkOmFriUtsettelse(), avslåSjekkSkalTrekkeDager("UT1325", BARE_FAR_RETT_IKKE_SØKT)) - .ellers(Manuellbehandling.opprett("UT1315", null, Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT, true, false)); + .hvis(new SjekkOmFriUtsettelse(), avslåSjekkSkalTrekkeDager("UT1325", BARE_FAR_RETT_IKKE_SØKT)) + .ellers(Manuellbehandling.opprett( + "UT1315", null, Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT, true, false)); } private Specification morArbeid() { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmAktivitetErDokumentert(), avslåSjekkSkalTrekkeDager("UT1300", AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT)) - .ellers(avslåSjekkSkalTrekkeDager("UT1301", AKTIVITETSKRAVET_ARBEID_IKKE_DOKUMENTERT)); + .hvis( + new SjekkOmAktivitetErDokumentert(), + avslåSjekkSkalTrekkeDager("UT1300", AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT)) + .ellers(avslåSjekkSkalTrekkeDager("UT1301", AKTIVITETSKRAVET_ARBEID_IKKE_DOKUMENTERT)); } private Specification morSyk() { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmAktivitetErDokumentert(), avslåSjekkSkalTrekkeDager("UT1302", AKTIVITETSKRAVET_SYKDOM_IKKE_OPPFYLT)) - .ellers(avslåSjekkSkalTrekkeDager("UT1303", AKTIVITETSKRAVET_SYKDOM_IKKE_DOKUMENTERT)); + .hvis( + new SjekkOmAktivitetErDokumentert(), + avslåSjekkSkalTrekkeDager("UT1302", AKTIVITETSKRAVET_SYKDOM_IKKE_OPPFYLT)) + .ellers(avslåSjekkSkalTrekkeDager("UT1303", AKTIVITETSKRAVET_SYKDOM_IKKE_DOKUMENTERT)); } private Specification morInnlagt() { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmAktivitetErDokumentert(), avslåSjekkSkalTrekkeDager("UT1304", AKTIVITETSKRAVET_INNLEGGELSE_IKKE_OPPFYLT)) - .ellers(avslåSjekkSkalTrekkeDager("UT1305", AKTIVITETSKRAVET_INNLEGGELSE_IKKE_DOKUMENTERT)); + .hvis( + new SjekkOmAktivitetErDokumentert(), + avslåSjekkSkalTrekkeDager("UT1304", AKTIVITETSKRAVET_INNLEGGELSE_IKKE_OPPFYLT)) + .ellers(avslåSjekkSkalTrekkeDager("UT1305", AKTIVITETSKRAVET_INNLEGGELSE_IKKE_DOKUMENTERT)); } private Specification morUtdannning() { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmAktivitetErDokumentert(), avslåSjekkSkalTrekkeDager("UT1306", AKTIVITETSKRAVET_UTDANNING_IKKE_OPPFYLT)) - .ellers(avslåSjekkSkalTrekkeDager("UT1307", AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT)); + .hvis( + new SjekkOmAktivitetErDokumentert(), + avslåSjekkSkalTrekkeDager("UT1306", AKTIVITETSKRAVET_UTDANNING_IKKE_OPPFYLT)) + .ellers(avslåSjekkSkalTrekkeDager("UT1307", AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT)); } private Specification morKvalifiseringsprogram() { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmAktivitetErDokumentert(), - avslåSjekkSkalTrekkeDager("UT1308", AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_OPPFYLT)) - .ellers(avslåSjekkSkalTrekkeDager("UT1309", AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_DOKUMENTERT)); + .hvis( + new SjekkOmAktivitetErDokumentert(), + avslåSjekkSkalTrekkeDager( + "UT1308", AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_OPPFYLT)) + .ellers(avslåSjekkSkalTrekkeDager( + "UT1309", AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_DOKUMENTERT)); } private Specification morIntroduksjonsprogram() { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmAktivitetErDokumentert(), - avslåSjekkSkalTrekkeDager("UT1310", AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_OPPFYLT)) - .ellers(avslåSjekkSkalTrekkeDager("UT1311", AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_DOKUMENTERT)); + .hvis( + new SjekkOmAktivitetErDokumentert(), + avslåSjekkSkalTrekkeDager( + "UT1310", AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_OPPFYLT)) + .ellers(avslåSjekkSkalTrekkeDager( + "UT1311", AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_DOKUMENTERT)); } private Specification morKombinasjonArbeidUtdanning() { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmAktivitetErDokumentert(), - avslåSjekkSkalTrekkeDager("UT1312", AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_OPPFYLT)) - .ellers(avslåSjekkSkalTrekkeDager("UT1313", AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_DOKUMENTERT)); + .hvis( + new SjekkOmAktivitetErDokumentert(), + avslåSjekkSkalTrekkeDager("UT1312", AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_OPPFYLT)) + .ellers(avslåSjekkSkalTrekkeDager( + "UT1313", AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_DOKUMENTERT)); } - private Specification avslåSjekkSkalTrekkeDager(String sluttpunktId, IkkeOppfyltÅrsak årsak) { + private Specification avslåSjekkSkalTrekkeDager( + String sluttpunktId, IkkeOppfyltÅrsak årsak) { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmSkalTrekkeDagerFraKonto(), IkkeOppfylt.opprett(sluttpunktId, årsak, true, false)) - .ellers(IkkeOppfylt.opprett(sluttpunktId, årsak, false, false)); + .hvis(new SjekkOmSkalTrekkeDagerFraKonto(), IkkeOppfylt.opprett(sluttpunktId, årsak, true, false)) + .ellers(IkkeOppfylt.opprett(sluttpunktId, årsak, false, false)); } private FastsettePeriodeUtfall avslå(String sluttpunktId, IkkeOppfyltÅrsak årsak) { @@ -192,7 +217,9 @@ private Specification morKombinasjonArbeidUtdanning() private Specification utfall1314AvklarAktivitetSituasjon() { return rs.hvisRegel(SjekkOmAktivitetErDokumentert.ID, SjekkOmAktivitetErDokumentert.BESKRIVELSE) - .hvis(new SjekkOmSkalTrekkeDagerFraKonto(), Manuellbehandling.opprett("UT1314", null, Manuellbehandlingårsak.MOR_UFØR, true, true)) - .ellers(Manuellbehandling.opprett("UT1314", null, Manuellbehandlingårsak.MOR_UFØR, false, true)); + .hvis( + new SjekkOmSkalTrekkeDagerFraKonto(), + Manuellbehandling.opprett("UT1314", null, Manuellbehandlingårsak.MOR_UFØR, true, true)) + .ellers(Manuellbehandling.opprett("UT1314", null, Manuellbehandlingårsak.MOR_UFØR, false, true)); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FastsettePeriodeRegel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FastsettePeriodeRegel.java index 2ec03b8f..24157cd7 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FastsettePeriodeRegel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FastsettePeriodeRegel.java @@ -54,9 +54,7 @@ import no.nav.fpsak.nare.evaluation.Evaluation; import no.nav.fpsak.nare.specification.Specification; -/** - * Regeltjeneste som fastsetter uttaksperioder som er søkt om for foreldrepenger. - */ +/** Regeltjeneste som fastsetter uttaksperioder som er søkt om for foreldrepenger. */ @RuleDocumentation(value = FastsettePeriodeRegel.ID) public class FastsettePeriodeRegel implements RuleService { @@ -82,60 +80,76 @@ public Evaluation evaluer(FastsettePeriodeGrunnlag grunnlag) { @Override public Specification getSpecification() { return rs.hvisRegel(SjekkOmPeriodeErUtsettelse.ID, SjekkOmPeriodeErUtsettelse.BESKRIVELSE) - .hvis(new SjekkOmPeriodeErUtsettelse(), sjekkPeriodeInnenforMaksgrense()) - .ellers(sjekkOmPeriodenErFørGyldigDato()); + .hvis(new SjekkOmPeriodeErUtsettelse(), sjekkPeriodeInnenforMaksgrense()) + .ellers(sjekkOmPeriodenErFørGyldigDato()); } private Specification sjekkOmPeriodenErFørGyldigDato() { return rs.hvisRegel(SjekkOmPeriodenErFørGyldigDato.ID, "Er uttaksperiode før \"gyldig dato\"?") - .hvis(new SjekkOmPeriodenErFørGyldigDato(), sjekkOmManglendePeriode()) - .ellers(sjekkPeriodeInnenforMaksgrense()); + .hvis(new SjekkOmPeriodenErFørGyldigDato(), sjekkOmManglendePeriode()) + .ellers(sjekkPeriodeInnenforMaksgrense()); } private Specification sjekkOmUttaksperiodenEtterSøkersDødsdato() { if (fomUttaksperiodenEtterSøkersDødsdato == null) { - fomUttaksperiodenEtterSøkersDødsdato = rs.hvisRegel(SjekkOmUttaksperiodenEtterSøkersDødsdato.ID, - "Er uttaksperioden etter søkers dødsdato?") - .hvis(new SjekkOmUttaksperiodenEtterSøkersDødsdato(), - Manuellbehandling.opprett("UT1275", IkkeOppfyltÅrsak.SØKER_DØD, Manuellbehandlingårsak.DØDSFALL, false, false)) - .ellers(sjekkOmUttaksperiodenEtter6UkerEtterBarnsDødsdato()); + fomUttaksperiodenEtterSøkersDødsdato = rs.hvisRegel( + SjekkOmUttaksperiodenEtterSøkersDødsdato.ID, "Er uttaksperioden etter søkers dødsdato?") + .hvis( + new SjekkOmUttaksperiodenEtterSøkersDødsdato(), + Manuellbehandling.opprett( + "UT1275", + IkkeOppfyltÅrsak.SØKER_DØD, + Manuellbehandlingårsak.DØDSFALL, + false, + false)) + .ellers(sjekkOmUttaksperiodenEtter6UkerEtterBarnsDødsdato()); } return fomUttaksperiodenEtterSøkersDødsdato; } private Specification sjekkOmUttaksperiodenEtter6UkerEtterBarnsDødsdato() { - return rs.hvisRegel(SjekkOmUttaksperiodenEtter6UkerEtterBarnsDødsdato.ID, "Er uttaksperioden etter senere enn 6 uker etter barns dødsdato?") - .hvis(new SjekkOmUttaksperiodenEtter6UkerEtterBarnsDødsdato(), sjekkOmAlleBarnErDøde()) - .ellers(sjekkOmOpphørsdatoTrefferPerioden()); + return rs.hvisRegel( + SjekkOmUttaksperiodenEtter6UkerEtterBarnsDødsdato.ID, + "Er uttaksperioden etter senere enn 6 uker etter barns dødsdato?") + .hvis(new SjekkOmUttaksperiodenEtter6UkerEtterBarnsDødsdato(), sjekkOmAlleBarnErDøde()) + .ellers(sjekkOmOpphørsdatoTrefferPerioden()); } private Specification sjekkOmAlleBarnErDøde() { return rs.hvisRegel(SjekkOmAlleBarnErDøde.ID, "Er alle barn døde?") - .hvis(new SjekkOmAlleBarnErDøde(), - Manuellbehandling.opprett("UT1289", IkkeOppfyltÅrsak.BARN_DØD, Manuellbehandlingårsak.DØDSFALL, false, false)) - .ellers(sjekkOmOpphørsdatoTrefferPerioden()); + .hvis( + new SjekkOmAlleBarnErDøde(), + Manuellbehandling.opprett( + "UT1289", IkkeOppfyltÅrsak.BARN_DØD, Manuellbehandlingårsak.DØDSFALL, false, false)) + .ellers(sjekkOmOpphørsdatoTrefferPerioden()); } private Specification sjekkOmOpphørsdatoTrefferPerioden() { if (fomOpphørsdatoTrefferPerioden == null) { - fomOpphørsdatoTrefferPerioden = rs.hvisRegel(SjekkOmOpphørsdatoTrefferPerioden.ID, "Inneholder perioden opphørsdato for medlemskap") - .hvis(new SjekkOmOpphørsdatoTrefferPerioden(), IkkeOppfylt.opprett("UT1250", IkkeOppfyltÅrsak.SØKER_IKKE_MEDLEM, false, false)) - .ellers(sjekkOmFødselsvilkåretErOppfylt()); + fomOpphørsdatoTrefferPerioden = rs.hvisRegel( + SjekkOmOpphørsdatoTrefferPerioden.ID, "Inneholder perioden opphørsdato for medlemskap") + .hvis( + new SjekkOmOpphørsdatoTrefferPerioden(), + IkkeOppfylt.opprett("UT1250", IkkeOppfyltÅrsak.SØKER_IKKE_MEDLEM, false, false)) + .ellers(sjekkOmFødselsvilkåretErOppfylt()); } return fomOpphørsdatoTrefferPerioden; } private Specification sjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse() { - return rs.hvisRegel(SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse.ID, - "Sammenfaller uttaksperioden med en periode hos den andre parten som er en innvilget utsettelse?") - .hvis(new SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse(), sjekkOmBehandlingKreverSammenhengendeUttak()) - .ellers(sjekkOmAnnenPartsPeriodeHarUtbetalingsgrad()); + return rs.hvisRegel( + SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse.ID, + "Sammenfaller uttaksperioden med en periode hos den andre parten som er en innvilget utsettelse?") + .hvis(new SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse(), sjekkOmBehandlingKreverSammenhengendeUttak()) + .ellers(sjekkOmAnnenPartsPeriodeHarUtbetalingsgrad()); } private Specification sjekkOmBehandlingKreverSammenhengendeUttak() { - return rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) - .hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), ikkeOppfyltUT1166()) - .ellers(sjekkOmFødselTermin()); + return rs.hvisRegel( + SjekkOmBehandlingKreverSammenhengendeUttak.ID, + SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) + .hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), ikkeOppfyltUT1166()) + .ellers(sjekkOmFødselTermin()); } private FastsettePeriodeUtfall ikkeOppfyltUT1166() { @@ -144,234 +158,293 @@ private FastsettePeriodeUtfall ikkeOppfyltUT1166() { private Specification sjekkOmFødselTermin() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmTidsperiodeForbeholdtMor()) - .ellers(sjekkOmAnnenPartsPeriodeHarUtbetalingsgrad()); + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmTidsperiodeForbeholdtMor()) + .ellers(sjekkOmAnnenPartsPeriodeHarUtbetalingsgrad()); } private Specification sjekkOmTidsperiodeForbeholdtMor() { return rs.hvisRegel(SjekkOmTidsperiodeForbeholdtMor.ID, SjekkOmTidsperiodeForbeholdtMor.BESKRIVELSE) - .hvis(new SjekkOmTidsperiodeForbeholdtMor().og(ikke(new SjekkOmFarHarDagerRundtFødsel())), ikkeOppfyltUT1166()) - .ellers(sjekkOmAnnenPartsPeriodeHarUtbetalingsgrad()); + .hvis( + new SjekkOmTidsperiodeForbeholdtMor().og(ikke(new SjekkOmFarHarDagerRundtFødsel())), + ikkeOppfyltUT1166()) + .ellers(sjekkOmAnnenPartsPeriodeHarUtbetalingsgrad()); } private Specification sjekkOmAnnenPartsPeriodeHarUtbetalingsgrad() { - return rs.hvisRegel(SjekkOmAnnenPartsPeriodeHarUtbetalingsgrad.ID, - "Sammenfaller uttaksperioden med en periode hos den andre parten som har utbetaling > 0?") - .hvis(new SjekkOmAnnenPartsPeriodeHarUtbetalingsgrad(), sjekkOmSamtidigUttak()) - .ellers(sjekkOmPeriodeErUtsettelse()); + return rs.hvisRegel( + SjekkOmAnnenPartsPeriodeHarUtbetalingsgrad.ID, + "Sammenfaller uttaksperioden med en periode hos den andre parten som har utbetaling > 0?") + .hvis(new SjekkOmAnnenPartsPeriodeHarUtbetalingsgrad(), sjekkOmSamtidigUttak()) + .ellers(sjekkOmPeriodeErUtsettelse()); } private Specification sjekkOmAkseptertSamtidigUttak() { return rs.hvisRegel(SjekkOmAkseptertSamtidigUttak.ID, "Samtidig uttak er akseptert?") - .hvis(new SjekkOmAkseptertSamtidigUttak(), sjekkOmPeriodeErUtsettelse()) - .ellers(Manuellbehandling.opprett("UT1164", null, Manuellbehandlingårsak.VURDER_SAMTIDIG_UTTAK, true, false)); + .hvis(new SjekkOmAkseptertSamtidigUttak(), sjekkOmPeriodeErUtsettelse()) + .ellers(Manuellbehandling.opprett( + "UT1164", null, Manuellbehandlingårsak.VURDER_SAMTIDIG_UTTAK, true, false)); } private Specification sjekkOmSamtidigUttak() { return rs.hvisRegel(SjekkOmSamtidigUttak.ID, "Har en av foreldrene huket av for samtidig uttak?") - .hvis(new SjekkOmSamtidigUttak(), sjekkOmAkseptertSamtidigUttak()) - .ellers(IkkeOppfylt.opprett("UT1162", IkkeOppfyltÅrsak.OPPHOLD_IKKE_SAMTIDIG_UTTAK, false, false)); + .hvis(new SjekkOmSamtidigUttak(), sjekkOmAkseptertSamtidigUttak()) + .ellers(IkkeOppfylt.opprett("UT1162", IkkeOppfyltÅrsak.OPPHOLD_IKKE_SAMTIDIG_UTTAK, false, false)); } private Specification sjekkOmManglendePeriode() { return rs.hvisRegel(SjekkOmManglendeSøktPeriode.ID, "Er det \"Manglende søkt periode\"?") - .hvis(new SjekkOmManglendeSøktPeriode(), new ManglendeSøktPeriodeDelregel().getSpecification()) - .ellers(sjekkOmSøknadGjelderTerminFødsel()); + .hvis(new SjekkOmManglendeSøktPeriode(), new ManglendeSøktPeriodeDelregel().getSpecification()) + .ellers(sjekkOmSøknadGjelderTerminFødsel()); } private Specification sjekkOmSøknadGjelderTerminFødsel() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmPeriodeErForTidlig()) - .ellers(sjekkOmAdopsjonPeriodeErForTidlig()); + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmPeriodeErForTidlig()) + .ellers(sjekkOmAdopsjonPeriodeErForTidlig()); } private Specification sjekkOmAdopsjonPeriodeErForTidlig() { - return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, SjekkOmPeriodenStarterFørFamiliehendelse.BESKRIVELSE) - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), IkkeOppfylt.opprett("UT1080", IkkeOppfyltÅrsak.SØKNADSFRIST, false, false)) - .ellers(sjekkOmTomPåKontoVedSøktPeriode()); + return rs.hvisRegel( + SjekkOmPeriodenStarterFørFamiliehendelse.ID, + SjekkOmPeriodenStarterFørFamiliehendelse.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + IkkeOppfylt.opprett("UT1080", IkkeOppfyltÅrsak.SØKNADSFRIST, false, false)) + .ellers(sjekkOmTomPåKontoVedSøktPeriode()); } private Specification sjekkOmPeriodeErForTidlig() { - return rs.hvisRegel(SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.ID, SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.BESKRIVELSE) - .hvis(new SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin(), - IkkeOppfylt.opprett("UT1080", IkkeOppfyltÅrsak.SØKNADSFRIST, false, false)) - .ellers(sjekkOmTomPåKontoVedSøktPeriode()); + return rs.hvisRegel( + SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.ID, + SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin(), + IkkeOppfylt.opprett("UT1080", IkkeOppfyltÅrsak.SØKNADSFRIST, false, false)) + .ellers(sjekkOmTomPåKontoVedSøktPeriode()); } private Specification sjekkOmTomPåKontoVedSøktPeriode() { return rs.hvisRegel(SjekkOmTomForAlleSineKontoer.ID, SjekkOmTomForAlleSineKontoer.BESKRIVELSE) - .hvis(new SjekkOmTomForAlleSineKontoer(), IkkeOppfylt.opprett("UT1081", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, false, false)) - .ellers(IkkeOppfylt.opprett("UT1082", IkkeOppfyltÅrsak.SØKNADSFRIST, true, false)); + .hvis( + new SjekkOmTomForAlleSineKontoer(), + IkkeOppfylt.opprett("UT1081", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, false, false)) + .ellers(IkkeOppfylt.opprett("UT1082", IkkeOppfyltÅrsak.SØKNADSFRIST, true, false)); } private Specification sjekkPeriodeInnenforMaksgrense() { - return rs.hvisRegel(SjekkOmPeriodenErEtterMaksgrenseForUttak.ID, SjekkOmPeriodenErEtterMaksgrenseForUttak.BESKRIVELSE) - .hvis(new SjekkOmPeriodenErEtterMaksgrenseForUttak(), - IkkeOppfylt.opprett("UT1085", IkkeOppfyltÅrsak.UTTAK_ETTER_3_ÅRSGRENSE, false, false)) - .ellers(sjekkOmPeriodeEtterNesteStønadsperiode()); + return rs.hvisRegel( + SjekkOmPeriodenErEtterMaksgrenseForUttak.ID, + SjekkOmPeriodenErEtterMaksgrenseForUttak.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenErEtterMaksgrenseForUttak(), + IkkeOppfylt.opprett("UT1085", IkkeOppfyltÅrsak.UTTAK_ETTER_3_ÅRSGRENSE, false, false)) + .ellers(sjekkOmPeriodeEtterNesteStønadsperiode()); } private Specification sjekkOmPeriodeEtterNesteStønadsperiode() { - return rs.hvisRegel(SjekkOmPeriodenErEtterNesteStønadsperiode.ID, SjekkOmPeriodenErEtterNesteStønadsperiode.BESKRIVELSE) - .hvis(new SjekkOmPeriodenErEtterNesteStønadsperiode(), sjekkOmGjenståendeDagerEtterNesteStønadsperiode()) - .ellers(sjekkOmUttaksperiodenEtterSøkersDødsdato()); + return rs.hvisRegel( + SjekkOmPeriodenErEtterNesteStønadsperiode.ID, + SjekkOmPeriodenErEtterNesteStønadsperiode.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenErEtterNesteStønadsperiode(), + sjekkOmGjenståendeDagerEtterNesteStønadsperiode()) + .ellers(sjekkOmUttaksperiodenEtterSøkersDødsdato()); } private Specification sjekkOmGjenståendeDagerEtterNesteStønadsperiode() { - return rs.hvisRegel(SjekkOmEtterNesteStønadsperiodeHarDisponibleDager.ID, SjekkOmEtterNesteStønadsperiodeHarDisponibleDager.BESKRIVELSE) - .hvis(new SjekkOmEtterNesteStønadsperiodeHarDisponibleDager(), sjekkOmUttaksperiodenEtterSøkersDødsdato()) - .ellers(IkkeOppfylt.opprett("UT1086", IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE, false, false)); + return rs.hvisRegel( + SjekkOmEtterNesteStønadsperiodeHarDisponibleDager.ID, + SjekkOmEtterNesteStønadsperiodeHarDisponibleDager.BESKRIVELSE) + .hvis( + new SjekkOmEtterNesteStønadsperiodeHarDisponibleDager(), + sjekkOmUttaksperiodenEtterSøkersDødsdato()) + .ellers(IkkeOppfylt.opprett("UT1086", IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE, false, false)); } - private Specification sjekkOmFødselsvilkåretErOppfylt() { return rs.hvisRegel(SjekkOmFødselsvilkåretErOppfylt.ID, "Er fødselsvilkåret oppfylt?") - .hvis(new SjekkOmFødselsvilkåretErOppfylt(), sjekkOmAdopsjonsvilkåretErOppfylt()) - .ellers(IkkeOppfylt.opprett("UT1251", IkkeOppfyltÅrsak.FØDSELSVILKÅRET_IKKE_OPPFYLT, false, false)); + .hvis(new SjekkOmFødselsvilkåretErOppfylt(), sjekkOmAdopsjonsvilkåretErOppfylt()) + .ellers(IkkeOppfylt.opprett("UT1251", IkkeOppfyltÅrsak.FØDSELSVILKÅRET_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmAdopsjonsvilkåretErOppfylt() { return rs.hvisRegel(SjekkOmAdopsjonsvilkåretErOppfylt.ID, "Er adopsjonsvilkåret oppfylt?") - .hvis(new SjekkOmAdopsjonsvilkåretErOppfylt(), sjekkOmForeldreansvarsvilkåretErOppfylt()) - .ellers(IkkeOppfylt.opprett("UT1252", IkkeOppfyltÅrsak.ADOPSJONSVILKÅRET_IKKE_OPPFYLT, false, false)); + .hvis(new SjekkOmAdopsjonsvilkåretErOppfylt(), sjekkOmForeldreansvarsvilkåretErOppfylt()) + .ellers(IkkeOppfylt.opprett("UT1252", IkkeOppfyltÅrsak.ADOPSJONSVILKÅRET_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmForeldreansvarsvilkåretErOppfylt() { return rs.hvisRegel(SjekkOmForeldreansvarsvilkåretErOppfylt.ID, "Er foreldreansvarsvilkåret oppfylt?") - .hvis(new SjekkOmForeldreansvarsvilkåretErOppfylt(), sjekkOmOpptjeningsvilkåretErOppfylt()) - .ellers(IkkeOppfylt.opprett("UT1253", IkkeOppfyltÅrsak.FORELDREANSVARSVILKÅRET_IKKE_OPPFYLT, false, false)); + .hvis(new SjekkOmForeldreansvarsvilkåretErOppfylt(), sjekkOmOpptjeningsvilkåretErOppfylt()) + .ellers(IkkeOppfylt.opprett( + "UT1253", IkkeOppfyltÅrsak.FORELDREANSVARSVILKÅRET_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmOpptjeningsvilkåretErOppfylt() { return rs.hvisRegel(SjekkOmOpptjeningsvilkåretErOppfylt.ID, "Er opptjeningsvilkåret oppfylt?") - .hvis(new SjekkOmOpptjeningsvilkåretErOppfylt(), sjekkOmPleiepenger()) - .ellers(IkkeOppfylt.opprett("UT1254", IkkeOppfyltÅrsak.OPPTJENINGSVILKÅRET_IKKE_OPPFYLT, false, false)); + .hvis(new SjekkOmOpptjeningsvilkåretErOppfylt(), sjekkOmPleiepenger()) + .ellers(IkkeOppfylt.opprett("UT1254", IkkeOppfyltÅrsak.OPPTJENINGSVILKÅRET_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmPleiepenger() { return rs.hvisRegel(SjekkOmPleiepenger.ID, SjekkOmPleiepenger.BESKRIVELSE) - .hvis(new SjekkOmPleiepenger(), sjekkOmBarnetsInnleggelse()) - .ellers(sjekkOmSamtykke()); + .hvis(new SjekkOmPleiepenger(), sjekkOmBarnetsInnleggelse()) + .ellers(sjekkOmSamtykke()); } private Specification sjekkOmBarnetsInnleggelse() { - return rs.hvisRegel(SjekkOmUtsettelsePgaBarnetsInnleggelse.ID, SjekkOmUtsettelsePgaBarnetsInnleggelse.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaBarnetsInnleggelse(), sjekkOmSamtykke()) - .ellers(sjekkOmBarnInnlagt()); + return rs.hvisRegel( + SjekkOmUtsettelsePgaBarnetsInnleggelse.ID, SjekkOmUtsettelsePgaBarnetsInnleggelse.BESKRIVELSE) + .hvis(new SjekkOmUtsettelsePgaBarnetsInnleggelse(), sjekkOmSamtykke()) + .ellers(sjekkOmBarnInnlagt()); } private Specification sjekkOmBarnInnlagt() { return rs.hvisRegel(SjekkOmBarnInnlagt.ID, SjekkOmBarnInnlagt.BESKRIVELSE) - .hvis(new SjekkOmBarnInnlagt(), - Manuellbehandling.opprett("UT1320", null, Manuellbehandlingårsak.OVERLAPPENDE_PLEIEPENGER_MED_INNLEGGELSE, false, false)) - .ellers(Manuellbehandling.opprett("UT1321", null, Manuellbehandlingårsak.OVERLAPPENDE_PLEIEPENGER_UTEN_INNLEGGELSE, false, false)); + .hvis( + new SjekkOmBarnInnlagt(), + Manuellbehandling.opprett( + "UT1320", + null, + Manuellbehandlingårsak.OVERLAPPENDE_PLEIEPENGER_MED_INNLEGGELSE, + false, + false)) + .ellers(Manuellbehandling.opprett( + "UT1321", + null, + Manuellbehandlingårsak.OVERLAPPENDE_PLEIEPENGER_UTEN_INNLEGGELSE, + false, + false)); } private Specification sjekkOmSamtykke() { if (fomSamtykke == null) { - fomSamtykke = rs.hvisRegel(SjekkOmHvisOverlapperSåSamtykkeMellomParter.ID, "Er det samtykke og overlappende periode?") - .hvis(new SjekkOmHvisOverlapperSåSamtykkeMellomParter(), sjekkOmBerørtBehandling()) - .ellers(IkkeOppfylt.opprett("UT1063", IkkeOppfyltÅrsak.IKKE_SAMTYKKE, false, false)); + fomSamtykke = rs.hvisRegel( + SjekkOmHvisOverlapperSåSamtykkeMellomParter.ID, "Er det samtykke og overlappende periode?") + .hvis(new SjekkOmHvisOverlapperSåSamtykkeMellomParter(), sjekkOmBerørtBehandling()) + .ellers(IkkeOppfylt.opprett("UT1063", IkkeOppfyltÅrsak.IKKE_SAMTYKKE, false, false)); } return fomSamtykke; } private Specification sjekkOmBerørtBehandling() { return rs.hvisRegel(SjekkOmBerørtBehandling.ID, SjekkOmBerørtBehandling.BESKRIVELSE) - .hvis(new SjekkOmBerørtBehandling(), sjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse()) - .ellers(sjekkOmTapendePeriode()); + .hvis(new SjekkOmBerørtBehandling(), sjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse()) + .ellers(sjekkOmTapendePeriode()); } private Specification sjekkOmTapendePeriode() { return rs.hvisRegel(SjekkOmTapendePeriode.ID, SjekkOmTapendePeriode.BESKRIVELSE) - .hvis(new SjekkOmTapendePeriode(), sjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse()) - .ellers(sjekkOmPeriodeErUtsettelse()); + .hvis(new SjekkOmTapendePeriode(), sjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse()) + .ellers(sjekkOmPeriodeErUtsettelse()); } private Specification sjekkOmPeriodeErUtsettelse() { return rs.hvisRegel(SjekkOmPeriodeErUtsettelse.ID, SjekkOmPeriodeErUtsettelse.BESKRIVELSE) - .hvis(new SjekkOmPeriodeErUtsettelse(), kreverBehandlingenSammenhengendeUttak()) - .ellers(sjekkOmManglendeSøktPeriode()); + .hvis(new SjekkOmPeriodeErUtsettelse(), kreverBehandlingenSammenhengendeUttak()) + .ellers(sjekkOmManglendeSøktPeriode()); } private Specification kreverBehandlingenSammenhengendeUttak() { - return rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) - .hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), new UtsettelseDelregelSammenhengendeUttak().getSpecification()) - .ellers(new UtsettelseDelregel().getSpecification()); + return rs.hvisRegel( + SjekkOmBehandlingKreverSammenhengendeUttak.ID, + SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) + .hvis( + new SjekkOmBehandlingKreverSammenhengendeUttak(), + new UtsettelseDelregelSammenhengendeUttak().getSpecification()) + .ellers(new UtsettelseDelregel().getSpecification()); } private Specification sjekkOmManglendeSøktPeriode() { - var sjekkOmSøktOverføringAvKvoteNode = rs.hvisRegel(SjekkOmSøktOmOverføringAvKvote.ID, "Er det søkt om overføring av kvote") - .hvis(new SjekkOmSøktOmOverføringAvKvote(), sjekkOmSøktGradering()) - .ellers(IkkeOppfylt.opprett("UT1160", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, false, false)); - - var sjekkOmTomForAlleSineKontoerNode = rs.hvisRegel(SjekkOmTomForAlleSineKontoer.ID, SjekkOmTomForAlleSineKontoer.BESKRIVELSE) - .hvis(new SjekkOmTomForAlleSineKontoer(), sjekkOmSøktOverføringAvKvoteNode) - .ellers(sjekkOmSøktGradering()); - - var sjekkOmForeldrepengerFørFødselNode = rs.hvisRegel(SjekkOmPeriodeErForeldrepengerFørFødsel.ID, ER_PERIODEN_FPFF) - .hvis(new SjekkOmPeriodeErForeldrepengerFørFødsel(), sjekkOmSøktGradering()) - .ellers(sjekkOmTomForAlleSineKontoerNode); - - var sjekkKontoErOpprettet = rs.hvisRegel(SjekkOmKontoErOpprettet.ID, - "Er det opprettet stønadskonto som tilsvarer stønadskonto i uttaksperioden?") - .hvis(new SjekkOmKontoErOpprettet(), sjekkOmForeldrepengerFørFødselNode) - .ellers(Manuellbehandling.opprett("UT1290", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, - false)); + var sjekkOmSøktOverføringAvKvoteNode = rs.hvisRegel( + SjekkOmSøktOmOverføringAvKvote.ID, "Er det søkt om overføring av kvote") + .hvis(new SjekkOmSøktOmOverføringAvKvote(), sjekkOmSøktGradering()) + .ellers(IkkeOppfylt.opprett("UT1160", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, false, false)); + + var sjekkOmTomForAlleSineKontoerNode = rs.hvisRegel( + SjekkOmTomForAlleSineKontoer.ID, SjekkOmTomForAlleSineKontoer.BESKRIVELSE) + .hvis(new SjekkOmTomForAlleSineKontoer(), sjekkOmSøktOverføringAvKvoteNode) + .ellers(sjekkOmSøktGradering()); + + var sjekkOmForeldrepengerFørFødselNode = rs.hvisRegel( + SjekkOmPeriodeErForeldrepengerFørFødsel.ID, ER_PERIODEN_FPFF) + .hvis(new SjekkOmPeriodeErForeldrepengerFørFødsel(), sjekkOmSøktGradering()) + .ellers(sjekkOmTomForAlleSineKontoerNode); + + var sjekkKontoErOpprettet = rs.hvisRegel( + SjekkOmKontoErOpprettet.ID, + "Er det opprettet stønadskonto som tilsvarer stønadskonto i uttaksperioden?") + .hvis(new SjekkOmKontoErOpprettet(), sjekkOmForeldrepengerFørFødselNode) + .ellers(Manuellbehandling.opprett( + "UT1290", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, + true, + false)); return rs.hvisRegel(SjekkOmManglendeSøktPeriode.ID, "Er det \"Manglende søkt periode\"?") - .hvis(new SjekkOmManglendeSøktPeriode(), new ManglendeSøktPeriodeDelregel().getSpecification()) - .ellers(sjekkKontoErOpprettet); + .hvis(new SjekkOmManglendeSøktPeriode(), new ManglendeSøktPeriodeDelregel().getSpecification()) + .ellers(sjekkKontoErOpprettet); } private Specification sjekkOmSøktGradering() { return rs.hvisRegel(SjekkOmSøktGradering.ID, "Er det søkt om gradering?") - .hvis(new SjekkOmSøktGradering(), sjekkOmSøktGradering100ProsentEllerMer()) - .ellers(sjekkOmPeriodeErStebarnsadopsjon()); + .hvis(new SjekkOmSøktGradering(), sjekkOmSøktGradering100ProsentEllerMer()) + .ellers(sjekkOmPeriodeErStebarnsadopsjon()); } private Specification sjekkOmSøktGradering100ProsentEllerMer() { - return rs.hvisRegel(SjekkOmSøktGraderingHundreProsentEllerMer.ID, "Er søkt arbeid 100 prosent eller mer i perioden?") - .hvis(new SjekkOmSøktGraderingHundreProsentEllerMer(), - Manuellbehandling.opprett("UT1180", IkkeOppfyltÅrsak.ARBEID_HUNDRE_PROSENT_ELLER_MER, Manuellbehandlingårsak.AVKLAR_ARBEID, true, - false)) - .ellers(sjekkOmPeriodeErStebarnsadopsjon()); + return rs.hvisRegel( + SjekkOmSøktGraderingHundreProsentEllerMer.ID, + "Er søkt arbeid 100 prosent eller mer i perioden?") + .hvis( + new SjekkOmSøktGraderingHundreProsentEllerMer(), + Manuellbehandling.opprett( + "UT1180", + IkkeOppfyltÅrsak.ARBEID_HUNDRE_PROSENT_ELLER_MER, + Manuellbehandlingårsak.AVKLAR_ARBEID, + true, + false)) + .ellers(sjekkOmPeriodeErStebarnsadopsjon()); } private Specification sjekkOmPeriodeErStebarnsadopsjon() { return rs.hvisRegel(SjekkOmDetErAdopsjonAvStebarn.ID, "Er det adopsjon av stebarn?") - .hvis(new SjekkOmDetErAdopsjonAvStebarn(), new StebarnsadopsjonDelRegel().getSpecification()) - .ellers(sjekkOmPeriodeErMødrekvote()); + .hvis(new SjekkOmDetErAdopsjonAvStebarn(), new StebarnsadopsjonDelRegel().getSpecification()) + .ellers(sjekkOmPeriodeErMødrekvote()); } private Specification sjekkOmPeriodeErMødrekvote() { return rs.hvisRegel(SjekkOmPeriodeErMødrekvote.ID, "Er det søkt om uttak av mødrekvote?") - .hvis(new SjekkOmPeriodeErMødrekvote(), new MødrekvoteDelregel().getSpecification()) - .ellers(sjekkOmFedrekvote()); + .hvis(new SjekkOmPeriodeErMødrekvote(), new MødrekvoteDelregel().getSpecification()) + .ellers(sjekkOmFedrekvote()); } private Specification sjekkOmFedrekvote() { return rs.hvisRegel(SjekkOmPeriodeErFedrekvote.ID, "Er det søkt om uttak av fedrekvote?") - .hvis(new SjekkOmPeriodeErFedrekvote(), new FedrekvoteDelregel().getSpecification()) - .ellers(sjekkOmFellesperiode()); + .hvis(new SjekkOmPeriodeErFedrekvote(), new FedrekvoteDelregel().getSpecification()) + .ellers(sjekkOmFellesperiode()); } private Specification sjekkOmFellesperiode() { return rs.hvisRegel(SjekkOmPeriodeErFellesperiode.ID, "Er det søkt om uttak av fellesperiode?") - .hvis(new SjekkOmPeriodeErFellesperiode(), new FellesperiodeDelregel().getSpecification()) - .ellers(sjekkOmPeriodeErForeldrepengerFørFødsel()); + .hvis(new SjekkOmPeriodeErFellesperiode(), new FellesperiodeDelregel().getSpecification()) + .ellers(sjekkOmPeriodeErForeldrepengerFørFødsel()); } private Specification sjekkOmPeriodeErForeldrepengerFørFødsel() { return rs.hvisRegel(SjekkOmPeriodeErForeldrepengerFørFødsel.ID, ER_PERIODEN_FPFF) - .hvis(new SjekkOmPeriodeErForeldrepengerFørFødsel(), sjekkOmFPFFGjelderFødsel()) - .ellers(new ForeldrepengerDelregel().getSpecification()); + .hvis(new SjekkOmPeriodeErForeldrepengerFørFødsel(), sjekkOmFPFFGjelderFødsel()) + .ellers(new ForeldrepengerDelregel().getSpecification()); } private Specification sjekkOmFPFFGjelderFødsel() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, GJELDER_FPFF_PERIODE_FØDSEL) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), new ForeldrepengerFørFødselDelregel().getSpecification()) - .ellers(Manuellbehandling.opprett("UT1092", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, false, false)); + .hvis( + new SjekkOmSøknadGjelderTerminEllerFødsel(), + new ForeldrepengerFørFødselDelregel().getSpecification()) + .ellers(Manuellbehandling.opprett( + "UT1092", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, false, false)); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FedrekvoteDelregel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FedrekvoteDelregel.java index da5cb702..9eaae29e 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FedrekvoteDelregel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FedrekvoteDelregel.java @@ -35,28 +35,33 @@ /** * Delregel innenfor regeltjenesten FastsettePeriodeRegel som fastsetter uttaksperioder med fedrekvote. - *

- * Utfall definisjoner:
- *

- * Utfall AVSLÅTT:
+ * + *

Utfall definisjoner:
+ * + *

Utfall AVSLÅTT:
* - Det er ikke nok dager igjen på stønadskontoen for fedrekvote.
* - Perioden starter før familiehendelsen (termin/fødsel).
* - Perioden starter i periode etter fødsel som er forbeholdt mor og har ikke gyldig grunn for dette.
- *

- * Utfall INNVILGET:
- * - Perioden er etter ukene etter fødsel som er forbeholdt mor og det er nok dager på stønadskontoen for fedrekvote.
- * - Perioden har gyldig grunn for å starte i ukene etter fødsel som er forbeholdt mor og det er nok dager på stønadskontoen for fedrekvote.
+ * + *

Utfall INNVILGET:
+ * - Perioden er etter ukene etter fødsel som er forbeholdt mor og det er nok dager på stønadskontoen for fedrekvote. + *
+ * - Perioden har gyldig grunn for å starte i ukene etter fødsel som er forbeholdt mor og det er nok dager på + * stønadskontoen for fedrekvote.
*/ - -@RuleDocumentation(value = FedrekvoteDelregel.ID, specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") +@RuleDocumentation( + value = FedrekvoteDelregel.ID, + specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") public class FedrekvoteDelregel implements RuleService { public static final String ID = "FP_VK 13"; private static final String ER_SØKER_FAR = "Er søker far?"; private static final String OVERFØRING_SYKDOM_SKADE = "Er det søkt om overføring som følge av sykdom/skade?"; - private static final String OVERFØRING_INNLEGGELSE = "Er det søkt om overføring som følge av innleggelse på institusjon?"; - private static final String OVERFØRING_ALENEOMSORG_ELLER_IKKE_RETT = "Er det søkt om overføring som følge av aleneomsorg eller annen forelder ikke har rett?"; + private static final String OVERFØRING_INNLEGGELSE = + "Er det søkt om overføring som følge av innleggelse på institusjon?"; + private static final String OVERFØRING_ALENEOMSORG_ELLER_IKKE_RETT = + "Er det søkt om overføring som følge av aleneomsorg eller annen forelder ikke har rett?"; private final Ruleset rs = new Ruleset<>(); @@ -67,165 +72,208 @@ public class FedrekvoteDelregel implements RuleService @Override public Specification getSpecification() { return rs.hvisRegel(SjekkOmOppholdKvoteAnnenForelder.ID, "Er det søkt om opphold av fedrekvoten?") - .hvis(new SjekkOmOppholdKvoteAnnenForelder(), sjekkOmNoenDisponibleDager()) - .ellers(sjekkOmSøkerErFar()); + .hvis(new SjekkOmOppholdKvoteAnnenForelder(), sjekkOmNoenDisponibleDager()) + .ellers(sjekkOmSøkerErFar()); } private Specification sjekkOmNoenDisponibleDager() { - return rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, "Er det noen disponible stønadsdager på fedrekvoten?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), Oppfylt.opprettForOppholds("UT1263", true, false)) - .ellers(Manuellbehandling.opprett("UT1262", null, Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER, true, false)); + return rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det noen disponible stønadsdager på fedrekvoten?") + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + Oppfylt.opprettForOppholds("UT1263", true, false)) + .ellers(Manuellbehandling.opprett( + "UT1262", null, Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER, true, false)); } private Specification sjekkOmPeriodenStarterFørOmsorgsovertakelse() { return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), - IkkeOppfylt.opprett("UT1231", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) - .ellers(delFlytForVanligUttak()); + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + IkkeOppfylt.opprett("UT1231", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) + .ellers(delFlytForVanligUttak()); } private Specification sjekkOmDetErFødsel() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmPeriodeStarterFørUke7EtterFamiliehendelse()) - .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelse()); + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmPeriodeStarterFørUke7EtterFamiliehendelse()) + .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelse()); } private Specification sjekkOmSøkerErFar() { return rs.hvisRegel(SjekkOmSøkerErMor.ID, ER_SØKER_FAR) - .hvis(new SjekkOmSøkerErMor(), sjekkOmMorSøktOmOverføringAvFedrekvote()) - .ellers(sjekkOmMorHarRett()); + .hvis(new SjekkOmSøkerErMor(), sjekkOmMorSøktOmOverføringAvFedrekvote()) + .ellers(sjekkOmMorHarRett()); } private Specification sjekkOmMorHarRett() { return rs.hvisRegel(SjekkOmMorHarRett.ID, "Er det avklart at mor har rett?") - .hvis(new SjekkOmMorHarRett(), sjekkOmDetErFødsel()) - .ellers(IkkeOppfylt.opprett("UT1292", IkkeOppfyltÅrsak.MOR_IKKE_RETT_FK, true, false)); + .hvis(new SjekkOmMorHarRett(), sjekkOmDetErFødsel()) + .ellers(IkkeOppfylt.opprett("UT1292", IkkeOppfyltÅrsak.MOR_IKKE_RETT_FK, true, false)); } private Specification sjekkOmOverføringPgaInnleggelse() { return rs.hvisRegel(SjekkOmOverføringPgaInnleggelse.ID, OVERFØRING_INNLEGGELSE) - .hvis(new SjekkOmOverføringPgaInnleggelse(), sjekkOmGyldigOverføringPgaInnleggelse()) - .ellers(sjekkOmOverføringPgaSykdomSkade()); + .hvis(new SjekkOmOverføringPgaInnleggelse(), sjekkOmGyldigOverføringPgaInnleggelse()) + .ellers(sjekkOmOverføringPgaSykdomSkade()); } private Specification sjekkOmOverføringPgaSykdomSkade() { return rs.hvisRegel(SjekkOmOverføringPgaSykdomSkade.ID, OVERFØRING_SYKDOM_SKADE) - .hvis(new SjekkOmOverføringPgaSykdomSkade(), sjekkOmGyldigOverføringPgaSykdomSkade()) - .ellers(sjekkOmOverføringPgaAleneomsorgEllerIkkeRett()); + .hvis(new SjekkOmOverføringPgaSykdomSkade(), sjekkOmGyldigOverføringPgaSykdomSkade()) + .ellers(sjekkOmOverføringPgaAleneomsorgEllerIkkeRett()); } private Specification sjekkOmOverføringPgaAleneomsorgEllerIkkeRett() { return rs.hvisRegel(SjekkOmOverføringPgaAleneomsorg.ID, OVERFØRING_ALENEOMSORG_ELLER_IKKE_RETT) - .hvis(new SjekkOmOverføringPgaAleneomsorg(), sjekkOmGyldigOverføringPgaAleneomsorg()) - .ellers(sjekkOmGyldigOverføringPgaIkkeRett()); + .hvis(new SjekkOmOverføringPgaAleneomsorg(), sjekkOmGyldigOverføringPgaAleneomsorg()) + .ellers(sjekkOmGyldigOverføringPgaIkkeRett()); } private Specification sjekkOmGyldigOverføringPgaInnleggelse() { - return rs.hvisRegel(SjekkOmGyldigOverføringPgaInnleggelse.ID, - "Er det avklart at overføring av kvoten er gyldig grunn av innleggelse på institusjon?") - .hvis(new SjekkOmGyldigOverføringPgaInnleggelse(), sjekkOmDetErFødsel()) - .ellers(IkkeOppfylt.opprett("UT1033", IkkeOppfyltÅrsak.DEN_ANDRE_PART_INNLEGGELSE_IKKE_OPPFYLT, false, false)); + return rs.hvisRegel( + SjekkOmGyldigOverføringPgaInnleggelse.ID, + "Er det avklart at overføring av kvoten er gyldig grunn av innleggelse på institusjon?") + .hvis(new SjekkOmGyldigOverføringPgaInnleggelse(), sjekkOmDetErFødsel()) + .ellers(IkkeOppfylt.opprett( + "UT1033", IkkeOppfyltÅrsak.DEN_ANDRE_PART_INNLEGGELSE_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmGyldigOverføringPgaSykdomSkade() { - return rs.hvisRegel(SjekkOmGyldigOverføringPgaSykdomSkade.ID, "Er det avklart at overføring av kvoten er gyldig grunn av sykdom/skade?") - .hvis(new SjekkOmGyldigOverføringPgaSykdomSkade(), sjekkOmDetErFødsel()) - .ellers(IkkeOppfylt.opprett("UT1034", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, false, false)); + return rs.hvisRegel( + SjekkOmGyldigOverføringPgaSykdomSkade.ID, + "Er det avklart at overføring av kvoten er gyldig grunn av sykdom/skade?") + .hvis(new SjekkOmGyldigOverføringPgaSykdomSkade(), sjekkOmDetErFødsel()) + .ellers(IkkeOppfylt.opprett( + "UT1034", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmGyldigOverføringPgaAleneomsorg() { - return rs.hvisRegel(SjekkOmGyldigOverføringPgaAleneomsorg.ID, "Er det avklart at overføring av kvoten er gyldig på grunn av aleneomsorg?") - .hvis(new SjekkOmGyldigOverføringPgaAleneomsorg(), sjekkOmDetErFødsel()) - .ellers(IkkeOppfylt.opprett("UT1296", IkkeOppfyltÅrsak.ALENEOMSORG_IKKE_OPPFYLT, false, false)); + return rs.hvisRegel( + SjekkOmGyldigOverføringPgaAleneomsorg.ID, + "Er det avklart at overføring av kvoten er gyldig på grunn av aleneomsorg?") + .hvis(new SjekkOmGyldigOverføringPgaAleneomsorg(), sjekkOmDetErFødsel()) + .ellers(IkkeOppfylt.opprett("UT1296", IkkeOppfyltÅrsak.ALENEOMSORG_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmGyldigOverføringPgaIkkeRett() { - return rs.hvisRegel(SjekkOmGyldigOverføringPgaIkkeRett.ID, - "Er det avklart at overføring av kvoten er gyldig på grunn av annen forelder ikke har rett?") - .hvis(new SjekkOmGyldigOverføringPgaIkkeRett(), sjekkOmDetErFødsel()) - .ellers(IkkeOppfylt.opprett("UT1297", IkkeOppfyltÅrsak.DEN_ANDRE_PART_IKKE_RETT_IKKE_OPPFYLT, false, false)); + return rs.hvisRegel( + SjekkOmGyldigOverføringPgaIkkeRett.ID, + "Er det avklart at overføring av kvoten er gyldig på grunn av annen forelder ikke har rett?") + .hvis(new SjekkOmGyldigOverføringPgaIkkeRett(), sjekkOmDetErFødsel()) + .ellers(IkkeOppfylt.opprett( + "UT1297", IkkeOppfyltÅrsak.DEN_ANDRE_PART_IKKE_RETT_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmMorSøktOmOverføringAvFedrekvote() { return rs.hvisRegel(SjekkOmSøktOmOverføringAvKvote.ID, "Har mor søkt om overføring av fedrekvoten?") - .hvis(new SjekkOmSøktOmOverføringAvKvote(), sjekkOmOverføringPgaInnleggelse()) - .ellers(Manuellbehandling.opprett("UT1032", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, - Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); + .hvis(new SjekkOmSøktOmOverføringAvKvote(), sjekkOmOverføringPgaInnleggelse()) + .ellers(Manuellbehandling.opprett( + "UT1032", + IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, + Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, + true, + false)); } - public Specification sjekkOmPeriodeStarterFørUke7EtterFamiliehendelse() { return rs.hvisRegel(SjekkOmPeriodenStarterFørUke7.ID, "Starter perioden før uke 7 etter termin/fødsel?") - .hvis(new SjekkOmPeriodenStarterFørUke7(), sjekkOmFarsUttakRundtFødsel()) - .ellers(delFlytForVanligUttak()); + .hvis(new SjekkOmPeriodenStarterFørUke7(), sjekkOmFarsUttakRundtFødsel()) + .ellers(delFlytForVanligUttak()); } public Specification sjekkOmFarsUttakRundtFødsel() { return rs.hvisRegel(SjekkOmFarsUttakRundtFødselTilgjengeligeDager.ID, "Er det hjemlet fars uttak rundt fødsel?") - .hvis(new SjekkOmFarsUttakRundtFødselTilgjengeligeDager(), delFlytForTidligUttak()) - .ellers(uttakFørTerminFødsel()); + .hvis(new SjekkOmFarsUttakRundtFødselTilgjengeligeDager(), delFlytForTidligUttak()) + .ellers(uttakFørTerminFødsel()); } public Specification sjekkOmPeriodenGjelderFlerbarnsdager() { return rs.hvisRegel(SjekkOmPeriodenGjelderFlerbarnsdager.ID, "Gjelder perioden flerbarnsdager?") - .hvis(new SjekkOmPeriodenGjelderFlerbarnsdager(), delFlytForTidligUttak()) - .ellers(gyldigGrunnForTidligUttak()); + .hvis(new SjekkOmPeriodenGjelderFlerbarnsdager(), delFlytForTidligUttak()) + .ellers(gyldigGrunnForTidligUttak()); } private Specification uttakFørTerminFødsel() { return rs.hvisRegel(SjekkOmPeriodenSlutterFørFamiliehendelse.ID, "Skal uttaksperioden være før termin/fødsel?") - .hvis(new SjekkOmPeriodenSlutterFørFamiliehendelse(), - Manuellbehandling.opprett("UT1020", IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, false, - false)) - .ellers(sjekkOmPeriodenGjelderFlerbarnsdager()); + .hvis( + new SjekkOmPeriodenSlutterFørFamiliehendelse(), + Manuellbehandling.opprett( + "UT1020", + IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, + Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, + false, + false)) + .ellers(sjekkOmPeriodenGjelderFlerbarnsdager()); } private Specification gyldigGrunnForTidligUttak() { - return rs.hvisRegel(SjekkGyldigGrunnForTidligOppstartHelePerioden.ID, "Foreligger det gyldig grunn for hele perioden for tidlig oppstart?") - .hvis(new SjekkGyldigGrunnForTidligOppstartHelePerioden(), delFlytForTidligUttak()) - .ellers(Manuellbehandling.opprett("UT1021", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, - Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, false, false)); + return rs.hvisRegel( + SjekkGyldigGrunnForTidligOppstartHelePerioden.ID, + "Foreligger det gyldig grunn for hele perioden for tidlig oppstart?") + .hvis(new SjekkGyldigGrunnForTidligOppstartHelePerioden(), delFlytForTidligUttak()) + .ellers(Manuellbehandling.opprett( + "UT1021", + IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, + Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, + false, + false)); } private Specification delFlytForTidligUttak() { var graderingIPeriodenNode = rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprett("UT1217", InnvilgetÅrsak.GRADERING_KVOTE_ELLER_OVERFØRT_KVOTE, true)) - .ellers(Oppfylt.opprett("UT1026", InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, true)); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett("UT1217", InnvilgetÅrsak.GRADERING_KVOTE_ELLER_OVERFØRT_KVOTE, true)) + .ellers(Oppfylt.opprett("UT1026", InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, true)); var erSøkerFar = rs.hvisRegel(SjekkOmSøkerErMor.ID, ER_SØKER_FAR) - .hvis(new SjekkOmSøkerErMor(), new OverføringDelregel().getSpecification()) - .ellers(graderingIPeriodenNode); - - var noenDisponibleDagerNode = rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - "Er det disponibelt antall stønadsdager på fedrekvoten?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), erSøkerFar) - .ellers( - Manuellbehandling.opprett("UT1022", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false)); + .hvis(new SjekkOmSøkerErMor(), new OverføringDelregel().getSpecification()) + .ellers(graderingIPeriodenNode); + + var noenDisponibleDagerNode = rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det disponibelt antall stønadsdager på fedrekvoten?") + .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), erSøkerFar) + .ellers(Manuellbehandling.opprett( + "UT1022", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM, + true, + false)); return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), noenDisponibleDagerNode) - .ellers(IkkeOppfylt.opprett("UT1025", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); + .hvis(new SjekkOmOmsorgHelePerioden(), noenDisponibleDagerNode) + .ellers(IkkeOppfylt.opprett("UT1025", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); } private Specification delFlytForVanligUttak() { var graderingIPeriodenNode = rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprett("UT1218", InnvilgetÅrsak.GRADERING_KVOTE_ELLER_OVERFØRT_KVOTE, true)) - .ellers(Oppfylt.opprett("UT1031", InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, true)); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett("UT1218", InnvilgetÅrsak.GRADERING_KVOTE_ELLER_OVERFØRT_KVOTE, true)) + .ellers(Oppfylt.opprett("UT1031", InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, true)); var erSøkerFar = rs.hvisRegel(SjekkOmSøkerErMor.ID, ER_SØKER_FAR) - .hvis(new SjekkOmSøkerErMor(), new OverføringDelregel().getSpecification()) - .ellers(graderingIPeriodenNode); - - var noenDisponibleDagerNode = rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - "Er det disponibelt antall stønadsdager på fedrekvoten?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), erSøkerFar) - .ellers( - Manuellbehandling.opprett("UT1178", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false)); + .hvis(new SjekkOmSøkerErMor(), new OverføringDelregel().getSpecification()) + .ellers(graderingIPeriodenNode); + + var noenDisponibleDagerNode = rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det disponibelt antall stønadsdager på fedrekvoten?") + .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), erSøkerFar) + .ellers(Manuellbehandling.opprett( + "UT1178", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM, + true, + false)); return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), noenDisponibleDagerNode) - .ellers(IkkeOppfylt.opprett("UT1030", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); + .hvis(new SjekkOmOmsorgHelePerioden(), noenDisponibleDagerNode) + .ellers(IkkeOppfylt.opprett("UT1030", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FellesperiodeDelregel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FellesperiodeDelregel.java index a1fa3e8b..79f46fff 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FellesperiodeDelregel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FellesperiodeDelregel.java @@ -30,20 +30,22 @@ /** * Delregel innenfor regeltjenesten FastsettePeriodeRegel som fastsette uttak av fellesperiode. - *

- * Utfall definisjoner:
- *

- * Utfall AVSLÅTT:
+ * + *

Utfall definisjoner:
+ * + *

Utfall AVSLÅTT:
* - Det er ikke nok dager igjen på stønadskontoen for fellesperioden.
- * - Perioden starter for tidlig før familiehendelsen (termin/fødsel) - * - Perioden starter i periode etter fødsel som er forbeholdt mor.
- *

- * Utfall INNVILGET:
+ * - Perioden starter for tidlig før familiehendelsen (termin/fødsel) - Perioden starter i periode etter fødsel som er + * forbeholdt mor.
+ * + *

Utfall INNVILGET:
* - Perioden starter før fødsel og det er nok dager på stønadskonto for fellesperiode.
- * - Perioden er etter ukene etter fødsel som er forbeholdt mor og det er nok dager på stønadskontoen for fellesperiode.
+ * - Perioden er etter ukene etter fødsel som er forbeholdt mor og det er nok dager på stønadskontoen for fellesperiode. + *
*/ - -@RuleDocumentation(value = FellesperiodeDelregel.ID, specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") +@RuleDocumentation( + value = FellesperiodeDelregel.ID, + specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") public class FellesperiodeDelregel implements RuleService { public static final String ID = "FP_VK 19"; @@ -57,186 +59,263 @@ public class FellesperiodeDelregel implements RuleService getSpecification() { return rs.hvisRegel(SjekkOmOppholdFellesperiodeAnnenForelder.ID, "Er det søkt om opphold av fellesperioden?") - .hvis(new SjekkOmOppholdFellesperiodeAnnenForelder(), sjekkOmNoenDisponibleDager()) - .ellers(sjekkOmMor()); + .hvis(new SjekkOmOppholdFellesperiodeAnnenForelder(), sjekkOmNoenDisponibleDager()) + .ellers(sjekkOmMor()); } private Specification sjekkOmNoenDisponibleDager() { - return rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - "Er det noen disponible stønadsdager på fellesperiode?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), Oppfylt.opprettForOppholds("UT1265", true, false)) - .ellers(Manuellbehandling.opprett("UT1264", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, - Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER, true, false)); + return rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det noen disponible stønadsdager på fellesperiode?") + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + Oppfylt.opprettForOppholds("UT1265", true, false)) + .ellers(Manuellbehandling.opprett( + "UT1264", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER, + true, + false)); } private Specification sjekkOmMor() { return rs.hvisRegel(SjekkOmSøkerErMor.ID, "Gjelder søknaden fellesperiode for mor") - .hvis(new SjekkOmSøkerErMor(), sjekkOmMorGjelderFødsel()) - .ellers(sjekkOmMorHarRett()); + .hvis(new SjekkOmSøkerErMor(), sjekkOmMorGjelderFødsel()) + .ellers(sjekkOmMorHarRett()); } private Specification sjekkOmMorHarRett() { return rs.hvisRegel(SjekkOmMorHarRett.ID, "Er det avklart at mor har rett?") - .hvis(new SjekkOmMorHarRett(), sjekkOmFarGjelderFødsel()) - .ellers(IkkeOppfylt.opprett("UT1293", IkkeOppfyltÅrsak.MOR_IKKE_RETT_FP, true, false)); + .hvis(new SjekkOmMorHarRett(), sjekkOmFarGjelderFødsel()) + .ellers(IkkeOppfylt.opprett("UT1293", IkkeOppfyltÅrsak.MOR_IKKE_RETT_FP, true, false)); } private Specification sjekkOmFarGjelderFødsel() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUttakSkjerFørDeFørsteUkene()) - .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelseFar()); + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUttakSkjerFørDeFørsteUkene()) + .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelseFar()); } private Specification sjekkOmMorGjelderFødsel() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmPeriodenStarterFørLovligUttakFørFamiliehendelse()) - .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelseMor()); + .hvis( + new SjekkOmSøknadGjelderTerminEllerFødsel(), + sjekkOmPeriodenStarterFørLovligUttakFørFamiliehendelse()) + .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelseMor()); } private Specification sjekkOmPeriodenStarterFørOmsorgsovertakelseFar() { return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), - IkkeOppfylt.opprett("UT1232", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) - .ellers(delFlytForVanligUttak()); + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + IkkeOppfylt.opprett("UT1232", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) + .ellers(delFlytForVanligUttak()); } private Specification sjekkOmPeriodenStarterFørOmsorgsovertakelseMor() { return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), - IkkeOppfylt.opprett("UT1235", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) - .ellers(sjekkSaldoForMor()); + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + IkkeOppfylt.opprett("UT1235", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) + .ellers(sjekkSaldoForMor()); } private Specification sjekkOmPeriodenStarterFørLovligUttakFørFamiliehendelse() { - return rs.hvisRegel(SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.ID, SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.BESKRIVELSE) - .hvis(new SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin(), - IkkeOppfylt.opprett("UT1040", IkkeOppfyltÅrsak.MOR_SØKER_FELLESPERIODE_FØR_12_UKER_FØR_TERMIN_FØDSEL, false, false)) - .ellers(sjekkOmPeriodenStarterFørFamilieHendelse()); + return rs.hvisRegel( + SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.ID, + SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin(), + IkkeOppfylt.opprett( + "UT1040", + IkkeOppfyltÅrsak.MOR_SØKER_FELLESPERIODE_FØR_12_UKER_FØR_TERMIN_FØDSEL, + false, + false)) + .ellers(sjekkOmPeriodenStarterFørFamilieHendelse()); } private Specification sjekkOmPeriodenStarterFørFamilieHendelse() { - return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, SjekkOmPeriodenStarterFørFamiliehendelse.BESKRIVELSE) - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), sjekkOmGraderingIPerioden()) - .ellers(sjekkOmUttakSkjerEtterDeFørsteUkene()); + return rs.hvisRegel( + SjekkOmPeriodenStarterFørFamiliehendelse.ID, + SjekkOmPeriodenStarterFørFamiliehendelse.BESKRIVELSE) + .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), sjekkOmGraderingIPerioden()) + .ellers(sjekkOmUttakSkjerEtterDeFørsteUkene()); } private Specification sjekkOmGraderingIPerioden() { return rs.hvisRegel(SjekkOmGradertPeriode.ID, "Er perioden gradert?") - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprettMedAvslåttGradering("UT1064", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, true)) - .ellers(Oppfylt.opprett("UT1041", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprettMedAvslåttGradering( + "UT1064", + InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, + GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, + true)) + .ellers(Oppfylt.opprett("UT1041", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)); } private Specification sjekkOmUttakSkjerEtterDeFørsteUkene() { return rs.hvisRegel(SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) - .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), sjekkSaldoForMor()) - .ellers(Manuellbehandling.opprett("UT1048", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); + .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), sjekkSaldoForMor()) + .ellers(Manuellbehandling.opprett( + "UT1048", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); } private Specification sjekkSaldoForMor() { - var erDetGraderingIPeriodenMedDagerPåNoenAktiviteterNode = rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprett("UT1219", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)) - .ellers(Oppfylt.opprett("UT1047", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)); - - var noenTilgjengligeDagerNode = rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - "Er det tilgjengelige dager på fellesperioden?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), erDetGraderingIPeriodenMedDagerPåNoenAktiviteterNode) - .ellers( - Manuellbehandling.opprett("UT1043", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false)); - - var sjekkOmTrekkesDager = rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) - .hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), IkkeOppfylt.opprett("UT1046", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, true, false)) - .ellers(IkkeOppfylt.opprett("UT1046", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, false, false)); + var erDetGraderingIPeriodenMedDagerPåNoenAktiviteterNode = rs.hvisRegel( + SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett("UT1219", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)) + .ellers(Oppfylt.opprett("UT1047", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)); + + var noenTilgjengligeDagerNode = rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det tilgjengelige dager på fellesperioden?") + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + erDetGraderingIPeriodenMedDagerPåNoenAktiviteterNode) + .ellers(Manuellbehandling.opprett( + "UT1043", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM, + true, + false)); + + var sjekkOmTrekkesDager = rs.hvisRegel( + SjekkOmBehandlingKreverSammenhengendeUttak.ID, + SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) + .hvis( + new SjekkOmBehandlingKreverSammenhengendeUttak(), + IkkeOppfylt.opprett("UT1046", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, true, false)) + .ellers(IkkeOppfylt.opprett("UT1046", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, false, false)); return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), noenTilgjengligeDagerNode) - .ellers(sjekkOmTrekkesDager); + .hvis(new SjekkOmOmsorgHelePerioden(), noenTilgjengligeDagerNode) + .ellers(sjekkOmTrekkesDager); } private Specification sjekkOmUttakSkjerFørDeFørsteUkene() { return rs.hvisRegel(SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) - .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), delFlytForVanligUttak()) - .ellers(sjekkOmPeriodenSlutterFørFamiliehendelse()); + .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), delFlytForVanligUttak()) + .ellers(sjekkOmPeriodenSlutterFørFamiliehendelse()); } private Specification sjekkOmPeriodenGjelderFlerbarnsdager() { return rs.hvisRegel(SjekkOmPeriodenGjelderFlerbarnsdager.ID, SjekkOmPeriodenGjelderFlerbarnsdager.BESKRIVELSE) - .hvis(new SjekkOmPeriodenGjelderFlerbarnsdager(), delFlytForTidligUttak()) - .ellers(sjekkGyldigGrunnForTidligOppstartHelePerioden()); + .hvis(new SjekkOmPeriodenGjelderFlerbarnsdager(), delFlytForTidligUttak()) + .ellers(sjekkGyldigGrunnForTidligOppstartHelePerioden()); } private Specification sjekkOmPeriodenSlutterFørFamiliehendelse() { return rs.hvisRegel(SjekkOmPeriodenSlutterFørFamiliehendelse.ID, "Skal uttaksperioden være før termin/fødsel?") - .hvis(new SjekkOmPeriodenSlutterFørFamiliehendelse(), - Manuellbehandling.opprett("UT1049", IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, false, - false)) - .ellers(sjekkOmPeriodenGjelderFlerbarnsdager()); + .hvis( + new SjekkOmPeriodenSlutterFørFamiliehendelse(), + Manuellbehandling.opprett( + "UT1049", + IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, + Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, + false, + false)) + .ellers(sjekkOmPeriodenGjelderFlerbarnsdager()); } private Specification sjekkGyldigGrunnForTidligOppstartHelePerioden() { - return rs.hvisRegel(SjekkGyldigGrunnForTidligOppstartHelePerioden.ID, "Foreligger det gyldig grunn for hele perioden for tidlig oppstart?") - .hvis(new SjekkGyldigGrunnForTidligOppstartHelePerioden(), delFlytForTidligUttak()) - .ellers(Manuellbehandling.opprett("UT1050", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, - Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, false, false)); + return rs.hvisRegel( + SjekkGyldigGrunnForTidligOppstartHelePerioden.ID, + "Foreligger det gyldig grunn for hele perioden for tidlig oppstart?") + .hvis(new SjekkGyldigGrunnForTidligOppstartHelePerioden(), delFlytForTidligUttak()) + .ellers(Manuellbehandling.opprett( + "UT1050", + IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, + Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, + false, + false)); } private Specification delFlytForTidligUttak() { - var erDetGraderingIPeriodenMedDagerPåAlleAktiviteterNode = rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprett("UT1255", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)) - .ellers(Oppfylt.opprett("UT1256", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)); - - var noenDisponibleDagerNode = rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), erDetGraderingIPeriodenMedDagerPåAlleAktiviteterNode) - .ellers( - Manuellbehandling.opprett("UT1257", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false)); + var erDetGraderingIPeriodenMedDagerPåAlleAktiviteterNode = rs.hvisRegel( + SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett("UT1255", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)) + .ellers(Oppfylt.opprett("UT1256", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)); + + var noenDisponibleDagerNode = rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + erDetGraderingIPeriodenMedDagerPåAlleAktiviteterNode) + .ellers(Manuellbehandling.opprett( + "UT1257", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM, + true, + false)); return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), noenDisponibleDagerNode) - .ellers(IkkeOppfylt.opprett("UT1054", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); + .hvis(new SjekkOmOmsorgHelePerioden(), noenDisponibleDagerNode) + .ellers(IkkeOppfylt.opprett("UT1054", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); } private Specification sjekkOmGradertePeriodenGjelderFlerbarnsdager() { return rs.hvisRegel(SjekkOmPeriodenGjelderFlerbarnsdager.ID, SjekkOmPeriodenGjelderFlerbarnsdager.BESKRIVELSE) - .hvis(new SjekkOmPeriodenGjelderFlerbarnsdager(), - Oppfylt.opprett("UT1270", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)) - .ellers(sjekkOmMorErIAktivitetIGradertPeriodeUtenFlerbarnsdager()); + .hvis( + new SjekkOmPeriodenGjelderFlerbarnsdager(), + Oppfylt.opprett("UT1270", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)) + .ellers(sjekkOmMorErIAktivitetIGradertPeriodeUtenFlerbarnsdager()); } private Specification sjekkOmMorErIAktivitetIGradertPeriodeUtenFlerbarnsdager() { return rs.hvisRegel(SjekkOmMorErIAktivitet.ID, SjekkOmMorErIAktivitet.BESKRIVELSE) - .hvis(new SjekkOmMorErIAktivitet(), Oppfylt.opprett("UT1272", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)) - .ellers(new AvslagAktivitetskravDelregel().getSpecification()); + .hvis( + new SjekkOmMorErIAktivitet(), + Oppfylt.opprett("UT1272", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)) + .ellers(new AvslagAktivitetskravDelregel().getSpecification()); } private Specification delFlytForVanligUttak() { - var sjekkOmMorErIAktivitetIPerioden = rs.hvisRegel(SjekkOmMorErIAktivitet.ID, SjekkOmMorErIAktivitet.BESKRIVELSE) - .hvis(new SjekkOmMorErIAktivitet(), Oppfylt.opprett("UT1258", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)) - .ellers(new AvslagAktivitetskravDelregel().getSpecification()); - - var sjekkOmPeriodenGjelderFlerbarnsdager = rs.hvisRegel(SjekkOmPeriodenGjelderFlerbarnsdager.ID, - SjekkOmPeriodenGjelderFlerbarnsdager.BESKRIVELSE) - .hvis(new SjekkOmPeriodenGjelderFlerbarnsdager(), Oppfylt.opprett("UT1271", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)) - .ellers(sjekkOmMorErIAktivitetIPerioden); + var sjekkOmMorErIAktivitetIPerioden = rs.hvisRegel( + SjekkOmMorErIAktivitet.ID, SjekkOmMorErIAktivitet.BESKRIVELSE) + .hvis( + new SjekkOmMorErIAktivitet(), + Oppfylt.opprett("UT1258", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)) + .ellers(new AvslagAktivitetskravDelregel().getSpecification()); + var sjekkOmPeriodenGjelderFlerbarnsdager = rs.hvisRegel( + SjekkOmPeriodenGjelderFlerbarnsdager.ID, SjekkOmPeriodenGjelderFlerbarnsdager.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenGjelderFlerbarnsdager(), + Oppfylt.opprett("UT1271", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, true)) + .ellers(sjekkOmMorErIAktivitetIPerioden); var omGradertPeriodeNode = rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), sjekkOmGradertePeriodenGjelderFlerbarnsdager()) - .ellers(sjekkOmPeriodenGjelderFlerbarnsdager); - - var noenDisponibleDagerNode = rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - "Er det disponibelt antall stønadsdager på fedrekvoten?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), omGradertPeriodeNode) - .ellers( - Manuellbehandling.opprett("UT1146", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false)); - - var sjekkOmTrekkesDager = rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) - .hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), IkkeOppfylt.opprett("UT1060", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)) - .ellers(IkkeOppfylt.opprett("UT1060", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, false, false)); + .hvis(new SjekkOmGradertPeriode(), sjekkOmGradertePeriodenGjelderFlerbarnsdager()) + .ellers(sjekkOmPeriodenGjelderFlerbarnsdager); + + var noenDisponibleDagerNode = rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det disponibelt antall stønadsdager på fedrekvoten?") + .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), omGradertPeriodeNode) + .ellers(Manuellbehandling.opprett( + "UT1146", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM, + true, + false)); + + var sjekkOmTrekkesDager = rs.hvisRegel( + SjekkOmBehandlingKreverSammenhengendeUttak.ID, + SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) + .hvis( + new SjekkOmBehandlingKreverSammenhengendeUttak(), + IkkeOppfylt.opprett("UT1060", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)) + .ellers(IkkeOppfylt.opprett("UT1060", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, false, false)); return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), noenDisponibleDagerNode) - .ellers(sjekkOmTrekkesDager); + .hvis(new SjekkOmOmsorgHelePerioden(), noenDisponibleDagerNode) + .ellers(sjekkOmTrekkesDager); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerDelregel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerDelregel.java index fc9429ee..6c942a84 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerDelregel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerDelregel.java @@ -37,7 +37,9 @@ import no.nav.fpsak.nare.specification.ConditionalOrSpecification; import no.nav.fpsak.nare.specification.Specification; -@RuleDocumentation(value = ForeldrepengerDelregel.ID, specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") +@RuleDocumentation( + value = ForeldrepengerDelregel.ID, + specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") public class ForeldrepengerDelregel implements RuleService { public static final String ID = "FP_VK XX10"; @@ -55,255 +57,332 @@ public class ForeldrepengerDelregel implements RuleService getSpecification() { return rs.hvisRegel(SjekkOmSøkerErMor.ID, SjekkOmSøkerErMor.BESKRIVELSE) - .hvis(new SjekkOmSøkerErMor(), sjekkOmDetErFødselMor()) - .ellers(sjekkOmDetErFødselFar()); + .hvis(new SjekkOmSøkerErMor(), sjekkOmDetErFødselMor()) + .ellers(sjekkOmDetErFødselFar()); } private Specification sjekkOmDetErFødselMor() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, FØDSEL) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUttaketStarterFørLovligUttakFørFamiliehendelse()) - .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelseMor()); + .hvis( + new SjekkOmSøknadGjelderTerminEllerFødsel(), + sjekkOmUttaketStarterFørLovligUttakFørFamiliehendelse()) + .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelseMor()); } private Specification sjekkOmPeriodenStarterFørOmsorgsovertakelseMor() { return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), - IkkeOppfylt.opprett("UT1236", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) - .ellers(sjekkOmMorHarOmsorgForBarnet()); + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + IkkeOppfylt.opprett("UT1236", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) + .ellers(sjekkOmMorHarOmsorgForBarnet()); } private Specification sjekkOmDetErFødselFar() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, FØDSEL) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUttakSkalVæreFørFamileHendelse()) - .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelseFar()); + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUttakSkalVæreFørFamileHendelse()) + .ellers(sjekkOmPeriodenStarterFørOmsorgsovertakelseFar()); } private Specification sjekkOmPeriodenStarterFørOmsorgsovertakelseFar() { return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), - IkkeOppfylt.opprett("UT1234", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) - .ellers(sjekkErDetAleneomsorgFar()); + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + IkkeOppfylt.opprett("UT1234", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) + .ellers(sjekkErDetAleneomsorgFar()); } - private Specification sjekkOmUttaketStarterFørLovligUttakFørFamiliehendelse() { - return rs.hvisRegel(SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.ID, SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.BESKRIVELSE) - .hvis(new SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin(), - IkkeOppfylt.opprett("UT1185", IkkeOppfyltÅrsak.MOR_SØKER_FELLESPERIODE_FØR_12_UKER_FØR_TERMIN_FØDSEL, false, false)) - .ellers(sjekkErDetAleneomsorgMor()); + return rs.hvisRegel( + SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.ID, + SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenStarterFørLovligUttakFørFødselTermin(), + IkkeOppfylt.opprett( + "UT1185", + IkkeOppfyltÅrsak.MOR_SØKER_FELLESPERIODE_FØR_12_UKER_FØR_TERMIN_FØDSEL, + false, + false)) + .ellers(sjekkErDetAleneomsorgMor()); } private Specification sjekkErDetAleneomsorgMor() { return rs.hvisRegel(SjekkOmErAleneomsorg.ID, SjekkOmErAleneomsorg.BESKRIVELSE) - .hvis(new SjekkOmErAleneomsorg(), sjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel()) - .ellers(sjekkErDetBareMorSomHarRett()); + .hvis(new SjekkOmErAleneomsorg(), sjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel()) + .ellers(sjekkErDetBareMorSomHarRett()); } private Specification sjekkErDetBareMorSomHarRett() { return rs.hvisRegel(SjekkOmBareMorHarRett.ID, "Er det bare mor som har rett?") - .hvis(new SjekkOmBareMorHarRett(), sjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel()) - .ellers(Manuellbehandling.opprett("UT1209", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); + .hvis(new SjekkOmBareMorHarRett(), sjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel()) + .ellers(Manuellbehandling.opprett( + "UT1209", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); } private Specification sjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel() { - return rs.hvisRegel(SjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel.ID, "Starter perioden før 3 uker før termin/fødsel?") - .hvis(new SjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel(), sjekkErDetNoenDisponibleStønadsdagerPåKvotenMor()) - .ellers(sjekkOmPeriodenStarterFørFamilieHendelse()); + return rs.hvisRegel( + SjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel.ID, + "Starter perioden før 3 uker før termin/fødsel?") + .hvis( + new SjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel(), + sjekkErDetNoenDisponibleStønadsdagerPåKvotenMor()) + .ellers(sjekkOmPeriodenStarterFørFamilieHendelse()); } private Specification sjekkErDetNoenDisponibleStønadsdagerPåKvotenMor() { - return rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmGraderingIPeriodenFørXUkerEtterFamiliehendelseMor()) - .ellers( - Manuellbehandling.opprett("UT1205", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false)); + return rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + sjekkOmGraderingIPeriodenFørXUkerEtterFamiliehendelseMor()) + .ellers(Manuellbehandling.opprett( + "UT1205", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM, + true, + false)); } private Specification sjekkOmGraderingIPeriodenFørXUkerEtterFamiliehendelseMor() { - var erDetBareMorSomHarRettUtenGradering = erDetAleneomsorgSjekk(Oppfylt.opprett("UT1186", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, true), - Oppfylt.opprett("UT1211", InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT, true)); + var erDetBareMorSomHarRettUtenGradering = erDetAleneomsorgSjekk( + Oppfylt.opprett("UT1186", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, true), + Oppfylt.opprett("UT1211", InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT, true)); var erDetBareMorSomHarRettVedGradering = erDetAleneomsorgSjekk( - Oppfylt.opprettMedAvslåttGradering("UT1187", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, true), - Oppfylt.opprettMedAvslåttGradering("UT1212", InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT, - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, true)); + Oppfylt.opprettMedAvslåttGradering( + "UT1187", + InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, + GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, + true), + Oppfylt.opprettMedAvslåttGradering( + "UT1212", + InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT, + GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, + true)); return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), erDetBareMorSomHarRettVedGradering) - .ellers(erDetBareMorSomHarRettUtenGradering); + .hvis(new SjekkOmGradertPeriode(), erDetBareMorSomHarRettVedGradering) + .ellers(erDetBareMorSomHarRettUtenGradering); } - private Specification erDetAleneomsorgSjekk(FastsettePeriodeUtfall utfallJa, FastsettePeriodeUtfall utfallNei) { - return rs.hvisRegel(SjekkOmErAleneomsorg.ID, SjekkOmErAleneomsorg.BESKRIVELSE).hvis(new SjekkOmErAleneomsorg(), utfallJa).ellers(utfallNei); + private Specification erDetAleneomsorgSjekk( + FastsettePeriodeUtfall utfallJa, FastsettePeriodeUtfall utfallNei) { + return rs.hvisRegel(SjekkOmErAleneomsorg.ID, SjekkOmErAleneomsorg.BESKRIVELSE) + .hvis(new SjekkOmErAleneomsorg(), utfallJa) + .ellers(utfallNei); } private Specification sjekkOmPeriodenStarterFørFamilieHendelse() { - var sjekkErDetAleneomsorg = erDetAleneomsorgSjekk(Oppfylt.opprett("UT1197", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, true, true), - Oppfylt.opprett("UT1192", InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT, true, true)); + var sjekkErDetAleneomsorg = erDetAleneomsorgSjekk( + Oppfylt.opprett("UT1197", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, true, true), + Oppfylt.opprett("UT1192", InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT, true, true)); return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før termin/fødsel?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), sjekkErDetAleneomsorg) - .ellers(sjekkErPeriodenInnenforUkerReservertMor()); + .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), sjekkErDetAleneomsorg) + .ellers(sjekkErPeriodenInnenforUkerReservertMor()); } private Specification sjekkErPeriodenInnenforUkerReservertMor() { return rs.hvisRegel(SjekkOmPeriodenInnenforUkerReservertMor.ID, "Er perioden innenfor 6 uker etter fødsel?") - .hvis(new SjekkOmPeriodenInnenforUkerReservertMor(), sjekkErDetNoenDisponibleStønadsdagerPåKvotenMor()) - .ellers(sjekkOmMorHarOmsorgForBarnet()); + .hvis(new SjekkOmPeriodenInnenforUkerReservertMor(), sjekkErDetNoenDisponibleStønadsdagerPåKvotenMor()) + .ellers(sjekkOmMorHarOmsorgForBarnet()); } private Specification sjekkOmMorHarOmsorgForBarnet() { - var sjekkOmTilgjengeligeDager = rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmGraderingIPeriodenXUkerEtterFamilieHendelseForMor()) - .ellers(Manuellbehandling.opprett("UT1188", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); + var sjekkOmTilgjengeligeDager = rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + sjekkOmGraderingIPeriodenXUkerEtterFamilieHendelseForMor()) + .ellers(Manuellbehandling.opprett( + "UT1188", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmTilgjengeligeDager) - .ellers(IkkeOppfylt.opprett("UT1191", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, true, false)); + .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmTilgjengeligeDager) + .ellers(IkkeOppfylt.opprett("UT1191", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, true, false)); } private Specification sjekkOmGraderingIPeriodenXUkerEtterFamilieHendelseForMor() { var erDetBareMorSomHarRettSjekkIkkeGradering = erDetAleneomsorgSjekk( - Oppfylt.opprett("UT1190", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, true), - Oppfylt.opprett("UT1214", InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT, true)); - var erDetBareMorSomHarRettSjekkGradering = erDetAleneomsorgSjekk(Oppfylt.opprett("UT1210", InnvilgetÅrsak.GRADERING_ALENEOMSORG, true), - Oppfylt.opprett("UT1213", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_MOR_HAR_RETT, true)); + Oppfylt.opprett("UT1190", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, true), + Oppfylt.opprett("UT1214", InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT, true)); + var erDetBareMorSomHarRettSjekkGradering = erDetAleneomsorgSjekk( + Oppfylt.opprett("UT1210", InnvilgetÅrsak.GRADERING_ALENEOMSORG, true), + Oppfylt.opprett("UT1213", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_MOR_HAR_RETT, true)); return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), erDetBareMorSomHarRettSjekkGradering) - .ellers(erDetBareMorSomHarRettSjekkIkkeGradering); + .hvis(new SjekkOmGradertPeriode(), erDetBareMorSomHarRettSjekkGradering) + .ellers(erDetBareMorSomHarRettSjekkIkkeGradering); } private Specification sjekkOmUttakSkalVæreFørFamileHendelse() { return rs.hvisRegel(SjekkOmPeriodenSlutterFørFamiliehendelse.ID, "Skal uttak være før termin/fødsel?") - .hvis(new SjekkOmPeriodenSlutterFørFamiliehendelse(), sjekkOmUttakFørFødselErFarRundtFødsel()) - .ellers(sjekkErDetAleneomsorgFar()); + .hvis(new SjekkOmPeriodenSlutterFørFamiliehendelse(), sjekkOmUttakFørFødselErFarRundtFødsel()) + .ellers(sjekkErDetAleneomsorgFar()); } private Specification sjekkOmUttakFørFødselErFarRundtFødsel() { return rs.hvisRegel(SjekkOmFarsUttakRundtFødselTilgjengeligeDager.ID, "Er det hjemlet fars uttak rundt fødsel?") - .hvis(new SjekkOmFarsUttakRundtFødselTilgjengeligeDager(), sjekkErDetAleneomsorgFar()) - .ellers(Manuellbehandling.opprett("UT1193", IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, false, - false)); + .hvis(new SjekkOmFarsUttakRundtFødselTilgjengeligeDager(), sjekkErDetAleneomsorgFar()) + .ellers(Manuellbehandling.opprett( + "UT1193", + IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, + Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, + false, + false)); } private Specification sjekkErDetAleneomsorgFar() { return rs.hvisRegel(SjekkOmErAleneomsorg.ID, SjekkOmErAleneomsorg.BESKRIVELSE) - .hvis(new SjekkOmErAleneomsorg(), sjekkOmFarMedAleneomsorgHarOmsorgForBarnet()) - .ellers(sjekkErDetBareFarMedmorSomHarRett()); + .hvis(new SjekkOmErAleneomsorg(), sjekkOmFarMedAleneomsorgHarOmsorgForBarnet()) + .ellers(sjekkErDetBareFarMedmorSomHarRett()); } private ConditionalOrSpecification sjekkOmFarMedAleneomsorgHarOmsorgForBarnet() { return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmFarMedAleneomsorgHarDisponibleDager()) - .ellers(IkkeOppfylt.opprett("UT1194", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); + .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmFarMedAleneomsorgHarDisponibleDager()) + .ellers(IkkeOppfylt.opprett("UT1194", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); } private ConditionalOrSpecification sjekkOmFarMedAleneomsorgHarDisponibleDager() { - return rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmFarMedAleneomsorgGraderingIPerioden()) - .ellers(Manuellbehandling.opprett("UT1195", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); + return rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + sjekkOmFarMedAleneomsorgGraderingIPerioden()) + .ellers(Manuellbehandling.opprett( + "UT1195", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); } private ConditionalOrSpecification sjekkOmFarMedAleneomsorgGraderingIPerioden() { return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprett("UT1196", InnvilgetÅrsak.GRADERING_ALENEOMSORG, true)) - .ellers(Oppfylt.opprett("UT1198", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, true)); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett("UT1196", InnvilgetÅrsak.GRADERING_ALENEOMSORG, true)) + .ellers(Oppfylt.opprett("UT1198", InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, true)); } private Specification sjekkErDetBareFarMedmorSomHarRett() { return rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), sjekkOmFarUtenAleneomsorgHarOmsorgForBarnet()) - .ellers(Manuellbehandling.opprett("UT1204", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); + .hvis(new SjekkOmBareFarHarRett(), sjekkOmFarUtenAleneomsorgHarOmsorgForBarnet()) + .ellers(Manuellbehandling.opprett( + "UT1204", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); } private Specification sjekkOmFarUtenAleneomsorgHarOmsorgForBarnet() { return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmPeriodenGjelderFlerbarnsdager()) - .ellers(IkkeOppfylt.opprett("UT1199", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); + .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmPeriodenGjelderFlerbarnsdager()) + .ellers(IkkeOppfylt.opprett("UT1199", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); } private Specification sjekkOmPeriodenGjelderFlerbarnsdager() { var sjekkOmGraderingIPerioden = rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprett("UT1267", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT, true)) - .ellers(Oppfylt.opprett("UT1266", InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT, true)); - - var sjekkOmTilgjengeligeDager = rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmGraderingIPerioden) - .ellers(Manuellbehandling.opprett("UT1269", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); - - var minsterettBalansertUttak = rs.hvisRegel(SjekkOmMinsterettBalansertUttak.ID, SjekkOmMinsterettBalansertUttak.BESKRIVELSE) - .hvis(new SjekkOmMinsterettBalansertUttak(), sjekkOmDagerIgjenPåMinsterett()) - .ellers(sjekkOmTilgjengeligeDager); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett("UT1267", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT, true)) + .ellers(Oppfylt.opprett("UT1266", InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT, true)); + + var sjekkOmTilgjengeligeDager = rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) + .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmGraderingIPerioden) + .ellers(Manuellbehandling.opprett( + "UT1269", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); + + var minsterettBalansertUttak = rs.hvisRegel( + SjekkOmMinsterettBalansertUttak.ID, SjekkOmMinsterettBalansertUttak.BESKRIVELSE) + .hvis(new SjekkOmMinsterettBalansertUttak(), sjekkOmDagerIgjenPåMinsterett()) + .ellers(sjekkOmTilgjengeligeDager); return rs.hvisRegel(SjekkOmPeriodenGjelderFlerbarnsdager.ID, "Gjelder perioden flerbarnsdager?") - .hvis(new SjekkOmPeriodenGjelderFlerbarnsdager(), minsterettBalansertUttak) - .ellers(sjekkOmDetErFødsel()); + .hvis(new SjekkOmPeriodenGjelderFlerbarnsdager(), minsterettBalansertUttak) + .ellers(sjekkOmDetErFødsel()); } private Specification sjekkOmDetErFødsel() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, FØDSEL) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUttakSkjerFørDeFørsteUkene()) - .ellers(sjekkFarUtenAleneomsorgHarDisponibleDager()); + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUttakSkjerFørDeFørsteUkene()) + .ellers(sjekkFarUtenAleneomsorgHarDisponibleDager()); } private Specification sjekkOmUttakSkjerFørDeFørsteUkene() { return rs.hvisRegel(SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) - .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), sjekkFarUtenAleneomsorgHarDisponibleDager()) - .ellers(sjekkOmUttakFørsteSeksUkerErFarMedFABalansertUttak()); + .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), sjekkFarUtenAleneomsorgHarDisponibleDager()) + .ellers(sjekkOmUttakFørsteSeksUkerErFarMedFABalansertUttak()); } private Specification sjekkOmUttakFørsteSeksUkerErFarMedFABalansertUttak() { return rs.hvisRegel(SjekkOmMinsterettBalansertUttak.ID, SjekkOmMinsterettBalansertUttak.BESKRIVELSE) - .hvis(new SjekkOmMinsterettBalansertUttak(), sjekkFarUtenAleneomsorgHarDisponibleDager()) - .ellers(sjekkOmGyldigGrunnForTidligOppstart()); + .hvis(new SjekkOmMinsterettBalansertUttak(), sjekkFarUtenAleneomsorgHarDisponibleDager()) + .ellers(sjekkOmGyldigGrunnForTidligOppstart()); } private Specification sjekkOmGyldigGrunnForTidligOppstart() { - return rs.hvisRegel(SjekkGyldigGrunnForTidligOppstartHelePerioden.ID, "Foreligger et gyldig grunn for hele perioden for tidlig oppstart?") - .hvis(new SjekkGyldigGrunnForTidligOppstartHelePerioden(), sjekkFarUtenAleneomsorgHarDisponibleDager()) - .ellers(Manuellbehandling.opprett("UT1200", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, false, false)); + return rs.hvisRegel( + SjekkGyldigGrunnForTidligOppstartHelePerioden.ID, + "Foreligger et gyldig grunn for hele perioden for tidlig oppstart?") + .hvis(new SjekkGyldigGrunnForTidligOppstartHelePerioden(), sjekkFarUtenAleneomsorgHarDisponibleDager()) + .ellers(Manuellbehandling.opprett( + "UT1200", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, false, false)); } private Specification sjekkOmDagerIgjenPåMinsterett() { if (dagerIgjenPåMinsterett == null) { dagerIgjenPåMinsterett = rs.hvisRegel( - SjekkOmMinsterettHarDisponibleDager.ID + ELLER + SjekkOmEtterNesteStønadsperiodeHarDisponibleDager.ID + ELLER - + SjekkOmUføreUtenAktivitetskravHarDisponibleDager.ID, - SjekkOmMinsterettHarDisponibleDager.BESKRIVELSE + ELLER + SjekkOmEtterNesteStønadsperiodeHarDisponibleDager.BESKRIVELSE + ELLER - + SjekkOmUføreUtenAktivitetskravHarDisponibleDager.BESKRIVELSE) - .hvis(new SjekkOmMinsterettHarDisponibleDager().eller(new SjekkOmEtterNesteStønadsperiodeHarDisponibleDager()) - .eller(new SjekkOmUføreUtenAktivitetskravHarDisponibleDager()), sjekkGraderingVedKunFarMedmorRettMinsterett()) - .ellers(new AvslagAktivitetskravDelregel().getSpecification()); + SjekkOmMinsterettHarDisponibleDager.ID + + ELLER + + SjekkOmEtterNesteStønadsperiodeHarDisponibleDager.ID + + ELLER + + SjekkOmUføreUtenAktivitetskravHarDisponibleDager.ID, + SjekkOmMinsterettHarDisponibleDager.BESKRIVELSE + + ELLER + + SjekkOmEtterNesteStønadsperiodeHarDisponibleDager.BESKRIVELSE + + ELLER + + SjekkOmUføreUtenAktivitetskravHarDisponibleDager.BESKRIVELSE) + .hvis( + new SjekkOmMinsterettHarDisponibleDager() + .eller(new SjekkOmEtterNesteStønadsperiodeHarDisponibleDager()) + .eller(new SjekkOmUføreUtenAktivitetskravHarDisponibleDager()), + sjekkGraderingVedKunFarMedmorRettMinsterett()) + .ellers(new AvslagAktivitetskravDelregel().getSpecification()); } return dagerIgjenPåMinsterett; } private Specification sjekkGraderingVedKunFarMedmorRettMinsterett() { return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), - Oppfylt.opprett("UT1318", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, true)) - .ellers(Oppfylt.opprett("UT1317", InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, true)); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett( + "UT1318", + InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + true)) + .ellers(Oppfylt.opprett( + "UT1317", InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, true)); } private Specification sjekkOmAktivitetskravErOppfylt() { return rs.hvisRegel(SjekkOmMorErIAktivitet.ID, SjekkOmMorErIAktivitet.BESKRIVELSE) - .hvis(new SjekkOmMorErIAktivitet(), sjekkGraderingVedKunFarMedmorRett()) - .ellers(sjekkOmDagerIgjenPåMinsterett()); + .hvis(new SjekkOmMorErIAktivitet(), sjekkGraderingVedKunFarMedmorRett()) + .ellers(sjekkOmDagerIgjenPåMinsterett()); } private Specification sjekkGraderingVedKunFarMedmorRett() { return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprett("UT1315", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT, true)) - .ellers(Oppfylt.opprett("UT1316", InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT, true)); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett("UT1315", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT, true)) + .ellers(Oppfylt.opprett("UT1316", InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT, true)); } private Specification sjekkFarUtenAleneomsorgHarDisponibleDager() { if (bareFarRettIkkeAleneomsorgHarDisponibleDager == null) { - bareFarRettIkkeAleneomsorgHarDisponibleDager = rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, - SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmAktivitetskravErOppfylt()) - .ellers(Manuellbehandling.opprett("UT1203", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); + bareFarRettIkkeAleneomsorgHarDisponibleDager = rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.BESKRIVELSE) + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + sjekkOmAktivitetskravErOppfylt()) + .ellers(Manuellbehandling.opprett( + "UT1203", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); } return bareFarRettIkkeAleneomsorgHarDisponibleDager; } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerF\303\270rF\303\270dselDelregel.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerF\303\270rF\303\270dselDelregel.java" index 2fa38687..ed932969 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerF\303\270rF\303\270dselDelregel.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerF\303\270rF\303\270dselDelregel.java" @@ -17,19 +17,19 @@ /** * Delregel innenfor regeltjenesten FastsettePeriodeRegel som fastsetter uttak av foreldrepenger før fødsel. - *

- * Utfall definisjoner:
- *

- * Utfall AVSLÅTT:
- * - Far søker om perioden - * - Perioden starter før perioden forbeholdt mor før fødsel.
+ * + *

Utfall definisjoner:
+ * + *

Utfall AVSLÅTT:
+ * - Far søker om perioden - Perioden starter før perioden forbeholdt mor før fødsel.
* - Perioden starter etter termin/fødsel.
- *

- * Utfall INNVILGET:
+ * + *

Utfall INNVILGET:
* - Perioden dekker perioden forbeholdt mor før fødsel og det er mor som søker. */ - -@RuleDocumentation(value = ForeldrepengerFørFødselDelregel.ID, specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") +@RuleDocumentation( + value = ForeldrepengerFørFødselDelregel.ID, + specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") public class ForeldrepengerFørFødselDelregel implements RuleService { public static final String ID = "FP_VK XX10"; @@ -45,23 +45,36 @@ public Specification getSpecification() { private Specification sjekkOmSøkerErMorNode(Ruleset rs) { return rs.hvisRegel(SjekkOmSøkerErMor.ID, SjekkOmSøkerErMor.BESKRIVELSE) - .hvis(new SjekkOmSøkerErMor(), sjekkOmPeriodenStarterForTidligNode(rs)) - .ellers(Manuellbehandling.opprett("UT1076", IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, false, - false)); + .hvis(new SjekkOmSøkerErMor(), sjekkOmPeriodenStarterForTidligNode(rs)) + .ellers(Manuellbehandling.opprett( + "UT1076", + IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, + Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, + false, + false)); } - private Specification sjekkOmPeriodenStarterForTidligNode(Ruleset rs) { - return rs.hvisRegel(SjekkOmForeldrepengerFørFødselStarterForTidligEllerSlutterForSent.ID, "Starter perioden for tidlig?") - .hvis(new SjekkOmForeldrepengerFørFødselStarterForTidligEllerSlutterForSent(), - Manuellbehandling.opprett("UT1070", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)) - .ellers(sjekkOmGradering(rs)); + private Specification sjekkOmPeriodenStarterForTidligNode( + Ruleset rs) { + return rs.hvisRegel( + SjekkOmForeldrepengerFørFødselStarterForTidligEllerSlutterForSent.ID, + "Starter perioden for tidlig?") + .hvis( + new SjekkOmForeldrepengerFørFødselStarterForTidligEllerSlutterForSent(), + Manuellbehandling.opprett( + "UT1070", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)) + .ellers(sjekkOmGradering(rs)); } private Specification sjekkOmGradering(Ruleset rs) { return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprettMedAvslåttGradering("UT1072", InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL, - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, true)) - .ellers(Oppfylt.opprett("UT1071", InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL, true)); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprettMedAvslåttGradering( + "UT1072", + InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL, + GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, + true)) + .ellers(Oppfylt.opprett("UT1071", InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL, true)); } - } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ManglendeS\303\270ktPeriodeDelregel.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ManglendeS\303\270ktPeriodeDelregel.java" index 42f177b2..abb09c71 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ManglendeS\303\270ktPeriodeDelregel.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ManglendeS\303\270ktPeriodeDelregel.java" @@ -22,11 +22,13 @@ import no.nav.fpsak.nare.specification.Specification; /** - * Delregel innenfor regeltjenesten FastsettePeriodeRegel som fastsetter perioder som ikke er søkt om. - * Disse er i hovedsak innenfor perioder som er reservert mor (14-9 sjette ledd) og tekniske trekkperioder for far (14-14 første ledd) + * Delregel innenfor regeltjenesten FastsettePeriodeRegel som fastsetter perioder som ikke er søkt om. Disse er i + * hovedsak innenfor perioder som er reservert mor (14-9 sjette ledd) og tekniske trekkperioder for far (14-14 første + * ledd) */ - -@RuleDocumentation(value = ManglendeSøktPeriodeDelregel.ID, specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") +@RuleDocumentation( + value = ManglendeSøktPeriodeDelregel.ID, + specificationReference = "https://confluence.adeo.no/display/MODNAV/1.+Samleside+for+oppdaterte+regelflyter") public class ManglendeSøktPeriodeDelregel implements RuleService { public static final String ID = "FP_VK 10.7.FRI"; @@ -40,66 +42,91 @@ public Specification getSpecification() { return sjekkOmForeldrepengerFørFødsel(new Ruleset<>()); } - private Specification sjekkOmForeldrepengerFørFødsel(Ruleset rs) { + private Specification sjekkOmForeldrepengerFørFødsel( + Ruleset rs) { return rs.hvisRegel(SjekkOmPeriodeErForeldrepengerFørFødsel.ID, "Er det Foreldrepenger før fødsel?") - .hvis(new SjekkOmPeriodeErForeldrepengerFørFødsel(), - IkkeOppfylt.opprett("UT1073", IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_FØR_FØDSEL, true, false)) - .ellers(sjekkOmTomPåAlleSineKonto(rs)); + .hvis( + new SjekkOmPeriodeErForeldrepengerFørFødsel(), + IkkeOppfylt.opprett("UT1073", IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_FØR_FØDSEL, true, false)) + .ellers(sjekkOmTomPåAlleSineKonto(rs)); } private Specification sjekkOmTomPåAlleSineKonto(Ruleset rs) { return rs.hvisRegel(SjekkOmTomForAlleSineKontoer.ID, SjekkOmTomForAlleSineKontoer.BESKRIVELSE) - .hvis(new SjekkOmTomForAlleSineKontoer(), sjekkOmSakGjelderBareFarRettTomKonto(rs)) - .ellers(sjekkOmDagerIgjenPåAlleAktiviteter(rs)); + .hvis(new SjekkOmTomForAlleSineKontoer(), sjekkOmSakGjelderBareFarRettTomKonto(rs)) + .ellers(sjekkOmDagerIgjenPåAlleAktiviteter(rs)); } - private Specification sjekkOmSakGjelderBareFarRettTomKonto(Ruleset rs) { + private Specification sjekkOmSakGjelderBareFarRettTomKonto( + Ruleset rs) { return rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), sjekkOmDagerIgjenPåMinsterett(rs)) - .ellers(ut1088()); + .hvis(new SjekkOmBareFarHarRett(), sjekkOmDagerIgjenPåMinsterett(rs)) + .ellers(ut1088()); } - private Specification sjekkOmDagerIgjenPåMinsterett(Ruleset rs) { - return rs.hvisRegel(SjekkOmErAlleDisponibleDagerIgjenMinsterett.ID, SjekkOmErAlleDisponibleDagerIgjenMinsterett.BESKRIVELSE) - .hvis(new SjekkOmErAlleDisponibleDagerIgjenMinsterett(), - IkkeOppfylt.opprett("UT1089", IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT, false, false)) - .ellers(ut1088()); + private Specification sjekkOmDagerIgjenPåMinsterett( + Ruleset rs) { + return rs.hvisRegel( + SjekkOmErAlleDisponibleDagerIgjenMinsterett.ID, + SjekkOmErAlleDisponibleDagerIgjenMinsterett.BESKRIVELSE) + .hvis( + new SjekkOmErAlleDisponibleDagerIgjenMinsterett(), + IkkeOppfylt.opprett("UT1089", IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT, false, false)) + .ellers(ut1088()); } private FastsettePeriodeUtfall ut1088() { return IkkeOppfylt.opprett("UT1088", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, false, false); } - private Specification sjekkOmDagerIgjenPåAlleAktiviteter(Ruleset rs) { + private Specification sjekkOmDagerIgjenPåAlleAktiviteter( + Ruleset rs) { return rs.hvisRegel(SjekkOmDagerIgjenPåAlleAktiviteter.ID, SjekkOmDagerIgjenPåAlleAktiviteter.BESKRIVELSE) - .hvis(new SjekkOmDagerIgjenPåAlleAktiviteter(), sjekkOmSakGjelderBareFarRett(rs)) - .ellers(Manuellbehandling.opprett("UT1291", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); + .hvis(new SjekkOmDagerIgjenPåAlleAktiviteter(), sjekkOmSakGjelderBareFarRett(rs)) + .ellers(Manuellbehandling.opprett( + "UT1291", null, Manuellbehandlingårsak.STØNADSKONTO_TOM, false, false)); } - private Specification sjekkOmBrukSammenhengendeUttakÅrsaker(Ruleset rs) { - return rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) - .hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), - Manuellbehandling.opprett("UT1096", IkkeOppfyltÅrsak.HULL_MELLOM_FORELDRENES_PERIODER, Manuellbehandlingårsak.VURDER_OM_UTSETTELSE, - true, false)) - .ellers(sjekkOmPeriodeGjelderMorsReserverteUker(rs)); + private Specification sjekkOmBrukSammenhengendeUttakÅrsaker( + Ruleset rs) { + return rs.hvisRegel( + SjekkOmBehandlingKreverSammenhengendeUttak.ID, + SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE) + .hvis( + new SjekkOmBehandlingKreverSammenhengendeUttak(), + Manuellbehandling.opprett( + "UT1096", + IkkeOppfyltÅrsak.HULL_MELLOM_FORELDRENES_PERIODER, + Manuellbehandlingårsak.VURDER_OM_UTSETTELSE, + true, + false)) + .ellers(sjekkOmPeriodeGjelderMorsReserverteUker(rs)); } private Specification sjekkOmSakGjelderBareFarRett(Ruleset rs) { return rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), IkkeOppfylt.opprett("UT1093", IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT, true, false)) - .ellers(sjekkOmBrukSammenhengendeUttakÅrsaker(rs)); + .hvis( + new SjekkOmBareFarHarRett(), + IkkeOppfylt.opprett("UT1093", IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT, true, false)) + .ellers(sjekkOmBrukSammenhengendeUttakÅrsaker(rs)); } - private Specification sjekkOmPeriodeGjelderMorsReserverteUker(Ruleset rs) { + private Specification sjekkOmPeriodeGjelderMorsReserverteUker( + Ruleset rs) { return rs.hvisRegel(SjekkOmPeriodenInnenforUkerReservertMor.ID, "Innenfor mors reserverte uker") - .hvis(new SjekkOmPeriodenInnenforUkerReservertMor(), sjekkOmPeriodeErOpprettetAvFødselshendelse(rs)) - .ellers(Manuellbehandling.opprett("UT1095", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); + .hvis(new SjekkOmPeriodenInnenforUkerReservertMor(), sjekkOmPeriodeErOpprettetAvFødselshendelse(rs)) + .ellers(Manuellbehandling.opprett( + "UT1095", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); } - private Specification sjekkOmPeriodeErOpprettetAvFødselshendelse(Ruleset rs) { - return rs.hvisRegel(SjekkOmPeriodenOpprettetAvFødselshendelse.ID, SjekkOmPeriodenOpprettetAvFødselshendelse.BESKRIVELSE) - .hvis(new SjekkOmPeriodenOpprettetAvFødselshendelse(), Oppfylt.opprett("UT1097", InnvilgetÅrsak.MSP_INNVILGET, true, true)) - .ellers(IkkeOppfylt.opprett("UT1094", IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL, true, false)); + private Specification sjekkOmPeriodeErOpprettetAvFødselshendelse( + Ruleset rs) { + return rs.hvisRegel( + SjekkOmPeriodenOpprettetAvFødselshendelse.ID, + SjekkOmPeriodenOpprettetAvFødselshendelse.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenOpprettetAvFødselshendelse(), + Oppfylt.opprett("UT1097", InnvilgetÅrsak.MSP_INNVILGET, true, true)) + .ellers(IkkeOppfylt.opprett("UT1094", IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL, true, false)); } - } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/M\303\270drekvoteDelregel.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/M\303\270drekvoteDelregel.java" index 1bd0dcc6..3e919bd2 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/M\303\270drekvoteDelregel.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/M\303\270drekvoteDelregel.java" @@ -32,28 +32,28 @@ /** * Delregel innenfor regeltjenesten FastsettePeriodeRegel som fastsetter uttakperioder med mødrekvote. - *

- * Utfall definisjoner:
- *

- * Utfall AVSLÅTT:
+ * + *

Utfall definisjoner:
+ * + *

Utfall AVSLÅTT:
* - Det er ikke nok dager igjen på stønadskontoen for mødrekvote.
* - Perioden starter før familiehendelsen (termin/fødsel).
- *

- * Utfall INNVILGET:
+ * + *

Utfall INNVILGET:
* - Perioden er etter familiehendelse og det er nok dager på stønadskontoen for mødrekvote.
- *

- * UTFALL UGYLDIG_UTSETTELSE:
+ * + *

UTFALL UGYLDIG_UTSETTELSE:
* - Perioden forbeholdt mor etter fødsel er ikke søkt om og har ikke gyldig utsettelsesgrunn.
- *

- * UTFALL GYLDIG_UTSETTELSE:
+ * + *

UTFALL GYLDIG_UTSETTELSE:
* - Perioden forbeholdt mor etter fødsel er ikke søkt om men mor har gyldig utsettelsesgrunn.
*/ - @RuleDocumentation(value = MødrekvoteDelregel.ID) public class MødrekvoteDelregel implements RuleService { public static final String ID = "FP_VK 10"; - private static final String RESERVERT_MØDREKVOTE = "Er perioden innenfor dager reservert for mødrekvote etter fødsel?"; + private static final String RESERVERT_MØDREKVOTE = + "Er perioden innenfor dager reservert for mødrekvote etter fødsel?"; private final Ruleset rs = new Ruleset<>(); @@ -64,133 +64,170 @@ public class MødrekvoteDelregel implements RuleService getSpecification() { return rs.hvisRegel(SjekkOmOppholdKvoteAnnenForelder.ID, "Er det søkt om opphold av mødrekvoten?") - .hvis(new SjekkOmOppholdKvoteAnnenForelder(), sjekkOmNoenDisponibleDagerNode()) - .ellers(sjekkOmMor()); + .hvis(new SjekkOmOppholdKvoteAnnenForelder(), sjekkOmNoenDisponibleDagerNode()) + .ellers(sjekkOmMor()); } private Specification sjekkOmNoenDisponibleDagerNode() { - return rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, "Er det noen disponible stønadsdager på mødrekvote?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), Oppfylt.opprettForOppholds("UT1261", true, false)) - .ellers(Manuellbehandling.opprett("UT1260", null, Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER, true, false)); + return rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det noen disponible stønadsdager på mødrekvote?") + .hvis( + new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), + Oppfylt.opprettForOppholds("UT1261", true, false)) + .ellers(Manuellbehandling.opprett( + "UT1260", null, Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER, true, false)); } private Specification sjekkOmMor() { return rs.hvisRegel(SjekkOmSøkerErMor.ID, SjekkOmSøkerErMor.BESKRIVELSE) - .hvis(new SjekkOmSøkerErMor(), sjekkOmFødsel()) - .ellers(sjekkOmFarSøktOmOverføringAvMødrekvote()); + .hvis(new SjekkOmSøkerErMor(), sjekkOmFødsel()) + .ellers(sjekkOmFarSøktOmOverføringAvMødrekvote()); } private Specification sjekkOmFødsel() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmPeriodeStarterFørFamiliehendelse()) - .ellers(sjekkOmPeriodeStarterFørOmsorgsovertakelse()); + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmPeriodeStarterFørFamiliehendelse()) + .ellers(sjekkOmPeriodeStarterFørOmsorgsovertakelse()); } private Specification sjekkOmPeriodeStarterFørOmsorgsovertakelse() { return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), - IkkeOppfylt.opprett("UT1230", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) - .ellers(sjekkOmSøkerHarOmsorgForBarnet()); + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + IkkeOppfylt.opprett("UT1230", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) + .ellers(sjekkOmSøkerHarOmsorgForBarnet()); } private Specification sjekkOmOverføringPgaInnleggelse() { - return rs.hvisRegel(SjekkOmOverføringPgaInnleggelse.ID, "Er det søkt om overføring som følge av innleggelse på institusjon?") - .hvis(new SjekkOmOverføringPgaInnleggelse(), sjekkOmGyldigOverføringPgaInnleggelse()) - .ellers(sjekkOmOverføringPgaSykdomSkade()); + return rs.hvisRegel( + SjekkOmOverføringPgaInnleggelse.ID, + "Er det søkt om overføring som følge av innleggelse på institusjon?") + .hvis(new SjekkOmOverføringPgaInnleggelse(), sjekkOmGyldigOverføringPgaInnleggelse()) + .ellers(sjekkOmOverføringPgaSykdomSkade()); } private Specification sjekkOmOverføringPgaSykdomSkade() { return rs.hvisRegel(SjekkOmOverføringPgaSykdomSkade.ID, "Er det søkt om overføring som følge av sykdom/skade?") - .hvis(new SjekkOmOverføringPgaSykdomSkade(), sjekkOmGyldigOverføringPgaSykdomSkade()) - .ellers(sjekkOmOverføringPgaAleneomsorgEllerIkkeRett()); + .hvis(new SjekkOmOverføringPgaSykdomSkade(), sjekkOmGyldigOverføringPgaSykdomSkade()) + .ellers(sjekkOmOverføringPgaAleneomsorgEllerIkkeRett()); } private Specification sjekkOmOverføringPgaAleneomsorgEllerIkkeRett() { - return rs.hvisRegel(SjekkOmOverføringPgaAleneomsorg.ID, - "Er det søkt om overføring som følge av aleneomsorg eller annen forelder ikke har rett?") - .hvis(new SjekkOmOverføringPgaAleneomsorg(), sjekkOmGyldigOverføringPgaAleneomsorg()) - .ellers(sjekkOmGyldigOverføringPgaIkkeRett()); + return rs.hvisRegel( + SjekkOmOverføringPgaAleneomsorg.ID, + "Er det søkt om overføring som følge av aleneomsorg eller annen forelder ikke har rett?") + .hvis(new SjekkOmOverføringPgaAleneomsorg(), sjekkOmGyldigOverføringPgaAleneomsorg()) + .ellers(sjekkOmGyldigOverføringPgaIkkeRett()); } private Specification sjekkOmGyldigOverføringPgaInnleggelse() { - return rs.hvisRegel(SjekkOmGyldigOverføringPgaInnleggelse.ID, - "Er det avklart at overføring av kvoten er gyldig grunn av innleggelse på institusjon?") - .hvis(new SjekkOmGyldigOverføringPgaInnleggelse(), sjekkOmFødsel()) - .ellers(IkkeOppfylt.opprett("UT1016", IkkeOppfyltÅrsak.DEN_ANDRE_PART_INNLEGGELSE_IKKE_OPPFYLT, false, false)); + return rs.hvisRegel( + SjekkOmGyldigOverføringPgaInnleggelse.ID, + "Er det avklart at overføring av kvoten er gyldig grunn av innleggelse på institusjon?") + .hvis(new SjekkOmGyldigOverføringPgaInnleggelse(), sjekkOmFødsel()) + .ellers(IkkeOppfylt.opprett( + "UT1016", IkkeOppfyltÅrsak.DEN_ANDRE_PART_INNLEGGELSE_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmGyldigOverføringPgaSykdomSkade() { - return rs.hvisRegel(SjekkOmGyldigOverføringPgaSykdomSkade.ID, "Er det avklart at overføring av kvoten er gyldig grunn av sykdom/skade?") - .hvis(new SjekkOmGyldigOverføringPgaSykdomSkade(), sjekkOmFødsel()) - .ellers(IkkeOppfylt.opprett("UT1017", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, false, false)); + return rs.hvisRegel( + SjekkOmGyldigOverføringPgaSykdomSkade.ID, + "Er det avklart at overføring av kvoten er gyldig grunn av sykdom/skade?") + .hvis(new SjekkOmGyldigOverføringPgaSykdomSkade(), sjekkOmFødsel()) + .ellers(IkkeOppfylt.opprett( + "UT1017", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmGyldigOverføringPgaAleneomsorg() { - return rs.hvisRegel(SjekkOmGyldigOverføringPgaAleneomsorg.ID, "Er det avklart at overføring av kvoten er gyldig på grunn av aleneomsorg?") - .hvis(new SjekkOmGyldigOverføringPgaAleneomsorg(), sjekkOmFødsel()) - .ellers(IkkeOppfylt.opprett("UT1294", IkkeOppfyltÅrsak.ALENEOMSORG_IKKE_OPPFYLT, false, false)); + return rs.hvisRegel( + SjekkOmGyldigOverføringPgaAleneomsorg.ID, + "Er det avklart at overføring av kvoten er gyldig på grunn av aleneomsorg?") + .hvis(new SjekkOmGyldigOverføringPgaAleneomsorg(), sjekkOmFødsel()) + .ellers(IkkeOppfylt.opprett("UT1294", IkkeOppfyltÅrsak.ALENEOMSORG_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmGyldigOverføringPgaIkkeRett() { - return rs.hvisRegel(SjekkOmGyldigOverføringPgaIkkeRett.ID, - "Er det avklart at overføring av kvoten er gyldig på grunn av annen forelder ikke har rett?") - .hvis(new SjekkOmGyldigOverføringPgaIkkeRett(), sjekkOmFødsel()) - .ellers(IkkeOppfylt.opprett("UT1295", IkkeOppfyltÅrsak.DEN_ANDRE_PART_IKKE_RETT_IKKE_OPPFYLT, false, false)); + return rs.hvisRegel( + SjekkOmGyldigOverføringPgaIkkeRett.ID, + "Er det avklart at overføring av kvoten er gyldig på grunn av annen forelder ikke har rett?") + .hvis(new SjekkOmGyldigOverføringPgaIkkeRett(), sjekkOmFødsel()) + .ellers(IkkeOppfylt.opprett( + "UT1295", IkkeOppfyltÅrsak.DEN_ANDRE_PART_IKKE_RETT_IKKE_OPPFYLT, false, false)); } private Specification sjekkOmFarSøktOmOverføringAvMødrekvote() { return rs.hvisRegel(SjekkOmSøktOmOverføringAvKvote.ID, "Har far søkt om overføring av mødrekvote?") - .hvis(new SjekkOmSøktOmOverføringAvKvote(), sjekkOmOverføringPgaInnleggelse()) - .ellers(Manuellbehandling.opprett("UT1015", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, - Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)); + .hvis(new SjekkOmSøktOmOverføringAvKvote(), sjekkOmOverføringPgaInnleggelse()) + .ellers(Manuellbehandling.opprett( + "UT1015", + IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT, + Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, + true, + false)); } public Specification sjekkOmPeriodeStarterFørFamiliehendelse() { return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før familiehendelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), - Manuellbehandling.opprett("UT1001", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)) - .ellers(sjekkOmPeriodeInnenfor6ukerEtterFødsel()); + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + Manuellbehandling.opprett( + "UT1001", null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false)) + .ellers(sjekkOmPeriodeInnenfor6ukerEtterFødsel()); } private Specification sjekkOmPeriodeInnenfor6ukerEtterFødsel() { return rs.hvisRegel(SjekkOmPeriodenInnenforUkerReservertMor.ID, RESERVERT_MØDREKVOTE) - .hvis(new SjekkOmPeriodenInnenforUkerReservertMor(), sjekkOmSøkerErMor()) - .ellers(sjekkOmSøkerHarOmsorgForBarnet()); + .hvis(new SjekkOmPeriodenInnenforUkerReservertMor(), sjekkOmSøkerErMor()) + .ellers(sjekkOmSøkerHarOmsorgForBarnet()); } private Specification sjekkOmSøkerErMor() { return rs.hvisRegel(SjekkOmSøkerErMor.ID, SjekkOmSøkerErMor.BESKRIVELSE) - .hvis(new SjekkOmSøkerErMor(), sjekkOmGraderingIPerioden()) - .ellers(sjekkOmSøkerHarOmsorgForBarnet()); + .hvis(new SjekkOmSøkerErMor(), sjekkOmGraderingIPerioden()) + .ellers(sjekkOmSøkerHarOmsorgForBarnet()); } private Specification sjekkOmSøkerHarOmsorgForBarnet() { return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE) - .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmNoenDisponibleDager()) - .ellers(IkkeOppfylt.opprett("UT1006", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, true, false)); + .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmNoenDisponibleDager()) + .ellers(IkkeOppfylt.opprett("UT1006", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, true, false)); } private Specification sjekkOmGraderingIPerioden() { return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprettMedAvslåttGradering("UT1008", InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, true)) - .ellers(sjekkOmNoenDisponibleDager()); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprettMedAvslåttGradering( + "UT1008", + InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, + GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING, + true)) + .ellers(sjekkOmNoenDisponibleDager()); } private Specification sjekkOmNoenDisponibleDager() { var sjekkOmSøkerErMor = rs.hvisRegel(SjekkOmSøkerErMor.ID, SjekkOmSøkerErMor.BESKRIVELSE) - .hvis(new SjekkOmSøkerErMor(), erDetGraderingIPeriode2()) - .ellers(new OverføringDelregel().getSpecification()); + .hvis(new SjekkOmSøkerErMor(), erDetGraderingIPeriode2()) + .ellers(new OverføringDelregel().getSpecification()); - return rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, "Er det noen disponible stønadsdager på mødrekvote?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmSøkerErMor) - .ellers( - Manuellbehandling.opprett("UT1002", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false)); + return rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det noen disponible stønadsdager på mødrekvote?") + .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmSøkerErMor) + .ellers(Manuellbehandling.opprett( + "UT1002", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM, + true, + false)); } private ConditionalOrSpecification erDetGraderingIPeriode2() { return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Oppfylt.opprett("UT1221", InnvilgetÅrsak.GRADERING_KVOTE_ELLER_OVERFØRT_KVOTE, true)) - .ellers(Oppfylt.opprett("UT1007", InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, true)); + .hvis( + new SjekkOmGradertPeriode(), + Oppfylt.opprett("UT1221", InnvilgetÅrsak.GRADERING_KVOTE_ELLER_OVERFØRT_KVOTE, true)) + .ellers(Oppfylt.opprett("UT1007", InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, true)); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/Overf\303\270ringDelregel.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/Overf\303\270ringDelregel.java" index bfc7e1fa..139e6f53 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/Overf\303\270ringDelregel.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/Overf\303\270ringDelregel.java" @@ -13,14 +13,14 @@ /** * Delregel innenfor regeltjenesten FastsettePeriodeRegel som fastsetter uttakperioder som inneholder delregelen for * innvilgelse av overføring av mødrekvote og fedrekvote. - *

- * Utfall definisjoner:
- *

- * Utfall INNVILGET:
+ * + *

Utfall definisjoner:
+ * + *

Utfall INNVILGET:
* - Perioden er avklart at har gyldig grunn for overføring.
+ * *

*/ - public class OverføringDelregel implements RuleService { private final Ruleset rs = new Ruleset<>(); @@ -31,21 +31,30 @@ public class OverføringDelregel implements RuleService getSpecification() { - return rs.hvisRegel(SjekkOmOverføringPgaInnleggelse.ID, "Er det søkt om overføring som følge av innleggelse på institusjon?") - .hvis(new SjekkOmOverføringPgaInnleggelse(), Oppfylt.opprett("UT1173", InnvilgetÅrsak.OVERFØRING_ANNEN_PART_INNLAGT, true)) - .ellers(sjekkOmOverføringPgaSykdomSkade()); + return rs.hvisRegel( + SjekkOmOverføringPgaInnleggelse.ID, + "Er det søkt om overføring som følge av innleggelse på institusjon?") + .hvis( + new SjekkOmOverføringPgaInnleggelse(), + Oppfylt.opprett("UT1173", InnvilgetÅrsak.OVERFØRING_ANNEN_PART_INNLAGT, true)) + .ellers(sjekkOmOverføringPgaSykdomSkade()); } private Specification sjekkOmOverføringPgaSykdomSkade() { return rs.hvisRegel(SjekkOmOverføringPgaSykdomSkade.ID, "Er det søkt om overføring som følge av sykdom/skade?") - .hvis(new SjekkOmOverføringPgaSykdomSkade(), Oppfylt.opprett("UT1172", InnvilgetÅrsak.OVERFØRING_ANNEN_PART_SYKDOM_SKADE, true)) - .ellers(sjekkOmOverføringPgaAleneomsorgEllerIkkeRett()); + .hvis( + new SjekkOmOverføringPgaSykdomSkade(), + Oppfylt.opprett("UT1172", InnvilgetÅrsak.OVERFØRING_ANNEN_PART_SYKDOM_SKADE, true)) + .ellers(sjekkOmOverføringPgaAleneomsorgEllerIkkeRett()); } private Specification sjekkOmOverføringPgaAleneomsorgEllerIkkeRett() { - return rs.hvisRegel(SjekkOmOverføringPgaAleneomsorg.ID, - "Er det søkt om overføring som følge av aleneomsorg eller annen forelder ikke har rett?") - .hvis(new SjekkOmOverføringPgaAleneomsorg(), Oppfylt.opprett("UT1174", InnvilgetÅrsak.OVERFØRING_ALENEOMSORG, true)) - .ellers(Oppfylt.opprett("UT1175", InnvilgetÅrsak.OVERFØRING_ANNEN_PART_IKKE_RETT, true)); + return rs.hvisRegel( + SjekkOmOverføringPgaAleneomsorg.ID, + "Er det søkt om overføring som følge av aleneomsorg eller annen forelder ikke har rett?") + .hvis( + new SjekkOmOverføringPgaAleneomsorg(), + Oppfylt.opprett("UT1174", InnvilgetÅrsak.OVERFØRING_ALENEOMSORG, true)) + .ellers(Oppfylt.opprett("UT1175", InnvilgetÅrsak.OVERFØRING_ANNEN_PART_IKKE_RETT, true)); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/StebarnsadopsjonDelRegel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/StebarnsadopsjonDelRegel.java index baf118bc..be6c6ff9 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/StebarnsadopsjonDelRegel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/StebarnsadopsjonDelRegel.java @@ -17,7 +17,6 @@ @RuleDocumentation(value = StebarnsadopsjonDelRegel.ID) public class StebarnsadopsjonDelRegel implements RuleService { - public static final String ID = "FP_VK 16.1"; private final Ruleset rs = new Ruleset<>(); @@ -29,28 +28,37 @@ public StebarnsadopsjonDelRegel() { @Override public Specification getSpecification() { return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Starter perioden før omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), - IkkeOppfylt.opprett("UT1285", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) - .ellers(sjekkOmSøkerHarOmsorg()); + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + IkkeOppfylt.opprett("UT1285", IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE, false, false)) + .ellers(sjekkOmSøkerHarOmsorg()); } private Specification sjekkOmSøkerHarOmsorg() { return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, "Har søker omsorg for barnet?") - .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmNoenDisponibleDager()) - .ellers(IkkeOppfylt.opprett("UT1240", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); + .hvis(new SjekkOmOmsorgHelePerioden(), sjekkOmNoenDisponibleDager()) + .ellers(IkkeOppfylt.opprett("UT1240", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false)); } - private Specification sjekkOmNoenDisponibleDager() { - return rs.hvisRegel(SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, "Er det noen disponible stønadsdager på mødrekvote?") - .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmGraderingIPerioden()) - .ellers( - Manuellbehandling.opprett("UT1244", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false)); + return rs.hvisRegel( + SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto.ID, + "Er det noen disponible stønadsdager på mødrekvote?") + .hvis(new SjekkOmTilgjengeligeDagerPåNoenAktiviteteneForSøktStønadskonto(), sjekkOmGraderingIPerioden()) + .ellers(Manuellbehandling.opprett( + "UT1244", + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM, + true, + false)); } private Specification sjekkOmGraderingIPerioden() { return rs.hvisRegel(SjekkOmGradertPeriode.ID, SjekkOmGradertPeriode.BESKRIVELSE) - .hvis(new SjekkOmGradertPeriode(), Manuellbehandling.opprett("UT1242", null, Manuellbehandlingårsak.STEBARNSADOPSJON, true, false)) - .ellers(Manuellbehandling.opprett("UT1241", null, Manuellbehandlingårsak.STEBARNSADOPSJON, true, false)); + .hvis( + new SjekkOmGradertPeriode(), + Manuellbehandling.opprett("UT1242", null, Manuellbehandlingårsak.STEBARNSADOPSJON, true, false)) + .ellers(Manuellbehandling.opprett( + "UT1241", null, Manuellbehandlingårsak.STEBARNSADOPSJON, true, false)); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/UtsettelseDelregel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/UtsettelseDelregel.java index 83134949..cf884766 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/UtsettelseDelregel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/UtsettelseDelregel.java @@ -43,21 +43,29 @@ public UtsettelseDelregel() { @Override public Specification getSpecification() { return rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUtsettelsePgaBarnInnlagtPrematur()) - .ellers(sjekkOmPeriodeErFørFamiliehendelseVedAdopsjon()); + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUtsettelsePgaBarnInnlagtPrematur()) + .ellers(sjekkOmPeriodeErFørFamiliehendelseVedAdopsjon()); } private Specification sjekkOmPeriodeErFørFamiliehendelseVedAdopsjon() { - return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, SjekkOmPeriodenStarterFørFamiliehendelse.BESKRIVELSE) - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), Manuellbehandling.opprett("UT1350", IkkeOppfyltÅrsak.UTSETTELSE_FØR_TERMIN_FØDSEL, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, false, false)) - .ellers(sjekkOmBareFarHarRett()); + return rs.hvisRegel( + SjekkOmPeriodenStarterFørFamiliehendelse.ID, + SjekkOmPeriodenStarterFørFamiliehendelse.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + Manuellbehandling.opprett( + "UT1350", + IkkeOppfyltÅrsak.UTSETTELSE_FØR_TERMIN_FØDSEL, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + false, + false)) + .ellers(sjekkOmBareFarHarRett()); } private Specification sjekkOmBareFarHarRett() { return rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), sjekkOmMorErIAktivitet()) - .ellers(innvilgUT1351()); + .hvis(new SjekkOmBareFarHarRett(), sjekkOmMorErIAktivitet()) + .ellers(innvilgUT1351()); } private static FastsettePeriodeUtfall innvilgUT1351() { @@ -66,93 +74,112 @@ private static FastsettePeriodeUtfall innvilgUT1351() { private Specification sjekkOmMorErIAktivitet() { return rs.hvisRegel(SjekkOmMorErIAktivitet.ID, SjekkOmMorErIAktivitet.BESKRIVELSE) - .hvis(new SjekkOmMorErIAktivitet(), Oppfylt.opprett("UT1352", InnvilgetÅrsak.UTSETTELSE_GYLDIG_BFR_AKT_KRAV_OPPFYLT, false, false)) - .ellers(new AvslagAktivitetskravDelregel().getSpecification()); + .hvis( + new SjekkOmMorErIAktivitet(), + Oppfylt.opprett("UT1352", InnvilgetÅrsak.UTSETTELSE_GYLDIG_BFR_AKT_KRAV_OPPFYLT, false, false)) + .ellers(new AvslagAktivitetskravDelregel().getSpecification()); } private Specification sjekkOmTidsperiodeForbeholdtMor() { return rs.hvisRegel(SjekkOmTidsperiodeForbeholdtMor.ID, SjekkOmTidsperiodeForbeholdtMor.BESKRIVELSE) - .hvis(new SjekkOmTidsperiodeForbeholdtMor(), sjekkOmSykdomSkade()) - .ellers(sjekkOmAleneomsorg()); + .hvis(new SjekkOmTidsperiodeForbeholdtMor(), sjekkOmSykdomSkade()) + .ellers(sjekkOmAleneomsorg()); } private Specification sjekkOmAleneomsorg() { return rs.hvisRegel(SjekkOmErAleneomsorg.ID, SjekkOmErAleneomsorg.BESKRIVELSE) - .hvis(new SjekkOmErAleneomsorg(), innvilgUT1351()) - .ellers(sjekkOmBareFarHarRett()); + .hvis(new SjekkOmErAleneomsorg(), innvilgUT1351()) + .ellers(sjekkOmBareFarHarRett()); } private Specification sjekkOmSykdomSkade() { var erSøkerSykErDokumentert = rs.hvisRegel(SjekkOmSykdomSkade.ID, SjekkOmSykdomSkade.BESKRIVELSE) - .hvis(new SjekkOmSykdomSkade(), Oppfylt.opprett("UT1353", InnvilgetÅrsak.UTSETTELSE_GYLDIG_SEKS_UKER_FRI_SYKDOM, false, false)) - .ellers(IkkeOppfylt.opprett("UT1354", IkkeOppfyltÅrsak.SØKERS_SYKDOM_SKADE_SEKS_UKER_IKKE_OPPFYLT, true, false)); + .hvis( + new SjekkOmSykdomSkade(), + Oppfylt.opprett("UT1353", InnvilgetÅrsak.UTSETTELSE_GYLDIG_SEKS_UKER_FRI_SYKDOM, false, false)) + .ellers(IkkeOppfylt.opprett( + "UT1354", IkkeOppfyltÅrsak.SØKERS_SYKDOM_SKADE_SEKS_UKER_IKKE_OPPFYLT, true, false)); return rs.hvisRegel(SjekkOmUtsettelsePgaSykdomSkade.ID, SjekkOmUtsettelsePgaSykdomSkade.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaSykdomSkade(), erSøkerSykErDokumentert) - .ellers(sjekkOmSøkersInnleggelse()); + .hvis(new SjekkOmUtsettelsePgaSykdomSkade(), erSøkerSykErDokumentert) + .ellers(sjekkOmSøkersInnleggelse()); } private Specification sjekkOmSøkersInnleggelse() { var erSøkerInnlagtErDokumentert = rs.hvisRegel(SjekkOmSøkerInnlagt.ID, SjekkOmSøkerInnlagt.BESKRIVELSE) - .hvis(new SjekkOmSøkerInnlagt(), Oppfylt.opprett("UT1355", InnvilgetÅrsak.UTSETTELSE_GYLDIG_SEKS_UKER_INNLEGGELSE, false, false)) - .ellers(IkkeOppfylt.opprett("UT1356", IkkeOppfyltÅrsak.SØKERS_INNLEGGELSE_SEKS_UKER_IKKE_OPPFYLT, true, false)); + .hvis( + new SjekkOmSøkerInnlagt(), + Oppfylt.opprett("UT1355", InnvilgetÅrsak.UTSETTELSE_GYLDIG_SEKS_UKER_INNLEGGELSE, false, false)) + .ellers(IkkeOppfylt.opprett( + "UT1356", IkkeOppfyltÅrsak.SØKERS_INNLEGGELSE_SEKS_UKER_IKKE_OPPFYLT, true, false)); return rs.hvisRegel(SjekkOmUtsettelsePgaSøkerInnleggelse.ID, SjekkOmUtsettelsePgaSøkerInnleggelse.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaSøkerInnleggelse(), erSøkerInnlagtErDokumentert) - .ellers(sjekkOmUtsettelsePgaBarnInnlagt()); + .hvis(new SjekkOmUtsettelsePgaSøkerInnleggelse(), erSøkerInnlagtErDokumentert) + .ellers(sjekkOmUtsettelsePgaBarnInnlagt()); } private Specification sjekkOmUtsettelsePgaBarnInnlagt() { var varBarnetInnlagtSjekk = rs.hvisRegel(SjekkOmBarnInnlagt.ID, SjekkOmBarnInnlagt.BESKRIVELSE) - .hvis(new SjekkOmBarnInnlagt(), Oppfylt.opprett("UT1359", InnvilgetÅrsak.UTSETTELSE_GYLDIG_SEKS_UKER_FRI_BARN_INNLAGT, false, false)) - .ellers(IkkeOppfylt.opprett("UT1358", IkkeOppfyltÅrsak.BARNETS_INNLEGGELSE_SEKS_UKER_IKKE_OPPFYLT, true, false)); + .hvis( + new SjekkOmBarnInnlagt(), + Oppfylt.opprett( + "UT1359", InnvilgetÅrsak.UTSETTELSE_GYLDIG_SEKS_UKER_FRI_BARN_INNLAGT, false, false)) + .ellers(IkkeOppfylt.opprett( + "UT1358", IkkeOppfyltÅrsak.BARNETS_INNLEGGELSE_SEKS_UKER_IKKE_OPPFYLT, true, false)); - return rs.hvisRegel(SjekkOmUtsettelsePgaBarnetsInnleggelse.ID, SjekkOmUtsettelsePgaBarnetsInnleggelse.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaBarnetsInnleggelse(), varBarnetInnlagtSjekk) - .ellers(sjekkOmSøkerErMor()); + return rs.hvisRegel( + SjekkOmUtsettelsePgaBarnetsInnleggelse.ID, SjekkOmUtsettelsePgaBarnetsInnleggelse.BESKRIVELSE) + .hvis(new SjekkOmUtsettelsePgaBarnetsInnleggelse(), varBarnetInnlagtSjekk) + .ellers(sjekkOmSøkerErMor()); } private Specification sjekkOmSøkerErMor() { return rs.hvisRegel(SjekkOmSøkerErMor.ID, SjekkOmSøkerErMor.BESKRIVELSE) - .hvis(new SjekkOmSøkerErMor(), manuellUT1357()) - .ellers(sjekkOmFarHarDagerRundtFødsel()); + .hvis(new SjekkOmSøkerErMor(), manuellUT1357()) + .ellers(sjekkOmFarHarDagerRundtFødsel()); } private Specification sjekkOmFarHarDagerRundtFødsel() { return rs.hvisRegel(SjekkOmFarHarDagerRundtFødsel.ID, SjekkOmFarHarDagerRundtFødsel.BESKRIVELSE) - .hvis(new SjekkOmFarHarDagerRundtFødsel(), sjekkOmFriUtsettelse()) - .ellers(manuellUT1357()); + .hvis(new SjekkOmFarHarDagerRundtFødsel(), sjekkOmFriUtsettelse()) + .ellers(manuellUT1357()); } private Specification sjekkOmFriUtsettelse() { return rs.hvisRegel(SjekkOmFriUtsettelse.ID, SjekkOmFriUtsettelse.BESKRIVELSE) - .hvis(new SjekkOmFriUtsettelse(), Oppfylt.opprett("UT1361", InnvilgetÅrsak.UTSETTELSE_GYLDIG, false, false)) - .ellers(manuellUT1357()); + .hvis( + new SjekkOmFriUtsettelse(), + Oppfylt.opprett("UT1361", InnvilgetÅrsak.UTSETTELSE_GYLDIG, false, false)) + .ellers(manuellUT1357()); } private FastsettePeriodeUtfall manuellUT1357() { - return Manuellbehandling.opprett("UT1357", null, Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false); + return Manuellbehandling.opprett( + "UT1357", null, Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false); } private Specification sjekkOmUtsettelsePgaBarnInnlagtPrematur() { - return rs.hvisRegel(SjekkOmUtsettelsePgaBarnetsInnleggelse.ID, SjekkOmUtsettelsePgaBarnetsInnleggelse.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaBarnetsInnleggelse(), sjekkOmFødselFørUke33()) - .ellers(sjekkOmTidsperiodeForbeholdtMor()); + return rs.hvisRegel( + SjekkOmUtsettelsePgaBarnetsInnleggelse.ID, SjekkOmUtsettelsePgaBarnetsInnleggelse.BESKRIVELSE) + .hvis(new SjekkOmUtsettelsePgaBarnetsInnleggelse(), sjekkOmFødselFørUke33()) + .ellers(sjekkOmTidsperiodeForbeholdtMor()); } private Specification sjekkOmFødselFørUke33() { return rs.hvisRegel(SjekkOmFødselErFørUke33.ID, SjekkOmFødselErFørUke33.BESKRIVELSE) - .hvis(new SjekkOmFødselErFørUke33(), sjekkOmPeriodenErFørTermin()) - .ellers(sjekkOmTidsperiodeForbeholdtMor()); + .hvis(new SjekkOmFødselErFørUke33(), sjekkOmPeriodenErFørTermin()) + .ellers(sjekkOmTidsperiodeForbeholdtMor()); } private Specification sjekkOmPeriodenErFørTermin() { return rs.hvisRegel(SjekkOmPeriodeErFørTermin.ID, SjekkOmPeriodeErFørTermin.BESKRIVELSE) - .hvis(new SjekkOmPeriodeErFørTermin(), sjekkOmBarnetVarInnlagtPrematur()) - .ellers(sjekkOmTidsperiodeForbeholdtMor()); + .hvis(new SjekkOmPeriodeErFørTermin(), sjekkOmBarnetVarInnlagtPrematur()) + .ellers(sjekkOmTidsperiodeForbeholdtMor()); } private Specification sjekkOmBarnetVarInnlagtPrematur() { return rs.hvisRegel(SjekkOmBarnInnlagt.ID, SjekkOmBarnInnlagt.BESKRIVELSE) - .hvis(new SjekkOmBarnInnlagt(), IkkeOppfylt.opprett("UT1360", IkkeOppfyltÅrsak.FRATREKK_PLEIEPENGER, true, false)) - .ellers(sjekkOmTidsperiodeForbeholdtMor()); + .hvis( + new SjekkOmBarnInnlagt(), + IkkeOppfylt.opprett("UT1360", IkkeOppfyltÅrsak.FRATREKK_PLEIEPENGER, true, false)) + .ellers(sjekkOmTidsperiodeForbeholdtMor()); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/UtsettelseDelregelSammenhengendeUttak.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/UtsettelseDelregelSammenhengendeUttak.java index 9b7bdd18..a3798807 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/UtsettelseDelregelSammenhengendeUttak.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/UtsettelseDelregelSammenhengendeUttak.java @@ -46,183 +46,297 @@ public UtsettelseDelregelSammenhengendeUttak() { @Override public Specification getSpecification() { - return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, SjekkOmPeriodenStarterFørFamiliehendelse.BESKRIVELSE) - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), Manuellbehandling.opprett("UT1151", IkkeOppfyltÅrsak.UTSETTELSE_FØR_TERMIN_FØDSEL, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)) - .ellers(sjekkOmTomPåKonto()); + return rs.hvisRegel( + SjekkOmPeriodenStarterFørFamiliehendelse.ID, + SjekkOmPeriodenStarterFørFamiliehendelse.BESKRIVELSE) + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + Manuellbehandling.opprett( + "UT1151", + IkkeOppfyltÅrsak.UTSETTELSE_FØR_TERMIN_FØDSEL, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)) + .ellers(sjekkOmTomPåKonto()); } private Specification sjekkOmTomPåKonto() { return rs.hvisRegel(SjekkOmTomForAlleSineKontoer.ID, SjekkOmTomForAlleSineKontoer.BESKRIVELSE) - .hvis(new SjekkOmTomForAlleSineKontoer(), - IkkeOppfylt.opprett("UT1125", IkkeOppfyltÅrsak.INGEN_STØNADSDAGER_IGJEN_FOR_AVSLÅTT_UTSETTELSE, false, false)) - .ellers(sjekkOmFerie()); + .hvis( + new SjekkOmTomForAlleSineKontoer(), + IkkeOppfylt.opprett( + "UT1125", + IkkeOppfyltÅrsak.INGEN_STØNADSDAGER_IGJEN_FOR_AVSLÅTT_UTSETTELSE, + false, + false)) + .ellers(sjekkOmFerie()); } private Specification sjekkOmFerie() { return rs.hvisRegel(SjekkOmUtsettelsePgaFerie.ID, "Er det utsettelse pga ferie?") - .hvis(new SjekkOmUtsettelsePgaFerie(), delRegelForFerie()) - .ellers(sjekkOmUtsettelsePgaArbeid()); + .hvis(new SjekkOmUtsettelsePgaFerie(), delRegelForFerie()) + .ellers(sjekkOmUtsettelsePgaArbeid()); } private Specification delRegelForFerie() { var sjekkOmMorErIAktivitet = rs.hvisRegel(SjekkOmMorErIAktivitet.ID, SjekkOmMorErIAktivitet.BESKRIVELSE) - .hvis(new SjekkOmMorErIAktivitet(), Oppfylt.opprett("UT1108", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_FERIE, false, false)) - .ellers(new AvslagAktivitetskravDelregel().getSpecification()); + .hvis( + new SjekkOmMorErIAktivitet(), + Oppfylt.opprett("UT1108", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_FERIE, false, false)) + .ellers(new AvslagAktivitetskravDelregel().getSpecification()); var sjekkOmBareFarHarRettNode = rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), sjekkOmMorErIAktivitet) - .ellers(Oppfylt.opprett("UT1108", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_FERIE, false, false)); - - var sjekkOmFeriePåBevegeligHelligdag = rs.hvisRegel(SjekkOmFeriePåBevegeligHelligdag.ID, "Er det ferie på bevegelig helligdag?") - .hvis(new SjekkOmFeriePåBevegeligHelligdag(), - Manuellbehandling.opprett("UT1104", IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, true)) - .ellers(sjekkOmBareFarHarRettNode); + .hvis(new SjekkOmBareFarHarRett(), sjekkOmMorErIAktivitet) + .ellers(Oppfylt.opprett("UT1108", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_FERIE, false, false)); + + var sjekkOmFeriePåBevegeligHelligdag = rs.hvisRegel( + SjekkOmFeriePåBevegeligHelligdag.ID, "Er det ferie på bevegelig helligdag?") + .hvis( + new SjekkOmFeriePåBevegeligHelligdag(), + Manuellbehandling.opprett( + "UT1104", + IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + true)) + .ellers(sjekkOmBareFarHarRettNode); var sjekkOmSøkerErArbeidstaker = rs.hvisRegel(SjekkOmSøkerErArbeidstaker.ID, "Er søker arbeidstaker?") - .hvis(new SjekkOmSøkerErArbeidstaker(), sjekkOmFeriePåBevegeligHelligdag) - .ellers(Manuellbehandling.opprett("UT1102", IkkeOppfyltÅrsak.FERIE_SELVSTENDIG_NÆRINGSDRIVENDSE_FRILANSER, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)); - - var sjekkOmUtsettelseEtterUke6 = rs.hvisRegel(SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) - .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), sjekkOmSøkerErArbeidstaker) - .ellers(IkkeOppfylt.opprett("UT1101", IkkeOppfyltÅrsak.UTSETTELSE_INNENFOR_DE_FØRSTE_6_UKENE, true, true)); - - var sjekkOmSøknadGjelderFødsel = rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUtsettelseEtterUke6) - .ellers(sjekkOmSøkerErArbeidstaker); - - return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Er utsettelsesperioden før termin/fødsel eller omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), Manuellbehandling.opprett("UT1100", IkkeOppfyltÅrsak.UTSETTELSE_FØR_TERMIN_FØDSEL, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)) - .ellers(sjekkOmSøknadGjelderFødsel); + .hvis(new SjekkOmSøkerErArbeidstaker(), sjekkOmFeriePåBevegeligHelligdag) + .ellers(Manuellbehandling.opprett( + "UT1102", + IkkeOppfyltÅrsak.FERIE_SELVSTENDIG_NÆRINGSDRIVENDSE_FRILANSER, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); + + var sjekkOmUtsettelseEtterUke6 = rs.hvisRegel( + SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) + .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), sjekkOmSøkerErArbeidstaker) + .ellers(IkkeOppfylt.opprett( + "UT1101", IkkeOppfyltÅrsak.UTSETTELSE_INNENFOR_DE_FØRSTE_6_UKENE, true, true)); + + var sjekkOmSøknadGjelderFødsel = rs.hvisRegel( + SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUtsettelseEtterUke6) + .ellers(sjekkOmSøkerErArbeidstaker); + + return rs.hvisRegel( + SjekkOmPeriodenStarterFørFamiliehendelse.ID, + "Er utsettelsesperioden før termin/fødsel eller omsorgsovertakelse?") + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + Manuellbehandling.opprett( + "UT1100", + IkkeOppfyltÅrsak.UTSETTELSE_FØR_TERMIN_FØDSEL, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)) + .ellers(sjekkOmSøknadGjelderFødsel); } private Specification sjekkOmUtsettelsePgaArbeid() { return rs.hvisRegel(SjekkOmUtsettelsePgaArbeid.ID, "Er det utsettelse pga arbeid?") - .hvis(new SjekkOmUtsettelsePgaArbeid(), delregelForArbeid()) - .ellers(sjekkOmUtsettelsePgaSykdomSkade()); + .hvis(new SjekkOmUtsettelsePgaArbeid(), delregelForArbeid()) + .ellers(sjekkOmUtsettelsePgaSykdomSkade()); } private Specification delregelForArbeid() { var sjekkOmMorErIAktivitet = rs.hvisRegel(SjekkOmMorErIAktivitet.ID, SjekkOmMorErIAktivitet.BESKRIVELSE) - .hvis(new SjekkOmMorErIAktivitet(), Oppfylt.opprett("UT1114", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID, false, false)) - .ellers(new AvslagAktivitetskravDelregel().getSpecification()); + .hvis( + new SjekkOmMorErIAktivitet(), + Oppfylt.opprett( + "UT1114", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID, false, false)) + .ellers(new AvslagAktivitetskravDelregel().getSpecification()); var sjekkOmBareFarHarRettNode = rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), sjekkOmMorErIAktivitet) - .ellers(Oppfylt.opprett("UT1114", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID, false, false)); - - var sjekkOmUtsettelseEtterUke6 = rs.hvisRegel(SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) - .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), sjekkOmBareFarHarRettNode) - .ellers(Manuellbehandling.opprett("UT1111", IkkeOppfyltÅrsak.UTSETTELSE_INNENFOR_DE_FØRSTE_6_UKENE, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)); - - var sjekkOmSøknadGjelderFødsel = rs.hvisRegel(SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) - .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUtsettelseEtterUke6) - .ellers(sjekkOmBareFarHarRettNode); - - var sjekkOmSøkerErIArbeidPåHeltid = rs.hvisRegel(SjekkOmFulltArbeidForUtsettelse.ID, - "Er søker i inntektsgivende arbeid på heltid i Norge i søknadsperioden for utsettelse?") - .hvis(new SjekkOmFulltArbeidForUtsettelse(), sjekkOmSøknadGjelderFødsel) - .ellers(Manuellbehandling.opprett("UT1110", IkkeOppfyltÅrsak.IKKE_HELTIDSARBEID, Manuellbehandlingårsak.IKKE_HELTIDSARBEID, true, false)); - - return rs.hvisRegel(SjekkOmPeriodenStarterFørFamiliehendelse.ID, "Er utsettelsesperioden før termin/fødsel eller omsorgsovertakelse?") - .hvis(new SjekkOmPeriodenStarterFørFamiliehendelse(), Manuellbehandling.opprett("UT1109", IkkeOppfyltÅrsak.UTSETTELSE_FØR_TERMIN_FØDSEL, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)) - .ellers(sjekkOmSøkerErIArbeidPåHeltid); + .hvis(new SjekkOmBareFarHarRett(), sjekkOmMorErIAktivitet) + .ellers(Oppfylt.opprett( + "UT1114", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID, false, false)); + + var sjekkOmUtsettelseEtterUke6 = rs.hvisRegel( + SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) + .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), sjekkOmBareFarHarRettNode) + .ellers(Manuellbehandling.opprett( + "UT1111", + IkkeOppfyltÅrsak.UTSETTELSE_INNENFOR_DE_FØRSTE_6_UKENE, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); + + var sjekkOmSøknadGjelderFødsel = rs.hvisRegel( + SjekkOmSøknadGjelderTerminEllerFødsel.ID, SjekkOmSøknadGjelderTerminEllerFødsel.BESKRIVELSE) + .hvis(new SjekkOmSøknadGjelderTerminEllerFødsel(), sjekkOmUtsettelseEtterUke6) + .ellers(sjekkOmBareFarHarRettNode); + + var sjekkOmSøkerErIArbeidPåHeltid = rs.hvisRegel( + SjekkOmFulltArbeidForUtsettelse.ID, + "Er søker i inntektsgivende arbeid på heltid i Norge i søknadsperioden for utsettelse?") + .hvis(new SjekkOmFulltArbeidForUtsettelse(), sjekkOmSøknadGjelderFødsel) + .ellers(Manuellbehandling.opprett( + "UT1110", + IkkeOppfyltÅrsak.IKKE_HELTIDSARBEID, + Manuellbehandlingårsak.IKKE_HELTIDSARBEID, + true, + false)); + + return rs.hvisRegel( + SjekkOmPeriodenStarterFørFamiliehendelse.ID, + "Er utsettelsesperioden før termin/fødsel eller omsorgsovertakelse?") + .hvis( + new SjekkOmPeriodenStarterFørFamiliehendelse(), + Manuellbehandling.opprett( + "UT1109", + IkkeOppfyltÅrsak.UTSETTELSE_FØR_TERMIN_FØDSEL, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)) + .ellers(sjekkOmSøkerErIArbeidPåHeltid); } private Specification sjekkOmUtsettelsePgaSykdomSkade() { return rs.hvisRegel(SjekkOmUtsettelsePgaSykdomSkade.ID, SjekkOmUtsettelsePgaSykdomSkade.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaSykdomSkade(), delregelForSøkerSykdomEllerSkade()) - .ellers(sjekkOmUtsettelsePgaSøkerInnleggelse()); + .hvis(new SjekkOmUtsettelsePgaSykdomSkade(), delregelForSøkerSykdomEllerSkade()) + .ellers(sjekkOmUtsettelsePgaSøkerInnleggelse()); } private Specification sjekkOmUtsettelsePgaSøkerInnleggelse() { return rs.hvisRegel(SjekkOmUtsettelsePgaSøkerInnleggelse.ID, SjekkOmUtsettelsePgaSøkerInnleggelse.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaSøkerInnleggelse(), delregelForSøkerInnlagt()) - .ellers(sjekkOmUtsettelsePgaHV()); + .hvis(new SjekkOmUtsettelsePgaSøkerInnleggelse(), delregelForSøkerInnlagt()) + .ellers(sjekkOmUtsettelsePgaHV()); } private Specification sjekkOmUtsettelsePgaHV() { return rs.hvisRegel(SjekkOmUtsettelsePgaHV.ID, SjekkOmUtsettelsePgaHV.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaHV(), delregelForHV()) - .ellers(sjekkOmUtsettelsePgaTiltakViaNav()); + .hvis(new SjekkOmUtsettelsePgaHV(), delregelForHV()) + .ellers(sjekkOmUtsettelsePgaTiltakViaNav()); } private Specification sjekkOmUtsettelsePgaTiltakViaNav() { return rs.hvisRegel(SjekkOmUtsettelsePgaTiltakViaNav.ID, SjekkOmUtsettelsePgaTiltakViaNav.BESKRIVELSE) - .hvis(new SjekkOmUtsettelsePgaTiltakViaNav(), delregelForTiltakViaNav()) - .ellers(delregelForBarnInnlagt()); + .hvis(new SjekkOmUtsettelsePgaTiltakViaNav(), delregelForTiltakViaNav()) + .ellers(delregelForBarnInnlagt()); } private Specification delregelForSøkerSykdomEllerSkade() { var sjekkOmBareFarHarRettNode = rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), Manuellbehandling.opprett("UT1138", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_SYKDOM, - Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT, false, false)) - .ellers(Oppfylt.opprett("UT1116", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_SYKDOM, false, false)); + .hvis( + new SjekkOmBareFarHarRett(), + Manuellbehandling.opprett( + "UT1138", + InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_SYKDOM, + Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT, + false, + false)) + .ellers(Oppfylt.opprett("UT1116", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_SYKDOM, false, false)); return rs.hvisRegel(SjekkOmSykdomSkade.ID, SjekkOmSykdomSkade.BESKRIVELSE) - .hvis(new SjekkOmSykdomSkade(), sjekkOmBareFarHarRettNode) - .ellers(Manuellbehandling.opprett("UT1115", IkkeOppfyltÅrsak.SØKERS_SYKDOM_SKADE_IKKE_OPPFYLT, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)); + .hvis(new SjekkOmSykdomSkade(), sjekkOmBareFarHarRettNode) + .ellers(Manuellbehandling.opprett( + "UT1115", + IkkeOppfyltÅrsak.SØKERS_SYKDOM_SKADE_IKKE_OPPFYLT, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); } private Specification delregelForSøkerInnlagt() { var sjekkOmBareFarHarRettNode = rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), Manuellbehandling.opprett("UT1137", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_INNLEGGELSE, - Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT, false, false)) - .ellers(Oppfylt.opprett("UT1118", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_INNLEGGELSE, false, false)); + .hvis( + new SjekkOmBareFarHarRett(), + Manuellbehandling.opprett( + "UT1137", + InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_INNLEGGELSE, + Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT, + false, + false)) + .ellers(Oppfylt.opprett("UT1118", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_INNLEGGELSE, false, false)); return rs.hvisRegel(SjekkOmSøkerInnlagt.ID, SjekkOmSøkerInnlagt.BESKRIVELSE) - .hvis(new SjekkOmSøkerInnlagt(), sjekkOmBareFarHarRettNode) - .ellers(Manuellbehandling.opprett("UT1117", IkkeOppfyltÅrsak.SØKERS_INNLEGGELSE_IKKE_OPPFYLT, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)); + .hvis(new SjekkOmSøkerInnlagt(), sjekkOmBareFarHarRettNode) + .ellers(Manuellbehandling.opprett( + "UT1117", + IkkeOppfyltÅrsak.SØKERS_INNLEGGELSE_IKKE_OPPFYLT, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); } private Specification delregelForBarnInnlagt() { var sjekkOmBareFarHarRettNode = rs.hvisRegel(SjekkOmBareFarHarRett.ID, SjekkOmBareFarHarRett.BESKRIVELSE) - .hvis(new SjekkOmBareFarHarRett(), Manuellbehandling.opprett("1136", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_BARN_INNLAGT, - Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT, false, false)) - .ellers(Oppfylt.opprett("UT1120", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_BARN_INNLAGT, false, false)); + .hvis( + new SjekkOmBareFarHarRett(), + Manuellbehandling.opprett( + "1136", + InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_BARN_INNLAGT, + Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT, + false, + false)) + .ellers(Oppfylt.opprett("UT1120", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_BARN_INNLAGT, false, false)); var sjekkOmFørTermin = rs.hvisRegel(SjekkOmPeriodeErFørTermin.ID, SjekkOmPeriodeErFørTermin.BESKRIVELSE) - .hvis(new SjekkOmPeriodeErFørTermin(), IkkeOppfylt.opprett("UT1124", IkkeOppfyltÅrsak.FRATREKK_PLEIEPENGER, true, false)) - .ellers(sjekkOmBareFarHarRettNode); + .hvis( + new SjekkOmPeriodeErFørTermin(), + IkkeOppfylt.opprett("UT1124", IkkeOppfyltÅrsak.FRATREKK_PLEIEPENGER, true, false)) + .ellers(sjekkOmBareFarHarRettNode); var sjekkOmUttakFørUke33 = rs.hvisRegel(SjekkOmFødselErFørUke33.ID, SjekkOmFødselErFørUke33.BESKRIVELSE) - .hvis(new SjekkOmFødselErFørUke33(), sjekkOmFørTermin) - .ellers(sjekkOmBareFarHarRettNode); + .hvis(new SjekkOmFødselErFørUke33(), sjekkOmFørTermin) + .ellers(sjekkOmBareFarHarRettNode); return rs.hvisRegel(SjekkOmBarnInnlagt.ID, SjekkOmBarnInnlagt.BESKRIVELSE) - .hvis(new SjekkOmBarnInnlagt(), sjekkOmUttakFørUke33) - .ellers(Manuellbehandling.opprett("UT1119", IkkeOppfyltÅrsak.BARNETS_INNLEGGELSE_IKKE_OPPFYLT, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)); + .hvis(new SjekkOmBarnInnlagt(), sjekkOmUttakFørUke33) + .ellers(Manuellbehandling.opprett( + "UT1119", + IkkeOppfyltÅrsak.BARNETS_INNLEGGELSE_IKKE_OPPFYLT, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); } private Specification delregelForHV() { - var sjekkOmUtsettelseEtterUke6 = rs.hvisRegel(SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) - .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), - Oppfylt.opprett("UT1131", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID, false, false)) - .ellers(Manuellbehandling.opprett("UT1130", IkkeOppfyltÅrsak.UTSETTELSE_INNENFOR_DE_FØRSTE_6_UKENE, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)); + var sjekkOmUtsettelseEtterUke6 = rs.hvisRegel( + SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) + .hvis( + new SjekkOmUttakSkjerEtterDeFørsteUkene(), + Oppfylt.opprett( + "UT1131", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID, false, false)) + .ellers(Manuellbehandling.opprett( + "UT1130", + IkkeOppfyltÅrsak.UTSETTELSE_INNENFOR_DE_FØRSTE_6_UKENE, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); return rs.hvisRegel(SjekkOmDokumentertHV.ID, SjekkOmDokumentertHV.BESKRIVELSE) - .hvis(new SjekkOmDokumentertHV(), sjekkOmUtsettelseEtterUke6) - .ellers(Manuellbehandling.opprett("UT1128", IkkeOppfyltÅrsak.IKKE_HELTIDSARBEID, Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, - true, false)); + .hvis(new SjekkOmDokumentertHV(), sjekkOmUtsettelseEtterUke6) + .ellers(Manuellbehandling.opprett( + "UT1128", + IkkeOppfyltÅrsak.IKKE_HELTIDSARBEID, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); } private Specification delregelForTiltakViaNav() { - var sjekkOmUtsettelseEtterUke6 = rs.hvisRegel(SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) - .hvis(new SjekkOmUttakSkjerEtterDeFørsteUkene(), - Oppfylt.opprett("UT1135", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID, false, false)) - .ellers(Manuellbehandling.opprett("UT1134", IkkeOppfyltÅrsak.UTSETTELSE_INNENFOR_DE_FØRSTE_6_UKENE, - Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, true, false)); + var sjekkOmUtsettelseEtterUke6 = rs.hvisRegel( + SjekkOmUttakSkjerEtterDeFørsteUkene.ID, SjekkOmUttakSkjerEtterDeFørsteUkene.BESKRIVELSE) + .hvis( + new SjekkOmUttakSkjerEtterDeFørsteUkene(), + Oppfylt.opprett( + "UT1135", InnvilgetÅrsak.UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID, false, false)) + .ellers(Manuellbehandling.opprett( + "UT1134", + IkkeOppfyltÅrsak.UTSETTELSE_INNENFOR_DE_FØRSTE_6_UKENE, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); return rs.hvisRegel(SjekkOmDokumentertTiltakViaNav.ID, SjekkOmDokumentertTiltakViaNav.BESKRIVELSE) - .hvis(new SjekkOmDokumentertTiltakViaNav(), sjekkOmUtsettelseEtterUke6) - .ellers(Manuellbehandling.opprett("UT1132", IkkeOppfyltÅrsak.IKKE_HELTIDSARBEID, Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, - true, false)); + .hvis(new SjekkOmDokumentertTiltakViaNav(), sjekkOmUtsettelseEtterUke6) + .ellers(Manuellbehandling.opprett( + "UT1132", + IkkeOppfyltÅrsak.IKKE_HELTIDSARBEID, + Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE, + true, + false)); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/ForbruksTeller.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/ForbruksTeller.java index b089cf62..ce3345b1 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/ForbruksTeller.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/ForbruksTeller.java @@ -8,7 +8,6 @@ import java.util.function.BiFunction; import java.util.function.BiPredicate; import java.util.function.Predicate; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode; @@ -17,44 +16,58 @@ final class ForbruksTeller { - private ForbruksTeller() { - } + private ForbruksTeller() {} - static Trekkdager forbruksTellerKontoKunForbruk(Stønadskontotype stønadskonto, - AktivitetIdentifikator aktivitet, - List søkersPerioder, - Predicate tellPeriode) { - return forbruksTeller(stønadskonto, aktivitet, søkersPerioder, tellPeriode, (s, p) -> Trekkdager.ZERO, - (p, a) -> Objects.equals(stønadskonto, a.getStønadskontotype())); + static Trekkdager forbruksTellerKontoKunForbruk( + Stønadskontotype stønadskonto, + AktivitetIdentifikator aktivitet, + List søkersPerioder, + Predicate tellPeriode) { + return forbruksTeller( + stønadskonto, + aktivitet, + søkersPerioder, + tellPeriode, + (s, p) -> Trekkdager.ZERO, + (p, a) -> Objects.equals(stønadskonto, a.getStønadskontotype())); } - static Trekkdager forbruksTellerKontoMedUnntak(Stønadskontotype stønadskonto, - AktivitetIdentifikator aktivitet, - List søkersPerioder, - Predicate tellPeriode, - BiFunction unntaksTeller) { - return forbruksTeller(stønadskonto, aktivitet, søkersPerioder, tellPeriode, unntaksTeller, - (p, a) -> Objects.equals(stønadskonto, a.getStønadskontotype())); + static Trekkdager forbruksTellerKontoMedUnntak( + Stønadskontotype stønadskonto, + AktivitetIdentifikator aktivitet, + List søkersPerioder, + Predicate tellPeriode, + BiFunction unntaksTeller) { + return forbruksTeller( + stønadskonto, + aktivitet, + søkersPerioder, + tellPeriode, + unntaksTeller, + (p, a) -> Objects.equals(stønadskonto, a.getStønadskontotype())); } - - static Trekkdager forbruksTeller(Stønadskontotype stønadskonto, - AktivitetIdentifikator aktivitet, - List søkersPerioder, - Predicate tellPeriode, - BiFunction unntaksTeller, - BiPredicate aktivitetsfilter) { + static Trekkdager forbruksTeller( + Stønadskontotype stønadskonto, + AktivitetIdentifikator aktivitet, + List søkersPerioder, + Predicate tellPeriode, + BiFunction unntaksTeller, + BiPredicate aktivitetsfilter) { var sum = Trekkdager.ZERO; var startindex = førstePeriodeSomTellesMedAktivitet(aktivitet, søkersPerioder, tellPeriode); - // Tilkommet aktivitet. Bruk minste forbruk inntil første forekomst - evt ZERO dersom ingen forekomster. + // Tilkommet aktivitet. Bruk minste forbruk inntil første forekomst - evt ZERO dersom ingen + // forekomster. if (startindex > 0) { var perioderTomPeriode = søkersPerioder.subList(0, startindex); var minForbrukteDagerEksisterendeAktiviteter = aktiviteterIPerioder(perioderTomPeriode).stream() - .filter( - a -> førstePeriodeSomTellesMedAktivitet(a, perioderTomPeriode, tellPeriode) < startindex) // Tell aktiviteter begynner tidligere - .map(a -> forbruksTeller(stønadskonto, a, perioderTomPeriode, tellPeriode, unntaksTeller, aktivitetsfilter)) - .min(Trekkdager::compareTo) - .orElse(Trekkdager.ZERO); + .filter(a -> førstePeriodeSomTellesMedAktivitet(a, perioderTomPeriode, tellPeriode) + < startindex) // Tell aktiviteter begynner + // tidligere + .map(a -> forbruksTeller( + stønadskonto, a, perioderTomPeriode, tellPeriode, unntaksTeller, aktivitetsfilter)) + .min(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); sum = sum.add(minForbrukteDagerEksisterendeAktiviteter); } @@ -70,10 +83,12 @@ static Trekkdager forbruksTeller(Stønadskontotype stønadskonto, return sum; } - // Index til første periode som inneholder aktivitet, 0 dersom finnes fra start, max dersom ikke funnet - private static int førstePeriodeSomTellesMedAktivitet(AktivitetIdentifikator aktivitet, - List perioder, - Predicate tellPeriode) { + // Index til første periode som inneholder aktivitet, 0 dersom finnes fra start, max dersom ikke + // funnet + private static int førstePeriodeSomTellesMedAktivitet( + AktivitetIdentifikator aktivitet, + List perioder, + Predicate tellPeriode) { var førstePeriodeSomTelles = -1; for (var i = 0; i < perioder.size(); i++) { var periode = perioder.get(i); @@ -89,15 +104,15 @@ static Trekkdager forbruksTeller(Stønadskontotype stønadskonto, return perioder.size(); } - private static Trekkdager trekkdagerForUttaksperiode(AktivitetIdentifikator aktivitet, - FastsattUttakPeriode periode, - BiPredicate aktivitetsvelger) { - return periode.getAktiviteter() - .stream() - .filter(a -> a.getAktivitetIdentifikator().equals(aktivitet)) - .filter(a -> aktivitetsvelger.test(periode, a)) - .findFirst() - .map(FastsattUttakPeriodeAktivitet::getTrekkdager) - .orElse(Trekkdager.ZERO); + private static Trekkdager trekkdagerForUttaksperiode( + AktivitetIdentifikator aktivitet, + FastsattUttakPeriode periode, + BiPredicate aktivitetsvelger) { + return periode.getAktiviteter().stream() + .filter(a -> a.getAktivitetIdentifikator().equals(aktivitet)) + .filter(a -> aktivitetsvelger.test(periode, a)) + .findFirst() + .map(FastsattUttakPeriodeAktivitet::getTrekkdager) + .orElse(Trekkdager.ZERO); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregning.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregning.java index 2962b299..aeafc73a 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregning.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregning.java @@ -22,7 +22,6 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; @@ -46,41 +45,51 @@ public class SaldoUtregning { private final LocalDateTime sisteSøknadMottattTidspunktAnnenpart; private final SaldoUtregningFlerbarnsdager saldoUtregningFlerbarnsdager; - SaldoUtregning(Map stønadskontoer, // NOSONAR - List søkersPerioder, List annenpartsPerioder, SaldoUtregningGrunnlag grunnlag) { + SaldoUtregning( + Map stønadskontoer, // NOSONAR + List søkersPerioder, + List annenpartsPerioder, + SaldoUtregningGrunnlag grunnlag) { this.søkersPerioder = søkersPerioder; this.annenpartsPerioder = fjernOppholdsperioderEtterSisteUttaksdato(søkersPerioder, annenpartsPerioder); this.søkersAktiviteter = grunnlag.getAktiviteter(); - this.sisteSøknadMottattTidspunktSøker = grunnlag.getSisteSøknadMottattTidspunktSøker().orElse(null); - this.sisteSøknadMottattTidspunktAnnenpart = grunnlag.getSisteSøknadMottattTidspunktAnnenpart().orElse(null); + this.sisteSøknadMottattTidspunktSøker = + grunnlag.getSisteSøknadMottattTidspunktSøker().orElse(null); + this.sisteSøknadMottattTidspunktAnnenpart = + grunnlag.getSisteSøknadMottattTidspunktAnnenpart().orElse(null); this.berørtBehandling = grunnlag.isBerørtBehandling(); - this.saldoUtregningFlerbarnsdager = new SaldoUtregningFlerbarnsdager(søkersPerioder, this.annenpartsPerioder, søkersAktiviteter, - grunnlag.getSpesialkontoTrekkdager(Spesialkontotype.FLERBARN), grunnlag.getSpesialkontoTrekkdager(Spesialkontotype.BARE_FAR_MINSTERETT)); + this.saldoUtregningFlerbarnsdager = new SaldoUtregningFlerbarnsdager( + søkersPerioder, + this.annenpartsPerioder, + søkersAktiviteter, + grunnlag.getSpesialkontoTrekkdager(Spesialkontotype.FLERBARN), + grunnlag.getSpesialkontoTrekkdager(Spesialkontotype.BARE_FAR_MINSTERETT)); this.stønadskonti.putAll(stønadskontoer); - Arrays.stream(Spesialkontotype.values()).forEach(k -> this.spesialkonti.put(k, grunnlag.getSpesialkontoTrekkdager(k))); - } - - - SaldoUtregning(Map stønadskontoer, - // NOSONAR - List søkersPerioder, - List annenpartsPerioder, - boolean berørtBehandling, - Set søkersAktiviteter, - LocalDateTime sisteSøknadMottattTidspunktSøker, - LocalDateTime sisteSøknadMottattTidspunktAnnenpart, - Trekkdager minsterettDager, - Trekkdager utenAktivitetskravDager, - Trekkdager flerbarnsdager, - Trekkdager farUttakRundtFødselDager) { + Arrays.stream(Spesialkontotype.values()) + .forEach(k -> this.spesialkonti.put(k, grunnlag.getSpesialkontoTrekkdager(k))); + } + + SaldoUtregning( + Map stønadskontoer, + // NOSONAR + List søkersPerioder, + List annenpartsPerioder, + boolean berørtBehandling, + Set søkersAktiviteter, + LocalDateTime sisteSøknadMottattTidspunktSøker, + LocalDateTime sisteSøknadMottattTidspunktAnnenpart, + Trekkdager minsterettDager, + Trekkdager utenAktivitetskravDager, + Trekkdager flerbarnsdager, + Trekkdager farUttakRundtFødselDager) { this.søkersPerioder = søkersPerioder; this.søkersAktiviteter = søkersAktiviteter; this.sisteSøknadMottattTidspunktSøker = sisteSøknadMottattTidspunktSøker; this.sisteSøknadMottattTidspunktAnnenpart = sisteSøknadMottattTidspunktAnnenpart; this.annenpartsPerioder = fjernOppholdsperioderEtterSisteUttaksdato(søkersPerioder, annenpartsPerioder); this.berørtBehandling = berørtBehandling; - this.saldoUtregningFlerbarnsdager = new SaldoUtregningFlerbarnsdager(søkersPerioder, this.annenpartsPerioder, søkersAktiviteter, - flerbarnsdager, minsterettDager); + this.saldoUtregningFlerbarnsdager = new SaldoUtregningFlerbarnsdager( + søkersPerioder, this.annenpartsPerioder, søkersAktiviteter, flerbarnsdager, minsterettDager); this.stønadskonti.putAll(stønadskontoer); this.spesialkonti.put(Spesialkontotype.BARE_FAR_MINSTERETT, minsterettDager); this.spesialkonti.put(Spesialkontotype.UTEN_AKTIVITETSKRAV, utenAktivitetskravDager); @@ -88,22 +97,33 @@ public class SaldoUtregning { this.spesialkonti.put(Spesialkontotype.TETTE_FØDSLER, Trekkdager.ZERO); } - SaldoUtregning(Map stønadskontoer, - List søkersPerioder, - List annenpartsPerioder, - boolean berørtBehandling, - Set søkersAktiviteter, - LocalDateTime sisteSøknadMottattTidspunktSøker, - LocalDateTime sisteSøknadMottattTidspunktAnnenpart) { - this(stønadskontoer, søkersPerioder, annenpartsPerioder, berørtBehandling, søkersAktiviteter, sisteSøknadMottattTidspunktSøker, - sisteSøknadMottattTidspunktAnnenpart, Trekkdager.ZERO, Trekkdager.ZERO, Trekkdager.ZERO, Trekkdager.ZERO); + SaldoUtregning( + Map stønadskontoer, + List søkersPerioder, + List annenpartsPerioder, + boolean berørtBehandling, + Set søkersAktiviteter, + LocalDateTime sisteSøknadMottattTidspunktSøker, + LocalDateTime sisteSøknadMottattTidspunktAnnenpart) { + this( + stønadskontoer, + søkersPerioder, + annenpartsPerioder, + berørtBehandling, + søkersAktiviteter, + sisteSøknadMottattTidspunktSøker, + sisteSøknadMottattTidspunktAnnenpart, + Trekkdager.ZERO, + Trekkdager.ZERO, + Trekkdager.ZERO, + Trekkdager.ZERO); } /** * Saldo for angitt stønadskonto og aktivitet. * * @param stønadskonto angitt stønadskonto. - * @param aktivitet angitt aktivitet. + * @param aktivitet angitt aktivitet. * @return antall gjenstående dager for angitt stønadskonto og aktivitet. */ public int saldo(Stønadskontotype stønadskonto, AktivitetIdentifikator aktivitet) { @@ -118,21 +138,25 @@ public int saldo(Stønadskontotype stønadskonto, AktivitetIdentifikator aktivit * Saldo for angitt stønadskonto og aktivitet. * * @param stønadskonto angitt stønadskonto. - * @param aktivitet angitt aktivitet. + * @param aktivitet angitt aktivitet. * @return antall gjenstående dager for angitt stønadskonto og aktivitet. */ public Trekkdager saldoITrekkdager(Stønadskontotype stønadskonto, AktivitetIdentifikator aktivitet) { var forbruktSøker = forbruktSøker(stønadskonto, aktivitet, søkersPerioder); var forbruktAnnenpart = minForbruktAvPerioder(stønadskonto, annenpartsPerioder); - //frigitte dager er dager fra annenpart som blir ledig når søker tar uttak i samme periode + // frigitte dager er dager fra annenpart som blir ledig når søker tar uttak i samme periode var frigitteDager = frigitteDager(stønadskonto); - return getMaxDagerITrekkdager(stønadskonto).subtract(forbruktSøker).subtract(forbruktAnnenpart).add(frigitteDager); + return getMaxDagerITrekkdager(stønadskonto) + .subtract(forbruktSøker) + .subtract(forbruktAnnenpart) + .add(frigitteDager); } /* * Skal sørge for at MSP + opphold/utsettelse ikke reduserer minsteretten */ - public Trekkdager nettoSaldoJustertForMinsterett(Stønadskontotype stønadskonto, AktivitetIdentifikator aktivitet, boolean kanTrekkeAvMinsterett) { + public Trekkdager nettoSaldoJustertForMinsterett( + Stønadskontotype stønadskonto, AktivitetIdentifikator aktivitet, boolean kanTrekkeAvMinsterett) { var brutto = saldoITrekkdager(stønadskonto, aktivitet); if (!kanTrekkeAvMinsterett) { var restSaldoMinsterett = restSaldoMinsterett(aktivitet); @@ -147,7 +171,10 @@ public Trekkdager restSaldoFlerbarnsdager() { } public Trekkdager restSaldoMinsterett() { - return aktiviteterForSøker().stream().map(this::restSaldoMinsterett).max(Trekkdager::compareTo).orElse(Trekkdager.ZERO); + return aktiviteterForSøker().stream() + .map(this::restSaldoMinsterett) + .max(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); } public Trekkdager restSaldoMinsterett(AktivitetIdentifikator aktivitet) { @@ -159,7 +186,10 @@ public Trekkdager restSaldoMinsterett(AktivitetIdentifikator aktivitet) { } public Trekkdager restSaldoEtterNesteStønadsperiode() { - return aktiviteterForSøker().stream().map(this::restSaldoEtterNesteStønadsperiode).max(Trekkdager::compareTo).orElse(Trekkdager.ZERO); + return aktiviteterForSøker().stream() + .map(this::restSaldoEtterNesteStønadsperiode) + .max(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); } public Trekkdager restSaldoEtterNesteStønadsperiode(AktivitetIdentifikator aktivitet) { @@ -170,13 +200,15 @@ public Trekkdager restSaldoMinsterett(AktivitetIdentifikator aktivitet) { return getMaxDagerEtterNesteStønadsperiode().subtract(forbruk); } - public Trekkdager restSaldoFlerbarnsdager(AktivitetIdentifikator aktivitet) { return saldoUtregningFlerbarnsdager.restSaldo(aktivitet); } public Trekkdager restSaldoDagerUtenAktivitetskrav() { - return aktiviteterForSøker().stream().map(this::restSaldoDagerUtenAktivitetskrav).max(Trekkdager::compareTo).orElse(Trekkdager.ZERO); + return aktiviteterForSøker().stream() + .map(this::restSaldoDagerUtenAktivitetskrav) + .max(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); } public Trekkdager restSaldoDagerUtenAktivitetskrav(AktivitetIdentifikator aktivitet) { @@ -188,7 +220,9 @@ public Trekkdager restSaldoDagerUtenAktivitetskrav(AktivitetIdentifikator aktivi } private Trekkdager forbruktAvMinsterett(AktivitetIdentifikator aktivitet) { - return stønadskontoer().stream().map(k -> forbruktSøkersMinsterett(k, aktivitet, søkersPerioder)).reduce(Trekkdager.ZERO, Trekkdager::add); + return stønadskontoer().stream() + .map(k -> forbruktSøkersMinsterett(k, aktivitet, søkersPerioder)) + .reduce(Trekkdager.ZERO, Trekkdager::add); } public Trekkdager getFarUttakRundtFødselDager() { @@ -200,12 +234,13 @@ private Trekkdager forbruktAvMinsterett(AktivitetIdentifikator aktivitet) { return Trekkdager.ZERO; } return aktiviteterForSøker().stream() - .map(a -> restSaldoFarUttakRundtFødsel(a, farUttakRundtFødselPeriode)) - .max(Trekkdager::compareTo) - .orElse(Trekkdager.ZERO); + .map(a -> restSaldoFarUttakRundtFødsel(a, farUttakRundtFødselPeriode)) + .max(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); } - public Trekkdager restSaldoFarUttakRundtFødsel(AktivitetIdentifikator aktivitet, LukketPeriode farUttakRundtFødselPeriode) { + public Trekkdager restSaldoFarUttakRundtFødsel( + AktivitetIdentifikator aktivitet, LukketPeriode farUttakRundtFødselPeriode) { if (Trekkdager.ZERO.equals(getFarUttakRundtFødselDager()) || farUttakRundtFødselPeriode == null) { return Trekkdager.ZERO; } @@ -215,9 +250,10 @@ private Trekkdager forbruktAvMinsterett(AktivitetIdentifikator aktivitet) { private Trekkdager forbruktAvFarRundtFødsel(AktivitetIdentifikator aktivitet, LukketPeriode rundtFødselIntervall) { return stønadskontoer().stream() - .filter(FarUttakRundtFødsel::erKontoRelevant) - .map(k -> ForbruksTeller.forbruksTellerKontoKunForbruk(k, aktivitet, søkersPerioder, p -> erRundtFødsel(p, rundtFødselIntervall))) - .reduce(Trekkdager.ZERO, Trekkdager::add); + .filter(FarUttakRundtFødsel::erKontoRelevant) + .map(k -> ForbruksTeller.forbruksTellerKontoKunForbruk( + k, aktivitet, søkersPerioder, p -> erRundtFødsel(p, rundtFødselIntervall))) + .reduce(Trekkdager.ZERO, Trekkdager::add); } private boolean erRundtFødsel(FastsattUttakPeriode periode, LukketPeriode farUttakRundtFødselPeriode) { @@ -232,7 +268,10 @@ private Trekkdager forbruktAvMinsterett(AktivitetIdentifikator aktivitet) { * @return antall gjenstående dager for angitt stønadskonto. */ public Trekkdager saldoITrekkdager(Stønadskontotype stønadskonto) { - return aktiviteterForSøker().stream().map(a -> saldoITrekkdager(stønadskonto, a)).max(Trekkdager::compareTo).orElse(Trekkdager.ZERO); + return aktiviteterForSøker().stream() + .map(a -> saldoITrekkdager(stønadskonto, a)) + .max(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); } /** @@ -242,20 +281,20 @@ public Trekkdager saldoITrekkdager(Stønadskontotype stønadskonto) { * @return antall gjenstående dager for angitt stønadskonto. */ public int saldo(Stønadskontotype stønadskonto) { - return aktiviteterForSøker().stream().map(a -> saldo(stønadskonto, a)).max(Comparator.naturalOrder()).orElse(0); + return aktiviteterForSøker().stream() + .map(a -> saldo(stønadskonto, a)) + .max(Comparator.naturalOrder()) + .orElse(0); } - /** - * Aktivitet med stønadskonto. Hvis flere aktiviteter har stønadskonto velges den med minst trekkdager - */ - private Optional aktivitetMedStønadskonto(Stønadskontotype stønadskonto, FastsattUttakPeriode periode) { - return periode.getAktiviteter() - .stream() - .filter(a -> Objects.equals(a.getStønadskontotype(), stønadskonto)) - .min(Comparator.comparing(FastsattUttakPeriodeAktivitet::getTrekkdager)); + /** Aktivitet med stønadskonto. Hvis flere aktiviteter har stønadskonto velges den med minst trekkdager */ + private Optional aktivitetMedStønadskonto( + Stønadskontotype stønadskonto, FastsattUttakPeriode periode) { + return periode.getAktiviteter().stream() + .filter(a -> Objects.equals(a.getStønadskontotype(), stønadskonto)) + .min(Comparator.comparing(FastsattUttakPeriodeAktivitet::getTrekkdager)); } - /** * Hvilke stønadskontoer er opprettet. * @@ -265,24 +304,23 @@ public int saldo(Stønadskontotype stønadskonto) { return stønadskonti.keySet(); } - /** - * Har konto negativ saldo, ser på laveste saldo ved flere arbeidsforhold - */ + /** Har konto negativ saldo, ser på laveste saldo ved flere arbeidsforhold */ public boolean negativSaldo(Stønadskontotype stønadskontoType) { return minSaldo(stønadskontoType) < 0; } - /** - * Forenklet implementasjon til bruk ifm berørt-vurderinger - */ - private boolean sjekkNegativSaldoKonservativ(Stønadskontotype stønadskontoType, - List eneparten, - Set aktiviteterEneparten, - List andreparten) { + /** Forenklet implementasjon til bruk ifm berørt-vurderinger */ + private boolean sjekkNegativSaldoKonservativ( + Stønadskontotype stønadskontoType, + List eneparten, + Set aktiviteterEneparten, + List andreparten) { var initSaldo = getMaxDagerITrekkdager(stønadskontoType); var forbruktAnnenpart = minForbruktAvPerioder(stønadskontoType, andreparten); var startSaldo = initSaldo.subtract(forbruktAnnenpart); - return aktiviteterEneparten.stream().anyMatch(a -> startSaldo.subtract(forbruktSøker(stønadskontoType, a, eneparten)).mindreEnn0()); + return aktiviteterEneparten.stream().anyMatch(a -> startSaldo + .subtract(forbruktSøker(stønadskontoType, a, eneparten)) + .mindreEnn0()); } public boolean nokDagerÅFrigiPåAnnenpart(Stønadskontotype stønadskontoType) { @@ -300,7 +338,9 @@ private boolean sjekkNegativSaldoKonservativ(Stønadskontotype stønadskontoType } public boolean søktSamtidigUttak(Stønadskontotype stønadskontoType) { - return søkersPerioder.stream().filter(p -> søktSamtidigUttak(stønadskontoType, p)).anyMatch(FastsattUttakPeriode::isSamtidigUttak); + return søkersPerioder.stream() + .filter(p -> søktSamtidigUttak(stønadskontoType, p)) + .anyMatch(FastsattUttakPeriode::isSamtidigUttak); } public boolean negativSaldoPåNoenKonto() { @@ -308,16 +348,16 @@ private boolean sjekkNegativSaldoKonservativ(Stønadskontotype stønadskontoType } public boolean negativSaldoPåNoenKontoKonservativ() { - return stønadskonti.keySet() - .stream() - .anyMatch(stønadskonto -> sjekkNegativSaldoKonservativ(stønadskonto, søkersPerioder, søkersAktiviteter, annenpartsPerioder)); + return stønadskonti.keySet().stream() + .anyMatch(stønadskonto -> sjekkNegativSaldoKonservativ( + stønadskonto, søkersPerioder, søkersAktiviteter, annenpartsPerioder)); } public boolean negativSaldoPåNoenKontoByttParterKonservativ() { var aktiviteter = aktiviteterForAnnenpart(); - return stønadskonti.keySet() - .stream() - .anyMatch(stønadskonto -> sjekkNegativSaldoKonservativ(stønadskonto, annenpartsPerioder, aktiviteter, søkersPerioder)); + return stønadskonti.keySet().stream() + .anyMatch(stønadskonto -> + sjekkNegativSaldoKonservativ(stønadskonto, annenpartsPerioder, aktiviteter, søkersPerioder)); } public int getMaxDager(Stønadskontotype stønadskontotype) { @@ -354,9 +394,14 @@ private Trekkdager frigitteDager(Stønadskontotype stønadskonto) { } else if (!tapendePeriode(periode, overlappendePeriode) && innvilgetMedTrekkdager(periode)) { sum = sum.add(frigitteDagerVanligeStønadskontoer(stønadskonto, periode, overlappendePeriode)); } else if (tapendePeriode(periode, overlappendePeriode) && overlappendePeriode.isOpphold()) { - var delFom = overlappendePeriode.getFom().isBefore(periode.getFom()) ? periode.getFom() : overlappendePeriode.getFom(); - var delTom = overlappendePeriode.getTom().isBefore(periode.getTom()) ? overlappendePeriode.getTom() : periode.getTom(); - sum = sum.add(trekkdagerForOppholdsperiode(stønadskonto, overlappendePeriode.getOppholdÅrsak(), delFom, delTom)); + var delFom = overlappendePeriode.getFom().isBefore(periode.getFom()) + ? periode.getFom() + : overlappendePeriode.getFom(); + var delTom = overlappendePeriode.getTom().isBefore(periode.getTom()) + ? overlappendePeriode.getTom() + : periode.getTom(); + sum = sum.add(trekkdagerForOppholdsperiode( + stønadskonto, overlappendePeriode.getOppholdÅrsak(), delFom, delTom)); } } } @@ -378,9 +423,8 @@ private boolean tapendePeriode(FastsattUttakPeriode periode, FastsattUttakPeriod return periodeMottattDato.get().isBefore(overlappendePeriodeMottattDato.get()); } - private Trekkdager frigitteDagerVanligeStønadskontoer(Stønadskontotype stønadskonto, - FastsattUttakPeriode periode, - FastsattUttakPeriode overlappende) { + private Trekkdager frigitteDagerVanligeStønadskontoer( + Stønadskontotype stønadskonto, FastsattUttakPeriode periode, FastsattUttakPeriode overlappende) { if (overlappende.isSamtidigUttak()) { return Trekkdager.ZERO; } @@ -388,19 +432,26 @@ private boolean tapendePeriode(FastsattUttakPeriode periode, FastsattUttakPeriod var delFom = periode.getFom().isBefore(overlappende.getFom()) ? overlappende.getFom() : periode.getFom(); var delTom = periode.getTom().isBefore(overlappende.getTom()) ? periode.getTom() : overlappende.getTom(); if (overlappende.isOpphold()) { - frigitte = trekkDagerFraDelAvPeriode(delFom, delTom, overlappende.getFom(), overlappende.getTom(), - trekkdagerForOppholdsperiode(stønadskonto, overlappende)); + frigitte = trekkDagerFraDelAvPeriode( + delFom, + delTom, + overlappende.getFom(), + overlappende.getTom(), + trekkdagerForOppholdsperiode(stønadskonto, overlappende)); } else if (!periode.isSamtidigUttak()) { var annenPartAktivitetMedKonto = aktivitetMedStønadskonto(stønadskonto, overlappende); if (annenPartAktivitetMedKonto.isPresent()) { - frigitte = trekkDagerFraDelAvPeriode(delFom, delTom, overlappende.getFom(), overlappende.getTom(), - annenPartAktivitetMedKonto.get().getTrekkdager()); + frigitte = trekkDagerFraDelAvPeriode( + delFom, + delTom, + overlappende.getFom(), + overlappende.getTom(), + annenPartAktivitetMedKonto.get().getTrekkdager()); } } return frigitte; } - private Trekkdager minForbruktAvPerioder(Stønadskontotype stønadskonto, List perioder) { Map forbrukte = new HashMap<>(); for (var periode : perioder) { @@ -415,34 +466,44 @@ private Trekkdager minForbruktAvPerioder(Stønadskontotype stønadskonto, List søkersPerioder) { - return ForbruksTeller.forbruksTellerKontoMedUnntak(stønadskonto, aktivitet, søkersPerioder, p -> !p.isOpphold(), - this::trekkdagerForOppholdsperiode); + private Trekkdager forbruktSøker( + Stønadskontotype stønadskonto, + AktivitetIdentifikator aktivitet, + List søkersPerioder) { + return ForbruksTeller.forbruksTellerKontoMedUnntak( + stønadskonto, aktivitet, søkersPerioder, p -> !p.isOpphold(), this::trekkdagerForOppholdsperiode); } - private Trekkdager forbruktSøkersMinsterett(Stønadskontotype stønadskonto, - AktivitetIdentifikator aktivitet, - List søkersPerioder) { - return ForbruksTeller.forbruksTellerKontoKunForbruk(stønadskonto, aktivitet, søkersPerioder, FastsattUttakPeriode::isForbrukMinsterett); + private Trekkdager forbruktSøkersMinsterett( + Stønadskontotype stønadskonto, + AktivitetIdentifikator aktivitet, + List søkersPerioder) { + return ForbruksTeller.forbruksTellerKontoKunForbruk( + stønadskonto, aktivitet, søkersPerioder, FastsattUttakPeriode::isForbrukMinsterett); } - - private Trekkdager trekkdagerForUttaksperiode(Stønadskontotype stønadskonto, AktivitetIdentifikator aktivitet, FastsattUttakPeriode periode) { - return periode.getAktiviteter() - .stream() - .filter(a -> a.getAktivitetIdentifikator().equals(aktivitet) && Objects.equals(a.getStønadskontotype(), stønadskonto)) - .findFirst() - .map(FastsattUttakPeriodeAktivitet::getTrekkdager) - .orElse(Trekkdager.ZERO); + private Trekkdager trekkdagerForUttaksperiode( + Stønadskontotype stønadskonto, AktivitetIdentifikator aktivitet, FastsattUttakPeriode periode) { + return periode.getAktiviteter().stream() + .filter(a -> a.getAktivitetIdentifikator().equals(aktivitet) + && Objects.equals(a.getStønadskontotype(), stønadskonto)) + .findFirst() + .map(FastsattUttakPeriodeAktivitet::getTrekkdager) + .orElse(Trekkdager.ZERO); } - private Trekkdager trekkdagerForOppholdsperiode(Stønadskontotype stønadskonto, OppholdÅrsak årsak, LocalDate delFom, LocalDate delTom) { + private Trekkdager trekkdagerForOppholdsperiode( + Stønadskontotype stønadskonto, OppholdÅrsak årsak, LocalDate delFom, LocalDate delTom) { var stønadskontoFraOpphold = OppholdÅrsak.map(årsak); if (Objects.equals(stønadskontoFraOpphold, stønadskonto)) { return new Trekkdager(Virkedager.beregnAntallVirkedager(delFom, delTom)); @@ -451,7 +512,8 @@ private Trekkdager trekkdagerForOppholdsperiode(Stønadskontotype stønadskonto, } private Trekkdager trekkdagerForOppholdsperiode(Stønadskontotype stønadskonto, FastsattUttakPeriode periode) { - return trekkdagerForOppholdsperiode(stønadskonto, periode.getOppholdÅrsak(), periode.getFom(), periode.getTom()); + return trekkdagerForOppholdsperiode( + stønadskonto, periode.getOppholdÅrsak(), periode.getFom(), periode.getTom()); } public Set aktiviteterForSøker() { @@ -460,94 +522,118 @@ private Trekkdager trekkdagerForOppholdsperiode(Stønadskontotype stønadskonto, public Set aktiviteterForAnnenpart() { return annenpartsPerioder.stream() - .flatMap(p -> p.getAktiviteter().stream()) - .map(FastsattUttakPeriodeAktivitet::getAktivitetIdentifikator) - .collect(Collectors.toSet()); + .flatMap(p -> p.getAktiviteter().stream()) + .map(FastsattUttakPeriodeAktivitet::getAktivitetIdentifikator) + .collect(Collectors.toSet()); } private boolean søktSamtidigUttak(Stønadskontotype stønadskontoType, FastsattUttakPeriode periode) { - return periode.getAktiviteter().stream().anyMatch(a -> Objects.equals(a.getStønadskontotype(), stønadskontoType)); + return periode.getAktiviteter().stream() + .anyMatch(a -> Objects.equals(a.getStønadskontotype(), stønadskontoType)); } private Trekkdager antallDagerAnnenpartKanFrigi(Stønadskontotype stønadskontoType) { var søkersSistePeriodeMedTrekkdager = søkersSistePeriodeMedTrekkdagerSomIkkeOverlapper(); - var annenpartPerioderEtterSøkersSistePeriodeMedTrekkdager = finnAnnenpartPerioderEtterPeriode(søkersSistePeriodeMedTrekkdager); + var annenpartPerioderEtterSøkersSistePeriodeMedTrekkdager = + finnAnnenpartPerioderEtterPeriode(søkersSistePeriodeMedTrekkdager); return annenpartPerioderEtterSøkersSistePeriodeMedTrekkdager.stream() - .map(p -> antallDagerFrigitt(stønadskontoType, søkersSistePeriodeMedTrekkdager, p)) - .reduce(Trekkdager.ZERO, Trekkdager::add); + .map(p -> antallDagerFrigitt(stønadskontoType, søkersSistePeriodeMedTrekkdager, p)) + .reduce(Trekkdager.ZERO, Trekkdager::add); } - private Trekkdager antallDagerFrigitt(Stønadskontotype stønadskontoType, - FastsattUttakPeriode søkersSistePeriodeMedTrekkdager, - FastsattUttakPeriode annenpartPeriode) { + private Trekkdager antallDagerFrigitt( + Stønadskontotype stønadskontoType, + FastsattUttakPeriode søkersSistePeriodeMedTrekkdager, + FastsattUttakPeriode annenpartPeriode) { if (overlapper(søkersSistePeriodeMedTrekkdager, annenpartPeriode)) { - return forbruktFraDelAvAnnenpartsPeriode(stønadskontoType, søkersSistePeriodeMedTrekkdager, annenpartPeriode); + return forbruktFraDelAvAnnenpartsPeriode( + stønadskontoType, søkersSistePeriodeMedTrekkdager, annenpartPeriode); } else { return minForbrukteDager(annenpartPeriode, stønadskontoType); } } - private Trekkdager forbruktFraDelAvAnnenpartsPeriode(Stønadskontotype stønadskontoType, - FastsattUttakPeriode søkersSistePeriodeMedTrekkdager, - FastsattUttakPeriode annenpartPeriode) { - return aktivitetMedStønadskonto(stønadskontoType, annenpartPeriode).map(FastsattUttakPeriodeAktivitet::getTrekkdager) - .map(a -> trekkDagerFraDelAvPeriode(søkersSistePeriodeMedTrekkdager.getFom(), annenpartPeriode.getTom(), annenpartPeriode.getFom(), - annenpartPeriode.getTom(), a)) - .orElse(Trekkdager.ZERO); + private Trekkdager forbruktFraDelAvAnnenpartsPeriode( + Stønadskontotype stønadskontoType, + FastsattUttakPeriode søkersSistePeriodeMedTrekkdager, + FastsattUttakPeriode annenpartPeriode) { + return aktivitetMedStønadskonto(stønadskontoType, annenpartPeriode) + .map(FastsattUttakPeriodeAktivitet::getTrekkdager) + .map(a -> trekkDagerFraDelAvPeriode( + søkersSistePeriodeMedTrekkdager.getFom(), + annenpartPeriode.getTom(), + annenpartPeriode.getFom(), + annenpartPeriode.getTom(), + a)) + .orElse(Trekkdager.ZERO); } private Trekkdager minForbrukteDager(FastsattUttakPeriode periode, Stønadskontotype stønadskontoType) { if (periode.isOpphold()) { return trekkdagerForOppholdsperiode(stønadskontoType, periode); } - return periode.getAktiviteter() - .stream() - .filter(a -> Objects.equals(stønadskontoType, a.getStønadskontotype())) - .map(FastsattUttakPeriodeAktivitet::getTrekkdager) - .min(Trekkdager::compareTo) - .orElse(Trekkdager.ZERO); + return periode.getAktiviteter().stream() + .filter(a -> Objects.equals(stønadskontoType, a.getStønadskontotype())) + .map(FastsattUttakPeriodeAktivitet::getTrekkdager) + .min(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); } private List finnAnnenpartPerioderEtterPeriode(FastsattUttakPeriode periode) { - return annenpartsPerioder.stream().filter(p -> overlapper(periode, p) || periode.getTom().isBefore(p.getFom())).toList(); + return annenpartsPerioder.stream() + .filter(p -> overlapper(periode, p) || periode.getTom().isBefore(p.getFom())) + .toList(); } private FastsattUttakPeriode søkersSistePeriodeMedTrekkdagerSomIkkeOverlapper() { var sorted = sortByReversedTom(søkersPerioder); - var periode = sorted.stream().filter(this::harTrekkdager).filter(p -> overlappendePeriode(p, annenpartsPerioder).isEmpty()).findFirst(); + var periode = sorted.stream() + .filter(this::harTrekkdager) + .filter(p -> overlappendePeriode(p, annenpartsPerioder).isEmpty()) + .findFirst(); return periode.orElse(sorted.get(sorted.size() - 1)); } private boolean harTrekkdager(FastsattUttakPeriode periode) { - return periode.getAktiviteter().stream().map(FastsattUttakPeriodeAktivitet::getTrekkdager).anyMatch(Trekkdager::merEnn0); + return periode.getAktiviteter().stream() + .map(FastsattUttakPeriodeAktivitet::getTrekkdager) + .anyMatch(Trekkdager::merEnn0); } private List sortByReversedTom(List perioder) { - return perioder.stream().sorted((p1, p2) -> p2.getTom().compareTo(p1.getTom())).toList(); + return perioder.stream() + .sorted((p1, p2) -> p2.getTom().compareTo(p1.getTom())) + .toList(); } private int minSaldo(Stønadskontotype stønadskonto) { - return aktiviteterForSøker().stream().map(a -> saldo(stønadskonto, a)).min(Comparator.naturalOrder()).orElse(0); + return aktiviteterForSøker().stream() + .map(a -> saldo(stønadskonto, a)) + .min(Comparator.naturalOrder()) + .orElse(0); } - private List fjernOppholdsperioderEtterSisteUttaksdato(List perioderSøker, - List perioderAnnenpart) { + private List fjernOppholdsperioderEtterSisteUttaksdato( + List perioderSøker, List perioderAnnenpart) { var sisteUttaksdatoSøker = sisteUttaksdato(perioderSøker); var sisteUttaksdatoAnnenpart = sisteUttaksdato(perioderAnnenpart); if (sisteUttaksdatoSøker.isEmpty() || sisteUttaksdatoAnnenpart.isEmpty()) { return perioderAnnenpart; } - var sisteUttaksdatoFelles = sisteUttaksdatoSøker.get() - .isAfter(sisteUttaksdatoAnnenpart.get()) ? sisteUttaksdatoSøker.get() : sisteUttaksdatoAnnenpart.get(); + var sisteUttaksdatoFelles = sisteUttaksdatoSøker.get().isAfter(sisteUttaksdatoAnnenpart.get()) + ? sisteUttaksdatoSøker.get() + : sisteUttaksdatoAnnenpart.get(); var resultat = new ArrayList(); for (var periode : perioderAnnenpart) { if (periode.isOpphold()) { if (!periode.getFom().isAfter(sisteUttaksdatoFelles)) { var nyFom = periode.getFom(); - //Hvis oppholdsperioder delvis overlapper med annenpart skal deler av oppholdet brukes - var nyTom = periode.getTom().isAfter(sisteUttaksdatoFelles) ? sisteUttaksdatoFelles : periode.getTom(); + // Hvis oppholdsperioder delvis overlapper med annenpart skal deler av oppholdet + // brukes + var nyTom = + periode.getTom().isAfter(sisteUttaksdatoFelles) ? sisteUttaksdatoFelles : periode.getTom(); resultat.add(kopier(periode, nyFom, nyTom)); } } else { @@ -558,13 +644,15 @@ private List fjernOppholdsperioderEtterSisteUttaksdato(Lis } private FastsattUttakPeriode kopier(FastsattUttakPeriode periode, LocalDate nyFom, LocalDate nyTom) { - return new FastsattUttakPeriode.Builder(periode).tidsperiode(nyFom, nyTom).build(); + return new FastsattUttakPeriode.Builder(periode) + .tidsperiode(nyFom, nyTom) + .build(); } private Optional sisteUttaksdato(List perioder) { return perioder.stream() - .filter(periode -> !periode.isOpphold()) - .max(comparing(FastsattUttakPeriode::getTom)) - .map(FastsattUttakPeriode::getTom); + .filter(periode -> !periode.isOpphold()) + .max(comparing(FastsattUttakPeriode::getTom)) + .map(FastsattUttakPeriode::getTom); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningFlerbarnsdager.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningFlerbarnsdager.java index 659dface..fee72d52 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningFlerbarnsdager.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningFlerbarnsdager.java @@ -11,7 +11,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode; @@ -25,11 +24,12 @@ class SaldoUtregningFlerbarnsdager { private final Trekkdager flerbarnsdager; private final Trekkdager minsterettDager; - public SaldoUtregningFlerbarnsdager(List søkersPerioder, - List annenpartsPerioder, - Set søkersAktiviteter, - Trekkdager flerbarnsdager, - Trekkdager minsterettDager) { + public SaldoUtregningFlerbarnsdager( + List søkersPerioder, + List annenpartsPerioder, + Set søkersAktiviteter, + Trekkdager flerbarnsdager, + Trekkdager minsterettDager) { this.søkersPerioder = søkersPerioder; this.annenpartsPerioder = annenpartsPerioder; @@ -39,32 +39,44 @@ public SaldoUtregningFlerbarnsdager(List søkersPerioder, } Trekkdager restSaldo() { - return søkersAktiviteter.stream().map(this::restSaldo).max(Trekkdager::compareTo).orElse(Trekkdager.ZERO); + return søkersAktiviteter.stream() + .map(this::restSaldo) + .max(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); } Trekkdager restSaldo(AktivitetIdentifikator aktivitet) { var forbruktSøker = forbruktSøker(aktivitet, søkersPerioder); var forbruktAnnenpart = minForbruktAnnenpart(); - //frigitte dager er dager fra annenpart som blir ledig når søker tar uttak i samme periode + // frigitte dager er dager fra annenpart som blir ledig når søker tar uttak i samme periode var frigitteDager = frigitteDager(); - return flerbarnsdager.subtract(forbruktSøker).subtract(forbruktAnnenpart).add(frigitteDager); + return flerbarnsdager + .subtract(forbruktSøker) + .subtract(forbruktAnnenpart) + .add(frigitteDager); } Trekkdager getMaxDagerFlerbarnsdager() { return Optional.ofNullable(flerbarnsdager).orElse(Trekkdager.ZERO); } - private Trekkdager forbruktSøker(AktivitetIdentifikator aktivitet, List søkersPerioder) { - var perioderMedFlerbarnsdager = søkersPerioder.stream().filter(this::trekkFlerbarnsdager).toList(); - return ForbruksTeller.forbruksTeller(null, aktivitet, perioderMedFlerbarnsdager, p -> !p.isOpphold(), (s, p) -> Trekkdager.ZERO, - (p, a) -> trekkFlerbarnsdager(p)); + var perioderMedFlerbarnsdager = + søkersPerioder.stream().filter(this::trekkFlerbarnsdager).toList(); + return ForbruksTeller.forbruksTeller( + null, + aktivitet, + perioderMedFlerbarnsdager, + p -> !p.isOpphold(), + (s, p) -> Trekkdager.ZERO, + (p, a) -> trekkFlerbarnsdager(p)); } private Trekkdager minForbruktAnnenpart() { Map forbrukte = new HashMap<>(); - var annenpartsPerioderMedFlerbarnsdager = annenpartsPerioder.stream().filter(this::trekkFlerbarnsdager).toList(); + var annenpartsPerioderMedFlerbarnsdager = + annenpartsPerioder.stream().filter(this::trekkFlerbarnsdager).toList(); for (var periode : annenpartsPerioderMedFlerbarnsdager) { for (var annenpartAktivitet : aktiviteterIPerioder(annenpartsPerioder)) { final Trekkdager trekkdager; @@ -74,7 +86,11 @@ private Trekkdager minForbruktAnnenpart() { trekkdager = dagerForUttaksperiode(annenpartAktivitet, periode); } - forbrukte.put(annenpartAktivitet, forbrukte.getOrDefault(annenpartAktivitet, Trekkdager.ZERO).add(trekkdager)); + forbrukte.put( + annenpartAktivitet, + forbrukte + .getOrDefault(annenpartAktivitet, Trekkdager.ZERO) + .add(trekkdager)); } } return forbrukte.values().stream().min(Trekkdager::compareTo).orElse(Trekkdager.ZERO); @@ -88,7 +104,10 @@ private Trekkdager minForbrukteDager(FastsattUttakPeriode periode) { if (!trekkFlerbarnsdager(periode)) { return Trekkdager.ZERO; } - return periode.getAktiviteter().stream().map(FastsattUttakPeriodeAktivitet::getTrekkdager).min(Trekkdager::compareTo).orElse(Trekkdager.ZERO); + return periode.getAktiviteter().stream() + .map(FastsattUttakPeriodeAktivitet::getTrekkdager) + .min(Trekkdager::compareTo) + .orElse(Trekkdager.ZERO); } private Trekkdager frigitteDager() { @@ -96,8 +115,8 @@ private Trekkdager frigitteDager() { for (var periode : søkersPerioder) { if (trekkFlerbarnsdager(periode)) { var overlappendePerioderMedFlerbarnsdager = overlappendePeriode(periode, annenpartsPerioder).stream() - .filter(this::trekkFlerbarnsdager) - .toList(); + .filter(this::trekkFlerbarnsdager) + .toList(); for (var overlappendePeriode : overlappendePerioderMedFlerbarnsdager) { if (innvilgetMedTrekkdager(periode)) { sum = sum.add(frigitteDager(periode, overlappendePeriode)); @@ -109,19 +128,22 @@ private Trekkdager frigitteDager() { } private Trekkdager dagerForUttaksperiode(AktivitetIdentifikator aktivitet, FastsattUttakPeriode periode) { - return periode.getAktiviteter() - .stream() - .filter(a -> a.getAktivitetIdentifikator().equals(aktivitet) && trekkFlerbarnsdager(periode)) - .map(FastsattUttakPeriodeAktivitet::getTrekkdager) - .findFirst() - .orElse(Trekkdager.ZERO); + return periode.getAktiviteter().stream() + .filter(a -> a.getAktivitetIdentifikator().equals(aktivitet) && trekkFlerbarnsdager(periode)) + .map(FastsattUttakPeriodeAktivitet::getTrekkdager) + .findFirst() + .orElse(Trekkdager.ZERO); } private Trekkdager frigitteDager(FastsattUttakPeriode periode, FastsattUttakPeriode overlappende) { var flerbarnsdagerOverlappendePeriode = minForbrukteDager(overlappende); var flerbarnsdagerPeriode = minForbrukteDager(periode); - //Forenkling: Mulig vi trenger utvidelse her, kan bli feil hvis begge graderer flerbarnsdager - var min = flerbarnsdagerPeriode.compareTo(flerbarnsdagerOverlappendePeriode) > 0 ? flerbarnsdagerPeriode : flerbarnsdagerOverlappendePeriode; - return trekkDagerFraDelAvPeriode(periode.getFom(), periode.getTom(), overlappende.getFom(), overlappende.getTom(), min); + // Forenkling: Mulig vi trenger utvidelse her, kan bli feil hvis begge graderer + // flerbarnsdager + var min = flerbarnsdagerPeriode.compareTo(flerbarnsdagerOverlappendePeriode) > 0 + ? flerbarnsdagerPeriode + : flerbarnsdagerOverlappendePeriode; + return trekkDagerFraDelAvPeriode( + periode.getFom(), periode.getTom(), overlappende.getFom(), overlappende.getTom(), min); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningGrunnlag.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningGrunnlag.java index ce883a5e..ef6667da 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningGrunnlag.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningGrunnlag.java @@ -8,7 +8,6 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; @@ -33,16 +32,17 @@ public class SaldoUtregningGrunnlag { private final LocalDateTime sisteSøknadMottattTidspunktAnnenpart; private final boolean kreverSammenhengendeUttak; - private SaldoUtregningGrunnlag(List søkersFastsattePerioder, - LocalDate utregningsdato, - boolean berørtBehandling, - List annenpartsPerioder, - List søktePerioder, - Kontoer kontoer, - Set aktiviteter, - LocalDateTime sisteSøknadMottattTidspunktSøker, - LocalDateTime sisteSøknadMottattTidspunktAnnenpart, - boolean kreverSammenhengendeUttak) { + private SaldoUtregningGrunnlag( + List søkersFastsattePerioder, + LocalDate utregningsdato, + boolean berørtBehandling, + List annenpartsPerioder, + List søktePerioder, + Kontoer kontoer, + Set aktiviteter, + LocalDateTime sisteSøknadMottattTidspunktSøker, + LocalDateTime sisteSøknadMottattTidspunktAnnenpart, + boolean kreverSammenhengendeUttak) { this.søkersFastsattePerioder = søkersFastsattePerioder; this.utregningsdato = utregningsdato; this.berørtBehandling = berørtBehandling; @@ -52,51 +52,85 @@ private SaldoUtregningGrunnlag(List søkersFastsattePeriod this.sisteSøknadMottattTidspunktSøker = sisteSøknadMottattTidspunktSøker; this.sisteSøknadMottattTidspunktAnnenpart = sisteSøknadMottattTidspunktAnnenpart; this.kreverSammenhengendeUttak = kreverSammenhengendeUttak; - kontoer.getStønadskontotyper().forEach(k -> this.stønadskonti.put(k, new Trekkdager(kontoer.getStønadskontoTrekkdager(k)))); - kontoer.getSpesialkontotyper().forEach(k -> this.spesialkonti.put(k, new Trekkdager(kontoer.getSpesialkontoTrekkdager(k)))); + kontoer.getStønadskontotyper() + .forEach(k -> this.stønadskonti.put(k, new Trekkdager(kontoer.getStønadskontoTrekkdager(k)))); + kontoer.getSpesialkontotyper() + .forEach(k -> this.spesialkonti.put(k, new Trekkdager(kontoer.getSpesialkontoTrekkdager(k)))); } // Brukes av fpsak til utregning av alt - public static SaldoUtregningGrunnlag forUtregningAvHeleUttaket(List søkersFastsattePerioder, - boolean berørtBehandling, - List annenpartsPerioder, - Kontoer kontoer, - LocalDateTime sisteSøknadMottattTidspunktSøker, - LocalDateTime sisteSøknadMottattTidspunktAnnenpart, - boolean kreverSammenhengendeUttak) { + public static SaldoUtregningGrunnlag forUtregningAvHeleUttaket( + List søkersFastsattePerioder, + boolean berørtBehandling, + List annenpartsPerioder, + Kontoer kontoer, + LocalDateTime sisteSøknadMottattTidspunktSøker, + LocalDateTime sisteSøknadMottattTidspunktAnnenpart, + boolean kreverSammenhengendeUttak) { var aktiviteter = søkersFastsattePerioder.stream() - .flatMap(p -> p.getAktiviteter().stream()) - .map(a -> a.getAktivitetIdentifikator()) - .collect(Collectors.toSet()); - return new SaldoUtregningGrunnlag(søkersFastsattePerioder, LocalDate.MAX, berørtBehandling, annenpartsPerioder, List.of(), kontoer, - aktiviteter, sisteSøknadMottattTidspunktSøker, sisteSøknadMottattTidspunktAnnenpart, kreverSammenhengendeUttak); + .flatMap(p -> p.getAktiviteter().stream()) + .map(a -> a.getAktivitetIdentifikator()) + .collect(Collectors.toSet()); + return new SaldoUtregningGrunnlag( + søkersFastsattePerioder, + LocalDate.MAX, + berørtBehandling, + annenpartsPerioder, + List.of(), + kontoer, + aktiviteter, + sisteSøknadMottattTidspunktSøker, + sisteSøknadMottattTidspunktAnnenpart, + kreverSammenhengendeUttak); } - // Brukes som input til fastsettingsregler - inneholder tidligere vedtatte før endringsdato + perioder opp til aktuell periode - public static SaldoUtregningGrunnlag forUtregningAvDelerAvUttak(List søkersFastsattePerioder, - List annenpartsPerioder, - RegelGrunnlag grunnlag, - LocalDate utregningsdato) { + // Brukes som input til fastsettingsregler - inneholder tidligere vedtatte før endringsdato + + // perioder opp til aktuell periode + public static SaldoUtregningGrunnlag forUtregningAvDelerAvUttak( + List søkersFastsattePerioder, + List annenpartsPerioder, + RegelGrunnlag grunnlag, + LocalDate utregningsdato) { var sisteSøknadMottattTidspunktAnnenpart = Optional.ofNullable(grunnlag.getAnnenPart()) - .map(AnnenPart::getSisteSøknadMottattTidspunkt) - .orElse(null); - return new SaldoUtregningGrunnlag(søkersFastsattePerioder, utregningsdato, false, annenpartsPerioder, List.of(), grunnlag.getKontoer(), - grunnlag.getArbeid().getAktiviteter(), grunnlag.getSøknad().getMottattTidspunkt(), sisteSøknadMottattTidspunktAnnenpart, - grunnlag.getBehandling().isKreverSammenhengendeUttak()); + .map(AnnenPart::getSisteSøknadMottattTidspunkt) + .orElse(null); + return new SaldoUtregningGrunnlag( + søkersFastsattePerioder, + utregningsdato, + false, + annenpartsPerioder, + List.of(), + grunnlag.getKontoer(), + grunnlag.getArbeid().getAktiviteter(), + grunnlag.getSøknad().getMottattTidspunkt(), + sisteSøknadMottattTidspunktAnnenpart, + grunnlag.getBehandling().isKreverSammenhengendeUttak()); } // Brukes som input til fastsettingsregler for berørte behandlinger - public static SaldoUtregningGrunnlag forUtregningAvDelerAvUttakBerørtBehandling(List søkersFastsattePerioder, - List annenpartsPerioder, - RegelGrunnlag grunnlag, - LocalDate utregningsdato, - List søktePerioder) { - return new SaldoUtregningGrunnlag(søkersFastsattePerioder, utregningsdato, true, annenpartsPerioder, søktePerioder, grunnlag.getKontoer(), - grunnlag.getArbeid().getAktiviteter(), null, null, grunnlag.getBehandling().isKreverSammenhengendeUttak()); + public static SaldoUtregningGrunnlag forUtregningAvDelerAvUttakBerørtBehandling( + List søkersFastsattePerioder, + List annenpartsPerioder, + RegelGrunnlag grunnlag, + LocalDate utregningsdato, + List søktePerioder) { + return new SaldoUtregningGrunnlag( + søkersFastsattePerioder, + utregningsdato, + true, + annenpartsPerioder, + søktePerioder, + grunnlag.getKontoer(), + grunnlag.getArbeid().getAktiviteter(), + null, + null, + grunnlag.getBehandling().isKreverSammenhengendeUttak()); } List getSøkersFastsattePerioder() { - return søkersFastsattePerioder.stream().filter(p -> kreverSammenhengendeUttak || !p.isOpphold()).toList(); + return søkersFastsattePerioder.stream() + .filter(p -> kreverSammenhengendeUttak || !p.isOpphold()) + .toList(); } LocalDate getUtregningsdato() { @@ -108,7 +142,9 @@ LocalDate getUtregningsdato() { } List getAnnenpartsPerioder() { - return annenpartsPerioder.stream().filter(p -> kreverSammenhengendeUttak || !p.isOppholdsperiode()).toList(); + return annenpartsPerioder.stream() + .filter(p -> kreverSammenhengendeUttak || !p.isOppholdsperiode()) + .toList(); } public List getSøktePerioder() { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTjeneste.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTjeneste.java index a39576f5..ba71c9d7 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTjeneste.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTjeneste.java @@ -7,7 +7,6 @@ import java.util.Comparator; import java.util.List; import java.util.stream.Stream; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; @@ -19,72 +18,90 @@ public final class SaldoUtregningTjeneste { - private SaldoUtregningTjeneste() { - } + private SaldoUtregningTjeneste() {} public static SaldoUtregning lagUtregning(SaldoUtregningGrunnlag grunnlag) { - var annenpartsPerioder = finnRelevanteAnnenpartsPerioder(grunnlag.isBerørtBehandling(), grunnlag.getUtregningsdato(), - grunnlag.getAnnenpartsPerioder(), grunnlag.getSøktePerioder()); - - var søkersFastsattePerioder = knekkSøkersOppholdsperioder(annenpartsPerioder, grunnlag.getSøkersFastsattePerioder()).stream() - .filter(p -> !p.isInnvilgetGyldigUtsettelse()) - .toList(); + var annenpartsPerioder = finnRelevanteAnnenpartsPerioder( + grunnlag.isBerørtBehandling(), + grunnlag.getUtregningsdato(), + grunnlag.getAnnenpartsPerioder(), + grunnlag.getSøktePerioder()); + + var søkersFastsattePerioder = + knekkSøkersOppholdsperioder(annenpartsPerioder, grunnlag.getSøkersFastsattePerioder()).stream() + .filter(p -> !p.isInnvilgetGyldigUtsettelse()) + .toList(); return new SaldoUtregning(grunnlag.getStønadskonti(), søkersFastsattePerioder, annenpartsPerioder, grunnlag); } - private static List knekkSøkersOppholdsperioder(List annenpartsPerioder, - List søkersFastsattePerioder1) { - var knekkpunkter = annenpartsPerioder.stream().flatMap(ap -> Stream.of(ap.getFom().minusDays(1), ap.getTom())).toList(); - return søkersFastsattePerioder1.stream().flatMap(p -> { - if (p.isOpphold()) { - return knekkOpphold(p, knekkpunkter).stream(); - } - return Stream.of(p); - }).toList(); + private static List knekkSøkersOppholdsperioder( + List annenpartsPerioder, List søkersFastsattePerioder1) { + var knekkpunkter = annenpartsPerioder.stream() + .flatMap(ap -> Stream.of(ap.getFom().minusDays(1), ap.getTom())) + .toList(); + return søkersFastsattePerioder1.stream() + .flatMap(p -> { + if (p.isOpphold()) { + return knekkOpphold(p, knekkpunkter).stream(); + } + return Stream.of(p); + }) + .toList(); } private static List knekkOpphold(FastsattUttakPeriode opphold, List knekkpunkter) { var etterKnekk = new ArrayList(); - var sortedKnekk = knekkpunkter.stream().sorted(Comparator.naturalOrder()).toList(); + var sortedKnekk = + knekkpunkter.stream().sorted(Comparator.naturalOrder()).toList(); var etterKnekkOpphold = opphold; for (var knekk : sortedKnekk) { var tidsperiode = new LukketPeriode(etterKnekkOpphold.getFom(), etterKnekkOpphold.getTom()); if (tidsperiode.overlapper(knekk) && !etterKnekkOpphold.getTom().isEqual(knekk)) { - var førKnekkOpphold = new FastsattUttakPeriode.Builder(etterKnekkOpphold).tidsperiode(etterKnekkOpphold.getFom(), knekk).build(); - etterKnekkOpphold = new FastsattUttakPeriode.Builder(etterKnekkOpphold).tidsperiode(knekk.plusDays(1), etterKnekkOpphold.getTom()) - .build(); + var førKnekkOpphold = new FastsattUttakPeriode.Builder(etterKnekkOpphold) + .tidsperiode(etterKnekkOpphold.getFom(), knekk) + .build(); + etterKnekkOpphold = new FastsattUttakPeriode.Builder(etterKnekkOpphold) + .tidsperiode(knekk.plusDays(1), etterKnekkOpphold.getTom()) + .build(); etterKnekk.add(førKnekkOpphold); } } etterKnekk.add(etterKnekkOpphold); return etterKnekk; - } - private static List finnRelevanteAnnenpartsPerioder(boolean isBerørtBehandling, - LocalDate utregningsdato, - List annenPartUttaksperioder, - List søktePerioder) { + private static List finnRelevanteAnnenpartsPerioder( + boolean isBerørtBehandling, + LocalDate utregningsdato, + List annenPartUttaksperioder, + List søktePerioder) { var annenpartsPerioder = annenPartUttaksperioder; if (isBerørtBehandling) { - annenpartsPerioder = annenpartsPerioder.stream().flatMap(ap -> finnDelerAvOppholdsperiode(søktePerioder, ap)).toList(); + annenpartsPerioder = annenpartsPerioder.stream() + .flatMap(ap -> finnDelerAvOppholdsperiode(søktePerioder, ap)) + .toList(); } else { - annenpartsPerioder = annenpartsPerioder.stream().filter(ap -> ap.getFom().isBefore(utregningsdato)).map(ap -> { - if (ap.overlapper(utregningsdato)) { - return knekk(ap, ap.getFom(), utregningsdato.minusDays(1)); - } - return ap; - }).toList(); + annenpartsPerioder = annenpartsPerioder.stream() + .filter(ap -> ap.getFom().isBefore(utregningsdato)) + .map(ap -> { + if (ap.overlapper(utregningsdato)) { + return knekk(ap, ap.getFom(), utregningsdato.minusDays(1)); + } + return ap; + }) + .toList(); } return annenpartsPerioder.stream().map(SaldoUtregningTjeneste::map).toList(); } - private static Stream finnDelerAvOppholdsperiode(List søktePerioder, AnnenpartUttakPeriode ap) { + private static Stream finnDelerAvOppholdsperiode( + List søktePerioder, AnnenpartUttakPeriode ap) { for (var søktPeriode : søktePerioder) { if (ap.isOppholdsperiode() && ap.overlapper(søktPeriode.getFom())) { - if (søktPeriode.getFom().isEqual(ap.getFom()) && søktPeriode.getTom().isEqual(ap.getTom())) { + if (søktPeriode.getFom().isEqual(ap.getFom()) + && søktPeriode.getTom().isEqual(ap.getTom())) { return Stream.of(); } var etterknekk = new ArrayList(); @@ -106,14 +123,15 @@ private static AnnenpartUttakPeriode knekk(AnnenpartUttakPeriode ap, LocalDate n } private static FastsattUttakPeriode map(AnnenpartUttakPeriode annenpartsPeriode) { - return new FastsattUttakPeriode.Builder().periodeResultatType(map(annenpartsPeriode.isInnvilget())) - .samtidigUttak(annenpartsPeriode.isSamtidigUttak()) - .flerbarnsdager(annenpartsPeriode.isFlerbarnsdager()) - .oppholdÅrsak(annenpartsPeriode.getOppholdÅrsak()) - .tidsperiode(annenpartsPeriode.getFom(), annenpartsPeriode.getTom()) - .aktiviteter(mapAktiviteter(annenpartsPeriode)) - .mottattDato(annenpartsPeriode.getSenestMottattDato().orElse(null)) - .build(); + return new FastsattUttakPeriode.Builder() + .periodeResultatType(map(annenpartsPeriode.isInnvilget())) + .samtidigUttak(annenpartsPeriode.isSamtidigUttak()) + .flerbarnsdager(annenpartsPeriode.isFlerbarnsdager()) + .oppholdÅrsak(annenpartsPeriode.getOppholdÅrsak()) + .tidsperiode(annenpartsPeriode.getFom(), annenpartsPeriode.getTom()) + .aktiviteter(mapAktiviteter(annenpartsPeriode)) + .mottattDato(annenpartsPeriode.getSenestMottattDato().orElse(null)) + .build(); } private static Perioderesultattype map(boolean innvilget) { @@ -121,16 +139,16 @@ private static Perioderesultattype map(boolean innvilget) { } private static List mapAktiviteter(AnnenpartUttakPeriode annenpartsPeriode) { - return annenpartsPeriode.getAktiviteter() - .stream() - .map(aktivitet -> new FastsattUttakPeriodeAktivitet(aktivitet.getTrekkdager(), aktivitet.getStønadskontotype(), - aktivitet.getAktivitetIdentifikator())) - .toList(); + return annenpartsPeriode.getAktiviteter().stream() + .map(aktivitet -> new FastsattUttakPeriodeAktivitet( + aktivitet.getTrekkdager(), + aktivitet.getStønadskontotype(), + aktivitet.getAktivitetIdentifikator())) + .toList(); } - private static List aktiviteterForPeriodeFørKnekkpunkt(AnnenpartUttakPeriode periode, - LocalDate nyFom, - LocalDate nyTom) { + private static List aktiviteterForPeriodeFørKnekkpunkt( + AnnenpartUttakPeriode periode, LocalDate nyFom, LocalDate nyTom) { var virkedagerInnenfor = Virkedager.beregnAntallVirkedager(nyFom, nyTom); var virkedagerHele = periode.virkedager(); @@ -139,12 +157,14 @@ private static List mapAktiviteter(AnnenpartUttak for (var annenpartUttakPeriodeAktivitet : periode.getAktiviteter()) { var opprinneligeTrekkdager = annenpartUttakPeriodeAktivitet.getTrekkdager(); if (virkedagerInnenfor > 0 && opprinneligeTrekkdager.merEnn0()) { - var vektetTrekkdager = opprinneligeTrekkdager.decimalValue() - .multiply(BigDecimal.valueOf(virkedagerInnenfor)) - .divide(BigDecimal.valueOf(virkedagerHele), 0, RoundingMode.DOWN); - annenpartUttakPeriodeAktivitetMedNyttTrekkDager.add( - new AnnenpartUttakPeriodeAktivitet(annenpartUttakPeriodeAktivitet.getAktivitetIdentifikator(), - annenpartUttakPeriodeAktivitet.getStønadskontotype(), new Trekkdager(vektetTrekkdager), + var vektetTrekkdager = opprinneligeTrekkdager + .decimalValue() + .multiply(BigDecimal.valueOf(virkedagerInnenfor)) + .divide(BigDecimal.valueOf(virkedagerHele), 0, RoundingMode.DOWN); + annenpartUttakPeriodeAktivitetMedNyttTrekkDager.add(new AnnenpartUttakPeriodeAktivitet( + annenpartUttakPeriodeAktivitet.getAktivitetIdentifikator(), + annenpartUttakPeriodeAktivitet.getStønadskontotype(), + new Trekkdager(vektetTrekkdager), annenpartUttakPeriodeAktivitet.getUtbetalingsgrad())); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningUtil.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningUtil.java index 353123c1..41793b2e 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningUtil.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningUtil.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; @@ -16,51 +15,52 @@ final class SaldoUtregningUtil { - private SaldoUtregningUtil() { - } + private SaldoUtregningUtil() {} static boolean aktivitetIPeriode(FastsattUttakPeriode periode, AktivitetIdentifikator aktivitet) { - return periode.getAktiviteter() - .stream() - .map(FastsattUttakPeriodeAktivitet::getAktivitetIdentifikator) - .anyMatch(aktivitetIdentifikator -> aktivitetIdentifikator.equals(aktivitet)); + return periode.getAktiviteter().stream() + .map(FastsattUttakPeriodeAktivitet::getAktivitetIdentifikator) + .anyMatch(aktivitetIdentifikator -> aktivitetIdentifikator.equals(aktivitet)); } static Set aktiviteterIPerioder(List perioder) { return perioder.stream() - .flatMap(p -> p.getAktiviteter().stream()) - .map(FastsattUttakPeriodeAktivitet::getAktivitetIdentifikator) - .collect(Collectors.toSet()); + .flatMap(p -> p.getAktiviteter().stream()) + .map(FastsattUttakPeriodeAktivitet::getAktivitetIdentifikator) + .collect(Collectors.toSet()); } - static List overlappendePeriode(FastsattUttakPeriode periode, List perioder) { + static List overlappendePeriode( + FastsattUttakPeriode periode, List perioder) { return perioder.stream().filter(p -> overlapper(periode, p)).toList(); } static boolean overlapper(FastsattUttakPeriode periode, FastsattUttakPeriode periode2) { - return !periode2.getFom().isAfter(periode.getTom()) && !periode2.getTom().isBefore(periode.getFom()); + return !periode2.getFom().isAfter(periode.getTom()) + && !periode2.getTom().isBefore(periode.getFom()); } static boolean innvilgetMedTrekkdager(FastsattUttakPeriode periode) { - return !periode.getPerioderesultattype().equals(Perioderesultattype.AVSLÅTT) || periode.getAktiviteter() - .stream() - .anyMatch(aktivitet -> aktivitet.getTrekkdager().merEnn0()); + return !periode.getPerioderesultattype().equals(Perioderesultattype.AVSLÅTT) + || periode.getAktiviteter().stream() + .anyMatch(aktivitet -> aktivitet.getTrekkdager().merEnn0()); } - static Trekkdager trekkDagerFraDelAvPeriode(LocalDate delFom, - LocalDate delTom, - LocalDate periodeFom, - LocalDate periodeTom, - Trekkdager periodeTrekkdager) { + static Trekkdager trekkDagerFraDelAvPeriode( + LocalDate delFom, + LocalDate delTom, + LocalDate periodeFom, + LocalDate periodeTom, + Trekkdager periodeTrekkdager) { var virkedagerInnenfor = Virkedager.beregnAntallVirkedager(delFom, delTom); var virkedagerHele = Virkedager.beregnAntallVirkedager(periodeFom, periodeTom); if (virkedagerHele == 0) { return Trekkdager.ZERO; } - var utregning = periodeTrekkdager.decimalValue() - .multiply(BigDecimal.valueOf(virkedagerInnenfor)) - .divide(BigDecimal.valueOf(virkedagerHele), 0, RoundingMode.DOWN); + var utregning = periodeTrekkdager + .decimalValue() + .multiply(BigDecimal.valueOf(virkedagerInnenfor)) + .divide(BigDecimal.valueOf(virkedagerHele), 0, RoundingMode.DOWN); return new Trekkdager(utregning); } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/FastsettePeriodeUtfall.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/FastsettePeriodeUtfall.java index ff243946..cbec551f 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/FastsettePeriodeUtfall.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/FastsettePeriodeUtfall.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.fpsak.nare.evaluation.Evaluation; import no.nav.fpsak.nare.evaluation.node.SingleEvaluation; @@ -20,9 +19,10 @@ public class FastsettePeriodeUtfall extends LeafSpecification> utfallSpesifiserere; - private FastsettePeriodeUtfall(String id, - UttakOutcome uttakOutcome, - List> utfallSpesifiserere) { + private FastsettePeriodeUtfall( + String id, + UttakOutcome uttakOutcome, + List> utfallSpesifiserere) { super(id); if (uttakOutcome.getUtfallType() == null) { throw new IllegalArgumentException("UtfallType kan ikke være null."); @@ -59,7 +59,8 @@ public static Builder builder() { public static class Builder { private UttakOutcome uttakOutcome; private String id; - private final List> utfallSpesifiserere = new ArrayList<>(); + private final List> utfallSpesifiserere = + new ArrayList<>(); public Builder ikkeOppfylt(IkkeOppfyltÅrsak årsak) { this.uttakOutcome = UttakOutcome.ikkeOppfylt(årsak); @@ -79,7 +80,6 @@ public Builder oppfylt(InnvilgetÅrsak innvilgetÅrsak) { return this; } - public Builder medId(String id) { this.id = id; return this; @@ -87,19 +87,20 @@ public Builder medId(String id) { public Builder medTrekkDagerFraSaldo(boolean trekkDagerFraSaldo) { this.uttakOutcome = uttakOutcome.medTrekkDagerFraSaldo(trekkDagerFraSaldo); - this.utfallSpesifiserere.add( - (singleEvaluation, grunnlag) -> singleEvaluation.setEvaluationProperty(TREKK_DAGER_FRA_SALDO, trekkDagerFraSaldo)); + this.utfallSpesifiserere.add((singleEvaluation, grunnlag) -> + singleEvaluation.setEvaluationProperty(TREKK_DAGER_FRA_SALDO, trekkDagerFraSaldo)); return this; } public Builder medAvslåttGradering(GraderingIkkeInnvilgetÅrsak graderingAvslagÅrsak) { this.uttakOutcome = uttakOutcome.medGraderingIkkeInnvilgetÅrsak(graderingAvslagÅrsak); - this.utfallSpesifiserere.add( - (singleEvaluation, grunnlag) -> singleEvaluation.setEvaluationProperty(GRADERING_IKKE_OPPFYLT_ÅRSAK, graderingAvslagÅrsak)); + this.utfallSpesifiserere.add((singleEvaluation, grunnlag) -> + singleEvaluation.setEvaluationProperty(GRADERING_IKKE_OPPFYLT_ÅRSAK, graderingAvslagÅrsak)); return this; } - public Builder manuellBehandling(PeriodeResultatÅrsak periodeResultatÅrsak, Manuellbehandlingårsak manuellbehandlingårsak) { + public Builder manuellBehandling( + PeriodeResultatÅrsak periodeResultatÅrsak, Manuellbehandlingårsak manuellbehandlingårsak) { this.uttakOutcome = UttakOutcome.manuell(periodeResultatÅrsak, manuellbehandlingårsak); this.utfallSpesifiserere.add((singleEvaluation, grunnlag) -> { singleEvaluation.setEvaluationProperty(UTFALL, UtfallType.MANUELL_BEHANDLING); @@ -115,7 +116,8 @@ public FastsettePeriodeUtfall create() { public Builder utbetal(boolean utbetal) { this.uttakOutcome = uttakOutcome.medSkalUtbetale(utbetal); - this.utfallSpesifiserere.add((singleEvaluation, grunnlag) -> singleEvaluation.setEvaluationProperty(UTBETAL, utbetal)); + this.utfallSpesifiserere.add( + (singleEvaluation, grunnlag) -> singleEvaluation.setEvaluationProperty(UTBETAL, utbetal)); return this; } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/GraderingIkkeInnvilget\303\205rsak.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/GraderingIkkeInnvilget\303\205rsak.java" index 836155a8..97ea0b53 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/GraderingIkkeInnvilget\303\205rsak.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/GraderingIkkeInnvilget\303\205rsak.java" @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall; public enum GraderingIkkeInnvilgetÅrsak { - AVSLAG_PGA_FOR_TIDLIG_GRADERING(4504, "Gradering før uke 7"); private final int id; @@ -20,4 +19,3 @@ public String getBeskrivelse() { return beskrivelse; } } - diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/IkkeOppfylt.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/IkkeOppfylt.java index 7bd69640..9e3ca405 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/IkkeOppfylt.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/IkkeOppfylt.java @@ -9,12 +9,17 @@ private IkkeOppfylt() { /** * Opprette endenode for ikke oppfylt periode. * - * @param id sluttnode id. + * @param id sluttnode id. * @param årsak årsak til at periode ble ikke oppfylt. * @return periode utfall. */ - public static FastsettePeriodeUtfall opprett(String id, IkkeOppfyltÅrsak årsak, boolean trekkDagerFraSaldo, boolean utbetal) { - return FastsettePeriodeUtfall.builder().ikkeOppfylt(årsak).utbetal(utbetal).medTrekkDagerFraSaldo(trekkDagerFraSaldo).medId(id).create(); + public static FastsettePeriodeUtfall opprett( + String id, IkkeOppfyltÅrsak årsak, boolean trekkDagerFraSaldo, boolean utbetal) { + return FastsettePeriodeUtfall.builder() + .ikkeOppfylt(årsak) + .utbetal(utbetal) + .medTrekkDagerFraSaldo(trekkDagerFraSaldo) + .medId(id) + .create(); } - } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/IkkeOppfylt\303\205rsak.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/IkkeOppfylt\303\205rsak.java" index 83da8c7e..b04e470c 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/IkkeOppfylt\303\205rsak.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/IkkeOppfylt\303\205rsak.java" @@ -7,7 +7,8 @@ public enum IkkeOppfyltÅrsak implements PeriodeResultatÅrsak { MOR_HAR_IKKE_OMSORG(4003, "Mor har ikke omsorg"), HULL_MELLOM_FORELDRENES_PERIODER(4005, "Hull mellom foreldrenes perioder"), FAR_HAR_IKKE_OMSORG(4012, "Far har ikke omsorg"), - MOR_SØKER_FELLESPERIODE_FØR_12_UKER_FØR_TERMIN_FØDSEL(4013, "Mor søker fellesperiode før 12 uker før termin/fødsel"), + MOR_SØKER_FELLESPERIODE_FØR_12_UKER_FØR_TERMIN_FØDSEL( + 4013, "Mor søker fellesperiode før 12 uker før termin/fødsel"), SØKNADSFRIST(4020, "Brudd på søknadsfrist"), UTTAK_ETTER_3_ÅRSGRENSE(4022, "Uttak etter 3 årsgrense"), ARBEID_HUNDRE_PROSENT_ELLER_MER(4025, "Arbeider 100 prosent eller mer"), @@ -49,19 +50,19 @@ public enum IkkeOppfyltÅrsak implements PeriodeResultatÅrsak { SØKERS_INNLEGGELSE_SEKS_UKER_IKKE_OPPFYLT(4111, "Søkers innleggelse første 6 uker ikke oppfylt"), BARNETS_INNLEGGELSE_SEKS_UKER_IKKE_OPPFYLT(4112, "Barnets innleggelse første 6 uker ikke oppfylt"), - //Medlem + // Medlem SØKER_IKKE_MEDLEM(4087, "Søker ikke medlem"), - //Vilkår + // Vilkår FØDSELSVILKÅRET_IKKE_OPPFYLT(4096, "Fødselsvilkåret er ikke oppfylt"), ADOPSJONSVILKÅRET_IKKE_OPPFYLT(4097, "Adopsjonsvilkåret er ikke oppfylt"), FORELDREANSVARSVILKÅRET_IKKE_OPPFYLT(4098, "Foreldreansvarsvilkåret er ikke oppfylt"), OPPTJENINGSVILKÅRET_IKKE_OPPFYLT(4099, "Opptjeningsvilkåret er ikke oppfylt"), - //Prematur + // Prematur FRATREKK_PLEIEPENGER(4077, "Avslag utsettelse, fratrekk pleiepenger"), - //aktivitetskrav + // aktivitetskrav AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT(4050, "Aktivitetskravet arbeid ikke oppfylt"), AKTIVITETSKRAVET_ARBEID_IKKE_DOKUMENTERT(4066, "Aktivitetskravet arbeid ikke dokumentert"), @@ -69,7 +70,8 @@ public enum IkkeOppfyltÅrsak implements PeriodeResultatÅrsak { AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT(4067, "Aktivitetskravet utdanning ikke dokumentert"), AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_OPPFYLT(4052, "Aktivitetskravet arbeid+utdanning ikke oppfylt"), - AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_DOKUMENTERT(4068, "Aktivitetskravet arbeid+utdanning ikke dokumentert"), + AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_DOKUMENTERT( + 4068, "Aktivitetskravet arbeid+utdanning ikke dokumentert"), AKTIVITETSKRAVET_SYKDOM_IKKE_OPPFYLT(4053, "Aktivitetskravet sykdom ikke oppfylt"), AKTIVITETSKRAVET_SYKDOM_IKKE_DOKUMENTERT(4069, "Aktivitetskravet sykdom ikke dokumentert"), @@ -77,12 +79,15 @@ public enum IkkeOppfyltÅrsak implements PeriodeResultatÅrsak { AKTIVITETSKRAVET_INNLEGGELSE_IKKE_OPPFYLT(4054, "Aktivitetskravet innleggelse ikke oppfylt"), AKTIVITETSKRAVET_INNLEGGELSE_IKKE_DOKUMENTERT(4070, "Aktivitetskravet innleggelse ikke dokumentert"), - AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_OPPFYLT(4055, "Aktivitetskravet introduksjonsprogrammet ikke oppfylt"), - AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_DOKUMENTERT(4088, "Aktivitetskravet introduksjonsprogrammet ikke dokumentert"), - - AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_OPPFYLT(4056, "Aktivitetskravet kvalifiseringsprogrammet ikke oppfylt"), - AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_DOKUMENTERT(4089, "Aktivitetskravet kvalifiseringsprogrammet ikke dokumentert"), + AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_OPPFYLT( + 4055, "Aktivitetskravet introduksjonsprogrammet ikke oppfylt"), + AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_DOKUMENTERT( + 4088, "Aktivitetskravet introduksjonsprogrammet ikke dokumentert"), + AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_OPPFYLT( + 4056, "Aktivitetskravet kvalifiseringsprogrammet ikke oppfylt"), + AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_DOKUMENTERT( + 4089, "Aktivitetskravet kvalifiseringsprogrammet ikke dokumentert"), FORELDREPENGER_KUN_FAR_HAR_RETT_MOR_IKKE_UFØR(4057, "Foreldrepenger, kun far har rett mor er ikke ufør"); diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Innvilget\303\205rsak.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Innvilget\303\205rsak.java" index eb198fc6..129a15a1 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Innvilget\303\205rsak.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Innvilget\303\205rsak.java" @@ -14,8 +14,10 @@ public enum InnvilgetÅrsak implements PeriodeResultatÅrsak { GRADERING_ALENEOMSORG(2032, "Gradering ved aleneomsorg"), GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT(2033, "Gradering foreldrepenger, kun far har rett"), GRADERING_FORELDREPENGER_KUN_MOR_HAR_RETT(2034, "Gradering foreldrepenger, kun mor har rett"), - GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV(2035, "Gradering foreldrepenger, kun far har rett - dager uten aktivitetskrav"), - FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV(2036, "Innvilget foreldrepenger, kun far har rett - dager uten aktivitetskrav"), + GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV( + 2035, "Gradering foreldrepenger, kun far har rett - dager uten aktivitetskrav"), + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV( + 2036, "Innvilget foreldrepenger, kun far har rett - dager uten aktivitetskrav"), MSP_INNVILGET(2039, "Innvilger msp første 6 ukene"), // Overføring årsaker @@ -24,14 +26,13 @@ public enum InnvilgetÅrsak implements PeriodeResultatÅrsak { OVERFØRING_ANNEN_PART_INNLAGT(2022, "Overføring - annen part innlagt"), OVERFØRING_ALENEOMSORG(2023, "Overføring - aleneomsorg"), - //Utsettelse årsaker + // Utsettelse årsaker UTSETTELSE_GYLDIG_PGA_FERIE(2010, "Utsettelse pga ferie"), UTSETTELSE_GYLDIG_PGA_100_PROSENT_ARBEID(2011, "Utsettelse pga 100% arbeid"), UTSETTELSE_GYLDIG_PGA_INNLEGGELSE(2012, "Utsettelse pga innleggelse"), UTSETTELSE_GYLDIG_PGA_BARN_INNLAGT(2013, "Utsettelse pga innleggelse barn"), UTSETTELSE_GYLDIG_PGA_SYKDOM(2014, "Utsettelse pga sykdom"), - UTSETTELSE_GYLDIG(2024, "Gyldig utsettelse"), UTSETTELSE_GYLDIG_SEKS_UKER_INNLEGGELSE(2025, "Gyldig utsettelse første 6 uker pga. innleggelse"), UTSETTELSE_GYLDIG_SEKS_UKER_FRI_BARN_INNLAGT(2026, "Gyldig utsettelse første 6 uker pga. barn innlagt"), @@ -59,7 +60,7 @@ public String getBeskrivelse() { @Override public boolean trekkerMinsterett() { - return this.equals(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV) || this.equals( - GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); + return this.equals(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV) + || this.equals(GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Manuellbehandling.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Manuellbehandling.java index c9c28a8b..bf658c63 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Manuellbehandling.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Manuellbehandling.java @@ -8,27 +8,28 @@ private Manuellbehandling() { // For å hindre instanser } - public static FastsettePeriodeUtfall opprett(String id, - PeriodeResultatÅrsak periodeResultatÅrsak, - Manuellbehandlingårsak manuellbehandlingårsak, - boolean trekkDagerFraSaldo, - boolean utbetal) { + public static FastsettePeriodeUtfall opprett( + String id, + PeriodeResultatÅrsak periodeResultatÅrsak, + Manuellbehandlingårsak manuellbehandlingårsak, + boolean trekkDagerFraSaldo, + boolean utbetal) { return opprett(id, periodeResultatÅrsak, manuellbehandlingårsak, trekkDagerFraSaldo, utbetal, Optional.empty()); } - public static FastsettePeriodeUtfall opprett(String id, - PeriodeResultatÅrsak periodeResultatÅrsak, - Manuellbehandlingårsak manuellbehandlingårsak, - boolean trekkDagerFraSaldo, - boolean utbetal, - Optional graderingIkkeInnvilgetÅrsak) { + public static FastsettePeriodeUtfall opprett( + String id, + PeriodeResultatÅrsak periodeResultatÅrsak, + Manuellbehandlingårsak manuellbehandlingårsak, + boolean trekkDagerFraSaldo, + boolean utbetal, + Optional graderingIkkeInnvilgetÅrsak) { var builder = FastsettePeriodeUtfall.builder() - .manuellBehandling(periodeResultatÅrsak, manuellbehandlingårsak) - .utbetal(utbetal) - .medTrekkDagerFraSaldo(trekkDagerFraSaldo) - .medId(id); + .manuellBehandling(periodeResultatÅrsak, manuellbehandlingårsak) + .utbetal(utbetal) + .medTrekkDagerFraSaldo(trekkDagerFraSaldo) + .medId(id); graderingIkkeInnvilgetÅrsak.ifPresent(builder::medAvslåttGradering); return builder.create(); } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Oppfylt.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Oppfylt.java index f7646d4c..665b58e2 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Oppfylt.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/Oppfylt.java @@ -9,9 +9,9 @@ private Oppfylt() { /** * Opprette endenode for oppfylt periode. * - * @param id sluttnode id. + * @param id sluttnode id. * @param innvilgetÅrsak innvilget årsak - * @param utbetal skal det utbetales for denne perioden. + * @param utbetal skal det utbetales for denne perioden. * @return periode utfall. */ public static FastsettePeriodeUtfall opprett(String id, InnvilgetÅrsak innvilgetÅrsak, boolean utbetal) { @@ -21,27 +21,34 @@ public static FastsettePeriodeUtfall opprett(String id, InnvilgetÅrsak innvilge /** * Opprette endenode for oppfylt periode. * - * @param id sluttnode id. + * @param id sluttnode id. * @param innvilgetÅrsak innvilget årsak - * @param trekkDager skal det trekkes dager for denne perioder. - * @param utbetal skal det utbetales for denne perioden. + * @param trekkDager skal det trekkes dager for denne perioder. + * @param utbetal skal det utbetales for denne perioden. * @return periode utfall. */ - public static FastsettePeriodeUtfall opprett(String id, InnvilgetÅrsak innvilgetÅrsak, boolean trekkDager, boolean utbetal) { - return FastsettePeriodeUtfall.builder().oppfylt(innvilgetÅrsak).utbetal(utbetal).medTrekkDagerFraSaldo(trekkDager).medId(id).create(); + public static FastsettePeriodeUtfall opprett( + String id, InnvilgetÅrsak innvilgetÅrsak, boolean trekkDager, boolean utbetal) { + return FastsettePeriodeUtfall.builder() + .oppfylt(innvilgetÅrsak) + .utbetal(utbetal) + .medTrekkDagerFraSaldo(trekkDager) + .medId(id) + .create(); } - public static FastsettePeriodeUtfall opprettMedAvslåttGradering(String id, - InnvilgetÅrsak innvilgetÅrsak, - GraderingIkkeInnvilgetÅrsak graderingAvslagÅrsak, - boolean utbetal) { + public static FastsettePeriodeUtfall opprettMedAvslåttGradering( + String id, + InnvilgetÅrsak innvilgetÅrsak, + GraderingIkkeInnvilgetÅrsak graderingAvslagÅrsak, + boolean utbetal) { return FastsettePeriodeUtfall.builder() - .oppfylt(innvilgetÅrsak) - .utbetal(utbetal) - .medTrekkDagerFraSaldo(true) - .medAvslåttGradering(graderingAvslagÅrsak) - .medId(id) - .create(); + .oppfylt(innvilgetÅrsak) + .utbetal(utbetal) + .medTrekkDagerFraSaldo(true) + .medAvslåttGradering(graderingAvslagÅrsak) + .medId(id) + .create(); } /** @@ -51,7 +58,11 @@ public static FastsettePeriodeUtfall opprett(String id, InnvilgetÅrsak innvilge * @return periode utfall. */ public static FastsettePeriodeUtfall opprettForOppholds(String id, boolean trekkDagerFraSaldo, boolean utbetal) { - return FastsettePeriodeUtfall.builder().oppfylt(null).utbetal(utbetal).medTrekkDagerFraSaldo(trekkDagerFraSaldo).medId(id).create(); + return FastsettePeriodeUtfall.builder() + .oppfylt(null) + .utbetal(utbetal) + .medTrekkDagerFraSaldo(trekkDagerFraSaldo) + .medId(id) + .create(); } - } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoIdentifiserer.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoIdentifiserer.java index 22646b9b..f369d1bd 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoIdentifiserer.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoIdentifiserer.java @@ -12,7 +12,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; @@ -27,50 +26,74 @@ public class TomKontoIdentifiserer { private TomKontoIdentifiserer() { - //hindrer instansiering + // hindrer instansiering } - public static Optional identifiser(OppgittPeriode uttakPeriode, - List aktiviteter, - SaldoUtregning saldoUtregning, - Stønadskontotype stønadskontotype, - LukketPeriode farRundtFødselIntervall, - LocalDate startdatoNesteStønadsperiode, - boolean skalTrekkeDager, - PeriodeResultatÅrsak periodeResultatÅrsak, - UtfallType utfallType) { + public static Optional identifiser( + OppgittPeriode uttakPeriode, + List aktiviteter, + SaldoUtregning saldoUtregning, + Stønadskontotype stønadskontotype, + LukketPeriode farRundtFødselIntervall, + LocalDate startdatoNesteStønadsperiode, + boolean skalTrekkeDager, + PeriodeResultatÅrsak periodeResultatÅrsak, + UtfallType utfallType) { Map knekkpunkter = new HashMap<>(); var etterNesteStønadsperiode = Optional.ofNullable(startdatoNesteStønadsperiode) - .filter(d -> !uttakPeriode.getFom().isBefore(d)) - .isPresent(); // Om aktuell periode begynner fom neste stønadsperiode + .filter(d -> !uttakPeriode.getFom().isBefore(d)) + .isPresent(); // Om aktuell periode begynner fom neste stønadsperiode for (var aktivitet : aktiviteter) { - var datoKontoGårTomIPeriode = finnDatoKontoGårTomIPeriode(uttakPeriode, aktivitet, saldoUtregning, stønadskontotype, skalTrekkeDager); + var datoKontoGårTomIPeriode = finnDatoKontoGårTomIPeriode( + uttakPeriode, aktivitet, saldoUtregning, stønadskontotype, skalTrekkeDager); datoKontoGårTomIPeriode.ifPresent(dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); if (uttakPeriode.isFlerbarnsdager()) { - var knekkpunktFlerbarnsdager = finnDatoKontoGårTomIPeriodeFlerbarnsdager(uttakPeriode, aktivitet, saldoUtregning, skalTrekkeDager); + var knekkpunktFlerbarnsdager = finnDatoKontoGårTomIPeriodeFlerbarnsdager( + uttakPeriode, aktivitet, saldoUtregning, skalTrekkeDager); knekkpunktFlerbarnsdager.ifPresent(dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); } if (saldoUtregning.getMaxDagerMinsterett().merEnn0() && !etterNesteStønadsperiode) { - finnDatoMinsterettOppbrukt(uttakPeriode, aktivitet, saldoUtregning, skalTrekkeDager, utfallType, periodeResultatÅrsak).ifPresent( - dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); + finnDatoMinsterettOppbrukt( + uttakPeriode, + aktivitet, + saldoUtregning, + skalTrekkeDager, + utfallType, + periodeResultatÅrsak) + .ifPresent(dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); } if (saldoUtregning.getMaxDagerUtenAktivitetskrav().merEnn0()) { - finnDatoDagerUtenAktivitetskravOppbrukt(uttakPeriode, aktivitet, saldoUtregning, skalTrekkeDager, utfallType, - periodeResultatÅrsak).ifPresent(dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); + finnDatoDagerUtenAktivitetskravOppbrukt( + uttakPeriode, + aktivitet, + saldoUtregning, + skalTrekkeDager, + utfallType, + periodeResultatÅrsak) + .ifPresent(dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); } if (saldoUtregning.getMaxDagerEtterNesteStønadsperiode().merEnn0() && etterNesteStønadsperiode) { - finnDatoNesteStønadsperiodeOppbrukt(uttakPeriode, aktivitet, saldoUtregning, skalTrekkeDager, utfallType, - periodeResultatÅrsak).ifPresent(dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); + finnDatoNesteStønadsperiodeOppbrukt( + uttakPeriode, + aktivitet, + saldoUtregning, + skalTrekkeDager, + utfallType, + periodeResultatÅrsak) + .ifPresent(dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); } - if (farRundtFødselIntervall != null && FarUttakRundtFødsel.erKontoRelevant(stønadskontotype) - && saldoUtregning.getFarUttakRundtFødselDager().merEnn0()) { - // Fra lovendring 2022: Far kan ta ut 10 dager samtidig rundt fødsel (før termin, etter fødsel) + far alene kan ta ut fritt før uke 6. - // Grensen på 10 samtidige dager rundt fødsel gjelder dermed kun tilfelle av kvoter og 1 barn - finnDatoFarRundtFødselOppbrukt(uttakPeriode, aktivitet, farRundtFødselIntervall, saldoUtregning, skalTrekkeDager).ifPresent( - dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); + if (farRundtFødselIntervall != null + && FarUttakRundtFødsel.erKontoRelevant(stønadskontotype) + && saldoUtregning.getFarUttakRundtFødselDager().merEnn0()) { + // Fra lovendring 2022: Far kan ta ut 10 dager samtidig rundt fødsel (før termin, + // etter fødsel) + far alene kan ta ut fritt før uke 6. + // Grensen på 10 samtidige dager rundt fødsel gjelder dermed kun tilfelle av kvoter + // og 1 barn + finnDatoFarRundtFødselOppbrukt( + uttakPeriode, aktivitet, farRundtFødselIntervall, saldoUtregning, skalTrekkeDager) + .ifPresent(dato -> knekkpunkter.put(dato, new TomKontoKnekkpunkt(dato))); } - } if (knekkpunkter.isEmpty()) { return Optional.empty(); @@ -80,22 +103,25 @@ public static Optional identifiser(OppgittPeriode uttakPerio return Optional.of(knekkpunkter.get(tidligstDato)); } - private static Optional finnDatoKontoGårTomIPeriode(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - SaldoUtregning saldoUtregning, - Stønadskontotype stønadskontotype, - boolean skalTrekkeDager) { + private static Optional finnDatoKontoGårTomIPeriode( + OppgittPeriode oppgittPeriode, + AktivitetIdentifikator aktivitet, + SaldoUtregning saldoUtregning, + Stønadskontotype stønadskontotype, + boolean skalTrekkeDager) { if (!skalTrekkeDager) { return Optional.empty(); } - var saldo = saldoUtregning.nettoSaldoJustertForMinsterett(stønadskontotype, aktivitet, oppgittPeriode.kanTrekkeAvMinsterett()); + var saldo = saldoUtregning.nettoSaldoJustertForMinsterett( + stønadskontotype, aktivitet, oppgittPeriode.kanTrekkeAvMinsterett()); return datoHvisSaldoOppbruktIPeriode(oppgittPeriode, aktivitet, saldo); } - private static Optional finnDatoKontoGårTomIPeriodeFlerbarnsdager(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - SaldoUtregning saldoUtregning, - boolean skalTrekkeDager) { + private static Optional finnDatoKontoGårTomIPeriodeFlerbarnsdager( + OppgittPeriode oppgittPeriode, + AktivitetIdentifikator aktivitet, + SaldoUtregning saldoUtregning, + boolean skalTrekkeDager) { if (!skalTrekkeDager) { return Optional.empty(); } @@ -103,12 +129,13 @@ public static Optional identifiser(OppgittPeriode uttakPerio return datoHvisSaldoOppbruktIPeriode(oppgittPeriode, aktivitet, saldo); } - private static Optional finnDatoMinsterettOppbrukt(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - SaldoUtregning saldoUtregning, - boolean skalTrekkeDager, - UtfallType utfallType, - PeriodeResultatÅrsak periodeResultatÅrsak) { + private static Optional finnDatoMinsterettOppbrukt( + OppgittPeriode oppgittPeriode, + AktivitetIdentifikator aktivitet, + SaldoUtregning saldoUtregning, + boolean skalTrekkeDager, + UtfallType utfallType, + PeriodeResultatÅrsak periodeResultatÅrsak) { if (!trekkerMinsterett(oppgittPeriode, utfallType, periodeResultatÅrsak) || !skalTrekkeDager) { return Optional.empty(); } @@ -116,12 +143,13 @@ private static Optional finnDatoMinsterettOppbrukt(OppgittPeriode opp return datoHvisSaldoOppbruktIPeriode(oppgittPeriode, aktivitet, saldoMinsterett); } - private static Optional finnDatoNesteStønadsperiodeOppbrukt(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - SaldoUtregning saldoUtregning, - boolean skalTrekkeDager, - UtfallType utfallType, - PeriodeResultatÅrsak periodeResultatÅrsak) { + private static Optional finnDatoNesteStønadsperiodeOppbrukt( + OppgittPeriode oppgittPeriode, + AktivitetIdentifikator aktivitet, + SaldoUtregning saldoUtregning, + boolean skalTrekkeDager, + UtfallType utfallType, + PeriodeResultatÅrsak periodeResultatÅrsak) { if (!trekkerMinsterett(oppgittPeriode, utfallType, periodeResultatÅrsak) || !skalTrekkeDager) { return Optional.empty(); } @@ -129,12 +157,13 @@ private static Optional finnDatoMinsterettOppbrukt(OppgittPeriode opp return datoHvisSaldoOppbruktIPeriode(oppgittPeriode, aktivitet, saldoMinsterett); } - private static Optional finnDatoDagerUtenAktivitetskravOppbrukt(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - SaldoUtregning saldoUtregning, - boolean skalTrekkeDager, - UtfallType utfallType, - PeriodeResultatÅrsak periodeResultatÅrsak) { + private static Optional finnDatoDagerUtenAktivitetskravOppbrukt( + OppgittPeriode oppgittPeriode, + AktivitetIdentifikator aktivitet, + SaldoUtregning saldoUtregning, + boolean skalTrekkeDager, + UtfallType utfallType, + PeriodeResultatÅrsak periodeResultatÅrsak) { if (!trekkerMinsterett(oppgittPeriode, utfallType, periodeResultatÅrsak) || !skalTrekkeDager) { return Optional.empty(); } @@ -143,26 +172,30 @@ private static Optional finnDatoDagerUtenAktivitetskravOppbrukt(Oppgi return datoHvisSaldoOppbruktIPeriode(oppgittPeriode, aktivitet, saldoMinsterett); } - private static boolean trekkerMinsterett(OppgittPeriode oppgittPeriode, UtfallType utfallType, PeriodeResultatÅrsak resultatÅrsak) { - return FastsattUttakPeriode.trekkerMinsterett(Perioderesultattype.fra(utfallType), mapTilÅrsak(resultatÅrsak), oppgittPeriode.isUtsettelse()); + private static boolean trekkerMinsterett( + OppgittPeriode oppgittPeriode, UtfallType utfallType, PeriodeResultatÅrsak resultatÅrsak) { + return FastsattUttakPeriode.trekkerMinsterett( + Perioderesultattype.fra(utfallType), mapTilÅrsak(resultatÅrsak), oppgittPeriode.isUtsettelse()); } - private static Optional finnDatoFarRundtFødselOppbrukt(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - LukketPeriode farRundtFødselIntervall, - SaldoUtregning saldoUtregning, - boolean skalTrekkeDager) { - if (saldoUtregning.getFarUttakRundtFødselDager().equals(Trekkdager.ZERO) || !skalTrekkeDager || oppgittPeriode.isFlerbarnsdager() - || !FarUttakRundtFødsel.erPeriodeRelevant(farRundtFødselIntervall, oppgittPeriode)) { + private static Optional finnDatoFarRundtFødselOppbrukt( + OppgittPeriode oppgittPeriode, + AktivitetIdentifikator aktivitet, + LukketPeriode farRundtFødselIntervall, + SaldoUtregning saldoUtregning, + boolean skalTrekkeDager) { + if (saldoUtregning.getFarUttakRundtFødselDager().equals(Trekkdager.ZERO) + || !skalTrekkeDager + || oppgittPeriode.isFlerbarnsdager() + || !FarUttakRundtFødsel.erPeriodeRelevant(farRundtFødselIntervall, oppgittPeriode)) { return Optional.empty(); } var saldoFarRundtFødsel = saldoUtregning.restSaldoFarUttakRundtFødsel(aktivitet, farRundtFødselIntervall); return datoHvisSaldoOppbruktIPeriode(oppgittPeriode, aktivitet, saldoFarRundtFødsel); } - private static Optional datoHvisSaldoOppbruktIPeriode(OppgittPeriode oppgittPeriode, - AktivitetIdentifikator aktivitet, - Trekkdager saldo) { + private static Optional datoHvisSaldoOppbruktIPeriode( + OppgittPeriode oppgittPeriode, AktivitetIdentifikator aktivitet, Trekkdager saldo) { var trekkdagerIPeriodeFom = justerHelgTilMandag(oppgittPeriode.getFom()); var saldoTilVirkedager = saldoTilVirkedager(oppgittPeriode, aktivitet, saldo); var datoKontoGårTom = Virkedager.plusVirkedager(trekkdagerIPeriodeFom, saldoTilVirkedager); @@ -191,7 +224,8 @@ private static int saldoTilVirkedager(OppgittPeriode periode, AktivitetIdentifik } private static int saldoTilVirkedagerSamtidigUttak(OppgittPeriode periode, Trekkdager saldo) { - return saldoTilVirkedagerVedRedusertUttak(saldo, periode.getSamtidigUttaksprosent().decimalValue()); + return saldoTilVirkedagerVedRedusertUttak( + saldo, periode.getSamtidigUttaksprosent().decimalValue()); } private static int saldoTilVirkedagerGradering(OppgittPeriode periode, Trekkdager saldo) { @@ -204,7 +238,9 @@ private static int saldoTilVirkedagerGradering(OppgittPeriode periode, Trekkdage private static int saldoTilVirkedagerVedRedusertUttak(Trekkdager saldo, BigDecimal uttaksprosent) { var trekkdagerPerVirkedag = uttaksprosent.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP); if (saldo.gårAkkuratOppIHeleVirkedager(trekkdagerPerVirkedag)) { - return saldo.decimalValue().divide(trekkdagerPerVirkedag, 0, RoundingMode.DOWN).intValue(); + return saldo.decimalValue() + .divide(trekkdagerPerVirkedag, 0, RoundingMode.DOWN) + .intValue(); } var virkedager = saldo.decimalValue().add(BigDecimal.ONE).divide(trekkdagerPerVirkedag, 4, RoundingMode.DOWN); if (virkedager.remainder(BigDecimal.valueOf(virkedager.intValue(), 0)).compareTo(BigDecimal.ZERO) == 0) { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoKnekkpunkt.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoKnekkpunkt.java index 25fd3c95..2af72125 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoKnekkpunkt.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoKnekkpunkt.java @@ -2,5 +2,4 @@ import java.time.LocalDate; -public record TomKontoKnekkpunkt(LocalDate dato) { -} +public record TomKontoKnekkpunkt(LocalDate dato) {} diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/UttakOutcome.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/UttakOutcome.java index 3919714a..eb0ce334 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/UttakOutcome.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/UttakOutcome.java @@ -1,7 +1,6 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall; import java.util.Optional; - import no.nav.fpsak.nare.evaluation.RuleReasonRef; public class UttakOutcome implements RuleReasonRef { @@ -22,7 +21,9 @@ public static UttakOutcome oppfylt(InnvilgetÅrsak årsak) { } public static UttakOutcome manuell(PeriodeResultatÅrsak årsak, Manuellbehandlingårsak manuellårsak) { - return new UttakOutcome(UtfallType.MANUELL_BEHANDLING).medPeriodeResultatÅrsak(årsak).medManuellBehandlingårsak(manuellårsak); + return new UttakOutcome(UtfallType.MANUELL_BEHANDLING) + .medPeriodeResultatÅrsak(årsak) + .medManuellBehandlingårsak(manuellårsak); } public static UttakOutcome ikkeOppfylt(IkkeOppfyltÅrsak årsak) { @@ -80,11 +81,16 @@ public UttakOutcome medTrekkDagerFraSaldo(boolean trekkDagerFraSaldo) { @Override public String getReasonTextTemplate() { - return Optional.ofNullable(periodeÅrsak).map(PeriodeResultatÅrsak::getBeskrivelse).orElse(""); + return Optional.ofNullable(periodeÅrsak) + .map(PeriodeResultatÅrsak::getBeskrivelse) + .orElse(""); } @Override public String getReasonCode() { - return Optional.ofNullable(periodeÅrsak).map(PeriodeResultatÅrsak::getId).map(String::valueOf).orElse(""); + return Optional.ofNullable(periodeÅrsak) + .map(PeriodeResultatÅrsak::getId) + .map(String::valueOf) + .orElse(""); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktPeriodeUtil.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktPeriodeUtil.java" index 997641d8..5f37f53e 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktPeriodeUtil.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktPeriodeUtil.java" @@ -8,7 +8,6 @@ import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; @@ -17,16 +16,15 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; final class ManglendeSøktPeriodeUtil { - private ManglendeSøktPeriodeUtil() { - - } + private ManglendeSøktPeriodeUtil() {} static List finnManglendeSøktePerioder(List perioder, LukketPeriode periode) { Objects.requireNonNull(periode, "periode"); var sortertePerioder = perioder.stream() - .filter(p -> !p.getTom().isBefore(periode.getFom()) && !p.getFom().isAfter(periode.getTom())) - .sorted(Comparator.comparing(Periode::getFom)) - .toList(); + .filter(p -> + !p.getTom().isBefore(periode.getFom()) && !p.getFom().isAfter(periode.getTom())) + .sorted(Comparator.comparing(Periode::getFom)) + .toList(); List msp = new ArrayList<>(); var hullFom = periode.getFom(); @@ -47,7 +45,6 @@ final class ManglendeSøktPeriodeUtil { if (Virkedager.beregnAntallVirkedager(hullFom, hullTom) > 0) { msp.add(lagManglendeSøktPeriode(hullFom, hullTom)); } - } return msp; } @@ -59,7 +56,8 @@ final class ManglendeSøktPeriodeUtil { * @return periode uten helg i begynnelsen og slutten. Optional.empty() dersom perioden bare besto av helgedager. */ static Optional fjernHelg(OppgittPeriode msp) { - Predicate sjekkOmHelg = dato -> dato.getDayOfWeek().equals(DayOfWeek.SATURDAY) || dato.getDayOfWeek().equals(DayOfWeek.SUNDAY); + Predicate sjekkOmHelg = dato -> dato.getDayOfWeek().equals(DayOfWeek.SATURDAY) + || dato.getDayOfWeek().equals(DayOfWeek.SUNDAY); var fom = msp.getFom(); var tom = msp.getTom(); @@ -85,7 +83,8 @@ static Optional fjernHelg(OppgittPeriode msp) { return OppgittPeriode.forManglendeSøkt(type, hullFom, hullTom); } - static Optional fjernPerioderFørEndringsdatoVedRevurdering(OppgittPeriode msp, RegelGrunnlag grunnlag) { + static Optional fjernPerioderFørEndringsdatoVedRevurdering( + OppgittPeriode msp, RegelGrunnlag grunnlag) { if (!grunnlag.erRevurdering()) { return Optional.of(msp); } @@ -110,8 +109,9 @@ static boolean bareFarRett(RegelGrunnlag grunnlag) { static List slåSammenUttakForBeggeParter(RegelGrunnlag grunnlag) { List allePerioder = new ArrayList<>(); if (grunnlag.getAnnenPart() != null) { - allePerioder.addAll( - grunnlag.getAnnenPart().getUttaksperioder().stream().filter(p -> p.isInnvilget() || p.harTrekkdager() || p.harUtbetaling()).toList()); + allePerioder.addAll(grunnlag.getAnnenPart().getUttaksperioder().stream() + .filter(p -> p.isInnvilget() || p.harTrekkdager() || p.harUtbetaling()) + .toList()); } allePerioder.addAll(grunnlag.getSøknad().getOppgittePerioder()); return allePerioder; @@ -126,5 +126,4 @@ static LocalDate utledSenesteLovligeStartdatoVedAdopsjon(RegelGrunnlag grunnlag) } return omsorgsovertakelseDato; } - } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderForSammenhengendeUttakTjeneste.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderForSammenhengendeUttakTjeneste.java" index a4975efe..3587d295 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderForSammenhengendeUttakTjeneste.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderForSammenhengendeUttakTjeneste.java" @@ -17,7 +17,6 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; @@ -41,7 +40,8 @@ public final class ManglendeSøktePerioderForSammenhengendeUttakTjeneste { manglendePerioder.addAll(manglendePerioderIUkerFarMedAleneomsorg); manglendePerioder.addAll(manglendePerioderIUkerForbeholdtMor); - var manglendeSøktePerioder = finnManglendeMellomliggendePerioder(grunnlag, manglendePerioder).collect(Collectors.toList()); + var manglendeSøktePerioder = + finnManglendeMellomliggendePerioder(grunnlag, manglendePerioder).collect(Collectors.toList()); manglendeSøktePerioder.addAll(manglendePerioderIUkerFarMedAleneomsorg); manglendeSøktePerioder.addAll(finnPerioderVedAdopsjon(grunnlag)); manglendeSøktePerioder.addAll(manglendePerioderIUkerForbeholdtMor); @@ -57,23 +57,25 @@ public final class ManglendeSøktePerioderForSammenhengendeUttakTjeneste { return samlet; } - private static List trimPerioder(RegelGrunnlag grunnlag, List manglendeSøktePerioder) { + private static List trimPerioder( + RegelGrunnlag grunnlag, List manglendeSøktePerioder) { return manglendeSøktePerioder.stream() - .map(ManglendeSøktPeriodeUtil::fjernHelg) - .filter(Optional::isPresent) - .map(Optional::get) - .map(p -> fjernPerioderFørSkjæringstidspunktOpptjening(p, grunnlag)) - .filter(Optional::isPresent) - .map(Optional::get) - .map(p -> fjernPerioderFørEndringsdatoVedRevurdering(p, grunnlag)) - .filter(Optional::isPresent) - .map(Optional::get) - .sorted(Comparator.comparing(Periode::getFom)) - .toList(); + .map(ManglendeSøktPeriodeUtil::fjernHelg) + .filter(Optional::isPresent) + .map(Optional::get) + .map(p -> fjernPerioderFørSkjæringstidspunktOpptjening(p, grunnlag)) + .filter(Optional::isPresent) + .map(Optional::get) + .map(p -> fjernPerioderFørEndringsdatoVedRevurdering(p, grunnlag)) + .filter(Optional::isPresent) + .map(Optional::get) + .sorted(Comparator.comparing(Periode::getFom)) + .toList(); } private static boolean contains(List list, LocalDate fom, LocalDate tom) { - return list.stream().anyMatch(item -> item.getFom().isEqual(fom) && item.getTom().isEqual(tom)); + return list.stream() + .anyMatch(item -> item.getFom().isEqual(fom) && item.getTom().isEqual(tom)); } private static List finnPerioderVedAdopsjon(RegelGrunnlag grunnlag) { @@ -87,11 +89,15 @@ private static List finnPerioderVedAdopsjon(RegelGrunnlag grunnl } private static List finnManglendeSøktIUkerForbeholdtMor(RegelGrunnlag grunnlag) { - if (grunnlag.getBehandling().isSøkerMor() && grunnlag.getSøknad().getType().gjelderTerminFødsel()) { + if (grunnlag.getBehandling().isSøkerMor() + && grunnlag.getSøknad().getType().gjelderTerminFødsel()) { return utledManglendeForMorFraOppgittePerioder(grunnlag); } - if (farSøkerFødselEllerTerminOgBareFarHarRett(grunnlag) && !grunnlag.getRettOgOmsorg().getAleneomsorg()) { - var oppholdFar = utledManglendeSøktForFar(grunnlag.getDatoer().getFamiliehendelse(), grunnlag.getSøknad().getOppgittePerioder()); + if (farSøkerFødselEllerTerminOgBareFarHarRett(grunnlag) + && !grunnlag.getRettOgOmsorg().getAleneomsorg()) { + var oppholdFar = utledManglendeSøktForFar( + grunnlag.getDatoer().getFamiliehendelse(), + grunnlag.getSøknad().getOppgittePerioder()); if (oppholdFar.isPresent()) { return List.of(oppholdFar.get()); } @@ -103,8 +109,10 @@ private static List finnPerioderVedAdopsjon(RegelGrunnlag grunnl if (isFarMedAleneomsorg(grunnlag)) { var førstePeriode = grunnlag.getSøknad().getOppgittePerioder().getFirst(); if (grunnlag.getDatoer().getFamiliehendelse().isBefore(førstePeriode.getFom())) { - var nyPeriode = lagManglendeSøktPeriode(grunnlag.getDatoer().getFamiliehendelse(), førstePeriode.getFom().minusDays(1), - Stønadskontotype.FORELDREPENGER); + var nyPeriode = lagManglendeSøktPeriode( + grunnlag.getDatoer().getFamiliehendelse(), + førstePeriode.getFom().minusDays(1), + Stønadskontotype.FORELDREPENGER); return List.of(nyPeriode); } } @@ -116,10 +124,12 @@ private static List finnPerioderVedAdopsjon(RegelGrunnlag grunnl var førsteUttaksdatoSøknad = førsteUttaksdatoSøknad(grunnlag); var førsteUttaksdatoAnnenpart = førsteUttaksdatoAnnenpart(grunnlag); - if (førsteUttaksdatoSøknad.isAfter(senesteLovligeStartdatoVedAdopsjon) && (førsteUttaksdatoAnnenpart.isEmpty() - || førsteUttaksdatoAnnenpart.get().isAfter(senesteLovligeStartdatoVedAdopsjon))) { + if (førsteUttaksdatoSøknad.isAfter(senesteLovligeStartdatoVedAdopsjon) + && (førsteUttaksdatoAnnenpart.isEmpty() + || førsteUttaksdatoAnnenpart.get().isAfter(senesteLovligeStartdatoVedAdopsjon))) { LocalDate tom; - if (førsteUttaksdatoAnnenpart.isEmpty() || førsteUttaksdatoSøknad.isBefore(førsteUttaksdatoAnnenpart.get())) { + if (førsteUttaksdatoAnnenpart.isEmpty() + || førsteUttaksdatoSøknad.isBefore(førsteUttaksdatoAnnenpart.get())) { tom = førsteUttaksdatoSøknad.minusDays(1); } else { tom = førsteUttaksdatoAnnenpart.get().minusDays(1); @@ -130,7 +140,8 @@ private static List finnPerioderVedAdopsjon(RegelGrunnlag grunnl } private static Optional førsteUttaksdatoAnnenpart(RegelGrunnlag grunnlag) { - if (grunnlag.getAnnenPart() == null || grunnlag.getAnnenPart().getUttaksperioder().isEmpty()) { + if (grunnlag.getAnnenPart() == null + || grunnlag.getAnnenPart().getUttaksperioder().isEmpty()) { return Optional.empty(); } return Optional.of(førsteFom(grunnlag.getAnnenPart().getUttaksperioder())); @@ -141,15 +152,22 @@ private static List finnPerioderVedAdopsjon(RegelGrunnlag grunnl } private static LocalDate førsteFom(List perioder) { - return perioder.stream().min(Comparator.comparing(LukketPeriode::getFom)).orElseThrow().getFom(); + return perioder.stream() + .min(Comparator.comparing(LukketPeriode::getFom)) + .orElseThrow() + .getFom(); } - private static Optional utledManglendeSøktForFar(LocalDate familiehendelse, List uttaksperioder) { + private static Optional utledManglendeSøktForFar( + LocalDate familiehendelse, List uttaksperioder) { var førstePeriode = uttaksperioder.get(0); - var ukerForbeholdtMor = Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelse); + var ukerForbeholdtMor = + Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelse); if (familiehendelse.plusWeeks(ukerForbeholdtMor).isBefore(førstePeriode.getFom())) { - var nyPeriode = lagManglendeSøktPeriode(familiehendelse.plusWeeks(ukerForbeholdtMor), førstePeriode.getFom().minusDays(1), - Stønadskontotype.FORELDREPENGER); + var nyPeriode = lagManglendeSøktPeriode( + familiehendelse.plusWeeks(ukerForbeholdtMor), + førstePeriode.getFom().minusDays(1), + Stønadskontotype.FORELDREPENGER); return Optional.of(nyPeriode); } return Optional.empty(); @@ -165,24 +183,33 @@ private static List finnPerioderVedAdopsjon(RegelGrunnlag grunnl private static List utledManglendeForMorFraOppgittePerioder(RegelGrunnlag grunnlag) { var familiehendelseDato = grunnlag.getDatoer().getFamiliehendelse(); - var uttakPerioder = slåSammenUttakForBeggeParter(grunnlag).stream().sorted(Comparator.comparing(Periode::getFom)).toList(); - var mspFørFødsel = finnManglendeSøktFørFødsel(uttakPerioder, familiehendelseDato, grunnlag.getSøknad().getType(), - grunnlag.getGyldigeStønadskontotyper()); - var mspEtterFødsel = finnPerioderEtterFødsel(uttakPerioder, familiehendelseDato, grunnlag.getGyldigeStønadskontotyper()); + var uttakPerioder = slåSammenUttakForBeggeParter(grunnlag).stream() + .sorted(Comparator.comparing(Periode::getFom)) + .toList(); + var mspFørFødsel = finnManglendeSøktFørFødsel( + uttakPerioder, + familiehendelseDato, + grunnlag.getSøknad().getType(), + grunnlag.getGyldigeStønadskontotyper()); + var mspEtterFødsel = + finnPerioderEtterFødsel(uttakPerioder, familiehendelseDato, grunnlag.getGyldigeStønadskontotyper()); return Stream.of(mspFørFødsel, mspEtterFødsel) - .flatMap(Collection::stream) - .map(ManglendeSøktPeriodeUtil::fjernHelg) - .filter(Optional::isPresent) - .map(Optional::get) - .toList(); + .flatMap(Collection::stream) + .map(ManglendeSøktPeriodeUtil::fjernHelg) + .filter(Optional::isPresent) + .map(Optional::get) + .toList(); } - private static Optional fjernPerioderFørSkjæringstidspunktOpptjening(OppgittPeriode msp, RegelGrunnlag grunnlag) { + private static Optional fjernPerioderFørSkjæringstidspunktOpptjening( + OppgittPeriode msp, RegelGrunnlag grunnlag) { var skjæringstidspunkt = grunnlag.getOpptjening().getSkjæringstidspunkt(); - // Skal ikke fjerne periode før skjæringstidspunkt for far med aleneomsorg eller enerett (fødsel eller adopsjon) - if ((farSøkerFødselEllerTerminOgBareFarHarRett(grunnlag) || isFarMedAleneomsorg(grunnlag) && skjæringstidspunkt.isAfter( - grunnlag.getDatoer().getFamiliehendelse()))) { + // Skal ikke fjerne periode før skjæringstidspunkt for far med aleneomsorg eller enerett + // (fødsel eller adopsjon) + if ((farSøkerFødselEllerTerminOgBareFarHarRett(grunnlag) + || isFarMedAleneomsorg(grunnlag) + && skjæringstidspunkt.isAfter(grunnlag.getDatoer().getFamiliehendelse()))) { return Optional.of(msp); } if (mspFyllerHullMellomForeldrene(msp, grunnlag)) { @@ -192,7 +219,8 @@ private static List utledManglendeForMorFraOppgittePerioder(Rege } private static boolean isFarMedAleneomsorg(RegelGrunnlag grunnlag) { - return grunnlag.getBehandling().isSøkerFarMedMor() && grunnlag.getRettOgOmsorg().getAleneomsorg(); + return grunnlag.getBehandling().isSøkerFarMedMor() + && grunnlag.getRettOgOmsorg().getAleneomsorg(); } private static boolean mspFyllerHullMellomForeldrene(OppgittPeriode msp, RegelGrunnlag grunnlag) { @@ -211,54 +239,69 @@ private static boolean mspFyllerHullMellomForeldrene(OppgittPeriode msp, RegelGr return farSøkerFødselEllerTermin(grunnlag) && bareFarRett(grunnlag); } - private static Stream finnManglendeMellomliggendePerioder(RegelGrunnlag grunnlag, List ekskludertePerioder) { + private static Stream finnManglendeMellomliggendePerioder( + RegelGrunnlag grunnlag, List ekskludertePerioder) { var allePerioder = slåSammenUttakForBeggeParter(grunnlag); - //legge inn ikke søkte perioder til uker som er Forbeholdt til Mor etter fødsel + // legge inn ikke søkte perioder til uker som er Forbeholdt til Mor etter fødsel allePerioder.addAll(ekskludertePerioder); return finnManglendeMellomliggendePerioder(allePerioder).stream() - .map(ManglendeSøktPeriodeUtil::fjernHelg) - .filter(Optional::isPresent) - .map(Optional::get); + .map(ManglendeSøktPeriodeUtil::fjernHelg) + .filter(Optional::isPresent) + .map(Optional::get); } - - private static List finnManglendeSøktFørFødsel(List søktePerioder, - LocalDate familiehendelseDato, - Søknadstype søknadstype, - Set gyldigeStønadskontotyper) { + private static List finnManglendeSøktFørFødsel( + List søktePerioder, + LocalDate familiehendelseDato, + Søknadstype søknadstype, + Set gyldigeStønadskontotyper) { if (Søknadstype.ADOPSJON.equals(søknadstype)) { return List.of(); } - var antallUkerFpffFørFødsel = Konfigurasjon.STANDARD.getParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, familiehendelseDato); - var sorterteSøktePerioder = søktePerioder.stream().sorted(Comparator.comparing(Periode::getFom)).toList(); + var antallUkerFpffFørFødsel = + Konfigurasjon.STANDARD.getParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, familiehendelseDato); + var sorterteSøktePerioder = søktePerioder.stream() + .sorted(Comparator.comparing(Periode::getFom)) + .toList(); var førsteUttaksdagSøknad = sorterteSøktePerioder.get(0).getFom(); if (!førsteUttaksdagSøknad.isBefore(familiehendelseDato.minusWeeks(antallUkerFpffFørFødsel))) { return List.of(); } - var startdatoBegingetFpff = førsteUttaksdagSøknad.isBefore( - familiehendelseDato.minusWeeks(antallUkerFpffFørFødsel)) ? familiehendelseDato.minusWeeks( - antallUkerFpffFørFødsel) : førsteUttaksdagSøknad; + var startdatoBegingetFpff = + førsteUttaksdagSøknad.isBefore(familiehendelseDato.minusWeeks(antallUkerFpffFørFødsel)) + ? familiehendelseDato.minusWeeks(antallUkerFpffFørFødsel) + : førsteUttaksdagSøknad; var betingetFpffPeriode = new LukketPeriode(startdatoBegingetFpff, familiehendelseDato.minusDays(1)); - var mspFørFødsel = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(sorterteSøktePerioder, betingetFpffPeriode) - .stream() - .map(msp -> lagManglendeSøktPeriode(msp.getFom(), msp.getTom(), Stønadskontotype.FORELDREPENGER_FØR_FØDSEL)) - .toList(); - var betingetFellesperiode = new LukketPeriode(førsteUttaksdagSøknad, familiehendelseDato.minusWeeks(antallUkerFpffFørFødsel).minusDays(1)); - var mspForFellesperiodeFørFødsel = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(sorterteSøktePerioder, betingetFellesperiode) - .stream() - .map(msp -> { - var type = gyldigeStønadskontotyper.contains( - Stønadskontotype.FELLESPERIODE) ? Stønadskontotype.FELLESPERIODE : Stønadskontotype.FORELDREPENGER; - return lagManglendeSøktPeriode(msp.getFom(), msp.getTom(), type); - }) - .toList(); - return Stream.of(mspForFellesperiodeFørFødsel, mspFørFødsel).flatMap(Collection::stream).filter(p -> p.virkedager() > 0).toList(); + var mspFørFødsel = + ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(sorterteSøktePerioder, betingetFpffPeriode).stream() + .map(msp -> lagManglendeSøktPeriode( + msp.getFom(), msp.getTom(), Stønadskontotype.FORELDREPENGER_FØR_FØDSEL)) + .toList(); + var betingetFellesperiode = new LukketPeriode( + førsteUttaksdagSøknad, + familiehendelseDato.minusWeeks(antallUkerFpffFørFødsel).minusDays(1)); + var mspForFellesperiodeFørFødsel = + ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(sorterteSøktePerioder, betingetFellesperiode) + .stream() + .map(msp -> { + var type = gyldigeStønadskontotyper.contains(Stønadskontotype.FELLESPERIODE) + ? Stønadskontotype.FELLESPERIODE + : Stønadskontotype.FORELDREPENGER; + return lagManglendeSøktPeriode(msp.getFom(), msp.getTom(), type); + }) + .toList(); + return Stream.of(mspForFellesperiodeFørFødsel, mspFørFødsel) + .flatMap(Collection::stream) + .filter(p -> p.virkedager() > 0) + .toList(); } private static List finnManglendeMellomliggendePerioder(List perioder) { - var sortertePerioder = perioder.stream().sorted(Comparator.comparing(LukketPeriode::getFom)).toList(); + var sortertePerioder = perioder.stream() + .sorted(Comparator.comparing(LukketPeriode::getFom)) + .toList(); List mellomliggendePerioder = new ArrayList<>(); LocalDate mspFom = null; @@ -278,17 +321,20 @@ private static List finnManglendeMellomliggendePerioder(List finnPerioderEtterFødsel(List søktePerioder, - LocalDate familiehendelseDato, - Set gyldigeStønadskontotyper) { - var mødrekvoteEtterFødselUker = Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelseDato); - var betingetPeriodeEtterFødsel = new LukketPeriode(familiehendelseDato, - familiehendelseDato.plusWeeks(mødrekvoteEtterFødselUker).minusDays(1)); - var stønadskontotype = gyldigeStønadskontotyper.contains( - Stønadskontotype.MØDREKVOTE) ? Stønadskontotype.MØDREKVOTE : Stønadskontotype.FORELDREPENGER; - return ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(søktePerioder, betingetPeriodeEtterFødsel) - .stream() - .map(msp -> lagManglendeSøktPeriode(msp.getFom(), msp.getTom(), stønadskontotype)) - .toList(); + private static List finnPerioderEtterFødsel( + List søktePerioder, + LocalDate familiehendelseDato, + Set gyldigeStønadskontotyper) { + var mødrekvoteEtterFødselUker = Konfigurasjon.STANDARD.getParameter( + Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelseDato); + var betingetPeriodeEtterFødsel = new LukketPeriode( + familiehendelseDato, + familiehendelseDato.plusWeeks(mødrekvoteEtterFødselUker).minusDays(1)); + var stønadskontotype = gyldigeStønadskontotyper.contains(Stønadskontotype.MØDREKVOTE) + ? Stønadskontotype.MØDREKVOTE + : Stønadskontotype.FORELDREPENGER; + return ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(søktePerioder, betingetPeriodeEtterFødsel).stream() + .map(msp -> lagManglendeSøktPeriode(msp.getFom(), msp.getTom(), stønadskontotype)) + .toList(); } } diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderTjeneste.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderTjeneste.java" index 30748466..82a034d9 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderTjeneste.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderTjeneste.java" @@ -13,7 +13,6 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; @@ -23,7 +22,6 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Konfigurasjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.konfig.Parametertype; - public final class ManglendeSøktePerioderTjeneste { private ManglendeSøktePerioderTjeneste() { @@ -36,7 +34,8 @@ public final class ManglendeSøktePerioderTjeneste { } final List msPerioder; if (bareFarRett(grunnlag) && !grunnlag.getRettOgOmsorg().getAleneomsorg()) { - msPerioder = finnManglendeSøktPeriodeBareFarHarRett(grunnlag).stream().toList(); + msPerioder = + finnManglendeSøktPeriodeBareFarHarRett(grunnlag).stream().toList(); } else if (grunnlag.getSøknad().gjelderAdopsjon()) { msPerioder = List.of(); } else { @@ -47,19 +46,17 @@ public final class ManglendeSøktePerioderTjeneste { private static List fellesFilter(RegelGrunnlag grunnlag, List msPerioder) { return msPerioder.stream() - .map(p -> fjernPerioderFørEndringsdatoVedRevurdering(p, grunnlag)) - .filter(Optional::isPresent) - .map(Optional::get) - .map(ManglendeSøktPeriodeUtil::fjernHelg) - .filter(Optional::isPresent) - .map(Optional::get) - .sorted(Comparator.comparing(Periode::getFom)) - .toList(); + .map(p -> fjernPerioderFørEndringsdatoVedRevurdering(p, grunnlag)) + .filter(Optional::isPresent) + .map(Optional::get) + .map(ManglendeSøktPeriodeUtil::fjernHelg) + .filter(Optional::isPresent) + .map(Optional::get) + .sorted(Comparator.comparing(Periode::getFom)) + .toList(); } - /** - * Gjelder ikke bare far har rett, se egen metode - */ + /** Gjelder ikke bare far har rett, se egen metode */ private static List finnManglendeSøktePerioderITidsprommetForbeholdtMor(RegelGrunnlag grunnlag) { // Må sjekke om annenpart. Gjelder der far først har søkt om aleneomsorg. var behandling = grunnlag.getBehandling(); @@ -69,38 +66,46 @@ private static List fellesFilter(RegelGrunnlag grunnlag, List splitPåTidsperiodeForbeholdtMor(familiehendelse, p).stream()) - .collect(Collectors.toList()); + .flatMap(p -> splitPåTidsperiodeForbeholdtMor(familiehendelse, p).stream()) + .collect(Collectors.toList()); var førsteFellesUttaksdato = fellesUttakBeggeParter.get(0).getFom(); - var sisteFellesUttaksdato = fellesUttakBeggeParter.get(fellesUttakBeggeParter.size() - 1).getTom(); + var sisteFellesUttaksdato = + fellesUttakBeggeParter.get(fellesUttakBeggeParter.size() - 1).getTom(); var tomTidsperiodeForbeholdtMor = tomTidsperiodeForbeholdtMor(familiehendelse); if (behandling.isSøkerMor()) { if (førsteFellesUttaksdato.isAfter(familiehendelse)) { - //Feks mor søker ikke om uke 1-3, men fra uke 4 og utover. Legger til periode for at det skal opprettes msp - fellesUttakBeggeParter.add(new LukketPeriode(familiehendelse.minusDays(1), familiehendelse.minusDays(1))); + // Feks mor søker ikke om uke 1-3, men fra uke 4 og utover. Legger til periode for + // at det skal opprettes msp + fellesUttakBeggeParter.add( + new LukketPeriode(familiehendelse.minusDays(1), familiehendelse.minusDays(1))); } if (sisteFellesUttaksdato.isBefore(tomTidsperiodeForbeholdtMor)) { - //Feks mor søker bare om de første 4 ukene, må ha msp på resten av ukene forbeholdt mor. Legger til periode for at det skal opprettes msp - fellesUttakBeggeParter.add(new LukketPeriode(tomTidsperiodeForbeholdtMor.plusDays(1), tomTidsperiodeForbeholdtMor.plusDays(1))); + // Feks mor søker bare om de første 4 ukene, må ha msp på resten av ukene forbeholdt + // mor. Legger til periode for at det skal opprettes msp + fellesUttakBeggeParter.add(new LukketPeriode( + tomTidsperiodeForbeholdtMor.plusDays(1), tomTidsperiodeForbeholdtMor.plusDays(1))); } } var harForeldrepengerKonto = grunnlag.getKontoer().harStønadskonto(Stønadskontotype.FORELDREPENGER); var stønadskontotype = harForeldrepengerKonto ? Stønadskontotype.FORELDREPENGER : Stønadskontotype.MØDREKVOTE; var fomTidsperiodeForbeholdtMor = fomTidsperiodeForbeholdtMor(familiehendelse); - return finnManglendeMellomliggendePerioderEtterFamilieHendelse(fellesUttakBeggeParter, familiehendelse, stønadskontotype).stream() - .flatMap(p -> split(tomTidsperiodeForbeholdtMor.plusDays(1), p)) - .flatMap(p -> split(fomTidsperiodeForbeholdtMor, p)) - .filter(p -> periodeLiggerITidsrommetForbeholdtMor(grunnlag, p)) - .sorted(Comparator.comparing(OppgittPeriode::getFom)) - .toList(); + return finnManglendeMellomliggendePerioderEtterFamilieHendelse( + fellesUttakBeggeParter, familiehendelse, stønadskontotype) + .stream() + .flatMap(p -> split(tomTidsperiodeForbeholdtMor.plusDays(1), p)) + .flatMap(p -> split(fomTidsperiodeForbeholdtMor, p)) + .filter(p -> periodeLiggerITidsrommetForbeholdtMor(grunnlag, p)) + .sorted(Comparator.comparing(OppgittPeriode::getFom)) + .toList(); } - private static List finnManglendeMellomliggendePerioderEtterFamilieHendelse(List perioder, - LocalDate familieHendelse, - Stønadskontotype stønadskontotype) { - var sortertePerioder = perioder.stream().sorted(Comparator.comparing(LukketPeriode::getFom)).toList(); + private static List finnManglendeMellomliggendePerioderEtterFamilieHendelse( + List perioder, LocalDate familieHendelse, Stønadskontotype stønadskontotype) { + var sortertePerioder = perioder.stream() + .sorted(Comparator.comparing(LukketPeriode::getFom)) + .toList(); List mellomliggendePerioder = new ArrayList<>(); LocalDate mspFom = null; @@ -121,10 +126,8 @@ private static List finnManglendeMellomliggendePerioderEtterFami return mellomliggendePerioder; } - private static Optional finnMsp(LocalDate familieHendelse, - LocalDate mspFom, - LocalDate mspTom, - Stønadskontotype stønadskontotype) { + private static Optional finnMsp( + LocalDate familieHendelse, LocalDate mspFom, LocalDate mspTom, Stønadskontotype stønadskontotype) { if (new LukketPeriode(mspFom, mspTom).overlapper(familieHendelse) && !mspFom.isEqual(familieHendelse)) { var etterSplitt = lagManglendeSøktPeriode(familieHendelse, mspTom, stønadskontotype); return Optional.of(etterSplitt); @@ -141,23 +144,28 @@ private static Stream split(LocalDate dato, OppgittPeriode perio } if (periode.overlapper(dato)) { - return Stream.of(periode.kopiMedNyPeriode(periode.getFom(), dato.minusDays(1)), periode.kopiMedNyPeriode(dato, periode.getTom())); + return Stream.of( + periode.kopiMedNyPeriode(periode.getFom(), dato.minusDays(1)), + periode.kopiMedNyPeriode(dato, periode.getTom())); } return Stream.of(periode); } - private static List splitPåTidsperiodeForbeholdtMor(LocalDate familiehendelse, LukketPeriode periode) { + private static List splitPåTidsperiodeForbeholdtMor( + LocalDate familiehendelse, LukketPeriode periode) { var tomTidsperiodeForbeholdtMor = tomTidsperiodeForbeholdtMor(familiehendelse); - //Regner allerede med at perioden er splittet på familiehendelse + // Regner allerede med at perioden er splittet på familiehendelse if (periode.overlapper(tomTidsperiodeForbeholdtMor) && periode.getTom().isAfter(tomTidsperiodeForbeholdtMor)) { - return List.of(new LukketPeriode(periode.getFom(), tomTidsperiodeForbeholdtMor), - new LukketPeriode(tomTidsperiodeForbeholdtMor.plusDays(1), periode.getTom())); + return List.of( + new LukketPeriode(periode.getFom(), tomTidsperiodeForbeholdtMor), + new LukketPeriode(tomTidsperiodeForbeholdtMor.plusDays(1), periode.getTom())); } var fomTidsperiodeForbeholdtMor = fomTidsperiodeForbeholdtMor(familiehendelse); if (periode.overlapper(fomTidsperiodeForbeholdtMor) && periode.getFom().isBefore(fomTidsperiodeForbeholdtMor)) { - return List.of(new LukketPeriode(periode.getFom(), fomTidsperiodeForbeholdtMor.minusDays(1)), - new LukketPeriode(fomTidsperiodeForbeholdtMor, periode.getTom())); + return List.of( + new LukketPeriode(periode.getFom(), fomTidsperiodeForbeholdtMor.minusDays(1)), + new LukketPeriode(fomTidsperiodeForbeholdtMor, periode.getTom())); } return List.of(periode); } @@ -166,17 +174,20 @@ private static boolean periodeLiggerITidsrommetForbeholdtMor(RegelGrunnlag grunn var familiehendelse = grunnlag.getDatoer().getFamiliehendelse(); var fomTidsperiodeForbeholdtMor = fomTidsperiodeForbeholdtMor(familiehendelse); var tomTidsperiodeForbeholdtMor = tomTidsperiodeForbeholdtMor(familiehendelse); - //Regner med at periodene som kommer inne aldri overlapper med fom og tom forbeholdt mor. Altså at splittingen allerede er gjort + // Regner med at periodene som kommer inne aldri overlapper med fom og tom forbeholdt mor. + // Altså at splittingen allerede er gjort return periode.overlapper(new LukketPeriode(fomTidsperiodeForbeholdtMor, tomTidsperiodeForbeholdtMor)); } static LocalDate tomTidsperiodeForbeholdtMor(LocalDate familiehendelse) { - return familiehendelse.plusWeeks(Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelse)) - .minusDays(1); + return familiehendelse + .plusWeeks(Konfigurasjon.STANDARD.getParameter( + Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, familiehendelse)) + .minusDays(1); } private static LocalDate fomTidsperiodeForbeholdtMor(LocalDate familiehendelse) { - return Virkedager.justerHelgTilMandag( - familiehendelse.minusWeeks(Konfigurasjon.STANDARD.getParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, familiehendelse))); + return Virkedager.justerHelgTilMandag(familiehendelse.minusWeeks( + Konfigurasjon.STANDARD.getParameter(Parametertype.SENEST_UTTAK_FØR_TERMIN_UKER, familiehendelse))); } } diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/MspBfhrUtil.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/MspBfhrUtil.java index 3e8b1a91..e4fb6083 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/MspBfhrUtil.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/MspBfhrUtil.java @@ -8,7 +8,6 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; @@ -17,8 +16,7 @@ final class MspBfhrUtil { - private MspBfhrUtil() { - } + private MspBfhrUtil() {} static List finnManglendeSøktPeriodeBareFarHarRett(RegelGrunnlag grunnlag) { if (grunnlag.getSøknad().gjelderAdopsjon()) { @@ -40,20 +38,20 @@ private static List forAdopsjon(RegelGrunnlag grunnlag) { return fraDato(grunnlag, bareFarSomHarRettMåHaStartdato, tomTidsperiodeForbeholdtMor); } - private static List fraDato(RegelGrunnlag grunnlag, LocalDate påkrevdOppstartsdato, LocalDate ikkeLagHullFørDato) { + private static List fraDato( + RegelGrunnlag grunnlag, LocalDate påkrevdOppstartsdato, LocalDate ikkeLagHullFørDato) { List msp = new ArrayList<>(); - var søktePerioderSomSkalLageHull = grunnlag.getSøknad() - .getOppgittePerioder() - .stream() - .filter(p -> p.getTom().isAfter(ikkeLagHullFørDato)) - .map(p -> new LukketPeriode(p.getFom(), p.getTom())) - .toList(); + var søktePerioderSomSkalLageHull = grunnlag.getSøknad().getOppgittePerioder().stream() + .filter(p -> p.getTom().isAfter(ikkeLagHullFørDato)) + .map(p -> new LukketPeriode(p.getFom(), p.getTom())) + .toList(); if (søktePerioderSomSkalLageHull.isEmpty()) { return List.of(); } var førstePeriodeFom = søktePerioderSomSkalLageHull.get(0).getFom(); if (førstePeriodeFom.isAfter(påkrevdOppstartsdato)) { - var mspFraPåkrevdOppstart = lagManglendeSøktPeriode(påkrevdOppstartsdato, førstePeriodeFom.minusDays(1), Stønadskontotype.FORELDREPENGER); + var mspFraPåkrevdOppstart = lagManglendeSøktPeriode( + påkrevdOppstartsdato, førstePeriodeFom.minusDays(1), Stønadskontotype.FORELDREPENGER); msp.add(mspFraPåkrevdOppstart); } var manglendeMellomliggendePerioder = finnMellomliggende(søktePerioderSomSkalLageHull); @@ -62,7 +60,9 @@ private static List fraDato(RegelGrunnlag grunnlag, LocalDate p } private static List finnMellomliggende(List perioder) { - var sortertePerioder = perioder.stream().sorted(Comparator.comparing(LukketPeriode::getFom)).toList(); + var sortertePerioder = perioder.stream() + .sorted(Comparator.comparing(LukketPeriode::getFom)) + .toList(); List mellomliggendePerioder = new ArrayList<>(); LocalDate mspFom = null; @@ -72,7 +72,8 @@ private static List finnMellomliggende(List perio } else if (mspFom.isBefore(lukketPeriode.getFom())) { var mspTom = lukketPeriode.getFom().minusDays(1); if (Virkedager.beregnAntallVirkedager(mspFom, mspTom) > 0) { - mellomliggendePerioder.add(lagManglendeSøktPeriode(mspFom, mspTom, Stønadskontotype.FORELDREPENGER)); + mellomliggendePerioder.add( + lagManglendeSøktPeriode(mspFom, mspTom, Stønadskontotype.FORELDREPENGER)); } } if (!lukketPeriode.getTom().isBefore(mspFom)) { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/SamtidigUttakUtil.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/SamtidigUttakUtil.java index d885b071..95d94266 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/SamtidigUttakUtil.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/SamtidigUttakUtil.java @@ -8,7 +8,6 @@ import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriodeAktivitet; @@ -21,27 +20,32 @@ public final class SamtidigUttakUtil { - private static final Set KONTI_FOR150 = Set.of(Stønadskontotype.MØDREKVOTE, Stønadskontotype.FEDREKVOTE, FELLESPERIODE); - private static final Set KONTI_KVOTE = Set.of(Stønadskontotype.MØDREKVOTE, Stønadskontotype.FEDREKVOTE); + private static final Set KONTI_FOR150 = + Set.of(Stønadskontotype.MØDREKVOTE, Stønadskontotype.FEDREKVOTE, FELLESPERIODE); + private static final Set KONTI_KVOTE = + Set.of(Stønadskontotype.MØDREKVOTE, Stønadskontotype.FEDREKVOTE); - private SamtidigUttakUtil() { - } + private SamtidigUttakUtil() {} public static boolean annenpartHarSamtidigPeriodeMedUtbetaling(FastsettePeriodeGrunnlag grunnlag) { - return finnOverlappendeAnnenpartPeriode(grunnlag, SamtidigUttakUtil::periodeHarUtbetaling).isPresent(); + return finnOverlappendeAnnenpartPeriode(grunnlag, SamtidigUttakUtil::periodeHarUtbetaling) + .isPresent(); } public static boolean erTapendePeriodeRegel(FastsettePeriodeGrunnlag grunnlag) { - return grunnlag.getAktuellPeriode().getSenestMottattDato().isPresent() && annenpartHarPeriodeMottattSenere(grunnlag, false); + return grunnlag.getAktuellPeriode().getSenestMottattDato().isPresent() + && annenpartHarPeriodeMottattSenere(grunnlag, false); } public static boolean erTapendePeriodeUtregning(FastsettePeriodeGrunnlag grunnlag) { - return grunnlag.getAktuellPeriode().getSenestMottattDato().isPresent() && annenpartHarPeriodeMottattSenere(grunnlag, true); + return grunnlag.getAktuellPeriode().getSenestMottattDato().isPresent() + && annenpartHarPeriodeMottattSenere(grunnlag, true); } public static boolean søktSamtidigUttakForPeriode(FastsettePeriodeGrunnlag grunnlag) { - return grunnlag.getAktuellPeriode().erSøktSamtidigUttak() || finnOverlappendeAnnenpartPeriode(grunnlag, - AnnenpartUttakPeriode::isSamtidigUttak).isPresent(); + return grunnlag.getAktuellPeriode().erSøktSamtidigUttak() + || finnOverlappendeAnnenpartPeriode(grunnlag, AnnenpartUttakPeriode::isSamtidigUttak) + .isPresent(); } public static boolean akseptert200ProsentSamtidigUttak(FastsettePeriodeGrunnlag grunnlag) { @@ -57,7 +61,8 @@ public static boolean merEnn100ProsentSamtidigUttak(FastsettePeriodeGrunnlag gru public static boolean akseptert150ProsentSamtidigUttak(FastsettePeriodeGrunnlag grunnlag) { // Ser etter kombo MK/FK (<= 100%) + Fellesperiode (<= 50%) boolean er150ProsentKonfigurasjon = er150ProsentKonfigurasjon(grunnlag); - if (er150ProsentKonfigurasjon && FELLESPERIODE.equals(grunnlag.getAktuellPeriode().getStønadskontotype())) { + if (er150ProsentKonfigurasjon + && FELLESPERIODE.equals(grunnlag.getAktuellPeriode().getStønadskontotype())) { return !uttaksprosent(grunnlag.getAktuellPeriode()).merEnn50(); } else if (er150ProsentKonfigurasjon) { return !uttaksprosentAnnenpart(grunnlag).merEnn50(); @@ -67,16 +72,20 @@ public static boolean akseptert150ProsentSamtidigUttak(FastsettePeriodeGrunnlag } public static boolean kanReduseresTil100ProsentForRegel(FastsettePeriodeGrunnlag grunnlag) { - // Sjekker om annenparts utbetalingsgrad <=80 slik at gjenværende utbetaling etter reduksjon er >= 20% (i første omgang) - // Dessuten avventer vi tilfelle av gradering og flere aktiviteter - reduser dersom 1 aktivitet eller ikke gradering + // Sjekker om annenparts utbetalingsgrad <=80 slik at gjenværende utbetaling etter reduksjon + // er >= 20% (i første omgang) + // Dessuten avventer vi tilfelle av gradering og flere aktiviteter - reduser dersom 1 + // aktivitet eller ikke gradering return !er150ProsentKonfigurasjon(grunnlag) - && uttaksprosentSomGir100ProsentSamtidigUttak(grunnlag).compareTo(SamtidigUttaksprosent.TWENTY) >= 0 && !( - grunnlag.getAktuellPeriode().getAktiviteter().size() > 1 && grunnlag.getAktuellPeriode().erSøktGradering()); + && uttaksprosentSomGir100ProsentSamtidigUttak(grunnlag).compareTo(SamtidigUttaksprosent.TWENTY) >= 0 + && !(grunnlag.getAktuellPeriode().getAktiviteter().size() > 1 + && grunnlag.getAktuellPeriode().erSøktGradering()); } public static boolean gjelderFlerbarnsdager(FastsettePeriodeGrunnlag grunnlag) { - return grunnlag.getAktuellPeriode().isFlerbarnsdager() || finnOverlappendeAnnenpartPeriode(grunnlag, - AnnenpartUttakPeriode::isFlerbarnsdager).isPresent(); + return grunnlag.getAktuellPeriode().isFlerbarnsdager() + || finnOverlappendeAnnenpartPeriode(grunnlag, AnnenpartUttakPeriode::isFlerbarnsdager) + .isPresent(); } public static boolean gjelderFarRundtFødsel(FastsettePeriodeGrunnlag grunnlag) { @@ -84,24 +93,32 @@ public static boolean gjelderFlerbarnsdager(FastsettePeriodeGrunnlag grunnlag) { if (farRundtFødselIntervall == null) { return false; } - return grunnlag.getAktuellPeriode().erOmsluttetAv(farRundtFødselIntervall) || finnOverlappendeAnnenpartPeriode(grunnlag, - app -> app.erOmsluttetAv(farRundtFødselIntervall)).isPresent(); + return grunnlag.getAktuellPeriode().erOmsluttetAv(farRundtFødselIntervall) + || finnOverlappendeAnnenpartPeriode(grunnlag, app -> app.erOmsluttetAv(farRundtFødselIntervall)) + .isPresent(); } - public static boolean kanRedusereUtbetalingsgradForTapende(FastsettePeriodeGrunnlag periodeGrunnlag, RegelGrunnlag regelGrunnlag) { + public static boolean kanRedusereUtbetalingsgradForTapende( + FastsettePeriodeGrunnlag periodeGrunnlag, RegelGrunnlag regelGrunnlag) { // Er det ikkejusterbar periode, samtidig uttak under 100% eller 150/200% tilfelle? - var kanReduseres = regelGrunnlag.getBehandling().isBerørtBehandling() || erTapendePeriodeUtregning(periodeGrunnlag); - if (!kanReduseres || !annenpartHarSamtidigPeriodeMedUtbetaling(periodeGrunnlag) || !merEnn100ProsentSamtidigUttak(periodeGrunnlag) - || akseptert200ProsentSamtidigUttak(periodeGrunnlag) || akseptert150ProsentSamtidigUttak(periodeGrunnlag)) { + var kanReduseres = + regelGrunnlag.getBehandling().isBerørtBehandling() || erTapendePeriodeUtregning(periodeGrunnlag); + if (!kanReduseres + || !annenpartHarSamtidigPeriodeMedUtbetaling(periodeGrunnlag) + || !merEnn100ProsentSamtidigUttak(periodeGrunnlag) + || akseptert200ProsentSamtidigUttak(periodeGrunnlag) + || akseptert150ProsentSamtidigUttak(periodeGrunnlag)) { return false; } - // Sjekker om annenparts utbetalingsgrad <=80 slik at gjenværende utbetaling etter reduksjon er >= 20% (i første omgang) + // Sjekker om annenparts utbetalingsgrad <=80 slik at gjenværende utbetaling etter reduksjon + // er >= 20% (i første omgang) return kanReduseresTil100ProsentForRegel(periodeGrunnlag); } public static SamtidigUttaksprosent uttaksprosentAnnenpart(FastsettePeriodeGrunnlag grunnlag) { - return finnOverlappendeAnnenpartPeriode(grunnlag, SamtidigUttakUtil::periodeHarUtbetaling).map(SamtidigUttakUtil::getSamtidigUttaksprosent) - .orElse(SamtidigUttaksprosent.ZERO); + return finnOverlappendeAnnenpartPeriode(grunnlag, SamtidigUttakUtil::periodeHarUtbetaling) + .map(SamtidigUttakUtil::getSamtidigUttaksprosent) + .orElse(SamtidigUttaksprosent.ZERO); } private static SamtidigUttaksprosent uttaksprosentSomGir100ProsentSamtidigUttak(FastsettePeriodeGrunnlag grunnlag) { @@ -109,69 +126,79 @@ private static SamtidigUttaksprosent uttaksprosentSomGir100ProsentSamtidigUttak( return SamtidigUttaksprosent.HUNDRED.subtract(annenpart); } - private static boolean annenpartHarPeriodeMottattSenere(FastsettePeriodeGrunnlag grunnlag, boolean forNedjustering) { - var overlappende = finnOverlappendeAnnenpartPeriode(grunnlag, - aup -> ((aup.isInnvilget() && aup.isUtsettelse()) || aup.harUtbetaling()) && (forNedjustering || !aup.isSamtidigUttak())).flatMap( - AnnenpartUttakPeriode::getSenestMottattDato); + private static boolean annenpartHarPeriodeMottattSenere( + FastsettePeriodeGrunnlag grunnlag, boolean forNedjustering) { + var overlappende = finnOverlappendeAnnenpartPeriode( + grunnlag, + aup -> ((aup.isInnvilget() && aup.isUtsettelse()) || aup.harUtbetaling()) + && (forNedjustering || !aup.isSamtidigUttak())) + .flatMap(AnnenpartUttakPeriode::getSenestMottattDato); var periodeMottatt = grunnlag.getAktuellPeriode().getSenestMottattDato().orElseThrow(); if (overlappende.filter(ol -> ol.equals(periodeMottatt)).isPresent()) { - return grunnlag.getAnnenPartSisteSøknadMottattTidspunkt().isAfter(grunnlag.getSisteSøknadMottattTidspunkt()); + return grunnlag.getAnnenPartSisteSøknadMottattTidspunkt() + .isAfter(grunnlag.getSisteSøknadMottattTidspunkt()); } - return overlappende.filter(apmottatt -> apmottatt.isAfter(periodeMottatt)).isPresent(); + return overlappende + .filter(apmottatt -> apmottatt.isAfter(periodeMottatt)) + .isPresent(); } private static boolean er150ProsentKonfigurasjon(FastsettePeriodeGrunnlag grunnlag) { var aktuellPeriode = grunnlag.getAktuellPeriode(); Set annenpartsOverlappKonto = getAnnenpartStønadskontotyper(grunnlag); - if (!annenpartsOverlappKonto.isEmpty() && aktuellPeriode.getStønadskontotype() != null && KONTI_FOR150.contains( - aktuellPeriode.getStønadskontotype())) { - return (KONTI_KVOTE.contains(aktuellPeriode.getStønadskontotype()) && annenpartsOverlappKonto.contains(Stønadskontotype.FELLESPERIODE)) - || (FELLESPERIODE.equals(aktuellPeriode.getStønadskontotype()) && annenpartsOverlappKonto.stream().anyMatch(KONTI_KVOTE::contains)); + if (!annenpartsOverlappKonto.isEmpty() + && aktuellPeriode.getStønadskontotype() != null + && KONTI_FOR150.contains(aktuellPeriode.getStønadskontotype())) { + return (KONTI_KVOTE.contains(aktuellPeriode.getStønadskontotype()) + && annenpartsOverlappKonto.contains(Stønadskontotype.FELLESPERIODE)) + || (FELLESPERIODE.equals(aktuellPeriode.getStønadskontotype()) + && annenpartsOverlappKonto.stream().anyMatch(KONTI_KVOTE::contains)); } return false; } private static Set getAnnenpartStønadskontotyper(FastsettePeriodeGrunnlag grunnlag) { - return finnOverlappendeAnnenpartPeriode(grunnlag, app -> true).map(AnnenpartUttakPeriode::getAktiviteter) - .orElse(Set.of()) - .stream() - .map(AnnenpartUttakPeriodeAktivitet::getStønadskontotype) - .filter(Objects::nonNull) - .filter(KONTI_FOR150::contains) - .collect(Collectors.toSet()); - } - - private static Optional finnOverlappendeAnnenpartPeriode(FastsettePeriodeGrunnlag grunnlag, - Predicate filter) { + return finnOverlappendeAnnenpartPeriode(grunnlag, app -> true) + .map(AnnenpartUttakPeriode::getAktiviteter) + .orElse(Set.of()) + .stream() + .map(AnnenpartUttakPeriodeAktivitet::getStønadskontotype) + .filter(Objects::nonNull) + .filter(KONTI_FOR150::contains) + .collect(Collectors.toSet()); + } + + private static Optional finnOverlappendeAnnenpartPeriode( + FastsettePeriodeGrunnlag grunnlag, Predicate filter) { var aktuellPeriode = grunnlag.getAktuellPeriode(); - return grunnlag.getAnnenPartUttaksperioder() - .stream() - .filter(app -> PerioderUtenHelgUtil.perioderUtenHelgOverlapper(aktuellPeriode, app) && filter.test(app)) - .findFirst(); + return grunnlag.getAnnenPartUttaksperioder().stream() + .filter(app -> PerioderUtenHelgUtil.perioderUtenHelgOverlapper(aktuellPeriode, app) && filter.test(app)) + .findFirst(); } private static SamtidigUttaksprosent uttaksprosent(OppgittPeriode aktuellPeriode) { if (aktuellPeriode.erSøktGradering()) { return SamtidigUttaksprosent.HUNDRED.subtract(aktuellPeriode.getArbeidsprosent()); } - return aktuellPeriode.erSøktSamtidigUttak() ? aktuellPeriode.getSamtidigUttaksprosent() : SamtidigUttaksprosent.HUNDRED; + return aktuellPeriode.erSøktSamtidigUttak() + ? aktuellPeriode.getSamtidigUttaksprosent() + : SamtidigUttaksprosent.HUNDRED; } - private static SamtidigUttaksprosent getSamtidigUttaksprosent(AnnenpartUttakPeriode ap) { if (ap.isUtsettelse() && ap.isInnvilget()) { return SamtidigUttaksprosent.HUNDRED; } - return ap.getAktiviteter() - .stream() - .filter(a -> a.getUtbetalingsgrad().harUtbetaling()) - .min(Comparator.comparing(AnnenpartUttakPeriodeAktivitet::getUtbetalingsgrad)) - .map(a -> new SamtidigUttaksprosent(a.getUtbetalingsgrad().decimalValue())) - .orElse(SamtidigUttaksprosent.ZERO); + return ap.getAktiviteter().stream() + .filter(a -> a.getUtbetalingsgrad().harUtbetaling()) + .min(Comparator.comparing(AnnenpartUttakPeriodeAktivitet::getUtbetalingsgrad)) + .map(a -> new SamtidigUttaksprosent(a.getUtbetalingsgrad().decimalValue())) + .orElse(SamtidigUttaksprosent.ZERO); } private static boolean periodeHarUtbetaling(AnnenpartUttakPeriode periode) { - return periode.getAktiviteter().stream().map(AnnenpartUttakPeriodeAktivitet::getUtbetalingsgrad).anyMatch(Utbetalingsgrad::harUtbetaling); + return periode.getAktiviteter().stream() + .map(AnnenpartUttakPeriodeAktivitet::getUtbetalingsgrad) + .anyMatch(Utbetalingsgrad::harUtbetaling); } - } diff --git a/src/main/resources/nare/fp-uttak-version.properties b/src/main/resources/nare/fp-uttak-version.properties index e5683df8..defbd482 100644 --- a/src/main/resources/nare/fp-uttak-version.properties +++ b/src/main/resources/nare/fp-uttak-version.properties @@ -1 +1 @@ -version=${project.version} \ No newline at end of file +version=${project.version} diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/AdopsjonOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/AdopsjonOrkestreringTest.java index 09539d95..57fb3aaa 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/AdopsjonOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/AdopsjonOrkestreringTest.java @@ -8,9 +8,6 @@ import java.math.BigDecimal; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -28,36 +25,45 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { private final RegelGrunnlag.Builder grunnlagAdopsjon = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) - .behandling(morBehandling()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .inngangsvilkår(oppfyltAlleVilkår()); + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) + .behandling(morBehandling()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .inngangsvilkår(oppfyltAlleVilkår()); // MØDREKVOTE @Test void UT1230_adopsjon_mor_søker_mødrekvote_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad( - søknad(Søknadstype.ADOPSJON, oppgittPeriode(MØDREKVOTE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(søknad( + Søknadstype.ADOPSJON, + oppgittPeriode( + MØDREKVOTE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - MØDREKVOTE, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + MØDREKVOTE, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } // MØDREKVOTE @@ -65,19 +71,28 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1006_adopsjon_mor_søker_mødrekvote_etter_omsorgsovertakelse_men_uten_omsorg() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - MØDREKVOTE, IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + MØDREKVOTE, + IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); } // MØDREKVOTE @@ -85,20 +100,32 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1230_adopsjon_far_søker_overført_mødrekvote_pga_innleggelse_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(OppgittPeriode.forOverføring(MØDREKVOTE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - OverføringÅrsak.INNLEGGELSE, null, null, DokumentasjonVurdering.INNLEGGELSE_ANNEN_FORELDER_GODKJENT))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(OppgittPeriode.forOverføring( + MØDREKVOTE, + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + OverføringÅrsak.INNLEGGELSE, + null, + null, + DokumentasjonVurdering.INNLEGGELSE_ANNEN_FORELDER_GODKJENT))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - MØDREKVOTE, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + MØDREKVOTE, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } // MØDREKVOTE @@ -106,41 +133,59 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1230_adopsjon_far_søker_overført_mødrekvote_pga_sykdom_skade_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(OppgittPeriode.forOverføring(MØDREKVOTE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - OverføringÅrsak.SYKDOM_ELLER_SKADE, null, null, DokumentasjonVurdering.SYKDOM_ANNEN_FORELDER_GODKJENT))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(OppgittPeriode.forOverføring( + MØDREKVOTE, + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + null, + null, + DokumentasjonVurdering.SYKDOM_ANNEN_FORELDER_GODKJENT))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - MØDREKVOTE, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + MØDREKVOTE, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } - // FEDREKVOTE @Test void UT1231_adopsjon_far_søker_fedrekvote_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad( - søknad(Søknadstype.ADOPSJON, oppgittPeriode(FEDREKVOTE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(søknad( + Søknadstype.ADOPSJON, + oppgittPeriode( + FEDREKVOTE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - FEDREKVOTE, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + FEDREKVOTE, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } // FEDREKVOTE @@ -148,20 +193,28 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1030_adopsjon_far_søker_fedrekvote_før_omsorgsovertakelse_men_uten_omsorg() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode( - oppgittPeriode(Stønadskontotype.FEDREKVOTE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FEDREKVOTE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - FEDREKVOTE, IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + FEDREKVOTE, + IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); } // FEDREKVOTE @@ -169,20 +222,32 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1231_adopsjon_mor_søker_overført_fedrekvote_pga_innleggelse_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(OppgittPeriode.forOverføring(FEDREKVOTE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - OverføringÅrsak.INNLEGGELSE, null, null, DokumentasjonVurdering.INNLEGGELSE_ANNEN_FORELDER_GODKJENT))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(OppgittPeriode.forOverføring( + FEDREKVOTE, + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + OverføringÅrsak.INNLEGGELSE, + null, + null, + DokumentasjonVurdering.INNLEGGELSE_ANNEN_FORELDER_GODKJENT))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - FEDREKVOTE, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + FEDREKVOTE, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } // FEDREKVOTE @@ -190,41 +255,61 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1231_adopsjon_mor_søker_overført_fedrekvote_pga_sykdom_skade_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(OppgittPeriode.forOverføring(FEDREKVOTE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - OverføringÅrsak.SYKDOM_ELLER_SKADE, null, null, DokumentasjonVurdering.SYKDOM_ANNEN_FORELDER_GODKJENT))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(OppgittPeriode.forOverføring( + FEDREKVOTE, + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + null, + null, + DokumentasjonVurdering.SYKDOM_ANNEN_FORELDER_GODKJENT))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - FEDREKVOTE, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + FEDREKVOTE, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } - // FELLESPERIODE @Test void UT1235_adopsjon_mor_søker_fellesperiode_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(søknad(Søknadstype.ADOPSJON, - oppgittPeriode(FELLESPERIODE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(søknad( + Søknadstype.ADOPSJON, + oppgittPeriode( + FELLESPERIODE, + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - FELLESPERIODE, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + FELLESPERIODE, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } // FELLESPERIODE @@ -232,19 +317,28 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1046_adopsjon_mor_søker_fellesperiode_etter_omsorgsovertakelse_men_uten_omsorg() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - FELLESPERIODE, IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + FELLESPERIODE, + IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); } // FELLESPERIODE @@ -252,19 +346,28 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1232_adopsjon_far_søker_fellesperiode_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(søknad(Søknadstype.ADOPSJON, - oppgittPeriode(FELLESPERIODE, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(søknad( + Søknadstype.ADOPSJON, + oppgittPeriode( + FELLESPERIODE, + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - FELLESPERIODE, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + FELLESPERIODE, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } // FELLESPERIODE @@ -272,19 +375,28 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1060_adopsjon_far_søker_fellesperiode_etter_omsorgsovertakelse_men_uten_omsorg() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - FELLESPERIODE, IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + FELLESPERIODE, + IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); } // FORELDREPENGER @@ -292,21 +404,34 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1236_adopsjon_mor_søker_foreldrepenger_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); - var grunnlag = grunnlagAdopsjon.kontoer(kontoer) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(false).morHarRett(true).samtykke(true)) - .behandling(morBehandling()) - .søknad(søknad(Søknadstype.ADOPSJON, - oppgittPeriode(FORELDREPENGER, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); + var grunnlag = grunnlagAdopsjon + .kontoer(kontoer) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(false) + .morHarRett(true) + .samtykke(true)) + .behandling(morBehandling()) + .søknad(søknad( + Søknadstype.ADOPSJON, + oppgittPeriode( + FORELDREPENGER, + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - FORELDREPENGER, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + FORELDREPENGER, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } // FORELDREPENGER @@ -314,21 +439,31 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1191_adopsjon_mor_søker_foreldrepenger_etter_omsorgsovertakelse_men_uten_omsorg() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); - var grunnlag = grunnlagAdopsjon.kontoer(kontoer) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); + var grunnlag = grunnlagAdopsjon + .kontoer(kontoer) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - FORELDREPENGER, IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + FORELDREPENGER, + IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); } // FORELDREPENGER @@ -336,21 +471,31 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1234_adopsjon_far_søker_foreldrepenger_før_omsorgsovertakelse() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); - var grunnlag = grunnlagAdopsjon.kontoer(kontoer) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(bareFarRett()) - .behandling(farBehandling()) - .søknad(søknad(Søknadstype.ADOPSJON, - oppgittPeriode(FORELDREPENGER, omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); + var grunnlag = grunnlagAdopsjon + .kontoer(kontoer) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(bareFarRett()) + .behandling(farBehandling()) + .søknad(søknad( + Søknadstype.ADOPSJON, + oppgittPeriode( + FORELDREPENGER, + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato.minusWeeks(1), omsorgsovertakelseDato.minusDays(1), - FORELDREPENGER, IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato.minusWeeks(1), + omsorgsovertakelseDato.minusDays(1), + FORELDREPENGER, + IkkeOppfyltÅrsak.FØR_OMSORGSOVERTAKELSE); } // FORELDREPENGER @@ -358,22 +503,32 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1199_adopsjon_far_søker_foreldrepenger_etter_omsorgsovertakelse_men_uten_omsorg() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); - var grunnlag = grunnlagAdopsjon.arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(bareFarRett().harOmsorg(false)) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); + var grunnlag = grunnlagAdopsjon + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(bareFarRett().harOmsorg(false)) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - FORELDREPENGER, IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + FORELDREPENGER, + IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); } // FORELDREPENGER @@ -381,48 +536,76 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void adopsjon_far_søker_foreldrepenger_etter_omsorgsovertakelse_men_før_uke_7_skal_innvilges() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); - var oppgittPeriode = oppgittPeriode(FORELDREPENGER, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), false, null, - DokumentasjonVurdering.MORS_AKTIVITET_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); + var oppgittPeriode = oppgittPeriode( + FORELDREPENGER, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + false, + null, + DokumentasjonVurdering.MORS_AKTIVITET_GODKJENT); var søknad = new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(oppgittPeriode); - var grunnlag = grunnlagAdopsjon.arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(bareFarRett()) - .behandling(farBehandling()) - .søknad(søknad) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagAdopsjon + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(bareFarRett()) + .behandling(farBehandling()) + .søknad(søknad) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - Perioderesultattype.INNVILGET, FORELDREPENGER); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + Perioderesultattype.INNVILGET, + FORELDREPENGER); } @Test void UT1082_adopsjon_avslag_perioder_forut_for_førsteLovligeUttaksdag() { var omsorgsovertakelseDato = LocalDate.of(2020, 1, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(100)); - var testGrunnlag = grunnlagAdopsjon.arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true).samtykke(true)) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - //Mottatt mer enn 3 mnd etter start - .oppgittPeriode( - OppgittPeriode.forVanligPeriode(FORELDREPENGER, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(1).minusDays(1), null, - false, omsorgsovertakelseDato.plusMonths(4), omsorgsovertakelseDato.plusMonths(4), null, null))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelseDato)) - .build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(100)); + var testGrunnlag = grunnlagAdopsjon + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(true) + .samtykke(true)) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + // Mottatt mer enn 3 mnd etter start + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(1).minusDays(1), + null, + false, + omsorgsovertakelseDato.plusMonths(4), + omsorgsovertakelseDato.plusMonths(4), + null, + null))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelseDato)) + .build(); var resultater = fastsettPerioder(testGrunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(1).minusDays(1), - FORELDREPENGER, IkkeOppfyltÅrsak.SØKNADSFRIST); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(1).minusDays(1), + FORELDREPENGER, + IkkeOppfyltÅrsak.SØKNADSFRIST); } // STEBARNSADOPSJON @@ -430,80 +613,120 @@ class AdopsjonOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas void UT1240_stebarnsadopsjon_far_ikke_omsorg() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - MØDREKVOTE, IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + MØDREKVOTE, + IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); } @Test void UT1241_stebarnsadopsjon_far_omsorg_disponible_dager_og_ingen_gradering() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserManuellBehandlingPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - FEDREKVOTE, null, Manuellbehandlingårsak.STEBARNSADOPSJON); + verifiserManuellBehandlingPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + FEDREKVOTE, + null, + Manuellbehandlingårsak.STEBARNSADOPSJON); } @Test void UT1242_stebarnsadopsjon_far_omsorg_disponible_dager_gradering_og_avklart_periode() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var grunnlag = grunnlagAdopsjon.datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode( - gradertoppgittPeriode(FEDREKVOTE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), BigDecimal.TEN))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) - .build(); + var grunnlag = grunnlagAdopsjon + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(gradertoppgittPeriode( + FEDREKVOTE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + BigDecimal.TEN))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserManuellBehandlingPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - FEDREKVOTE, null, Manuellbehandlingårsak.STEBARNSADOPSJON); + verifiserManuellBehandlingPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + FEDREKVOTE, + null, + Manuellbehandlingårsak.STEBARNSADOPSJON); } @Test void UT1244_stebarnsadopsjon_far_omsorg_ikke_disponible_stønadsdager() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(0)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(1300)); - var grunnlag = grunnlagAdopsjon.kontoer(kontoer) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) - .build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(0)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(1300)); + var grunnlag = grunnlagAdopsjon + .kontoer(kontoer) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelseDato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1)))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserManuellBehandlingPeriode(resultater.get(0).uttakPeriode(), omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2).minusDays(1), - FEDREKVOTE, IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM); + verifiserManuellBehandlingPeriode( + resultater.get(0).uttakPeriode(), + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2).minusDays(1), + FEDREKVOTE, + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ArbeidsforholdPeriodeRegelOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ArbeidsforholdPeriodeRegelOrkestreringTest.java index 8aeadd35..5ecf8ce6 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ArbeidsforholdPeriodeRegelOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ArbeidsforholdPeriodeRegelOrkestreringTest.java @@ -9,9 +9,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; @@ -20,6 +17,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UtsettelseÅrsak; +import org.junit.jupiter.api.Test; class ArbeidsforholdPeriodeRegelOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @@ -30,25 +28,31 @@ void skal_starte_arbeidsforhold_fra_startdato() { var arbeidsforhold2 = AktivitetIdentifikator.annenAktivitet(); var arbeidsforhold3 = AktivitetIdentifikator.forFrilans(); var arbeidsforhold4 = AktivitetIdentifikator.forSelvstendigNæringsdrivende(); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold1, omsorgsovertakelse.minusYears(1))) - //Ingen startdato på arbeidsforholdet skal tolkes som at arbeidsforholdet varer hele uttaket - .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)) - .arbeidsforhold(new Arbeidsforhold(arbeidsforhold3, omsorgsovertakelse.plusWeeks(8))) - .arbeidsforhold(new Arbeidsforhold(arbeidsforhold4, omsorgsovertakelse.plusWeeks(35))); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold1, omsorgsovertakelse.minusYears(1))) + // Ingen startdato på arbeidsforholdet skal tolkes som at arbeidsforholdet + // varer hele uttaket + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold3, omsorgsovertakelse.plusWeeks(8))) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold4, omsorgsovertakelse.plusWeeks(35))); var mødrekvote = oppgittPeriode(MØDREKVOTE, omsorgsovertakelse, omsorgsovertakelse.plusWeeks(40)); - var grunnlag = basicGrunnlag().arbeid(arbeid) - .søknad(søknad(Søknadstype.ADOPSJON, mødrekvote)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)); + var grunnlag = basicGrunnlag() + .arbeid(arbeid) + .søknad(søknad(Søknadstype.ADOPSJON, mødrekvote)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - assertThat(aktiviteterIPeriode(resultat.get(0).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); - assertThat(aktiviteterIPeriode(resultat.get(1).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3); - assertThat(aktiviteterIPeriode(resultat.get(2).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3); - assertThat(aktiviteterIPeriode(resultat.get(3).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3, - arbeidsforhold4); + assertThat(aktiviteterIPeriode(resultat.get(0).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); + assertThat(aktiviteterIPeriode(resultat.get(1).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3); + assertThat(aktiviteterIPeriode(resultat.get(2).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3); + assertThat(aktiviteterIPeriode(resultat.get(3).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3, arbeidsforhold4); } @Test @@ -56,16 +60,24 @@ void nytt_arbeidsforhold_skal_hente_saldo_fra_eksisterende_arbeidsforhold() { var fødselsdato = LocalDate.of(2019, 11, 27); var arbeidsforhold1 = AktivitetIdentifikator.annenAktivitet(); var arbeidsforhold2 = AktivitetIdentifikator.forFrilans(); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)) - .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2, fødselsdato.plusWeeks(8))); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2, fødselsdato.plusWeeks(8))); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote1 = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); - var gradertMødrekvote = gradertoppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), - BigDecimal.valueOf(50), Set.of(arbeidsforhold1)); - var mødrekvote2 = oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(11).minusDays(1)); - var grunnlag = basicGrunnlag().arbeid(arbeid) - .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote1, gradertMødrekvote, mødrekvote2)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)); + var mødrekvote1 = + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); + var gradertMødrekvote = gradertoppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + BigDecimal.valueOf(50), + Set.of(arbeidsforhold1)); + var mødrekvote2 = oppgittPeriode( + MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(11).minusDays(1)); + var grunnlag = basicGrunnlag() + .arbeid(arbeid) + .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote1, gradertMødrekvote, mødrekvote2)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)); var resultat = fastsettPerioder(grunnlag); @@ -73,9 +85,12 @@ void nytt_arbeidsforhold_skal_hente_saldo_fra_eksisterende_arbeidsforhold() { assertThat(aktiviteterIPeriode(resultat.get(0).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1); assertThat(aktiviteterIPeriode(resultat.get(1).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1); assertThat(aktiviteterIPeriode(resultat.get(2).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1); - assertThat(aktiviteterIPeriode(resultat.get(3).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); - assertThat(resultat.get(3).uttakPeriode().getUtbetalingsgrad(arbeidsforhold1)).isEqualTo(Utbetalingsgrad.HUNDRED); - assertThat(resultat.get(3).uttakPeriode().getUtbetalingsgrad(arbeidsforhold2)).isEqualTo(Utbetalingsgrad.HUNDRED); + assertThat(aktiviteterIPeriode(resultat.get(3).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); + assertThat(resultat.get(3).uttakPeriode().getUtbetalingsgrad(arbeidsforhold1)) + .isEqualTo(Utbetalingsgrad.HUNDRED); + assertThat(resultat.get(3).uttakPeriode().getUtbetalingsgrad(arbeidsforhold2)) + .isEqualTo(Utbetalingsgrad.HUNDRED); } @Test @@ -84,63 +99,97 @@ void nytt_arbeidsforhold_skal_hente_saldo_fra_eksisterende_arbeidsforhold() { var arbeidsforhold1 = ARBEIDSFORHOLD; var arbeidsforhold2 = AktivitetIdentifikator.annenAktivitet(); var arbeidsforhold3 = AktivitetIdentifikator.forFrilans(); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)) - .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)) - .arbeidsforhold(new Arbeidsforhold(arbeidsforhold3, fødselsdato.plusWeeks(10))); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold3, fødselsdato.plusWeeks(10))); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote1 = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(8).minusDays(1)); - var gradertMødrekvote = gradertoppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(12).minusDays(1), - BigDecimal.valueOf(50), Set.of(arbeidsforhold1)); - var grunnlag = basicGrunnlag().arbeid(arbeid) - .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote1, gradertMødrekvote)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)); + var mødrekvote1 = + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(8).minusDays(1)); + var gradertMødrekvote = gradertoppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(12).minusDays(1), + BigDecimal.valueOf(50), + Set.of(arbeidsforhold1)); + var grunnlag = basicGrunnlag() + .arbeid(arbeid) + .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote1, gradertMødrekvote)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(6); - assertThat(aktiviteterIPeriode(resultat.get(0).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); - assertThat(aktiviteterIPeriode(resultat.get(1).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); - assertThat(aktiviteterIPeriode(resultat.get(2).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); - assertThat(aktiviteterIPeriode(resultat.get(3).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); - //NYtt arbeidsforhold arver saldo fra arbeidsforhold 1 pga arbeidsforhold 1 har gradert i perioden før - assertThat(aktiviteterIPeriode(resultat.get(4).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3); - assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(arbeidsforhold1)).isEqualTo(new Utbetalingsgrad(50)); - assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(arbeidsforhold2)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(arbeidsforhold3)).isEqualTo(Utbetalingsgrad.HUNDRED); - - //Nytt arbeidsforhold går tomt for dager, arbeidsforhold holder 1 uke til pga gradering - assertThat(aktiviteterIPeriode(resultat.get(5).uttakPeriode())).containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3); - assertThat(resultat.get(5).uttakPeriode().getUtbetalingsgrad(arbeidsforhold1)).isEqualTo(new Utbetalingsgrad(50)); - assertThat(resultat.get(5).uttakPeriode().getUtbetalingsgrad(arbeidsforhold2)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(resultat.get(5).uttakPeriode().getUtbetalingsgrad(arbeidsforhold3)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(aktiviteterIPeriode(resultat.get(0).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); + assertThat(aktiviteterIPeriode(resultat.get(1).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); + assertThat(aktiviteterIPeriode(resultat.get(2).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); + assertThat(aktiviteterIPeriode(resultat.get(3).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2); + // NYtt arbeidsforhold arver saldo fra arbeidsforhold 1 pga arbeidsforhold 1 har gradert i + // perioden før + assertThat(aktiviteterIPeriode(resultat.get(4).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3); + assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(arbeidsforhold1)) + .isEqualTo(new Utbetalingsgrad(50)); + assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(arbeidsforhold2)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(arbeidsforhold3)) + .isEqualTo(Utbetalingsgrad.HUNDRED); + + // Nytt arbeidsforhold går tomt for dager, arbeidsforhold holder 1 uke til pga gradering + assertThat(aktiviteterIPeriode(resultat.get(5).uttakPeriode())) + .containsExactlyInAnyOrder(arbeidsforhold1, arbeidsforhold2, arbeidsforhold3); + assertThat(resultat.get(5).uttakPeriode().getUtbetalingsgrad(arbeidsforhold1)) + .isEqualTo(new Utbetalingsgrad(50)); + assertThat(resultat.get(5).uttakPeriode().getUtbetalingsgrad(arbeidsforhold2)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(5).uttakPeriode().getUtbetalingsgrad(arbeidsforhold3)) + .isEqualTo(Utbetalingsgrad.ZERO); } @Test void nytt_arbeidsforhold_skal_hente_saldo_fra_arbeidsforholdet_som_har_høyest_saldo_på_startdato_2() { - //Testen sjekker om det nye arbeidsforholdet vinner dager på at begge eksisterende arbeidsforhold graderer to uker hver + // Testen sjekker om det nye arbeidsforholdet vinner dager på at begge eksisterende + // arbeidsforhold graderer to uker hver var fødselsdato = LocalDate.of(2019, 11, 27); var arbeidsforhold1 = ARBEIDSFORHOLD; var arbeidsforhold2 = AktivitetIdentifikator.annenAktivitet(); var arbeidsforhold3 = AktivitetIdentifikator.forFrilans(); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)) - .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)) - .arbeidsforhold(new Arbeidsforhold(arbeidsforhold3, fødselsdato.plusWeeks(10))); - var mødrekvote1 = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); - var gradertMødrekvote1 = gradertoppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), - BigDecimal.valueOf(50), Set.of(arbeidsforhold1)); - var gradertMødrekvote2 = gradertoppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(10).minusDays(1), - BigDecimal.valueOf(50), Set.of(arbeidsforhold2)); - var mødrekvote2 = oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1)); - var grunnlag = basicGrunnlag().arbeid(arbeid) - .søknad(søknad(Søknadstype.FØDSEL, mødrekvote1, gradertMødrekvote1, gradertMødrekvote2, mødrekvote2)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold3, fødselsdato.plusWeeks(10))); + var mødrekvote1 = + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); + var gradertMødrekvote1 = gradertoppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + BigDecimal.valueOf(50), + Set.of(arbeidsforhold1)); + var gradertMødrekvote2 = gradertoppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(10).minusDays(1), + BigDecimal.valueOf(50), + Set.of(arbeidsforhold2)); + var mødrekvote2 = oppgittPeriode( + MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1)); + var grunnlag = basicGrunnlag() + .arbeid(arbeid) + .søknad(søknad(Søknadstype.FØDSEL, mødrekvote1, gradertMødrekvote1, gradertMødrekvote2, mødrekvote2)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(5); - //Arver 45 dager, har igjen 50. Nok til en uke. Siste uken skal avslås for tom for dager - assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(arbeidsforhold3)).isEqualTo(Utbetalingsgrad.ZERO); + // Arver 45 dager, har igjen 50. Nok til en uke. Siste uken skal avslås for tom for dager + assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(arbeidsforhold3)) + .isEqualTo(Utbetalingsgrad.ZERO); } @Test @@ -149,10 +198,12 @@ void skal_ikke_ta_hensyn_til_startdato_hvis_bare_ett_arbeidsforhold() { var arbeidsforhold = AktivitetIdentifikator.annenAktivitet(); var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold, fødselsdato.plusWeeks(4))); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1)); - var grunnlag = basicGrunnlag().arbeid(arbeid) - .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)); + var mødrekvote = oppgittPeriode( + MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1)); + var grunnlag = basicGrunnlag() + .arbeid(arbeid) + .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)); var resultat = fastsettPerioder(grunnlag); @@ -167,21 +218,32 @@ void skal_ikke_ta_hensyn_til_startdato_hvis_bare_ett_arbeidsforhold() { var fødsel = LocalDate.of(2018, 10, 26); var tilkommetArbeidsforhold1 = AktivitetIdentifikator.forSelvstendigNæringsdrivende(); var tilkommetArbeidsforhold2 = AktivitetIdentifikator.forFrilans(); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(tilkommetArbeidsforhold1, LocalDate.of(2019, 5, 1))) - .arbeidsforhold(new Arbeidsforhold(tilkommetArbeidsforhold2, LocalDate.of(2019, 6, 10))); - var utsettelseArbeid = utsettelsePeriode(LocalDate.of(2019, 11, 4), LocalDate.of(2019, 12, 6), UtsettelseÅrsak.ARBEID, null, - MORS_AKTIVITET_GODKJENT); - var fpPeriode = oppgittPeriode(FORELDREPENGER, LocalDate.of(2019, 12, 16), LocalDate.of(2020, 1, 3), MORS_AKTIVITET_GODKJENT); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(tilkommetArbeidsforhold1, LocalDate.of(2019, 5, 1))) + .arbeidsforhold(new Arbeidsforhold(tilkommetArbeidsforhold2, LocalDate.of(2019, 6, 10))); + var utsettelseArbeid = utsettelsePeriode( + LocalDate.of(2019, 11, 4), + LocalDate.of(2019, 12, 6), + UtsettelseÅrsak.ARBEID, + null, + MORS_AKTIVITET_GODKJENT); + var fpPeriode = oppgittPeriode( + FORELDREPENGER, LocalDate.of(2019, 12, 16), LocalDate.of(2020, 1, 3), MORS_AKTIVITET_GODKJENT); var søknad = søknad(Søknadstype.FØDSEL, utsettelseArbeid, fpPeriode); - var grunnlag = basicGrunnlag().arbeid(arbeid) - .søknad(søknad) - .rettOgOmsorg(bareFarRett()) - .behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødsel)); + var grunnlag = basicGrunnlag() + .arbeid(arbeid) + .søknad(søknad) + .rettOgOmsorg(bareFarRett()) + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødsel)); var resultat = fastsettPerioder(grunnlag); - //Skal legge inn aktivitet med tidligst startdato hvis alle arbeidsforhold starter etter manglende søkt - assertThat(resultat.get(0).uttakPeriode().getAktiviteter().stream().findFirst().orElseThrow().getIdentifikator()).isEqualTo( - tilkommetArbeidsforhold1); + // Skal legge inn aktivitet med tidligst startdato hvis alle arbeidsforhold starter etter + // manglende søkt + assertThat(resultat.get(0).uttakPeriode().getAktiviteter().stream() + .findFirst() + .orElseThrow() + .getIdentifikator()) + .isEqualTo(tilkommetArbeidsforhold1); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ArbeidsforholdTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ArbeidsforholdTest.java index c853f1ea..ff6415a4 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ArbeidsforholdTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ArbeidsforholdTest.java @@ -4,11 +4,9 @@ import java.math.BigDecimal; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.EndringAvStilling; +import org.junit.jupiter.api.Test; class ArbeidsforholdTest { @@ -27,5 +25,4 @@ void skal_finne_stillingsprosent() { assertThat(arbeid.getStillingsprosent(LocalDate.of(2019, 12, 12))).isEqualTo(BigDecimal.valueOf(50)); assertThat(arbeid.getStillingsprosent(LocalDate.of(2020, 2, 2))).isEqualTo(BigDecimal.valueOf(100)); } - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/AvslagAktivitetskravOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/AvslagAktivitetskravOrkestreringTest.java index 2bdb91d0..06069d2a 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/AvslagAktivitetskravOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/AvslagAktivitetskravOrkestreringTest.java @@ -34,12 +34,6 @@ import java.time.LocalDate; import java.util.List; import java.util.stream.Stream; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; @@ -57,64 +51,87 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; class AvslagAktivitetskravOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { - @ParameterizedTest(name = "Ved mors aktivitet {0} og dokumentasjonvurdering er {1}, forventes resultat {2}") @MethodSource("dokumentasjonOgAvslagKombinasjoner") - void test_kombinasjoner_av_MorsAktivitet_PeriodeMedAvklartMorsAktivitetResultat_og_IkkeOppfyltÅrsak_sammenheng(MorsAktivitet morsAktivitet, - IkkeOppfyltÅrsak ikkeOppfyltÅrsak, - DokumentasjonVurdering dokumentasjonVurdering) { + void test_kombinasjoner_av_MorsAktivitet_PeriodeMedAvklartMorsAktivitetResultat_og_IkkeOppfyltÅrsak_sammenheng( + MorsAktivitet morsAktivitet, + IkkeOppfyltÅrsak ikkeOppfyltÅrsak, + DokumentasjonVurdering dokumentasjonVurdering) { testAvslag(morsAktivitet, ikkeOppfyltÅrsak, dokumentasjonVurdering, true); } @ParameterizedTest(name = "Ved mors aktivitet {0} og dokumentasjonvurdering er {1}, forventes resultat {2}") @MethodSource("dokumentasjonOgAvslagKombinasjoner") - void test_kombinasjoner_av_MorsAktivitet_PeriodeMedAvklartMorsAktivitetResultat_og_IkkeOppfyltÅrsak_fri(MorsAktivitet morsAktivitet, - IkkeOppfyltÅrsak ikkeOppfyltÅrsak, - DokumentasjonVurdering dokumentasjonVurdering) { + void test_kombinasjoner_av_MorsAktivitet_PeriodeMedAvklartMorsAktivitetResultat_og_IkkeOppfyltÅrsak_fri( + MorsAktivitet morsAktivitet, + IkkeOppfyltÅrsak ikkeOppfyltÅrsak, + DokumentasjonVurdering dokumentasjonVurdering) { testAvslag(morsAktivitet, ikkeOppfyltÅrsak, dokumentasjonVurdering, false); } @Test void mor_med_bekreftet_uføretrygd_skal_avslås() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2018, 1, 1)); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)).minsterettDager(20); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)) + .minsterettDager(20); var oppgittPeriode = foreldrepenger(fødselsdato, UFØRE); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo( - InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); - assertThat(fastsattePerioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); + assertThat(fastsattePerioder + .get(1) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test void mor_med_bekreftet_ikke_uføretrygd_skal_avslås() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)).minsterettDager(0); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)) + .minsterettDager(0); var oppgittPeriode = foreldrepenger(fødselsdato, UFØRE); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(false)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(false)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_MOR_IKKE_UFØR); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_MOR_IKKE_UFØR); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test @@ -124,56 +141,81 @@ class AvslagAktivitetskravOrkestreringTest extends FastsettePerioderRegelOrkestr var oppgittPeriode = fellesperiode(fødselsdato, UFØRE, null); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett().morUføretrygd(false)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(beggeRett().morUføretrygd(false)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(0).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.MOR_UFØR); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isFalse(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.MOR_UFØR); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isFalse(); } @Test void mor_med_bekreftet_uføretrygd_skal_gå_til_avslås_mangler_dager_uten_aktivitetskrav() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2018, 1, 1)); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)).utenAktivitetskravDager(20); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)) + .utenAktivitetskravDager(20); var oppgittPeriode = foreldrepenger(fødselsdato, UFØRE); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo( - InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); - assertThat(fastsattePerioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); + assertThat(fastsattePerioder + .get(1) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test void mor_med_bekreftet_ikke_uføretrygd_skal_avslås_dager_uten_aktivitetskrav() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)).utenAktivitetskravDager(0); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)) + .utenAktivitetskravDager(0); var oppgittPeriode = foreldrepenger(fødselsdato, UFØRE); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(false)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(false)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_MOR_IKKE_UFØR); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_MOR_IKKE_UFØR); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test @@ -183,17 +225,23 @@ class AvslagAktivitetskravOrkestreringTest extends FastsettePerioderRegelOrkestr var oppgittPeriode = fellesperiode(fødselsdato, null, MORS_AKTIVITET_IKKE_GODKJENT); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(beggeRett()) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(0).uttakPeriode().getManuellbehandlingårsak()).isEqualTo( - Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test @@ -203,17 +251,23 @@ void ukjent_mors_aktivitet_fellesperiode_manuell_ikke_dokumentert() { var oppgittPeriode = fellesperiode(fødselsdato, null, null); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(beggeRett()) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(0).uttakPeriode().getManuellbehandlingårsak()).isEqualTo( - Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test @@ -223,16 +277,23 @@ void ukjent_mors_aktivitet_fellesperiode_manuell_ikke_dokumentert() { var oppgittPeriode = foreldrepenger(fødselsdato, null); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett()) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); - assertThat(fastsattePerioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); + assertThat(fastsattePerioder + .get(1) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test @@ -240,158 +301,275 @@ void ukjent_mors_aktivitet_fellesperiode_manuell_ikke_dokumentert() { var fødselsdato = LocalDate.of(2022, 9, 1); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 75)).minsterettDager(1); var oppgittPeriode = foreldrepenger(fødselsdato, null); - var utsettelse1 = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16).minusDays(1), UtsettelseÅrsak.ARBEID, - fødselsdato, fødselsdato, null, null); - var utsettelse2 = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(16), fødselsdato.plusWeeks(17).minusDays(1), UtsettelseÅrsak.FRI, - fødselsdato, fødselsdato, null, null); - - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode, utsettelse1, utsettelse2)); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett()) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var utsettelse1 = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(16).minusDays(1), + UtsettelseÅrsak.ARBEID, + fødselsdato, + fødselsdato, + null, + null); + var utsettelse2 = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(16), + fødselsdato.plusWeeks(17).minusDays(1), + UtsettelseÅrsak.FRI, + fødselsdato, + fødselsdato, + null, + null); + + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode, utsettelse1, utsettelse2)); + + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); - assertThat(fastsattePerioder.get(2).uttakPeriode().getManuellbehandlingårsak()).isEqualTo( - Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); - assertThat(fastsattePerioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(BARE_FAR_RETT_IKKE_SØKT); - assertThat(fastsattePerioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); - assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); - assertThat(fastsattePerioder.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); + assertThat(fastsattePerioder.get(2).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); + assertThat(fastsattePerioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(BARE_FAR_RETT_IKKE_SØKT); + assertThat(fastsattePerioder + .get(1) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); + assertThat(fastsattePerioder + .get(2) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); + assertThat(fastsattePerioder + .get(3) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test void kun_far_har_rett() { var fødselsdato = LocalDate.of(2018, 1, 1); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 100)); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10), null, false, - fødselsdato, fødselsdato, UTDANNING, MORS_AKTIVITET_IKKE_DOKUMENTERT); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10), + null, + false, + fødselsdato, + fødselsdato, + UTDANNING, + MORS_AKTIVITET_IKKE_DOKUMENTERT); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett()) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(1); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test void far_søker_utsettelse_sammenhengende_uttak() { var fødselsdato = LocalDate.of(2018, 1, 1); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 100)); - var oppgittPeriode = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10), UtsettelseÅrsak.ARBEID, fødselsdato, - fødselsdato, ARBEID, MORS_AKTIVITET_IKKE_GODKJENT); + var oppgittPeriode = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10), + UtsettelseÅrsak.ARBEID, + fødselsdato, + fødselsdato, + ARBEID, + MORS_AKTIVITET_IKKE_GODKJENT); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(true)) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett()) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(true)) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(1); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } @Test void far_søker_utsettelse() { var fødselsdato = LocalDate.of(2018, 1, 1); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 100)); - var oppgittPeriode = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10), UtsettelseÅrsak.ARBEID, fødselsdato, - fødselsdato, ARBEID, MORS_AKTIVITET_IKKE_GODKJENT); + var oppgittPeriode = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10), + UtsettelseÅrsak.ARBEID, + fødselsdato, + fødselsdato, + ARBEID, + MORS_AKTIVITET_IKKE_GODKJENT); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett()) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling()) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(1); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isTrue(); } private Kontoer.Builder kontoerMedFellesperiode() { - return new Kontoer.Builder().konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(50)); + return new Kontoer.Builder() + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(50)); } private OppgittPeriode foreldrepenger(LocalDate fødselsdato, MorsAktivitet morsAktivitet) { - return OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(15).minusDays(1), null, false, - fødselsdato, fødselsdato, morsAktivitet, null); + return OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(15).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + morsAktivitet, + null); } - private OppgittPeriode fellesperiode(LocalDate fødselsdato, MorsAktivitet morsAktivitet, DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(FELLESPERIODE, fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(15).minusDays(1), null, false, - fødselsdato, fødselsdato, morsAktivitet, dokumentasjonVurdering); + private OppgittPeriode fellesperiode( + LocalDate fødselsdato, MorsAktivitet morsAktivitet, DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forVanligPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(7), + fødselsdato.plusWeeks(15).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + morsAktivitet, + dokumentasjonVurdering); } private static Stream dokumentasjonOgAvslagKombinasjoner() { - return Stream.of(Arguments.of(ARBEID, AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), - Arguments.of(ARBEID, AKTIVITETSKRAVET_ARBEID_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), - - Arguments.of(SYK, AKTIVITETSKRAVET_SYKDOM_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), - Arguments.of(SYK, AKTIVITETSKRAVET_SYKDOM_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), - - Arguments.of(INNLAGT, AKTIVITETSKRAVET_INNLEGGELSE_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), - Arguments.of(INNLAGT, AKTIVITETSKRAVET_INNLEGGELSE_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), - - Arguments.of(UTDANNING, AKTIVITETSKRAVET_UTDANNING_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), - Arguments.of(UTDANNING, AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), - - Arguments.of(KVALPROG, AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), - Arguments.of(KVALPROG, AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), - - Arguments.of(INTROPROG, AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), - Arguments.of(INTROPROG, AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), - - Arguments.of(ARBEID_OG_UTDANNING, AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), - Arguments.of(ARBEID_OG_UTDANNING, AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT)); + return Stream.of( + Arguments.of(ARBEID, AKTIVITETSKRAVET_ARBEID_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), + Arguments.of(ARBEID, AKTIVITETSKRAVET_ARBEID_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), + Arguments.of(SYK, AKTIVITETSKRAVET_SYKDOM_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), + Arguments.of(SYK, AKTIVITETSKRAVET_SYKDOM_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), + Arguments.of(INNLAGT, AKTIVITETSKRAVET_INNLEGGELSE_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), + Arguments.of(INNLAGT, AKTIVITETSKRAVET_INNLEGGELSE_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), + Arguments.of(UTDANNING, AKTIVITETSKRAVET_UTDANNING_IKKE_OPPFYLT, MORS_AKTIVITET_IKKE_GODKJENT), + Arguments.of(UTDANNING, AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT, MORS_AKTIVITET_IKKE_DOKUMENTERT), + Arguments.of( + KVALPROG, + AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_OPPFYLT, + MORS_AKTIVITET_IKKE_GODKJENT), + Arguments.of( + KVALPROG, + AKTIVITETSKRAVET_DELTAKELSE_KVALIFISERINGSPROGRAM_IKKE_DOKUMENTERT, + MORS_AKTIVITET_IKKE_DOKUMENTERT), + Arguments.of( + INTROPROG, + AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_OPPFYLT, + MORS_AKTIVITET_IKKE_GODKJENT), + Arguments.of( + INTROPROG, + AKTIVITETSKRAVET_DELTAKELSE_INTRODUKSJONSPROGRAM_IKKE_DOKUMENTERT, + MORS_AKTIVITET_IKKE_DOKUMENTERT), + Arguments.of( + ARBEID_OG_UTDANNING, + AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_OPPFYLT, + MORS_AKTIVITET_IKKE_GODKJENT), + Arguments.of( + ARBEID_OG_UTDANNING, + AKTIVITETSKRAVET_KOMBINASJON_ARBEID_UTDANNING_IKKE_DOKUMENTERT, + MORS_AKTIVITET_IKKE_DOKUMENTERT)); } - private void testAvslag(MorsAktivitet morsAktivitet, - IkkeOppfyltÅrsak ikkeOppfyltÅrsak, - DokumentasjonVurdering dokumentasjonVurdering, - boolean sammenhengendeUttak) { + private void testAvslag( + MorsAktivitet morsAktivitet, + IkkeOppfyltÅrsak ikkeOppfyltÅrsak, + DokumentasjonVurdering dokumentasjonVurdering, + boolean sammenhengendeUttak) { var fødselsdato = LocalDate.of(2018, 1, 1); var kontoer = kontoerMedFellesperiode(); var oppgittPeriode = fellesperiode(fødselsdato, morsAktivitet, dokumentasjonVurdering); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(sammenhengendeUttak)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(sammenhengendeUttak)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(beggeRett()) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(1); - verifiserAvslåttPeriode(fastsattePerioder.get(0).uttakPeriode(), fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(15).minusDays(1), - FELLESPERIODE, ikkeOppfyltÅrsak); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isEqualTo(sammenhengendeUttak); + verifiserAvslåttPeriode( + fastsattePerioder.get(0).uttakPeriode(), + fødselsdato.plusWeeks(7), + fødselsdato.plusWeeks(15).minusDays(1), + FELLESPERIODE, + ikkeOppfyltÅrsak); + assertThat(fastsattePerioder + .get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD) + .merEnn0()) + .isEqualTo(sammenhengendeUttak); } - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/DelRegelTestUtil.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/DelRegelTestUtil.java index d1b284bb..48b850b2 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/DelRegelTestUtil.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/DelRegelTestUtil.java @@ -4,7 +4,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Set; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.DokumentasjonVurdering; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode; @@ -23,30 +22,32 @@ final class DelRegelTestUtil { private static final FastsettePeriodeRegel REGEL = new FastsettePeriodeRegel(); - private DelRegelTestUtil() { - } + private DelRegelTestUtil() {} static FastsettePerioderRegelresultat kjørRegel(OppgittPeriode oppgittPeriode, RegelGrunnlag grunnlag) { return kjørRegel(oppgittPeriode, grunnlag, List.of()); } - static FastsettePerioderRegelresultat kjørRegel(OppgittPeriode oppgittPeriode, - RegelGrunnlag grunnlag, - List søkersFastsattePerioder) { - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(søkersFastsattePerioder, List.of(), grunnlag, - oppgittPeriode.getFom()); + static FastsettePerioderRegelresultat kjørRegel( + OppgittPeriode oppgittPeriode, RegelGrunnlag grunnlag, List søkersFastsattePerioder) { + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + søkersFastsattePerioder, List.of(), grunnlag, oppgittPeriode.getFom()); oppgittPeriode.setAktiviteter(grunnlag.getArbeid().getAktiviteter()); - var farRundtFødselIntervall = FarUttakRundtFødsel.utledFarsPeriodeRundtFødsel(grunnlag).orElse(null); - return new FastsettePerioderRegelresultat(REGEL.evaluer( - new FastsettePeriodeGrunnlagImpl(grunnlag, farRundtFødselIntervall, SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag), + var farRundtFødselIntervall = + FarUttakRundtFødsel.utledFarsPeriodeRundtFødsel(grunnlag).orElse(null); + return new FastsettePerioderRegelresultat(REGEL.evaluer(new FastsettePeriodeGrunnlagImpl( + grunnlag, + farRundtFødselIntervall, + SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag), oppgittPeriode))); } - static OppgittPeriode overføringsperiode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - OverføringÅrsak årsak, - DokumentasjonVurdering dokumentasjonVurdering) { + static OppgittPeriode overføringsperiode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + OverføringÅrsak årsak, + DokumentasjonVurdering dokumentasjonVurdering) { return OppgittPeriode.forOverføring(stønadskontotype, fom, tom, årsak, null, null, dokumentasjonVurdering); } @@ -54,41 +55,56 @@ static OppgittPeriode gradertPeriode(Stønadskontotype stønadskontotype, LocalD return gradertPeriode(stønadskontotype, fom, tom, Set.of(AktivitetIdentifikator.forFrilans())); } - static OppgittPeriode gradertPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - Set gradertAktiviteter) { + static OppgittPeriode gradertPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + Set gradertAktiviteter) { return gradertPeriode(stønadskontotype, fom, tom, gradertAktiviteter, null); } - static OppgittPeriode gradertPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - Set gradertAktiviteter, - DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forGradering(stønadskontotype, fom, tom, BigDecimal.TEN, null, false, gradertAktiviteter, null, null, null, - dokumentasjonVurdering); + static OppgittPeriode gradertPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + Set gradertAktiviteter, + DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forGradering( + stønadskontotype, + fom, + tom, + BigDecimal.TEN, + null, + false, + gradertAktiviteter, + null, + null, + null, + dokumentasjonVurdering); } static OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, LocalDate fom, LocalDate tom) { return oppgittPeriode(stønadskontotype, fom, tom, null); } - static OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(stønadskontotype, fom, tom, null, false, null, null, null, dokumentasjonVurdering); + static OppgittPeriode oppgittPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forVanligPeriode( + stønadskontotype, fom, tom, null, false, null, null, null, dokumentasjonVurdering); } static OppgittPeriode oppholdPeriode(LocalDate fom, LocalDate tom, OppholdÅrsak årsak) { return OppgittPeriode.forOpphold(fom, tom, årsak, null, null); } - static OppgittPeriode utsettelsePeriode(LocalDate fom, - LocalDate tom, - UtsettelseÅrsak utsettelsesÅrsak, - DokumentasjonVurdering dokumentasjonVurdering) { + static OppgittPeriode utsettelsePeriode( + LocalDate fom, + LocalDate tom, + UtsettelseÅrsak utsettelsesÅrsak, + DokumentasjonVurdering dokumentasjonVurdering) { return OppgittPeriode.forUtsettelse(fom, tom, utsettelsesÅrsak, null, null, null, dokumentasjonVurdering); } } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Endringss\303\270knadOrkestreringTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Endringss\303\270knadOrkestreringTest.java" index 9165fd07..18cb7033 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Endringss\303\270knadOrkestreringTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Endringss\303\270knadOrkestreringTest.java" @@ -4,9 +4,6 @@ import java.time.LocalDate; import java.util.List; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -21,6 +18,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Vedtak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; +import org.junit.jupiter.api.Test; class EndringssøknadOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @@ -29,24 +27,35 @@ void skal_trekke_dager_for_perioder_i_vedtak() { var fødselsdato = LocalDate.of(2020, 1, 16); var endringsdato = fødselsdato.plusWeeks(6); var aktivitet = AktivitetIdentifikator.forFrilans(); - var vedtaksperiode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato, endringsdato.minusDays(1)) - .periodeResultatType(Perioderesultattype.INNVILGET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(30), Stønadskontotype.MØDREKVOTE, aktivitet))); + var vedtaksperiode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato, endringsdato.minusDays(1)) + .periodeResultatType(Perioderesultattype.INNVILGET) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(30), Stønadskontotype.MØDREKVOTE, aktivitet))); var vedtak = new Vedtak.Builder().leggTilPeriode(vedtaksperiode); var revurdering = new Revurdering.Builder().endringsdato(endringsdato).gjeldendeVedtak(vedtak); - var søknadOm10UkerMødrekvote = søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.MØDREKVOTE, endringsdato, endringsdato.plusWeeks(10).minusDays(1))); - var grunnlag = basicGrunnlagMor(fødselsdato).revurdering(revurdering) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(75))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitet))) - .søknad(søknadOm10UkerMødrekvote); + var søknadOm10UkerMødrekvote = søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + endringsdato, + endringsdato.plusWeeks(10).minusDays(1))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .revurdering(revurdering) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder() + .type(Stønadskontotype.MØDREKVOTE) + .trekkdager(75))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitet))) + .søknad(søknadOm10UkerMødrekvote); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isNotEqualTo(Perioderesultattype.INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(resultat.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); } @Test @@ -55,32 +64,45 @@ void skal_trekke_dager_for_perioder_i_vedtak() { var aktivitet1 = AktivitetIdentifikator.forFrilans(); var aktivitet2 = AktivitetIdentifikator.forSelvstendigNæringsdrivende(); var tilkommetAktivitet1 = AktivitetIdentifikator.forArbeid(new Orgnummer("123"), null); - var opprinnligUttakAktivitet1 = new FastsattUttakPeriodeAktivitet(new Trekkdager(30), Stønadskontotype.MØDREKVOTE, aktivitet1); - var opprinnligUttakAktivitet2 = new FastsattUttakPeriodeAktivitet(new Trekkdager(20), Stønadskontotype.MØDREKVOTE, aktivitet2); - var vedtaksperiode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) - .periodeResultatType(Perioderesultattype.INNVILGET) - .aktiviteter(List.of(opprinnligUttakAktivitet1, opprinnligUttakAktivitet2)); + var opprinnligUttakAktivitet1 = + new FastsattUttakPeriodeAktivitet(new Trekkdager(30), Stønadskontotype.MØDREKVOTE, aktivitet1); + var opprinnligUttakAktivitet2 = + new FastsattUttakPeriodeAktivitet(new Trekkdager(20), Stønadskontotype.MØDREKVOTE, aktivitet2); + var vedtaksperiode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) + .periodeResultatType(Perioderesultattype.INNVILGET) + .aktiviteter(List.of(opprinnligUttakAktivitet1, opprinnligUttakAktivitet2)); var vedtak = new Vedtak.Builder().leggTilPeriode(vedtaksperiode); - var revurdering = new Revurdering.Builder().endringsdato(fødselsdato.plusWeeks(6)).gjeldendeVedtak(vedtak); - var søknadOm12UkerMødrekvote = søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(18).minusDays(1))); - var grunnlag = basicGrunnlagMor(fødselsdato).revurdering(revurdering) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(75))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitet1)) - .arbeidsforhold(new Arbeidsforhold(aktivitet2)) - .arbeidsforhold(new Arbeidsforhold(tilkommetAktivitet1, fødselsdato.plusWeeks(8)))) - .søknad(søknadOm12UkerMødrekvote); + var revurdering = + new Revurdering.Builder().endringsdato(fødselsdato.plusWeeks(6)).gjeldendeVedtak(vedtak); + var søknadOm12UkerMødrekvote = søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(18).minusDays(1))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .revurdering(revurdering) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder() + .type(Stønadskontotype.MØDREKVOTE) + .trekkdager(75))) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(aktivitet1)) + .arbeidsforhold(new Arbeidsforhold(aktivitet2)) + .arbeidsforhold(new Arbeidsforhold(tilkommetAktivitet1, fødselsdato.plusWeeks(8)))) + .søknad(søknadOm12UkerMødrekvote); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //Knekk pga nytt arbeidsforhold + // Knekk pga nytt arbeidsforhold assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //aktivitet1 går tom for dager + // aktivitet1 går tom for dager assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //aktivitet2 og tilkommet går tom for dager + // aktivitet2 og tilkommet går tom for dager assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //alle arbeidsforhold tom for dager + // alle arbeidsforhold tom for dager assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeRegelTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeRegelTest.java index f4443041..d974a3f8 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeRegelTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePeriodeRegelTest.java @@ -2,9 +2,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.regelflyt.FastsettePeriodeRegel; +import org.junit.jupiter.api.Test; class FastsettePeriodeRegelTest { diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestreringTestBase.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestreringTestBase.java index 947b6208..8eda6934 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestreringTestBase.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestreringTestBase.java @@ -12,7 +12,6 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -39,24 +38,27 @@ abstract class FastsettePerioderRegelOrkestreringTestBase { static final AktivitetIdentifikator ARBEIDSFORHOLD = ARBEIDSFORHOLD_1; - private final FastsettePerioderRegelOrkestrering fastsettePerioderRegelOrkestrering = new FastsettePerioderRegelOrkestrering(); + private final FastsettePerioderRegelOrkestrering fastsettePerioderRegelOrkestrering = + new FastsettePerioderRegelOrkestrering(); - void verifiserPeriode(UttakPeriode periode, - LocalDate forventetFom, - LocalDate forventetTom, - Perioderesultattype forventetResultat, - Stønadskontotype stønadskontotype) { + void verifiserPeriode( + UttakPeriode periode, + LocalDate forventetFom, + LocalDate forventetTom, + Perioderesultattype forventetResultat, + Stønadskontotype stønadskontotype) { assertThat(periode.getFom()).isEqualTo(forventetFom); assertThat(periode.getTom()).isEqualTo(forventetTom); assertThat(periode.getPerioderesultattype()).isEqualTo(forventetResultat); assertThat(periode.getStønadskontotype()).isEqualTo(stønadskontotype); } - void verifiserAvslåttPeriode(UttakPeriode periode, - LocalDate forventetFom, - LocalDate forventetTom, - Stønadskontotype stønadskontotype, - IkkeOppfyltÅrsak ikkeOppfyltÅrsak) { + void verifiserAvslåttPeriode( + UttakPeriode periode, + LocalDate forventetFom, + LocalDate forventetTom, + Stønadskontotype stønadskontotype, + IkkeOppfyltÅrsak ikkeOppfyltÅrsak) { assertThat(periode.getFom()).isEqualTo(forventetFom); assertThat(periode.getTom()).isEqualTo(forventetTom); assertThat(periode.getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); @@ -64,29 +66,30 @@ void verifiserPeriode(UttakPeriode periode, assertThat(periode.getPeriodeResultatÅrsak()).isEqualTo(ikkeOppfyltÅrsak); } - RegelGrunnlag.Builder basicGrunnlag() { return RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .behandling(morBehandling()) - .kontoer(defaultKontoer()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .inngangsvilkår(oppfyltAlleVilkår()); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .behandling(morBehandling()) + .kontoer(defaultKontoer()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .inngangsvilkår(oppfyltAlleVilkår()); } Kontoer.Builder defaultKontoer() { - return new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(15)) - .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130)); - } - - void verifiserManuellBehandlingPeriode(UttakPeriode periode, - LocalDate forventetFom, - LocalDate forventetTom, - Stønadskontotype stønadskontotype, - IkkeOppfyltÅrsak ikkeOppfyltÅrsak, - Manuellbehandlingårsak manuellbehandlingårsak) { + return new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(15)) + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130)); + } + + void verifiserManuellBehandlingPeriode( + UttakPeriode periode, + LocalDate forventetFom, + LocalDate forventetTom, + Stønadskontotype stønadskontotype, + IkkeOppfyltÅrsak ikkeOppfyltÅrsak, + Manuellbehandlingårsak manuellbehandlingårsak) { assertThat(periode.getFom()).isEqualTo(forventetFom); assertThat(periode.getTom()).isEqualTo(forventetTom); assertThat(periode.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); @@ -107,38 +110,56 @@ OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, LocalDate fom return oppgittPeriode(stønadskontotype, fom, tom, false, null); } - OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - boolean flerbarnsdager, - SamtidigUttaksprosent samtidigUttaksprosent) { + OppgittPeriode oppgittPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + boolean flerbarnsdager, + SamtidigUttaksprosent samtidigUttaksprosent) { return oppgittPeriode(stønadskontotype, fom, tom, flerbarnsdager, samtidigUttaksprosent, null); } - OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - boolean flerbarnsdager, - SamtidigUttaksprosent samtidigUttaksprosent, - DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(stønadskontotype, fom, tom, samtidigUttaksprosent, flerbarnsdager, null, null, null, - dokumentasjonVurdering); - } - - OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, LocalDate fom, LocalDate tom, DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(stønadskontotype, fom, tom, null, false, null, null, null, dokumentasjonVurdering); - } - - OppgittPeriode gradertoppgittPeriode(Stønadskontotype stønadskontotype, LocalDate fom, LocalDate tom, BigDecimal arbeidsprosent) { + OppgittPeriode oppgittPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + boolean flerbarnsdager, + SamtidigUttaksprosent samtidigUttaksprosent, + DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forVanligPeriode( + stønadskontotype, + fom, + tom, + samtidigUttaksprosent, + flerbarnsdager, + null, + null, + null, + dokumentasjonVurdering); + } + + OppgittPeriode oppgittPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forVanligPeriode( + stønadskontotype, fom, tom, null, false, null, null, null, dokumentasjonVurdering); + } + + OppgittPeriode gradertoppgittPeriode( + Stønadskontotype stønadskontotype, LocalDate fom, LocalDate tom, BigDecimal arbeidsprosent) { return gradertoppgittPeriode(stønadskontotype, fom, tom, arbeidsprosent, Set.of(ARBEIDSFORHOLD_1)); } - OppgittPeriode gradertoppgittPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - BigDecimal arbeidsprosent, - Set gradertAktiviteter) { - return OppgittPeriode.forGradering(stønadskontotype, fom, tom, arbeidsprosent, null, false, gradertAktiviteter, null, null, null, null); + OppgittPeriode gradertoppgittPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + BigDecimal arbeidsprosent, + Set gradertAktiviteter) { + return OppgittPeriode.forGradering( + stønadskontotype, fom, tom, arbeidsprosent, null, false, gradertAktiviteter, null, null, null, null); } RegelGrunnlag.Builder basicGrunnlagMor(LocalDate fødselsdato) { @@ -173,20 +194,30 @@ RettOgOmsorg.Builder bareFarRett() { return new RettOgOmsorg.Builder().samtykke(true).morHarRett(false).farHarRett(true); } - OppgittPeriode utsettelsePeriode(LocalDate fom, LocalDate tom, UtsettelseÅrsak utsettelseÅrsak, DokumentasjonVurdering dokumentasjonVurdering) { + OppgittPeriode utsettelsePeriode( + LocalDate fom, + LocalDate tom, + UtsettelseÅrsak utsettelseÅrsak, + DokumentasjonVurdering dokumentasjonVurdering) { return utsettelsePeriode(fom, tom, utsettelseÅrsak, null, dokumentasjonVurdering); } - OppgittPeriode utsettelsePeriode(LocalDate fom, - LocalDate tom, - UtsettelseÅrsak utsettelseÅrsak, - MorsAktivitet morsAktivitet, - DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forUtsettelse(fom, tom, utsettelseÅrsak, null, null, morsAktivitet, dokumentasjonVurdering); + OppgittPeriode utsettelsePeriode( + LocalDate fom, + LocalDate tom, + UtsettelseÅrsak utsettelseÅrsak, + MorsAktivitet morsAktivitet, + DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forUtsettelse( + fom, tom, utsettelseÅrsak, null, null, morsAktivitet, dokumentasjonVurdering); } Inngangsvilkår.Builder oppfyltAlleVilkår() { - return new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true); + return new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true); } RettOgOmsorg.Builder aleneomsorg() { @@ -202,6 +233,8 @@ List fastsettPerioder(RegelGrunnlag.Builder grunnlag) } Set aktiviteterIPeriode(UttakPeriode uttakPeriode) { - return uttakPeriode.getAktiviteter().stream().map(a -> a.getIdentifikator()).collect(Collectors.toSet()); + return uttakPeriode.getAktiviteter().stream() + .map(a -> a.getIdentifikator()) + .collect(Collectors.toSet()); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FedrekvoteDelregelTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FedrekvoteDelregelTest.java index 29afb216..854ceb20 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FedrekvoteDelregelTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FedrekvoteDelregelTest.java @@ -10,9 +10,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -34,6 +31,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.UtfallType; +import org.junit.jupiter.api.Test; class FedrekvoteDelregelTest { @@ -41,8 +39,12 @@ class FedrekvoteDelregelTest { void fedrekvote_etter_6_uker_blir_innvilget() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittPeriode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(fedrekvoteKonto(10 * 5)).build(); + var oppgittPeriode = oppgittPeriode( + fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(10 * 5)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -59,7 +61,10 @@ private OppgittPeriode oppgittPeriode(LocalDate fom, LocalDate tom) { var oppgittPeriode = oppgittPeriode(fødselsdato.minusWeeks(5), fødselsdato.minusWeeks(1)); var kontoer = fedrekvoteKonto(10 * 5); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(kontoer).build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -71,14 +76,19 @@ private OppgittPeriode oppgittPeriode(LocalDate fom, LocalDate tom) { void UT1292_fedrekvote_uten_at_mor_har_rett_blir_avslått() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittPeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9).minusDays(1)); + var oppgittPeriode = oppgittPeriode( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9).minusDays(1)); var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 10 * 5)); var arbeidsforhold = new Arbeidsforhold(ARBEIDSFORHOLD_1); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).farHarRett(true).samtykke(true)) - .søknad(søknad(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) - .build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(false) + .farHarRett(true) + .samtykke(true)) + .søknad(søknad(oppgittPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -94,13 +104,18 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) void fedrekvote_bli_avslått_når_søker_ikke_har_omsorg() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittPeriode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)); + var oppgittPeriode = oppgittPeriode( + fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)); var kontoer = fedrekvoteKonto(10 * 5); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg( - new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(fødselssøknadMedEnPeriode(oppgittPeriode)) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(fødselssøknadMedEnPeriode(oppgittPeriode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -111,15 +126,19 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) void UT1025_far_førUke7_etterTermin_utenGyldigGrunn_ikkeOmsorg_flerbarnsdager() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(FEDREKVOTE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4), null, true, null, null, - null, null); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + FEDREKVOTE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4), null, true, null, null, null, null); var arbeidsforhold = new Arbeidsforhold(ARBEIDSFORHOLD_1); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg( - new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(fødselssøknadMedEnPeriode(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) - .kontoer(fedrekvoteOgFlerbarnsdagerKonto(1000, 85)) - .build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(fødselssøknadMedEnPeriode(oppgittPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) + .kontoer(fedrekvoteOgFlerbarnsdagerKonto(1000, 85)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -138,9 +157,13 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = oppgittPeriode(fom, tom); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(kontoer).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -148,7 +171,8 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) assertThat(regelresultat.trekkDagerFraSaldo()).isTrue(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.getUtfallType()).isEqualTo(UtfallType.MANUELL_BEHANDLING); - assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT); + assertThat(regelresultat.getAvklaringÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT); assertThat(regelresultat.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); } @@ -159,9 +183,13 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = overføringsperiode(FEDREKVOTE, fom, tom, OverføringÅrsak.INNLEGGELSE, null); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(kontoer).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -169,7 +197,8 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) assertThat(regelresultat.trekkDagerFraSaldo()).isFalse(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.getUtfallType()).isEqualTo(UtfallType.AVSLÅTT); - assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_INNLEGGELSE_IKKE_OPPFYLT); + assertThat(regelresultat.getAvklaringÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_INNLEGGELSE_IKKE_OPPFYLT); } @Test @@ -179,9 +208,13 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = overføringsperiode(FEDREKVOTE, fom, tom, OverføringÅrsak.SYKDOM_ELLER_SKADE, null); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(kontoer).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -189,7 +222,8 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) assertThat(regelresultat.trekkDagerFraSaldo()).isFalse(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.getUtfallType()).isEqualTo(UtfallType.AVSLÅTT); - assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT); + assertThat(regelresultat.getAvklaringÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT); } @Test @@ -199,9 +233,13 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = overføringsperiode(FEDREKVOTE, fom, tom, OverføringÅrsak.ALENEOMSORG, null); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(kontoer).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -219,9 +257,13 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = overføringsperiode(FEDREKVOTE, fom, tom, OverføringÅrsak.ANNEN_FORELDER_IKKE_RETT, null); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(kontoer).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -236,9 +278,12 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) void UT1026_far_førUke7_etterTermin_gyldigGrunn_omsorg_disponibleDager_ikkeGradert() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = DelRegelTestUtil.oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4), - SYKDOM_ANNEN_FORELDER_GODKJENT); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(fedrekvoteKonto(1000)).build(); + var oppgittPeriode = DelRegelTestUtil.oppgittPeriode( + FEDREKVOTE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4), SYKDOM_ANNEN_FORELDER_GODKJENT); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(1000)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -249,8 +294,12 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) void UT1217_far_førUke7_etterTermin_gyldigGrunn_omsorg_disponibleDager_gradert_avklart() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = gradertPeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4), SYKDOM_ANNEN_FORELDER_GODKJENT); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(fedrekvoteKonto(1000)).build(); + var oppgittPeriode = + gradertPeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4), SYKDOM_ANNEN_FORELDER_GODKJENT); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(1000)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -258,7 +307,8 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) } private OppgittPeriode gradertPeriode(LocalDate fom, LocalDate tom, DokumentasjonVurdering dokumentasjonVurdering) { - return DelRegelTestUtil.gradertPeriode(FEDREKVOTE, fom, tom, Set.of(AktivitetIdentifikator.forFrilans()), dokumentasjonVurdering); + return DelRegelTestUtil.gradertPeriode( + FEDREKVOTE, fom, tom, Set.of(AktivitetIdentifikator.forFrilans()), dokumentasjonVurdering); } @Test @@ -266,7 +316,10 @@ void UT1031_far_etterUke7_gyldigGrunn_omsorg_disponibleDager_ikkeGradert() { var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittPeriode(fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9)); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(fedrekvoteKonto(1000)).build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(1000)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -277,8 +330,12 @@ void UT1031_far_etterUke7_gyldigGrunn_omsorg_disponibleDager_ikkeGradert() { void fom_akkurat_6_uker_etter_fødsel() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittPeriode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(6).plusDays(1)); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(fedrekvoteKonto(1000)).build(); + var oppgittPeriode = oppgittPeriode( + fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(6).plusDays(1)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(1000)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -290,7 +347,10 @@ void UT1218_far_etterUke7_gyldigGrunn_omsorg_disponibleDager_gradert_avklart() { var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = gradertPeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15), null); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(oppgittPeriode)).kontoer(fedrekvoteKonto(1000)).build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(1000)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -301,13 +361,19 @@ void UT1218_far_etterUke7_gyldigGrunn_omsorg_disponibleDager_gradert_avklart() { void opphold_fedrekvote_annenforelder() { var fødselsdato = LocalDate.of(2018, 1, 1); - var periode = OppgittPeriode.forOpphold(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(15).plusWeeks(15), - OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER, null, null); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(periode))) - .kontoer(kontoer) - .build(); + var periode = OppgittPeriode.forOpphold( + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(15).plusWeeks(15), + OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER, + null, + null); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(periode))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(periode, grunnlag); @@ -318,31 +384,40 @@ void opphold_fedrekvote_annenforelder() { void opphold_fedrekvote_annenforelder_tom_for_konto() { var fødselsdato = LocalDate.of(2018, 1, 1); - var periode = OppgittPeriode.forOpphold(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(15).plusWeeks(15), - OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER, null, null); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(0).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(periode))) - .kontoer(kontoer) - .build(); + var periode = OppgittPeriode.forOpphold( + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(15).plusWeeks(15), + OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER, + null, + null); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(0).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(periode))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(periode, grunnlag); assertThat(regelresultat.oppfylt()).isFalse(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.trekkDagerFraSaldo()).isTrue(); - assertThat(regelresultat.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER); + assertThat(regelresultat.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER); } @Test void fedrekvote_rundt_fødsel_blir_innvilget() { var fødselsdato = LocalDate.of(2022, 10, 1); - var oppgittPeriode = oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(1).plusDays(1)); - var grunnlag = basicGrunnlag(fødselsdato).behandling(new Behandling.Builder().søkerErMor(false)) - .søknad(søknad(oppgittPeriode)) - .kontoer(fedrekvoteKonto(10 * 5).farUttakRundtFødselDager(10)) - .build(); + var oppgittPeriode = + oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(1).plusDays(1)); + var grunnlag = basicGrunnlag(fødselsdato) + .behandling(new Behandling.Builder().søkerErMor(false)) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(10 * 5).farUttakRundtFødselDager(10)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag, List.of()); @@ -355,11 +430,12 @@ void opphold_fedrekvote_annenforelder_tom_for_konto() { var termindato = LocalDate.of(2022, 10, 5); var oppgittPeriode = oppgittPeriode(termindato.minusWeeks(3), fødselsdato.plusDays(1)); - var grunnlag = basicGrunnlag(fødselsdato).datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) - .behandling(new Behandling.Builder().søkerErMor(false)) - .søknad(søknad(oppgittPeriode)) - .kontoer(fedrekvoteKonto(10 * 5).farUttakRundtFødselDager(10)) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) + .behandling(new Behandling.Builder().søkerErMor(false)) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(10 * 5).farUttakRundtFødselDager(10)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -371,10 +447,11 @@ void opphold_fedrekvote_annenforelder_tom_for_konto() { var fødselsdato = LocalDate.of(2022, 10, 1); var oppgittPeriode = oppgittPeriode(fødselsdato.minusDays(2), fødselsdato.minusDays(1)); - var grunnlag = basicGrunnlag(fødselsdato).behandling(new Behandling.Builder().søkerErMor(false)) - .søknad(søknad(oppgittPeriode)) - .kontoer(fedrekvoteKonto(10 * 5).farUttakRundtFødselDager(10)) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .behandling(new Behandling.Builder().søkerErMor(false)) + .søknad(søknad(oppgittPeriode)) + .kontoer(fedrekvoteKonto(10 * 5).farUttakRundtFødselDager(10)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -386,19 +463,18 @@ void fedrekvote_rundt_termin_blir_innvilget() { var termindato = LocalDate.of(2022, 10, 1); var oppgittPeriode = oppgittPeriode(termindato.minusDays(3), termindato.minusDays(1)); - var grunnlag = basicGrunnlag(termindato).behandling(new Behandling.Builder().søkerErMor(false)) - .søknad(søknad(oppgittPeriode)) - .datoer(new Datoer.Builder().termin(termindato)) - .kontoer(fedrekvoteKonto(10 * 5).farUttakRundtFødselDager(10)) - .build(); + var grunnlag = basicGrunnlag(termindato) + .behandling(new Behandling.Builder().søkerErMor(false)) + .søknad(søknad(oppgittPeriode)) + .datoer(new Datoer.Builder().termin(termindato)) + .kontoer(fedrekvoteKonto(10 * 5).farUttakRundtFødselDager(10)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag, List.of()); - assertThat(regelresultat.oppfylt()).isTrue(); } - private void assertInnvilgetOpphold(FastsettePerioderRegelresultat regelresultat) { assertThat(regelresultat.oppfylt()).isTrue(); assertThat(regelresultat.skalUtbetale()).isFalse(); @@ -415,12 +491,14 @@ private void assertInnvilgetOpphold(FastsettePerioderRegelresultat regelresultat } private Kontoer.Builder fedrekvoteKonto(int trekkdager) { - return new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FEDREKVOTE).trekkdager(trekkdager)); + return new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FEDREKVOTE).trekkdager(trekkdager)); } private Kontoer.Builder fedrekvoteOgFlerbarnsdagerKonto(int fedrekvoteTrekkdager, int flerbarnsdagerTrekkdager) { - return new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FEDREKVOTE).trekkdager(fedrekvoteTrekkdager)) - .flerbarnsdager(flerbarnsdagerTrekkdager); + return new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FEDREKVOTE).trekkdager(fedrekvoteTrekkdager)) + .flerbarnsdager(flerbarnsdagerTrekkdager); } private void assertInnvilget(FastsettePerioderRegelresultat regelresultat, InnvilgetÅrsak innvilgetÅrsak) { @@ -431,11 +509,17 @@ private void assertInnvilget(FastsettePerioderRegelresultat regelresultat, Innvi private RegelGrunnlag.Builder basicGrunnlag(LocalDate fødselsdato) { return RegelGrunnlagTestBuilder.create() - .inngangsvilkår(new Inngangsvilkår.Builder()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true).farHarRett(true).samtykke(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .inngangsvilkår(new Inngangsvilkår.Builder()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(true) + .farHarRett(true) + .samtykke(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } private RegelGrunnlag.Builder basicGrunnlagFar(LocalDate fødselsdato) { diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FedrekvoteOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FedrekvoteOrkestreringTest.java index 2c1c8c21..934f422b 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FedrekvoteOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FedrekvoteOrkestreringTest.java @@ -10,9 +10,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.DokumentasjonVurdering; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Konto; @@ -26,62 +23,108 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UttakPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; +import org.junit.jupiter.api.Test; class FedrekvoteOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { - @Test - void fedrekvote_med_tidlig_oppstart_og_gyldig_grunn_fra_første_dag_til_midten_av_perioden_blir_innvilget_med_knekkpunkt() { + void + fedrekvote_med_tidlig_oppstart_og_gyldig_grunn_fra_første_dag_til_midten_av_perioden_blir_innvilget_med_knekkpunkt() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad( - søknad(Søknadstype.FØDSEL, oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), INNLEGGELSE_ANNEN_FORELDER_GODKJENT), - oppgittPeriode(fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(2), null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + fødselsdato, + fødselsdato.plusWeeks(1).minusDays(1), + INNLEGGELSE_ANNEN_FORELDER_GODKJENT), + oppgittPeriode(fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(2), null))); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(2); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(2), MANUELL_BEHANDLING, FEDREKVOTE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato, + fødselsdato.plusWeeks(1).minusDays(1), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(2), + MANUELL_BEHANDLING, + FEDREKVOTE); } private OppgittPeriode oppgittPeriode(LocalDate fom, LocalDate tom, DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(FEDREKVOTE, fom, tom, null, false, null, null, null, dokumentasjonVurdering); + return OppgittPeriode.forVanligPeriode( + FEDREKVOTE, fom, tom, null, false, null, null, null, dokumentasjonVurdering); } @Test void skal_gi_ikke_innvilget_når_far_har_gyldig_grunn_til_tidlig_oppstart_men_ikke_omsorg() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(100)); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg( - new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), SYKDOM_ANNEN_FORELDER_GODKJENT))) - .kontoer(kontoer); + var kontoer = + new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(100)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), SYKDOM_ANNEN_FORELDER_GODKJENT))) + .kontoer(kontoer); var periodeResultater = fastsettPerioder(grunnlag); assertThat(periodeResultater).hasSize(1); - var perioder = periodeResultater.stream().map(FastsettePeriodeResultat::uttakPeriode).sorted(comparing(UttakPeriode::getFom)).toList(); - - verifiserAvslåttPeriode(perioder.get(0), fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), FEDREKVOTE, - IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); + var perioder = periodeResultater.stream() + .map(FastsettePeriodeResultat::uttakPeriode) + .sorted(comparing(UttakPeriode::getFom)) + .toList(); + + verifiserAvslåttPeriode( + perioder.get(0), + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1), + FEDREKVOTE, + IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); } @Test void fedrekvote_fra_1_dag_før_6_uker_skal_behandles_manuelt() { var fødselsdato = LocalDate.of(2018, 1, 3); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad( - søknad(Søknadstype.FØDSEL, oppgittPeriode(fødselsdato.plusWeeks(6).minusDays(1), fødselsdato.plusWeeks(10).minusDays(1), null))).build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + fødselsdato.plusWeeks(6).minusDays(1), + fødselsdato.plusWeeks(10).minusDays(1), + null))) + .build(); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(2); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato.plusWeeks(6).minusDays(1), fødselsdato.plusWeeks(6).minusDays(1), - MANUELL_BEHANDLING, FEDREKVOTE); - //Denne går til manuell pga uavklart periode - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNVILGET, FEDREKVOTE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato.plusWeeks(6).minusDays(1), + fødselsdato.plusWeeks(6).minusDays(1), + MANUELL_BEHANDLING, + FEDREKVOTE); + // Denne går til manuell pga uavklart periode + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + INNVILGET, + FEDREKVOTE); } @Test @@ -94,221 +137,383 @@ private OppgittPeriode oppgittPeriode(LocalDate fom, LocalDate tom, Dokumentasjo var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(2); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), MANUELL_BEHANDLING, FEDREKVOTE); - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNVILGET, FEDREKVOTE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1), + MANUELL_BEHANDLING, + FEDREKVOTE); + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + INNVILGET, + FEDREKVOTE); } @Test void fedrekvote_bli_ikke_innvilget_når_søker_ikke_har_omsorg() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(100)); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg( - new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)))) - .kontoer(kontoer); + var kontoer = + new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(100)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1)))) + .kontoer(kontoer); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(1); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), FEDREKVOTE, - IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + FEDREKVOTE, + IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); } @Test void overføring_av_fedrekvote_grunnet_sykdom_skade_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(overføringPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), - OverføringÅrsak.SYKDOM_ELLER_SKADE, SYKDOM_ANNEN_FORELDER_GODKJENT))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(overføringPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + SYKDOM_ANNEN_FORELDER_GODKJENT))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(4); - //3 uker foreldrepenger før fødsel innvilges + // 3 uker foreldrepenger før fødsel innvilges assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); - //assertThat(perioder.get(0).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(30); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + // assertThat(perioder.get(0).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(30); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); - //assertThat(perioder.get(1).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(30); + // assertThat(perioder.get(1).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(30); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - //3 neste uker mødrekvote innvilges + // 3 neste uker mødrekvote innvilges assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); - //assertThat(perioder.get(2).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(20); + // assertThat(perioder.get(2).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(20); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); - //2 neste uker fedrekvote innvilges + // 2 neste uker fedrekvote innvilges assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(3).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FEDREKVOTE); - //assertThat(perioder.get(3).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(20); + // assertThat(perioder.get(3).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(20); assertThat(perioder.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); + assertThat(perioder.get(3).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); } @Test void overføring_av_fedrekvote_grunnet_sykdom_skade_skal_gå_til_avslag_hvis_ikke_dokumentert() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1)), - overføringPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), - OverføringÅrsak.SYKDOM_ELLER_SKADE, null))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1)), + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1)), + overføringPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + null))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(4); - //3 uker foreldrepenger før fødsel innvilges + // 3 uker foreldrepenger før fødsel innvilges assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); - //assertThat(perioder.get(0).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(30); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + // assertThat(perioder.get(0).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(30); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); - //assertThat(perioder.get(1).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(30); + // assertThat(perioder.get(1).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(30); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - //3 neste uker mødrekvote innvilges + // 3 neste uker mødrekvote innvilges assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); - //assertThat(perioder.get(2).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(20); + // assertThat(perioder.get(2).uttakPeriode().trekkdager(ARBEIDSFORHOLD)).isEqualTo(20); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); - //2 neste uker fedrekvote avslås + // 2 neste uker fedrekvote avslås assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); } @Test void overføring_av_fedrekvote_ugyldig_årsak_skal_til_manuell_behandling() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1)), - overføringPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), null, null))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1)), + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1)), + overføringPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + null, + null))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(4); - //3 uker foreldrepenger før fødsel innvilges + // 3 uker foreldrepenger før fødsel innvilges assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - //3 neste uker mødrekvote innvilges + // 3 neste uker mødrekvote innvilges assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); - //2 neste uker fedrekvote skal til manuell behandling - assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + // 2 neste uker fedrekvote skal til manuell behandling + assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); assertThat(perioder.get(3).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FEDREKVOTE); assertThat(perioder.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); + assertThat(perioder.get(3).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); } @Test void fedrekvote_med_enkelt_uttak_rundt_fødsel_blir_avkortet_og_innvilget_riktig() { var fødselsdato = LocalDate.of(2022, 10, 3); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer( - new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)).farUttakRundtFødselDager(10)) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), null), - oppgittPeriode(fødselsdato.plusWeeks(31), fødselsdato.plusWeeks(40).minusDays(1), null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)) + .farUttakRundtFødselDager(10)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), null), + oppgittPeriode( + fødselsdato.plusWeeks(31), + fødselsdato.plusWeeks(40).minusDays(1), + null))); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(2); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato.plusWeeks(31), fødselsdato.plusWeeks(40).minusDays(1), INNVILGET, FEDREKVOTE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato, + fødselsdato.plusWeeks(1).minusDays(1), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato.plusWeeks(31), + fødselsdato.plusWeeks(40).minusDays(1), + INNVILGET, + FEDREKVOTE); } @Test void fedrekvote_med_enkelt_uttak_rundt_termin_blir_avkortet_og_innvilget_riktig() { var fødselsdato = LocalDate.of(2022, 10, 4); var termindato = fødselsdato.plusDays(1); - var grunnlag = basicGrunnlagFar(fødselsdato).datoer(datoer(fødselsdato).termin(termindato)) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)).farUttakRundtFødselDager(10)) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(termindato.minusDays(2), termindato.plusWeeks(2).minusDays(3), null), - oppgittPeriode(fødselsdato.plusWeeks(31), fødselsdato.plusWeeks(50).minusDays(1), null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .datoer(datoer(fødselsdato).termin(termindato)) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)) + .farUttakRundtFødselDager(10)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + termindato.minusDays(2), termindato.plusWeeks(2).minusDays(3), null), + oppgittPeriode( + fødselsdato.plusWeeks(31), + fødselsdato.plusWeeks(50).minusDays(1), + null))); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(4); - verifiserPeriode(resultater.get(0).uttakPeriode(), termindato.minusDays(2), fødselsdato.minusDays(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato, termindato.plusWeeks(2).minusDays(3), INNVILGET, FEDREKVOTE); - verifiserPeriode(resultater.get(2).uttakPeriode(), fødselsdato.plusWeeks(31), fødselsdato.plusWeeks(44).minusDays(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(resultater.get(3).uttakPeriode(), fødselsdato.plusWeeks(44), fødselsdato.plusWeeks(50).minusDays(1), AVSLÅTT, FEDREKVOTE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + termindato.minusDays(2), + fødselsdato.minusDays(1), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato, + termindato.plusWeeks(2).minusDays(3), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + resultater.get(2).uttakPeriode(), + fødselsdato.plusWeeks(31), + fødselsdato.plusWeeks(44).minusDays(1), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + resultater.get(3).uttakPeriode(), + fødselsdato.plusWeeks(44), + fødselsdato.plusWeeks(50).minusDays(1), + AVSLÅTT, + FEDREKVOTE); } @Test void fedrekvote_med_uttak_rundt_fødsel_blir_avkortet_og_innvilget_riktig() { var fødselsdato = LocalDate.of(2022, 10, 3); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer( - new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)).farUttakRundtFødselDager(10)) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(fødselsdato.minusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)) + .farUttakRundtFødselDager(10)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + fødselsdato.minusWeeks(1), + fødselsdato.plusWeeks(3).minusDays(1), + null))); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(3); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato.minusWeeks(1), fødselsdato.minusDays(1), MANUELL_BEHANDLING, FEDREKVOTE); - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato, fødselsdato.plusWeeks(2).minusDays(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(resultater.get(2).uttakPeriode(), fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(3).minusDays(1), MANUELL_BEHANDLING, - FEDREKVOTE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato.minusWeeks(1), + fødselsdato.minusDays(1), + MANUELL_BEHANDLING, + FEDREKVOTE); + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato, + fødselsdato.plusWeeks(2).minusDays(1), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + resultater.get(2).uttakPeriode(), + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(3).minusDays(1), + MANUELL_BEHANDLING, + FEDREKVOTE); } @Test void fedrekvote_med_for_mye_uttak_rundt_fødsel_blir_avkortet_og_innvilget_riktig() { var fødselsdato = LocalDate.of(2022, 10, 4); var termindato = fødselsdato.plusDays(1); - var grunnlag = basicGrunnlagFar(fødselsdato).datoer(datoer(fødselsdato).termin(termindato)) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)).farUttakRundtFødselDager(10)) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(termindato.minusDays(2), termindato.plusWeeks(1), null), - oppgittPeriode(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(6).minusDays(1), null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .datoer(datoer(fødselsdato).termin(termindato)) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)) + .farUttakRundtFødselDager(10)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(termindato.minusDays(2), termindato.plusWeeks(1), null), + oppgittPeriode( + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(6).minusDays(1), + null))); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(4); - verifiserPeriode(resultater.get(0).uttakPeriode(), termindato.minusDays(2), fødselsdato.minusDays(1), INNVILGET, FEDREKVOTE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + termindato.minusDays(2), + fødselsdato.minusDays(1), + INNVILGET, + FEDREKVOTE); verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato, termindato.plusWeeks(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(resultater.get(2).uttakPeriode(), fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(4).plusDays(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(resultater.get(3).uttakPeriode(), fødselsdato.plusWeeks(4).plusDays(2), fødselsdato.plusWeeks(6).minusDays(1), - MANUELL_BEHANDLING, FEDREKVOTE); + verifiserPeriode( + resultater.get(2).uttakPeriode(), + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(4).plusDays(1), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + resultater.get(3).uttakPeriode(), + fødselsdato.plusWeeks(4).plusDays(2), + fødselsdato.plusWeeks(6).minusDays(1), + MANUELL_BEHANDLING, + FEDREKVOTE); } - private OppgittPeriode overføringPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - OverføringÅrsak årsak, - DokumentasjonVurdering dokumentasjonVurdering) { + private OppgittPeriode overføringPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + OverføringÅrsak årsak, + DokumentasjonVurdering dokumentasjonVurdering) { return OppgittPeriode.forOverføring(stønadskontotype, fom, tom, årsak, null, null, dokumentasjonVurdering); } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeDelregelTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeDelregelTest.java index 7fb20751..e4a9efb5 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeDelregelTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeDelregelTest.java @@ -13,9 +13,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -37,6 +34,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class FellesperiodeDelregelTest { @@ -46,25 +44,26 @@ class FellesperiodeDelregelTest { void fellesperiode_mor_uttak_starter_ved_12_uker_og_slutter_ved_3_uker_før_fødsel_blir_innvilget() { var søknadsperiode = oppgittPeriode(fødselsdato.minusWeeks(12), fødselsdato.minusWeeks(3), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); assertThat(regelresultat.oppfylt()).isTrue(); - } @Test void fellesperiode_mor_uttak_starter_etter_fødsel_og_som_slutter_før_7_uker_blir_avslått() { var søknadsperiode = oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(3), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -75,10 +74,11 @@ class FellesperiodeDelregelTest { void fellesperiode_mor_uttak_starter_ved_3_uker_før_fødsel_slutter_før_fødsel_blir_innvilget() { var søknadsperiode = oppgittPeriode(fødselsdato.minusWeeks(3), fødselsdato.minusWeeks(1), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -89,10 +89,11 @@ class FellesperiodeDelregelTest { void fellesperiode_mor_uttak_starter_ved_7_uker_etter_fødsel_blir_innvilget() { var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(10), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -103,10 +104,11 @@ class FellesperiodeDelregelTest { void fellesperiode_far_før_fødsel_slutter_før_fødsel_blir_avslått_uten_knekk() { var søknadsperiode = oppgittPeriode(fødselsdato.minusWeeks(10), fødselsdato.minusWeeks(5), null, false); var kontoer = enFellesperiodeKonto(10 * 5); - var grunnlag = basicGrunnlagFar().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -121,11 +123,16 @@ private RegelGrunnlag.Builder basicGrunnlagFar() { void fellesperiode_blir_avslått_etter_uke_7_når_mor_ikke_har_omsorg() { var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(14), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -137,12 +144,17 @@ private RegelGrunnlag.Builder basicGrunnlagFar() { void fellesperiode_blir_avslått_etter_uke_7_når_mor_ikke_har_omsorg_sammenhengede_uttak() { var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(14), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .behandling(new Behandling.Builder().søkerErMor(true).kreverSammenhengendeUttak(true)) - .søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .behandling(new Behandling.Builder().søkerErMor(true).kreverSammenhengendeUttak(true)) + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -154,11 +166,16 @@ private RegelGrunnlag.Builder basicGrunnlagFar() { void fellesperiode_blir_avslått_etter_uke_7_når_far_ikke_har_omsorg() { var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(14), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagFar().rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -170,12 +187,17 @@ private RegelGrunnlag.Builder basicGrunnlagFar() { void fellesperiode_blir_avslått_etter_uke_7_når_far_ikke_har_omsorg_sammenhengede_uttak() { var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(14), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagFar().rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .behandling(new Behandling.Builder().søkerErMor(false).kreverSammenhengendeUttak(true)) - .søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .behandling(new Behandling.Builder().søkerErMor(false).kreverSammenhengendeUttak(true)) + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -184,14 +206,20 @@ private RegelGrunnlag.Builder basicGrunnlagFar() { } @Test - void fellesperiode_før_fødsel_innvilges_uavhengig_av_om_søker_har_omsorg_da_det_ikke_er_mulig_å_ha_omsorg_fordi_barnet_ikke_er_født() { + void + fellesperiode_før_fødsel_innvilges_uavhengig_av_om_søker_har_omsorg_da_det_ikke_er_mulig_å_ha_omsorg_fordi_barnet_ikke_er_født() { var søknadsperiode = oppgittPeriode(fødselsdato.minusWeeks(12), fødselsdato.minusWeeks(10), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -202,10 +230,11 @@ private RegelGrunnlag.Builder basicGrunnlagFar() { void UT1041_mor_før3UkerFørFamilieHendelse_ikkeGradert() { var søknadsperiode = oppgittPeriode(fødselsdato.minusWeeks(5), fødselsdato.minusWeeks(4), null, false); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -214,27 +243,33 @@ private RegelGrunnlag.Builder basicGrunnlagFar() { @Test void UT1064_mor_før3UkerFørFamilieHendelse_gradert() { - var søknadsperiode = gradertoppgittPeriode(fødselsdato.minusWeeks(5), fødselsdato.minusWeeks(4), null, false, null); + var søknadsperiode = + gradertoppgittPeriode(fødselsdato.minusWeeks(5), fødselsdato.minusWeeks(4), null, false, null); var kontoer = enFellesperiodeKonto(13 * 5); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); - assertInnvilgetAvslåttGradering(regelresultat, InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); + assertInnvilgetAvslåttGradering( + regelresultat, + InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, + GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); } @Test void UT1219_mor_tidligstUke7_omsorg_disponibleStønadsdager_gradert_avklart() { - var søknadsperiode = gradertoppgittPeriode(fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9), null, false, null); + var søknadsperiode = + gradertoppgittPeriode(fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9), null, false, null); var kontoer = enFellesperiodeKonto(100); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -245,10 +280,11 @@ private RegelGrunnlag.Builder basicGrunnlagFar() { void UT1047_mor_fellesperioder_etter_uke7() { var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9), null, false); var kontoer = enFellesperiodeKonto(100); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -257,12 +293,14 @@ void UT1047_mor_fellesperioder_etter_uke7() { @Test void UT1048_mor_fellesperiode_før_uke7() { - var søknadsperiode = oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), null, false); + var søknadsperiode = + oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), null, false); var kontoer = enFellesperiodeKonto(100); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -271,12 +309,14 @@ void UT1047_mor_fellesperioder_etter_uke7() { @Test void UT1255_far_førUke7_etterFamileHendelse_gyldigGrunn_omsorg_disponibleStønadsdager_gradert_avklart() { - var søknadsperiode = gradertoppgittPeriode(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(5), null, false, SYKDOM_ANNEN_FORELDER_GODKJENT); + var søknadsperiode = gradertoppgittPeriode( + fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(5), null, false, SYKDOM_ANNEN_FORELDER_GODKJENT); var kontoer = enFellesperiodeKonto(100); - var grunnlag = basicGrunnlagFar().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -287,11 +327,16 @@ void UT1047_mor_fellesperioder_etter_uke7() { void UT1054_far_førUke7_etterFamileHendelse_utenGyldigGrunn_flerbarnsdager_ikkeOmsorg() { var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(5), null, true); var kontoer = fellesperiodeOgFlerbarnsdagerKonto(100, 85); - var grunnlag = basicGrunnlagFar().rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -300,12 +345,14 @@ void UT1047_mor_fellesperioder_etter_uke7() { @Test void UT1256_far_førUke7_etterFamileHendelse_gyldigGrunn_omsorg_disponibleStønadsdager_utenGradering() { - var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(5), null, false, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); + var søknadsperiode = oppgittPeriode( + fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(5), null, false, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); var kontoer = enFellesperiodeKonto(100); - var grunnlag = basicGrunnlagFar().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -316,13 +363,16 @@ void UT1047_mor_fellesperioder_etter_uke7() { void opphold_fellesperiode_annenforelder() { var fødselsdato = LocalDate.of(2018, 1, 1); - var søknadsperiode = oppholdPeriode(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(15).plusWeeks(15), - OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER); + var søknadsperiode = oppholdPeriode( + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(15).plusWeeks(15), + OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER); var kontoer = enFellesperiodeKonto(100); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -336,32 +386,38 @@ void opphold_fellesperiode_annenforelder() { void opphold_fellesperiode_annenforelder_tom_for_konto() { var fødselsdato = LocalDate.of(2018, 1, 1); - var søknadsperiode = oppholdPeriode(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(15).plusWeeks(15), - OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER); + var søknadsperiode = oppholdPeriode( + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(15).plusWeeks(15), + OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 0)).konto(konto(MØDREKVOTE, 100)); - var grunnlag = basicGrunnlagMor().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagMor() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); assertThat(regelresultat.oppfylt()).isFalse(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.trekkDagerFraSaldo()).isTrue(); - assertThat(regelresultat.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER); + assertThat(regelresultat.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER); assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); } @Test void far_etterUke7_omsorg_disponibleStønadsdager_gradering_ikkeFlerbarnsdager() { - var søknadsperiode = gradertoppgittPeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9), null, false, MORS_AKTIVITET_GODKJENT); + var søknadsperiode = gradertoppgittPeriode( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9), null, false, MORS_AKTIVITET_GODKJENT); var kontoer = enFellesperiodeKonto(100); var søknad = søknad(søknadsperiode); - var grunnlag = basicGrunnlagFar().søknad(søknad) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .søknad(søknad) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -370,12 +426,14 @@ void opphold_fellesperiode_annenforelder_tom_for_konto() { @Test void UT1270_far_etterUke7_omsorg_disponibleStønadsdager_gradering_flerbarnsdager() { - var søknadsperiode = gradertoppgittPeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9), null, true, null); + var søknadsperiode = + gradertoppgittPeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9), null, true, null); var kontoer = fellesperiodeOgFlerbarnsdagerKonto(100, 85); - var grunnlag = basicGrunnlagFar().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -384,13 +442,15 @@ void opphold_fellesperiode_annenforelder_tom_for_konto() { @Test void far_etterUke7_omsorg_disponibleStønadsdager_utenGradering_ikkeFlerbarnsdager() { - var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9), null, false, MORS_AKTIVITET_GODKJENT); + var søknadsperiode = oppgittPeriode( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9), null, false, MORS_AKTIVITET_GODKJENT); var kontoer = enFellesperiodeKonto(100); var søknad = søknad(søknadsperiode); - var grunnlag = basicGrunnlagFar().søknad(søknad) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .søknad(søknad) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -401,10 +461,11 @@ void opphold_fellesperiode_annenforelder_tom_for_konto() { void UT1271_far_etterUke7_omsorg_disponibleStønadsdager_utenGradering_flerbarnsdager() { var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9), null, true); var kontoer = fellesperiodeOgFlerbarnsdagerKonto(100, 85); - var grunnlag = basicGrunnlagFar().søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlagFar() + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -417,12 +478,17 @@ void opphold_fellesperiode_annenforelder_tom_for_konto() { var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 10 * 5)); - var søknadsperiode = oppgittPeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9).minusDays(1), null, false); - var grunnlag = basicGrunnlagFar().rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).farHarRett(true).samtykke(true)) - .søknad(søknad(søknadsperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var søknadsperiode = oppgittPeriode( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(9).minusDays(1), null, false); + var grunnlag = basicGrunnlagFar() + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(false) + .farHarRett(true) + .samtykke(true)) + .søknad(søknad(søknadsperiode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -430,13 +496,24 @@ void opphold_fellesperiode_annenforelder_tom_for_konto() { assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_IKKE_RETT_FP); } - private OppgittPeriode gradertoppgittPeriode(LocalDate fom, - LocalDate tom, - SamtidigUttaksprosent samtidigUttaksprosent, - boolean flerbarnsdager, - DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forGradering(FELLESPERIODE, fom, tom, BigDecimal.TEN, samtidigUttaksprosent, flerbarnsdager, - Set.of(AktivitetIdentifikator.forFrilans()), null, null, null, dokumentasjonVurdering); + private OppgittPeriode gradertoppgittPeriode( + LocalDate fom, + LocalDate tom, + SamtidigUttaksprosent samtidigUttaksprosent, + boolean flerbarnsdager, + DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forGradering( + FELLESPERIODE, + fom, + tom, + BigDecimal.TEN, + samtidigUttaksprosent, + flerbarnsdager, + Set.of(AktivitetIdentifikator.forFrilans()), + null, + null, + null, + dokumentasjonVurdering); } private Søknad.Builder søknad(OppgittPeriode søknadsperiode) { @@ -447,26 +524,38 @@ private Kontoer.Builder enFellesperiodeKonto(int trekkdager) { return new Kontoer.Builder().konto(konto(FELLESPERIODE, trekkdager)); } - private Kontoer.Builder fellesperiodeOgFlerbarnsdagerKonto(int fellesperiodeTrekkdager, int flerbarnsdagerTrekkdager) { - return new Kontoer.Builder().konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(fellesperiodeTrekkdager)) - .flerbarnsdager(flerbarnsdagerTrekkdager); + private Kontoer.Builder fellesperiodeOgFlerbarnsdagerKonto( + int fellesperiodeTrekkdager, int flerbarnsdagerTrekkdager) { + return new Kontoer.Builder() + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(fellesperiodeTrekkdager)) + .flerbarnsdager(flerbarnsdagerTrekkdager); } private Konto.Builder konto(Stønadskontotype type, int trekkdager) { return new Konto.Builder().type(type).trekkdager(trekkdager); } - private OppgittPeriode oppgittPeriode(LocalDate fom, LocalDate tom, SamtidigUttaksprosent samtidigUttaksprosent, boolean flerbarnsdager) { + private OppgittPeriode oppgittPeriode( + LocalDate fom, LocalDate tom, SamtidigUttaksprosent samtidigUttaksprosent, boolean flerbarnsdager) { return oppgittPeriode(fom, tom, samtidigUttaksprosent, flerbarnsdager, null); } - private OppgittPeriode oppgittPeriode(LocalDate fom, - LocalDate tom, - SamtidigUttaksprosent samtidigUttaksprosent, - boolean flerbarnsdager, - DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(FELLESPERIODE, fom, tom, samtidigUttaksprosent, flerbarnsdager, null, null, null, - dokumentasjonVurdering); + private OppgittPeriode oppgittPeriode( + LocalDate fom, + LocalDate tom, + SamtidigUttaksprosent samtidigUttaksprosent, + boolean flerbarnsdager, + DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forVanligPeriode( + FELLESPERIODE, + fom, + tom, + samtidigUttaksprosent, + flerbarnsdager, + null, + null, + null, + dokumentasjonVurdering); } private void assertInnvilget(FastsettePerioderRegelresultat regelresultat, InnvilgetÅrsak innvilgetÅrsak) { @@ -475,18 +564,20 @@ private void assertInnvilget(FastsettePerioderRegelresultat regelresultat, Innvi assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(innvilgetÅrsak); } - private void assertInnvilgetAvslåttGradering(FastsettePerioderRegelresultat regelresultat, - InnvilgetÅrsak innvilgetÅrsak, - GraderingIkkeInnvilgetÅrsak graderingIkkeInnvilgetÅrsak) { + private void assertInnvilgetAvslåttGradering( + FastsettePerioderRegelresultat regelresultat, + InnvilgetÅrsak innvilgetÅrsak, + GraderingIkkeInnvilgetÅrsak graderingIkkeInnvilgetÅrsak) { assertInnvilget(regelresultat, innvilgetÅrsak); assertThat(regelresultat.getGraderingIkkeInnvilgetÅrsak()).isEqualTo(graderingIkkeInnvilgetÅrsak); } - private void assertManuellBehandling(FastsettePerioderRegelresultat regelresultat, - IkkeOppfyltÅrsak ikkeOppfyltÅrsak, - Manuellbehandlingårsak manuellBehandlingÅrsak, - boolean trekkdager, - boolean utbetal) { + private void assertManuellBehandling( + FastsettePerioderRegelresultat regelresultat, + IkkeOppfyltÅrsak ikkeOppfyltÅrsak, + Manuellbehandlingårsak manuellBehandlingÅrsak, + boolean trekkdager, + boolean utbetal) { assertThat(regelresultat.oppfylt()).isFalse(); assertThat(regelresultat.trekkDagerFraSaldo()).isEqualTo(trekkdager); assertThat(regelresultat.skalUtbetale()).isEqualTo(utbetal); @@ -494,23 +585,32 @@ private void assertManuellBehandling(FastsettePerioderRegelresultat regelresulta assertThat(regelresultat.getManuellbehandlingårsak()).isEqualTo(manuellBehandlingÅrsak); } - private void assertAvslått(FastsettePerioderRegelresultat regelresultat, IkkeOppfyltÅrsak ikkeOppfyltÅrsak, boolean trekkdager, boolean utbetal) { + private void assertAvslått( + FastsettePerioderRegelresultat regelresultat, + IkkeOppfyltÅrsak ikkeOppfyltÅrsak, + boolean trekkdager, + boolean utbetal) { assertThat(regelresultat.oppfylt()).isFalse(); assertThat(regelresultat.trekkDagerFraSaldo()).isEqualTo(trekkdager); assertThat(regelresultat.skalUtbetale()).isEqualTo(utbetal); assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(ikkeOppfyltÅrsak); } - private RegelGrunnlag.Builder basicGrunnlagMor() { return basicGrunnlag().behandling(new Behandling.Builder().søkerErMor(true)); } private RegelGrunnlag.Builder basicGrunnlag() { return RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).farHarRett(true).morHarRett(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .farHarRett(true) + .morHarRett(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeMedGraderingTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeMedGraderingTest.java index a3b304ba..491c2e3f 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeMedGraderingTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeMedGraderingTest.java @@ -7,9 +7,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Behandling; @@ -24,6 +21,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.UtfallType; +import org.junit.jupiter.api.Test; class FellesperiodeMedGraderingTest { @@ -33,14 +31,25 @@ class FellesperiodeMedGraderingTest { void mor_graderer_med_50_prosent_arbeid_i_10_uker_med_5_uker_igjen_på_saldo() { var graderingFom = fødselsdato.plusWeeks(10); var graderingTom = fødselsdato.plusWeeks(20).minusDays(1); - var aktuellPeriode = OppgittPeriode.forGradering(Stønadskontotype.FELLESPERIODE, graderingFom, graderingTom, BigDecimal.valueOf(50), null, - false, Set.of(ARBEIDSFORHOLD_1), null, null, null, null); + var aktuellPeriode = OppgittPeriode.forGradering( + Stønadskontotype.FELLESPERIODE, + graderingFom, + graderingTom, + BigDecimal.valueOf(50), + null, + false, + Set.of(ARBEIDSFORHOLD_1), + null, + null, + null, + null); var kontoer = new Kontoer.Builder().konto(konto(Stønadskontotype.FELLESPERIODE, 5 * 5)); var arbeidsforhold = new Arbeidsforhold(ARBEIDSFORHOLD_1); - var grunnlag = basicGrunnlag().kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(aktuellPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) - .build(); + var grunnlag = basicGrunnlag() + .kontoer(kontoer) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(aktuellPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) + .build(); var regelresultat = kjørRegel(aktuellPeriode, grunnlag); @@ -51,14 +60,25 @@ class FellesperiodeMedGraderingTest { void mor_graderer_med_50_prosent_arbeid_i_10_uker_med_4_uker_igjen_på_saldo() { var graderingFom = fødselsdato.plusWeeks(10); var graderingTom = fødselsdato.plusWeeks(20).minusDays(1); - var aktuellPeriode = OppgittPeriode.forGradering(Stønadskontotype.FELLESPERIODE, graderingFom, graderingTom, BigDecimal.valueOf(50), null, - false, Set.of(ARBEIDSFORHOLD_1), null, null, null, null); + var aktuellPeriode = OppgittPeriode.forGradering( + Stønadskontotype.FELLESPERIODE, + graderingFom, + graderingTom, + BigDecimal.valueOf(50), + null, + false, + Set.of(ARBEIDSFORHOLD_1), + null, + null, + null, + null); var kontoer = new Kontoer.Builder().konto(konto(Stønadskontotype.FELLESPERIODE, 4 * 5)); var arbeidsforhold = new Arbeidsforhold(ARBEIDSFORHOLD_1); - var grunnlag = basicGrunnlag().kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(aktuellPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) - .build(); + var grunnlag = basicGrunnlag() + .kontoer(kontoer) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(aktuellPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) + .build(); var regelresultat = kjørRegel(aktuellPeriode, grunnlag); @@ -71,10 +91,16 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) private RegelGrunnlag.Builder basicGrunnlag() { return RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .behandling(new Behandling.Builder().søkerErMor(true)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true).samtykke(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .behandling(new Behandling.Builder().søkerErMor(true)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(true) + .samtykke(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeOrkestreringTest.java index 63ee4b61..42388111 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FellesperiodeOrkestreringTest.java @@ -11,9 +11,6 @@ import java.time.LocalDate; import java.util.List; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; @@ -28,156 +25,316 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class FellesperiodeOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { private final LocalDate fødselsdato = LocalDate.of(2018, 1, 1); @Test - void fellesperiode_mor_etter_uke_7_etter_fødsel_uten_nok_dager_blir_innvilget_med_knekk_og_avslått_periode_på_resten() { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(1000)) - .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(1000)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(4 * 5)); - var grunnlag = basicGrunnlagMor().søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - oppgittPeriode(Stønadskontotype.FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(15).minusDays(1)))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + void + fellesperiode_mor_etter_uke_7_etter_fødsel_uten_nok_dager_blir_innvilget_med_knekk_og_avslått_periode_på_resten() { + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(1000)) + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(1000)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(4 * 5)); + var grunnlag = basicGrunnlagMor() + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1)), + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + oppgittPeriode( + Stønadskontotype.FELLESPERIODE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(15).minusDays(1)))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(4); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), INNVILGET, FORELDREPENGER_FØR_FØDSEL); - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), INNVILGET, MØDREKVOTE); - verifiserPeriode(resultater.get(2).uttakPeriode(), fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNVILGET, - FELLESPERIODE); - verifiserManuellBehandlingPeriode(resultater.get(3).uttakPeriode(), fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15).minusDays(1), - FELLESPERIODE, IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + INNVILGET, + FORELDREPENGER_FØR_FØDSEL); + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1), + INNVILGET, + MØDREKVOTE); + verifiserPeriode( + resultater.get(2).uttakPeriode(), + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + INNVILGET, + FELLESPERIODE); + verifiserManuellBehandlingPeriode( + resultater.get(3).uttakPeriode(), + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(15).minusDays(1), + FELLESPERIODE, + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM); } private Kontoer.Builder fellesperiodeKonto(int trekkdager) { - return new Kontoer.Builder().konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(trekkdager)); + return new Kontoer.Builder() + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(trekkdager)); } @Test void fellesperiode_far_etter_uke_6_blir_innvilget_pga_oppfyller_aktivitetskravet() { var kontoer = fellesperiodeKonto(4 * 5); - var oppgittPeriode = oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(15), MORS_AKTIVITET_GODKJENT); + var oppgittPeriode = oppgittPeriode( + FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(15), MORS_AKTIVITET_GODKJENT); var søknad = søknad(Søknadstype.FØDSEL, oppgittPeriode); - var grunnlag = basicGrunnlagFar().søknad(søknad) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = basicGrunnlagFar() + .søknad(søknad) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var resultater = fastsettPerioder(grunnlag); - //Siste del av søknadsperioden blir avslått pga tom for dager + // Siste del av søknadsperioden blir avslått pga tom for dager assertThat(resultater).hasSize(2); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNVILGET, - FELLESPERIODE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + INNVILGET, + FELLESPERIODE); } @Test void for_tidlig_fellesperiode_far_blir_knekt_og_må_behandles_manuelt() { - var periode = oppgittPeriode(FELLESPERIODE, fødselsdato.minusWeeks(5), fødselsdato.plusWeeks(1), false, null, - INNLEGGELSE_ANNEN_FORELDER_GODKJENT); + var periode = oppgittPeriode( + FELLESPERIODE, + fødselsdato.minusWeeks(5), + fødselsdato.plusWeeks(1), + false, + null, + INNLEGGELSE_ANNEN_FORELDER_GODKJENT); var grunnlag = basicGrunnlagFar().søknad(søknad(Søknadstype.FØDSEL, periode)); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(3); - verifiserManuellBehandlingPeriode(resultater.get(0).uttakPeriode(), fødselsdato.minusWeeks(5), fødselsdato.minusWeeks(3).minusDays(1), - FELLESPERIODE, IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL); - verifiserManuellBehandlingPeriode(resultater.get(1).uttakPeriode(), fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), FELLESPERIODE, - IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL); - verifiserPeriode(resultater.get(2).uttakPeriode(), fødselsdato, fødselsdato.plusWeeks(1), Perioderesultattype.INNVILGET, FELLESPERIODE); + verifiserManuellBehandlingPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato.minusWeeks(5), + fødselsdato.minusWeeks(3).minusDays(1), + FELLESPERIODE, + IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, + Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL); + verifiserManuellBehandlingPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + FELLESPERIODE, + IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, + Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL); + verifiserPeriode( + resultater.get(2).uttakPeriode(), + fødselsdato, + fødselsdato.plusWeeks(1), + Perioderesultattype.INNVILGET, + FELLESPERIODE); } @Test void fellesperiode_mor_uttak_starter_ved_12_uker_og_slutter_etter_3_uker_før_fødsel_og_blir_innvilget() { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(3 * 5)) - .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(15 * 5)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(16 * 5)); - - var grunnlag = basicGrunnlagMor().søknad( - søknad(Søknadstype.FØDSEL, oppgittPeriode(FELLESPERIODE, fødselsdato.minusWeeks(12), fødselsdato.minusWeeks(1).minusDays(1)), - oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(1), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(3 * 5)) + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(15 * 5)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(16 * 5)); + + var grunnlag = basicGrunnlagMor() + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FELLESPERIODE, + fødselsdato.minusWeeks(12), + fødselsdato.minusWeeks(1).minusDays(1)), + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(1), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(4); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato.minusWeeks(12), fødselsdato.minusWeeks(3).minusDays(1), - Perioderesultattype.INNVILGET, FELLESPERIODE); - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato.minusWeeks(3), fødselsdato.minusWeeks(1).minusDays(1), - Perioderesultattype.INNVILGET, FELLESPERIODE); - verifiserPeriode(resultater.get(2).uttakPeriode(), fødselsdato.minusWeeks(1), fødselsdato.minusDays(1), Perioderesultattype.INNVILGET, - FORELDREPENGER_FØR_FØDSEL); - verifiserPeriode(resultater.get(3).uttakPeriode(), fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), Perioderesultattype.INNVILGET, - MØDREKVOTE); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato.minusWeeks(12), + fødselsdato.minusWeeks(3).minusDays(1), + Perioderesultattype.INNVILGET, + FELLESPERIODE); + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato.minusWeeks(3), + fødselsdato.minusWeeks(1).minusDays(1), + Perioderesultattype.INNVILGET, + FELLESPERIODE); + verifiserPeriode( + resultater.get(2).uttakPeriode(), + fødselsdato.minusWeeks(1), + fødselsdato.minusDays(1), + Perioderesultattype.INNVILGET, + FORELDREPENGER_FØR_FØDSEL); + verifiserPeriode( + resultater.get(3).uttakPeriode(), + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1), + Perioderesultattype.INNVILGET, + MØDREKVOTE); } @Test void fellesperiode_mor_uttak_starter_ved_3_uker_etter_fødsel_blir_knekt_ved_6_uker_og_må_behandles_manuelt() { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(15).type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL)) - .konto(new Konto.Builder().trekkdager(50).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(13 * 5).type(Stønadskontotype.FELLESPERIODE)); - var søknad = søknad(Søknadstype.FØDSEL, oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(10).minusDays(1))); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(15).type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL)) + .konto(new Konto.Builder().trekkdager(50).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(13 * 5).type(Stønadskontotype.FELLESPERIODE)); + var søknad = søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(10).minusDays(1))); var grunnlag = basicGrunnlagMor().søknad(søknad).kontoer(kontoer); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(3); - verifiserAvslåttPeriode(resultater.get(0).uttakPeriode(), fødselsdato, fødselsdato.plusWeeks(3).minusDays(3), MØDREKVOTE, - IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); - verifiserManuellBehandlingPeriode(resultater.get(1).uttakPeriode(), fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(6).minusDays(1), - FELLESPERIODE, null, Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); - verifiserPeriode(resultater.get(2).uttakPeriode(), fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), - Perioderesultattype.INNVILGET, FELLESPERIODE); + verifiserAvslåttPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato, + fødselsdato.plusWeeks(3).minusDays(3), + MØDREKVOTE, + IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + verifiserManuellBehandlingPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(6).minusDays(1), + FELLESPERIODE, + null, + Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); + verifiserPeriode( + resultater.get(2).uttakPeriode(), + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + Perioderesultattype.INNVILGET, + FELLESPERIODE); } @Test void fellesperiode_mor_uttak_starter_før_12_uker_blir_avslått_med_knekk_ved_12_uker_før_fødsel() { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(1000)) - .konto(new Konto.Builder().type(Stønadskontotype.FELLESPERIODE).trekkdager(13 * 5)); - var grunnlag = basicGrunnlagMor().søknad( - søknad(Søknadstype.FØDSEL, oppgittPeriode(Stønadskontotype.FELLESPERIODE, fødselsdato.minusWeeks(13), fødselsdato))).kontoer(kontoer); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(1000)) + .konto(new Konto.Builder().type(Stønadskontotype.FELLESPERIODE).trekkdager(13 * 5)); + var grunnlag = basicGrunnlagMor() + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(Stønadskontotype.FELLESPERIODE, fødselsdato.minusWeeks(13), fødselsdato))) + .kontoer(kontoer); var resultater = fastsettPerioder(grunnlag); assertThat(resultater).hasSize(5); - verifiserPeriode(resultater.get(0).uttakPeriode(), fødselsdato.minusWeeks(13), fødselsdato.minusWeeks(12).minusDays(1), - Perioderesultattype.AVSLÅTT, Stønadskontotype.FELLESPERIODE); - verifiserPeriode(resultater.get(1).uttakPeriode(), fødselsdato.minusWeeks(12), fødselsdato.minusWeeks(3).minusDays(1), - Perioderesultattype.INNVILGET, Stønadskontotype.FELLESPERIODE); - verifiserPeriode(resultater.get(2).uttakPeriode(), fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), Perioderesultattype.INNVILGET, - Stønadskontotype.FELLESPERIODE); - verifiserManuellBehandlingPeriode(resultater.get(3).uttakPeriode(), fødselsdato, fødselsdato, FELLESPERIODE, null, - Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); - verifiserAvslåttPeriode(resultater.get(4).uttakPeriode(), fødselsdato.plusDays(1), fødselsdato.plusWeeks(6).minusDays(3), MØDREKVOTE, - IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + verifiserPeriode( + resultater.get(0).uttakPeriode(), + fødselsdato.minusWeeks(13), + fødselsdato.minusWeeks(12).minusDays(1), + Perioderesultattype.AVSLÅTT, + Stønadskontotype.FELLESPERIODE); + verifiserPeriode( + resultater.get(1).uttakPeriode(), + fødselsdato.minusWeeks(12), + fødselsdato.minusWeeks(3).minusDays(1), + Perioderesultattype.INNVILGET, + Stønadskontotype.FELLESPERIODE); + verifiserPeriode( + resultater.get(2).uttakPeriode(), + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + Perioderesultattype.INNVILGET, + Stønadskontotype.FELLESPERIODE); + verifiserManuellBehandlingPeriode( + resultater.get(3).uttakPeriode(), + fødselsdato, + fødselsdato, + FELLESPERIODE, + null, + Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); + verifiserAvslåttPeriode( + resultater.get(4).uttakPeriode(), + fødselsdato.plusDays(1), + fødselsdato.plusWeeks(6).minusDays(3), + MØDREKVOTE, + IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); } @Test void innvilge_fellesperiode_14_uker_før_fødsel_men_ikke_12_uker_før_termin_ved_terminsøknad() { var termin = LocalDate.of(2020, 6, 10); - var grunnlag = basicGrunnlagMor().datoer(new Datoer.Builder().termin(termin).fødsel(termin.plusWeeks(2))) - .søknad(new Søknad.Builder().type(Søknadstype.TERMIN) - .oppgittePerioder(List.of( - OppgittPeriode.forVanligPeriode(FELLESPERIODE, termin.minusWeeks(15), termin.minusWeeks(3).minusDays(1), null, false, null, null, - null, null), - OppgittPeriode.forVanligPeriode(FORELDREPENGER_FØR_FØDSEL, termin.minusWeeks(3), termin.minusDays(1), null, false, null, null, - null, null), OppgittPeriode.forVanligPeriode(MØDREKVOTE, termin, termin.plusWeeks(4), null, false, null, null, null, null)))); + var grunnlag = basicGrunnlagMor() + .datoer(new Datoer.Builder().termin(termin).fødsel(termin.plusWeeks(2))) + .søknad(new Søknad.Builder() + .type(Søknadstype.TERMIN) + .oppgittePerioder(List.of( + OppgittPeriode.forVanligPeriode( + FELLESPERIODE, + termin.minusWeeks(15), + termin.minusWeeks(3).minusDays(1), + null, + false, + null, + null, + null, + null), + OppgittPeriode.forVanligPeriode( + FORELDREPENGER_FØR_FØDSEL, + termin.minusWeeks(3), + termin.minusDays(1), + null, + false, + null, + null, + null, + null), + OppgittPeriode.forVanligPeriode( + MØDREKVOTE, + termin, + termin.plusWeeks(4), + null, + false, + null, + null, + null, + null)))); var resultater = fastsettPerioder(grunnlag); assertThat(resultater.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); assertThat(resultater.get(0).uttakPeriode().getFom()).isEqualTo(termin.minusWeeks(15)); - assertThat(resultater.get(0).uttakPeriode().getTom()).isEqualTo(termin.minusWeeks(12).minusDays(1)); - assertThat(resultater.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(resultater.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); + assertThat(resultater.get(0).uttakPeriode().getTom()) + .isEqualTo(termin.minusWeeks(12).minusDays(1)); + assertThat(resultater.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultater.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)) + .isEqualTo(Trekkdager.ZERO); assertThat(resultater.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); } @@ -185,13 +342,41 @@ void fellesperiode_far_etter_uke_6_blir_innvilget_pga_oppfyller_aktivitetskravet @Test void avslå_fellesperiode_mer_enn_12_uker_før_fødsel_ved_fødselsøknad() { var termin = LocalDate.of(2020, 6, 10); - var grunnlag = basicGrunnlagMor().datoer(new Datoer.Builder().termin(termin).fødsel(termin.plusWeeks(2))) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittePerioder(List.of( - OppgittPeriode.forVanligPeriode(FELLESPERIODE, termin.minusWeeks(12), termin.minusWeeks(3).minusDays(1), null, false, null, null, - null, null), - OppgittPeriode.forVanligPeriode(FORELDREPENGER_FØR_FØDSEL, termin.minusWeeks(3), termin.minusDays(1), null, false, null, null, - null, null), OppgittPeriode.forVanligPeriode(MØDREKVOTE, termin, termin.plusWeeks(4), null, false, null, null, null, null)))); + var grunnlag = basicGrunnlagMor() + .datoer(new Datoer.Builder().termin(termin).fødsel(termin.plusWeeks(2))) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of( + OppgittPeriode.forVanligPeriode( + FELLESPERIODE, + termin.minusWeeks(12), + termin.minusWeeks(3).minusDays(1), + null, + false, + null, + null, + null, + null), + OppgittPeriode.forVanligPeriode( + FORELDREPENGER_FØR_FØDSEL, + termin.minusWeeks(3), + termin.minusDays(1), + null, + false, + null, + null, + null, + null), + OppgittPeriode.forVanligPeriode( + MØDREKVOTE, + termin, + termin.plusWeeks(4), + null, + false, + null, + null, + null, + null)))); var resultater = fastsettPerioder(grunnlag); diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerDelregelTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerDelregelTest.java index 3d375caa..81c353f9 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerDelregelTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerDelregelTest.java @@ -10,9 +10,6 @@ import java.util.List; import java.util.Optional; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -38,6 +35,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.PeriodeResultatÅrsak; +import org.junit.jupiter.api.Test; class ForeldrepengerDelregelTest { @@ -45,13 +43,17 @@ class ForeldrepengerDelregelTest { void mor_starter_tidligere_enn_12_uker_før_termin() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittPeriode(familiehendelseDato.minusWeeks(12).minusDays(1), familiehendelseDato); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(oppgittPeriode)).kontoer(foreldrepengerKonto(15)).build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(15)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); assertThat(regelresultat.oppfylt()).isFalse(); assertThat(regelresultat.trekkDagerFraSaldo()).isFalse(); - assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_SØKER_FELLESPERIODE_FØR_12_UKER_FØR_TERMIN_FØDSEL); + assertThat(regelresultat.getAvklaringÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_SØKER_FELLESPERIODE_FØR_12_UKER_FØR_TERMIN_FØDSEL); assertThat(regelresultat.getManuellbehandlingårsak()).isNull(); } @@ -59,10 +61,11 @@ class ForeldrepengerDelregelTest { void mor_aleneomsorg_før3ukerFørFødsel_disponibleDager_ikkeGradering_ikkeBareMorRett() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittPeriode(familiehendelseDato.minusWeeks(6), familiehendelseDato.minusWeeks(5)); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).aleneomsorg(true)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).aleneomsorg(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -73,10 +76,11 @@ class ForeldrepengerDelregelTest { void utenAleneomsorg_morRett_aleneomsorg_før3ukerFørFødsel_disponibleDager_ikkeGradering_morRett() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittPeriode(familiehendelseDato.minusWeeks(6), familiehendelseDato.minusWeeks(5)); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true).aleneomsorg(false)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true).aleneomsorg(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); assertInnvilget(regelresultat, InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT); @@ -85,74 +89,103 @@ class ForeldrepengerDelregelTest { @Test void mor_aleneomsorg_før3ukerFørFødsel_disponibleDager_gradering_ikkeBareMorRett() { var familiehendelseDato = LocalDate.of(2018, 1, 1); - var gradertPeriode = gradertPeriode(familiehendelseDato.minusWeeks(6), familiehendelseDato, AktivitetIdentifikator.forFrilans(), null); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(gradertPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(false)) - .build(); + var gradertPeriode = gradertPeriode( + familiehendelseDato.minusWeeks(6), familiehendelseDato, AktivitetIdentifikator.forFrilans(), null); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(gradertPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(gradertPeriode, grunnlag); - assertInnvilgetMenAvslåttGradering(regelresultat, InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); + assertInnvilgetMenAvslåttGradering( + regelresultat, + InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, + GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); } @Test void mor_aleneomsorg_før6ukerEtterFødsel_disponibleDager_ikkeGradering() { var familiehendelseDato = LocalDate.of(2022, 10, 4); - var oppgittPeriode = oppgittPeriode(familiehendelseDato, familiehendelseDato.plusWeeks(6).minusDays(1)); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(false).morHarRett(false).aleneomsorg(true)) - .build(); + var oppgittPeriode = oppgittPeriode( + familiehendelseDato, familiehendelseDato.plusWeeks(6).minusDays(1)); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(false) + .morHarRett(false) + .aleneomsorg(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); assertInnvilget(regelresultat, InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG); } - private OppgittPeriode gradertPeriode(LocalDate fom, - LocalDate tom, - AktivitetIdentifikator aktivitetIdentifikator, - DokumentasjonVurdering dokumentasjonVurdering) { + private OppgittPeriode gradertPeriode( + LocalDate fom, + LocalDate tom, + AktivitetIdentifikator aktivitetIdentifikator, + DokumentasjonVurdering dokumentasjonVurdering) { return gradertPeriode(fom, tom, aktivitetIdentifikator, null, false, dokumentasjonVurdering); } - private OppgittPeriode gradertPeriode(LocalDate fom, - LocalDate tom, - AktivitetIdentifikator aktivitetIdentifikator, - SamtidigUttaksprosent samtidigUttaksprosent, - boolean flerbarnsdager, - DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forGradering(Stønadskontotype.FORELDREPENGER, fom, tom, BigDecimal.TEN, samtidigUttaksprosent, flerbarnsdager, - Set.of(aktivitetIdentifikator), null, null, null, dokumentasjonVurdering); + private OppgittPeriode gradertPeriode( + LocalDate fom, + LocalDate tom, + AktivitetIdentifikator aktivitetIdentifikator, + SamtidigUttaksprosent samtidigUttaksprosent, + boolean flerbarnsdager, + DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forGradering( + Stønadskontotype.FORELDREPENGER, + fom, + tom, + BigDecimal.TEN, + samtidigUttaksprosent, + flerbarnsdager, + Set.of(aktivitetIdentifikator), + null, + null, + null, + dokumentasjonVurdering); } @Test void mor_aleneomsorg_før3ukerFørFødsel_disponibleDager_gradering_bareMorRett() { var familiehendelseDato = LocalDate.of(2018, 1, 1); - var gradertPeriode = gradertPeriode(familiehendelseDato.minusWeeks(6), familiehendelseDato, AktivitetIdentifikator.forFrilans(), null); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(gradertPeriode)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(true)) - .kontoer(foreldrepengerKonto(100)) - .build(); + var gradertPeriode = gradertPeriode( + familiehendelseDato.minusWeeks(6), familiehendelseDato, AktivitetIdentifikator.forFrilans(), null); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(gradertPeriode)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(true)) + .kontoer(foreldrepengerKonto(100)) + .build(); var regelresultat = kjørRegel(gradertPeriode, grunnlag); - assertInnvilgetMenAvslåttGradering(regelresultat, InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); + assertInnvilgetMenAvslåttGradering( + regelresultat, + InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, + GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); } @Test void mor_aleneomsorg_etter6ukerEtterFødsel_omsorg_disponibleDager_gradering_avklart_ikkeBareMorRett() { var familiehendelseDato = LocalDate.of(2018, 1, 1); - var gradertPeriode = gradertPeriode(familiehendelseDato.plusWeeks(7), familiehendelseDato.plusWeeks(8), AktivitetIdentifikator.forFrilans(), - null); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(gradertPeriode)) - .kontoer(foreldrepengerKonto(100)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(false)) - .build(); + var gradertPeriode = gradertPeriode( + familiehendelseDato.plusWeeks(7), + familiehendelseDato.plusWeeks(8), + AktivitetIdentifikator.forFrilans(), + null); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(gradertPeriode)) + .kontoer(foreldrepengerKonto(100)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(gradertPeriode, grunnlag); @@ -163,13 +196,15 @@ private OppgittPeriode gradertPeriode(LocalDate fom, void mor_aleneomsorg_etter6ukerEtterFødsel_omsorg_disponibleDager_gradering_avklart_morRett() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var aktivitetIdentifikator = ARBEIDSFORHOLD_1; - var gradertPeriode = gradertPeriode(familiehendelseDato.plusWeeks(7), familiehendelseDato.plusWeeks(8), aktivitetIdentifikator, null); + var gradertPeriode = gradertPeriode( + familiehendelseDato.plusWeeks(7), familiehendelseDato.plusWeeks(8), aktivitetIdentifikator, null); var kontoer = foreldrepengerKonto(100); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(gradertPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(true)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(gradertPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(true)) + .build(); var regelresultat = kjørRegel(gradertPeriode, grunnlag); @@ -180,10 +215,11 @@ private OppgittPeriode gradertPeriode(LocalDate fom, void mor_aleneomsorg_etter6ukerEtterFødsel_omsorg_disponibleDager_ikkeGradering_ikkeBareMorRett() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittPeriode(familiehendelseDato.plusWeeks(7), familiehendelseDato.plusWeeks(8)); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(false)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -194,19 +230,21 @@ private OppgittPeriode gradertPeriode(LocalDate fom, void mor_aleneomsorg_etter6ukerEtterFødsel_omsorg_disponibleDager_ikkeGradering_morRett() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittPeriode(familiehendelseDato.plusWeeks(7), familiehendelseDato.plusWeeks(8)); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(true)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).morHarRett(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); assertInnvilget(regelresultat, InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG); } - private void assertInnvilgetMenAvslåttGradering(FastsettePerioderRegelresultat regelresultat, - InnvilgetÅrsak innvilgetÅrsak, - GraderingIkkeInnvilgetÅrsak graderingIkkeInnvilgetÅrsak) { + private void assertInnvilgetMenAvslåttGradering( + FastsettePerioderRegelresultat regelresultat, + InnvilgetÅrsak innvilgetÅrsak, + GraderingIkkeInnvilgetÅrsak graderingIkkeInnvilgetÅrsak) { assertInnvilget(regelresultat, innvilgetÅrsak); assertThat(regelresultat.getGraderingIkkeInnvilgetÅrsak()).isEqualTo(graderingIkkeInnvilgetÅrsak); } @@ -215,18 +253,23 @@ private OppgittPeriode gradertPeriode(LocalDate fom, void mor_aleneomsorg_etter6ukerEtterFødsel_omsorg_noenDisponibleDager() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittPeriode(familiehendelseDato.plusWeeks(7), familiehendelseDato.plusWeeks(12)); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans())) - .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) - .kontoer(foreldrepengerKonto(10)) - .build(); - - var fastsattePerioder = List.of(new FastsattUttakPeriode.Builder().periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(oppgittPeriode.getFom().minusWeeks(1), oppgittPeriode.getFom().minusDays(1)) - .aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(8), Stønadskontotype.FORELDREPENGER, AktivitetIdentifikator.forFrilans()))) - .build()); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans())) + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) + .kontoer(foreldrepengerKonto(10)) + .build(); + + var fastsattePerioder = List.of(new FastsattUttakPeriode.Builder() + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode( + oppgittPeriode.getFom().minusWeeks(1), + oppgittPeriode.getFom().minusDays(1)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet( + new Trekkdager(8), Stønadskontotype.FORELDREPENGER, AktivitetIdentifikator.forFrilans()))) + .build()); var regelresultat = kjørRegel(oppgittPeriode, grunnlag, fastsattePerioder); assertThat(regelresultat.sluttpunktId()).isEqualTo("UT1190"); @@ -239,10 +282,11 @@ private OppgittPeriode gradertPeriode(LocalDate fom, var fom = familiehendelseDato.plusWeeks(6); var tom = familiehendelseDato.plusWeeks(7); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode).type(Søknadstype.FØDSEL)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).harOmsorg(false)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode).type(Søknadstype.FØDSEL)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).harOmsorg(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -258,10 +302,14 @@ void mor_utenAleneomsorg_ikkeBareMorRett() { var fom = familiehendelseDato.plusWeeks(6); var tom = familiehendelseDato.plusWeeks(7); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(false).farHarRett(true).harOmsorg(false)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .aleneomsorg(false) + .farHarRett(true) + .harOmsorg(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -274,10 +322,11 @@ void mor_utenAleneomsorg_ikkeBareMorRett() { var fom = familiehendelseDato.minusWeeks(3); var tom = familiehendelseDato.minusWeeks(2); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -290,36 +339,41 @@ void mor_utenAleneomsorg_ikkeBareMorRett() { var fom = familiehendelseDato.minusWeeks(3); var tom = familiehendelseDato.minusWeeks(2); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagMor(familiehendelseDato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) - .build(); + var grunnlag = grunnlagMor(familiehendelseDato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); assertInnvilget(regelresultat, InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG, "UT1197"); } - private void assertManuellBehandling(FastsettePerioderRegelresultat regelresultat, - PeriodeResultatÅrsak periodeResultatÅrsak, - Manuellbehandlingårsak manuellBehandlingÅrsak) { + private void assertManuellBehandling( + FastsettePerioderRegelresultat regelresultat, + PeriodeResultatÅrsak periodeResultatÅrsak, + Manuellbehandlingårsak manuellBehandlingÅrsak) { assertManuellBehandling(regelresultat, periodeResultatÅrsak, manuellBehandlingÅrsak, false, false); } - private void assertManuellBehandling(FastsettePerioderRegelresultat regelresultat, - PeriodeResultatÅrsak periodeResultatÅrsak, - Manuellbehandlingårsak manuellBehandlingÅrsak, - boolean trekkdager, - boolean utbetal) { - assertManuellBehandling(regelresultat, periodeResultatÅrsak, manuellBehandlingÅrsak, trekkdager, utbetal, Optional.empty()); + private void assertManuellBehandling( + FastsettePerioderRegelresultat regelresultat, + PeriodeResultatÅrsak periodeResultatÅrsak, + Manuellbehandlingårsak manuellBehandlingÅrsak, + boolean trekkdager, + boolean utbetal) { + assertManuellBehandling( + regelresultat, periodeResultatÅrsak, manuellBehandlingÅrsak, trekkdager, utbetal, Optional.empty()); } - private void assertManuellBehandling(FastsettePerioderRegelresultat regelresultat, - PeriodeResultatÅrsak periodeResultatÅrsak, - Manuellbehandlingårsak manuellBehandlingÅrsak, - boolean trekkdager, - boolean utbetal, - Optional graderingIkkeInnvilgetÅrsak) { + private void assertManuellBehandling( + FastsettePerioderRegelresultat regelresultat, + PeriodeResultatÅrsak periodeResultatÅrsak, + Manuellbehandlingårsak manuellBehandlingÅrsak, + boolean trekkdager, + boolean utbetal, + Optional graderingIkkeInnvilgetÅrsak) { assertThat(regelresultat.oppfylt()).isFalse(); assertThat(regelresultat.trekkDagerFraSaldo()).isEqualTo(trekkdager); assertThat(regelresultat.skalUtbetale()).isEqualTo(utbetal); @@ -336,11 +390,15 @@ private void assertManuellBehandling(FastsettePerioderRegelresultat regelresulta void far_før_familiehendelse() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittPeriode(familiehendelseDato.minusWeeks(3), familiehendelseDato.minusWeeks(2)); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)).kontoer(foreldrepengerKonto(100)).build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); - assertManuellBehandling(regelresultat, IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL); + assertManuellBehandling( + regelresultat, IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL); } @Test @@ -349,10 +407,11 @@ void far_etterFamiliehendelse_aleneomsorg_utenOmsorg() { var fom = familiehendelseDato.plusWeeks(1); var tom = familiehendelseDato.plusWeeks(2); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).harOmsorg(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true).harOmsorg(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -368,20 +427,28 @@ void far_etterFamiliehendelse_aleneomsorg_medOmsorg_utenDisponibledager() { var fom = familiehendelseDato.plusWeeks(1); var tom = familiehendelseDato.plusWeeks(2); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(10)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans())) - .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) - .build(); - - var fastsattePerioder = List.of(new FastsattUttakPeriode.Builder().periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(fom.minusWeeks(1), fom.minusDays(1)) - .aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), Stønadskontotype.FORELDREPENGER, AktivitetIdentifikator.forFrilans()), - new FastsattUttakPeriodeAktivitet(new Trekkdager(5), Stønadskontotype.FORELDREPENGER, - AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) - .build()); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(10)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans())) + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) + .build(); + + var fastsattePerioder = List.of(new FastsattUttakPeriode.Builder() + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(fom.minusWeeks(1), fom.minusDays(1)) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet( + new Trekkdager(10), + Stønadskontotype.FORELDREPENGER, + AktivitetIdentifikator.forFrilans()), + new FastsattUttakPeriodeAktivitet( + new Trekkdager(5), + Stønadskontotype.FORELDREPENGER, + AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) + .build()); var regelresultat = kjørRegel(oppgittPeriode, grunnlag, fastsattePerioder); assertThat(regelresultat.sluttpunktId()).isEqualTo("UT1198"); @@ -395,11 +462,12 @@ void far_etterFamiliehendelse_aleneomsorg_medOmsorg_utenDisponibledager() { var tom = familiehendelseDato.plusWeeks(2); var aktivitetIdentifikator = ARBEIDSFORHOLD_1; var gradertPeriode = gradertPeriode(fom, tom, aktivitetIdentifikator, null); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(gradertPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(gradertPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) + .build(); var regelresultat = kjørRegel(gradertPeriode, grunnlag); @@ -412,10 +480,11 @@ void far_etterFamiliehendelse_aleneomsorg_medOmsorg_medDisponibledager_utenGrade var fom = familiehendelseDato.plusWeeks(4); var tom = familiehendelseDato.plusWeeks(5); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -428,10 +497,14 @@ void far_etterFamiliehendelse_utenAleneomsorg_farRett_utenOmsorg() { var fom = familiehendelseDato.plusWeeks(4); var tom = familiehendelseDato.plusWeeks(5); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode).type(Søknadstype.FØDSEL)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false).harOmsorg(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode).type(Søknadstype.FØDSEL)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(false) + .harOmsorg(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -446,11 +519,13 @@ void far_etterFamiliehendelse_utenAleneomsorg_farRett_utenOmsorg() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var fom = familiehendelseDato.plusWeeks(4); var tom = familiehendelseDato.plusWeeks(5); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FORELDREPENGER, fom, tom, null, false, null, null, null, null); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .build(); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FORELDREPENGER, fom, tom, null, false, null, null, null, null); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -467,10 +542,14 @@ void far_etterFamiliehendelse_utenAleneomsorg_farRett_utenOmsorg() { var tom = familiehendelseDato.plusWeeks(5); var oppgittPeriode = oppgittPeriode(fom, tom, MORS_AKTIVITET_GODKJENT); var søknad = søknad(oppgittPeriode); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false).aleneomsorg(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(false) + .aleneomsorg(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -484,10 +563,11 @@ void far_etterFamiliehendelse_utenAleneomsorg_farRett_medOmsorg_EtterUke7_medDis var tom = familiehendelseDato.plusWeeks(9); var oppgittPeriode = oppgittPeriode(fom, tom, MORS_AKTIVITET_GODKJENT); var søknad = søknad(oppgittPeriode); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -501,10 +581,11 @@ void far_etterFamiliehendelse_utenAleneomsorg_farRett_medOmsorg_EtterUke7_medDis var tom = familiehendelseDato.plusWeeks(5); var gradertPeriode = gradertPeriode(fom, tom, AktivitetIdentifikator.forFrilans(), MORS_AKTIVITET_GODKJENT); var søknad = søknad(gradertPeriode); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(gradertPeriode, grunnlag); @@ -512,7 +593,8 @@ void far_etterFamiliehendelse_utenAleneomsorg_farRett_medOmsorg_EtterUke7_medDis } @Test - void far_etterFamiliehendelse_utenAleneomsorg_farRett_medOmsorg_EtterUke7_medDisponibleDager_medGradering_avklart() { + void + far_etterFamiliehendelse_utenAleneomsorg_farRett_medOmsorg_EtterUke7_medDisponibleDager_medGradering_avklart() { var familiehendelseDato = LocalDate.of(2018, 1, 1); var fom = familiehendelseDato.plusWeeks(8); var tom = familiehendelseDato.plusWeeks(9); @@ -520,11 +602,12 @@ void far_etterFamiliehendelse_utenAleneomsorg_farRett_medOmsorg_EtterUke7_medDis var gradertPeriode = gradertPeriode(fom, tom, aktivitetIdentifikator, MORS_AKTIVITET_GODKJENT); var kontoer = foreldrepengerKonto(100); var søknad = søknad(gradertPeriode); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(gradertPeriode, grunnlag); @@ -538,21 +621,29 @@ void far_etterFamiliehendelse_utenAleneomsorg_farRett_medOmsorg_EtterUke7_medDis var tom = familiehendelseDato.plusWeeks(9); var oppgittPeriode = oppgittPeriode(fom, tom, MORS_AKTIVITET_GODKJENT); var søknad = søknad(oppgittPeriode); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans())) - .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende())); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad) - .arbeid(arbeid) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .kontoer(foreldrepengerKonto(10)) - .build(); - - var fastsattePerioder = List.of(new FastsattUttakPeriode.Builder().periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(fom.minusWeeks(1), fom.minusDays(1)) - .aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), Stønadskontotype.FORELDREPENGER, AktivitetIdentifikator.forFrilans()), - new FastsattUttakPeriodeAktivitet(new Trekkdager(5), Stønadskontotype.FORELDREPENGER, - AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) - .build()); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans())) + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende())); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad) + .arbeid(arbeid) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .kontoer(foreldrepengerKonto(10)) + .build(); + + var fastsattePerioder = List.of(new FastsattUttakPeriode.Builder() + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(fom.minusWeeks(1), fom.minusDays(1)) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet( + new Trekkdager(10), + Stønadskontotype.FORELDREPENGER, + AktivitetIdentifikator.forFrilans()), + new FastsattUttakPeriodeAktivitet( + new Trekkdager(5), + Stønadskontotype.FORELDREPENGER, + AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) + .build()); var regelresultat = kjørRegel(oppgittPeriode, grunnlag, fastsattePerioder); assertThat(regelresultat.sluttpunktId()).isEqualTo("UT1316"); @@ -565,10 +656,11 @@ void far_etterFamiliehendelse_utenAleneomsorg_utenFarRett() { var fom = familiehendelseDato.plusWeeks(8); var tom = familiehendelseDato.plusWeeks(9); var oppgittPeriode = oppgittPeriode(fom, tom); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(foreldrepengerKonto(100)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(foreldrepengerKonto(100)) + .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -580,13 +672,15 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett() { var familiehendelseDato = LocalDate.now().minusMonths(2); var fom = familiehendelseDato.plusWeeks(1); var tom = familiehendelseDato.plusWeeks(3); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FORELDREPENGER, fom, tom, null, true, null, null, null, null); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FORELDREPENGER, fom, tom, null, true, null, null, null, null); var kontoer = foreldrepengerOgFlerbarnsdagerKonto(40, 17); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -601,11 +695,12 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett_medDisponib var aktivitetIdentifikator = AktivitetIdentifikator.forFrilans(); var gradertPeriode = gradertPeriode(fom, tom, aktivitetIdentifikator, null, true, MORS_AKTIVITET_GODKJENT); var kontoer = foreldrepengerOgFlerbarnsdagerKonto(40, 17); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(gradertPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(gradertPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(gradertPeriode, grunnlag); @@ -617,13 +712,15 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett_noenDisponi var familiehendelseDato = LocalDate.now().minusMonths(2); var fom = familiehendelseDato.plusWeeks(1); var tom = familiehendelseDato.plusWeeks(3); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FORELDREPENGER, fom, tom, null, true, null, null, null, null); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FORELDREPENGER, fom, tom, null, true, null, null, null, null); var kontoer = foreldrepengerOgFlerbarnsdagerKonto(100, 0); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -636,14 +733,26 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett_noenDisponi var familiehendelseDato = LocalDate.now().minusMonths(2); var fom = familiehendelseDato.plusWeeks(8); var tom = familiehendelseDato.plusWeeks(10); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FORELDREPENGER, fom, tom, null, false, familiehendelseDato, - familiehendelseDato, MorsAktivitet.UFØRE, null); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FORELDREPENGER, + fom, + tom, + null, + false, + familiehendelseDato, + familiehendelseDato, + MorsAktivitet.UFØRE, + null); var kontoer = foreldrepengerKonto(40).minsterettDager(10); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false).morUføretrygd(true)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(false) + .morUføretrygd(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -655,18 +764,33 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett_noenDisponi var familiehendelseDato = LocalDate.now().minusMonths(2); var fom = familiehendelseDato.plusWeeks(8); var tom = familiehendelseDato.plusWeeks(10); - var oppgittPeriode = OppgittPeriode.forGradering(Stønadskontotype.FORELDREPENGER, fom, tom, BigDecimal.TEN, SamtidigUttaksprosent.ZERO, false, - Set.of(ARBEIDSFORHOLD_1), familiehendelseDato, familiehendelseDato, MorsAktivitet.UFØRE, null); + var oppgittPeriode = OppgittPeriode.forGradering( + Stønadskontotype.FORELDREPENGER, + fom, + tom, + BigDecimal.TEN, + SamtidigUttaksprosent.ZERO, + false, + Set.of(ARBEIDSFORHOLD_1), + familiehendelseDato, + familiehendelseDato, + MorsAktivitet.UFØRE, + null); var kontoer = foreldrepengerKonto(40).minsterettDager(10); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false).morUføretrygd(true)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(false) + .morUføretrygd(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); - assertInnvilget(regelresultat, InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, "UT1318"); + assertInnvilget( + regelresultat, InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, "UT1318"); } @Test @@ -674,14 +798,26 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett_noenDisponi var familiehendelseDato = LocalDate.now().minusMonths(2); var fom = familiehendelseDato.plusWeeks(8); var tom = familiehendelseDato.plusWeeks(10); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FORELDREPENGER, fom, tom, null, false, familiehendelseDato, - familiehendelseDato, MorsAktivitet.UFØRE, null); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FORELDREPENGER, + fom, + tom, + null, + false, + familiehendelseDato, + familiehendelseDato, + MorsAktivitet.UFØRE, + null); var kontoer = foreldrepengerKonto(40).utenAktivitetskravDager(10); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false).morUføretrygd(true)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(false) + .morUføretrygd(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -693,30 +829,51 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett_noenDisponi var familiehendelseDato = LocalDate.now().minusMonths(2); var fom = familiehendelseDato.plusWeeks(8); var tom = familiehendelseDato.plusWeeks(10); - var oppgittPeriode = OppgittPeriode.forGradering(Stønadskontotype.FORELDREPENGER, fom, tom, BigDecimal.TEN, SamtidigUttaksprosent.ZERO, false, - Set.of(ARBEIDSFORHOLD_1), familiehendelseDato, familiehendelseDato, MorsAktivitet.UFØRE, null); + var oppgittPeriode = OppgittPeriode.forGradering( + Stønadskontotype.FORELDREPENGER, + fom, + tom, + BigDecimal.TEN, + SamtidigUttaksprosent.ZERO, + false, + Set.of(ARBEIDSFORHOLD_1), + familiehendelseDato, + familiehendelseDato, + MorsAktivitet.UFØRE, + null); var kontoer = foreldrepengerKonto(40).utenAktivitetskravDager(10); - var grunnlag = grunnlagFar(familiehendelseDato).søknad(søknad(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false).morUføretrygd(true)) - .build(); + var grunnlag = grunnlagFar(familiehendelseDato) + .søknad(søknad(oppgittPeriode)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(false) + .morUføretrygd(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); - assertInnvilget(regelresultat, InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, "UT1318"); + assertInnvilget( + regelresultat, InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, "UT1318"); } @Test void bfhr_rundt_fødsel_blir_innvilget() { var fødselsdato = LocalDate.of(2022, 10, 1); - var oppgittPeriode = oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(1).plusDays(1)); - var grunnlag = grunnlagFar(fødselsdato).behandling(new Behandling.Builder().søkerErMor(false).kreverSammenhengendeUttak(false)) - .søknad(søknad(oppgittPeriode)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).farHarRett(true).aleneomsorg(false)) - .kontoer(foreldrepengerKonto(40 * 5).farUttakRundtFødselDager(10).minsterettDager(10)) - .build(); + var oppgittPeriode = + oppgittPeriode(fødselsdato, fødselsdato.plusWeeks(1).plusDays(1)); + var grunnlag = grunnlagFar(fødselsdato) + .behandling(new Behandling.Builder().søkerErMor(false).kreverSammenhengendeUttak(false)) + .søknad(søknad(oppgittPeriode)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(false) + .farHarRett(true) + .aleneomsorg(false)) + .kontoer( + foreldrepengerKonto(40 * 5).farUttakRundtFødselDager(10).minsterettDager(10)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -728,11 +885,16 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett_noenDisponi var fødselsdato = LocalDate.of(2022, 10, 1); var oppgittPeriode = oppgittPeriode(fødselsdato.minusDays(2), fødselsdato.minusDays(1)); - var grunnlag = grunnlagFar(fødselsdato).behandling(new Behandling.Builder().søkerErMor(false).kreverSammenhengendeUttak(false)) - .søknad(søknad(oppgittPeriode)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).farHarRett(true).aleneomsorg(false)) - .kontoer(foreldrepengerKonto(40 * 5).farUttakRundtFødselDager(10).minsterettDager(10)) - .build(); + var grunnlag = grunnlagFar(fødselsdato) + .behandling(new Behandling.Builder().søkerErMor(false).kreverSammenhengendeUttak(false)) + .søknad(søknad(oppgittPeriode)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(false) + .farHarRett(true) + .aleneomsorg(false)) + .kontoer( + foreldrepengerKonto(40 * 5).farUttakRundtFødselDager(10).minsterettDager(10)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -743,13 +905,19 @@ void far_etterFamiliehendelse_utenAleneomsorg_medFarRett_utenMorRett_noenDisponi void bfhr_rundt_termin_blir_innvilget() { var termindato = LocalDate.of(2022, 10, 1); - var oppgittPeriode = oppgittPeriode(termindato.minusDays(3), termindato.plusWeeks(1).plusDays(1)); - var grunnlag = grunnlagFar(termindato).behandling(new Behandling.Builder().søkerErMor(false).kreverSammenhengendeUttak(false)) - .søknad(søknad(oppgittPeriode)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).farHarRett(true).aleneomsorg(false)) - .datoer(new Datoer.Builder().termin(termindato)) - .kontoer(foreldrepengerKonto(40 * 5).farUttakRundtFødselDager(10).minsterettDager(10)) - .build(); + var oppgittPeriode = + oppgittPeriode(termindato.minusDays(3), termindato.plusWeeks(1).plusDays(1)); + var grunnlag = grunnlagFar(termindato) + .behandling(new Behandling.Builder().søkerErMor(false).kreverSammenhengendeUttak(false)) + .søknad(søknad(oppgittPeriode)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(false) + .farHarRett(true) + .aleneomsorg(false)) + .datoer(new Datoer.Builder().termin(termindato)) + .kontoer( + foreldrepengerKonto(40 * 5).farUttakRundtFødselDager(10).minsterettDager(10)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -762,7 +930,8 @@ private void assertInnvilget(FastsettePerioderRegelresultat regelresultat, Innvi assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(innvilgetÅrsak); } - private void assertInnvilget(FastsettePerioderRegelresultat regelresultat, InnvilgetÅrsak innvilgetÅrsak, String sluttpunktId) { + private void assertInnvilget( + FastsettePerioderRegelresultat regelresultat, InnvilgetÅrsak innvilgetÅrsak, String sluttpunktId) { assertInnvilget(regelresultat, innvilgetÅrsak); assertThat(regelresultat.sluttpunktId()).isEqualTo((sluttpunktId)); } @@ -777,20 +946,26 @@ private RegelGrunnlag.Builder grunnlagFar(LocalDate familiehendelseDato) { private RegelGrunnlag.Builder grunnlag(LocalDate familiehendelseDato, boolean søkerMor) { return RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(familiehendelseDato)) - .behandling(new Behandling.Builder().søkerErMor(søkerMor)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .datoer(new Datoer.Builder().fødsel(familiehendelseDato)) + .behandling(new Behandling.Builder().søkerErMor(søkerMor)) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } private Kontoer.Builder foreldrepengerKonto(int trekkdager) { - return new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(trekkdager)); + return new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(trekkdager)); } - private Kontoer.Builder foreldrepengerOgFlerbarnsdagerKonto(int foreldrepengerTrekkdager, int flerbarnsdagerTrekkdager) { - return new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(foreldrepengerTrekkdager)) - .flerbarnsdager(flerbarnsdagerTrekkdager); + private Kontoer.Builder foreldrepengerOgFlerbarnsdagerKonto( + int foreldrepengerTrekkdager, int flerbarnsdagerTrekkdager) { + return new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(foreldrepengerTrekkdager)) + .flerbarnsdager(flerbarnsdagerTrekkdager); } private Søknad.Builder søknad(OppgittPeriode uttakPeriode) { diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerF\303\270rF\303\270dselDelregelTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerF\303\270rF\303\270dselDelregelTest.java" index 12b5365f..b191cff9 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerF\303\270rF\303\270dselDelregelTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerF\303\270rF\303\270dselDelregelTest.java" @@ -7,9 +7,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Behandling; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Inngangsvilkår; @@ -26,16 +23,22 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.PeriodeResultatÅrsak; +import org.junit.jupiter.api.Test; class ForeldrepengerFørFødselDelregelTest { @Test void UT1070_mor_utenFor3UkerFørFødsel() { var familiehendelseDato = LocalDate.of(2018, 1, 1); - var uttakPeriode = oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, familiehendelseDato.plusWeeks(8), - familiehendelseDato.plusWeeks(9)); + var uttakPeriode = oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + familiehendelseDato.plusWeeks(8), + familiehendelseDato.plusWeeks(9)); var kontoer = kontoer(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 100); - var grunnlag = basicGrunnlagMor(familiehendelseDato).kontoer(kontoer).søknad(søknad(uttakPeriode)).build(); + var grunnlag = basicGrunnlagMor(familiehendelseDato) + .kontoer(kontoer) + .søknad(søknad(uttakPeriode)) + .build(); var regelresultat = kjørRegel(uttakPeriode, grunnlag); @@ -45,10 +48,15 @@ class ForeldrepengerFørFødselDelregelTest { @Test void UT1071_mor_innenFor3UkerFørFødsel_ikkeManglendeSøktPeriode_ikkeGradering() { var familiehendelseDato = LocalDate.of(2018, 1, 1); - var uttakPeriode = oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, familiehendelseDato.minusWeeks(2), - familiehendelseDato.minusWeeks(1)); + var uttakPeriode = oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + familiehendelseDato.minusWeeks(2), + familiehendelseDato.minusWeeks(1)); var kontoer = kontoer(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 100); - var grunnlag = basicGrunnlagMor(familiehendelseDato).kontoer(kontoer).søknad(søknad(uttakPeriode)).build(); + var grunnlag = basicGrunnlagMor(familiehendelseDato) + .kontoer(kontoer) + .søknad(søknad(uttakPeriode)) + .build(); var regelresultat = kjørRegel(uttakPeriode, grunnlag); @@ -58,24 +66,35 @@ class ForeldrepengerFørFødselDelregelTest { @Test void UT1072_mor_innenFor3UkerFørFødsel_ikkeManglendeSøktPeriode_gradering() { var familiehendelseDato = LocalDate.of(2018, 1, 1); - var uttakPeriode = gradertPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, familiehendelseDato.minusWeeks(2), - familiehendelseDato.minusWeeks(1)); + var uttakPeriode = gradertPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + familiehendelseDato.minusWeeks(2), + familiehendelseDato.minusWeeks(1)); var kontoer = kontoer(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 100); - var grunnlag = basicGrunnlagMor(familiehendelseDato).kontoer(kontoer).søknad(søknad(uttakPeriode)).build(); + var grunnlag = basicGrunnlagMor(familiehendelseDato) + .kontoer(kontoer) + .søknad(søknad(uttakPeriode)) + .build(); var regelresultat = kjørRegel(uttakPeriode, grunnlag); assertInnvilget(regelresultat, InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL); - assertThat(regelresultat.getGraderingIkkeInnvilgetÅrsak()).isEqualTo(GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); + assertThat(regelresultat.getGraderingIkkeInnvilgetÅrsak()) + .isEqualTo(GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); } @Test void UT1073_mor_innenFor3UkerFørFødsel_manglendeSøktPeriode() { var familiehendelseDato = LocalDate.of(2018, 1, 1); - var msp = manglendeSøktPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, familiehendelseDato.minusWeeks(2), - familiehendelseDato.minusWeeks(1)); + var msp = manglendeSøktPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + familiehendelseDato.minusWeeks(2), + familiehendelseDato.minusWeeks(1)); var kontoer = kontoer(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 100); - var grunnlag = basicGrunnlagMor(familiehendelseDato).kontoer(kontoer).søknad(søknad(msp)).build(); + var grunnlag = basicGrunnlagMor(familiehendelseDato) + .kontoer(kontoer) + .søknad(søknad(msp)) + .build(); var regelresultat = kjørRegel(msp, grunnlag); @@ -88,16 +107,29 @@ class ForeldrepengerFørFødselDelregelTest { @Test void UT1076_far_søker_fpff() { var familiehendelseDato = LocalDate.of(2018, 1, 1); - var uttakPeriode = oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, familiehendelseDato.minusWeeks(2), - familiehendelseDato.minusWeeks(1)); - var kontoer = new Kontoer.Builder().konto(konto(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 100)) - //Må ha ellers å faller vi ut på FP_VK 10.5.1 - SjekkOmTomForAlleSineKontoer - .konto(konto(Stønadskontotype.FEDREKVOTE, 100)); - var grunnlag = basicGrunnlag(familiehendelseDato).kontoer(kontoer).behandling(søkerErFarBehandling()).søknad(søknad(uttakPeriode)).build(); + var uttakPeriode = oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + familiehendelseDato.minusWeeks(2), + familiehendelseDato.minusWeeks(1)); + var kontoer = new Kontoer.Builder() + .konto(konto(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 100)) + // Må ha ellers å faller vi ut på FP_VK 10.5.1 - + // SjekkOmTomForAlleSineKontoer + .konto(konto(Stønadskontotype.FEDREKVOTE, 100)); + var grunnlag = basicGrunnlag(familiehendelseDato) + .kontoer(kontoer) + .behandling(søkerErFarBehandling()) + .søknad(søknad(uttakPeriode)) + .build(); var regelresultat = kjørRegel(uttakPeriode, grunnlag); - assertManuell(regelresultat, IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, false, false); + assertManuell( + regelresultat, + IkkeOppfyltÅrsak.FAR_PERIODE_FØR_FØDSEL, + Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL, + false, + false); } private Kontoer.Builder kontoer(Stønadskontotype stønadskontotype, int trekkdager) { @@ -120,17 +152,19 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) return new Behandling.Builder().søkerErMor(false); } - private void assertInnvilget(FastsettePerioderRegelresultat regelresultat, PeriodeResultatÅrsak innvilgetPeriodeResultatÅrsak) { + private void assertInnvilget( + FastsettePerioderRegelresultat regelresultat, PeriodeResultatÅrsak innvilgetPeriodeResultatÅrsak) { assertThat(regelresultat.oppfylt()).isTrue(); assertThat(regelresultat.skalUtbetale()).isTrue(); assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(innvilgetPeriodeResultatÅrsak); } - private void assertManuell(FastsettePerioderRegelresultat regelresultat, - PeriodeResultatÅrsak periodeResultatÅrsak, - Manuellbehandlingårsak manuellbehandlingårsak, - boolean trekkDager, - boolean utbetal) { + private void assertManuell( + FastsettePerioderRegelresultat regelresultat, + PeriodeResultatÅrsak periodeResultatÅrsak, + Manuellbehandlingårsak manuellbehandlingårsak, + boolean trekkDager, + boolean utbetal) { assertThat(regelresultat.oppfylt()).isFalse(); assertThat(regelresultat.skalUtbetale()).isEqualTo(utbetal); assertThat(regelresultat.trekkDagerFraSaldo()).isEqualTo(trekkDager); @@ -140,9 +174,15 @@ private void assertManuell(FastsettePerioderRegelresultat regelresultat, private RegelGrunnlag.Builder basicGrunnlag(LocalDate familiehendelseDato) { return create().datoer(new Datoer.Builder().fødsel(familiehendelseDato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).farHarRett(true).morHarRett(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .farHarRett(true) + .morHarRett(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } private RegelGrunnlag.Builder basicGrunnlagMor(LocalDate familiehendelseDato) { diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerF\303\270rF\303\270dselOrkestreringTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerF\303\270rF\303\270dselOrkestreringTest.java" index d0a88903..5d3b06eb 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerF\303\270rF\303\270dselOrkestreringTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerF\303\270rF\303\270dselOrkestreringTest.java" @@ -3,23 +3,25 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Perioderesultattype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void foreldrepengerFørFødsel_happy_case() { var fødselsdato = LocalDate.of(2018, 1, 1); - var fpff = oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote = oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); + var fpff = oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); + var mødrekvote = oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)); var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote)); var perioder = fastsettPerioder(grunnlag); @@ -27,7 +29,8 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr assertThat(perioder).hasSize(2); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(15)); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); @@ -36,23 +39,31 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); } @Test void foreldrepengerFørFødsel_far_søker_fpff() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); - assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); - assertThat(perioder.get(0).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.FAR_SØKER_FØR_FØDSEL); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); @@ -61,23 +72,33 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr @Test void foreldrepengerFørFødsel_for_lang_fpff_periode_før_fødsel() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(4), fødselsdato.minusDays(1)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(4), + fødselsdato.minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); - assertThat(perioder.get(0).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); + assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(4)); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusWeeks(3).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.minusWeeks(3).minusDays(1)); assertThat(perioder.get(0).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(0).evalueringResultat()).isNotNull(); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()).isNull(); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); @@ -86,9 +107,11 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(3)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(3)); assertThat(perioder.get(2).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(2).evalueringResultat()).isNotNull(); } @@ -96,8 +119,14 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr @Test void foreldrepengerFørFødsel_for_lang_fpff_periode_etter_fødsel() { var fødselsdato = LocalDate.of(2018, 1, 1); - var fpff = oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.plusWeeks(2).minusDays(1)); - var mødrekvote = oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(6).minusDays(1)); + var fpff = oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.plusWeeks(2).minusDays(1)); + var mødrekvote = oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(6).minusDays(1)); var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote)); var perioder = fastsettPerioder(grunnlag); @@ -105,26 +134,33 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr assertThat(perioder).hasSize(3); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(perioder.get(0).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(0).evalueringResultat()).isNotNull(); - assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); - assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); + assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(2).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(2).minusDays(1)); assertThat(perioder.get(1).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(1).evalueringResultat()).isNotNull(); - //Mødrekvoten blir satt til manuell pga forrige periode ble manuell. Ingen årsak eller regelvurdering. + // Mødrekvoten blir satt til manuell pga forrige periode ble manuell. Ingen årsak eller + // regelvurdering. assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(2).uttakPeriode().getManuellbehandlingårsak()).isNull(); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(2)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(perioder.get(2).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(2).evalueringResultat()).isNotNull(); } @@ -132,23 +168,34 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr @Test void foreldrepengerFørFødsel_for_kort_fpff_periode_slutter_for_tidlig() { var fødselsdato = LocalDate.of(2018, 3, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3).minusDays(1), fødselsdato.minusWeeks(2)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3).minusDays(1), + fødselsdato.minusWeeks(2)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); - assertThat(perioder.get(0).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); - assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3).minusDays(1)); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusWeeks(3).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); + assertThat(perioder.get(0).uttakPeriode().getFom()) + .isEqualTo(fødselsdato.minusWeeks(3).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.minusWeeks(3).minusDays(1)); assertThat(perioder.get(0).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(0).evalueringResultat()).isNotNull(); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()).isNull(); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusWeeks(2)); @@ -157,9 +204,11 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(perioder.get(2).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(2).evalueringResultat()).isNotNull(); } @@ -167,15 +216,22 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr @Test void foreldrepengerFørFødsel_for_kort_fpff_starter_for_sent() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(1), fødselsdato.minusDays(1)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(1), + fødselsdato.minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(2); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(1)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); @@ -183,10 +239,12 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr assertThat(perioder.get(0).evalueringResultat()).isNotNull(); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(3)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(3)); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); assertThat(perioder.get(1).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(1).evalueringResultat()).isNotNull(); diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/GraderingOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/GraderingOrkestreringTest.java index 2326bf7e..e5a58eaf 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/GraderingOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/GraderingOrkestreringTest.java @@ -19,9 +19,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; @@ -45,16 +42,19 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Vedtak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.GraderingIkkeInnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; +import org.junit.jupiter.api.Test; class GraderingOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { - protected final FastsettePerioderRegelOrkestrering fastsettePerioderRegelOrkestrering = new FastsettePerioderRegelOrkestrering(); + protected final FastsettePerioderRegelOrkestrering fastsettePerioderRegelOrkestrering = + new FastsettePerioderRegelOrkestrering(); private RegelGrunnlag.Builder leggPåKvoter(RegelGrunnlag.Builder builder) { - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 50)) - .konto(konto(FEDREKVOTE, 50)) - .konto(konto(FELLESPERIODE, 130)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 50)) + .konto(konto(FEDREKVOTE, 50)) + .konto(konto(FELLESPERIODE, 130)); return builder.kontoer(kontoer); } @@ -64,36 +64,41 @@ class GraderingOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBa var graderingFom = fødselsdato.plusWeeks(10); var graderingTom = fødselsdato.plusWeeks(20).minusDays(1); var arbeidsprosent = BigDecimal.TEN; - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, graderingFom.minusDays(1))) - .oppgittPeriode(gradertoppgittPeriode(FELLESPERIODE, graderingFom, graderingTom, arbeidsprosent))).build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, graderingFom.minusDays(1))) + .oppgittPeriode( + gradertoppgittPeriode(FELLESPERIODE, graderingFom, graderingTom, arbeidsprosent))) + .build(); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //3 uker før fødsel - innvilges + // 3 uker før fødsel - innvilges var uttakPeriode = resultat.get(0).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges uttakPeriode = resultat.get(1).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //4 neste uker mødrekvote innvilges + // 4 neste uker mødrekvote innvilges uttakPeriode = resultat.get(2).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(6)); assertThat(uttakPeriode.getTom()).isEqualTo(graderingFom.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //4 neste uker mødrekvote innvilges og gradering beholdes + // 4 neste uker mødrekvote innvilges og gradering beholdes uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(graderingFom); assertThat(uttakPeriode.getTom()).isEqualTo(graderingTom); @@ -106,16 +111,21 @@ class GraderingOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBa void når_graderingsperiode_går_tom_skal_perioden_dras_til_søkers_fordel() { var kontoer = new Kontoer.Builder().flerbarnsdager(17 * 5).konto(konto(FORELDREPENGER, 57 * 5)); var søknadsperiode1 = oppgittPeriode(FORELDREPENGER, LocalDate.of(2019, 1, 23), LocalDate.of(2019, 3, 1)); - //Søker vil gå tom for dager i løpet av 19. sept, derfor får søker en ekstra trekkdager (Søkers fordel) - var søknadsperiode2 = gradertoppgittPeriode(FORELDREPENGER, LocalDate.of(2019, 3, 4), LocalDate.of(2019, 9, 19), BigDecimal.valueOf(60)); + // Søker vil gå tom for dager i løpet av 19. sept, derfor får søker en ekstra trekkdager + // (Søkers fordel) + var søknadsperiode2 = gradertoppgittPeriode( + FORELDREPENGER, LocalDate.of(2019, 3, 4), LocalDate.of(2019, 9, 19), BigDecimal.valueOf(60)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(LocalDate.of(2019, 1, 23))) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).aleneomsorg(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(søknadsperiode1).oppgittPeriode(søknadsperiode2)) - .build(); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(LocalDate.of(2019, 1, 23))) + .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(false).aleneomsorg(true)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(søknadsperiode1) + .oppgittPeriode(søknadsperiode2)) + .build(); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -125,55 +135,87 @@ class GraderingOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBa } @Test - void samtidig_uttaksprosent_skal_settes_til_100_minus_gradering_arbeidstidsprosent_hvis_samtidig_uttak_og_gradering() { + void + samtidig_uttaksprosent_skal_settes_til_100_minus_gradering_arbeidstidsprosent_hvis_samtidig_uttak_og_gradering() { var fødselsdato = LocalDate.of(2018, 1, 1); var grunnlag = RegelGrunnlagTestBuilder.create(); leggPåKvoter(grunnlag); var arbeidstidsprosent = BigDecimal.TEN; var samtidigUttaksprosent = new SamtidigUttaksprosent(50); - var gradertMedSamtidigUttak = OppgittPeriode.forGradering(FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), - arbeidstidsprosent, samtidigUttaksprosent, false, Set.of(ARBEIDSFORHOLD_1), null, null, null, null); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 50)) - .konto(konto(FEDREKVOTE, 50)) - .konto(konto(FELLESPERIODE, 130)); + var gradertMedSamtidigUttak = OppgittPeriode.forGradering( + FELLESPERIODE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + arbeidstidsprosent, + samtidigUttaksprosent, + false, + Set.of(ARBEIDSFORHOLD_1), + null, + null, + null, + null); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 50)) + .konto(konto(FEDREKVOTE, 50)) + .konto(konto(FELLESPERIODE, 130)); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(gradertMedSamtidigUttak)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)).arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))); + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(gradertMedSamtidigUttak)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)) + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))); var fastsettePeriodeGrunnlag = grunnlag.build(); var resultat = fastsettPerioder(fastsettePeriodeGrunnlag); assertThat(resultat.get(2).uttakPeriode().erSamtidigUttak()).isTrue(); - assertThat(resultat.get(2).uttakPeriode().getSamtidigUttaksprosent()).isEqualTo(SamtidigUttaksprosent.HUNDRED.subtract(arbeidstidsprosent)); + assertThat(resultat.get(2).uttakPeriode().getSamtidigUttaksprosent()) + .isEqualTo(SamtidigUttaksprosent.HUNDRED.subtract(arbeidstidsprosent)); } @Test - void uttak_på_to_arbeidsforhold_hvor_den_ene_går_tom_for_fellesperiode_skal_føre_0_utbetaling_og_0_trekkdager_for_den_som_går_tom() { + void + uttak_på_to_arbeidsforhold_hvor_den_ene_går_tom_for_fellesperiode_skal_føre_0_utbetaling_og_0_trekkdager_for_den_som_går_tom() { var fødselsdato = LocalDate.of(2018, 1, 1); var prosent50 = new BigDecimal("50.00"); var grunnlag = RegelGrunnlagTestBuilder.create(); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) - .konto(konto(MØDREKVOTE, 15 * 5)) - .konto(konto(FEDREKVOTE, 15 * 5)) - .konto(konto(FELLESPERIODE, 16 * 5)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) + .konto(konto(MØDREKVOTE, 15 * 5)) + .konto(konto(FEDREKVOTE, 15 * 5)) + .konto(konto(FELLESPERIODE, 16 * 5)); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1))) - .oppgittPeriode(gradertoppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(33).minusDays(1), prosent50, - Set.of(ARBEIDSFORHOLD_1)))) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)).arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))); + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1))) + .oppgittPeriode(gradertoppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(33).minusDays(1), + prosent50, + Set.of(ARBEIDSFORHOLD_1)))) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)) + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))); var fastsettePeriodeGrunnlag = grunnlag.build(); var resultat = fastsettPerioder(fastsettePeriodeGrunnlag); - assertThat(resultat).hasSize(5); assertKontoOgResultat(resultat.get(0), FORELDREPENGER_FØR_FØDSEL, INNVILGET); assertTrekkdager(resultat.get(0), ARBEIDSFORHOLD_1, new Trekkdager(3 * 5)); @@ -185,37 +227,51 @@ void samtidig_uttaksprosent_skal_settes_til_100_minus_gradering_arbeidstidsprose assertTrekkdager(resultat.get(2), ARBEIDSFORHOLD_1, new Trekkdager(9 * 5)); assertTrekkdager(resultat.get(2), ARBEIDSFORHOLD_2, new Trekkdager(9 * 5)); assertKontoOgResultat(resultat.get(3), FELLESPERIODE, INNVILGET); - assertThat(resultat.get(3).uttakPeriode().getGraderingIkkeInnvilgetÅrsak()).isNull(); + assertThat(resultat.get(3).uttakPeriode().getGraderingIkkeInnvilgetÅrsak()) + .isNull(); assertTrekkdager(resultat.get(3), ARBEIDSFORHOLD_1, new Trekkdager((16 * 5) / 2)); assertTrekkdager(resultat.get(3), ARBEIDSFORHOLD_2, new Trekkdager(16 * 5)); assertKontoOgResultat(resultat.get(4), FELLESPERIODE, INNVILGET); assertTrekkdager(resultat.get(4), ARBEIDSFORHOLD_1, new Trekkdager((2 * 5) / 2)); - assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_2)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_2)) + .isEqualTo(Utbetalingsgrad.ZERO); assertTrekkdager(resultat.get(4), ARBEIDSFORHOLD_2, Trekkdager.ZERO); } @Test - void uttak_på_to_arbeidsforhold_hvor_den_ene_går_tom_for_mødrekvote_skal_føre_0_utbetaling_og_0_trekkdager_for_den_som_går_tom() { + void + uttak_på_to_arbeidsforhold_hvor_den_ene_går_tom_for_mødrekvote_skal_føre_0_utbetaling_og_0_trekkdager_for_den_som_går_tom() { var fødselsdato = LocalDate.of(2018, 1, 1); var prosent50 = new BigDecimal("50.00"); var grunnlag = RegelGrunnlagTestBuilder.create(); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) - .konto(konto(MØDREKVOTE, 15 * 5)) - .konto(konto(FEDREKVOTE, 15 * 5)) - .konto(konto(FELLESPERIODE, 16 * 5)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) + .konto(konto(MØDREKVOTE, 15 * 5)) + .konto(konto(FEDREKVOTE, 15 * 5)) + .konto(konto(FELLESPERIODE, 16 * 5)); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)).arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))) - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(gradertoppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(33).minusDays(1), prosent50, - Set.of(ARBEIDSFORHOLD_1)))); + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)) + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))) + .kontoer(kontoer) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(gradertoppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(33).minusDays(1), + prosent50, + Set.of(ARBEIDSFORHOLD_1)))); var fastsettePeriodeGrunnlag = grunnlag.build(); var resultat = fastsettePerioderRegelOrkestrering.fastsettePerioder(fastsettePeriodeGrunnlag); - assertThat(resultat).hasSize(5); assertKontoOgResultat(resultat.get(0), FORELDREPENGER_FØR_FØDSEL, INNVILGET); assertTrekkdager(resultat.get(0), ARBEIDSFORHOLD_1, new Trekkdager(3 * 5)); @@ -227,76 +283,107 @@ void samtidig_uttaksprosent_skal_settes_til_100_minus_gradering_arbeidstidsprose assertTrekkdager(resultat.get(2), ARBEIDSFORHOLD_1, new Trekkdager(new BigDecimal("22.50"))); assertTrekkdager(resultat.get(2), ARBEIDSFORHOLD_2, new Trekkdager(9 * 5)); assertKontoOgResultat(resultat.get(3), MØDREKVOTE, INNVILGET); - assertThat(resultat.get(3).uttakPeriode().getGraderingIkkeInnvilgetÅrsak()).isNull(); + assertThat(resultat.get(3).uttakPeriode().getGraderingIkkeInnvilgetÅrsak()) + .isNull(); assertTrekkdager(resultat.get(3), ARBEIDSFORHOLD_1, new Trekkdager(new BigDecimal("22.50"))); assertTrekkdager(resultat.get(3), ARBEIDSFORHOLD_2, Trekkdager.ZERO); assertKontoOgResultat(resultat.get(4), MØDREKVOTE, MANUELL_BEHANDLING); assertTrekkdager(resultat.get(4), ARBEIDSFORHOLD_1, new Trekkdager(new BigDecimal("22.50"))); - assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_2)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_2)) + .isEqualTo(Utbetalingsgrad.ZERO); assertTrekkdager(resultat.get(4), ARBEIDSFORHOLD_2, new Trekkdager(45)); } - private void assertKontoOgResultat(FastsettePeriodeResultat fastsettePeriodeResultat, - Stønadskontotype stønadskontotype, - Perioderesultattype perioderesultattype) { - assertThat(fastsettePeriodeResultat.uttakPeriode().getStønadskontotype()).isEqualTo(stønadskontotype); - assertThat(fastsettePeriodeResultat.uttakPeriode().getPerioderesultattype()).isEqualTo(perioderesultattype); + private void assertKontoOgResultat( + FastsettePeriodeResultat fastsettePeriodeResultat, + Stønadskontotype stønadskontotype, + Perioderesultattype perioderesultattype) { + assertThat(fastsettePeriodeResultat.uttakPeriode().getStønadskontotype()) + .isEqualTo(stønadskontotype); + assertThat(fastsettePeriodeResultat.uttakPeriode().getPerioderesultattype()) + .isEqualTo(perioderesultattype); } - private void assertTrekkdager(FastsettePeriodeResultat fastsettePeriodeResultat, - AktivitetIdentifikator aktivitetIdentifikator, - Trekkdager trekkdager) { - assertThat(fastsettePeriodeResultat.uttakPeriode().getTrekkdager(aktivitetIdentifikator)).isEqualTo(trekkdager); + private void assertTrekkdager( + FastsettePeriodeResultat fastsettePeriodeResultat, + AktivitetIdentifikator aktivitetIdentifikator, + Trekkdager trekkdager) { + assertThat(fastsettePeriodeResultat.uttakPeriode().getTrekkdager(aktivitetIdentifikator)) + .isEqualTo(trekkdager); } - @Test - void utbetalingsgrad_og_trekkdager_skal_ta_utgangspunkt_samtidig_uttaksprosent_for_aktiviteter_uten_gradering_hvis_det_finnes_gradering() { + void + utbetalingsgrad_og_trekkdager_skal_ta_utgangspunkt_samtidig_uttaksprosent_for_aktiviteter_uten_gradering_hvis_det_finnes_gradering() { var fødselsdato = LocalDate.of(2018, 1, 1); var grunnlag = RegelGrunnlagTestBuilder.create(); var arbeidstidsprosent = BigDecimal.TEN; var samtidigUttaksprosent = new SamtidigUttaksprosent(50); - //10 virkedager - var gradertMedSamtidigUttak = OppgittPeriode.forGradering(FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), - arbeidstidsprosent, samtidigUttaksprosent, false, Set.of(ARBEIDSFORHOLD_1), null, null, null, null); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 50)) - .konto(konto(FEDREKVOTE, 50)) - .konto(konto(FELLESPERIODE, 130)); + // 10 virkedager + var gradertMedSamtidigUttak = OppgittPeriode.forGradering( + FELLESPERIODE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + arbeidstidsprosent, + samtidigUttaksprosent, + false, + Set.of(ARBEIDSFORHOLD_1), + null, + null, + null, + null); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 50)) + .konto(konto(FEDREKVOTE, 50)) + .konto(konto(FELLESPERIODE, 130)); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)).arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))) - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(gradertMedSamtidigUttak)); + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)) + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))) + .kontoer(kontoer) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(gradertMedSamtidigUttak)); var fastsettePeriodeGrunnlag = grunnlag.build(); var resultat = fastsettPerioder(fastsettePeriodeGrunnlag); - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)).isEqualTo(new Trekkdager(9)); - assertThat(resultat.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_2).decimalValue()).isEqualTo( - BigDecimal.valueOf(100).subtract(arbeidstidsprosent).setScale(2, RoundingMode.DOWN)); + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)) + .isEqualTo(new Trekkdager(9)); + assertThat(resultat.get(2) + .uttakPeriode() + .getUtbetalingsgrad(ARBEIDSFORHOLD_2) + .decimalValue()) + .isEqualTo(BigDecimal.valueOf(100).subtract(arbeidstidsprosent).setScale(2, RoundingMode.DOWN)); } @Test void trekkdager_med_desimaler_når_en_periode_er_en_dag() { var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 1)); - var søknadsperiode = gradertoppgittPeriode(FORELDREPENGER, LocalDate.of(2019, 4, 19), LocalDate.of(2019, 4, 19), BigDecimal.valueOf(75)); + var søknadsperiode = gradertoppgittPeriode( + FORELDREPENGER, LocalDate.of(2019, 4, 19), LocalDate.of(2019, 4, 19), BigDecimal.valueOf(75)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .behandling(new Behandling.Builder().søkerErMor(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(søknadsperiode.getFom())) - .adopsjon(new Adopsjon.Builder().ankomstNorge(søknadsperiode.getFom())) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(søknadsperiode)) - .build(); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .behandling(new Behandling.Builder().søkerErMor(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(søknadsperiode.getFom())) + .adopsjon(new Adopsjon.Builder().ankomstNorge(søknadsperiode.getFom())) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(søknadsperiode)) + .build(); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(1); - //Runder ned fra 0.25 til 0.2 - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(0.2)); + // Runder ned fra 0.25 til 0.2 + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(0.2)); } @Test @@ -305,36 +392,44 @@ void utbetalingsgrad_og_trekkdager_skal_ta_utgangspunkt_samtidig_uttaksprosent_f var graderingFom = fødselsdato.plusWeeks(10); var graderingTom = fødselsdato.plusWeeks(20).minusDays(1); var arbeidsprosent = BigDecimal.valueOf(90); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(gradertoppgittPeriode(FELLESPERIODE, graderingFom, graderingTom, arbeidsprosent))).build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode( + gradertoppgittPeriode(FELLESPERIODE, graderingFom, graderingTom, arbeidsprosent))) + .build(); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //3 uker før fødsel - innvilges + // 3 uker før fødsel - innvilges var uttakPeriode = resultat.get(0).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges uttakPeriode = resultat.get(1).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //4 neste uker mødrekvote innvilges + // 4 neste uker mødrekvote innvilges uttakPeriode = resultat.get(2).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(6)); assertThat(uttakPeriode.getTom()).isEqualTo(graderingFom.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //10 neste uker mødrekvote innvilges og gradering beholdes + // 10 neste uker mødrekvote innvilges og gradering beholdes uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(graderingFom); assertThat(uttakPeriode.getTom()).isEqualTo(graderingTom); @@ -350,41 +445,47 @@ void utbetalingsgrad_og_trekkdager_skal_ta_utgangspunkt_samtidig_uttaksprosent_f var graderingFom = fødselsdato.plusWeeks(10); var graderingTom = fødselsdato.plusWeeks(20).minusDays(1); var arbeidsprosent = BigDecimal.valueOf(90); - var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 5)) // bare 5 igjen - .konto(konto(FORELDREPENGER_FØR_FØDSEL, 1000)).konto(konto(MØDREKVOTE, 1000)); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, graderingFom.minusDays(1))) - .oppgittPeriode(gradertoppgittPeriode(FELLESPERIODE, graderingFom, graderingTom, arbeidsprosent))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + var kontoer = new Kontoer.Builder() + .konto(konto(FELLESPERIODE, 5)) // bare 5 igjen + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 1000)) + .konto(konto(MØDREKVOTE, 1000)); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, graderingFom.minusDays(1))) + .oppgittPeriode( + gradertoppgittPeriode(FELLESPERIODE, graderingFom, graderingTom, arbeidsprosent))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //3 uker før fødsel - innvilges + // 3 uker før fødsel - innvilges var uttakPeriode = resultat.get(0).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges uttakPeriode = resultat.get(1).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //4 neste uker mødrekvote innvilges + // 4 neste uker mødrekvote innvilges uttakPeriode = resultat.get(2).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(6)); assertThat(uttakPeriode.getTom()).isEqualTo(graderingFom.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //10 neste uker mødrekvote innvilges og gradering beholdes + // 10 neste uker mødrekvote innvilges og gradering beholdes uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(graderingFom); assertThat(uttakPeriode.getTom()).isEqualTo(graderingTom); @@ -400,45 +501,50 @@ void utbetalingsgrad_og_trekkdager_skal_ta_utgangspunkt_samtidig_uttaksprosent_f var graderingFom = fødselsdato.plusWeeks(10); var graderingTom = fødselsdato.plusWeeks(20).minusDays(1); var grunnlag = RegelGrunnlagTestBuilder.create(); - var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 5)) //bare 5 dager felles igjen - .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)).konto(konto(MØDREKVOTE, 50)); + var kontoer = new Kontoer.Builder() + .konto(konto(FELLESPERIODE, 5)) // bare 5 dager felles igjen + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 50)); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, graderingFom.minusDays(1))) - .oppgittPeriode(gradertoppgittPeriode(FELLESPERIODE, graderingFom, graderingTom, BigDecimal.valueOf(80)))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .inngangsvilkår(oppfyltAlleVilkår()); + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, graderingFom.minusDays(1))) + .oppgittPeriode(gradertoppgittPeriode( + FELLESPERIODE, graderingFom, graderingTom, BigDecimal.valueOf(80)))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .inngangsvilkår(oppfyltAlleVilkår()); var fastsettePeriodeGrunnlag = grunnlag.build(); var resultat = fastsettPerioder(fastsettePeriodeGrunnlag); assertThat(resultat).hasSize(5); - //3 uker før fødsel - innvilges + // 3 uker før fødsel - innvilges var uttakPeriode = resultat.get(0).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges uttakPeriode = resultat.get(1).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //4 neste uker mødrekvote innvilges + // 4 neste uker mødrekvote innvilges uttakPeriode = resultat.get(2).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(6)); assertThat(uttakPeriode.getTom()).isEqualTo(graderingFom.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //5 neste uker fellesperiode innvilges + // 5 neste uker fellesperiode innvilges uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(graderingFom); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(15).minusDays(1)); @@ -449,7 +555,7 @@ void utbetalingsgrad_og_trekkdager_skal_ta_utgangspunkt_samtidig_uttaksprosent_f assertThat(uttakPeriode.erGraderingInnvilget(ARBEIDSFORHOLD_1)).isTrue(); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(5)); - //5 siste uker fellesperiode avslås + // 5 siste uker fellesperiode avslås uttakPeriode = resultat.get(4).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(15)); assertThat(uttakPeriode.getTom()).isEqualTo(graderingTom); @@ -467,32 +573,40 @@ void utbetalingsgrad_og_trekkdager_skal_ta_utgangspunkt_samtidig_uttaksprosent_f var grunnlag = create(); leggPåKvoter(grunnlag); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode( - gradertoppgittPeriode(FELLESPERIODE, fødselsdato.minusWeeks(6), fødselsdato.minusWeeks(3).minusDays(1), BigDecimal.valueOf(50))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)))) - .inngangsvilkår(oppfyltAlleVilkår()); + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(gradertoppgittPeriode( + FELLESPERIODE, + fødselsdato.minusWeeks(6), + fødselsdato.minusWeeks(3).minusDays(1), + BigDecimal.valueOf(50))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)))) + .inngangsvilkår(oppfyltAlleVilkår()); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); - //Foreldrepenger før fødsel innvilges + // Foreldrepenger før fødsel innvilges var uttakPeriode = resultat.get(0).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.minusWeeks(6)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.minusWeeks(3).minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //3 uker før fødsel innvilges + // 3 uker før fødsel innvilges uttakPeriode = resultat.get(1).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.erGraderingInnvilget()).isFalse(); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges uttakPeriode = resultat.get(2).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); @@ -504,22 +618,33 @@ void utbetalingsgrad_og_trekkdager_skal_ta_utgangspunkt_samtidig_uttaksprosent_f void skal_ha_en_desimal_på_trekkdager_ved_gradering() { var omsorgsovertakelse = LocalDate.of(2019, 4, 8); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 100)); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .rettOgOmsorg(aleneomsorg()) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(gradertoppgittPeriode(FORELDREPENGER, omsorgsovertakelse, omsorgsovertakelse.plusDays(4), BigDecimal.valueOf(50))) - .oppgittPeriode( - gradertoppgittPeriode(FORELDREPENGER, omsorgsovertakelse.plusWeeks(1), omsorgsovertakelse.plusWeeks(1), BigDecimal.TEN))) - .inngangsvilkår(oppfyltAlleVilkår()); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .rettOgOmsorg(aleneomsorg()) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(gradertoppgittPeriode( + FORELDREPENGER, + omsorgsovertakelse, + omsorgsovertakelse.plusDays(4), + BigDecimal.valueOf(50))) + .oppgittPeriode(gradertoppgittPeriode( + FORELDREPENGER, + omsorgsovertakelse.plusWeeks(1), + omsorgsovertakelse.plusWeeks(1), + BigDecimal.TEN))) + .inngangsvilkår(oppfyltAlleVilkår()); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(2.5)); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(0.9)); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(2.5)); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(0.9)); } @Test @@ -529,38 +654,58 @@ void skal_knekke_riktig_ved_flere_graderingsperioder_og_flere_arbeidsforhold() { var arbeidsforhold2 = new Arbeidsforhold(ARBEIDSFORHOLD_2); var arbeidsforhold3 = new Arbeidsforhold(ARBEIDSFORHOLD_3); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 100)); - //Fastsatt periode før å få ulik saldo - var fastsattAktiviter = List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(96), FORELDREPENGER, ARBEIDSFORHOLD_1), - new FastsattUttakPeriodeAktivitet(new Trekkdager(96), FORELDREPENGER, ARBEIDSFORHOLD_2), - new FastsattUttakPeriodeAktivitet(Trekkdager.ZERO, FORELDREPENGER, ARBEIDSFORHOLD_3)); - var fastsattPeriode = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .tidsperiode(omsorgsovertakelse.minusDays(1), omsorgsovertakelse.minusDays(1)) - .aktiviteter(fastsattAktiviter); + // Fastsatt periode før å få ulik saldo + var fastsattAktiviter = List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(96), FORELDREPENGER, ARBEIDSFORHOLD_1), + new FastsattUttakPeriodeAktivitet(new Trekkdager(96), FORELDREPENGER, ARBEIDSFORHOLD_2), + new FastsattUttakPeriodeAktivitet(Trekkdager.ZERO, FORELDREPENGER, ARBEIDSFORHOLD_3)); + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .tidsperiode(omsorgsovertakelse.minusDays(1), omsorgsovertakelse.minusDays(1)) + .aktiviteter(fastsattAktiviter); var vedtak = new Vedtak.Builder().leggTilPeriode(fastsattPeriode); - var grunnlag = new RegelGrunnlag.Builder().arbeid( - new Arbeid.Builder().arbeidsforhold(arbeidsforhold1).arbeidsforhold(arbeidsforhold2).arbeidsforhold(arbeidsforhold3)) - .kontoer(kontoer) - .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .rettOgOmsorg(aleneomsorg()) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(gradertoppgittPeriode(FORELDREPENGER, omsorgsovertakelse, omsorgsovertakelse.plusDays(4), BigDecimal.valueOf(50), - Set.of(ARBEIDSFORHOLD_1, ARBEIDSFORHOLD_2))) - .oppgittPeriode( - gradertoppgittPeriode(FORELDREPENGER, omsorgsovertakelse.plusWeeks(1), omsorgsovertakelse.plusWeeks(1), BigDecimal.TEN, - Set.of(ARBEIDSFORHOLD_1, ARBEIDSFORHOLD_2))) - .oppgittPeriode(gradertoppgittPeriode(FORELDREPENGER, omsorgsovertakelse.plusWeeks(1).plusDays(1), omsorgsovertakelse.plusWeeks(10), - BigDecimal.valueOf(75), Set.of(ARBEIDSFORHOLD_1, ARBEIDSFORHOLD_2)))) - .inngangsvilkår(oppfyltAlleVilkår()) - .revurdering(new Revurdering.Builder().gjeldendeVedtak(vedtak)); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder() + .arbeidsforhold(arbeidsforhold1) + .arbeidsforhold(arbeidsforhold2) + .arbeidsforhold(arbeidsforhold3)) + .kontoer(kontoer) + .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .rettOgOmsorg(aleneomsorg()) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(gradertoppgittPeriode( + FORELDREPENGER, + omsorgsovertakelse, + omsorgsovertakelse.plusDays(4), + BigDecimal.valueOf(50), + Set.of(ARBEIDSFORHOLD_1, ARBEIDSFORHOLD_2))) + .oppgittPeriode(gradertoppgittPeriode( + FORELDREPENGER, + omsorgsovertakelse.plusWeeks(1), + omsorgsovertakelse.plusWeeks(1), + BigDecimal.TEN, + Set.of(ARBEIDSFORHOLD_1, ARBEIDSFORHOLD_2))) + .oppgittPeriode(gradertoppgittPeriode( + FORELDREPENGER, + omsorgsovertakelse.plusWeeks(1).plusDays(1), + omsorgsovertakelse.plusWeeks(10), + BigDecimal.valueOf(75), + Set.of(ARBEIDSFORHOLD_1, ARBEIDSFORHOLD_2)))) + .inngangsvilkår(oppfyltAlleVilkår()) + .revurdering(new Revurdering.Builder().gjeldendeVedtak(vedtak)); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //Resten av dagene 4 - 2.5 - 0.9. - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(1.5)); - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)).isEqualTo(new Trekkdager(1.5)); - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_3)).isEqualTo(new Trekkdager(6)); + // Resten av dagene 4 - 2.5 - 0.9. + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(1.5)); + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)) + .isEqualTo(new Trekkdager(1.5)); + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_3)) + .isEqualTo(new Trekkdager(6)); assertThat(resultat.get(2).uttakPeriode().getTom()).isEqualTo(LocalDate.of(2019, 4, 23)); } @@ -570,74 +715,106 @@ void skal_knekke_riktig_ved_flere_graderingsperioder_og_flere_arbeidsforhold() { var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 100)); var arbeidsforhold1 = new Arbeidsforhold(ARBEIDSFORHOLD_1); var arbeidsforhold2 = new Arbeidsforhold(ARBEIDSFORHOLD_2); - //Fastsatt periode før å få ulik saldo - var fastsattPeriode = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .tidsperiode(omsorgsovertakelse.minusDays(1), omsorgsovertakelse.minusDays(1)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(96), FORELDREPENGER, ARBEIDSFORHOLD_2), - new FastsattUttakPeriodeAktivitet(Trekkdager.ZERO, FORELDREPENGER, ARBEIDSFORHOLD_1))); + // Fastsatt periode før å få ulik saldo + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .tidsperiode(omsorgsovertakelse.minusDays(1), omsorgsovertakelse.minusDays(1)) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(96), FORELDREPENGER, ARBEIDSFORHOLD_2), + new FastsattUttakPeriodeAktivitet(Trekkdager.ZERO, FORELDREPENGER, ARBEIDSFORHOLD_1))); var vedtak = new Vedtak.Builder().leggTilPeriode(fastsattPeriode); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold1).arbeidsforhold(arbeidsforhold2)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .rettOgOmsorg(aleneomsorg()) - .behandling(farBehandling()) - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(gradertoppgittPeriode(FORELDREPENGER, omsorgsovertakelse, omsorgsovertakelse.plusDays(4), BigDecimal.valueOf(50), - Set.of(ARBEIDSFORHOLD_1)))) - .inngangsvilkår(oppfyltAlleVilkår()) - .revurdering(new Revurdering.Builder().gjeldendeVedtak(vedtak)); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold1).arbeidsforhold(arbeidsforhold2)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .rettOgOmsorg(aleneomsorg()) + .behandling(farBehandling()) + .kontoer(kontoer) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(gradertoppgittPeriode( + FORELDREPENGER, + omsorgsovertakelse, + omsorgsovertakelse.plusDays(4), + BigDecimal.valueOf(50), + Set.of(ARBEIDSFORHOLD_1)))) + .inngangsvilkår(oppfyltAlleVilkår()) + .revurdering(new Revurdering.Builder().gjeldendeVedtak(vedtak)); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(2)); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)).isEqualTo(new Trekkdager(4)); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(2)); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)) + .isEqualTo(new Trekkdager(4)); assertThat(resultat.get(0).uttakPeriode().getTom()).isEqualTo(LocalDate.of(2019, 4, 11)); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(new BigDecimal("0.5"))); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)).isEqualTo(Trekkdager.ZERO); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(new BigDecimal("0.5"))); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)) + .isEqualTo(Trekkdager.ZERO); } @Test void skal_sette_trekkdager_lik_lengden_på_perioden_før_knekk() { var omsorgsovertakelse = LocalDate.of(2019, 4, 8); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 100)); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) - .kontoer(kontoer) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .rettOgOmsorg(aleneomsorg()) - .behandling(farBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(gradertoppgittPeriode(FORELDREPENGER, omsorgsovertakelse, omsorgsovertakelse.plusWeeks(1), BigDecimal.valueOf(75))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, omsorgsovertakelse.plusWeeks(1).plusDays(1), omsorgsovertakelse.plusWeeks(100)))) - .inngangsvilkår(oppfyltAlleVilkår()); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .adopsjon(new Adopsjon.Builder().ankomstNorge(omsorgsovertakelse)) + .kontoer(kontoer) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .rettOgOmsorg(aleneomsorg()) + .behandling(farBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(gradertoppgittPeriode( + FORELDREPENGER, + omsorgsovertakelse, + omsorgsovertakelse.plusWeeks(1), + BigDecimal.valueOf(75))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, + omsorgsovertakelse.plusWeeks(1).plusDays(1), + omsorgsovertakelse.plusWeeks(100)))) + .inngangsvilkår(oppfyltAlleVilkår()); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(1.5)); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(99)); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(1.5)); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(99)); } @Test void skal_ikke_få_innvilget_en_hel_ekstra_trekkdag() { var fødselsdato = LocalDate.of(2019, 2, 11); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(FELLESPERIODE, 80)) - .konto(konto(FEDREKVOTE, 75)) - .konto(konto(MØDREKVOTE, 75)); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - //Søker så at konto akkurat går går opp i 76 trekkdager - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(gradertoppgittPeriode(FEDREKVOTE, LocalDate.of(2019, 5, 3), LocalDate.of(2019, 7, 5), BigDecimal.valueOf(60))) - .oppgittPeriode(utsettelsePeriode(LocalDate.of(2019, 7, 8), LocalDate.of(2019, 7, 26), UtsettelseÅrsak.FERIE, null)) - .oppgittPeriode(gradertoppgittPeriode(FEDREKVOTE, LocalDate.of(2019, 7, 29), LocalDate.of(2020, 2, 13), BigDecimal.valueOf(60)))) - .inngangsvilkår(oppfyltAlleVilkår()); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(FELLESPERIODE, 80)) + .konto(konto(FEDREKVOTE, 75)) + .konto(konto(MØDREKVOTE, 75)); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + // Søker så at konto akkurat går går opp i 76 trekkdager + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(gradertoppgittPeriode( + FEDREKVOTE, LocalDate.of(2019, 5, 3), LocalDate.of(2019, 7, 5), BigDecimal.valueOf(60))) + .oppgittPeriode(utsettelsePeriode( + LocalDate.of(2019, 7, 8), LocalDate.of(2019, 7, 26), UtsettelseÅrsak.FERIE, null)) + .oppgittPeriode(gradertoppgittPeriode( + FEDREKVOTE, + LocalDate.of(2019, 7, 29), + LocalDate.of(2020, 2, 13), + BigDecimal.valueOf(60)))) + .inngangsvilkår(oppfyltAlleVilkår()); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); @@ -656,14 +833,28 @@ void skal_knekke_riktig_ved_flere_graderingsperioder_og_flere_arbeidsforhold() { var grunnlag = RegelGrunnlagTestBuilder.create(); leggPåKvoter(grunnlag); var mottattDato = fødselsdato.plusWeeks(8).minusDays(1); - var gradering = OppgittPeriode.forGradering(MØDREKVOTE, fødselsdato.plusWeeks(6), mottattDato.plusWeeks(1), BigDecimal.TEN, null, false, - Set.of(ARBEIDSFORHOLD_1), mottattDato, mottattDato, null, null); + var gradering = OppgittPeriode.forGradering( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + mottattDato.plusWeeks(1), + BigDecimal.TEN, + null, + false, + Set.of(ARBEIDSFORHOLD_1), + mottattDato, + mottattDato, + null, + null); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling().kreverSammenhengendeUttak(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(gradering)); + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling().kreverSammenhengendeUttak(true)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(gradering)); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); @@ -675,18 +866,33 @@ void skal_knekke_riktig_ved_flere_graderingsperioder_og_flere_arbeidsforhold() { var grunnlag = RegelGrunnlagTestBuilder.create(); leggPåKvoter(grunnlag); var mottattDato = fødselsdato.plusWeeks(8).minusDays(1); - var gradering = OppgittPeriode.forGradering(MØDREKVOTE, fødselsdato.plusWeeks(6), mottattDato.plusWeeks(1), BigDecimal.TEN, null, false, - Set.of(ARBEIDSFORHOLD_1), mottattDato, mottattDato, null, null); + var gradering = OppgittPeriode.forGradering( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + mottattDato.plusWeeks(1), + BigDecimal.TEN, + null, + false, + Set.of(ARBEIDSFORHOLD_1), + mottattDato, + mottattDato, + null, + null); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling().kreverSammenhengendeUttak(false)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(gradering)); + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling().kreverSammenhengendeUttak(false)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(gradering)); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getGraderingIkkeInnvilgetÅrsak()).isNull(); + assertThat(resultat.get(1).uttakPeriode().getGraderingIkkeInnvilgetÅrsak()) + .isNull(); } @Test @@ -696,14 +902,28 @@ void skal_knekke_riktig_ved_flere_graderingsperioder_og_flere_arbeidsforhold() { leggPåKvoter(grunnlag); var senestMottattDato = fødselsdato.plusWeeks(8).minusDays(1); var tidligstMottattDato = fødselsdato.plusWeeks(6); - var gradering = OppgittPeriode.forGradering(MØDREKVOTE, fødselsdato.plusWeeks(6), senestMottattDato.plusWeeks(1), BigDecimal.TEN, null, false, - Set.of(ARBEIDSFORHOLD_1), senestMottattDato, tidligstMottattDato, null, null); + var gradering = OppgittPeriode.forGradering( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + senestMottattDato.plusWeeks(1), + BigDecimal.TEN, + null, + false, + Set.of(ARBEIDSFORHOLD_1), + senestMottattDato, + tidligstMottattDato, + null, + null); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(gradering)); + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(gradering)); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); @@ -716,33 +936,49 @@ void skal_knekke_riktig_ved_flere_graderingsperioder_og_flere_arbeidsforhold() { leggPåKvoter(grunnlag); var mottattDato = fødselsdato.plusWeeks(8).minusDays(1); var kontoer = new Kontoer.Builder().konto(konto(MØDREKVOTE, 200)); - var gradering = OppgittPeriode.forGradering(MØDREKVOTE, fødselsdato.plusWeeks(5), mottattDato.plusWeeks(1), BigDecimal.TEN, null, false, - Set.of(ARBEIDSFORHOLD_1), mottattDato, mottattDato, null, null); + var gradering = OppgittPeriode.forGradering( + MØDREKVOTE, + fødselsdato.plusWeeks(5), + mottattDato.plusWeeks(1), + BigDecimal.TEN, + null, + false, + Set.of(ARBEIDSFORHOLD_1), + mottattDato, + mottattDato, + null, + null); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)).arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))) - .kontoer(kontoer) - .behandling(morBehandling().kreverSammenhengendeUttak(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(5).minusDays(1))) - .oppgittPeriode(gradering)) - .inngangsvilkår(oppfyltAlleVilkår()); + .rettOgOmsorg(beggeRett()) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)) + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))) + .kontoer(kontoer) + .behandling(morBehandling().kreverSammenhengendeUttak(true)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(5).minusDays(1))) + .oppgittPeriode(gradering)) + .inngangsvilkår(oppfyltAlleVilkår()); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); - assertThat(resultat.get(1).uttakPeriode().getGraderingIkkeInnvilgetÅrsak()).isEqualTo( - GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); + assertThat(resultat.get(1).uttakPeriode().getGraderingIkkeInnvilgetÅrsak()) + .isEqualTo(GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); assertThat(resultat.get(1).uttakPeriode().erGraderingInnvilget()).isFalse(); - assertThat(resultat.get(1).uttakPeriode().erGraderingInnvilget(ARBEIDSFORHOLD_1)).isFalse(); - assertThat(resultat.get(1).uttakPeriode().erGraderingInnvilget(ARBEIDSFORHOLD_1)).isFalse(); - assertThat(resultat.get(1) - .uttakPeriode() - .getAktiviteter() - .stream() - .anyMatch(a -> a.isSøktGradering() && a.getIdentifikator().equals(ARBEIDSFORHOLD_1))).isTrue(); - assertThat(resultat.get(1) - .uttakPeriode() - .getAktiviteter() - .stream() - .anyMatch(a -> a.isSøktGradering() && a.getIdentifikator().equals(ARBEIDSFORHOLD_2))).isFalse(); + assertThat(resultat.get(1).uttakPeriode().erGraderingInnvilget(ARBEIDSFORHOLD_1)) + .isFalse(); + assertThat(resultat.get(1).uttakPeriode().erGraderingInnvilget(ARBEIDSFORHOLD_1)) + .isFalse(); + assertThat(resultat.get(1).uttakPeriode().getAktiviteter().stream() + .anyMatch( + a -> a.isSøktGradering() && a.getIdentifikator().equals(ARBEIDSFORHOLD_1))) + .isTrue(); + assertThat(resultat.get(1).uttakPeriode().getAktiviteter().stream() + .anyMatch( + a -> a.isSøktGradering() && a.getIdentifikator().equals(ARBEIDSFORHOLD_2))) + .isFalse(); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktIdentifisererTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktIdentifisererTest.java index 4701a7c3..8c3abfb0 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktIdentifisererTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktIdentifisererTest.java @@ -1,15 +1,11 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; - import static org.assertj.core.api.Assertions.assertThat; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; @@ -28,21 +24,28 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.ytelser.Pleiepenger; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.ytelser.PleiepengerPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.ytelser.Ytelser; +import org.junit.jupiter.api.Test; class KnekkpunktIdentifisererTest { @Test void skal_finne_knekkpunkter_for_søknad_ved_fødsel() { var fødselsdato = LocalDate.of(2018, 2, 22); - var grunnlag = RegelGrunnlagTestBuilder.create().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)).datoer(datoer(fødselsdato)).build(); + var grunnlag = RegelGrunnlagTestBuilder.create() + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .datoer(datoer(fødselsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); - assertThat(knekkpunkter).containsOnly(fødselsdato.minusWeeks(12), //tidligste mulige uttak - fødselsdato.minusWeeks(3), //foreldrepenger før fødsel - fødselsdato, fødselsdato.plusWeeks(6), //slutt på periode reservert mor - fødselsdato.plusYears(3) //siste mulige uttak for foreldrepenger - ); + assertThat(knekkpunkter) + .containsOnly( + fødselsdato.minusWeeks(12), // tidligste mulige uttak + fødselsdato.minusWeeks(3), // foreldrepenger før fødsel + fødselsdato, + fødselsdato.plusWeeks(6), // slutt på periode reservert mor + fødselsdato.plusYears(3) // siste mulige uttak for foreldrepenger + ); } @Test @@ -50,10 +53,10 @@ class KnekkpunktIdentifisererTest { var fødselsdato = LocalDate.of(2018, 2, 22); var opphørsdato = fødselsdato.plusWeeks(1); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .datoer(datoer(fødselsdato)) - .medlemskap(new Medlemskap.Builder().opphørsdato(opphørsdato)) - .build(); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .datoer(datoer(fødselsdato)) + .medlemskap(new Medlemskap.Builder().opphørsdato(opphørsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -64,32 +67,36 @@ class KnekkpunktIdentifisererTest { void skal_finne_knekkpunkter_ved_adopsjon() { var adopsjonsdato = LocalDate.of(2018, 2, 22); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) - .datoer(new Datoer.Builder().omsorgsovertakelse(adopsjonsdato)) - .build(); + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) + .datoer(new Datoer.Builder().omsorgsovertakelse(adopsjonsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); - assertThat(knekkpunkter).containsOnly(adopsjonsdato.minusWeeks(12), //tidligste mulige uttak? - adopsjonsdato, adopsjonsdato.plusYears(3) //siste mulige uttak for foreldrepenger - ); + assertThat(knekkpunkter) + .containsOnly( + adopsjonsdato.minusWeeks(12), // tidligste mulige uttak? + adopsjonsdato, + adopsjonsdato.plusYears(3) // siste mulige uttak for foreldrepenger + ); } @Test void skal_lage_knekkpunkt_ved_start_og_dagen_etter_periode_medslutt_av_() { var adopsjonsdato = LocalDate.of(2018, 2, 22); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) - .datoer(new Datoer.Builder().omsorgsovertakelse(adopsjonsdato)) - .build(); + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) + .datoer(new Datoer.Builder().omsorgsovertakelse(adopsjonsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); - assertThat(knekkpunkter).containsOnly(adopsjonsdato.minusWeeks(12), //tidligste mulige uttak? - adopsjonsdato, - - adopsjonsdato.plusYears(3) //siste mulige uttak for foreldrepenger - ); + assertThat(knekkpunkter) + .containsOnly( + adopsjonsdato.minusWeeks(12), // tidligste mulige uttak? + adopsjonsdato, + adopsjonsdato.plusYears(3) // siste mulige uttak for foreldrepenger + ); } @Test @@ -99,13 +106,22 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperStart1() { var førsteLovligeSøknadsperiode = fødselsdato.minusWeeks(12); var knekkdato = uttakStartdato.plusDays(1); var grunnlag = RegelGrunnlagTestBuilder.create() - .annenPart( - new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(uttakStartdato, uttakStartdato.plusDays(10)).build())) - .søknad(new Søknad.Builder().oppgittPeriode( - OppgittPeriode.forVanligPeriode(Stønadskontotype.FELLESPERIODE, knekkdato, uttakStartdato.plusDays(10), SamtidigUttaksprosent.TEN, - true, null, null, null, null))) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .build(); + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(uttakStartdato, uttakStartdato.plusDays(10)) + .build())) + .søknad(new Søknad.Builder() + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + Stønadskontotype.FELLESPERIODE, + knekkdato, + uttakStartdato.plusDays(10), + SamtidigUttaksprosent.TEN, + true, + null, + null, + null, + null))) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); knekkpunkter.removeAll(standardKnekkpunktFødsel(fødselsdato, førsteLovligeSøknadsperiode)); @@ -119,17 +135,29 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperStart2() { var førsteLovligeSøknadsperiode = fødselsdato.minusWeeks(12); var knekkdato = uttakStartdato.plusDays(1); var grunnlag = RegelGrunnlagTestBuilder.create() - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(uttakStartdato.plusDays(1), uttakStartdato.plusDays(10)).build())) - .søknad(new Søknad.Builder().oppgittPeriode( - OppgittPeriode.forVanligPeriode(Stønadskontotype.FELLESPERIODE, uttakStartdato, knekkdato, SamtidigUttaksprosent.TEN, true, null, - null, null, null))) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .build(); + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + uttakStartdato.plusDays(1), uttakStartdato.plusDays(10)) + .build())) + .søknad(new Søknad.Builder() + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + Stønadskontotype.FELLESPERIODE, + uttakStartdato, + knekkdato, + SamtidigUttaksprosent.TEN, + true, + null, + null, + null, + null))) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); knekkpunkter.removeAll(standardKnekkpunktFødsel(fødselsdato, førsteLovligeSøknadsperiode)); - assertThat(knekkpunkter).containsExactlyInAnyOrder(knekkdato, uttakStartdato, uttakStartdato.plusDays(11), knekkdato.plusDays(1)); + assertThat(knekkpunkter) + .containsExactlyInAnyOrder( + knekkdato, uttakStartdato, uttakStartdato.plusDays(11), knekkdato.plusDays(1)); } @Test @@ -138,18 +166,32 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperMidtI() { var fødselsdato = uttakStartdato.minusWeeks(7); var førsteLovligeSøknadsperiode = fødselsdato.minusWeeks(12); var grunnlag = RegelGrunnlagTestBuilder.create() - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(uttakStartdato.plusDays(1), uttakStartdato.plusDays(5)).build())) - .søknad(new Søknad.Builder().oppgittPeriode( - OppgittPeriode.forVanligPeriode(Stønadskontotype.FELLESPERIODE, uttakStartdato, uttakStartdato.plusDays(6), SamtidigUttaksprosent.TEN, - true, null, null, null, null))) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .build(); + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + uttakStartdato.plusDays(1), uttakStartdato.plusDays(5)) + .build())) + .søknad(new Søknad.Builder() + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + Stønadskontotype.FELLESPERIODE, + uttakStartdato, + uttakStartdato.plusDays(6), + SamtidigUttaksprosent.TEN, + true, + null, + null, + null, + null))) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); knekkpunkter.removeAll(standardKnekkpunktFødsel(fødselsdato, førsteLovligeSøknadsperiode)); - assertThat(knekkpunkter).containsExactlyInAnyOrder(uttakStartdato, uttakStartdato.plusDays(7), uttakStartdato.plusDays(1), - uttakStartdato.plusDays(6)); + assertThat(knekkpunkter) + .containsExactlyInAnyOrder( + uttakStartdato, + uttakStartdato.plusDays(7), + uttakStartdato.plusDays(1), + uttakStartdato.plusDays(6)); } @Test @@ -163,30 +205,54 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri var annenPartPeriodeTom = stønadsperiodeFom.plusDays(12); var grunnlag = RegelGrunnlagTestBuilder.create() - .annenPart(new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(annenPartPeriodeFom, annenPartPeriodeTom).build())) - .søknad(new Søknad.Builder().oppgittPeriode( - OppgittPeriode.forVanligPeriode(Stønadskontotype.FELLESPERIODE, stønadsperiodeFom, stønadsperiodeTom, SamtidigUttaksprosent.TEN, true, - null, null, null, null))) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .build(); + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(annenPartPeriodeFom, annenPartPeriodeTom) + .build())) + .søknad(new Søknad.Builder() + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + Stønadskontotype.FELLESPERIODE, + stønadsperiodeFom, + stønadsperiodeTom, + SamtidigUttaksprosent.TEN, + true, + null, + null, + null, + null))) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); knekkpunkter.removeAll(standardKnekkpunktFødsel(fødselsdato, førsteLovligeSøknadsperiode)); - assertThat(knekkpunkter).containsExactlyInAnyOrder(stønadsperiodeFom, stønadsperiodeTom.plusDays(1), annenPartPeriodeFom, - annenPartPeriodeTom.plusDays(1)); + assertThat(knekkpunkter) + .containsExactlyInAnyOrder( + stønadsperiodeFom, + stønadsperiodeTom.plusDays(1), + annenPartPeriodeFom, + annenPartPeriodeTom.plusDays(1)); } @Test void finnerKnekkPåEndringssøknadMottattdatoHvisGraderingStarterPåMottattdato() { var mottattdato = LocalDate.of(2018, 10, 10); var gradertArbeidsforhold = AktivitetIdentifikator.forFrilans(); - var gradering = OppgittPeriode.forGradering(Stønadskontotype.MØDREKVOTE, mottattdato, mottattdato.plusWeeks(2), BigDecimal.valueOf(30), null, - false, Set.of(gradertArbeidsforhold), mottattdato, mottattdato, null, null); + var gradering = OppgittPeriode.forGradering( + Stønadskontotype.MØDREKVOTE, + mottattdato, + mottattdato.plusWeeks(2), + BigDecimal.valueOf(30), + null, + false, + Set.of(gradertArbeidsforhold), + mottattdato, + mottattdato, + null, + null); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) - .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2018, 5, 5))) - .søknad(new Søknad.Builder().oppgittPeriode(gradering)) - .build(); + .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) + .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2018, 5, 5))) + .søknad(new Søknad.Builder().oppgittPeriode(gradering)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -197,13 +263,23 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri void finnerIkkeKnekkPåEndringssøknadMottattdatoHvisGraderingStarterEtterMottattdato() { var mottattdato = LocalDate.of(2018, 10, 10); var gradertArbeidsforhold = AktivitetIdentifikator.forFrilans(); - var gradering = OppgittPeriode.forGradering(Stønadskontotype.MØDREKVOTE, mottattdato.plusWeeks(1), mottattdato.plusWeeks(2), - BigDecimal.valueOf(30), null, false, Set.of(gradertArbeidsforhold), mottattdato, mottattdato, null, null); + var gradering = OppgittPeriode.forGradering( + Stønadskontotype.MØDREKVOTE, + mottattdato.plusWeeks(1), + mottattdato.plusWeeks(2), + BigDecimal.valueOf(30), + null, + false, + Set.of(gradertArbeidsforhold), + mottattdato, + mottattdato, + null, + null); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) - .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2018, 5, 5))) - .søknad(new Søknad.Builder().oppgittPeriode(gradering)) - .build(); + .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) + .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2018, 5, 5))) + .søknad(new Søknad.Builder().oppgittPeriode(gradering)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -213,13 +289,13 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri @Test void finnerKnekkPåEndringssøknadMottattdatoHvisUtsettelseFerieArbeidStarterPåMottattdato() { var mottattdato = LocalDate.of(2018, 10, 10); - var utsettelse = OppgittPeriode.forUtsettelse(mottattdato, mottattdato.plusWeeks(2), UtsettelseÅrsak.ARBEID, mottattdato, mottattdato, null, - null); + var utsettelse = OppgittPeriode.forUtsettelse( + mottattdato, mottattdato.plusWeeks(2), UtsettelseÅrsak.ARBEID, mottattdato, mottattdato, null, null); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) - .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2018, 5, 5))) - .søknad(new Søknad.Builder().oppgittPeriode(utsettelse)) - .build(); + .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) + .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2018, 5, 5))) + .søknad(new Søknad.Builder().oppgittPeriode(utsettelse)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -229,13 +305,19 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri @Test void finnerIkkeKnekkPåEndringssøknadMottattdatoHvisUtsettelseFerieArbeidStarterEtterMottattdato() { var mottattdato = LocalDate.of(2018, 10, 10); - var utsettelse = OppgittPeriode.forUtsettelse(mottattdato.plusWeeks(1), mottattdato.plusWeeks(2), UtsettelseÅrsak.FERIE, mottattdato, - mottattdato, null, null); + var utsettelse = OppgittPeriode.forUtsettelse( + mottattdato.plusWeeks(1), + mottattdato.plusWeeks(2), + UtsettelseÅrsak.FERIE, + mottattdato, + mottattdato, + null, + null); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) - .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2018, 5, 5))) - .søknad(new Søknad.Builder().oppgittPeriode(utsettelse)) - .build(); + .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) + .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2018, 5, 5))) + .søknad(new Søknad.Builder().oppgittPeriode(utsettelse)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -247,10 +329,12 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri var fødselsdato = LocalDate.of(2019, 5, 1); var tom = LocalDate.of(2019, 5, 25); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forUtsettelse(fødselsdato, tom, UtsettelseÅrsak.FERIE, null, null, null, null))) - .datoer(datoer(fødselsdato)) - .build(); + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forUtsettelse( + fødselsdato, tom, UtsettelseÅrsak.FERIE, null, null, null, null))) + .datoer(datoer(fødselsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -263,9 +347,9 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri var termin = LocalDate.of(2019, 9, 23); var førsteLovligeSøknadsperiode = LocalDate.of(2017, 12, 1); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termin)) - .build(); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termin)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -278,11 +362,13 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri var startdato1 = fødselsdato.plusWeeks(8); var startdato2 = fødselsdato.plusWeeks(10); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .datoer(datoer(fødselsdato)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans(), startdato1)) - .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende(), startdato2))) - .build(); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .datoer(datoer(fødselsdato)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans(), startdato1)) + .arbeidsforhold( + new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende(), startdato2))) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -294,10 +380,11 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri var fødselsdato = LocalDate.of(2019, 9, 23); var startdato = fødselsdato.plusWeeks(8); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .datoer(datoer(fødselsdato)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans(), startdato))) - .build(); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .datoer(datoer(fødselsdato)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans(), startdato))) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -305,24 +392,45 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri } @Test - void skal_knekke_på_første_lovlige_uttaksdag_for_hver_søknadsperiode_der_første_lovlige_uttaksdag_overlapper_med_periode() { + void + skal_knekke_på_første_lovlige_uttaksdag_for_hver_søknadsperiode_der_første_lovlige_uttaksdag_overlapper_med_periode() { var fødselsdato = LocalDate.of(2020, 7, 20); var mottattDatoPeriode1 = LocalDate.of(2020, 11, 1); var mottattDatoPeriode2 = LocalDate.of(2021, 2, 1); - var periode1 = OppgittPeriode.forVanligPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, LocalDate.of(2020, 11, 15), null, false, - mottattDatoPeriode1, mottattDatoPeriode1, null, null); - var periode2 = OppgittPeriode.forVanligPeriode(Stønadskontotype.MØDREKVOTE, LocalDate.of(2020, 11, 16), LocalDate.of(2020, 12, 15), null, - false, mottattDatoPeriode2, mottattDatoPeriode2, null, null); + var periode1 = OppgittPeriode.forVanligPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + LocalDate.of(2020, 11, 15), + null, + false, + mottattDatoPeriode1, + mottattDatoPeriode1, + null, + null); + var periode2 = OppgittPeriode.forVanligPeriode( + Stønadskontotype.MØDREKVOTE, + LocalDate.of(2020, 11, 16), + LocalDate.of(2020, 12, 15), + null, + false, + mottattDatoPeriode2, + mottattDatoPeriode2, + null, + null); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().oppgittePerioder(List.of(periode1, periode2)).type(Søknadstype.FØDSEL)) - .datoer(datoer(fødselsdato)) - .build(); + .søknad(new Søknad.Builder() + .oppgittePerioder(List.of(periode1, periode2)) + .type(Søknadstype.FØDSEL)) + .datoer(datoer(fødselsdato)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); - assertThat(knekkpunkter).contains( - LocalDate.of(2020, 8, 1))//Første lovlige dato for første periode ligger midt i perioden. Skal derfor knekkes for å avlås - .doesNotContain(LocalDate.of(2020, 11, 1)); //Første lovlige dato for andre periode ligger før start på perioden + assertThat(knekkpunkter) + .contains(LocalDate.of(2020, 8, 1)) // Første lovlige dato for første periode ligger midt i + // perioden. Skal derfor knekkes for å avlås + .doesNotContain(LocalDate.of(2020, 11, 1)); // Første lovlige dato for andre periode ligger før start på + // perioden } @Test @@ -331,10 +439,10 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri var innleggelseTom = LocalDate.of(2020, 10, 15); var pleiepenger = new Pleiepenger(Set.of(new PleiepengerPeriode(innleggelseFom, innleggelseTom, true))); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .datoer(new Datoer.Builder().fødsel(innleggelseFom)) - .ytelser(new Ytelser(pleiepenger)) - .build(); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .datoer(new Datoer.Builder().fødsel(innleggelseFom)) + .ytelser(new Ytelser(pleiepenger)) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -344,13 +452,19 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri @Test void ikkeKnekkPåMottattDatoForFriUtsettelse() { var mottattdato = LocalDate.of(2018, 10, 10); - var utsettelse = OppgittPeriode.forUtsettelse(mottattdato.minusWeeks(2), mottattdato.minusWeeks(1), UtsettelseÅrsak.FRI, mottattdato, - mottattdato, null, null); + var utsettelse = OppgittPeriode.forUtsettelse( + mottattdato.minusWeeks(2), + mottattdato.minusWeeks(1), + UtsettelseÅrsak.FRI, + mottattdato, + mottattdato, + null, + null); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) - .søknad(new Søknad.Builder().oppgittPeriode(utsettelse)) - .behandling(new Behandling.Builder()) - .build(); + .datoer(new Datoer.Builder().fødsel(LocalDate.of(2018, 5, 5))) + .søknad(new Søknad.Builder().oppgittPeriode(utsettelse)) + .behandling(new Behandling.Builder()) + .build(); var knekkpunkter = KnekkpunktIdentifiserer.finnKnekkpunkter(grunnlag); @@ -358,18 +472,16 @@ void finnerKnekkpunktVedOverlappIUttakperioderMedAnnenPart_overlapperSluttAvPeri } private List standardKnekkpunktFødsel(LocalDate fødselsdato, LocalDate førsteLovligeSøknadsperiode) { - return List.of(fødselsdato.minusWeeks(12), //tidligste mulige uttak - førsteLovligeSøknadsperiode,//ifbm søknadsfrist - fødselsdato.minusWeeks(3), //foreldrepenger før fødsel - fødselsdato, fødselsdato.plusWeeks(6), //slutt på periode reservert mor - fødselsdato.plusYears(3)); //siste mulige uttak for foreldrepenger + return List.of( + fødselsdato.minusWeeks(12), // tidligste mulige uttak + førsteLovligeSøknadsperiode, // ifbm søknadsfrist + fødselsdato.minusWeeks(3), // foreldrepenger før fødsel + fødselsdato, + fødselsdato.plusWeeks(6), // slutt på periode reservert mor + fødselsdato.plusYears(3)); // siste mulige uttak for foreldrepenger } - private Datoer.Builder datoer(LocalDate fødselsdato) { return new Datoer.Builder().fødsel(fødselsdato); } - } - - diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktOrkestreringTest.java index bc7fa786..d4f3a4a0 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/KnekkpunktOrkestreringTest.java @@ -8,9 +8,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -27,60 +24,80 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class KnekkpunktOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void foreldrepengerFørFødssel_søknad_fra_3_uker_før_fødsel_til_og_med_fødsel_blir_knekt_ved_fødsel() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL).trekkdager(3 * 5)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder() + .type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL) + .trekkdager(3 * 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer) - .build(); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer) + .build(); var perioder = fastsettPerioder(grunnlag); - assertThat(perioder).hasSize(3); //3 perioder fordi det også lages en manglende søkt periode for de 6 første ukene. + assertThat(perioder).hasSize(3); // 3 perioder fordi det også lages en manglende søkt periode for de 6 + // første ukene. assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); + assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato); } - @Test - void foreldrepengerFørFødsel_periode_dekker_alle_ukene_før_fødsel_slutter_etter_fødsel_blir_hvor_ukene_etter_fødsel_blir_avslått() { + void + foreldrepengerFørFødsel_periode_dekker_alle_ukene_før_fødsel_slutter_etter_fødsel_blir_hvor_ukene_etter_fødsel_blir_avslått() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL).trekkdager(3 * 5)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder() + .type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL) + .trekkdager(3 * 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.plusWeeks(4)))) - .kontoer(kontoer) - .build(); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.plusWeeks(4)))) + .kontoer(kontoer) + .build(); var perioder = fastsettPerioder(grunnlag); - assertThat(perioder).hasSize(3); //3 perioder fordi det også lages en manglende søkt periode for de 6 første ukene. + assertThat(perioder).hasSize(3); // 3 perioder fordi det også lages en manglende søkt periode for de 6 + // første ukene. assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); + assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(4)); } @@ -88,18 +105,26 @@ class KnekkpunktOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void riktig_knekk_ved_tom_for_dager_ifm_helg() { var fødselsdato = LocalDate.of(2018, 5, 15); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL).trekkdager(15)) - .konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(15 * 5)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder() + .type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL) + .trekkdager(15)) + .konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(15 * 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, LocalDate.of(2018, 6, 30)), - oppgittPeriode(Stønadskontotype.MØDREKVOTE, LocalDate.of(2018, 7, 1), LocalDate.of(2018, 12, 21)))) - .kontoer(kontoer) - .build(); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1)), + oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, LocalDate.of(2018, 6, 30)), + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, LocalDate.of(2018, 7, 1), LocalDate.of(2018, 12, 21)))) + .kontoer(kontoer) + .build(); var perioder = fastsettPerioder(grunnlag); @@ -111,7 +136,8 @@ void riktig_knekk_ved_tom_for_dager_ifm_helg() { assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(LocalDate.of(2018, 6, 26)); @@ -122,7 +148,8 @@ void riktig_knekk_ved_tom_for_dager_ifm_helg() { assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(LocalDate.of(2018, 8, 27)); assertThat(perioder.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(perioder.get(4).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(4).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); assertThat(perioder.get(4).uttakPeriode().getFom()).isEqualTo(LocalDate.of(2018, 8, 28)); assertThat(perioder.get(4).uttakPeriode().getTom()).isEqualTo(LocalDate.of(2018, 12, 21)); } @@ -130,16 +157,21 @@ void riktig_knekk_ved_tom_for_dager_ifm_helg() { @Test void riktig_knekk_ved_tom_for_dager_ifm_helg2() { var fødselsdato = LocalDate.of(2020, 9, 20); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FEDREKVOTE).trekkdager(10)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FEDREKVOTE).trekkdager(10)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(søknad(Søknadstype.FØDSEL, - //Starter søndag, slutter lørdag - oppgittPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)))) - .kontoer(kontoer) - .build(); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(søknad( + Søknadstype.FØDSEL, + // Starter søndag, slutter lørdag + oppgittPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1)))) + .kontoer(kontoer) + .build(); var perioder = fastsettPerioder(grunnlag); @@ -152,19 +184,29 @@ void riktig_knekk_ved_tom_for_dager_ifm_helg2() { @Test void periode_etter_knekk_skal_gå_videre() { var fødselsdato = LocalDate.of(2018, 5, 15); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL).trekkdager(15)) - .konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(15 * 5)) - .konto(new Konto.Builder().type(Stønadskontotype.FELLESPERIODE).trekkdager(2)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder() + .type(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL) + .trekkdager(15)) + .konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(15 * 5)) + .konto(new Konto.Builder().type(Stønadskontotype.FELLESPERIODE).trekkdager(2)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15)), - oppgittPeriode(Stønadskontotype.FELLESPERIODE, fødselsdato.plusWeeks(15).plusDays(1), fødselsdato.plusWeeks(15).plusDays(2)))) - .kontoer(kontoer) - .build(); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1)), + oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15)), + oppgittPeriode( + Stønadskontotype.FELLESPERIODE, + fødselsdato.plusWeeks(15).plusDays(1), + fødselsdato.plusWeeks(15).plusDays(2)))) + .kontoer(kontoer) + .build(); var perioder = fastsettPerioder(grunnlag); @@ -173,20 +215,27 @@ void riktig_knekk_ved_tom_for_dager_ifm_helg2() { assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //tom for mødrekvote - assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + // tom for mødrekvote + assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); assertThat(perioder.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); } @Test void en_lang_manglende_søkt_før_første_uttaksperiode_skal_gå_til_manuell_når_alle_dager_brukes_opp() { var fødselsdato = LocalDate.of(2018, 2, 13); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)); - var grunnlag = basicGrunnlag(fødselsdato).behandling(farBehandling()) - .rettOgOmsorg(bareFarRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FORELDREPENGER, LocalDate.of(2019, 3, 20), LocalDate.of(2019, 12, 24)))) - .kontoer(kontoer); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(200)); + var grunnlag = basicGrunnlag(fødselsdato) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FORELDREPENGER, + LocalDate.of(2019, 3, 20), + LocalDate.of(2019, 12, 24)))) + .kontoer(kontoer); var perioder = fastsettPerioder(grunnlag); @@ -199,22 +248,32 @@ void riktig_knekk_ved_tom_for_dager_ifm_helg2() { @Test void tilfelle_med_lang_overføring_sykdom() { var termindato = LocalDate.of(2022, 9, 24); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(95)) - .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(95)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(90)) - .konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(15)) - .farUttakRundtFødselDager(10); - var overføring = OppgittPeriode.forOverføring(MØDREKVOTE, LocalDate.of(2022, 9, 26), LocalDate.of(2023, 2, 3), - OverføringÅrsak.SYKDOM_ELLER_SKADE, LocalDate.of(2022, 8, 22), LocalDate.of(2022, 8, 22), - DokumentasjonVurdering.SYKDOM_ANNEN_FORELDER_GODKJENT); - var grunnlag = basicGrunnlag(termindato).behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .datoer(new Datoer.Builder().termin(termindato)) - .søknad(new Søknad.Builder().type(Søknadstype.TERMIN) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, LocalDate.of(2022, 9, 12), LocalDate.of(2022, 9, 23))) - .oppgittPeriode(overføring)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) - .kontoer(kontoer); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(95)) + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(95)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(90)) + .konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(15)) + .farUttakRundtFødselDager(10); + var overføring = OppgittPeriode.forOverføring( + MØDREKVOTE, + LocalDate.of(2022, 9, 26), + LocalDate.of(2023, 2, 3), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + LocalDate.of(2022, 8, 22), + LocalDate.of(2022, 8, 22), + DokumentasjonVurdering.SYKDOM_ANNEN_FORELDER_GODKJENT); + var grunnlag = basicGrunnlag(termindato) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .datoer(new Datoer.Builder().termin(termindato)) + .søknad(new Søknad.Builder() + .type(Søknadstype.TERMIN) + .oppgittPeriode( + oppgittPeriode(FEDREKVOTE, LocalDate.of(2022, 9, 12), LocalDate.of(2022, 9, 23))) + .oppgittPeriode(overføring)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) + .kontoer(kontoer); var perioder = fastsettPerioder(grunnlag); @@ -223,5 +282,4 @@ void riktig_knekk_ved_tom_for_dager_ifm_helg2() { assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); } - } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ManglendeS\303\270ktOrkestreringTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ManglendeS\303\270ktOrkestreringTest.java" index 4550e93b..e1345f7a 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ManglendeS\303\270ktOrkestreringTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ManglendeS\303\270ktOrkestreringTest.java" @@ -15,9 +15,6 @@ import java.time.LocalDate; import java.util.List; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; @@ -35,33 +32,44 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Vedtak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; +import org.junit.jupiter.api.Test; class ManglendeSøktOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void skal_avslå_og_trekke_foreldrepenger_for_bare_far_har_rett_hvis_dager_igjen() { var fødselsdato = LocalDate.of(2019, 9, 3); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad( - søknad(FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(50), fødselsdato.plusWeeks(52)))) - .kontoer(kontoer(konto(FORELDREPENGER, 100))) - .rettOgOmsorg(bareFarRett()) - .build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad( + FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(50), fødselsdato.plusWeeks(52)))) + .kontoer(kontoer(konto(FORELDREPENGER, 100))) + .rettOgOmsorg(bareFarRett()) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isFalse(); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isFalse(); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isFalse(); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isFalse(); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } @@ -77,26 +85,40 @@ private Kontoer.Builder kontoer(Konto.Builder... konto) { void skal_kunne_håndtere_ulikt_antall_dager_gjenværende_på_arbeidsforhold_ved_manglende_søkt_periode() { var fødselsdato = LocalDate.of(2019, 9, 3); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 25)); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(forFrilans())) - .arbeidsforhold(new Arbeidsforhold(forSelvstendigNæringsdrivende())); - //En fastsatt periode for å få ulikt antall saldo - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(6)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FORELDREPENGER, forFrilans()), - new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FORELDREPENGER, forSelvstendigNæringsdrivende()))) - .periodeResultatType(INNVILGET); - //SKal gå tom for dager på frilans før aktiviteten med sn - var søknad = søknad(FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(100), fødselsdato.plusWeeks(100), MORS_AKTIVITET_GODKJENT)); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad) - .kontoer(kontoer) - .arbeid(arbeid) - .rettOgOmsorg(bareFarRett()) - .revurdering(new Revurdering.Builder().endringsdato(fødselsdato).gjeldendeVedtak(new Vedtak.Builder().leggTilPeriode(fastsattPeriode))) - .build(); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(forFrilans())) + .arbeidsforhold(new Arbeidsforhold(forSelvstendigNæringsdrivende())); + // En fastsatt periode for å få ulikt antall saldo + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(6)) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FORELDREPENGER, forFrilans()), + new FastsattUttakPeriodeAktivitet( + new Trekkdager(0), FORELDREPENGER, forSelvstendigNæringsdrivende()))) + .periodeResultatType(INNVILGET); + // SKal gå tom for dager på frilans før aktiviteten med sn + var søknad = søknad( + FØDSEL, + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(100), + fødselsdato.plusWeeks(100), + MORS_AKTIVITET_GODKJENT)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad) + .kontoer(kontoer) + .arbeid(arbeid) + .rettOgOmsorg(bareFarRett()) + .revurdering(new Revurdering.Builder() + .endringsdato(fødselsdato) + .gjeldendeVedtak(new Vedtak.Builder().leggTilPeriode(fastsattPeriode))) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); - //UT1291 + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + // UT1291 assertThat(perioder.get(1).isManuellBehandling()).isTrue(); } @@ -109,139 +131,219 @@ private Kontoer.Builder kontoer(Konto.Builder... konto) { var startdatoNyttArbeidsforhold = fødselsdato.plusWeeks(12); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold)) - .arbeidsforhold(new Arbeidsforhold(tilkommetArbeidsforhold, startdatoNyttArbeidsforhold))) - .kontoer(kontoer(konto(FORELDREPENGER, 100))) - .inngangsvilkår(oppfyltAlleVilkår()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarRett()) - .søknad(new Søknad.Builder().type(FØDSEL) - .oppgittPeriode( - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(13), fødselsdato.plusWeeks(15).minusDays(1), MORS_AKTIVITET_GODKJENT))); + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold)) + .arbeidsforhold(new Arbeidsforhold(tilkommetArbeidsforhold, startdatoNyttArbeidsforhold))) + .kontoer(kontoer(konto(FORELDREPENGER, 100))) + .inngangsvilkår(oppfyltAlleVilkår()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarRett()) + .søknad(new Søknad.Builder() + .type(FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(13), + fødselsdato.plusWeeks(15).minusDays(1), + MORS_AKTIVITET_GODKJENT))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(0).uttakPeriode().getAktiviteter()).hasSize(1); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo( - new Trekkdager(Virkedager.beregnAntallVirkedager(fødselsdato.plusWeeks(6), startdatoNyttArbeidsforhold.minusDays(1)))); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)) + .isEqualTo(new Trekkdager(Virkedager.beregnAntallVirkedager( + fødselsdato.plusWeeks(6), startdatoNyttArbeidsforhold.minusDays(1)))); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(startdatoNyttArbeidsforhold.minusDays(1)); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(1).uttakPeriode().getAktiviteter()).hasSize(2); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); - assertThat(perioder.get(1).uttakPeriode().getTrekkdager(tilkommetArbeidsforhold)).isEqualTo(new Trekkdager(5)); + assertThat(perioder.get(1).uttakPeriode().getTrekkdager(tilkommetArbeidsforhold)) + .isEqualTo(new Trekkdager(5)); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(startdatoNyttArbeidsforhold); - //minus3 for vi ikke avslutter msp i helgen - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(13).minusDays(3)); + // minus3 for vi ikke avslutter msp i helgen + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(13).minusDays(3)); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(2).uttakPeriode().getAktiviteter()).hasSize(2); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(tilkommetArbeidsforhold).merEnn0()).isTrue(); - + assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); + assertThat(perioder.get(2) + .uttakPeriode() + .getTrekkdager(tilkommetArbeidsforhold) + .merEnn0()) + .isTrue(); } @Test void skal_avslå_foreldrepenger_når_msp_innenfor_første_6_ukene_bare_mor_har_rett() { var fødselsdato = LocalDate.of(2019, 9, 3); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - søknad(FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1)), - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(8).minusDays(1)), - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15).minusDays(1)))) - .kontoer(kontoer(konto(FORELDREPENGER, 100))) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + FØDSEL, + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(3).minusDays(1)), + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(8).minusDays(1)), + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(15).minusDays(1)))) + .kontoer(kontoer(konto(FORELDREPENGER, 100))) + .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(6); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(1).minusDays(1)); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(1).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(1)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(3).minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); - assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(3).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.HUNDRED); + assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(3)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(4).minusDays(1)); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(4).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(4)); - assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - assertThat(perioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT); - assertThat(perioder.get(3).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); - assertThat(perioder.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(3).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.FORELDREPENGER_KUN_MOR_HAR_RETT); + assertThat(perioder.get(3).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.HUNDRED); + assertThat(perioder.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(3).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } - @Test void skal_avslå_foreldrepenger_når_msp_innenfor_første_6_ukene_mor_aleneomsorg() { var fødselsdato = LocalDate.of(2019, 9, 3); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - søknad(FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1)), - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(8).minusDays(1)), - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15).minusDays(1)))) - .kontoer(kontoer(konto(FORELDREPENGER, 100))) - .rettOgOmsorg(aleneomsorg()) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + FØDSEL, + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(3).minusDays(1)), + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(8).minusDays(1)), + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(15).minusDays(1)))) + .kontoer(kontoer(konto(FORELDREPENGER, 100))) + .rettOgOmsorg(aleneomsorg()) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(6); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(1).minusDays(1)); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(1).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(1)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(3).minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); - assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(3).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.HUNDRED); + assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(3)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(4).minusDays(1)); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(4).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); assertThat(perioder.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(4)); - assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - assertThat(perioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG); - assertThat(perioder.get(3).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); - assertThat(perioder.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(3).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.FORELDREPENGER_ALENEOMSORG); + assertThat(perioder.get(3).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.HUNDRED); + assertThat(perioder.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(3).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } @Test void bfhr_eneste_periode_er_første_6_ukene_skal_innvilges() { var fødselsdato = LocalDate.of(2021, 10, 11); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(FØDSEL, - OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(4), null, false, fødselsdato, fødselsdato, - MorsAktivitet.SYK, MORS_AKTIVITET_GODKJENT))).kontoer(kontoer(konto(FORELDREPENGER, 100))).rettOgOmsorg(bareFarRett()).build(); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad( + FØDSEL, + OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato, + fødselsdato.plusWeeks(4), + null, + false, + fødselsdato, + fødselsdato, + MorsAktivitet.SYK, + MORS_AKTIVITET_GODKJENT))) + .kontoer(kontoer(konto(FORELDREPENGER, 100))) + .rettOgOmsorg(bareFarRett()) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); @@ -251,106 +353,189 @@ private Kontoer.Builder kontoer(Konto.Builder... konto) { @Test void bfhr_msp_skal_ikke_avslås_pga_tom_på_konto_hvis_dager_igjen_på_minsteretten() { var fødselsdato = LocalDate.of(2022, 6, 15); - var fpFørMsp = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1), null, false, - fødselsdato, fødselsdato, MorsAktivitet.UTDANNING, MORS_AKTIVITET_GODKJENT); - var fpEtterMsp = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9).minusDays(1), null, false, - fødselsdato, fødselsdato, null, null); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(FØDSEL, fpFørMsp, fpEtterMsp)) - .kontoer(kontoer(konto(FORELDREPENGER, 10)).minsterettDager(5)) - .rettOgOmsorg(bareFarRett()) - .build(); + var fpFørMsp = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(7).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_GODKJENT); + var fpEtterMsp = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(9).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(FØDSEL, fpFørMsp, fpEtterMsp)) + .kontoer(kontoer(konto(FORELDREPENGER, 10)).minsterettDager(5)) + .rettOgOmsorg(bareFarRett()) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(7)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(8).minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(8).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); } @Test void bfhr_msp_skal_avslås_pga_tom_på_konto_hvis_ikke_dager_igjen_på_fp_men_ubrukte_minsterett() { var fødselsdato = LocalDate.of(2022, 6, 15); - var fpFørMsp = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1), null, false, - fødselsdato, fødselsdato, MorsAktivitet.UTDANNING, MORS_AKTIVITET_GODKJENT); - var fpEtterMsp = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9).minusDays(1), null, false, - fødselsdato, fødselsdato, null, null); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(FØDSEL, fpFørMsp, fpEtterMsp)) - .kontoer(kontoer(konto(FORELDREPENGER, 5)).minsterettDager(5)) - .rettOgOmsorg(bareFarRett()) - .build(); + var fpFørMsp = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(7).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_GODKJENT); + var fpEtterMsp = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(9).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(FØDSEL, fpFørMsp, fpEtterMsp)) + .kontoer(kontoer(konto(FORELDREPENGER, 5)).minsterettDager(5)) + .rettOgOmsorg(bareFarRett()) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(7)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(8).minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(8).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); } @Test void bfhr_msp_skal_avslås_pga_tom_på_konto_hvis_dager_igjen_på_minsteretten_men_brukt_alle_dager_foreldrepenger() { var fødselsdato = LocalDate.of(2022, 6, 15); - var fpFørMsp = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), null, false, - fødselsdato, fødselsdato, MorsAktivitet.UTDANNING, MORS_AKTIVITET_GODKJENT); - var fpEtterMsp = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(11), fødselsdato.plusWeeks(12).minusDays(1), null, - false, fødselsdato, fødselsdato, null, null); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(FØDSEL, fpFørMsp, fpEtterMsp)) - .kontoer(kontoer(konto(FORELDREPENGER, 20)).minsterettDager(5)) - .rettOgOmsorg(bareFarRett()) - .build(); + var fpFørMsp = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_GODKJENT); + var fpEtterMsp = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(11), + fødselsdato.plusWeeks(12).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(FØDSEL, fpFørMsp, fpEtterMsp)) + .kontoer(kontoer(konto(FORELDREPENGER, 20)).minsterettDager(5)) + .rettOgOmsorg(bareFarRett()) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(11).minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(11).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); } @Test void bfhr_msp_skal_ikke_avslås_pga_tom_på_konto_hvis_flere_dager_igjen_på_minsteretten_enn_foreldrepenger() { var fødselsdato = LocalDate.of(2022, 6, 15); - var fpFørMsp = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), null, false, - fødselsdato, fødselsdato, MorsAktivitet.UTDANNING, MORS_AKTIVITET_GODKJENT); - var fpEtterMsp = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(11), fødselsdato.plusWeeks(12).minusDays(1), null, - false, fødselsdato, fødselsdato, null, null); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(søknad(FØDSEL, fpFørMsp, fpEtterMsp)) - .kontoer(kontoer(konto(FORELDREPENGER, 30)).minsterettDager(20)) - .rettOgOmsorg(bareFarRett()) - .build(); + var fpFørMsp = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_GODKJENT); + var fpEtterMsp = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(11), + fødselsdato.plusWeeks(12).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(søknad(FØDSEL, fpFørMsp, fpEtterMsp)) + .kontoer(kontoer(konto(FORELDREPENGER, 30)).minsterettDager(20)) + .rettOgOmsorg(bareFarRett()) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(11).minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(11).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); } @Test void msp_pga_fødselshendelse_etter_termin_skal_innvilge_mødrekvote() { var termindato = LocalDate.of(2022, 6, 23); var fødselsdato = termindato.plusWeeks(1); - var fellesperiode = oppgittPeriode(FELLESPERIODE, termindato.minusWeeks(3), termindato.minusWeeks(2).minusDays(1)); + var fellesperiode = oppgittPeriode( + FELLESPERIODE, + termindato.minusWeeks(3), + termindato.minusWeeks(2).minusDays(1)); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote1 = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(5).minusDays(1)); - //Hull skapt av justering ved fødselshendelsen + var mødrekvote1 = + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(5).minusDays(1)); + // Hull skapt av justering ved fødselshendelsen var mødrekvote2 = oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7)); - var grunnlag = basicGrunnlagMor(fødselsdato).datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) - .søknad(søknad(FØDSEL, fellesperiode, fpff, mødrekvote1, mødrekvote2)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) + .søknad(søknad(FØDSEL, fellesperiode, fpff, mødrekvote1, mødrekvote2)) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(5); - //msp skal innvilges som mødrekvote + // msp skal innvilges som mødrekvote assertThat(perioder.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(5)); - assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(3).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(perioder.get(3).uttakPeriode().getStønadskontotype()).isEqualTo(MØDREKVOTE); assertThat(perioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.MSP_INNVILGET); - var aktivitet = grunnlag.getArbeid().getAktiviteter().stream().findFirst().orElseThrow(); + var aktivitet = + grunnlag.getArbeid().getAktiviteter().stream().findFirst().orElseThrow(); assertThat(perioder.get(3).uttakPeriode().getTrekkdager(aktivitet)).isEqualTo(new Trekkdager(5)); assertThat(perioder.get(3).uttakPeriode().getUtbetalingsgrad(aktivitet)).isEqualTo(Utbetalingsgrad.HUNDRED); } @@ -362,22 +547,24 @@ private Kontoer.Builder kontoer(Konto.Builder... konto) { var fellesperiode = oppgittPeriode(FELLESPERIODE, LocalDate.of(2022, 5, 26), LocalDate.of(2022, 6, 1)); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2022, 6, 2), LocalDate.of(2022, 6, 22)); var mødrekvote1 = oppgittPeriode(MØDREKVOTE, LocalDate.of(2022, 6, 23), LocalDate.of(2022, 7, 29)); - //Hull skapt av justering ved fødselshendelsen + // Hull skapt av justering ved fødselshendelsen var mødrekvote2 = oppgittPeriode(MØDREKVOTE, LocalDate.of(2022, 8, 25), LocalDate.of(2022, 8, 31)); - var grunnlag = basicGrunnlagMor(fødselsdato).datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) - .søknad(søknad(FØDSEL, fellesperiode, fpff, mødrekvote1, mødrekvote2)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) + .søknad(søknad(FØDSEL, fellesperiode, fpff, mødrekvote1, mødrekvote2)) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(5); - //msp skal innvilges som mødrekvote + // msp skal innvilges som mødrekvote assertThat(perioder.get(3).uttakPeriode().getFom()).isEqualTo(LocalDate.of(2022, 8, 1)); assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(LocalDate.of(2022, 8, 3)); assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(perioder.get(3).uttakPeriode().getStønadskontotype()).isEqualTo(MØDREKVOTE); assertThat(perioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.MSP_INNVILGET); - var aktivitet = grunnlag.getArbeid().getAktiviteter().stream().findFirst().orElseThrow(); + var aktivitet = + grunnlag.getArbeid().getAktiviteter().stream().findFirst().orElseThrow(); assertThat(perioder.get(3).uttakPeriode().getTrekkdager(aktivitet)).isEqualTo(new Trekkdager(3)); assertThat(perioder.get(3).uttakPeriode().getUtbetalingsgrad(aktivitet)).isEqualTo(Utbetalingsgrad.HUNDRED); } @@ -387,34 +574,42 @@ private Kontoer.Builder kontoer(Konto.Builder... konto) { var termindato = LocalDate.of(2022, 6, 21); var fødselsdato = termindato.plusDays(3); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote1 = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(3).minusDays(1)); - //hull mellom 3-4 - var mødrekvote2 = oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(5).minusDays(1)); - //hull mellom 5-6 - var mødrekvote3 = oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1)); - var grunnlag = basicGrunnlagMor(fødselsdato).datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) - .søknad(søknad(FØDSEL, fpff, mødrekvote1, mødrekvote2, mødrekvote3)) - .build(); + var mødrekvote1 = + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(3).minusDays(1)); + // hull mellom 3-4 + var mødrekvote2 = oppgittPeriode( + MØDREKVOTE, fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(5).minusDays(1)); + // hull mellom 5-6 + var mødrekvote3 = oppgittPeriode( + MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) + .søknad(søknad(FØDSEL, fpff, mødrekvote1, mødrekvote2, mødrekvote3)) + .build(); var perioder = fastsettPerioder(grunnlag); - var aktivitet = grunnlag.getArbeid().getAktiviteter().stream().findFirst().orElseThrow(); + var aktivitet = + grunnlag.getArbeid().getAktiviteter().stream().findFirst().orElseThrow(); assertThat(perioder).hasSize(6); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(3)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(4).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(4).minusDays(1)); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(MØDREKVOTE); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); assertThat(perioder.get(2).uttakPeriode().getTrekkdager(aktivitet)).isEqualTo(new Trekkdager(5)); assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(aktivitet)).isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(4).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(5)); - assertThat(perioder.get(4).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(4).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(perioder.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); assertThat(perioder.get(4).uttakPeriode().getStønadskontotype()).isEqualTo(MØDREKVOTE); - assertThat(perioder.get(4).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); + assertThat(perioder.get(4).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL); assertThat(perioder.get(4).uttakPeriode().getTrekkdager(aktivitet)).isEqualTo(new Trekkdager(5)); assertThat(perioder.get(4).uttakPeriode().getUtbetalingsgrad(aktivitet)).isEqualTo(Utbetalingsgrad.ZERO); } - } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ManglendeS\303\270ktSammenhengendeUttakOrkestreringTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ManglendeS\303\270ktSammenhengendeUttakOrkestreringTest.java" index d46af305..d548d401 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ManglendeS\303\270ktSammenhengendeUttakOrkestreringTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ManglendeS\303\270ktSammenhengendeUttakOrkestreringTest.java" @@ -9,9 +9,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -31,6 +28,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Vedtak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; +import org.junit.jupiter.api.Test; class ManglendeSøktSammenhengendeUttakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @@ -38,19 +36,33 @@ class ManglendeSøktSammenhengendeUttakOrkestreringTest extends FastsettePeriode void skal_avslå_og_trekke_mødrekvote_for_mor_hvis_dager_igjen() { var fødselsdato = LocalDate.of(2019, 9, 3); - var grunnlag = basicGrunnlagMorSammenhengendeUttak(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - //manglende søkt i mellom - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9)))) - .kontoer(kontoer(konto(Stønadskontotype.MØDREKVOTE, 1000), konto(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 15))) - .build(); + var grunnlag = basicGrunnlagMorSammenhengendeUttak(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1)), + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + // manglende søkt i mellom + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9)))) + .kontoer(kontoer( + konto(Stønadskontotype.MØDREKVOTE, 1000), + konto(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 15))) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(4); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.HULL_MELLOM_FORELDRENES_PERIODER); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotEqualByComparingTo(BigDecimal.ZERO); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.HULL_MELLOM_FORELDRENES_PERIODER); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotEqualByComparingTo(BigDecimal.ZERO); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); } @@ -65,21 +77,29 @@ private Kontoer.Builder kontoer(Konto.Builder... konto) { @Test void skal_avslå_og_trekke_foreldrepenger_for_far_med_enerett_hvis_dager_igjen() { var fødselsdato = LocalDate.of(2019, 9, 3); - var oppgittPeriode = oppgittPeriode(Stønadskontotype.FORELDREPENGER, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), - MORS_AKTIVITET_GODKJENT); - var søknad = søknad(Søknadstype.FØDSEL, - //manglende søkt blir opprettet før foreldrepenger-perioder - oppgittPeriode); - var grunnlag = basicGrunnlagFarSammenhengendeUttak(fødselsdato).rettOgOmsorg(bareFarRett()) - .søknad(søknad) - .kontoer(kontoer(konto(Stønadskontotype.FORELDREPENGER, 1000))) - .build(); + var oppgittPeriode = oppgittPeriode( + Stønadskontotype.FORELDREPENGER, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MORS_AKTIVITET_GODKJENT); + var søknad = søknad( + Søknadstype.FØDSEL, + // manglende søkt blir opprettet før foreldrepenger-perioder + oppgittPeriode); + var grunnlag = basicGrunnlagFarSammenhengendeUttak(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .kontoer(kontoer(konto(Stønadskontotype.FORELDREPENGER, 1000))) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(2); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER); } @@ -94,19 +114,32 @@ private RegelGrunnlag.Builder basicGrunnlagMorSammenhengendeUttak(LocalDate fød @Test void skal_avslå_og_ikke_trekke_dager_når_alle_kontoer_går_tom() { var fødselsdato = LocalDate.of(2019, 9, 3); - var grunnlag = basicGrunnlagMorSammenhengendeUttak(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - //manglende søkt i mellom - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9)))) - .kontoer(kontoer(konto(Stønadskontotype.MØDREKVOTE, 30), konto(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 15))) - .build(); + var grunnlag = basicGrunnlagMorSammenhengendeUttak(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1)), + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + // manglende søkt i mellom + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(9)))) + .kontoer(kontoer( + konto(Stønadskontotype.MØDREKVOTE, 30), konto(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, 15))) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(4); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isZero(); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isZero(); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isNull(); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); } @@ -114,52 +147,80 @@ private RegelGrunnlag.Builder basicGrunnlagMorSammenhengendeUttak(LocalDate fød @Test void skal_avslå_og_ikke_trekke_dager_når_alle_kontoer_går_tom_midt_i_en_manglede_søkt_periode() { var fødselsdato = LocalDate.of(2019, 9, 3); - var grunnlag = basicGrunnlagFarSammenhengendeUttak(fødselsdato).rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().trekkdager(30).type(FORELDREPENGER))) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10)), - //Bare far har rett, msp i mellom - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(20)))) - .build(); + var grunnlag = basicGrunnlagFarSammenhengendeUttak(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(30).type(FORELDREPENGER))) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10)), + // Bare far har rett, msp i mellom + oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(20)))) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(4); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); - assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); + assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isNull(); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isZero(); + assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isZero(); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); } @Test void skal_kunne_håndtere_ulikt_antall_dager_gjenværende_på_arbeidsforhold_ved_manglende_søkt_periode() { var fødselsdato = LocalDate.of(2019, 9, 3); - var kontoer = new Kontoer.Builder().konto(konto(Stønadskontotype.MØDREKVOTE, 75)).konto(konto(Stønadskontotype.FELLESPERIODE, 1)); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans())) - .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende())); - //En fastsatt periode for å få ulikt antall saldo - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.minusDays(1), fødselsdato.minusDays(1)) - .aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), Stønadskontotype.FELLESPERIODE, AktivitetIdentifikator.forFrilans()), - new FastsattUttakPeriodeAktivitet(new Trekkdager(0), Stønadskontotype.FELLESPERIODE, - AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) - .periodeResultatType(Perioderesultattype.INNVILGET); - var grunnlag = basicGrunnlagMorSammenhengendeUttak(fødselsdato).søknad( - søknad(Søknadstype.FØDSEL, oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1)), - //Har igjen 1 dag på fellesperiode på ett arbeidsforhold når manglende søkt skal behandles - oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(16), fødselsdato.plusWeeks(17).minusDays(1)))) - .kontoer(kontoer) - .arbeid(arbeid) - .revurdering(new Revurdering.Builder().endringsdato(fødselsdato).gjeldendeVedtak(new Vedtak.Builder().leggTilPeriode(fastsattPeriode))) - .build(); + var kontoer = new Kontoer.Builder() + .konto(konto(Stønadskontotype.MØDREKVOTE, 75)) + .konto(konto(Stønadskontotype.FELLESPERIODE, 1)); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forFrilans())) + .arbeidsforhold(new Arbeidsforhold(AktivitetIdentifikator.forSelvstendigNæringsdrivende())); + // En fastsatt periode for å få ulikt antall saldo + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.minusDays(1), fødselsdato.minusDays(1)) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet( + new Trekkdager(1), Stønadskontotype.FELLESPERIODE, AktivitetIdentifikator.forFrilans()), + new FastsattUttakPeriodeAktivitet( + new Trekkdager(0), + Stønadskontotype.FELLESPERIODE, + AktivitetIdentifikator.forSelvstendigNæringsdrivende()))) + .periodeResultatType(Perioderesultattype.INNVILGET); + var grunnlag = basicGrunnlagMorSammenhengendeUttak(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1)), + // Har igjen 1 dag på fellesperiode på ett arbeidsforhold + // når manglende søkt skal behandles + oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato.plusWeeks(16), + fødselsdato.plusWeeks(17).minusDays(1)))) + .kontoer(kontoer) + .arbeid(arbeid) + .revurdering(new Revurdering.Builder() + .endringsdato(fødselsdato) + .gjeldendeVedtak(new Vedtak.Builder().leggTilPeriode(fastsattPeriode))) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(4); - //UT1291 + // UT1291 assertThat(perioder.get(3).isManuellBehandling()).isTrue(); } @@ -171,24 +232,36 @@ private RegelGrunnlag.Builder basicGrunnlagMorSammenhengendeUttak(LocalDate fød var arbeidsforholdMedId = AktivitetIdentifikator.forArbeid(new Orgnummer("000000001"), "1234"); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold)) - .arbeidsforhold(new Arbeidsforhold(arbeidsforholdMedId, fødselsdato.plusWeeks(12)))) - .kontoer(defaultKontoer()) - .inngangsvilkår(oppfyltAlleVilkår()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .behandling(morBehandling().kreverSammenhengendeUttak(true)) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FELLESPERIODE, fødselsdato.plusWeeks(11), fødselsdato.plusWeeks(15).minusDays(1)))); + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforholdMedId, fødselsdato.plusWeeks(12)))) + .kontoer(defaultKontoer()) + .inngangsvilkår(oppfyltAlleVilkår()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .behandling(morBehandling().kreverSammenhengendeUttak(true)) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FELLESPERIODE, + fødselsdato.plusWeeks(11), + fødselsdato.plusWeeks(15).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(6); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(3 * 5)); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); @@ -197,58 +270,73 @@ private RegelGrunnlag.Builder basicGrunnlagMorSammenhengendeUttak(LocalDate fød assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(6 * 5)); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(4 * 5)); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); - + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); - assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); assertThat(perioder.get(3).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FELLESPERIODE); assertThat(perioder.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); assertThat(perioder.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(11).minusDays(3)); //tar ikke med helg + assertThat(perioder.get(3).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(11).minusDays(3)); // tar ikke med helg assertThat(perioder.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(4).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FELLESPERIODE); assertThat(perioder.get(4).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); assertThat(perioder.get(4).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(11)); - assertThat(perioder.get(4).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); + assertThat(perioder.get(4).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); assertThat(perioder.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(5).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FELLESPERIODE); assertThat(perioder.get(5).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(3 * 5)); assertThat(perioder.get(5).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(12)); - assertThat(perioder.get(5).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(15).minusDays(1)); + assertThat(perioder.get(5).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(15).minusDays(1)); } @Test void skal_avslå_og_trekke_foreldrepenger_for_bare_far_har_rett_hvis_dager_igjen_regresjon() { var fødselsdato = LocalDate.of(2019, 9, 3); - var grunnlag = basicGrunnlagFarSammenhengendeUttak(fødselsdato).søknad( - søknad(FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(50), fødselsdato.plusWeeks(52)))) - .kontoer(kontoer(konto(FORELDREPENGER, 100))) - .rettOgOmsorg(bareFarRett()) - .build(); + var grunnlag = basicGrunnlagFarSammenhengendeUttak(fødselsdato) + .søknad(søknad( + FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(50), fødselsdato.plusWeeks(52)))) + .kontoer(kontoer(konto(FORELDREPENGER, 100))) + .rettOgOmsorg(bareFarRett()) + .build(); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isFalse(); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isFalse(); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isFalse(); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isFalse(); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } @@ -259,26 +347,34 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { @Test void foreldrepengerFørFødsel_for_kort_fpff_starter_for_sent() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMorSammenhengendeUttak(fødselsdato).søknad( - søknad(FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(1), fødselsdato.minusDays(1)))); + var grunnlag = basicGrunnlagMorSammenhengendeUttak(fødselsdato) + .søknad(søknad( + FØDSEL, + oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(1), fødselsdato.minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(2); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(1)); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); assertThat(perioder.get(0).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(0).evalueringResultat()).isNotNull(); - assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.HULL_MELLOM_FORELDRENES_PERIODER); + assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.HULL_MELLOM_FORELDRENES_PERIODER); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(3)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(3)); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); assertThat(perioder.get(1).innsendtGrunnlag()).isNotNull(); assertThat(perioder.get(1).evalueringResultat()).isNotNull(); diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/MinsterettOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/MinsterettOrkestreringTest.java index f22a1801..32d8be3c 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/MinsterettOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/MinsterettOrkestreringTest.java @@ -21,11 +21,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Set; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.EnumSource; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -46,6 +41,9 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.PeriodeResultatÅrsak; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; class MinsterettOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @@ -55,88 +53,156 @@ class MinsterettOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 200)).minsterettDager(75); var oppgittPeriode = foreldrepenger(fødselsdato, MorsAktivitet.UFØRE, null); var utsettelseFra = Virkedager.justerHelgTilMandag(fødselsdato.plusMonths(6)); - var oppgittPeriodeU1 = foreldrepengerUtsettelse(utsettelseFra, Virkedager.plusVirkedager(utsettelseFra, 19), MorsAktivitet.UTDANNING, - MORS_AKTIVITET_IKKE_DOKUMENTERT); + var oppgittPeriodeU1 = foreldrepengerUtsettelse( + utsettelseFra, + Virkedager.plusVirkedager(utsettelseFra, 19), + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_IKKE_DOKUMENTERT); var oppgittPeriode2 = foreldrepenger(fødselsdato.plusYears(1), MorsAktivitet.UFØRE, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode, oppgittPeriodeU1, oppgittPeriode2)); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(false)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode, oppgittPeriodeU1, oppgittPeriode2)); + + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(false)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 40))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 40))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 35))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 35))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT, 20))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.AVSLÅTT, + AKTIVITETSKRAVET_UTDANNING_IKKE_DOKUMENTERT, + 20))) + .isTrue(); // Søkt ufør, ikke dager igjen på minstekvote - assertThat( - fastsattePerioder.stream().anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))).isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, -1))).isTrue(); + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))) + .isTrue(); + assertThat(fastsattePerioder.stream() + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, -1))) + .isTrue(); } @Test void bfhr_mor_med_bekreftet_uføretrygd_flerbarn_skal_godkjennes() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 2, 1)); - var kontoer = new Kontoer.Builder().kontoList(List.of(konto(FORELDREPENGER, 285))).flerbarnsdager(85).minsterettDager(85); + var kontoer = new Kontoer.Builder() + .kontoList(List.of(konto(FORELDREPENGER, 285))) + .flerbarnsdager(85) + .minsterettDager(85); var oppgittPeriode = foreldrepenger(fødselsdato, MorsAktivitet.UFØRE, null); var oppgittPeriode2 = foreldrepenger(fødselsdato.plusYears(1), MorsAktivitet.UFØRE, null); var oppgittPeriode3 = foreldrepenger(fødselsdato.plusYears(2), MorsAktivitet.UFØRE, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2, oppgittPeriode3)); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(false)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2, oppgittPeriode3)); + + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(false)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); - assertThat(harPeriode(fastsattePerioder.get(0).uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5)).isTrue(); - assertThat( - harPeriode(fastsattePerioder.get(1).uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, - 40)).isTrue(); - assertThat(harPeriode(fastsattePerioder.get(2).uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 195)).isTrue(); - assertThat( - harPeriode(fastsattePerioder.get(4).uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, - 40)).isTrue(); - assertThat(harPeriode(fastsattePerioder.get(5).uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 0)).isTrue(); - assertThat( - harPeriode(fastsattePerioder.get(6).uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, - 5)).isTrue(); - assertThat(harPeriode(fastsattePerioder.get(7).uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, -1)).isTrue(); + assertThat(harPeriode( + fastsattePerioder.get(0).uttakPeriode(), + Perioderesultattype.AVSLÅTT, + BARE_FAR_RETT_IKKE_SØKT, + 5)) + .isTrue(); + assertThat(harPeriode( + fastsattePerioder.get(1).uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 40)) + .isTrue(); + assertThat(harPeriode( + fastsattePerioder.get(2).uttakPeriode(), + Perioderesultattype.AVSLÅTT, + BARE_FAR_RETT_IKKE_SØKT, + 195)) + .isTrue(); + assertThat(harPeriode( + fastsattePerioder.get(4).uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 40)) + .isTrue(); + assertThat(harPeriode( + fastsattePerioder.get(5).uttakPeriode(), + Perioderesultattype.AVSLÅTT, + BARE_FAR_RETT_IKKE_SØKT, + 0)) + .isTrue(); + assertThat(harPeriode( + fastsattePerioder.get(6).uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 5)) + .isTrue(); + assertThat(harPeriode( + fastsattePerioder.get(7).uttakPeriode(), + Perioderesultattype.AVSLÅTT, + IKKE_STØNADSDAGER_IGJEN, + -1)) + .isTrue(); } @Test void bfhr_mor_med_bekreftet_uføretrygd_overskrider_minsterett() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 200)).minsterettDager(75); - var oppgittPeriode = foreldrepenger(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(23).minusDays(1), MorsAktivitet.UFØRE, null); + var oppgittPeriode = foreldrepenger( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(23).minusDays(1), MorsAktivitet.UFØRE, null); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode)); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(false)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(false)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 75))).isTrue(); - assertThat( - fastsattePerioder.stream().anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 75))) + .isTrue(); + assertThat(fastsattePerioder.stream() + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, AKTIVITET_UKJENT_UDOKUMENTERT, 5))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), Perioderesultattype.AVSLÅTT, AKTIVITET_UKJENT_UDOKUMENTERT, 5))) + .isTrue(); // Søkt ufør, ikke dager igjen på minstekvote } @@ -144,30 +210,47 @@ class MinsterettOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB void bfhr_enkel_minsterett_vs_innvilget_med_mye_godkjent_aktivitet() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 200)).minsterettDager(40); - var oppgittPeriode = foreldrepenger(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(45).minusDays(1), MorsAktivitet.UTDANNING, - MORS_AKTIVITET_GODKJENT); - var oppgittPeriode2 = foreldrepenger(fødselsdato.plusWeeks(45), fødselsdato.plusWeeks(47).minusDays(1), null, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2)); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(false)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer) - .søknad(søknad) - .build(); + var oppgittPeriode = foreldrepenger( + fødselsdato.plusWeeks(7), + fødselsdato.plusWeeks(45).minusDays(1), + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_GODKJENT); + var oppgittPeriode2 = foreldrepenger( + fødselsdato.plusWeeks(45), fødselsdato.plusWeeks(47).minusDays(1), null, null); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2)); + + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(false)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer) + .søknad(søknad) + .build(); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(4); assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT, 190))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT, 190))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 5))).isTrue(); - assertThat( - fastsattePerioder.stream().anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))).isTrue(); - assertThat( - fastsattePerioder.stream().anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, 0))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 5))) + .isTrue(); + assertThat(fastsattePerioder.stream() + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))) + .isTrue(); + assertThat(fastsattePerioder.stream() + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, 0))) + .isTrue(); } @Test @@ -177,29 +260,46 @@ void bfhr_enkel_minsterett_vs_innvilget_med_mye_godkjent_aktivitet() { var oppgittPeriode = foreldrepenger(fødselsdato, MorsAktivitet.UFØRE, null); var oppgittPeriode2 = foreldrepenger(fødselsdato.plusWeeks(25), MorsAktivitet.UFØRE, null); var oppgittPeriode3 = foreldrepenger(fødselsdato.plusWeeks(40), MorsAktivitet.UFØRE, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2, oppgittPeriode3)); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(false)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2, oppgittPeriode3)); + + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(false)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 40))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 40))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 35))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 35))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, AKTIVITET_UKJENT_UDOKUMENTERT, 5))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), Perioderesultattype.AVSLÅTT, AKTIVITET_UKJENT_UDOKUMENTERT, 5))) + .isTrue(); // Søkt ufør, ikke dager igjen på minstekvote - assertThat( - fastsattePerioder.stream().anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))).isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, -1))).isTrue(); + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))) + .isTrue(); + assertThat(fastsattePerioder.stream() + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, -1))) + .isTrue(); } @Test @@ -208,158 +308,291 @@ void bfhr_enkel_minsterett_vs_innvilget_med_mye_godkjent_aktivitet() { var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 200)).utenAktivitetskravDager(75); var oppgittPeriode = foreldrepenger(fødselsdato.minusWeeks(1), MorsAktivitet.SYK, MORS_AKTIVITET_GODKJENT); var oppgittPeriode2 = foreldrepenger(fødselsdato.plusWeeks(14), MorsAktivitet.SYK, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2)); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(false)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2)); + + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(false)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT, 40))).isTrue(); // Akt krav oppfylt + .anyMatch(p -> harPeriode( + p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT, 40))) + .isTrue(); // Akt krav oppfylt assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 35))).isTrue(); // Mellomliggende + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 35))) + .isTrue(); // Mellomliggende assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, - 40))).isTrue(); // Akt krav ikke oppfylt - innvilget fra uføre + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 40))) + .isTrue(); // Akt krav ikke oppfylt - innvilget fra uføre } @Test void bfhr_mor_med_bekreftet_uføretrygd_uten_aktivitetskrav_flerbarn_skal_godkjennes() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); - var kontoer = new Kontoer.Builder().kontoList(List.of(konto(FORELDREPENGER, 285))).flerbarnsdager(85).utenAktivitetskravDager(75); + var kontoer = new Kontoer.Builder() + .kontoList(List.of(konto(FORELDREPENGER, 285))) + .flerbarnsdager(85) + .utenAktivitetskravDager(75); var oppgittPeriode = foreldrepenger(fødselsdato, MorsAktivitet.UFØRE, null); - var oppgittPeriode2 = foreldrepenger(Virkedager.justerHelgTilMandag(fødselsdato.plusWeeks(49)), MorsAktivitet.UFØRE, - null); // Strekker seg utover stønadsperioden - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2)); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(false)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var oppgittPeriode2 = foreldrepenger( + Virkedager.justerHelgTilMandag(fødselsdato.plusWeeks(49)), + MorsAktivitet.UFØRE, + null); // Strekker seg utover stønadsperioden + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode, oppgittPeriode2)); + + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(false)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 40))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 40))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 35))).isTrue(); - assertThat( - fastsattePerioder.stream().anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 35))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, -1))).isTrue(); + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))) + .isTrue(); + assertThat(fastsattePerioder.stream() + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, IKKE_STØNADSDAGER_IGJEN, -1))) + .isTrue(); } @Test void bfhr_mor_med_bekreftet_uføretrygd_uten_aktivitetskrav_overskrider_minsterett() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 200)).utenAktivitetskravDager(75); - var oppgittPeriode = foreldrepenger(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(23).minusDays(1), MorsAktivitet.UFØRE, null); + var oppgittPeriode = foreldrepenger( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(23).minusDays(1), MorsAktivitet.UFØRE, null); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode)); - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling().kreverSammenhengendeUttak(false)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett().morUføretrygd(true)) - .søknad(søknad) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(kontoer); + var grunnlag = new RegelGrunnlag.Builder() + .behandling(farBehandling().kreverSammenhengendeUttak(false)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett().morUføretrygd(true)) + .søknad(søknad) + .inngangsvilkår(oppfyltAlleVilkår()) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder.stream() - .anyMatch( - p -> harPeriode(p.uttakPeriode(), Perioderesultattype.INNVILGET, FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, 75))).isTrue(); - assertThat( - fastsattePerioder.stream().anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), + Perioderesultattype.INNVILGET, + FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV, + 75))) + .isTrue(); + assertThat(fastsattePerioder.stream() + .anyMatch(p -> + harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, BARE_FAR_RETT_IKKE_SØKT, 5))) + .isTrue(); assertThat(fastsattePerioder.stream() - .anyMatch(p -> harPeriode(p.uttakPeriode(), Perioderesultattype.AVSLÅTT, AKTIVITET_UKJENT_UDOKUMENTERT, 5))).isTrue(); + .anyMatch(p -> harPeriode( + p.uttakPeriode(), Perioderesultattype.AVSLÅTT, AKTIVITET_UKJENT_UDOKUMENTERT, 5))) + .isTrue(); // Søkt ufør, ikke dager igjen på minstekvote } @Test void bfhr_flerbarnsdager_skal_også_trekkes_fra_minsteretten() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 200)).minsterettDager(5).flerbarnsdager(5); - //Uten mors aktivitet bruker opp minsterett - var oppgittPeriode1 = oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1)); - var oppgittPeriode2 = oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(8).minusDays(1), true, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode1, oppgittPeriode2)); - - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()).søknad(søknad).kontoer(kontoer); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER, 200)) + .minsterettDager(5) + .flerbarnsdager(5); + // Uten mors aktivitet bruker opp minsterett + var oppgittPeriode1 = oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(7).minusDays(1)); + var oppgittPeriode2 = oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(7), + fødselsdato.plusWeeks(8).minusDays(1), + true, + null); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode1, oppgittPeriode2)); + + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(2); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); } @Test void bfhr_flerbarnsdager_minsterett_skal_gå_tom_for_dager_selv_om_ikke_minsterett_brukes_opp() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 40)).minsterettDager(17).flerbarnsdager(10); - var oppgittPeriode1 = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(14).minusDays(1), null, - false, fødselsdato, fødselsdato, MorsAktivitet.ARBEID, MORS_AKTIVITET_GODKJENT); - var oppgittPeriode2 = oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(14), fødselsdato.plusWeeks(17).minusDays(1), true, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode1, oppgittPeriode2)); - - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()).søknad(søknad).kontoer(kontoer); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER, 40)) + .minsterettDager(17) + .flerbarnsdager(10); + var oppgittPeriode1 = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(14).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + MorsAktivitet.ARBEID, + MORS_AKTIVITET_GODKJENT); + var oppgittPeriode2 = oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(14), + fødselsdato.plusWeeks(17).minusDays(1), + true, + null); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode1, oppgittPeriode2)); + + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(2); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IKKE_STØNADSDAGER_IGJEN); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IKKE_STØNADSDAGER_IGJEN); } @Test void bfhr_flerbarnsdager_minsterett_skal_gå_tom_for_dager_når_tomt_for_flerbarnsdager() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 40)).minsterettDager(10).flerbarnsdager(10); - var oppgittPeriode1 = oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), true, null); - var oppgittPeriode2 = oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(10).minusDays(1), true, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode1, oppgittPeriode2)); - - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()).søknad(søknad).kontoer(kontoer); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER, 40)) + .minsterettDager(10) + .flerbarnsdager(10); + var oppgittPeriode1 = oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + true, + null); + var oppgittPeriode2 = oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(10).minusDays(1), + true, + null); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode1, oppgittPeriode2)); + + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(2); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); } @Test void bfhr_flerbarnsdager_trekker_minsterett() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 40)).minsterettDager(25).flerbarnsdager(20); - var oppgittPeriode1 = oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), true, null); - var gradertPeriode = OppgittPeriode.forGradering(FORELDREPENGER, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(10), BigDecimal.TEN, null, - true, Set.of(ARBEIDSFORHOLD), fødselsdato, fødselsdato, null, null); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(oppgittPeriode1, gradertPeriode)); - - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()).søknad(søknad).kontoer(kontoer); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER, 40)) + .minsterettDager(25) + .flerbarnsdager(20); + var oppgittPeriode1 = oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + true, + null); + var gradertPeriode = OppgittPeriode.forGradering( + FORELDREPENGER, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(10), + BigDecimal.TEN, + null, + true, + Set.of(ARBEIDSFORHOLD), + fødselsdato, + fødselsdato, + null, + null); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(oppgittPeriode1, gradertPeriode)); + + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(2); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo( - GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); } @ParameterizedTest @@ -367,132 +600,258 @@ void bfhr_flerbarnsdager_trekker_minsterett() { void utsettelser_etter_startdato_neste_stønadsperiode_innvilges(UtsettelseÅrsak utsettelseÅrsak) { var fødselsdatoFørsteSak = LocalDate.of(2023, 1, 6); var startdatoNesteStønadsperiode = fødselsdatoFørsteSak.plusYears(2); - var grunnlag = basicGrunnlagFar(fødselsdatoFørsteSak).kontoer(defaultKontoer().etterNesteStønadsperiodeDager(10)) - .datoer(new Datoer.Builder().fødsel(fødselsdatoFørsteSak).startdatoNesteStønadsperiode(startdatoNesteStønadsperiode)) - .søknad(søknad(FØDSEL, utsettelsePeriode(startdatoNesteStønadsperiode, startdatoNesteStønadsperiode.plusWeeks(2), utsettelseÅrsak, null), - //Bruker opp minsteretten - oppgittPeriode(FEDREKVOTE, startdatoNesteStønadsperiode.plusWeeks(4), startdatoNesteStønadsperiode.plusWeeks(6).minusDays(1)), - utsettelsePeriode(startdatoNesteStønadsperiode.plusWeeks(8), startdatoNesteStønadsperiode.plusWeeks(10), utsettelseÅrsak, null))); + var grunnlag = basicGrunnlagFar(fødselsdatoFørsteSak) + .kontoer(defaultKontoer().etterNesteStønadsperiodeDager(10)) + .datoer(new Datoer.Builder() + .fødsel(fødselsdatoFørsteSak) + .startdatoNesteStønadsperiode(startdatoNesteStønadsperiode)) + .søknad(søknad( + FØDSEL, + utsettelsePeriode( + startdatoNesteStønadsperiode, + startdatoNesteStønadsperiode.plusWeeks(2), + utsettelseÅrsak, + null), + // Bruker opp minsteretten + oppgittPeriode( + FEDREKVOTE, + startdatoNesteStønadsperiode.plusWeeks(4), + startdatoNesteStønadsperiode.plusWeeks(6).minusDays(1)), + utsettelsePeriode( + startdatoNesteStønadsperiode.plusWeeks(8), + startdatoNesteStønadsperiode.plusWeeks(10), + utsettelseÅrsak, + null))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.UTSETTELSE_GYLDIG); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.UTSETTELSE_GYLDIG); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.UTSETTELSE_GYLDIG); + assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.UTSETTELSE_GYLDIG); } @ParameterizedTest @EnumSource(UtsettelseÅrsak.class) - void utsettelser_etter_startdato_neste_stønadsperiode_avslås_hvis_ingen_to_tette_minsterett(UtsettelseÅrsak utsettelseÅrsak) { + void utsettelser_etter_startdato_neste_stønadsperiode_avslås_hvis_ingen_to_tette_minsterett( + UtsettelseÅrsak utsettelseÅrsak) { var fødselsdatoFørsteSak = LocalDate.of(2021, 1, 6); var startdatoNesteStønadsperiode = fødselsdatoFørsteSak.plusYears(2); - var grunnlag = basicGrunnlagFar(fødselsdatoFørsteSak).kontoer(defaultKontoer().etterNesteStønadsperiodeDager(0)) - .datoer(new Datoer.Builder().fødsel(fødselsdatoFørsteSak).startdatoNesteStønadsperiode(startdatoNesteStønadsperiode)) - .søknad(søknad(FØDSEL, - utsettelsePeriode(startdatoNesteStønadsperiode, startdatoNesteStønadsperiode.plusWeeks(2).minusDays(1), utsettelseÅrsak, null), - oppgittPeriode(FEDREKVOTE, startdatoNesteStønadsperiode.plusWeeks(2), startdatoNesteStønadsperiode.plusWeeks(6).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdatoFørsteSak) + .kontoer(defaultKontoer().etterNesteStønadsperiodeDager(0)) + .datoer(new Datoer.Builder() + .fødsel(fødselsdatoFørsteSak) + .startdatoNesteStønadsperiode(startdatoNesteStønadsperiode)) + .søknad(søknad( + FØDSEL, + utsettelsePeriode( + startdatoNesteStønadsperiode, + startdatoNesteStønadsperiode.plusWeeks(2).minusDays(1), + utsettelseÅrsak, + null), + oppgittPeriode( + FEDREKVOTE, + startdatoNesteStønadsperiode.plusWeeks(2), + startdatoNesteStønadsperiode.plusWeeks(6).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(2); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); } - //FAGSYSTEM-269397 + // FAGSYSTEM-269397 @Test void bfhr_minsterett_gradering_flere_arbeidsforhold() { var fødselsdato = LocalDate.of(2022, 9, 12); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 40 * 5)).minsterettDager(8 * 5); var arbeidsforhold1 = AktivitetIdentifikator.forArbeid(new Orgnummer("1"), null); var arbeidsforhold2 = AktivitetIdentifikator.forArbeid(new Orgnummer("2"), null); - var gradering = OppgittPeriode.forGradering(FORELDREPENGER, LocalDate.of(2022, 10, 24), LocalDate.of(2023, 7, 31), BigDecimal.valueOf(44.7), - null, false, Set.of(arbeidsforhold1), fødselsdato, fødselsdato, MorsAktivitet.UTDANNING, MORS_AKTIVITET_GODKJENT); - var foreldrepenger1 = OppgittPeriode.forVanligPeriode(FORELDREPENGER, LocalDate.of(2023, 8, 1), LocalDate.of(2023, 9, 25), null, false, - fødselsdato, fødselsdato, null, null); - var foreldrepenger2 = OppgittPeriode.forVanligPeriode(FORELDREPENGER, LocalDate.of(2023, 9, 26), LocalDate.of(2023, 12, 1), null, false, - fødselsdato, fødselsdato, MorsAktivitet.UTDANNING, MORS_AKTIVITET_IKKE_GODKJENT); - - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(gradering, foreldrepenger1, foreldrepenger2)); - - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)).arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()).søknad(søknad).arbeid(arbeid).kontoer(kontoer); + var gradering = OppgittPeriode.forGradering( + FORELDREPENGER, + LocalDate.of(2022, 10, 24), + LocalDate.of(2023, 7, 31), + BigDecimal.valueOf(44.7), + null, + false, + Set.of(arbeidsforhold1), + fødselsdato, + fødselsdato, + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_GODKJENT); + var foreldrepenger1 = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + LocalDate.of(2023, 8, 1), + LocalDate.of(2023, 9, 25), + null, + false, + fødselsdato, + fødselsdato, + null, + null); + var foreldrepenger2 = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + LocalDate.of(2023, 9, 26), + LocalDate.of(2023, 12, 1), + null, + false, + fødselsdato, + fødselsdato, + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_IKKE_GODKJENT); + + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittePerioder(List.of(gradering, foreldrepenger1, foreldrepenger2)); + + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .arbeid(arbeid) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(4); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT); - - assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT); - - assertThat(fastsattePerioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(fastsattePerioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); - assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(arbeidsforhold1)).isEqualTo(new Trekkdager(40)); - assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(arbeidsforhold2)).isEqualTo(Trekkdager.ZERO); - - assertThat(fastsattePerioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(fastsattePerioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITETSKRAVET_UTDANNING_IKKE_OPPFYLT); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT); + + assertThat(fastsattePerioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT); + + assertThat(fastsattePerioder.get(2).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV); + assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(arbeidsforhold1)) + .isEqualTo(new Trekkdager(40)); + assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(arbeidsforhold2)) + .isEqualTo(Trekkdager.ZERO); + + assertThat(fastsattePerioder.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); + assertThat(fastsattePerioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITETSKRAVET_UTDANNING_IKKE_OPPFYLT); } - //FAGSYSTEM-301302 + // FAGSYSTEM-301302 @Test void bfhr_minsterett_gradering_flere_arbeidsforhold_2() { var fødselsdato = LocalDate.of(2023, 10, 2); var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER, 40 * 5)).minsterettDager(8 * 5); var arbeidsforhold1 = AktivitetIdentifikator.forArbeid(new Orgnummer("1"), null); var arbeidsforhold2 = AktivitetIdentifikator.forArbeid(new Orgnummer("2"), null); - var gradering = OppgittPeriode.forGradering(FORELDREPENGER, fødselsdato, LocalDate.of(2024, 1, 22), BigDecimal.valueOf(50), null, false, - Set.of(arbeidsforhold1), fødselsdato, fødselsdato, null, null); + var gradering = OppgittPeriode.forGradering( + FORELDREPENGER, + fødselsdato, + LocalDate.of(2024, 1, 22), + BigDecimal.valueOf(50), + null, + false, + Set.of(arbeidsforhold1), + fødselsdato, + fødselsdato, + null, + null); var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittePerioder(List.of(gradering)); - var arbeid = new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)).arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()).søknad(søknad).arbeid(arbeid).kontoer(kontoer); + var arbeid = new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold1)) + .arbeidsforhold(new Arbeidsforhold(arbeidsforhold2)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad) + .arbeid(arbeid) + .kontoer(kontoer); var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(4); - assertThat(fastsattePerioder.get(0).uttakPeriode().erGraderingInnvilget()).isTrue(); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(arbeidsforhold1)).isEqualTo(new Trekkdager(15)); - assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(arbeidsforhold2)).isEqualTo(new Trekkdager(30)); - assertThat(fastsattePerioder.get(1).uttakPeriode().erGraderingInnvilget()).isTrue(); - assertThat(fastsattePerioder.get(1).uttakPeriode().getTrekkdager(arbeidsforhold1)).isEqualTo(new Trekkdager(5)); - assertThat(fastsattePerioder.get(1).uttakPeriode().getTrekkdager(arbeidsforhold2)).isEqualTo(new Trekkdager(10)); - assertThat(fastsattePerioder.get(2).uttakPeriode().erGraderingInnvilget()).isTrue(); - assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(arbeidsforhold1)).isEqualTo(new Trekkdager(20)); - assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(arbeidsforhold2)).isEqualTo(new Trekkdager(0)); - assertThat(fastsattePerioder.get(2).uttakPeriode().getUtbetalingsgrad(arbeidsforhold2)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(fastsattePerioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - //Søkt en dag for mye minsterett - assertThat(fastsattePerioder.get(3).uttakPeriode().getTrekkdager(arbeidsforhold1)).isEqualTo(new Trekkdager(0.5)); - assertThat(fastsattePerioder.get(3).uttakPeriode().getTrekkdager(arbeidsforhold2)).isEqualTo(new Trekkdager(1)); - assertThat(fastsattePerioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); + assertThat(fastsattePerioder.get(0).uttakPeriode().erGraderingInnvilget()) + .isTrue(); + assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(arbeidsforhold1)) + .isEqualTo(new Trekkdager(15)); + assertThat(fastsattePerioder.get(0).uttakPeriode().getTrekkdager(arbeidsforhold2)) + .isEqualTo(new Trekkdager(30)); + assertThat(fastsattePerioder.get(1).uttakPeriode().erGraderingInnvilget()) + .isTrue(); + assertThat(fastsattePerioder.get(1).uttakPeriode().getTrekkdager(arbeidsforhold1)) + .isEqualTo(new Trekkdager(5)); + assertThat(fastsattePerioder.get(1).uttakPeriode().getTrekkdager(arbeidsforhold2)) + .isEqualTo(new Trekkdager(10)); + assertThat(fastsattePerioder.get(2).uttakPeriode().erGraderingInnvilget()) + .isTrue(); + assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(arbeidsforhold1)) + .isEqualTo(new Trekkdager(20)); + assertThat(fastsattePerioder.get(2).uttakPeriode().getTrekkdager(arbeidsforhold2)) + .isEqualTo(new Trekkdager(0)); + assertThat(fastsattePerioder.get(2).uttakPeriode().getUtbetalingsgrad(arbeidsforhold2)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(fastsattePerioder.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); + // Søkt en dag for mye minsterett + assertThat(fastsattePerioder.get(3).uttakPeriode().getTrekkdager(arbeidsforhold1)) + .isEqualTo(new Trekkdager(0.5)); + assertThat(fastsattePerioder.get(3).uttakPeriode().getTrekkdager(arbeidsforhold2)) + .isEqualTo(new Trekkdager(1)); + assertThat(fastsattePerioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(AKTIVITET_UKJENT_UDOKUMENTERT); } private boolean harPeriode(UttakPeriode p, Perioderesultattype prt, PeriodeResultatÅrsak prå, int dager) { - return p.getPerioderesultattype().equals(prt) && p.getPeriodeResultatÅrsak().equals(prå) && (dager == -1 - || p.getAktiviteter().stream().map(UttakPeriodeAktivitet::getTrekkdager).mapToInt(Trekkdager::rundOpp).sum() == dager); + return p.getPerioderesultattype().equals(prt) + && p.getPeriodeResultatÅrsak().equals(prå) + && (dager == -1 + || p.getAktiviteter().stream() + .map(UttakPeriodeAktivitet::getTrekkdager) + .mapToInt(Trekkdager::rundOpp) + .sum() + == dager); } - private OppgittPeriode foreldrepenger(LocalDate fødselsdato, MorsAktivitet morsAktivitet, DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(15).minusDays(1), null, false, - fødselsdato, fødselsdato, morsAktivitet, dokumentasjonVurdering); + private OppgittPeriode foreldrepenger( + LocalDate fødselsdato, MorsAktivitet morsAktivitet, DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(7), + fødselsdato.plusWeeks(15).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + morsAktivitet, + dokumentasjonVurdering); } - private OppgittPeriode foreldrepenger(LocalDate fom, LocalDate tom, MorsAktivitet morsAktivitet, DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(FORELDREPENGER, fom, tom, null, false, fom.minusWeeks(3), fom.minusWeeks(3), morsAktivitet, - dokumentasjonVurdering); + private OppgittPeriode foreldrepenger( + LocalDate fom, LocalDate tom, MorsAktivitet morsAktivitet, DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fom, + tom, + null, + false, + fom.minusWeeks(3), + fom.minusWeeks(3), + morsAktivitet, + dokumentasjonVurdering); } - private OppgittPeriode foreldrepengerUtsettelse(LocalDate fom, - LocalDate tom, - MorsAktivitet morsAktivitet, - DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forUtsettelse(fom, tom, UtsettelseÅrsak.FERIE, fom, fom, morsAktivitet, dokumentasjonVurdering); + private OppgittPeriode foreldrepengerUtsettelse( + LocalDate fom, LocalDate tom, MorsAktivitet morsAktivitet, DokumentasjonVurdering dokumentasjonVurdering) { + return OppgittPeriode.forUtsettelse( + fom, tom, UtsettelseÅrsak.FERIE, fom, fom, morsAktivitet, dokumentasjonVurdering); } - - } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/M\303\270drekvoteDelregelTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/M\303\270drekvoteDelregelTest.java" index d2757fb7..7a70b436 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/M\303\270drekvoteDelregelTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/M\303\270drekvoteDelregelTest.java" @@ -6,9 +6,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Behandling; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Dødsdatoer; @@ -28,15 +25,20 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.UtfallType; +import org.junit.jupiter.api.Test; class MødrekvoteDelregelTest { @Test void mødrekvoteperiode_med_nok_dager_på_konto() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittMødrekvote(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); + var oppgittPeriode = + oppgittMødrekvote(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -46,9 +48,13 @@ class MødrekvoteDelregelTest { @Test void mødrekvote_slutter_på_fredag_og_første_uker_slutter_på_søndag_blir_innvilget() { var fødselsdato = LocalDate.of(2017, 12, 31); - var oppgittPeriode = oppgittMødrekvote(fødselsdato, fødselsdato.plusWeeks(6).minusDays(2)); + var oppgittPeriode = + oppgittMødrekvote(fødselsdato, fødselsdato.plusWeeks(6).minusDays(2)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); assertThat(regelresultat.oppfylt()).isTrue(); @@ -57,12 +63,18 @@ class MødrekvoteDelregelTest { @Test void mødrekvote_de_første_6_ukene_etter_fødsel_skal_innvilges_også_når_mor_ikke_har_omsorg() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittMødrekvote(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); + var oppgittPeriode = + oppgittMødrekvote(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(søknad(oppgittPeriode)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -70,14 +82,20 @@ class MødrekvoteDelregelTest { } @Test - void mødrekvote_etter_første_6_ukene_etter_fødsel_skal_ikke_innvilges_når_mor_har_nok_på_kvoten_men_ikke_har_omsorg() { + void + mødrekvote_etter_første_6_ukene_etter_fødsel_skal_ikke_innvilges_når_mor_har_nok_på_kvoten_men_ikke_har_omsorg() { var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(søknad(oppgittPeriode)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -85,14 +103,20 @@ class MødrekvoteDelregelTest { } @Test - void mødrekvote_etter_første_6_ukene_etter_fødsel_skal_ikke_innvilges_når_mor_har_noe_men_ikke_nok_på_kvoten_og_ikke_har_omsorg() { + void + mødrekvote_etter_første_6_ukene_etter_fødsel_skal_ikke_innvilges_når_mor_har_noe_men_ikke_nok_på_kvoten_og_ikke_har_omsorg() { var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(søknad(oppgittPeriode)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -104,7 +128,10 @@ void UT1007_mor_etterTermin_innenFor6Uker_ikkeGradering_disponibleDager() { var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 100); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -116,24 +143,33 @@ void UT1007_mor_etterTermin_innenFor6Uker_ikkeGradering_disponibleDager() { @Test void UT1008_mor_innenFor6UkerEtterFødsel_gradering() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = gradertPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4)); + var oppgittPeriode = + gradertPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 100); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); assertThat(regelresultat.oppfylt()).isTrue(); assertThat(regelresultat.skalUtbetale()).isTrue(); assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE); - assertThat(regelresultat.getGraderingIkkeInnvilgetÅrsak()).isEqualTo(GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); + assertThat(regelresultat.getGraderingIkkeInnvilgetÅrsak()) + .isEqualTo(GraderingIkkeInnvilgetÅrsak.AVSLAG_PGA_FOR_TIDLIG_GRADERING); } @Test void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = gradertPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(11)); + var oppgittPeriode = + gradertPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(11)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 100); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -147,10 +183,11 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(11)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 100); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .søknad(søknad(oppgittPeriode)) - .inngangsvilkår(new Inngangsvilkår.Builder().fødselOppfylt(false)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .inngangsvilkår(new Inngangsvilkår.Builder().fødselOppfylt(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -167,10 +204,11 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(11)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 100); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .søknad(søknad(oppgittPeriode)) - .inngangsvilkår(new Inngangsvilkår.Builder().fødselOppfylt(true).adopsjonOppfylt(false)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .inngangsvilkår(new Inngangsvilkår.Builder().fødselOppfylt(true).adopsjonOppfylt(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -187,10 +225,14 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(11)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 100); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .søknad(søknad(oppgittPeriode)) - .inngangsvilkår(new Inngangsvilkår.Builder().fødselOppfylt(true).adopsjonOppfylt(true).foreldreansvarnOppfylt(false)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .fødselOppfylt(true) + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -207,11 +249,15 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fødselsdato = LocalDate.of(2018, 1, 1); var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(11)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 100); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .søknad(søknad(oppgittPeriode)) - .inngangsvilkår( - new Inngangsvilkår.Builder().fødselOppfylt(true).adopsjonOppfylt(true).foreldreansvarnOppfylt(true).opptjeningOppfylt(false)) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .fødselOppfylt(true) + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .opptjeningOppfylt(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -227,10 +273,15 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( void opphold_mødrekvote_annenforelder() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppholdsperiode = DelRegelTestUtil.oppholdPeriode(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(30), - OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER); - var kontoer = new Kontoer.Builder().konto(konto(Stønadskontotype.FEDREKVOTE, 100)).konto(konto(Stønadskontotype.MØDREKVOTE, 100)); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer).søknad(søknad(oppholdsperiode)).build(); + var oppholdsperiode = DelRegelTestUtil.oppholdPeriode( + fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(30), OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER); + var kontoer = new Kontoer.Builder() + .konto(konto(Stønadskontotype.FEDREKVOTE, 100)) + .konto(konto(Stønadskontotype.MØDREKVOTE, 100)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppholdsperiode)) + .build(); var regelresultat = kjørRegel(oppholdsperiode, grunnlag); @@ -244,30 +295,38 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( void opphold_mødrekvote_annenforelder_tom_for_konto() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppholdsperiode = DelRegelTestUtil.oppholdPeriode(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(30), - OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER); - var kontoer = new Kontoer.Builder().konto(konto(Stønadskontotype.FEDREKVOTE, 100)).konto(konto(Stønadskontotype.MØDREKVOTE, 0)); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer) - .søknad(new Søknad.Builder().oppgittPeriode(oppholdsperiode).type(Søknadstype.FØDSEL)) - .build(); + var oppholdsperiode = DelRegelTestUtil.oppholdPeriode( + fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(30), OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER); + var kontoer = new Kontoer.Builder() + .konto(konto(Stønadskontotype.FEDREKVOTE, 100)) + .konto(konto(Stønadskontotype.MØDREKVOTE, 0)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .søknad(new Søknad.Builder().oppgittPeriode(oppholdsperiode).type(Søknadstype.FØDSEL)) + .build(); var regelresultat = kjørRegel(oppholdsperiode, grunnlag); assertThat(regelresultat.oppfylt()).isFalse(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.trekkDagerFraSaldo()).isTrue(); - assertThat(regelresultat.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER); + assertThat(regelresultat.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.OPPHOLD_STØRRE_ENN_TILGJENGELIGE_DAGER); } @Test void UT1275_søkte_mødrekvoteperiode_men_søker_døde_i_mellomtiden() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(6).minusDays(1)); + var oppgittPeriode = oppgittMødrekvote( + fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(6).minusDays(1)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .søknad(søknad(oppgittPeriode)) - .datoer(new Datoer.Builder().fødsel(fødselsdato).dødsdatoer(new Dødsdatoer.Builder().søkersDødsdato(fødselsdato.plusDays(3)))) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .datoer(new Datoer.Builder() + .fødsel(fødselsdato) + .dødsdatoer(new Dødsdatoer.Builder().søkersDødsdato(fødselsdato.plusDays(3)))) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -279,13 +338,18 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( @Test void UT1289_søkte_mødrekvoteperiode_men_barn_døde_i_mellomtiden() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(13).minusDays(1)); + var oppgittPeriode = oppgittMødrekvote( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(13).minusDays(1)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .søknad(søknad(oppgittPeriode)) - .datoer(new Datoer.Builder().fødsel(fødselsdato) - .dødsdatoer(new Dødsdatoer.Builder().barnsDødsdato(fødselsdato.plusDays(3)).alleBarnDøde(true))) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .datoer(new Datoer.Builder() + .fødsel(fødselsdato) + .dødsdatoer(new Dødsdatoer.Builder() + .barnsDødsdato(fødselsdato.plusDays(3)) + .alleBarnDøde(true))) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -297,12 +361,18 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( void Innvilge_ikke_UT1289_søkte_mødrekvoteperiode_og_barn_døde_men_mindre_enn_6_uker_siden() { var fødselsdato = LocalDate.of(2018, 1, 1); var barnsDødsdato = fødselsdato.plusDays(1); - var oppgittPeriode = oppgittMødrekvote(fødselsdato, barnsDødsdato.plusWeeks(6).minusDays(2)); + var oppgittPeriode = + oppgittMødrekvote(fødselsdato, barnsDødsdato.plusWeeks(6).minusDays(2)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .søknad(søknad(oppgittPeriode)) - .datoer(new Datoer.Builder().fødsel(fødselsdato).dødsdatoer(new Dødsdatoer.Builder().barnsDødsdato(barnsDødsdato).alleBarnDøde(true))) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .datoer(new Datoer.Builder() + .fødsel(fødselsdato) + .dødsdatoer(new Dødsdatoer.Builder() + .barnsDødsdato(barnsDødsdato) + .alleBarnDøde(true))) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -313,13 +383,18 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( @Test void Innvilge_ikke_UT1289_søkte_mødrekvoteperiode_barn_døde_i_mellomtiden_men_alle_barn_er_ikke_døde() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = oppgittMødrekvote(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(13).minusDays(1)); + var oppgittPeriode = oppgittMødrekvote( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(13).minusDays(1)); var kontoer = enKonto(Stønadskontotype.MØDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer) - .søknad(søknad(oppgittPeriode)) - .datoer(new Datoer.Builder().fødsel(fødselsdato) - .dødsdatoer(new Dødsdatoer.Builder().barnsDødsdato(fødselsdato.plusDays(3)).alleBarnDøde(false))) - .build(); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .datoer(new Datoer.Builder() + .fødsel(fødselsdato) + .dødsdatoer(new Dødsdatoer.Builder() + .barnsDødsdato(fødselsdato.plusDays(3)) + .alleBarnDøde(false))) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -338,9 +413,13 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = oppgittMødrekvote(fom, tom); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -348,7 +427,8 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( assertThat(regelresultat.trekkDagerFraSaldo()).isTrue(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.getUtfallType()).isEqualTo(UtfallType.MANUELL_BEHANDLING); - assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT); + assertThat(regelresultat.getAvklaringÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT); assertThat(regelresultat.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); } @@ -359,9 +439,13 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = overføringsperiode(fom, tom, OverføringÅrsak.INNLEGGELSE); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -369,7 +453,8 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( assertThat(regelresultat.trekkDagerFraSaldo()).isFalse(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.getUtfallType()).isEqualTo(UtfallType.AVSLÅTT); - assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_INNLEGGELSE_IKKE_OPPFYLT); + assertThat(regelresultat.getAvklaringÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_INNLEGGELSE_IKKE_OPPFYLT); } @Test @@ -379,9 +464,13 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = overføringsperiode(fom, tom, OverføringÅrsak.SYKDOM_ELLER_SKADE); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -389,7 +478,8 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( assertThat(regelresultat.trekkDagerFraSaldo()).isFalse(); assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.getUtfallType()).isEqualTo(UtfallType.AVSLÅTT); - assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT); + assertThat(regelresultat.getAvklaringÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT); } @Test @@ -399,9 +489,13 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = overføringsperiode(fom, tom, OverføringÅrsak.ALENEOMSORG); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -423,9 +517,13 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); var oppgittPeriode = overføringsperiode(fom, tom, OverføringÅrsak.ANNEN_FORELDER_IKKE_RETT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer).søknad(søknad(oppgittPeriode)).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(oppgittPeriode)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -438,10 +536,16 @@ void UT1221_mor_etterTermin_etter6Uker_omsorg_disponibleDager_gradering_avklart( private RegelGrunnlag.Builder basicGrunnlagFar(LocalDate fødselsdato) { return create().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true)) - .behandling(new Behandling.Builder().søkerErMor(false)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true)) + .behandling(new Behandling.Builder().søkerErMor(false)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } private Søknad.Builder søknad(OppgittPeriode oppgittPeriode) { @@ -458,9 +562,15 @@ private Konto.Builder konto(Stønadskontotype type, int trekkdager) { private RegelGrunnlag.Builder basicGrunnlagMor(LocalDate fødselsdato) { return create().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true)) - .behandling(new Behandling.Builder().søkerErMor(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true)) + .behandling(new Behandling.Builder().søkerErMor(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/M\303\270drekvoteOrkestreringTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/M\303\270drekvoteOrkestreringTest.java" index 0c05c785..a80775e6 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/M\303\270drekvoteOrkestreringTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/M\303\270drekvoteOrkestreringTest.java" @@ -4,9 +4,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OverføringÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Perioderesultattype; @@ -15,28 +12,39 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; +import org.junit.jupiter.api.Test; class MødrekvoteOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void mødrekvoteperiode_før_familiehendelse() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode( - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusWeeks(1).minusDays(1))) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.MØDREKVOTE, fødselsdato.minusWeeks(1), fødselsdato.plusWeeks(6).minusDays(1)))); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusWeeks(1).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.MØDREKVOTE, + fødselsdato.minusWeeks(1), + fødselsdato.plusWeeks(6).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); + assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(10)); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusWeeks(1).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.minusWeeks(1).minusDays(1)); - assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(1)); @@ -46,56 +54,82 @@ class MødrekvoteOrkestreringTest extends FastsettePerioderRegelOrkestreringTest assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); } @Test void overføring_av_mødrekvote_grunnet_sykdom_skade_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forOverføring(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), - OverføringÅrsak.SYKDOM_ELLER_SKADE, null, null, SYKDOM_ANNEN_FORELDER_GODKJENT)) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forOverføring( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + null, + null, + SYKDOM_ANNEN_FORELDER_GODKJENT)) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(perioder.get(0).uttakPeriode().getOverføringÅrsak()).isEqualTo(OverføringÅrsak.SYKDOM_ELLER_SKADE); - //3 neste uker mødrekvote innvilges + // 3 neste uker mødrekvote innvilges assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); assertThat(perioder.get(1).uttakPeriode().getOverføringÅrsak()).isEqualTo(OverføringÅrsak.SYKDOM_ELLER_SKADE); - //2 neste uker fedrekvote innvilges + // 2 neste uker fedrekvote innvilges assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FEDREKVOTE); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); } @Test void overføring_av_mødrekvote_grunnet_sykdom_skade_skal_gå_til_avslag_hvis_ikke_dokumentert() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forOverføring(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), - OverføringÅrsak.SYKDOM_ELLER_SKADE, null, null, null)) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forOverføring( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + null, + null, + null)) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - //6 første uker mødrekvote avslås + // 6 første uker mødrekvote avslås assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); } @@ -103,67 +137,104 @@ class MødrekvoteOrkestreringTest extends FastsettePerioderRegelOrkestreringTest @Test void overføring_av_mødrekvote_ikke_dokumentert_skal_til_avslag() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forOverføring(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), - OverføringÅrsak.SYKDOM_ELLER_SKADE, null, null, null)) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forOverføring( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + null, + null, + null)) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - //6 første uker mødrekvote skal til avslag + // 6 første uker mødrekvote skal til avslag assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - //3 neste uker mødrekvote skal til avslag + // 3 neste uker mødrekvote skal til avslag assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); - //2 neste uker fedrekvote skal til innvilget + // 2 neste uker fedrekvote skal til innvilget assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FEDREKVOTE); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); } @Test void overføring_av_mødrekvote_grunnet_sykdom_skade_men_far_har_ikke_omsorg_skal_til_manuell_behandling() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg( - new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forOverføring(Stønadskontotype.MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), - OverføringÅrsak.SYKDOM_ELLER_SKADE, null, null, SYKDOM_ANNEN_FORELDER_GODKJENT)) - .oppgittPeriode(oppgittPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forOverføring( + Stønadskontotype.MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + OverføringÅrsak.SYKDOM_ELLER_SKADE, + null, + null, + SYKDOM_ANNEN_FORELDER_GODKJENT)) + .oppgittPeriode(oppgittPeriode( + Stønadskontotype.FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); - //6 første uker mødrekvote avslås - assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); // UT1006 + // 6 første uker mødrekvote avslås + assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); // UT1006 assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - - //3 neste uker mødrekvote innvilges - assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); // UT1006 - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + + // 3 neste uker mødrekvote innvilges + assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); // UT1006 + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); assertThat(perioder.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); - - //2 neste uker fedrekvote avslått - assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); // UT1086 - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); + assertThat(perioder.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); + + // 2 neste uker fedrekvote avslått + assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); // UT1086 + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG); assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FEDREKVOTE); assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); + assertThat(perioder.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/OrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/OrkestreringTest.java index cdd14a95..7230fc6e 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/OrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/OrkestreringTest.java @@ -23,9 +23,6 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktørId; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; @@ -58,36 +55,51 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Vedtak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class OrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void skal_innvilge_to_perioder_med_med_mødrekvote_på_under_10_uker() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); - resultat.stream() - .map(FastsettePeriodeResultat::uttakPeriode) - .forEach(uttakPeriode -> assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET)); + resultat.stream().map(FastsettePeriodeResultat::uttakPeriode).forEach(uttakPeriode -> assertThat( + uttakPeriode.getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET)); } @Test void skal_knekke_mødrekvote_dersom_det_ikke_er_flere_dager_igjen() { var fødselsdato = LocalDate.of(2018, 1, 3); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(12).minusDays(1)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(12).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); - var uttakPerioder = resultat.stream().map(FastsettePeriodeResultat::uttakPeriode).collect(Collectors.toList()); + var uttakPerioder = + resultat.stream().map(FastsettePeriodeResultat::uttakPeriode).collect(Collectors.toList()); assertThat(uttakPerioder).hasSize(4); /* Innvilget foreldrepenger før fødsel*/ @@ -98,32 +110,51 @@ class OrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { /* Innvilget mødrekvote etter fødsel frem til og med uke 6*/ assertThat(uttakPerioder.get(1).getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPerioder.get(1).getFom()).isEqualTo(fødselsdato); - assertThat(uttakPerioder.get(1).getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(uttakPerioder.get(1).getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); /* Innvilget mødrekvote etter fødsel, etter uke 6 */ assertThat(uttakPerioder.get(2).getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPerioder.get(2).getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(uttakPerioder.get(2).getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); + assertThat(uttakPerioder.get(2).getTom()) + .isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); /* Avslått mødrekvote, ikke nok dager */ assertThat(uttakPerioder.get(3).getPerioderesultattype()).isEqualTo(MANUELL_BEHANDLING); assertThat(uttakPerioder.get(3).getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); assertThat(uttakPerioder.get(3).getFom()).isEqualTo(fødselsdato.plusWeeks(10)); - assertThat(uttakPerioder.get(3).getTom()).isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); + assertThat(uttakPerioder.get(3).getTom()) + .isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); } - @Test void helePeriodenUtenforSøknadsfrist() { var fødselsdato = LocalDate.of(2017, 11, 1); var sisteUttaksdag = fødselsdato.plusWeeks(6).minusDays(1); var søknadsfrist = sisteUttaksdag.plusMonths(3).with(TemporalAdjusters.lastDayOfMonth()); - var fpff = forVanligPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), null, false, - søknadsfrist.plusWeeks(1), søknadsfrist.plusWeeks(1), null, null); - var mødrekvote = forVanligPeriode(MØDREKVOTE, fødselsdato, sisteUttaksdag, null, false, søknadsfrist.plusWeeks(1), søknadsfrist.plusWeeks(1), - null, null); - var grunnlag = basicGrunnlagMor(fødselsdato).rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote)); + var fpff = forVanligPeriode( + FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + null, + false, + søknadsfrist.plusWeeks(1), + søknadsfrist.plusWeeks(1), + null, + null); + var mødrekvote = forVanligPeriode( + MØDREKVOTE, + fødselsdato, + sisteUttaksdag, + null, + false, + søknadsfrist.plusWeeks(1), + søknadsfrist.plusWeeks(1), + null, + null); + var grunnlag = basicGrunnlagMor(fødselsdato) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote)); // Act var resultat = fastsettPerioder(grunnlag); @@ -132,19 +163,18 @@ class OrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { assertThat(resultat).hasSize(2); var førFødsel = resultat.stream() - .map(FastsettePeriodeResultat::uttakPeriode) - .filter(p -> FORELDREPENGER_FØR_FØDSEL.equals(p.getStønadskontotype())) - .findFirst(); + .map(FastsettePeriodeResultat::uttakPeriode) + .filter(p -> FORELDREPENGER_FØR_FØDSEL.equals(p.getStønadskontotype())) + .findFirst(); assertThat(førFødsel).isPresent(); assertThat(førFødsel.get().getPerioderesultattype()).isEqualTo(AVSLÅTT); assertThat(førFødsel.get().getManuellbehandlingårsak()).isNull(); assertThat(førFødsel.get().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.SØKNADSFRIST); - var avslåttMødrekvote = resultat.stream() - .map(FastsettePeriodeResultat::uttakPeriode) - .filter(p -> MØDREKVOTE.equals(p.getStønadskontotype())) - .findFirst(); + .map(FastsettePeriodeResultat::uttakPeriode) + .filter(p -> MØDREKVOTE.equals(p.getStønadskontotype())) + .findFirst(); assertThat(avslåttMødrekvote).isPresent(); assertThat(avslåttMødrekvote.get().getPerioderesultattype()).isEqualTo(AVSLÅTT); assertThat(avslåttMødrekvote.get().getManuellbehandlingårsak()).isNull(); @@ -159,17 +189,32 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { void skalKnekkePeriodenVedGrenseForSøknadsfrist() { var fødselsdato = LocalDate.of(2017, 11, 1); var mottattDato = fødselsdato.plusMonths(4).plusWeeks(1); - var fpff = forVanligPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), null, false, mottattDato, - mottattDato, null, null); - //Mødrekvote skal knekkes på for at første delen skal avlås pga søknadsfrist - var mødrekvote = forVanligPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), null, false, mottattDato, mottattDato, null, - null); + var fpff = forVanligPeriode( + FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + null, + false, + mottattDato, + mottattDato, + null, + null); + // Mødrekvote skal knekkes på for at første delen skal avlås pga søknadsfrist + var mødrekvote = forVanligPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1), + null, + false, + mottattDato, + mottattDato, + null, + null); var grunnlag = basicGrunnlagMor(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote)); // Act var resultat = fastsettPerioder(grunnlag); - // Assert assertThat(resultat).hasSize(3); @@ -178,7 +223,6 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { assertThat(førFødsel.getManuellbehandlingårsak()).isNull(); assertThat(førFødsel.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.SØKNADSFRIST); - var mødrekvoteFørKnekk = resultat.get(1).uttakPeriode(); assertThat(mødrekvoteFørKnekk.getPerioderesultattype()).isEqualTo(AVSLÅTT); assertThat(mødrekvoteFørKnekk.getFom()).isEqualTo(fødselsdato); @@ -189,111 +233,133 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { var mødrekvoteEtterKnekk = resultat.get(2).uttakPeriode(); assertThat(mødrekvoteEtterKnekk.getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(mødrekvoteEtterKnekk.getFom()).isEqualTo(LocalDate.of(2017, 12, 1)); - assertThat(mødrekvoteEtterKnekk.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(mødrekvoteEtterKnekk.getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(mødrekvoteEtterKnekk.getManuellbehandlingårsak()).isNull(); } @Test void skal_ikke_innvilge_etter_eller_på_barnets_3årsdag_selv_om_det_er_nok_på_saldoen() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 10000000)) - .konto(konto(FEDREKVOTE, 0)) - .konto(konto(FELLESPERIODE, 0)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 10000000)) + .konto(konto(FEDREKVOTE, 0)) + .konto(konto(FELLESPERIODE, 0)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(datoer(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusYears(4)))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer); + .datoer(datoer(fødselsdato)) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusYears(4)))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //3 uker før fødsel - innvilges + // 3 uker før fødsel - innvilges assertThat(resultat.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(resultat.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //periode frem til 3-årsdag (eksklusiv) innvilges - //periode knekkes alltid knekt ved 6 uker pga regelflyt + // periode frem til 3-årsdag (eksklusiv) innvilges + // periode knekkes alltid knekt ved 6 uker pga regelflyt assertThat(resultat.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(resultat.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(resultat.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(resultat.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusYears(3).minusDays(1)); + assertThat(resultat.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusYears(3).minusDays(1)); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //resten av søknadsperide avslås + // resten av søknadsperide avslås assertThat(resultat.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusYears(3)); assertThat(resultat.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusYears(4)); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(3).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_1)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(3).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_1)) + .isEqualTo(Utbetalingsgrad.ZERO); } @Test void skal_ikke_innvilge_periode_som_starter_på_barnets_3årsdag_eller_som_starter_senere() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 10000000)) - .konto(konto(FEDREKVOTE, 15)) - .konto(konto(FELLESPERIODE, 10000)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 10000000)) + .konto(konto(FEDREKVOTE, 15)) + .konto(konto(FELLESPERIODE, 10000)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(datoer(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusYears(3).minusDays(1)), - oppgittPeriode(FELLESPERIODE, fødselsdato.plusYears(3), fødselsdato.plusYears(4).minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato.plusYears(4), fødselsdato.plusYears(5)))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + .datoer(datoer(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusYears(3).minusDays(1)), + oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusYears(3), + fødselsdato.plusYears(4).minusDays(1)), + oppgittPeriode(MØDREKVOTE, fødselsdato.plusYears(4), fødselsdato.plusYears(5)))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(5); - //3 uker før fødsel - innvilges + // 3 uker før fødsel - innvilges assertThat(resultat.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(resultat.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //periode frem til 3-årsdag (eksklusiv) innvilges - //periode knekkes alltid knekt ved 6 uker pga regelflyt + // periode frem til 3-årsdag (eksklusiv) innvilges + // periode knekkes alltid knekt ved 6 uker pga regelflyt assertThat(resultat.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato); - assertThat(resultat.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(resultat.get(1).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(resultat.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusYears(3).minusDays(1)); + assertThat(resultat.get(2).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusYears(3).minusDays(1)); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //periode som starter på 3årsdag avslås + // periode som starter på 3årsdag avslås assertThat(resultat.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusYears(3)); - assertThat(resultat.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusYears(4).minusDays(1)); + assertThat(resultat.get(3).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusYears(4).minusDays(1)); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - //periode som starter etter 3årsdag avslås + // periode som starter etter 3årsdag avslås assertThat(resultat.get(4).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusYears(4)); assertThat(resultat.get(4).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusYears(5)); assertThat(resultat.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); } - @Test void skal_avslå_første_del_pga_manglende_omsorg_og_andre_del_pga_tom_på_kvote_siden_dager_trekkes() { var fødselsdato = LocalDate.of(2018, 1, 1); var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(datoer(fødselsdato)) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1)))) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + .datoer(datoer(fødselsdato)) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1)))) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var resultat = fastsettPerioder(grunnlag); @@ -320,16 +386,24 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { var periodeFom = fødselsdato.plusYears(1); var periodeTom = periodeFom.plusDays(20); var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 15)); - var fedrekvote = forVanligPeriode(FEDREKVOTE, periodeFom, periodeTom, null, false, periodeTom.plusYears(2), periodeTom.plusYears(2), null, - null); + var fedrekvote = forVanligPeriode( + FEDREKVOTE, + periodeFom, + periodeTom, + null, + false, + periodeTom.plusYears(2), + periodeTom.plusYears(2), + null, + null); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(datoer(fødselsdato)) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .søknad(søknad(Søknadstype.FØDSEL, fedrekvote)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .build(); + .datoer(datoer(fødselsdato)) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .søknad(søknad(Søknadstype.FØDSEL, fedrekvote)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(1); @@ -345,19 +419,33 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { @Test void UT1290_skal_være_ugyldige_stønadskonto_hvis_søker_på_konto_som_man_ikke_har_tilgang_til() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode( + oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); - assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(resultat.get(2).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); - assertThat(resultat.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1).decimalValue()).isNotZero(); - assertThat(resultat.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_1)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(resultat.get(2).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO); + assertThat(resultat.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(resultat.get(2) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD_1) + .decimalValue()) + .isNotZero(); + assertThat(resultat.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_1)) + .isEqualTo(Utbetalingsgrad.ZERO); } @Test @@ -367,32 +455,44 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { var fødselsdato = LocalDate.of(2019, 3, 13); var tom = Virkedager.plusVirkedager(fødselsdato.plusWeeks(6), 5); var annenPartPeriode1 = AnnenpartUttakPeriode.Builder.uttak(fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(aktivitetIdentifikator, Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, new Trekkdager(15), - Utbetalingsgrad.TEN)) - .build(); - var annenPartPeriode2 = AnnenpartUttakPeriode.Builder.uttak(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(aktivitetIdentifikator, Stønadskontotype.MØDREKVOTE, new Trekkdager(30), Utbetalingsgrad.TEN)) - .build(); + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + aktivitetIdentifikator, + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + new Trekkdager(15), + Utbetalingsgrad.TEN)) + .build(); + var annenPartPeriode2 = AnnenpartUttakPeriode.Builder.uttak( + fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + aktivitetIdentifikator, Stønadskontotype.MØDREKVOTE, new Trekkdager(30), Utbetalingsgrad.TEN)) + .build(); var annenPartPeriode3 = AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(6), tom) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(aktivitetIdentifikator, Stønadskontotype.FELLESPERIODE, - new Trekkdager(Virkedager.beregnAntallVirkedager(fødselsdato.plusWeeks(6), tom)), Utbetalingsgrad.TEN)) - .build(); - var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 50)) - .konto(konto(MØDREKVOTE, 50)) - .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(FELLESPERIODE, 130)) - .flerbarnsdager(5); + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + aktivitetIdentifikator, + Stønadskontotype.FELLESPERIODE, + new Trekkdager(Virkedager.beregnAntallVirkedager(fødselsdato.plusWeeks(6), tom)), + Utbetalingsgrad.TEN)) + .build(); + var kontoer = new Kontoer.Builder() + .konto(konto(FEDREKVOTE, 50)) + .konto(konto(MØDREKVOTE, 50)) + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(FELLESPERIODE, 130)) + .flerbarnsdager(5); var periodeGrunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(6), tom, true, null))) - .annenPart(new AnnenPart.Builder().uttaksperiode(annenPartPeriode1).uttaksperiode(annenPartPeriode2).uttaksperiode(annenPartPeriode3)) - .build(); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(Stønadskontotype.FEDREKVOTE, fødselsdato.plusWeeks(6), tom, true, null))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenPartPeriode1) + .uttaksperiode(annenPartPeriode2) + .uttaksperiode(annenPartPeriode3)) + .build(); var resultat = fastsettPerioder(periodeGrunnlag); assertThat(resultat).hasSize(2); @@ -408,22 +508,32 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { } @Test - void skal_håndtere_at_både_flerbarnsdager_og_foreldrepenger_kvote_går_tom_i_samme_søknadsperiode_på_forskjellig_dato() { + void + skal_håndtere_at_både_flerbarnsdager_og_foreldrepenger_kvote_går_tom_i_samme_søknadsperiode_på_forskjellig_dato() { var fødselsdato = LocalDate.of(2019, 3, 13); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - //Går først tom for foreldrepenger, deretter tom på flerbarnsdager - .konto(konto(FORELDREPENGER, 75)).flerbarnsdager(150); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + // Går først tom for foreldrepenger, deretter tom på flerbarnsdager + .konto(konto(FORELDREPENGER, 75)) + .flerbarnsdager(150); var periodeGrunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(aleneomsorg()) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), false, null), - oppgittPeriode(Stønadskontotype.FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(100), true, null))) - .build(); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(aleneomsorg()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + false, + null), + oppgittPeriode( + Stønadskontotype.FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(100), true, null))) + .build(); var resultat = fastsettPerioder(periodeGrunnlag); assertThat(resultat).hasSize(4); @@ -437,17 +547,31 @@ private Datoer.Builder datoer(LocalDate fødselsdato) { void mor_aleneomsorg_knekkes_riktig() { var fødselsdato = LocalDate.of(2022, 10, 4); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)).konto(konto(FORELDREPENGER, 75)).farUttakRundtFødselDager(10); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(FORELDREPENGER, 75)) + .farUttakRundtFødselDager(10); var periodeGrunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(false).farHarRett(false).aleneomsorg(true)) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), false, null), - oppgittPeriode(Stønadskontotype.FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(100), false, null))) - .build(); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(false) + .farHarRett(false) + .aleneomsorg(true)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + false, + null), + oppgittPeriode( + Stønadskontotype.FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(100), false, null))) + .build(); var resultat = fastsettPerioder(periodeGrunnlag); assertThat(resultat).hasSize(4); @@ -461,21 +585,33 @@ void mor_aleneomsorg_knekkes_riktig() { void begge_rett_med_termin_fff_knekkes_riktig() { var fødselsdato = LocalDate.of(2022, 10, 4); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 75)) - .konto(konto(FEDREKVOTE, 75)) - .konto(konto(FELLESPERIODE, 80)) - .farUttakRundtFødselDager(10); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 75)) + .konto(konto(FEDREKVOTE, 75)) + .konto(konto(FELLESPERIODE, 80)) + .farUttakRundtFødselDager(10); var periodeGrunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato).termin(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), false, null), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1), false, null))) - .build(); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato).termin(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + Stønadskontotype.FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + false, + null), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1), + false, + null))) + .build(); var resultat = fastsettPerioder(periodeGrunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); @@ -488,18 +624,25 @@ void begge_rett_med_termin_fff_knekkes_riktig() { var fødselsdato = LocalDate.of(2018, 8, 20); var aktivitetIdentifikator = AktivitetIdentifikator.annenAktivitet(); var kontoer = new Kontoer.Builder().konto(konto(MØDREKVOTE, 75)).konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)); - var grunnlag = new RegelGrunnlag.Builder().datoer(datoer(fødselsdato)) - .behandling(morBehandling().kreverSammenhengendeUttak(true)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2018, 7, 30), LocalDate.of(2018, 8, 19))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, LocalDate.of(2018, 8, 20), LocalDate.of(2018, 12, 2))) - .oppgittPeriode(utsettelsePeriode(LocalDate.of(2018, 12, 3), LocalDate.of(2018, 12, 31), UtsettelseÅrsak.INNLAGT_SØKER, - INNLEGGELSE_SØKER_GODKJENT))) - .inngangsvilkår(oppfyltAlleVilkår()) - .build(); + var grunnlag = new RegelGrunnlag.Builder() + .datoer(datoer(fødselsdato)) + .behandling(morBehandling().kreverSammenhengendeUttak(true)) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .kontoer(kontoer) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2018, 7, 30), LocalDate.of(2018, 8, 19))) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, LocalDate.of(2018, 8, 20), LocalDate.of(2018, 12, 2))) + .oppgittPeriode(utsettelsePeriode( + LocalDate.of(2018, 12, 3), + LocalDate.of(2018, 12, 31), + UtsettelseÅrsak.INNLAGT_SØKER, + INNLEGGELSE_SØKER_GODKJENT))) + .inngangsvilkår(oppfyltAlleVilkår()) + .build(); assertThatCode(() -> fastsettPerioder(grunnlag)).doesNotThrowAnyException(); } @@ -507,18 +650,30 @@ void begge_rett_med_termin_fff_knekkes_riktig() { @Test void skal_gå_til_avslag_når_søker_er_tom_for_sine_konto_mor() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)).konto(konto(MØDREKVOTE, 50)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 50)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(13).minusDays(1)))); - + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(13).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); @@ -531,18 +686,32 @@ void begge_rett_med_termin_fff_knekkes_riktig() { @Test void skal_filtrere_bort_perioden_som_kun_er_helg() { var fødselsdato = LocalDate.of(2018, 1, 1); - var periodeSomKunErHelg = oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6).plusDays(5), fødselsdato.plusWeeks(6).plusDays(6)); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)).konto(konto(MØDREKVOTE, 50)); + var periodeSomKunErHelg = oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6).plusDays(5), + fødselsdato.plusWeeks(6).plusDays(6)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 50)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(6).plusDays(4)), periodeSomKunErHelg, - oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(8)))); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(6).plusDays(4)), + periodeSomKunErHelg, + oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(8)))); var resultat = fastsettPerioder(grunnlag); @@ -550,23 +719,37 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { assertThat(resultat).hasSize(4); } - @Test void skal_gå_til_avslag_når_søker_er_tom_for_sine_konto_far() { var fødselsdato = LocalDate.of(2018, 1, 1); var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 15)).konto(konto(FELLESPERIODE, 50)); - var søknad = søknad(Søknadstype.FØDSEL, oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(9).minusDays(1)), - oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(9), fødselsdato.plusWeeks(10).minusDays(1)), - oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(20).minusDays(1), MORS_AKTIVITET_GODKJENT), - oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(20), fødselsdato.plusWeeks(21).minusDays(1), MORS_AKTIVITET_GODKJENT)); + var søknad = søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(9).minusDays(1)), + oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(9), + fødselsdato.plusWeeks(10).minusDays(1)), + oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(20).minusDays(1), + MORS_AKTIVITET_GODKJENT), + oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(20), + fødselsdato.plusWeeks(21).minusDays(1), + MORS_AKTIVITET_GODKJENT)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad); - + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad); var resultat = fastsettPerioder(grunnlag); @@ -580,17 +763,28 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { @Test void skal_gå_regne_ubetalingsprosent_ut_fra_samtidig_uttaksprosent_hvis_ikke_gradering() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)).konto(konto(MØDREKVOTE, 5 * 15)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) + .konto(konto(MØDREKVOTE, 5 * 15)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), false, new SamtidigUttaksprosent(50)))); - + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + false, + new SamtidigUttaksprosent(50)))); var resultat = fastsettPerioder(grunnlag); @@ -602,17 +796,28 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { @Test void skal_gå_regne_trekkdager_ut_fra_samtidig_uttaksprosent_hvis_ikke_gradering() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)).konto(konto(MØDREKVOTE, 5 * 15)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) + .konto(konto(MØDREKVOTE, 5 * 15)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), false, new SamtidigUttaksprosent(80)))); - + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + false, + new SamtidigUttaksprosent(80)))); var resultat = fastsettPerioder(grunnlag); @@ -624,19 +829,30 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { @Test void oppholdsperiode_skal_knekke_og_bevare_årsaken() { var fødselsdato = LocalDate.of(2018, 1, 1); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)).konto(konto(MØDREKVOTE, 100)).konto(konto(FEDREKVOTE, 5)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 100)) + .konto(konto(FEDREKVOTE, 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(morBehandling().kreverSammenhengendeUttak(true)) - .rettOgOmsorg(beggeRett()) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - //Går tom for fedrekvote i oppholdsperioden - .oppgittPeriode( - forOpphold(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8), OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER, null, null))); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(morBehandling().kreverSammenhengendeUttak(true)) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + // Går tom for fedrekvote i oppholdsperioden + .oppgittPeriode(forOpphold( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8), + OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER, + null, + null))); var resultat = fastsettPerioder(grunnlag); @@ -649,16 +865,24 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { void skal_knekke_på_riktig_dato_når_konto_går_tom_og_periode_har_samtidig_uttak() { var fødselsdato = LocalDate.of(2019, 3, 19); var sisteUttaksdato = LocalDate.of(2019, 5, 13); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)).konto(konto(MØDREKVOTE, 5)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) + .konto(konto(MØDREKVOTE, 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2019, 2, 27), LocalDate.of(2019, 3, 18)), - oppgittPeriode(MØDREKVOTE, LocalDate.of(2019, 4, 19), sisteUttaksdato, false, new SamtidigUttaksprosent(80)))); - + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2019, 2, 27), LocalDate.of(2019, 3, 18)), + oppgittPeriode( + MØDREKVOTE, + LocalDate.of(2019, 4, 19), + sisteUttaksdato, + false, + new SamtidigUttaksprosent(80)))); var resultat = fastsettPerioder(grunnlag); @@ -671,67 +895,101 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { var fødselsdato = LocalDate.of(2019, 1, 24); var kontoer = new Kontoer.Builder().konto(konto(MØDREKVOTE, 75 - 28)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(new Behandling.Builder().søkerErMor(true).berørtBehandling(true)) - .rettOgOmsorg(beggeRett()) - .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2019, 3, 4))) - //far har fått overført mange dager av mor. Det er noen dager igjen til mor. Skal avslå alle mors perioder og ikke trekk dager - .annenPart(new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 6)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), Stønadskontotype.MØDREKVOTE, new Trekkdager(3), - Utbetalingsgrad.FULL)) - .build()) - .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 3, 7), LocalDate.of(2019, 3, 31)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), Stønadskontotype.MØDREKVOTE, new Trekkdager(17), - Utbetalingsgrad.FULL)) - .build()) - .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 4, 1), LocalDate.of(2019, 5, 3)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), Stønadskontotype.MØDREKVOTE, new Trekkdager(25), - Utbetalingsgrad.FULL)) - .build())) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(MØDREKVOTE, LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 15)))); - + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(new Behandling.Builder().søkerErMor(true).berørtBehandling(true)) + .rettOgOmsorg(beggeRett()) + .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2019, 3, 4))) + // far har fått overført mange dager av mor. Det er noen dager igjen til + // mor. Skal avslå alle mors perioder og ikke trekk dager + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 6)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + Stønadskontotype.MØDREKVOTE, + new Trekkdager(3), + Utbetalingsgrad.FULL)) + .build()) + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 3, 7), LocalDate.of(2019, 3, 31)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + Stønadskontotype.MØDREKVOTE, + new Trekkdager(17), + Utbetalingsgrad.FULL)) + .build()) + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 4, 1), LocalDate.of(2019, 5, 3)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + Stønadskontotype.MØDREKVOTE, + new Trekkdager(25), + Utbetalingsgrad.FULL)) + .build())) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(MØDREKVOTE, LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 15)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1).decimalValue()).isZero(); - assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_1).decimalValue()).isZero(); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1).decimalValue()).isZero(); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD_1).decimalValue()).isZero(); + assertThat(resultat.get(0) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD_1) + .decimalValue()) + .isZero(); + assertThat(resultat.get(0) + .uttakPeriode() + .getUtbetalingsgrad(ARBEIDSFORHOLD_1) + .decimalValue()) + .isZero(); + assertThat(resultat.get(1) + .uttakPeriode() + .getTrekkdager(ARBEIDSFORHOLD_1) + .decimalValue()) + .isZero(); + assertThat(resultat.get(1) + .uttakPeriode() + .getUtbetalingsgrad(ARBEIDSFORHOLD_1) + .decimalValue()) + .isZero(); } @Test void skal_knekke_på_riktig_dato_når_flerbarnskonto_går_tom() { var fødselsdato = LocalDate.of(2019, 3, 19); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) - .konto(konto(MØDREKVOTE, 20)) - .konto(konto(FELLESPERIODE, 20)) - .flerbarnsdager(5); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 3 * 5)) + .konto(konto(MØDREKVOTE, 20)) + .konto(konto(FELLESPERIODE, 20)) + .flerbarnsdager(5); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(datoer(fødselsdato)) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(6), LocalDate.of(2020, 5, 13), true, null))); - + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(datoer(fødselsdato)) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FELLESPERIODE, fødselsdato.plusWeeks(6), LocalDate.of(2020, 5, 13), true, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - //Flerbarnsdager går tom, trekkdager satt til 5 dager som er resten av flerbansdager kontoen + // Flerbarnsdager går tom, trekkdager satt til 5 dager som er resten av flerbansdager + // kontoen assertThat(resultat.get(0).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(resultat.get(0).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(7).minusDays(1)); + assertThat(resultat.get(0).uttakPeriode().getTom()) + .isEqualTo(fødselsdato.plusWeeks(7).minusDays(1)); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(5)); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(5)); - //15 dager fellesperiode igjen, men ingen flerbarnsdager + // 15 dager fellesperiode igjen, men ingen flerbarnsdager assertThat(resultat.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(7)); assertThat(resultat.get(1).uttakPeriode().getTom()).isEqualTo(LocalDate.of(2020, 5, 13)); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(MANUELL_BEHANDLING); @@ -742,20 +1000,25 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { var fødselsdato = LocalDate.of(2019, 5, 28); var arbeidsforhold1 = new Arbeidsforhold(ARBEIDSFORHOLD_1); var arbeidsforhold2 = new Arbeidsforhold(ARBEIDSFORHOLD_2); - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.minusDays(1), fødselsdato.minusDays(1)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, arbeidsforhold1.identifikator()))); + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.minusDays(1), fødselsdato.minusDays(1)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet( + new Trekkdager(15), FORELDREPENGER, arbeidsforhold1.identifikator()))); var vedtak = new Vedtak.Builder().leggTilPeriode(fastsattPeriode); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold1).arbeidsforhold(arbeidsforhold2)) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).aleneomsorg(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(6))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6).plusDays(1), fødselsdato.plusWeeks(15)))) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) - .inngangsvilkår(oppfyltAlleVilkår()) - .revurdering(new Revurdering.Builder().gjeldendeVedtak(vedtak)) - .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 50))); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold1).arbeidsforhold(arbeidsforhold2)) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).aleneomsorg(true)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(6))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, fødselsdato.plusWeeks(6).plusDays(1), fødselsdato.plusWeeks(15)))) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) + .inngangsvilkår(oppfyltAlleVilkår()) + .revurdering(new Revurdering.Builder().gjeldendeVedtak(vedtak)) + .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 50))); assertThatCode(() -> fastsettPerioder(grunnlag)).doesNotThrowAnyException(); } @@ -763,85 +1026,132 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { @Test void søknadsfrist_ikke_trekke_dager_etter_at_konto_er_tom() { var fødselsdato = LocalDate.of(2018, 6, 14); - var grunnlag = basicGrunnlag(fødselsdato).rettOgOmsorg(aleneomsorg()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusYears(1)))) - .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 50))); + var grunnlag = basicGrunnlag(fødselsdato) + .rettOgOmsorg(aleneomsorg()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusYears(1)))) + .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 50))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(30)); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(20)); - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(Trekkdager.ZERO); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(30)); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(20)); + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(Trekkdager.ZERO); } @Test void søknadsfrist_ikke_trekke_dager_etter_at_konto_er_tom_manglende_søkt_periode() { var fødselsdato = LocalDate.of(2018, 6, 14); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato.plusYears(1), fødselsdato.plusYears(1)))) - .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 50))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(FORELDREPENGER, fødselsdato.plusYears(1), fødselsdato.plusYears(1)))) + .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 50))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); - //fram til tom på konto - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(50)); + // fram til tom på konto + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(50)); assertThat(resultat.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); - //mellom tom på konto og første søkte - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(Trekkdager.ZERO); - //første søkte - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(Trekkdager.ZERO); + // mellom tom på konto og første søkte + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(Trekkdager.ZERO); + // første søkte + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(Trekkdager.ZERO); assertThat(resultat.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } @Test - void utsettelse_som_går_til_manuell_behandling_skal_ikke_trekke_dager_hvis_dager_igjen_på_bare_ett_av_to_arbeidsforhold_selv_om_sluttpunkt_trekker_dager() { + void + utsettelse_som_går_til_manuell_behandling_skal_ikke_trekke_dager_hvis_dager_igjen_på_bare_ett_av_to_arbeidsforhold_selv_om_sluttpunkt_trekker_dager() { var fødselsdato = LocalDate.of(2018, 6, 14); var arbeidsforhold1 = new Arbeidsforhold(ARBEIDSFORHOLD_1); var arbeidsforhold2 = new Arbeidsforhold(ARBEIDSFORHOLD_2); - var grunnlag = basicGrunnlag(fødselsdato).behandling(morBehandling().kreverSammenhengendeUttak(true)) - .rettOgOmsorg(aleneomsorg()) - //50% prosent stilling, men søker utsettelse. Går til manuell behandling - .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold1) - .arbeidsforhold(arbeidsforhold2) - .endringAvStilling(new EndringAvStilling(fødselsdato, BigDecimal.valueOf(75)))) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode( - gradertoppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1), BigDecimal.valueOf(50), - Set.of(arbeidsforhold1.identifikator()))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(100), UtsettelseÅrsak.ARBEID, null))) - .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 35))); + var grunnlag = basicGrunnlag(fødselsdato) + .behandling(morBehandling().kreverSammenhengendeUttak(true)) + .rettOgOmsorg(aleneomsorg()) + // 50% prosent stilling, men søker utsettelse. Går til manuell behandling + .arbeid(new Arbeid.Builder() + .arbeidsforhold(arbeidsforhold1) + .arbeidsforhold(arbeidsforhold2) + .endringAvStilling(new EndringAvStilling(fødselsdato, BigDecimal.valueOf(75)))) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(gradertoppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(7).minusDays(1), + BigDecimal.valueOf(50), + Set.of(arbeidsforhold1.identifikator()))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(100), UtsettelseÅrsak.ARBEID, null))) + .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 35))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.get(2).uttakPeriode().getManuellbehandlingårsak()).isNotNull(); - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(Trekkdager.ZERO); - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)).isEqualTo(Trekkdager.ZERO); + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(Trekkdager.ZERO); + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_2)) + .isEqualTo(Trekkdager.ZERO); assertThat(resultat.get(2).uttakPeriode().getStønadskontotype()).isNull(); } @Test void innvilge_foreldrepenger_14_uker_før_fødsel_men_ikke_12_uker_før_termin_ved_terminsøknad() { var termin = LocalDate.of(2020, 6, 10); - var fp = forVanligPeriode(FORELDREPENGER, termin.minusWeeks(15), termin.minusWeeks(3).minusDays(1), null, false, null, null, null, null); - var fpff = forVanligPeriode(FORELDREPENGER_FØR_FØDSEL, termin.minusWeeks(3), termin.minusDays(1), null, false, null, null, null, null); + var fp = forVanligPeriode( + FORELDREPENGER, + termin.minusWeeks(15), + termin.minusWeeks(3).minusDays(1), + null, + false, + null, + null, + null, + null); + var fpff = forVanligPeriode( + FORELDREPENGER_FØR_FØDSEL, + termin.minusWeeks(3), + termin.minusDays(1), + null, + false, + null, + null, + null, + null); var fp2 = forVanligPeriode(FORELDREPENGER, termin, termin.plusWeeks(4), null, false, null, null, null, null); - var testGrunnlag = basicGrunnlag().datoer(new Datoer.Builder().termin(termin).fødsel(termin.plusWeeks(2))) - .rettOgOmsorg(aleneomsorg()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(1000))) - .søknad(new Søknad.Builder().type(Søknadstype.TERMIN).oppgittePerioder(List.of(fp, fpff, fp2))); + var testGrunnlag = basicGrunnlag() + .datoer(new Datoer.Builder().termin(termin).fødsel(termin.plusWeeks(2))) + .rettOgOmsorg(aleneomsorg()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(1000))) + .søknad(new Søknad.Builder().type(Søknadstype.TERMIN).oppgittePerioder(List.of(fp, fpff, fp2))); var resultater = fastsettPerioder(testGrunnlag); assertThat(resultater.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); assertThat(resultater.get(0).uttakPeriode().getFom()).isEqualTo(termin.minusWeeks(15)); - assertThat(resultater.get(0).uttakPeriode().getTom()).isEqualTo(termin.minusWeeks(12).minusDays(1)); - assertThat(resultater.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(resultater.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); + assertThat(resultater.get(0).uttakPeriode().getTom()) + .isEqualTo(termin.minusWeeks(12).minusDays(1)); + assertThat(resultater.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultater.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)) + .isEqualTo(Trekkdager.ZERO); assertThat(resultater.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); } @@ -850,40 +1160,58 @@ void skal_filtrere_bort_perioden_som_kun_er_helg() { void skal_innvilge_med_privatperson_som_arbeidsgiver() { var fødselsdato = LocalDate.of(2018, 1, 1); var aktivitetIdentifikator = AktivitetIdentifikator.forArbeid(new AktørId("123"), "345"); - var grunnlag = basicGrunnlagMor(fødselsdato).arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - gradertoppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10), BigDecimal.TEN, - Set.of(aktivitetIdentifikator)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + gradertoppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10), + BigDecimal.TEN, + Set.of(aktivitetIdentifikator)))); var resultat = fastsettPerioder(grunnlag); - assertThat(resultat).isNotEmpty().allMatch(p -> p.uttakPeriode().getPerioderesultattype().equals(Perioderesultattype.INNVILGET)); + assertThat(resultat) + .isNotEmpty() + .allMatch(p -> p.uttakPeriode().getPerioderesultattype().equals(Perioderesultattype.INNVILGET)); } @Test void skal_delvis_innvilge_med_periode_før_etter_start_ny_stønadsperiode() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2021, 1, 1)); var nesteStønadsperiode = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); - var grunnlag = basicGrunnlag().datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(FEDREKVOTE, nesteStønadsperiode.minusWeeks(5), nesteStønadsperiode.plusWeeks(5).minusDays(1)))); + var grunnlag = basicGrunnlag() + .datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FEDREKVOTE, + nesteStønadsperiode.minusWeeks(5), + nesteStønadsperiode.plusWeeks(5).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.stream() - .map(FastsettePeriodeResultat::uttakPeriode) - .map(UttakPeriode::getPerioderesultattype) - .filter(INNVILGET::equals) - .count()).isEqualTo(1); + .map(FastsettePeriodeResultat::uttakPeriode) + .map(UttakPeriode::getPerioderesultattype) + .filter(INNVILGET::equals) + .count()) + .isEqualTo(1); var avslått = resultat.stream() - .map(FastsettePeriodeResultat::uttakPeriode) - .filter(up -> AVSLÅTT.equals(up.getPerioderesultattype())) - .findFirst() - .orElseThrow(); + .map(FastsettePeriodeResultat::uttakPeriode) + .filter(up -> AVSLÅTT.equals(up.getPerioderesultattype())) + .findFirst() + .orElseThrow(); assertThat(avslått.getFom()).isEqualTo(nesteStønadsperiode); assertThat(avslått.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); } @@ -892,12 +1220,17 @@ void skal_innvilge_med_privatperson_som_arbeidsgiver() { void skal_innvilge_med_periode_før_start_ny_stønadsperiode() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2021, 1, 1)); var nesteStønadsperiode = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); - var grunnlag = basicGrunnlag().datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .kontoer(defaultKontoer()) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(FEDREKVOTE, nesteStønadsperiode.minusWeeks(18), nesteStønadsperiode.minusWeeks(8).minusDays(1)))); + var grunnlag = basicGrunnlag() + .datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .kontoer(defaultKontoer()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FEDREKVOTE, + nesteStønadsperiode.minusWeeks(18), + nesteStønadsperiode.minusWeeks(8).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); @@ -909,213 +1242,344 @@ void skal_innvilge_med_privatperson_som_arbeidsgiver() { void skal_avslå_med_periode_etter_start_ny_stønadsperiode() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2021, 1, 1)); var nesteStønadsperiode = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 1, 1)); - var grunnlag = basicGrunnlag().datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(FEDREKVOTE, nesteStønadsperiode.plusWeeks(1), nesteStønadsperiode.plusWeeks(11).minusDays(1)))); + var grunnlag = basicGrunnlag() + .datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FEDREKVOTE, + nesteStønadsperiode.plusWeeks(1), + nesteStønadsperiode.plusWeeks(11).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(1); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultat.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); + assertThat(resultat.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); } @Test void to_tette_skal_innvilge_med_periode_etter_start_ny_stønadsperiode_gjenstående_minsterett() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 8, 2)); var nesteStønadsperiode = Virkedager.justerHelgTilMandag(LocalDate.of(2023, 4, 1)); - var grunnlag = basicGrunnlag().datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(15 * 5)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(16 * 5)) - .etterNesteStønadsperiodeDager(22 * 5)) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1)), - oppgittPeriode(FELLESPERIODE, nesteStønadsperiode.minusWeeks(4), nesteStønadsperiode.plusWeeks(12).minusDays(1)))); + var grunnlag = basicGrunnlag() + .datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(15 * 5)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(16 * 5)) + .etterNesteStønadsperiodeDager(22 * 5)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1)), + oppgittPeriode( + FELLESPERIODE, + nesteStønadsperiode.minusWeeks(4), + nesteStønadsperiode.plusWeeks(12).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(5); - assertThat(resultat.stream().filter(r -> Perioderesultattype.AVSLÅTT.equals(r.uttakPeriode().getPerioderesultattype())).count()).isEqualTo(1); + assertThat(resultat.stream() + .filter(r -> Perioderesultattype.AVSLÅTT.equals( + r.uttakPeriode().getPerioderesultattype())) + .count()) + .isEqualTo(1); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(resultat.get(3).uttakPeriode().getFom()).isEqualTo(nesteStønadsperiode); - assertThat(resultat.get(3).uttakPeriode().getTom()).isEqualTo(nesteStønadsperiode.plusWeeks(3).minusDays(1)); + assertThat(resultat.get(3).uttakPeriode().getTom()) + .isEqualTo(nesteStønadsperiode.plusWeeks(3).minusDays(1)); assertThat(resultat.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultat.get(4).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); + assertThat(resultat.get(4).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); } @Test void to_tette_skal_avslå_med_periode_etter_start_ny_stønadsperiode_oppbrukt_minsterett() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 8, 2)); var nesteStønadsperiode = Virkedager.justerHelgTilMandag(LocalDate.of(2023, 4, 1)); - var grunnlag = basicGrunnlag().datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) - .rettOgOmsorg(beggeRett()) - .behandling(farBehandling()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(16 * 5)) - .minsterettDager(8 * 5) - .etterNesteStønadsperiodeDager(8 * 5)) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(FEDREKVOTE, nesteStønadsperiode.minusWeeks(12), nesteStønadsperiode.minusWeeks(2).minusDays(1)), - oppgittPeriode(FEDREKVOTE, nesteStønadsperiode, nesteStønadsperiode.plusWeeks(5).minusDays(1)))); + var grunnlag = basicGrunnlag() + .datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) + .rettOgOmsorg(beggeRett()) + .behandling(farBehandling()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(15 * 5)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(16 * 5)) + .minsterettDager(8 * 5) + .etterNesteStønadsperiodeDager(8 * 5)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FEDREKVOTE, + nesteStønadsperiode.minusWeeks(12), + nesteStønadsperiode.minusWeeks(2).minusDays(1)), + oppgittPeriode( + FEDREKVOTE, + nesteStønadsperiode, + nesteStønadsperiode.plusWeeks(5).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); - assertThat(resultat.stream().filter(r -> Perioderesultattype.AVSLÅTT.equals(r.uttakPeriode().getPerioderesultattype())).count()).isEqualTo(1); - // Periode 0 er 8 uker FK innenfor minsteretten. Det var søkt om 10 uker men perioden blir knekt etter 8 uker pga minsterett - // Periode 1 er 2 uker FK utenfor minsteretten. Det var søkt om 10 uker og dette er restperioden på 2 uker + assertThat(resultat.stream() + .filter(r -> Perioderesultattype.AVSLÅTT.equals( + r.uttakPeriode().getPerioderesultattype())) + .count()) + .isEqualTo(1); + // Periode 0 er 8 uker FK innenfor minsteretten. Det var søkt om 10 uker men perioden blir + // knekt etter 8 uker pga minsterett + // Periode 1 er 2 uker FK utenfor minsteretten. Det var søkt om 10 uker og dette er + // restperioden på 2 uker assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(resultat.get(1).uttakPeriode().getFom()).isEqualTo(nesteStønadsperiode.minusWeeks(4)); - assertThat(resultat.get(1).uttakPeriode().getTom()).isEqualTo(nesteStønadsperiode.minusWeeks(2).minusDays(1)); + assertThat(resultat.get(1).uttakPeriode().getTom()) + .isEqualTo(nesteStønadsperiode.minusWeeks(2).minusDays(1)); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultat.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); + assertThat(resultat.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); } @Test void to_tette_bfhr_redusert_minsterett_oppbrukt_før_start_ny_sak() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 8, 2)); var nesteStønadsperiode = Virkedager.justerHelgTilMandag(LocalDate.of(2023, 4, 1)); - var grunnlag = basicGrunnlag().datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) - .rettOgOmsorg(bareFarRett()) - .behandling(farBehandling()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(40 * 5)) - .minsterettDager(15 * 5) - .etterNesteStønadsperiodeDager(8 * 5)) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(FORELDREPENGER, nesteStønadsperiode.minusWeeks(12), nesteStønadsperiode.minusWeeks(2).minusDays(1)), - oppgittPeriode(FORELDREPENGER, nesteStønadsperiode, nesteStønadsperiode.plusWeeks(5).minusDays(1)))); + var grunnlag = basicGrunnlag() + .datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) + .rettOgOmsorg(bareFarRett()) + .behandling(farBehandling()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(40 * 5)) + .minsterettDager(15 * 5) + .etterNesteStønadsperiodeDager(8 * 5)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FORELDREPENGER, + nesteStønadsperiode.minusWeeks(12), + nesteStønadsperiode.minusWeeks(2).minusDays(1)), + oppgittPeriode( + FORELDREPENGER, + nesteStønadsperiode, + nesteStønadsperiode.plusWeeks(5).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertThat(resultat.stream() - .filter(r -> IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT.equals(r.uttakPeriode().getPeriodeResultatÅrsak())) - .count()).isEqualTo(2); //MSP + .filter(r -> IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT.equals( + r.uttakPeriode().getPeriodeResultatÅrsak())) + .count()) + .isEqualTo(2); // MSP assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(resultat.get(1).uttakPeriode().getFom()).isEqualTo(nesteStønadsperiode.minusWeeks(12)); - assertThat(resultat.get(1).uttakPeriode().getTom()).isEqualTo(nesteStønadsperiode.minusWeeks(2).minusDays(1)); + assertThat(resultat.get(1).uttakPeriode().getTom()) + .isEqualTo(nesteStønadsperiode.minusWeeks(2).minusDays(1)); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); + assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); } @Test void to_tette_bfhr_redusert_minsterett_oppbrukt_etter_start_ny_sak() { var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 8, 2)); var nesteStønadsperiode = Virkedager.justerHelgTilMandag(LocalDate.of(2023, 4, 1)); - var grunnlag = basicGrunnlag().datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) - .rettOgOmsorg(bareFarRett()) - .behandling(farBehandling()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(40 * 5)) - .minsterettDager(15 * 5) - .etterNesteStønadsperiodeDager(8 * 5)) - .søknad(søknad(Søknadstype.FØDSEL, - oppgittPeriode(FORELDREPENGER, nesteStønadsperiode.minusWeeks(12), nesteStønadsperiode.minusWeeks(6).minusDays(1)), - oppgittPeriode(FORELDREPENGER, nesteStønadsperiode.plusWeeks(8), nesteStønadsperiode.plusWeeks(9).minusDays(1)), - oppgittPeriode(FORELDREPENGER, nesteStønadsperiode.plusWeeks(15), nesteStønadsperiode.plusWeeks(18).minusDays(1)))); + var grunnlag = basicGrunnlag() + .datoer(datoer(fødselsdato).startdatoNesteStønadsperiode(nesteStønadsperiode)) + .rettOgOmsorg(bareFarRett()) + .behandling(farBehandling()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(40 * 5)) + .minsterettDager(15 * 5) + .etterNesteStønadsperiodeDager(8 * 5)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode( + FORELDREPENGER, + nesteStønadsperiode.minusWeeks(12), + nesteStønadsperiode.minusWeeks(6).minusDays(1)), + oppgittPeriode( + FORELDREPENGER, + nesteStønadsperiode.plusWeeks(8), + nesteStønadsperiode.plusWeeks(9).minusDays(1)), + oppgittPeriode( + FORELDREPENGER, + nesteStønadsperiode.plusWeeks(15), + nesteStønadsperiode.plusWeeks(18).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(8); assertThat(resultat.stream() - .filter(r -> IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT.equals(r.uttakPeriode().getPeriodeResultatÅrsak())) - .count()).isEqualTo(2); //MSP + .filter(r -> IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT.equals( + r.uttakPeriode().getPeriodeResultatÅrsak())) + .count()) + .isEqualTo(2); // MSP assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(resultat.get(1).uttakPeriode().getFom()).isEqualTo(nesteStønadsperiode.minusWeeks(12)); - assertThat(resultat.get(1).uttakPeriode().getTom()).isEqualTo(nesteStønadsperiode.minusWeeks(6).minusDays(1)); + assertThat(resultat.get(1).uttakPeriode().getTom()) + .isEqualTo(nesteStønadsperiode.minusWeeks(6).minusDays(1)); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); // MSP + assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); // MSP assertThat(resultat.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(resultat.get(4).uttakPeriode().getFom()).isEqualTo(nesteStønadsperiode.plusWeeks(8)); - assertThat(resultat.get(4).uttakPeriode().getTom()).isEqualTo(nesteStønadsperiode.plusWeeks(9).minusDays(1)); + assertThat(resultat.get(4).uttakPeriode().getTom()) + .isEqualTo(nesteStønadsperiode.plusWeeks(9).minusDays(1)); assertThat(resultat.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultat.get(5).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); // MSP + assertThat(resultat.get(5).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); // MSP assertThat(resultat.get(6).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); assertThat(resultat.get(6).uttakPeriode().getFom()).isEqualTo(nesteStønadsperiode.plusWeeks(15)); - assertThat(resultat.get(6).uttakPeriode().getTom()).isEqualTo(nesteStønadsperiode.plusWeeks(16).minusDays(1)); + assertThat(resultat.get(6).uttakPeriode().getTom()) + .isEqualTo(nesteStønadsperiode.plusWeeks(16).minusDays(1)); assertThat(resultat.get(7).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultat.get(7).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo( - IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); // Vanlig avslag + assertThat(resultat.get(7).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTTAK_ETTER_NY_STØNADSPERIODE); // Vanlig avslag } @Test void bare_far_har_rett_skal_innvilge_to_uker_rundt_fødsel_deretter_minsterett() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var fødselsdato = LocalDate.of(2022, 10, 6); var termindato = LocalDate.of(2022, 10, 5); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(datoer(fødselsdato).termin(termindato)) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(5 * 40)) - .minsterettDager(5 * 8) - .farUttakRundtFødselDager(10)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode( - forVanligPeriode(FORELDREPENGER, termindato.minusDays(2), fødselsdato.plusWeeks(2).minusDays(1), null, false, fødselsdato, - fødselsdato, null, null)) - .oppgittPeriode( - forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(3).minusDays(1), null, false, fødselsdato, - fødselsdato, null, null)) - .oppgittPeriode( - forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(50), fødselsdato.plusWeeks(58).minusDays(1), null, false, fødselsdato, - fødselsdato, null, null))); + .datoer(datoer(fødselsdato).termin(termindato)) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(5 * 40)) + .minsterettDager(5 * 8) + .farUttakRundtFødselDager(10)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(forVanligPeriode( + FORELDREPENGER, + termindato.minusDays(2), + fødselsdato.plusWeeks(2).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null)) + .oppgittPeriode(forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(3).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null)) + .oppgittPeriode(forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(50), + fødselsdato.plusWeeks(58).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(7); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); // Før fødsel P1 - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(3)); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(3)); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); // Etter Fødsel P1 - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(10)); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(10)); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); // Etter Fødsel P2 - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(5)); - assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); // MSP - assertThat(resultat.get(4).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); // MSP + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(5)); + assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); // MSP + assertThat(resultat.get(4).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.BARE_FAR_RETT_IKKE_SØKT); // MSP assertThat(resultat.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); // Minsterett - assertThat(resultat.get(5).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(22)); // Minsterett - assertThat(resultat.get(6).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo( - IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); // Oppbrukt minsterett + assertThat(resultat.get(5).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(22)); // Minsterett + assertThat(resultat.get(6).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); // Oppbrukt minsterett } @Test void bare_far_har_rett_skal_innvilge_minsterett_men_ikke_etter_barns_død_selv_om_dager_igjen() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var fødselsdato = LocalDate.of(2022, 10, 6); var dødsdato = fødselsdato.plusWeeks(10); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(datoer(fødselsdato).termin(fødselsdato).dødsdatoer(new Dødsdatoer.Builder().barnsDødsdato(dødsdato).alleBarnDøde(true))) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(5 * 40)) - .minsterettDager(5 * 8) - .farUttakRundtFødselDager(10)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode( - forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(4).minusDays(1), null, false, fødselsdato, - fødselsdato, null, null)) - .oppgittPeriode( - forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(17).minusDays(1), null, false, fødselsdato, - fødselsdato, null, null)) - .oppgittPeriode( - forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(25), fødselsdato.plusWeeks(29).minusDays(1), null, false, fødselsdato, - fødselsdato, null, null))); + .datoer(datoer(fødselsdato) + .termin(fødselsdato) + .dødsdatoer( + new Dødsdatoer.Builder().barnsDødsdato(dødsdato).alleBarnDøde(true))) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(5 * 40)) + .minsterettDager(5 * 8) + .farUttakRundtFødselDager(10)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(4).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null)) + .oppgittPeriode(forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(17).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null)) + .oppgittPeriode(forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(25), + fødselsdato.plusWeeks(29).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(6); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); // Før fødsel P1 - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(10)); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(10)); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); // MSP fom uke 6 - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager((15 - 6) * 5)); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager((15 - 6) * 5)); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); // Etter Fødsel P2 - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(5)); - assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(MANUELL_BEHANDLING); // Fom dødsdato + 6 uker - assertThat(resultat.get(3).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.DØDSFALL); + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(5)); + assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(MANUELL_BEHANDLING); // Fom dødsdato + 6 uker + assertThat(resultat.get(3).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.DØDSFALL); assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.BARN_DØD); assertThat(resultat.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(MANUELL_BEHANDLING); assertThat(resultat.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(MANUELL_BEHANDLING); @@ -1123,55 +1587,90 @@ void to_tette_bfhr_redusert_minsterett_oppbrukt_etter_start_ny_sak() { @Test void bare_far_har_rett_skal_innvilge_minsterett_men_ikke_etter_ny_stønad_selv_om_dager_igjen() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var fødselsdato = LocalDate.of(2022, 10, 6); - var nestesakStartDato = fødselsdato.plusWeeks( - 41); // TOTETTE <= 45 uker (stønadsperiode begynner 3 uker før fødsel). OBS neste sak kan begyynne langt senere + var nestesakStartDato = + fødselsdato.plusWeeks(41); // TOTETTE <= 45 uker (stønadsperiode begynner 3 uker før fødsel). OBS + // neste sak kan begyynne langt senere var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(datoer(fødselsdato).termin(fødselsdato).startdatoNesteStønadsperiode(nestesakStartDato)) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(5 * 40)) - .minsterettDager(5 * 15) - .etterNesteStønadsperiodeDager(8 * 5) - .farUttakRundtFødselDager(10)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode( - forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(24).minusDays(1), null, false, fødselsdato, - fødselsdato, null, null)) - .oppgittPeriode( - forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(40), fødselsdato.plusWeeks(43).minusDays(1), null, false, fødselsdato, - fødselsdato, null, null))); + .datoer(datoer(fødselsdato).termin(fødselsdato).startdatoNesteStønadsperiode(nestesakStartDato)) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(5 * 40)) + .minsterettDager(5 * 15) + .etterNesteStønadsperiodeDager(8 * 5) + .farUttakRundtFødselDager(10)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(24).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null)) + .oppgittPeriode(forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(40), + fødselsdato.plusWeeks(43).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(5); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); // MSP - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager((15 - 6) * 5)); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager((15 - 6) * 5)); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); // Uttak 9 uker - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager((24 - 15) * 5)); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager((24 - 15) * 5)); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); // MSP - assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager((40 - 24) * 5)); - assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); // Fom ny stønad - en uke mellom fom og ny stønad - assertThat(resultat.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(new Trekkdager(5)); + assertThat(resultat.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager((40 - 24) * 5)); + assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(INNVILGET); // Fom ny stønad - en uke mellom fom og ny stønad + assertThat(resultat.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(new Trekkdager(5)); assertThat(resultat.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultat.get(4).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)).isEqualTo(Trekkdager.ZERO); + assertThat(resultat.get(4).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD_1)) + .isEqualTo(Trekkdager.ZERO); } @Test void oppholdsperioder_med_fritt_uttak_skal_fjernes() { var fødselsdato = LocalDate.of(2022, 11, 4); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - forOpphold(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1), OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER, fødselsdato, - fødselsdato), oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(10).minusDays(1)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + forOpphold( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(7).minusDays(1), + OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER, + fødselsdato, + fødselsdato), + oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(7), + fødselsdato.plusWeeks(10).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(FELLESPERIODE); } - } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Overf\303\270ringDelregelTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Overf\303\270ringDelregelTest.java" index 6e79306d..b2dca860 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Overf\303\270ringDelregelTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Overf\303\270ringDelregelTest.java" @@ -13,9 +13,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Behandling; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.DokumentasjonVurdering; @@ -29,6 +26,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; +import org.junit.jupiter.api.Test; class OverføringDelregelTest { @@ -38,10 +36,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); - var søknadsperiode = overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, SYKDOM_ELLER_SKADE, SYKDOM_ANNEN_FORELDER_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.FEDREKVOTE, fom, tom, SYKDOM_ELLER_SKADE, SYKDOM_ANNEN_FORELDER_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -54,10 +57,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); - var søknadsperiode = overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, INNLEGGELSE, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.FEDREKVOTE, fom, tom, INNLEGGELSE, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -70,10 +78,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); - var søknadsperiode = overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, ALENEOMSORG, ER_ALENEOMSORG_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = + overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, ALENEOMSORG, ER_ALENEOMSORG_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -86,10 +99,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); - var søknadsperiode = overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, ANNEN_FORELDER_IKKE_RETT, ER_BARE_SØKER_RETT_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.FEDREKVOTE, fom, tom, ANNEN_FORELDER_IKKE_RETT, ER_BARE_SØKER_RETT_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -102,10 +120,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(8); var tom = fødselsdato.plusWeeks(9); - var søknadsperiode = overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, SYKDOM_ELLER_SKADE, SYKDOM_ANNEN_FORELDER_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.FEDREKVOTE, fom, tom, SYKDOM_ELLER_SKADE, SYKDOM_ANNEN_FORELDER_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -118,10 +141,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(8); var tom = fødselsdato.plusWeeks(9); - var søknadsperiode = overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, INNLEGGELSE, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.FEDREKVOTE, fom, tom, INNLEGGELSE, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -134,10 +162,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(8); var tom = fødselsdato.plusWeeks(9); - var søknadsperiode = overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, ALENEOMSORG, ER_ALENEOMSORG_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = + overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, ALENEOMSORG, ER_ALENEOMSORG_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -150,10 +183,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(8); var tom = fødselsdato.plusWeeks(9); - var søknadsperiode = overføringsperiode(Stønadskontotype.FEDREKVOTE, fom, tom, ANNEN_FORELDER_IKKE_RETT, ER_BARE_SØKER_RETT_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.FEDREKVOTE, fom, tom, ANNEN_FORELDER_IKKE_RETT, ER_BARE_SØKER_RETT_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -166,10 +204,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); - var søknadsperiode = overføringsperiode(Stønadskontotype.MØDREKVOTE, fom, tom, SYKDOM_ELLER_SKADE, SYKDOM_ANNEN_FORELDER_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.MØDREKVOTE, fom, tom, SYKDOM_ELLER_SKADE, SYKDOM_ANNEN_FORELDER_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -182,10 +225,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); - var søknadsperiode = overføringsperiode(Stønadskontotype.MØDREKVOTE, fom, tom, INNLEGGELSE, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.MØDREKVOTE, fom, tom, INNLEGGELSE, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -198,10 +246,15 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); - var søknadsperiode = overføringsperiode(Stønadskontotype.MØDREKVOTE, fom, tom, ALENEOMSORG, ER_ALENEOMSORG_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = + overføringsperiode(Stønadskontotype.MØDREKVOTE, fom, tom, ALENEOMSORG, ER_ALENEOMSORG_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -214,11 +267,19 @@ class OverføringDelregelTest { var fom = fødselsdato.plusWeeks(3); var tom = fødselsdato.plusWeeks(4); - var søknadsperiode = overføringsperiode(Stønadskontotype.MØDREKVOTE, fom, tom, ANNEN_FORELDER_IKKE_RETT, - DokumentasjonVurdering.ER_BARE_SØKER_RETT_GODKJENT); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) - .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); - var grunnlag = basicGrunnlagFar(fødselsdato).søknad(fødselssøknadMedEnPeriode(søknadsperiode)).kontoer(kontoer).build(); + var søknadsperiode = overføringsperiode( + Stønadskontotype.MØDREKVOTE, + fom, + tom, + ANNEN_FORELDER_IKKE_RETT, + DokumentasjonVurdering.ER_BARE_SØKER_RETT_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.MØDREKVOTE)) + .konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FEDREKVOTE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .søknad(fødselssøknadMedEnPeriode(søknadsperiode)) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -231,11 +292,17 @@ class OverføringDelregelTest { private RegelGrunnlag.Builder basicGrunnlag(LocalDate fødselsdato) { return RegelGrunnlagTestBuilder.create() - .inngangsvilkår(new Inngangsvilkår.Builder()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .inngangsvilkår(new Inngangsvilkår.Builder()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } private RegelGrunnlag.Builder basicGrunnlagFar(LocalDate fødselsdato) { @@ -251,5 +318,4 @@ private void assertInnvilget(FastsettePerioderRegelresultat regelresultat, Innvi assertThat(regelresultat.skalUtbetale()).isTrue(); assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(innvilgetÅrsak); } - } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Overf\303\270ringOrkestreringTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Overf\303\270ringOrkestreringTest.java" index 5463d632..1d2a67ee 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Overf\303\270ringOrkestreringTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/Overf\303\270ringOrkestreringTest.java" @@ -14,9 +14,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; @@ -28,22 +25,36 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; +import org.junit.jupiter.api.Test; class OverføringOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void innvilgelse_fedrekvote_overføring_når_bruker_en_tom_for_sine_konto_skal_gå_automatisk() { - //Mødrekvote og fellesperiode brukes opp før øverføring av fedrekvote + // Mødrekvote og fellesperiode brukes opp før øverføring av fedrekvote var fødselsdato = LocalDate.of(2020, 1, 21); - var mødrekvote = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); - var fellesperiode = oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1)); - var overføring = OppgittPeriode.forOverføring(FEDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(11), INNLEGGELSE, fødselsdato, - fødselsdato, INNLEGGELSE_ANNEN_FORELDER_GODKJENT); - var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 10)) - .konto(konto(MØDREKVOTE, 30)) - .konto(konto(FELLESPERIODE, 15)) - .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)); - var grunnlag = basicGrunnlagMor(fødselsdato).kontoer(kontoer).søknad(søknad(FØDSEL, mødrekvote, fellesperiode, overføring)); + var mødrekvote = + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); + var fellesperiode = oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1)); + var overføring = OppgittPeriode.forOverføring( + FEDREKVOTE, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(11), + INNLEGGELSE, + fødselsdato, + fødselsdato, + INNLEGGELSE_ANNEN_FORELDER_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(konto(FEDREKVOTE, 10)) + .konto(konto(MØDREKVOTE, 30)) + .konto(konto(FELLESPERIODE, 15)) + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)); + var grunnlag = basicGrunnlagMor(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(FØDSEL, mødrekvote, fellesperiode, overføring)); var resultat = fastsettPerioder(grunnlag); // 1. mk @@ -53,27 +64,42 @@ class OverføringOrkestreringTest extends FastsettePerioderRegelOrkestreringTest assertThat(resultat).hasSize(4); assertThat(resultat.get(2).uttakPeriode().getOverføringÅrsak()).isEqualTo(INNLEGGELSE); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); - assertThat(resultat.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.OVERFØRING_ANNEN_PART_INNLAGT); + assertThat(resultat.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.OVERFØRING_ANNEN_PART_INNLAGT); assertThat(resultat.get(3).uttakPeriode().getOverføringÅrsak()).isEqualTo(INNLEGGELSE); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(MANUELL_BEHANDLING); - assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); } @Test void innvilgelse_mødrekvote_overføring_når_bruker_en_tom_for_sine_konto_skal_gå_automatisk() { - //Fedrekvote og fellesperiode brukes opp før øverføring av mødrekvote + // Fedrekvote og fellesperiode brukes opp før øverføring av mødrekvote var fødselsdato = LocalDate.of(2020, 1, 21); - var fedrekvote = oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(9), fødselsdato.plusWeeks(11).minusDays(1)); - var overføring = OppgittPeriode.forOverføring(MØDREKVOTE, fødselsdato.plusWeeks(11), fødselsdato.plusWeeks(14), SYKDOM_ELLER_SKADE, - fødselsdato, fødselsdato, SYKDOM_ANNEN_FORELDER_GODKJENT); - var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 10)) - .konto(konto(MØDREKVOTE, 40)) - .konto(konto(FELLESPERIODE, 15)) - .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)); - var annenPart = new AnnenPart.Builder().uttaksperiode(innvilget(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), MØDREKVOTE)) - .uttaksperiode(innvilget(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(9).minusDays(1), FELLESPERIODE)); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(kontoer).søknad(søknad(FØDSEL, fedrekvote, overføring)).annenPart(annenPart); + var fedrekvote = oppgittPeriode( + FEDREKVOTE, fødselsdato.plusWeeks(9), fødselsdato.plusWeeks(11).minusDays(1)); + var overføring = OppgittPeriode.forOverføring( + MØDREKVOTE, + fødselsdato.plusWeeks(11), + fødselsdato.plusWeeks(14), + SYKDOM_ELLER_SKADE, + fødselsdato, + fødselsdato, + SYKDOM_ANNEN_FORELDER_GODKJENT); + var kontoer = new Kontoer.Builder() + .konto(konto(FEDREKVOTE, 10)) + .konto(konto(MØDREKVOTE, 40)) + .konto(konto(FELLESPERIODE, 15)) + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)); + var annenPart = new AnnenPart.Builder() + .uttaksperiode(innvilget(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), MØDREKVOTE)) + .uttaksperiode(innvilget( + fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(9).minusDays(1), FELLESPERIODE)); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(kontoer) + .søknad(søknad(FØDSEL, fedrekvote, overføring)) + .annenPart(annenPart); var resultat = fastsettPerioder(grunnlag); // 1. fk @@ -82,16 +108,24 @@ class OverføringOrkestreringTest extends FastsettePerioderRegelOrkestreringTest assertThat(resultat).hasSize(3); assertThat(resultat.get(1).uttakPeriode().getOverføringÅrsak()).isEqualTo(SYKDOM_ELLER_SKADE); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.OVERFØRING_ANNEN_PART_SYKDOM_SKADE); + assertThat(resultat.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.OVERFØRING_ANNEN_PART_SYKDOM_SKADE); assertThat(resultat.get(2).uttakPeriode().getOverføringÅrsak()).isEqualTo(SYKDOM_ELLER_SKADE); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(MANUELL_BEHANDLING); - assertThat(resultat.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(resultat.get(2).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); } private AnnenpartUttakPeriode innvilget(LocalDate fom, LocalDate tom, Stønadskontotype stønadskontotype) { - var aktivitet = new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), stønadskontotype, - new Trekkdager(Virkedager.beregnAntallVirkedager(new Periode(fom, tom))), Utbetalingsgrad.FULL); - return AnnenpartUttakPeriode.Builder.uttak(fom, tom).innvilget(true).uttakPeriodeAktivitet(aktivitet).build(); + var aktivitet = new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + stønadskontotype, + new Trekkdager(Virkedager.beregnAntallVirkedager(new Periode(fom, tom))), + Utbetalingsgrad.FULL); + return AnnenpartUttakPeriode.Builder.uttak(fom, tom) + .innvilget(true) + .uttakPeriodeAktivitet(aktivitet) + .build(); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelGrunnlagTestBuilder.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelGrunnlagTestBuilder.java index 0f117e40..8e6003c7 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelGrunnlagTestBuilder.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelGrunnlagTestBuilder.java @@ -6,7 +6,6 @@ import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype.MØDREKVOTE; import java.time.LocalDate; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -19,26 +18,35 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.RegelGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.RettOgOmsorg; - public class RegelGrunnlagTestBuilder { - public static final AktivitetIdentifikator ARBEIDSFORHOLD_1 = AktivitetIdentifikator.forArbeid(new Orgnummer("000000001"), null); - public static final AktivitetIdentifikator ARBEIDSFORHOLD_2 = AktivitetIdentifikator.forArbeid(new Orgnummer("000000002"), null); - public static final AktivitetIdentifikator ARBEIDSFORHOLD_3 = AktivitetIdentifikator.forArbeid(new Orgnummer("000000003"), null); + public static final AktivitetIdentifikator ARBEIDSFORHOLD_1 = + AktivitetIdentifikator.forArbeid(new Orgnummer("000000001"), null); + public static final AktivitetIdentifikator ARBEIDSFORHOLD_2 = + AktivitetIdentifikator.forArbeid(new Orgnummer("000000002"), null); + public static final AktivitetIdentifikator ARBEIDSFORHOLD_3 = + AktivitetIdentifikator.forArbeid(new Orgnummer("000000003"), null); public static RegelGrunnlag.Builder create() { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(15)) - .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER_FØR_FØDSEL).trekkdager(15)) + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); var arbeidsforhold = new Arbeidsforhold(ARBEIDSFORHOLD_1); - return new RegelGrunnlag.Builder().kontoer(kontoer) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(LocalDate.MIN)) - .behandling(new Behandling.Builder().søkerErMor(true)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true).farHarRett(true).samtykke(true)) - .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + return new RegelGrunnlag.Builder() + .kontoer(kontoer) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(LocalDate.MIN)) + .behandling(new Behandling.Builder().søkerErMor(true)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(true) + .farHarRett(true) + .samtykke(true)) + .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandlerTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandlerTest.java index a80da790..97cb36b6 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandlerTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandlerTest.java @@ -1,15 +1,11 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import java.time.LocalDate; import java.util.List; import java.util.Optional; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -24,29 +20,36 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.TomKontoKnekkpunkt; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.UttakOutcome; +import org.junit.jupiter.api.Test; class RegelResultatBehandlerTest { @Test void skal_knekke_på_riktig_datoer_ved_avslag() { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FELLESPERIODE)); + var kontoer = + new Kontoer.Builder().konto(new Konto.Builder().trekkdager(1000).type(Stønadskontotype.FELLESPERIODE)); var arbeidsforhold = new Arbeidsforhold(AktivitetIdentifikator.annenAktivitet()); var fom = LocalDate.of(2018, 10, 10); var tom = LocalDate.of(2018, 11, 11); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FELLESPERIODE, fom, tom, null, false, null, null, null, null); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FELLESPERIODE, fom, tom, null, false, null, null, null, null); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(false)) - .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) - .kontoer(kontoer) - .build(); + .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(false)) + .arbeid(new Arbeid.Builder().arbeidsforhold(arbeidsforhold)) + .kontoer(kontoer) + .build(); var knekkpunkt = new TomKontoKnekkpunkt(LocalDate.of(2018, 10, 15)); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(), List.of(), grunnlag, oppgittPeriode.getFom()); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(), List.of(), grunnlag, oppgittPeriode.getFom()); oppgittPeriode.setAktiviteter(Set.of(arbeidsforhold.identifikator())); - var behandler = new RegelResultatBehandler(SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag), grunnlag); + var behandler = + new RegelResultatBehandler(SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag), grunnlag); - var regelresultat = new FastsettePerioderRegelresultat(null, - UttakOutcome.ikkeOppfylt(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN).medTrekkDagerFraSaldo(true)); + var regelresultat = new FastsettePerioderRegelresultat( + null, + UttakOutcome.ikkeOppfylt(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN) + .medTrekkDagerFraSaldo(true)); var resultat = behandler.avslåAktuellPeriode(oppgittPeriode, regelresultat, Optional.of(knekkpunkt), false); assertThat(resultat.getPeriode().getFom()).isEqualTo(fom); diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RevurderingTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RevurderingTest.java index f9d49533..697cf48a 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RevurderingTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RevurderingTest.java @@ -4,9 +4,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; @@ -33,6 +30,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.UtfallType; +import org.junit.jupiter.api.Test; class RevurderingTest { @@ -40,11 +38,18 @@ class RevurderingTest { @Test void revurderingSøknadUtenSamtykkeOgOverlappendePerioderSkalFørTilAvslagPgaSamtykke() { - var oppgittPeriode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(samtykke(false)) - .annenPart(annenPart(lagPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12), - Utbetalingsgrad.TEN, false).build())) - .build(); + var oppgittPeriode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(samtykke(false)) + .annenPart(annenPart(lagPeriode( + Stønadskontotype.FELLESPERIODE, + FAMILIEHENDELSE_DATO.plusWeeks(10), + FAMILIEHENDELSE_DATO.plusWeeks(12), + Utbetalingsgrad.TEN, + false) + .build())) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -57,13 +62,19 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarInnvilgetUtsettelseSkalInnvilges() { - var oppgittPeriode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true).farHarRett(true).samtykke(true)) - .annenPart(annenPart(AnnenpartUttakPeriode.Builder.utsettelse(FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)) - .innvilget(true) - .build())) - .behandling(berørtBehandling().søkerErMor(true)) - .build(); + var oppgittPeriode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(true) + .farHarRett(true) + .samtykke(true)) + .annenPart(annenPart(AnnenpartUttakPeriode.Builder.utsettelse( + FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)) + .innvilget(true) + .build())) + .behandling(berørtBehandling().søkerErMor(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -72,13 +83,19 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarInnvilgetUtsettelseSkalAvslåsHvisBehandlingKreverSammenhengendeUttak() { - var oppgittPeriode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true).farHarRett(true).samtykke(true)) - .annenPart(annenPart(AnnenpartUttakPeriode.Builder.utsettelse(FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)) - .innvilget(true) - .build())) - .behandling(berørtBehandling().søkerErMor(true).kreverSammenhengendeUttak(true)) - .build(); + var oppgittPeriode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(true) + .farHarRett(true) + .samtykke(true)) + .annenPart(annenPart(AnnenpartUttakPeriode.Builder.utsettelse( + FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)) + .innvilget(true) + .build())) + .behandling(berørtBehandling().søkerErMor(true).kreverSammenhengendeUttak(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -87,13 +104,27 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarInnvilgetUtsettelseSkalAvslåsHvisInnenforFørsteSeksUker() { - var oppgittPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FEDREKVOTE, FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(2), - SamtidigUttaksprosent.HUNDRED, false, null, null, null, null); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true).farHarRett(true).samtykke(true)) - .annenPart( - annenPart(AnnenpartUttakPeriode.Builder.utsettelse(FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(3)).innvilget(true).build())) - .behandling(berørtBehandling().søkerErMor(false)) - .build(); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FEDREKVOTE, + FAMILIEHENDELSE_DATO, + FAMILIEHENDELSE_DATO.plusWeeks(2), + SamtidigUttaksprosent.HUNDRED, + false, + null, + null, + null, + null); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(true) + .farHarRett(true) + .samtykke(true)) + .annenPart(annenPart(AnnenpartUttakPeriode.Builder.utsettelse( + FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(3)) + .innvilget(true) + .build())) + .behandling(berørtBehandling().søkerErMor(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -101,15 +132,34 @@ class RevurderingTest { } @Test - void berørtBehandlingHvorDenAndrePartenHarInnvilgetUtsettelseSkalInnvilgesForBalanserteFedreSelvOmInnenforFørsteSeksUker() { - var oppgittPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FEDREKVOTE, FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(2), - SamtidigUttaksprosent.HUNDRED, false, null, null, null, null); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true).farHarRett(true).samtykke(true)) - .annenPart( - annenPart(AnnenpartUttakPeriode.Builder.utsettelse(FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(3)).innvilget(true).build())) - .behandling(berørtBehandling().søkerErMor(false)) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FEDREKVOTE).trekkdager(50)).farUttakRundtFødselDager(10)) - .build(); + void + berørtBehandlingHvorDenAndrePartenHarInnvilgetUtsettelseSkalInnvilgesForBalanserteFedreSelvOmInnenforFørsteSeksUker() { + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FEDREKVOTE, + FAMILIEHENDELSE_DATO, + FAMILIEHENDELSE_DATO.plusWeeks(2), + SamtidigUttaksprosent.HUNDRED, + false, + null, + null, + null, + null); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .morHarRett(true) + .farHarRett(true) + .samtykke(true)) + .annenPart(annenPart(AnnenpartUttakPeriode.Builder.utsettelse( + FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(3)) + .innvilget(true) + .build())) + .behandling(berørtBehandling().søkerErMor(false)) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder() + .type(Stønadskontotype.FEDREKVOTE) + .trekkdager(50)) + .farUttakRundtFødselDager(10)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -118,12 +168,19 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarUtbetalingOver0MenIkkeSamtidigUttakSkalAvslås() { - var oppgittPeriode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(samtykke(true)) - .annenPart(annenPart(lagPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12), - Utbetalingsgrad.TEN, false).build())) - .behandling(berørtBehandling()) - .build(); + var oppgittPeriode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(samtykke(true)) + .annenPart(annenPart(lagPeriode( + Stønadskontotype.FELLESPERIODE, + FAMILIEHENDELSE_DATO.plusWeeks(10), + FAMILIEHENDELSE_DATO.plusWeeks(12), + Utbetalingsgrad.TEN, + false) + .build())) + .behandling(berørtBehandling()) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -132,12 +189,19 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarUtbetalingOver0MenIkkeSamtidigUttakSkalAvslåsOgKnekkes() { - var oppgittPeriode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(samtykke(true)) - .annenPart(annenPart(lagPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12), - Utbetalingsgrad.TEN, false).build())) - .behandling(berørtBehandling()) - .build(); + var oppgittPeriode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(samtykke(true)) + .annenPart(annenPart(lagPeriode( + Stønadskontotype.FELLESPERIODE, + FAMILIEHENDELSE_DATO.plusWeeks(10), + FAMILIEHENDELSE_DATO.plusWeeks(12), + Utbetalingsgrad.TEN, + false) + .build())) + .behandling(berørtBehandling()) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -146,12 +210,19 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarUtbetalingOver0OgSamtidigUttakSkalManueltVurderes() { - var oppgittPeriode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(samtykke(true)) - .annenPart(annenPart(lagPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12), - Utbetalingsgrad.HUNDRED.subtract(Utbetalingsgrad.TEN), true).build())) - .behandling(berørtBehandling()) - .build(); + var oppgittPeriode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(samtykke(true)) + .annenPart(annenPart(lagPeriode( + Stønadskontotype.FELLESPERIODE, + FAMILIEHENDELSE_DATO.plusWeeks(10), + FAMILIEHENDELSE_DATO.plusWeeks(12), + Utbetalingsgrad.HUNDRED.subtract(Utbetalingsgrad.TEN), + true) + .build())) + .behandling(berørtBehandling()) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -160,12 +231,19 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarUtbetalingOver0OgSamtidigUttakSkalAutomatiskReduseres() { - var oppgittPeriode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(oppgittPeriode).rettOgOmsorg(samtykke(true).morHarRett(true).farHarRett(true)) - .annenPart(annenPart(lagPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12), - new Utbetalingsgrad(60), true).build())) - .behandling(berørtBehandling().søkerErMor(true)) - .build(); + var oppgittPeriode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var grunnlag = basicBuilder(oppgittPeriode) + .rettOgOmsorg(samtykke(true).morHarRett(true).farHarRett(true)) + .annenPart(annenPart(lagPeriode( + Stønadskontotype.FELLESPERIODE, + FAMILIEHENDELSE_DATO.plusWeeks(10), + FAMILIEHENDELSE_DATO.plusWeeks(12), + new Utbetalingsgrad(60), + true) + .build())) + .behandling(berørtBehandling().søkerErMor(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -177,13 +255,19 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarUtbetalingOver0OgSamtidigUttakFlerbarnsdagerSkalFlyteVidere() { - var oppgittPeriode = uttakPeriodeFlerbarnsdager(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), - FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(oppgittPeriode, true, true).rettOgOmsorg(samtykke(true).morHarRett(true).farHarRett(true)) - .annenPart(annenPart(lagPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12), - Utbetalingsgrad.TEN, true).build())) - .behandling(berørtBehandling().søkerErMor(true)) - .build(); + var oppgittPeriode = uttakPeriodeFlerbarnsdager( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var grunnlag = basicBuilder(oppgittPeriode, true, true) + .rettOgOmsorg(samtykke(true).morHarRett(true).farHarRett(true)) + .annenPart(annenPart(lagPeriode( + Stønadskontotype.FELLESPERIODE, + FAMILIEHENDELSE_DATO.plusWeeks(10), + FAMILIEHENDELSE_DATO.plusWeeks(12), + Utbetalingsgrad.TEN, + true) + .build())) + .behandling(berørtBehandling().søkerErMor(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -195,12 +279,19 @@ class RevurderingTest { @Test void berørtBehandlingHvorDenAndrePartenHarUtbetalingOver0OgSamtidigUttakFlerbarnsdagerSkalFlyteVidereMKAP() { - var oppgittPeriode = uttakPeriodeFlerbarnsdager(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(10)); - var grunnlag = basicBuilder(oppgittPeriode, false, true).rettOgOmsorg(samtykke(true).morHarRett(true).farHarRett(true)) - .annenPart(annenPart( - lagPeriode(Stønadskontotype.MØDREKVOTE, FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(10), Utbetalingsgrad.TEN, true).build())) - .behandling(berørtBehandling().søkerErMor(false)) - .build(); + var oppgittPeriode = uttakPeriodeFlerbarnsdager( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(10)); + var grunnlag = basicBuilder(oppgittPeriode, false, true) + .rettOgOmsorg(samtykke(true).morHarRett(true).farHarRett(true)) + .annenPart(annenPart(lagPeriode( + Stønadskontotype.MØDREKVOTE, + FAMILIEHENDELSE_DATO, + FAMILIEHENDELSE_DATO.plusWeeks(10), + Utbetalingsgrad.TEN, + true) + .build())) + .behandling(berørtBehandling().søkerErMor(false)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -210,16 +301,24 @@ class RevurderingTest { assertThat(regelresultat.trekkDagerFraSaldo()).isTrue(); } - @Test void berørtBehandlingHvorDenAndrePartenHarUtbetalingOver0OgSamtidigUttakFlerbarnsdagerSkalFlyteVidereMK() { - var oppgittPeriode = uttakPeriode(Stønadskontotype.MØDREKVOTE, FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(6).minusDays(1)); - var grunnlag = basicBuilder(oppgittPeriode, true, true).rettOgOmsorg(samtykke(true).morHarRett(true).farHarRett(true)) - .annenPart(annenPart( - lagPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO, FAMILIEHENDELSE_DATO.plusWeeks(10).minusDays(1), Utbetalingsgrad.TEN, - true).flerbarnsdager(true).build())) - .behandling(berørtBehandling().søkerErMor(true)) - .build(); + var oppgittPeriode = uttakPeriode( + Stønadskontotype.MØDREKVOTE, + FAMILIEHENDELSE_DATO, + FAMILIEHENDELSE_DATO.plusWeeks(6).minusDays(1)); + var grunnlag = basicBuilder(oppgittPeriode, true, true) + .rettOgOmsorg(samtykke(true).morHarRett(true).farHarRett(true)) + .annenPart(annenPart(lagPeriode( + Stønadskontotype.FELLESPERIODE, + FAMILIEHENDELSE_DATO, + FAMILIEHENDELSE_DATO.plusWeeks(10).minusDays(1), + Utbetalingsgrad.TEN, + true) + .flerbarnsdager(true) + .build())) + .behandling(berørtBehandling().søkerErMor(true)) + .build(); var regelresultat = kjørRegel(oppgittPeriode, grunnlag); @@ -231,9 +330,13 @@ class RevurderingTest { @Test void revurdering_søknad_der_opphørsdato_ligger_i_perioden() { - var uttaksperiode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var uttaksperiode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(uttaksperiode).medlemskap(new Medlemskap.Builder().opphørsdato(uttaksperiode.getFom().plusWeeks(1))).build(); + var grunnlag = basicBuilder(uttaksperiode) + .medlemskap(new Medlemskap.Builder() + .opphørsdato(uttaksperiode.getFom().plusWeeks(1))) + .build(); var regelresultat = kjørRegel(uttaksperiode, grunnlag); @@ -245,9 +348,13 @@ class RevurderingTest { @Test void revurdering_søknad_der_opphørsdato_ligger_før_perioden() { - var uttaksperiode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var uttaksperiode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(uttaksperiode).medlemskap(new Medlemskap.Builder().opphørsdato(uttaksperiode.getFom().minusWeeks(1))).build(); + var grunnlag = basicBuilder(uttaksperiode) + .medlemskap(new Medlemskap.Builder() + .opphørsdato(uttaksperiode.getFom().minusWeeks(1))) + .build(); var regelresultat = kjørRegel(uttaksperiode, grunnlag); @@ -259,12 +366,15 @@ class RevurderingTest { @Test void revurdering_søknad_der_opphørsdato_ligger_etter_perioden() { - var uttaksperiode = uttakPeriode(Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); + var uttaksperiode = uttakPeriode( + Stønadskontotype.FELLESPERIODE, FAMILIEHENDELSE_DATO.plusWeeks(10), FAMILIEHENDELSE_DATO.plusWeeks(12)); - var grunnlag = basicBuilder(uttaksperiode).revurdering(new Revurdering.Builder()) - .rettOgOmsorg(samtykke(true)) - .medlemskap(new Medlemskap.Builder().opphørsdato(uttaksperiode.getTom().plusWeeks(1))) - .build(); + var grunnlag = basicBuilder(uttaksperiode) + .revurdering(new Revurdering.Builder()) + .rettOgOmsorg(samtykke(true)) + .medlemskap(new Medlemskap.Builder() + .opphørsdato(uttaksperiode.getTom().plusWeeks(1))) + .build(); var regelresultat = kjørRegel(uttaksperiode, grunnlag); @@ -283,16 +393,19 @@ private RettOgOmsorg.Builder samtykke(boolean samtykke) { return new RettOgOmsorg.Builder().samtykke(samtykke); } - private AnnenpartUttakPeriode.Builder lagPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - Utbetalingsgrad utbetalingsgrad, - boolean samtidigUttak) { + private AnnenpartUttakPeriode.Builder lagPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + Utbetalingsgrad utbetalingsgrad, + boolean samtidigUttak) { return AnnenpartUttakPeriode.Builder.uttak(fom, tom) - .samtidigUttak(samtidigUttak) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forArbeid(new Orgnummer("000000003"), null), stønadskontotype, - new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), utbetalingsgrad)); + .samtidigUttak(samtidigUttak) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forArbeid(new Orgnummer("000000003"), null), + stønadskontotype, + new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), + utbetalingsgrad)); } private RegelGrunnlag.Builder basicBuilder(OppgittPeriode oppgittPeriode) { @@ -300,19 +413,24 @@ private RegelGrunnlag.Builder basicBuilder(OppgittPeriode oppgittPeriode) { } private RegelGrunnlag.Builder basicBuilder(OppgittPeriode oppgittPeriode, boolean erMor, boolean flerbarnskonto) { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(Stønadskontotype.FELLESPERIODE).trekkdager(13 * 5)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(Stønadskontotype.FELLESPERIODE).trekkdager(13 * 5)); if (flerbarnskonto) { kontoer.flerbarnsdager(5 * 13); } return RegelGrunnlagTestBuilder.create() - .behandling(new Behandling.Builder().søkerErMor(erMor)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .datoer(new Datoer.Builder().fødsel(FAMILIEHENDELSE_DATO)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .behandling(new Behandling.Builder().søkerErMor(erMor)) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .datoer(new Datoer.Builder().fødsel(FAMILIEHENDELSE_DATO)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } private OppgittPeriode uttakPeriode(Stønadskontotype stønadskontotype, LocalDate fom, LocalDate tom) { diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SaldoUtregningTjenesteTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SaldoUtregningTjenesteTest.java index 741f594d..00c5ee35 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SaldoUtregningTjenesteTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SaldoUtregningTjenesteTest.java @@ -1,6 +1,5 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; - import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator.annenAktivitet; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator.forArbeid; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator.forFrilans; @@ -22,10 +21,6 @@ import java.time.LocalTime; import java.util.ArrayList; import java.util.List; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriodeAktivitet; @@ -46,6 +41,8 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregningGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregningTjeneste; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; class SaldoUtregningTjenesteTest { @@ -54,17 +51,19 @@ void skal_knekke_annenparts_perioder() { var fomAnnenpart = LocalDate.of(2019, 12, 2); var tomAnnenpart = fomAnnenpart.plusWeeks(10).minusDays(1); var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak(fomAnnenpart, tomAnnenpart) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.FULL)) - .build(); + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.FULL)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)); var aktuellPeriode = oppgittPeriode(FELLESPERIODE, fomAnnenpart.plusWeeks(5), tomAnnenpart); - var grunnlag = new RegelGrunnlag.Builder().annenPart(new AnnenPart.Builder().uttaksperiode(annenpartUttaksperiode)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) - .behandling(new Behandling.Builder()) - .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) - .build(); + var grunnlag = new RegelGrunnlag.Builder() + .annenPart(new AnnenPart.Builder().uttaksperiode(annenpartUttaksperiode)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) + .behandling(new Behandling.Builder()) + .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) + .build(); var saldoUtregningGrunnlag = lagGrunnlag(aktuellPeriode, grunnlag); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); @@ -80,22 +79,26 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local void skal_ikke_ta_med_opphold_på_annenpart_hvis_overlapp_med_søkers_periode_og_berørt_behandling() { var fomAnnenpartOpphold = LocalDate.of(2019, 12, 2); var tomAnnenpartOpphold = fomAnnenpartOpphold.plusWeeks(10).minusDays(1); - var annenpartOpphold = AnnenpartUttakPeriode.Builder.opphold(fomAnnenpartOpphold, tomAnnenpartOpphold, FEDREKVOTE_ANNEN_FORELDER) - .innvilget(true) - .build(); - var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak(fomAnnenpartOpphold.minusWeeks(1), fomAnnenpartOpphold.minusWeeks(1)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) - .build(); + var annenpartOpphold = AnnenpartUttakPeriode.Builder.opphold( + fomAnnenpartOpphold, tomAnnenpartOpphold, FEDREKVOTE_ANNEN_FORELDER) + .innvilget(true) + .build(); + var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak( + fomAnnenpartOpphold.minusWeeks(1), fomAnnenpartOpphold.minusWeeks(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 100)); var aktuellPeriode = oppgittPeriode(FEDREKVOTE, fomAnnenpartOpphold, tomAnnenpartOpphold); - var grunnlag = new RegelGrunnlag.Builder().annenPart( - new AnnenPart.Builder().uttaksperiode(annenpartOpphold).uttaksperiode(annenpartUttaksperiode)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) - .behandling(new Behandling.Builder().berørtBehandling(true).kreverSammenhengendeUttak(true)) - .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) - .build(); + var grunnlag = new RegelGrunnlag.Builder() + .annenPart( + new AnnenPart.Builder().uttaksperiode(annenpartOpphold).uttaksperiode(annenpartUttaksperiode)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) + .behandling(new Behandling.Builder().berørtBehandling(true).kreverSammenhengendeUttak(true)) + .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) + .build(); var saldoUtregningGrunnlag = lagGrunnlag(aktuellPeriode, grunnlag); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); @@ -104,25 +107,30 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local } @Test - void skal_ta_med_deler_av_opphold_på_annenpart_hvis_overlapp_med_søkers_periode_og_berørt_behandling_tidlig_overlapp() { + void + skal_ta_med_deler_av_opphold_på_annenpart_hvis_overlapp_med_søkers_periode_og_berørt_behandling_tidlig_overlapp() { var fomAnnenpartOpphold = LocalDate.of(2019, 12, 2); var tomAnnenpartOpphold = fomAnnenpartOpphold.plusWeeks(10).minusDays(1); - var annenpartOpphold = AnnenpartUttakPeriode.Builder.opphold(fomAnnenpartOpphold, tomAnnenpartOpphold, FEDREKVOTE_ANNEN_FORELDER) - .innvilget(true) - .build(); - var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak(fomAnnenpartOpphold.minusWeeks(1), fomAnnenpartOpphold.minusWeeks(1)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) - .build(); + var annenpartOpphold = AnnenpartUttakPeriode.Builder.opphold( + fomAnnenpartOpphold, tomAnnenpartOpphold, FEDREKVOTE_ANNEN_FORELDER) + .innvilget(true) + .build(); + var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak( + fomAnnenpartOpphold.minusWeeks(1), fomAnnenpartOpphold.minusWeeks(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 100)); var aktuellPeriode = oppgittPeriode(FEDREKVOTE, fomAnnenpartOpphold, tomAnnenpartOpphold.minusWeeks(5)); - var grunnlag = new RegelGrunnlag.Builder().annenPart( - new AnnenPart.Builder().uttaksperiode(annenpartOpphold).uttaksperiode(annenpartUttaksperiode)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) - .behandling(new Behandling.Builder().berørtBehandling(true).kreverSammenhengendeUttak(true)) - .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) - .build(); + var grunnlag = new RegelGrunnlag.Builder() + .annenPart( + new AnnenPart.Builder().uttaksperiode(annenpartOpphold).uttaksperiode(annenpartUttaksperiode)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) + .behandling(new Behandling.Builder().berørtBehandling(true).kreverSammenhengendeUttak(true)) + .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) + .build(); var saldoUtregningGrunnlag = lagGrunnlag(aktuellPeriode, grunnlag); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); @@ -131,25 +139,30 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local } @Test - void skal_ta_med_deler_av_opphold_på_annenpart_hvis_overlapp_med_søkers_periode_og_berørt_behandling_sen_overlapp() { + void + skal_ta_med_deler_av_opphold_på_annenpart_hvis_overlapp_med_søkers_periode_og_berørt_behandling_sen_overlapp() { var fomAnnenpartOpphold = LocalDate.of(2019, 12, 2); var tomAnnenpartOpphold = fomAnnenpartOpphold.plusWeeks(10).minusDays(1); - var annenpartOpphold = AnnenpartUttakPeriode.Builder.opphold(fomAnnenpartOpphold, tomAnnenpartOpphold, FEDREKVOTE_ANNEN_FORELDER) - .innvilget(true) - .build(); - var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak(fomAnnenpartOpphold.minusWeeks(1), fomAnnenpartOpphold.minusWeeks(1)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) - .build(); + var annenpartOpphold = AnnenpartUttakPeriode.Builder.opphold( + fomAnnenpartOpphold, tomAnnenpartOpphold, FEDREKVOTE_ANNEN_FORELDER) + .innvilget(true) + .build(); + var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak( + fomAnnenpartOpphold.minusWeeks(1), fomAnnenpartOpphold.minusWeeks(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 100)); var aktuellPeriode = oppgittPeriode(FEDREKVOTE, fomAnnenpartOpphold.plusWeeks(5), tomAnnenpartOpphold); - var grunnlag = new RegelGrunnlag.Builder().annenPart( - new AnnenPart.Builder().uttaksperiode(annenpartOpphold).uttaksperiode(annenpartUttaksperiode)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) - .behandling(new Behandling.Builder().berørtBehandling(true).kreverSammenhengendeUttak(true)) - .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) - .build(); + var grunnlag = new RegelGrunnlag.Builder() + .annenPart( + new AnnenPart.Builder().uttaksperiode(annenpartOpphold).uttaksperiode(annenpartUttaksperiode)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) + .behandling(new Behandling.Builder().berørtBehandling(true).kreverSammenhengendeUttak(true)) + .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) + .build(); var saldoUtregningGrunnlag = lagGrunnlag(aktuellPeriode, grunnlag); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); @@ -158,25 +171,31 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local } @Test - void skal_ta_med_deler_av_opphold_på_annenpart_hvis_overlapp_med_søkers_periode_og_berørt_behandling_midt_overlapp() { + void + skal_ta_med_deler_av_opphold_på_annenpart_hvis_overlapp_med_søkers_periode_og_berørt_behandling_midt_overlapp() { var fomAnnenpartOpphold = LocalDate.of(2019, 12, 2); var tomAnnenpartOpphold = fomAnnenpartOpphold.plusWeeks(10).minusDays(1); - var annenpartOpphold = AnnenpartUttakPeriode.Builder.opphold(fomAnnenpartOpphold, tomAnnenpartOpphold, FEDREKVOTE_ANNEN_FORELDER) - .innvilget(true) - .build(); - var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak(fomAnnenpartOpphold.minusWeeks(1), fomAnnenpartOpphold.minusWeeks(1)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) - .build(); + var annenpartOpphold = AnnenpartUttakPeriode.Builder.opphold( + fomAnnenpartOpphold, tomAnnenpartOpphold, FEDREKVOTE_ANNEN_FORELDER) + .innvilget(true) + .build(); + var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak( + fomAnnenpartOpphold.minusWeeks(1), fomAnnenpartOpphold.minusWeeks(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FEDREKVOTE, 100)); - var aktuellPeriode = oppgittPeriode(FEDREKVOTE, fomAnnenpartOpphold.plusWeeks(2), tomAnnenpartOpphold.minusWeeks(3)); - var grunnlag = new RegelGrunnlag.Builder().annenPart( - new AnnenPart.Builder().uttaksperiode(annenpartOpphold).uttaksperiode(annenpartUttaksperiode)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) - .behandling(new Behandling.Builder().berørtBehandling(true).kreverSammenhengendeUttak(true)) - .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) - .build(); + var aktuellPeriode = + oppgittPeriode(FEDREKVOTE, fomAnnenpartOpphold.plusWeeks(2), tomAnnenpartOpphold.minusWeeks(3)); + var grunnlag = new RegelGrunnlag.Builder() + .annenPart( + new AnnenPart.Builder().uttaksperiode(annenpartOpphold).uttaksperiode(annenpartUttaksperiode)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) + .behandling(new Behandling.Builder().berørtBehandling(true).kreverSammenhengendeUttak(true)) + .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) + .build(); var saldoUtregningGrunnlag = lagGrunnlag(aktuellPeriode, grunnlag); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); @@ -186,11 +205,15 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local private SaldoUtregningGrunnlag lagGrunnlag(OppgittPeriode aktuellPeriode, RegelGrunnlag grunnlag) { if (grunnlag.getBehandling().isBerørtBehandling()) { - return SaldoUtregningGrunnlag.forUtregningAvDelerAvUttakBerørtBehandling(List.of(), grunnlag.getAnnenPart().getUttaksperioder(), grunnlag, - aktuellPeriode.getFom(), new ArrayList<>(grunnlag.getSøknad().getOppgittePerioder())); + return SaldoUtregningGrunnlag.forUtregningAvDelerAvUttakBerørtBehandling( + List.of(), + grunnlag.getAnnenPart().getUttaksperioder(), + grunnlag, + aktuellPeriode.getFom(), + new ArrayList<>(grunnlag.getSøknad().getOppgittePerioder())); } - return SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(), grunnlag.getAnnenPart().getUttaksperioder(), grunnlag, - aktuellPeriode.getFom()); + return SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(), grunnlag.getAnnenPart().getUttaksperioder(), grunnlag, aktuellPeriode.getFom()); } @Test @@ -198,17 +221,19 @@ private SaldoUtregningGrunnlag lagGrunnlag(OppgittPeriode aktuellPeriode, RegelG var fomAnnenpart = LocalDate.of(2019, 12, 3); var tomAnnenpart = fomAnnenpart.plusWeeks(10).minusDays(1); var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak(fomAnnenpart, tomAnnenpart) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) - .build(); + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(50), Utbetalingsgrad.HUNDRED)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)); var aktuellPeriode = oppgittPeriode(FELLESPERIODE, fomAnnenpart.plusDays(1), tomAnnenpart.plusWeeks(10)); - var grunnlag = new RegelGrunnlag.Builder().annenPart(new AnnenPart.Builder().uttaksperiode(annenpartUttaksperiode)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) - .behandling(new Behandling.Builder()) - .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) - .build(); + var grunnlag = new RegelGrunnlag.Builder() + .annenPart(new AnnenPart.Builder().uttaksperiode(annenpartUttaksperiode)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) + .behandling(new Behandling.Builder()) + .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) + .build(); var resultat = SaldoUtregningTjeneste.lagUtregning(lagGrunnlag(aktuellPeriode, grunnlag)); @@ -220,17 +245,20 @@ private SaldoUtregningGrunnlag lagGrunnlag(OppgittPeriode aktuellPeriode, RegelG var fomAnnenpart = LocalDate.of(2019, 12, 3); var tomAnnenpart = fomAnnenpart.plusWeeks(10).minusDays(1); var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak(fomAnnenpart, tomAnnenpart) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(70), Utbetalingsgrad.HUNDRED)) - .build(); + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(70), Utbetalingsgrad.HUNDRED)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)); - var aktuellPeriode = oppgittPeriode(FELLESPERIODE, fomAnnenpart.plusWeeks(5).minusDays(1), tomAnnenpart); - var grunnlag = new RegelGrunnlag.Builder().annenPart(new AnnenPart.Builder().uttaksperiode(annenpartUttaksperiode)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) - .behandling(new Behandling.Builder().berørtBehandling(true)) - .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) - .build(); + var aktuellPeriode = + oppgittPeriode(FELLESPERIODE, fomAnnenpart.plusWeeks(5).minusDays(1), tomAnnenpart); + var grunnlag = new RegelGrunnlag.Builder() + .annenPart(new AnnenPart.Builder().uttaksperiode(annenpartUttaksperiode)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(annenAktivitet()))) + .behandling(new Behandling.Builder().berørtBehandling(true)) + .søknad(new Søknad.Builder().oppgittPeriode(aktuellPeriode)) + .build(); var resultat = SaldoUtregningTjeneste.lagUtregning(lagGrunnlag(aktuellPeriode, grunnlag)); @@ -244,21 +272,26 @@ private SaldoUtregningGrunnlag lagGrunnlag(OppgittPeriode aktuellPeriode, RegelG var utregningsdato = LocalDate.of(2019, 12, 5); var identifikator = annenAktivitet(); var identifikatorNyttArbeidsforhold = forFrilans(); - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(utregningsdato.minusWeeks(1), utregningsdato.minusDays(1)) - .periodeResultatType(INNVILGET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2.5), FELLESPERIODE, identifikator))) - .build(); + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(utregningsdato.minusWeeks(1), utregningsdato.minusDays(1)) + .periodeResultatType(INNVILGET) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2.5), FELLESPERIODE, identifikator))) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator)) - .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold))) - .kontoer(kontoer) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(fastsattPeriode), List.of(), grunnlag, utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(identifikator)) + .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold))) + .kontoer(kontoer) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(fastsattPeriode), List.of(), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikator)).isEqualTo(new Trekkdager(97.5)); - assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold)).isEqualTo(new Trekkdager(97.5)); + assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold)) + .isEqualTo(new Trekkdager(97.5)); } @Test @@ -268,130 +301,163 @@ private SaldoUtregningGrunnlag lagGrunnlag(OppgittPeriode aktuellPeriode, RegelG var utregningsdato = LocalDate.MAX; var identifikator = forArbeid(new Orgnummer("123"), "456"); var identifikatorNyttArbeidsforhold = forArbeid(new Orgnummer("123"), "789"); - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(LocalDate.of(2019, 12, 18), LocalDate.of(2019, 12, 19)) - .periodeResultatType(INNVILGET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikator))) - .build(); - var annenpartsPeriode = AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 12, 11), LocalDate.of(2019, 12, 17)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(forSelvstendigNæringsdrivende(), MØDREKVOTE, new Trekkdager(100), Utbetalingsgrad.HUNDRED)) - .build(); + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(LocalDate.of(2019, 12, 18), LocalDate.of(2019, 12, 19)) + .periodeResultatType(INNVILGET) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikator))) + .build(); + var annenpartsPeriode = AnnenpartUttakPeriode.Builder.uttak( + LocalDate.of(2019, 12, 11), LocalDate.of(2019, 12, 17)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forSelvstendigNæringsdrivende(), MØDREKVOTE, new Trekkdager(100), Utbetalingsgrad.HUNDRED)) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator)) - .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold))) - .kontoer(kontoer) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(fastsattPeriode), List.of(annenpartsPeriode), grunnlag, - utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(identifikator)) + .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold))) + .kontoer(kontoer) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(fastsattPeriode), List.of(annenpartsPeriode), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.saldoITrekkdager(MØDREKVOTE, identifikator)).isEqualTo(Trekkdager.ZERO); - assertThat(resultat.saldoITrekkdager(MØDREKVOTE, identifikatorNyttArbeidsforhold)).isEqualTo(Trekkdager.ZERO); + assertThat(resultat.saldoITrekkdager(MØDREKVOTE, identifikatorNyttArbeidsforhold)) + .isEqualTo(Trekkdager.ZERO); } @Test void saldoutregning_flerbarnsdager() { var fødselsdato = LocalDate.of(2022, 3, 28); - var kontoer = new Kontoer.Builder().konto(konto(MØDREKVOTE, 5 * 15)).konto(konto(FELLESPERIODE, (16 + 17) * 5)).flerbarnsdager(17 * 5); + var kontoer = new Kontoer.Builder() + .konto(konto(MØDREKVOTE, 5 * 15)) + .konto(konto(FELLESPERIODE, (16 + 17) * 5)) + .flerbarnsdager(17 * 5); var utregningsdato = LocalDate.MAX; var identifikator = forArbeid(new Orgnummer("123"), "456"); var identifikatorNyttArbeidsforhold = forArbeid(new Orgnummer("123"), "789"); - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato, fødselsdato.plusDays(5)) - .periodeResultatType(INNVILGET) - .flerbarnsdager(true) - .samtidigUttak(true) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, identifikator))) - .build(); + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato, fødselsdato.plusDays(5)) + .periodeResultatType(INNVILGET) + .flerbarnsdager(true) + .samtidigUttak(true) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, identifikator))) + .build(); var annenpartsPeriode = AnnenpartUttakPeriode.Builder.uttak(fødselsdato, fødselsdato.plusDays(5)) - .innvilget(true) - .flerbarnsdager(false) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(forSelvstendigNæringsdrivende(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) - .build(); + .innvilget(true) + .flerbarnsdager(false) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forSelvstendigNæringsdrivende(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator)) - .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold))) - .kontoer(kontoer) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(fastsattPeriode), List.of(annenpartsPeriode), grunnlag, - utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(identifikator)) + .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold))) + .kontoer(kontoer) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(fastsattPeriode), List.of(annenpartsPeriode), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.saldoITrekkdager(MØDREKVOTE, identifikator)).isEqualTo(new Trekkdager(14 * 5)); - assertThat(resultat.saldoITrekkdager(MØDREKVOTE, forSelvstendigNæringsdrivende())).isEqualTo(new Trekkdager(14 * 5)); + assertThat(resultat.saldoITrekkdager(MØDREKVOTE, forSelvstendigNæringsdrivende())) + .isEqualTo(new Trekkdager(14 * 5)); assertThat(resultat.restSaldoFlerbarnsdager(identifikator)).isEqualTo(new Trekkdager(16 * 5)); - assertThat(resultat.restSaldoFlerbarnsdager(identifikatorNyttArbeidsforhold)).isEqualTo(new Trekkdager(16 * 5)); + assertThat(resultat.restSaldoFlerbarnsdager(identifikatorNyttArbeidsforhold)) + .isEqualTo(new Trekkdager(16 * 5)); assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikator)).isEqualTo(new Trekkdager(32 * 5)); - assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold)).isEqualTo(new Trekkdager(32 * 5)); + assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold)) + .isEqualTo(new Trekkdager(32 * 5)); } @Test void saldoutregning_flerbarnsdager_begge_fellesperiode() { - var kontoer = new Kontoer.Builder().konto(konto(MØDREKVOTE, 5 * 15)).konto(konto(FELLESPERIODE, (16 + 17) * 5)).flerbarnsdager(17 * 5); + var kontoer = new Kontoer.Builder() + .konto(konto(MØDREKVOTE, 5 * 15)) + .konto(konto(FELLESPERIODE, (16 + 17) * 5)) + .flerbarnsdager(17 * 5); var fødselsdato = LocalDate.of(2022, 3, 28); var utregningsdato = LocalDate.MAX; var identifikator = forArbeid(new Orgnummer("123"), "456"); var identifikatorNyttArbeidsforhold = forArbeid(new Orgnummer("123"), "789"); - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(10).plusDays(5)) - .periodeResultatType(INNVILGET) - .flerbarnsdager(true) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, identifikator))) - .build(); - var annenpartsPeriode = AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(10).plusDays(5)) - .innvilget(true) - .flerbarnsdager(true) - .samtidigUttak(true) - .uttakPeriodeAktiviteter(List.of( - new AnnenpartUttakPeriodeAktivitet(forSelvstendigNæringsdrivende(), FELLESPERIODE, new Trekkdager(5), Utbetalingsgrad.HUNDRED))) - .build(); + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode( + fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(10).plusDays(5)) + .periodeResultatType(INNVILGET) + .flerbarnsdager(true) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, identifikator))) + .build(); + var annenpartsPeriode = AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(10).plusDays(5)) + .innvilget(true) + .flerbarnsdager(true) + .samtidigUttak(true) + .uttakPeriodeAktiviteter(List.of(new AnnenpartUttakPeriodeAktivitet( + forSelvstendigNæringsdrivende(), FELLESPERIODE, new Trekkdager(5), Utbetalingsgrad.HUNDRED))) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator)) - .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold))) - .kontoer(kontoer) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(fastsattPeriode), List.of(annenpartsPeriode), grunnlag, - utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(identifikator)) + .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold))) + .kontoer(kontoer) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(fastsattPeriode), List.of(annenpartsPeriode), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.restSaldoFlerbarnsdager(identifikator)).isEqualTo(new Trekkdager(16 * 5)); - assertThat(resultat.restSaldoFlerbarnsdager(identifikatorNyttArbeidsforhold)).isEqualTo(new Trekkdager(16 * 5)); + assertThat(resultat.restSaldoFlerbarnsdager(identifikatorNyttArbeidsforhold)) + .isEqualTo(new Trekkdager(16 * 5)); assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikator)).isEqualTo(new Trekkdager(31 * 5)); - assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold)).isEqualTo(new Trekkdager(31 * 5)); + assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold)) + .isEqualTo(new Trekkdager(31 * 5)); } @Test void saldoutregning_flerbarnsdager_begge_fellesperiode_berørt() { - var kontoer = new Kontoer.Builder().konto(konto(MØDREKVOTE, 5 * 15)).konto(konto(FELLESPERIODE, (16 + 17) * 5)).flerbarnsdager(17 * 5); + var kontoer = new Kontoer.Builder() + .konto(konto(MØDREKVOTE, 5 * 15)) + .konto(konto(FELLESPERIODE, (16 + 17) * 5)) + .flerbarnsdager(17 * 5); var fødselsdato = LocalDate.of(2022, 3, 28); var identifikator = forArbeid(new Orgnummer("123"), "456"); var identifikatorNyttArbeidsforhold = forArbeid(new Orgnummer("123"), "789"); - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(10).plusDays(5)) - .periodeResultatType(INNVILGET) - .flerbarnsdager(true) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, identifikator))) - .build(); - var annenpartsPeriode = AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(10).plusDays(5)) - .innvilget(true) - .flerbarnsdager(true) - .samtidigUttak(true) - .uttakPeriodeAktiviteter(List.of( - new AnnenpartUttakPeriodeAktivitet(forSelvstendigNæringsdrivende(), FELLESPERIODE, new Trekkdager(5), Utbetalingsgrad.HUNDRED))) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket(List.of(fastsattPeriode), true, List.of(annenpartsPeriode), - kontoer.build(), null, null, false); + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode( + fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(10).plusDays(5)) + .periodeResultatType(INNVILGET) + .flerbarnsdager(true) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, identifikator))) + .build(); + var annenpartsPeriode = AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(10).plusDays(5)) + .innvilget(true) + .flerbarnsdager(true) + .samtidigUttak(true) + .uttakPeriodeAktiviteter(List.of(new AnnenpartUttakPeriodeAktivitet( + forSelvstendigNæringsdrivende(), FELLESPERIODE, new Trekkdager(5), Utbetalingsgrad.HUNDRED))) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket( + List.of(fastsattPeriode), true, List.of(annenpartsPeriode), kontoer.build(), null, null, false); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.restSaldoFlerbarnsdager(identifikator)).isEqualTo(new Trekkdager(16 * 5)); - assertThat(resultat.restSaldoFlerbarnsdager(identifikatorNyttArbeidsforhold)).isEqualTo(new Trekkdager(16 * 5)); + assertThat(resultat.restSaldoFlerbarnsdager(identifikatorNyttArbeidsforhold)) + .isEqualTo(new Trekkdager(16 * 5)); assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikator)).isEqualTo(new Trekkdager(31 * 5)); - assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold)).isEqualTo(new Trekkdager(31 * 5)); + assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold)) + .isEqualTo(new Trekkdager(31 * 5)); } @Test @@ -405,31 +471,39 @@ void bfhr_enkel_minsterett_og_litt_msp() { var utregningsdato = LocalDate.MAX; var identifikator = forArbeid(new Orgnummer("123"), "456"); - var avslåttPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(16).minusDays(1)) - .periodeResultatType(AVSLÅTT) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(mspTD, FORELDREPENGER, identifikator))) - .build(); - var innvilgetPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(16), fødselsdato.plusWeeks(19).minusDays(1)) - .periodeResultatType(INNVILGET) - .resultatÅrsak(ANNET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(innvilgetMinsterettTD, FORELDREPENGER, identifikator))) - .build(); + var avslåttPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(16).minusDays(1)) + .periodeResultatType(AVSLÅTT) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(mspTD, FORELDREPENGER, identifikator))) + .build(); + var innvilgetPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode( + fødselsdato.plusWeeks(16), fødselsdato.plusWeeks(19).minusDays(1)) + .periodeResultatType(INNVILGET) + .resultatÅrsak(ANNET) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(innvilgetMinsterettTD, FORELDREPENGER, identifikator))) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator))) - .kontoer(kontoer) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(avslåttPeriode, innvilgetPeriode), List.of(), grunnlag, - utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator))) + .kontoer(kontoer) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(avslåttPeriode, innvilgetPeriode), List.of(), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); - assertThat(resultat.saldoITrekkdager(FORELDREPENGER, identifikator)).isEqualTo( - foreldrepengerTD.subtract(mspTD).subtract(innvilgetMinsterettTD)); + assertThat(resultat.saldoITrekkdager(FORELDREPENGER, identifikator)) + .isEqualTo(foreldrepengerTD.subtract(mspTD).subtract(innvilgetMinsterettTD)); assertThat(resultat.restSaldoMinsterett(identifikator)).isEqualTo(minsterettTD.subtract(innvilgetMinsterettTD)); - assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, false)).isEqualTo( - foreldrepengerTD.subtract(mspTD).subtract(innvilgetMinsterettTD).subtract(minsterettTD).add(innvilgetMinsterettTD)); - assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, true)).isEqualTo( - foreldrepengerTD.subtract(mspTD).subtract(innvilgetMinsterettTD)); + assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, false)) + .isEqualTo(foreldrepengerTD + .subtract(mspTD) + .subtract(innvilgetMinsterettTD) + .subtract(minsterettTD) + .add(innvilgetMinsterettTD)); + assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, true)) + .isEqualTo(foreldrepengerTD.subtract(mspTD).subtract(innvilgetMinsterettTD)); } @Test @@ -440,28 +514,34 @@ void bfhr_enkel_minsterett_vs_innvilget_mye_godkjent_aktivitet() { var utregningsdato = LocalDate.MAX; var identifikator = forArbeid(new Orgnummer("123"), "456"); - var avslåttPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1)) - .periodeResultatType(AVSLÅTT) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FORELDREPENGER, identifikator))) - .build(); - var innvilgetPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(45).minusDays(1)) - .periodeResultatType(INNVILGET) - .resultatÅrsak(INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(39 * 5), FORELDREPENGER, identifikator))) - .build(); + var avslåttPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1)) + .periodeResultatType(AVSLÅTT) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FORELDREPENGER, identifikator))) + .build(); + var innvilgetPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(45).minusDays(1)) + .periodeResultatType(INNVILGET) + .resultatÅrsak(INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(39 * 5), FORELDREPENGER, identifikator))) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator))) - .kontoer(kontoer) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(avslåttPeriode, innvilgetPeriode), List.of(), grunnlag, - utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator))) + .kontoer(kontoer) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(avslåttPeriode, innvilgetPeriode), List.of(), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.saldoITrekkdager(FORELDREPENGER, identifikator)).isEqualTo(Trekkdager.ZERO); assertThat(resultat.restSaldoMinsterett(identifikator)).isEqualTo(minsterettTD); - assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, false)).isEqualTo(Trekkdager.ZERO.subtract(minsterettTD)); - assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, true)).isEqualTo(Trekkdager.ZERO); + assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, false)) + .isEqualTo(Trekkdager.ZERO.subtract(minsterettTD)); + assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, true)) + .isEqualTo(Trekkdager.ZERO); } @Test @@ -472,33 +552,42 @@ void bfhr_enkel_minsterett_vs_innvilget_med_godkjent_aktivitet_og_minsterett() { var utregningsdato = LocalDate.MAX; var identifikator = forArbeid(new Orgnummer("123"), "456"); - var avslåttPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1)) - .periodeResultatType(AVSLÅTT) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FORELDREPENGER, identifikator))) - .build(); - var innvilgetPeriode1 = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(11).minusDays(1)) - .periodeResultatType(INNVILGET) - .resultatÅrsak(ANNET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4 * 5), FORELDREPENGER, identifikator))) - .build(); - var innvilgetPeriode2 = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(11), fødselsdato.plusWeeks(45).minusDays(1)) - .periodeResultatType(INNVILGET) - .resultatÅrsak(INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(35 * 5), FORELDREPENGER, identifikator))) - .build(); + var avslåttPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(7).minusDays(1)) + .periodeResultatType(AVSLÅTT) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FORELDREPENGER, identifikator))) + .build(); + var innvilgetPeriode1 = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(11).minusDays(1)) + .periodeResultatType(INNVILGET) + .resultatÅrsak(ANNET) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(4 * 5), FORELDREPENGER, identifikator))) + .build(); + var innvilgetPeriode2 = new FastsattUttakPeriode.Builder() + .tidsperiode( + fødselsdato.plusWeeks(11), fødselsdato.plusWeeks(45).minusDays(1)) + .periodeResultatType(INNVILGET) + .resultatÅrsak(INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(35 * 5), FORELDREPENGER, identifikator))) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator))) - .kontoer(kontoer) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(avslåttPeriode, innvilgetPeriode1, innvilgetPeriode2), - List.of(), grunnlag, utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator))) + .kontoer(kontoer) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(avslåttPeriode, innvilgetPeriode1, innvilgetPeriode2), List.of(), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.saldoITrekkdager(FORELDREPENGER, identifikator)).isEqualTo(Trekkdager.ZERO); assertThat(resultat.restSaldoMinsterett(identifikator)).isEqualTo(new Trekkdager(40 - 20)); - assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, false)).isEqualTo(new Trekkdager(20 - 40)); - assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, true)).isEqualTo(Trekkdager.ZERO); + assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, false)) + .isEqualTo(new Trekkdager(20 - 40)); + assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, true)) + .isEqualTo(Trekkdager.ZERO); } @Test @@ -509,24 +598,28 @@ void bfhr_enkel_minsterett_vs_innvilget_med_mer_uttak_enn_minsterett() { var utregningsdato = LocalDate.MAX; var identifikator = forArbeid(new Orgnummer("123"), "456"); - var innvilgetPeriode = new FastsattUttakPeriode.Builder().tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(16).minusDays(1)) - .periodeResultatType(INNVILGET) - .resultatÅrsak(ANNET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10 * 5), FORELDREPENGER, identifikator))) - .build(); + var innvilgetPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(16).minusDays(1)) + .periodeResultatType(INNVILGET) + .resultatÅrsak(ANNET) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10 * 5), FORELDREPENGER, identifikator))) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator))) - .kontoer(kontoer) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(innvilgetPeriode), List.of(), grunnlag, - utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator))) + .kontoer(kontoer) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(innvilgetPeriode), List.of(), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.saldoITrekkdager(FORELDREPENGER, identifikator)).isEqualTo(new Trekkdager(200 - 50)); assertThat(resultat.restSaldoMinsterett(identifikator)).isEqualTo(new Trekkdager(40 - 50)); - assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, false)).isEqualTo(new Trekkdager(200 - 50)); - assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, true)).isEqualTo(new Trekkdager(200 - 50)); + assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, false)) + .isEqualTo(new Trekkdager(200 - 50)); + assertThat(resultat.nettoSaldoJustertForMinsterett(FORELDREPENGER, identifikator, true)) + .isEqualTo(new Trekkdager(200 - 50)); } @Test @@ -537,36 +630,48 @@ void skal_arve_saldo_flere_ganger() { var identifikator = forArbeid(new Orgnummer("123"), "456"); var identifikatorNyttArbeidsforhold1 = forArbeid(new Orgnummer("123"), "789"); var identifikatorNyttArbeidsforhold2 = forArbeid(new Orgnummer("345"), null); - var fastsattPeriode1 = new FastsattUttakPeriode.Builder().tidsperiode(LocalDate.of(2019, 12, 18), LocalDate.of(2019, 12, 18)) - .periodeResultatType(INNVILGET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikator))) - .build(); - var fastsattPeriode2 = new FastsattUttakPeriode.Builder().tidsperiode(LocalDate.of(2019, 12, 19), LocalDate.of(2019, 12, 19)) - .periodeResultatType(INNVILGET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikator), - new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikatorNyttArbeidsforhold1))) - .build(); - var fastsattPeriode3 = new FastsattUttakPeriode.Builder().tidsperiode(LocalDate.of(2019, 12, 20), LocalDate.of(2019, 12, 20)) - .periodeResultatType(INNVILGET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikator), - new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikatorNyttArbeidsforhold1), - new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikatorNyttArbeidsforhold2))) - .build(); + var fastsattPeriode1 = new FastsattUttakPeriode.Builder() + .tidsperiode(LocalDate.of(2019, 12, 18), LocalDate.of(2019, 12, 18)) + .periodeResultatType(INNVILGET) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikator))) + .build(); + var fastsattPeriode2 = new FastsattUttakPeriode.Builder() + .tidsperiode(LocalDate.of(2019, 12, 19), LocalDate.of(2019, 12, 19)) + .periodeResultatType(INNVILGET) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikator), + new FastsattUttakPeriodeAktivitet( + new Trekkdager(50), FELLESPERIODE, identifikatorNyttArbeidsforhold1))) + .build(); + var fastsattPeriode3 = new FastsattUttakPeriode.Builder() + .tidsperiode(LocalDate.of(2019, 12, 20), LocalDate.of(2019, 12, 20)) + .periodeResultatType(INNVILGET) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(50), FELLESPERIODE, identifikator), + new FastsattUttakPeriodeAktivitet( + new Trekkdager(50), FELLESPERIODE, identifikatorNyttArbeidsforhold1), + new FastsattUttakPeriodeAktivitet( + new Trekkdager(50), FELLESPERIODE, identifikatorNyttArbeidsforhold2))) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(identifikator)) - .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold1)) - .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold2))) - .kontoer(kontoer) - .build(); - - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(fastsattPeriode1, fastsattPeriode2, fastsattPeriode3), - List.of(), grunnlag, utregningsdato); + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(identifikator)) + .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold1)) + .arbeidsforhold(new Arbeidsforhold(identifikatorNyttArbeidsforhold2))) + .kontoer(kontoer) + .build(); + + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(fastsattPeriode1, fastsattPeriode2, fastsattPeriode3), List.of(), grunnlag, utregningsdato); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikator)).isEqualTo(new Trekkdager(5)); - assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold1)).isEqualTo(new Trekkdager(5)); - assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold2)).isEqualTo(new Trekkdager(5)); + assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold1)) + .isEqualTo(new Trekkdager(5)); + assertThat(resultat.saldoITrekkdager(FELLESPERIODE, identifikatorNyttArbeidsforhold2)) + .isEqualTo(new Trekkdager(5)); } @Test @@ -574,148 +679,200 @@ void skal_regne_riktig_flerbarnsdager_hvis_annenpart_har_nyoppstartet_arbeidsfor var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)).flerbarnsdager(50); var søkersArbeidsforhold = forArbeid(new Orgnummer("123"), "456"); - var fastsattPeriode = new FastsattUttakPeriode.Builder().tidsperiode(LocalDate.of(2019, 12, 18), LocalDate.of(2019, 12, 18)) - .periodeResultatType(INNVILGET) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, søkersArbeidsforhold))) - .build(); + var fastsattPeriode = new FastsattUttakPeriode.Builder() + .tidsperiode(LocalDate.of(2019, 12, 18), LocalDate.of(2019, 12, 18)) + .periodeResultatType(INNVILGET) + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, søkersArbeidsforhold))) + .build(); var annenpartsArbeidsforhold1 = forArbeid(new Orgnummer("123"), "789"); var annenpartsArbeidsforhold2 = forSelvstendigNæringsdrivende(); - var annenpartPeriode1 = AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 12, 17), LocalDate.of(2019, 12, 17)) - .flerbarnsdager(true) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(annenpartsArbeidsforhold1, FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.HUNDRED)) - .build(); - var annenpartPeriode2 = AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2019, 12, 19), LocalDate.of(2019, 12, 19)) - .flerbarnsdager(false) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(annenpartsArbeidsforhold1, FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.HUNDRED)) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(annenpartsArbeidsforhold2, FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.HUNDRED)) - .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket(List.of(fastsattPeriode), false, - List.of(annenpartPeriode1, annenpartPeriode2), kontoer.build(), null, null, false); + var annenpartPeriode1 = AnnenpartUttakPeriode.Builder.uttak( + LocalDate.of(2019, 12, 17), LocalDate.of(2019, 12, 17)) + .flerbarnsdager(true) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + annenpartsArbeidsforhold1, FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.HUNDRED)) + .build(); + var annenpartPeriode2 = AnnenpartUttakPeriode.Builder.uttak( + LocalDate.of(2019, 12, 19), LocalDate.of(2019, 12, 19)) + .flerbarnsdager(false) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + annenpartsArbeidsforhold1, FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.HUNDRED)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + annenpartsArbeidsforhold2, FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.HUNDRED)) + .build(); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket( + List.of(fastsattPeriode), + false, + List.of(annenpartPeriode1, annenpartPeriode2), + kontoer.build(), + null, + null, + false); var resultat = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); - assertThat(resultat.saldoITrekkdager(FELLESPERIODE, søkersArbeidsforhold)).isEqualTo(new Trekkdager(97)); + assertThat(resultat.saldoITrekkdager(FELLESPERIODE, søkersArbeidsforhold)) + .isEqualTo(new Trekkdager(97)); assertThat(resultat.restSaldoFlerbarnsdager(søkersArbeidsforhold)).isEqualTo(new Trekkdager(49)); } - @DisplayName("FAGSYSTEM-204667 Oppholdsperiode hos søker ligger før endringsdato, slik at den ikke knekkes mot annen parts perioder") + @DisplayName( + "FAGSYSTEM-204667 Oppholdsperiode hos søker ligger før endringsdato, slik at den ikke knekkes mot annen parts perioder") @Test void oppholdsperiode_hos_søker_som_ikke_er_knekt() { - var opphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .tidsperiode(LocalDate.of(2021, 11, 1), LocalDate.of(2021, 11, 28)) - .build(); - var uttakEtterOpphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .tidsperiode(opphold.getTom().plusDays(1), opphold.getTom().plusDays(1)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) - .build(); - var annenpartUttaksperiode1 = AnnenpartUttakPeriode.Builder.uttak(opphold.getFom(), opphold.getFom().plusWeeks(1).minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(25), Utbetalingsgrad.FULL)) - .build(); - var annenpartUttaksperiode2 = AnnenpartUttakPeriode.Builder.uttak(annenpartUttaksperiode1.getTom().plusDays(1), - opphold.getTom().minusWeeks(1)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(25), Utbetalingsgrad.FULL)) - .build(); - var annenpartUttaksperiode3 = AnnenpartUttakPeriode.Builder.uttak(annenpartUttaksperiode2.getTom().plusDays(1), opphold.getTom()) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(25), Utbetalingsgrad.FULL)) - .build(); + var opphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .tidsperiode(LocalDate.of(2021, 11, 1), LocalDate.of(2021, 11, 28)) + .build(); + var uttakEtterOpphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .tidsperiode(opphold.getTom().plusDays(1), opphold.getTom().plusDays(1)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) + .build(); + var annenpartUttaksperiode1 = AnnenpartUttakPeriode.Builder.uttak( + opphold.getFom(), opphold.getFom().plusWeeks(1).minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(25), Utbetalingsgrad.FULL)) + .build(); + var annenpartUttaksperiode2 = AnnenpartUttakPeriode.Builder.uttak( + annenpartUttaksperiode1.getTom().plusDays(1), + opphold.getTom().minusWeeks(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(25), Utbetalingsgrad.FULL)) + .build(); + var annenpartUttaksperiode3 = AnnenpartUttakPeriode.Builder.uttak( + annenpartUttaksperiode2.getTom().plusDays(1), opphold.getTom()) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(25), Utbetalingsgrad.FULL)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)); - var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket(List.of(opphold, uttakEtterOpphold), false, - List.of(annenpartUttaksperiode1, annenpartUttaksperiode2, annenpartUttaksperiode3), kontoer.build(), - LocalDateTime.of(annenpartUttaksperiode1.getFom(), LocalTime.NOON), LocalDateTime.of(opphold.getFom(), LocalTime.NOON), true); + var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket( + List.of(opphold, uttakEtterOpphold), + false, + List.of(annenpartUttaksperiode1, annenpartUttaksperiode2, annenpartUttaksperiode3), + kontoer.build(), + LocalDateTime.of(annenpartUttaksperiode1.getFom(), LocalTime.NOON), + LocalDateTime.of(opphold.getFom(), LocalTime.NOON), + true); var resultat = SaldoUtregningTjeneste.lagUtregning(grunnlag); - //100 - 25 - 25 - 25 - 1 + // 100 - 25 - 25 - 25 - 1 assertThat(resultat.saldo(FELLESPERIODE)).isEqualTo(24); } @Test void oppholdsperiode_hos_søker_der_annenpart_ikke_har_fylt_hele_perioden() { - var opphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .tidsperiode(LocalDate.of(2022, 1, 31), LocalDate.of(2022, 2, 4)) - .build(); - var uttakEtterOpphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .tidsperiode(LocalDate.of(2022, 2, 7), LocalDate.of(2022, 2, 7)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) - .build(); + var opphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .tidsperiode(LocalDate.of(2022, 1, 31), LocalDate.of(2022, 2, 4)) + .build(); + var uttakEtterOpphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .tidsperiode(LocalDate.of(2022, 2, 7), LocalDate.of(2022, 2, 7)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) + .build(); var annenpartUttaksperiode = AnnenpartUttakPeriode.Builder.uttak(opphold.getFom(), LocalDate.of(2022, 2, 2)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(3), Utbetalingsgrad.FULL)) - .build(); + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(3), Utbetalingsgrad.FULL)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)); - var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket(List.of(opphold, uttakEtterOpphold), false, List.of(annenpartUttaksperiode), - kontoer.build(), LocalDateTime.of(annenpartUttaksperiode.getFom(), LocalTime.NOON), LocalDateTime.of(opphold.getFom(), LocalTime.NOON), - true); + var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket( + List.of(opphold, uttakEtterOpphold), + false, + List.of(annenpartUttaksperiode), + kontoer.build(), + LocalDateTime.of(annenpartUttaksperiode.getFom(), LocalTime.NOON), + LocalDateTime.of(opphold.getFom(), LocalTime.NOON), + true); var resultat = SaldoUtregningTjeneste.lagUtregning(grunnlag); - //100 - 3 - 2 - 1 + // 100 - 3 - 2 - 1 assertThat(resultat.saldo(FELLESPERIODE)).isEqualTo(94); } @Test void oppholdsperiode_hos_søker_der_annenpart_har_hull_i_oppholdsperioden() { - var opphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .tidsperiode(LocalDate.of(2022, 1, 31), LocalDate.of(2022, 2, 4)) - .build(); - var uttakEtterOpphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .tidsperiode(LocalDate.of(2022, 2, 7), LocalDate.of(2022, 2, 7)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) - .build(); + var opphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .tidsperiode(LocalDate.of(2022, 1, 31), LocalDate.of(2022, 2, 4)) + .build(); + var uttakEtterOpphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .tidsperiode(LocalDate.of(2022, 2, 7), LocalDate.of(2022, 2, 7)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) + .build(); var annenpartUttaksperiode1 = AnnenpartUttakPeriode.Builder.uttak(opphold.getFom(), LocalDate.of(2022, 2, 1)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(2), Utbetalingsgrad.FULL)) - .build(); - var annenpartUttaksperiode2 = AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2022, 2, 4), LocalDate.of(2022, 2, 4)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.FULL)) - .build(); + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(2), Utbetalingsgrad.FULL)) + .build(); + var annenpartUttaksperiode2 = AnnenpartUttakPeriode.Builder.uttak( + LocalDate.of(2022, 2, 4), LocalDate.of(2022, 2, 4)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.FULL)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)); - var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket(List.of(opphold, uttakEtterOpphold), false, - List.of(annenpartUttaksperiode1, annenpartUttaksperiode2), kontoer.build(), - LocalDateTime.of(annenpartUttaksperiode1.getFom(), LocalTime.NOON), LocalDateTime.of(opphold.getFom(), LocalTime.NOON), true); + var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket( + List.of(opphold, uttakEtterOpphold), + false, + List.of(annenpartUttaksperiode1, annenpartUttaksperiode2), + kontoer.build(), + LocalDateTime.of(annenpartUttaksperiode1.getFom(), LocalTime.NOON), + LocalDateTime.of(opphold.getFom(), LocalTime.NOON), + true); var resultat = SaldoUtregningTjeneste.lagUtregning(grunnlag); - //100 - 2 - 2 - 1 - 1 + // 100 - 2 - 2 - 1 - 1 assertThat(resultat.saldo(FELLESPERIODE)).isEqualTo(94); } @Test void oppholdsperioder_skal_ikke_telle_dager_ved_fritt_uttak() { - var opphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .tidsperiode(LocalDate.of(2022, 11, 4), LocalDate.of(2022, 11, 4)) - .build(); - var uttakEtterOpphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .tidsperiode(LocalDate.of(2022, 11, 7), LocalDate.of(2022, 11, 7)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) - .build(); + var opphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .tidsperiode(LocalDate.of(2022, 11, 4), LocalDate.of(2022, 11, 4)) + .build(); + var uttakEtterOpphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .tidsperiode(LocalDate.of(2022, 11, 7), LocalDate.of(2022, 11, 7)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) + .build(); var annenpartOpphold = AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2022, 11, 8), LocalDate.of(2022, 11, 8)) - .innvilget(true) - .oppholdsårsak(FELLESPERIODE_ANNEN_FORELDER) - .build(); + .innvilget(true) + .oppholdsårsak(FELLESPERIODE_ANNEN_FORELDER) + .build(); var annenpartUttak = AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2022, 11, 9), LocalDate.of(2022, 11, 9)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.FULL)) - .build(); + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.FULL)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)).build(); - var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket(List.of(opphold, uttakEtterOpphold), false, - List.of(annenpartOpphold, annenpartUttak), kontoer, null, null, false); + var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket( + List.of(opphold, uttakEtterOpphold), + false, + List.of(annenpartOpphold, annenpartUttak), + kontoer, + null, + null, + false); var resultat = SaldoUtregningTjeneste.lagUtregning(grunnlag); assertThat(resultat.saldo(FELLESPERIODE)).isEqualTo(98); @@ -723,29 +880,38 @@ void oppholdsperioder_skal_ikke_telle_dager_ved_fritt_uttak() { @Test void oppholdsperioder_skal_telle_dager_ved_sammehengende_uttak() { - var opphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .tidsperiode(LocalDate.of(2022, 11, 4), LocalDate.of(2022, 11, 4)) - .build(); - var uttakEtterOpphold = new FastsattUttakPeriode.Builder().periodeResultatType(INNVILGET) - .tidsperiode(LocalDate.of(2022, 11, 7), LocalDate.of(2022, 11, 7)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) - .build(); + var opphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .tidsperiode(LocalDate.of(2022, 11, 4), LocalDate.of(2022, 11, 4)) + .build(); + var uttakEtterOpphold = new FastsattUttakPeriode.Builder() + .periodeResultatType(INNVILGET) + .tidsperiode(LocalDate.of(2022, 11, 7), LocalDate.of(2022, 11, 7)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, forFrilans()))) + .build(); var annenpartOpphold = AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2022, 11, 8), LocalDate.of(2022, 11, 8)) - .innvilget(true) - .oppholdsårsak(FELLESPERIODE_ANNEN_FORELDER) - .build(); + .innvilget(true) + .oppholdsårsak(FELLESPERIODE_ANNEN_FORELDER) + .build(); var annenpartUttak = AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2022, 11, 9), LocalDate.of(2022, 11, 9)) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.FULL)) - .build(); + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(1), Utbetalingsgrad.FULL)) + .build(); var kontoer = new Kontoer.Builder().konto(konto(FELLESPERIODE, 100)).build(); - var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket(List.of(opphold, uttakEtterOpphold), false, - List.of(annenpartOpphold, annenpartUttak), kontoer, null, null, true); + var grunnlag = SaldoUtregningGrunnlag.forUtregningAvHeleUttaket( + List.of(opphold, uttakEtterOpphold), + false, + List.of(annenpartOpphold, annenpartUttak), + kontoer, + null, + null, + true); var resultat = SaldoUtregningTjeneste.lagUtregning(grunnlag); assertThat(resultat.saldo(FELLESPERIODE)).isEqualTo(96); diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SjekkGyldigGrunnForTidligOppstartDelRegelTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SjekkGyldigGrunnForTidligOppstartDelRegelTest.java index ecbdcc05..15a4a300 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SjekkGyldigGrunnForTidligOppstartDelRegelTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SjekkGyldigGrunnForTidligOppstartDelRegelTest.java @@ -12,9 +12,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Behandling; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.DokumentasjonVurdering; @@ -29,6 +26,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UttakPeriode; +import org.junit.jupiter.api.Test; class SjekkGyldigGrunnForTidligOppstartDelRegelTest { private final FastsettePerioderRegelOrkestrering regelOrkestrering = new FastsettePerioderRegelOrkestrering(); @@ -36,49 +34,62 @@ class SjekkGyldigGrunnForTidligOppstartDelRegelTest { @Test void fedrekvote_med_tidlig_oppstart_og_gyldig_grunn_blir_innvilget() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = DelRegelTestUtil.oppgittPeriode(FEDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); + var oppgittPeriode = DelRegelTestUtil.oppgittPeriode( + FEDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); var kontoer = enKonto(FEDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) + .kontoer(kontoer) + .build(); var periodeResultater = regelOrkestrering.fastsettePerioder(grunnlag); assertThat(periodeResultater).hasSize(2); - var perioder = periodeResultater.stream().map(FastsettePeriodeResultat::uttakPeriode).sorted(comparing(UttakPeriode::getFom)).toList(); - assertThat(perioder.stream().map(UttakPeriode::getPerioderesultattype).collect(toList())).containsExactly(INNVILGET, INNVILGET); - assertThat(perioder.stream().map(UttakPeriode::getStønadskontotype).collect(toList())).containsExactly(FEDREKVOTE, FEDREKVOTE); + var perioder = periodeResultater.stream() + .map(FastsettePeriodeResultat::uttakPeriode) + .sorted(comparing(UttakPeriode::getFom)) + .toList(); + assertThat(perioder.stream().map(UttakPeriode::getPerioderesultattype).collect(toList())) + .containsExactly(INNVILGET, INNVILGET); + assertThat(perioder.stream().map(UttakPeriode::getStønadskontotype).collect(toList())) + .containsExactly(FEDREKVOTE, FEDREKVOTE); } @Test void fellesperiode_med_tidlig_oppstart_mor_er_i_aktivitet_blir_innvilget() { var fødselsdato = LocalDate.of(2018, 1, 1); - var oppgittPeriode = DelRegelTestUtil.oppgittPeriode(FELLESPERIODE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), - MORS_AKTIVITET_GODKJENT); + var oppgittPeriode = DelRegelTestUtil.oppgittPeriode( + FELLESPERIODE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), MORS_AKTIVITET_GODKJENT); var kontoer = enKonto(FELLESPERIODE, 10 * 5); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode)) + .kontoer(kontoer) + .build(); var periodeResultater = regelOrkestrering.fastsettePerioder(grunnlag); assertThat(periodeResultater).hasSize(1); - assertThat(periodeResultater.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(INNVILGET); - assertThat(periodeResultater.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FELLESPERIODE); + assertThat(periodeResultater.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(INNVILGET); + assertThat(periodeResultater.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(FELLESPERIODE); } @Test void fellesperiode_med_tidlig_oppstart_og_gyldig_grunn_hele_perioden_blir_innvilget() { var fødselsdato = LocalDate.of(2018, 1, 1); - var uttakPeriode = DelRegelTestUtil.oppgittPeriode(FELLESPERIODE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), - INNLEGGELSE_ANNEN_FORELDER_GODKJENT); + var uttakPeriode = DelRegelTestUtil.oppgittPeriode( + FELLESPERIODE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), INNLEGGELSE_ANNEN_FORELDER_GODKJENT); var kontoer = enKonto(FELLESPERIODE, 10 * 5); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) + .kontoer(kontoer) + .build(); var periodeResultater = regelOrkestrering.fastsettePerioder(grunnlag); assertThat(periodeResultater).hasSize(1); - assertThat(periodeResultater.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(periodeResultater.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FELLESPERIODE); + assertThat(periodeResultater.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); + assertThat(periodeResultater.get(0).uttakPeriode().getStønadskontotype()) + .isEqualTo(Stønadskontotype.FELLESPERIODE); } @Test @@ -86,13 +97,17 @@ void fedrekvote_med_tidlig_oppstart_uten_gyldig_grunn_deler_av_perioden_skal_beh var fødselsdato = LocalDate.of(2018, 1, 1); var uttakPeriode = oppgittPeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(10), null); var kontoer = enKonto(FEDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) + .kontoer(kontoer) + .build(); var periodeResultater = regelOrkestrering.fastsettePerioder(grunnlag); assertThat(periodeResultater).hasSize(2); - var perioder = periodeResultater.stream().map(FastsettePeriodeResultat::uttakPeriode).sorted(comparing(UttakPeriode::getFom)).toList(); + var perioder = periodeResultater.stream() + .map(FastsettePeriodeResultat::uttakPeriode) + .sorted(comparing(UttakPeriode::getFom)) + .toList(); var ugyldigPeriode = perioder.get(0); assertThat(ugyldigPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); @@ -109,83 +124,140 @@ void fedrekvote_med_tidlig_oppstart_uten_gyldig_grunn_deler_av_perioden_skal_beh @Test void fedrekvote_med_tidlig_oppstart_og_vurdert_OK_av_saksbehandler_blir_innvilget_med_knekk() { var fødselsdato = LocalDate.of(2018, 1, 1); - var uttakPeriode = oppgittPeriode(fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(10), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); + var uttakPeriode = oppgittPeriode( + fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(10), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); var kontoer = enKonto(FEDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlag(fødselsdato).kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .kontoer(kontoer) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) + .build(); var periodeResultater = regelOrkestrering.fastsettePerioder(grunnlag); assertThat(periodeResultater).hasSize(2); - var perioder = periodeResultater.stream().map(FastsettePeriodeResultat::uttakPeriode).sorted(comparing(UttakPeriode::getFom)).toList(); - - verifiserPeriode(perioder.get(0), fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(6).minusDays(1), INNVILGET, FEDREKVOTE); + var perioder = periodeResultater.stream() + .map(FastsettePeriodeResultat::uttakPeriode) + .sorted(comparing(UttakPeriode::getFom)) + .toList(); + + verifiserPeriode( + perioder.get(0), + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(6).minusDays(1), + INNVILGET, + FEDREKVOTE); verifiserPeriode(perioder.get(1), fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10), INNVILGET, FEDREKVOTE); } @Test void fedrekvote_med_tidlig_oppstart_og_vurdert_OK_av_saksbehandler_blir_innvilget() { var fødselsdato = LocalDate.of(2018, 1, 1); - var uttakPeriode = oppgittPeriode(fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); + var uttakPeriode = oppgittPeriode( + fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); var kontoer = enKonto(FEDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) + .kontoer(kontoer) + .build(); var periodeResultater = regelOrkestrering.fastsettePerioder(grunnlag); assertThat(periodeResultater).hasSize(1); - var perioder = periodeResultater.stream().map(FastsettePeriodeResultat::uttakPeriode).sorted(comparing(UttakPeriode::getFom)).toList(); - - verifiserPeriode(perioder.get(0), fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), INNVILGET, FEDREKVOTE); + var perioder = periodeResultater.stream() + .map(FastsettePeriodeResultat::uttakPeriode) + .sorted(comparing(UttakPeriode::getFom)) + .toList(); + + verifiserPeriode( + perioder.get(0), + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(3).minusDays(1), + INNVILGET, + FEDREKVOTE); } private OppgittPeriode oppgittPeriode(LocalDate fom, LocalDate tom, DokumentasjonVurdering dokumentasjonVurdering) { - return OppgittPeriode.forVanligPeriode(FEDREKVOTE, fom, tom, null, false, null, null, null, dokumentasjonVurdering); + return OppgittPeriode.forVanligPeriode( + FEDREKVOTE, fom, tom, null, false, null, null, null, dokumentasjonVurdering); } @Test void fedrekvote_med_tidlig_oppstart_og_vurdert_uavklart_av_saksbehandler_går_til_manuell_behandling() { var fødselsdato = LocalDate.of(2018, 1, 1); - var uttakPeriode = oppgittPeriode(fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), null); + var uttakPeriode = oppgittPeriode( + fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), null); var kontoer = enKonto(FEDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlag(fødselsdato).søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode)) + .kontoer(kontoer) + .build(); var periodeResultater = regelOrkestrering.fastsettePerioder(grunnlag); assertThat(periodeResultater).hasSize(1); - var perioder = periodeResultater.stream().map(FastsettePeriodeResultat::uttakPeriode).sorted(comparing(UttakPeriode::getFom)).toList(); - - verifiserPeriode(perioder.get(0), fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), MANUELL_BEHANDLING, FEDREKVOTE); + var perioder = periodeResultater.stream() + .map(FastsettePeriodeResultat::uttakPeriode) + .sorted(comparing(UttakPeriode::getFom)) + .toList(); + + verifiserPeriode( + perioder.get(0), + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(3).minusDays(1), + MANUELL_BEHANDLING, + FEDREKVOTE); } @Test - void fedrekvote_med_tidlig_oppstart_og_vurdert_OK_av_saksbehandler_blir_innvilget_med_knekk_som_saksbehandler_har_registrert() { + void + fedrekvote_med_tidlig_oppstart_og_vurdert_OK_av_saksbehandler_blir_innvilget_med_knekk_som_saksbehandler_har_registrert() { var fødselsdato = LocalDate.of(2018, 1, 1); - var uttakPeriode1 = oppgittPeriode(fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); - var uttakPeriode2 = oppgittPeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4).minusDays(1), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); - var uttakPeriode3 = oppgittPeriode(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(6).minusDays(1), null); + var uttakPeriode1 = oppgittPeriode( + fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); + var uttakPeriode2 = oppgittPeriode( + fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4).minusDays(1), TIDLIG_OPPSTART_FEDREKVOTE_GODKJENT); + var uttakPeriode3 = oppgittPeriode( + fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(6).minusDays(1), null); var kontoer = enKonto(FEDREKVOTE, 10 * 5); - var grunnlag = basicGrunnlag(fødselsdato).søknad( - new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode1).oppgittPeriode(uttakPeriode2).oppgittPeriode(uttakPeriode3)) - .kontoer(kontoer) - .build(); + var grunnlag = basicGrunnlag(fødselsdato) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(uttakPeriode1) + .oppgittPeriode(uttakPeriode2) + .oppgittPeriode(uttakPeriode3)) + .kontoer(kontoer) + .build(); var periodeResultater = regelOrkestrering.fastsettePerioder(grunnlag); assertThat(periodeResultater).hasSize(3); - var perioder = periodeResultater.stream().map(FastsettePeriodeResultat::uttakPeriode).sorted(comparing(UttakPeriode::getFom)).toList(); - - verifiserPeriode(perioder.get(0), fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(perioder.get(1), fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(4).minusDays(1), INNVILGET, FEDREKVOTE); - verifiserPeriode(perioder.get(2), fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(6).minusDays(1), MANUELL_BEHANDLING, FEDREKVOTE); + var perioder = periodeResultater.stream() + .map(FastsettePeriodeResultat::uttakPeriode) + .sorted(comparing(UttakPeriode::getFom)) + .toList(); + + verifiserPeriode( + perioder.get(0), + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(3).minusDays(1), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + perioder.get(1), + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(4).minusDays(1), + INNVILGET, + FEDREKVOTE); + verifiserPeriode( + perioder.get(2), + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(6).minusDays(1), + MANUELL_BEHANDLING, + FEDREKVOTE); } - - private void verifiserPeriode(UttakPeriode periode, - LocalDate forventetFom, - LocalDate forventetTom, - Perioderesultattype forventetResultat, - Stønadskontotype stønadskontotype) { + private void verifiserPeriode( + UttakPeriode periode, + LocalDate forventetFom, + LocalDate forventetTom, + Perioderesultattype forventetResultat, + Stønadskontotype stønadskontotype) { assertThat(periode.getFom()).isEqualTo(forventetFom); assertThat(periode.getTom()).isEqualTo(forventetTom); assertThat(periode.getPerioderesultattype()).isEqualTo(forventetResultat); @@ -194,14 +266,21 @@ private void verifiserPeriode(UttakPeriode periode, private RegelGrunnlag.Builder basicGrunnlag(LocalDate fødselsdato) { return RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true)) - .behandling(new Behandling.Builder().søkerErMor(false)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true)) + .behandling(new Behandling.Builder().søkerErMor(false)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } private Kontoer.Builder enKonto(Stønadskontotype stønadskontotype, int trekkdager) { - return new Kontoer.Builder().konto(new Konto.Builder().type(stønadskontotype).trekkdager(trekkdager)); + return new Kontoer.Builder() + .konto(new Konto.Builder().type(stønadskontotype).trekkdager(trekkdager)); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SporingOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SporingOrkestreringTest.java index 291cb98b..17702c4c 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SporingOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/SporingOrkestreringTest.java @@ -4,33 +4,43 @@ import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype.MØDREKVOTE; import static org.assertj.core.api.Assertions.assertThat; -import java.time.LocalDate; -import java.util.HashMap; - -import org.junit.jupiter.api.Test; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; - +import java.time.LocalDate; +import java.util.HashMap; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.RettOgOmsorg; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; +import org.junit.jupiter.api.Test; class SporingOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void fastsette_perioder_regel_skal_produsere_sporing_i_json_format() throws JsonProcessingException { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagMor(fødselsdato).rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .søknad(søknad(Søknadstype.FØDSEL, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .søknad(søknad( + Søknadstype.FØDSEL, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1)))); var resultatListe = fastsettPerioder(grunnlag); assertThat(resultatListe).hasSize(3); for (var resultat : resultatListe) { - assertThat(new ObjectMapper().readValue(resultat.innsendtGrunnlag(), HashMap.class)).isNotNull().isNotEmpty(); - assertThat(new ObjectMapper().readValue(resultat.evalueringResultat(), HashMap.class)).isNotNull().isNotEmpty(); + assertThat(new ObjectMapper().readValue(resultat.innsendtGrunnlag(), HashMap.class)) + .isNotNull() + .isNotEmpty(); + assertThat(new ObjectMapper().readValue(resultat.evalueringResultat(), HashMap.class)) + .isNotNull() + .isNotEmpty(); } } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/StebarnsadopsjonDelRegelTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/StebarnsadopsjonDelRegelTest.java index 4fe8948c..4d57c4a0 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/StebarnsadopsjonDelRegelTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/StebarnsadopsjonDelRegelTest.java @@ -10,9 +10,6 @@ import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -29,6 +26,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class StebarnsadopsjonDelRegelTest { @@ -37,10 +35,14 @@ void UT1240_stebarnsadopsjon_far_ikke_omsorg() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); var uttakPeriode = oppgittPeriode(omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2)); - var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode).rettOgOmsorg( - new RettOgOmsorg.Builder().samtykke(true).morHarRett(true).farHarRett(true).harOmsorg(false)) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(uttakPeriode)) - .build(); + var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .samtykke(true) + .morHarRett(true) + .farHarRett(true) + .harOmsorg(false)) + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(uttakPeriode)) + .build(); var regelresultat = kjørRegel(uttakPeriode, grunnlag); assertThat(regelresultat.oppfylt()).isFalse(); @@ -48,7 +50,6 @@ void UT1240_stebarnsadopsjon_far_ikke_omsorg() { assertThat(regelresultat.skalUtbetale()).isFalse(); assertThat(regelresultat.getAvklaringÅrsak()).isEqualTo(IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG); assertThat(regelresultat.getManuellbehandlingårsak()).isNull(); - } private OppgittPeriode oppgittPeriode(LocalDate fom, LocalDate tom) { @@ -60,9 +61,7 @@ void UT1241_stebarnsadopsjon_far_omsorg_disponible_dager_og_ingen_gradering() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); var uttakPeriode = oppgittPeriode(omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2)); - var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode) - - .build(); + var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode).build(); var regelresultat = kjørRegel(uttakPeriode, grunnlag); @@ -76,8 +75,11 @@ void UT1241_stebarnsadopsjon_far_omsorg_disponible_dager_og_ingen_gradering() { @Test void UT1242_stebarnsadopsjon_far_omsorg_disponible_dager_gradering_og_avklart_periode() { var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); - var uttakPeriode = gradertPeriode(Stønadskontotype.FEDREKVOTE, omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2), - Set.of(ARBEIDSFORHOLD_1)); + var uttakPeriode = gradertPeriode( + Stønadskontotype.FEDREKVOTE, + omsorgsovertakelseDato, + omsorgsovertakelseDato.plusWeeks(2), + Set.of(ARBEIDSFORHOLD_1)); var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode).build(); @@ -95,11 +97,14 @@ void UT1242_stebarnsadopsjon_far_omsorg_disponible_dager_gradering_og_avklart_pe var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); var uttakPeriode = oppgittPeriode(omsorgsovertakelseDato, omsorgsovertakelseDato.plusWeeks(2)); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(0)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130)); - var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode).arbeid( - new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))).kontoer(kontoer).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(0)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130)); + var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(uttakPeriode, grunnlag); @@ -115,11 +120,14 @@ void UT1242_stebarnsadopsjon_far_omsorg_disponible_dager_gradering_og_avklart_pe var omsorgsovertakelseDato = LocalDate.of(2019, 1, 8); var uttakPeriode = oppgittPeriode(omsorgsovertakelseDato.minusDays(3), omsorgsovertakelseDato.plusWeeks(2)); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(0)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130)); - var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode).arbeid( - new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))).kontoer(kontoer).build(); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(0)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130)); + var grunnlag = grunnlagFar(omsorgsovertakelseDato, uttakPeriode) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .build(); var regelresultat = kjørRegel(uttakPeriode, grunnlag); @@ -130,18 +138,25 @@ void UT1242_stebarnsadopsjon_far_omsorg_disponible_dager_gradering_og_avklart_pe } private RegelGrunnlag.Builder grunnlagFar(LocalDate familiehendelseDato, OppgittPeriode oppgittPeriode) { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(50)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(50)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(130)); return RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(oppgittPeriode)) - .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelseDato)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .kontoer(kontoer) - .behandling(new Behandling.Builder().søkerErMor(false)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true).samtykke(true)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(oppgittPeriode)) + .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelseDato)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .kontoer(kontoer) + .behandling(new Behandling.Builder().søkerErMor(false)) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(true) + .samtykke(true)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null).stebarnsadopsjon(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/S\303\270knadMottattDatoRegelTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/S\303\270knadMottattDatoRegelTest.java" index 259b7d5d..f2c0047e 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/S\303\270knadMottattDatoRegelTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/S\303\270knadMottattDatoRegelTest.java" @@ -6,9 +6,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -25,6 +22,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UtsettelseÅrsak; +import org.junit.jupiter.api.Test; class SøknadMottattDatoRegelTest { @@ -46,7 +44,8 @@ class SøknadMottattDatoRegelTest { @Test void mottattDatoFørSluttAvFerieBlirInnvilget() { var mottattDato = FAMILIEHENDELSE_DATO.plusWeeks(7); - var søknadsperiode = utsettelsePeriode(mottattDato.minusWeeks(1), mottattDato, UtsettelseÅrsak.FERIE, mottattDato); + var søknadsperiode = + utsettelsePeriode(mottattDato.minusWeeks(1), mottattDato, UtsettelseÅrsak.FERIE, mottattDato); var grunnlag = basicBuilder().søknad(søknad(søknadsperiode)).build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -59,7 +58,8 @@ class SøknadMottattDatoRegelTest { @Test void mottattDatoEtterSluttAvFerieBlirInnvilget() { var mottattDato = FAMILIEHENDELSE_DATO.plusWeeks(7); - var søknadsperiode = utsettelsePeriode(mottattDato.plusDays(1), mottattDato.plusWeeks(1), UtsettelseÅrsak.FERIE, mottattDato); + var søknadsperiode = utsettelsePeriode( + mottattDato.plusDays(1), mottattDato.plusWeeks(1), UtsettelseÅrsak.FERIE, mottattDato); var grunnlag = basicBuilder().søknad(søknad(søknadsperiode)).build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -72,7 +72,8 @@ void mottattDatoEtterSluttAvFerieBlirInnvilget() { @Test void mottattDatoFørSluttAvArbeidBlirInnvilget() { var mottattDato = FAMILIEHENDELSE_DATO.plusWeeks(7); - var søknadsperiode = utsettelsePeriode(mottattDato.minusWeeks(1), mottattDato, UtsettelseÅrsak.ARBEID, mottattDato); + var søknadsperiode = + utsettelsePeriode(mottattDato.minusWeeks(1), mottattDato, UtsettelseÅrsak.ARBEID, mottattDato); var grunnlag = basicBuilder().søknad(søknad(søknadsperiode)).build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -85,7 +86,8 @@ void mottattDatoEtterSluttAvFerieBlirInnvilget() { @Test void mottattDatoEtterSluttAvArbeidBlirInnvilget() { var mottattDato = FAMILIEHENDELSE_DATO.plusWeeks(7); - var søknadsperiode = utsettelsePeriode(mottattDato.plusDays(1), mottattDato.plusWeeks(1), UtsettelseÅrsak.ARBEID, mottattDato); + var søknadsperiode = utsettelsePeriode( + mottattDato.plusDays(1), mottattDato.plusWeeks(1), UtsettelseÅrsak.ARBEID, mottattDato); var grunnlag = basicBuilder().søknad(søknad(søknadsperiode)).build(); var regelresultat = kjørRegel(søknadsperiode, grunnlag); @@ -99,7 +101,8 @@ void mottattDatoEtterSluttAvArbeidBlirInnvilget() { return new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(søknadsperiode); } - private OppgittPeriode utsettelsePeriode(LocalDate fom, LocalDate tom, UtsettelseÅrsak utsettelseÅrsak, LocalDate mottattDato) { + private OppgittPeriode utsettelsePeriode( + LocalDate fom, LocalDate tom, UtsettelseÅrsak utsettelseÅrsak, LocalDate mottattDato) { return OppgittPeriode.forUtsettelse(fom, tom, utsettelseÅrsak, mottattDato, mottattDato, null, null); } @@ -107,17 +110,31 @@ private RegelGrunnlag.Builder basicBuilder() { var aktivitetIdentifikator = AktivitetIdentifikator.forArbeid(new Orgnummer("123"), null); var konto = new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(50); var kontoer = new Kontoer.Builder().konto(konto); - return new RegelGrunnlag.Builder().kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .datoer(new Datoer.Builder().fødsel(FAMILIEHENDELSE_DATO)) - .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) - .behandling(new Behandling.Builder().søkerErMor(true).kreverSammenhengendeUttak(true)) - .inngangsvilkår( - new Inngangsvilkår.Builder().adopsjonOppfylt(true).foreldreansvarnOppfylt(true).fødselOppfylt(true).opptjeningOppfylt(true)); + return new RegelGrunnlag.Builder() + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .datoer(new Datoer.Builder().fødsel(FAMILIEHENDELSE_DATO)) + .rettOgOmsorg(new RettOgOmsorg.Builder().samtykke(true)) + .behandling(new Behandling.Builder().søkerErMor(true).kreverSammenhengendeUttak(true)) + .inngangsvilkår(new Inngangsvilkår.Builder() + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .fødselOppfylt(true) + .opptjeningOppfylt(true)); } private OppgittPeriode gradertoppgittPeriode(LocalDate fom, LocalDate tom, LocalDate mottattDato) { - return OppgittPeriode.forGradering(Stønadskontotype.MØDREKVOTE, fom, tom, BigDecimal.TEN, null, false, - Set.of(AktivitetIdentifikator.forSelvstendigNæringsdrivende()), mottattDato, mottattDato, null, null); + return OppgittPeriode.forGradering( + Stønadskontotype.MØDREKVOTE, + fom, + tom, + BigDecimal.TEN, + null, + false, + Set.of(AktivitetIdentifikator.forSelvstendigNæringsdrivende()), + mottattDato, + mottattDato, + null, + null); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TapendeSakOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TapendeSakOrkestreringTest.java index af2d8b70..40a14dc3 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TapendeSakOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TapendeSakOrkestreringTest.java @@ -10,9 +10,6 @@ import java.time.LocalDate; import java.time.LocalTime; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; @@ -27,6 +24,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UttakPeriode; +import org.junit.jupiter.api.Test; class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @@ -37,63 +35,124 @@ class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void skal_sette_0_trekkdager_når_perioden_avslås_men_annen_forelder_har_innvilget_samme_tidsrom() { /* - Far søker fedrekvote samtidig som mor tar fellesperiode. Far har ikke omsorg i denne perioden og skal få avslag og egentlig trukket dager. - Skal ikke trekke dager siden mor har innvilget i samme tidsrom - */ + Far søker fedrekvote samtidig som mor tar fellesperiode. Far har ikke omsorg i denne perioden og skal få avslag og egentlig trukket dager. + Skal ikke trekke dager siden mor har innvilget i samme tidsrom + */ var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), MOR_ARBEIDSFORHOLD, true)) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1), MOR_ARBEIDSFORHOLD, true)) - .uttaksperiode(annenpartsPeriode(FELLESPERIODE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16), MOR_ARBEIDSFORHOLD, true))) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16)))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + MOR_ARBEIDSFORHOLD, + true)) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1), + MOR_ARBEIDSFORHOLD, + true)) + .uttaksperiode(annenpartsPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(16), + MOR_ARBEIDSFORHOLD, + true))) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16)))); var resultat = fastsettPerioder(grunnlag); var resultatPeriode = resultat.get(0).uttakPeriode(); assertThat(resultatPeriode.getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultatPeriode.getUtbetalingsgrad(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(resultatPeriode.getTrekkdager(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1).decimalValue()).isZero(); + assertThat(resultatPeriode.getUtbetalingsgrad(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultatPeriode + .getTrekkdager(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1) + .decimalValue()) + .isZero(); } @Test void skal_ikke_sette_0_trekkdager_når_perioden_avslås_men_annen_forelder_har_avslått_samme_tidsrom() { var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), MOR_ARBEIDSFORHOLD, true)) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1), MOR_ARBEIDSFORHOLD, true)) - .uttaksperiode(annenpartsPeriode(FELLESPERIODE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16), MOR_ARBEIDSFORHOLD, false))) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett().harOmsorg(false)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16)))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + MOR_ARBEIDSFORHOLD, + true)) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1), + MOR_ARBEIDSFORHOLD, + true)) + .uttaksperiode(annenpartsPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(16), + MOR_ARBEIDSFORHOLD, + false))) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett().harOmsorg(false)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16)))); var resultat = fastsettPerioder(grunnlag); var resultatPeriode = resultat.get(0).uttakPeriode(); assertThat(resultatPeriode.getPerioderesultattype()).isEqualTo(AVSLÅTT); - assertThat(resultatPeriode.getUtbetalingsgrad(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(resultatPeriode.getTrekkdager(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1).decimalValue()).isNotZero(); + assertThat(resultatPeriode.getUtbetalingsgrad(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultatPeriode + .getTrekkdager(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1) + .decimalValue()) + .isNotZero(); } @Test void skal_ikke_tape_hvis_søknad_mottatt_i_etterkant() { var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(10))) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(10)))) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forVanligPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), null, false, - fødselsdato.plusWeeks(13), fødselsdato.plusWeeks(13), null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(10))) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(10)))) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + null, + false, + fødselsdato.plusWeeks(13), + fødselsdato.plusWeeks(13), + null, + null))); var resultat = fastsettPerioder(grunnlag); @@ -104,17 +163,36 @@ class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void skal_tape_hvis_søknad_mottatt_i_forkant() { var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(14))) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(14)))) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forVanligPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), null, false, - fødselsdato.plusWeeks(13), fødselsdato.plusWeeks(13), null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(14))) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(14)))) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + null, + false, + fødselsdato.plusWeeks(13), + fødselsdato.plusWeeks(13), + null, + null))); var resultat = fastsettPerioder(grunnlag); @@ -124,21 +202,40 @@ class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void skal_tape_hvis_mor_søker_etter_far_samme_dag() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(13))) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(13))) - .sisteSøknadMottattTidspunkt(fødselsdato.plusWeeks(13).atTime(LocalTime.of(12, 12, 12)))) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forVanligPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), null, false, - fødselsdato.plusWeeks(13), fødselsdato.plusWeeks(13), null, null)) - .mottattTidspunkt(fødselsdato.plusWeeks(13).atTime(LocalTime.of(10, 10, 10)))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(13))) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(13))) + .sisteSøknadMottattTidspunkt(fødselsdato.plusWeeks(13).atTime(LocalTime.of(12, 12, 12)))) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + null, + false, + fødselsdato.plusWeeks(13), + fødselsdato.plusWeeks(13), + null, + null)) + .mottattTidspunkt(fødselsdato.plusWeeks(13).atTime(LocalTime.of(10, 10, 10)))); var resultat = fastsettPerioder(grunnlag); @@ -148,21 +245,40 @@ class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void skal_ikke_tape_hvis_mor_søker_før_far_samme_dag() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(13))) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(13))) - .sisteSøknadMottattTidspunkt(fødselsdato.plusWeeks(13).atTime(LocalTime.of(10, 10, 10)))) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forVanligPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), null, false, - fødselsdato.plusWeeks(13), fødselsdato.plusWeeks(13), null, null)) - .mottattTidspunkt(fødselsdato.plusWeeks(13).atTime(LocalTime.of(12, 12, 12)))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(13))) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(13))) + .sisteSøknadMottattTidspunkt(fødselsdato.plusWeeks(13).atTime(LocalTime.of(10, 10, 10)))) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + null, + false, + fødselsdato.plusWeeks(13), + fødselsdato.plusWeeks(13), + null, + null)) + .mottattTidspunkt(fødselsdato.plusWeeks(13).atTime(LocalTime.of(12, 12, 12)))); var resultat = fastsettPerioder(grunnlag); @@ -172,19 +288,38 @@ class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void skal_tape_hvis_far_har_søkt_etter_mor_men_det_er_berørt_behandling() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(10))) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(10)))) - .behandling(farBehandling().berørtBehandling(true)) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forVanligPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), null, false, - fødselsdato.plusWeeks(13), fødselsdato.plusWeeks(13), null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(10))) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(10)))) + .behandling(farBehandling().berørtBehandling(true)) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + null, + false, + fødselsdato.plusWeeks(13), + fødselsdato.plusWeeks(13), + null, + null))); var resultat = fastsettPerioder(grunnlag); @@ -194,22 +329,42 @@ class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void skal_evaluere_normal_flyt_dersom_flerbarnsdager_far_har_søkt_etter_mor_berørt_behandling() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(10))) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(10)))) - .behandling(farBehandling().berørtBehandling(true)) - .rettOgOmsorg(beggeRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(5 * 15)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(5 * 16 + 5 * 17)) - .flerbarnsdager(5 * 17)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forVanligPeriode(FELLESPERIODE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), - new SamtidigUttaksprosent(100), true, fødselsdato.plusWeeks(13), fødselsdato.plusWeeks(13), null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(10))) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(10)))) + .behandling(farBehandling().berørtBehandling(true)) + .rettOgOmsorg(beggeRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(5 * 15)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(5 * 16 + 5 * 17)) + .flerbarnsdager(5 * 17)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + new SamtidigUttaksprosent(100), + true, + fødselsdato.plusWeeks(13), + fødselsdato.plusWeeks(13), + null, + null))); var resultat = fastsettPerioder(grunnlag); @@ -218,23 +373,44 @@ class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB } @Test - void skal_evaluere_normal_flyt_dersom_flerbarnsdager_far_har_søkt_etter_mor_berørt_behandling_annen_part_samtidig() { - //Søkt samme dag, men mor har søkt etter far + void + skal_evaluere_normal_flyt_dersom_flerbarnsdager_far_har_søkt_etter_mor_berørt_behandling_annen_part_samtidig() { + // Søkt samme dag, men mor har søkt etter far var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(10))) - .uttaksperiode(annenpartsPeriodeSamtidig(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), MOR_ARBEIDSFORHOLD, true, - fødselsdato.plusWeeks(10)))) - .behandling(farBehandling().berørtBehandling(true)) - .rettOgOmsorg(beggeRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(5 * 15)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(5 * 16 + 5 * 17)) - .flerbarnsdager(5 * 17)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forVanligPeriode(FELLESPERIODE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), null, true, - fødselsdato.plusWeeks(13), fødselsdato.plusWeeks(13), null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(10))) + .uttaksperiode(annenpartsPeriodeSamtidig( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato.plusWeeks(10)))) + .behandling(farBehandling().berørtBehandling(true)) + .rettOgOmsorg(beggeRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(5 * 15)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(5 * 16 + 5 * 17)) + .flerbarnsdager(5 * 17)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + null, + true, + fødselsdato.plusWeeks(13), + fødselsdato.plusWeeks(13), + null, + null))); var resultat = fastsettPerioder(grunnlag); @@ -244,123 +420,180 @@ class TapendeSakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void skal_evaluere_normal_flyt_dersom_far_rundt_fødsel_berørt_med_samtidig() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 10, 3)); var termindato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 10, 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1), MOR_ARBEIDSFORHOLD, true, fødselsdato)) - .uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12), MOR_ARBEIDSFORHOLD, true, fødselsdato))) - .behandling(farBehandling().berørtBehandling(true)) - .rettOgOmsorg(beggeRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(5 * 15)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(5 * 15)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(5 * 16)) - .farUttakRundtFødselDager(10)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(OppgittPeriode.forVanligPeriode(FEDREKVOTE, termindato.minusWeeks(1), termindato.plusWeeks(1).minusDays(1), - new SamtidigUttaksprosent(100), false, fødselsdato, fødselsdato, null, null)) - .oppgittPeriode( - OppgittPeriode.forVanligPeriode(FEDREKVOTE, fødselsdato.plusWeeks(35), fødselsdato.plusWeeks(42).minusDays(1), null, false, - fødselsdato, fødselsdato, null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato)) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato))) + .behandling(farBehandling().berørtBehandling(true)) + .rettOgOmsorg(beggeRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(5 * 15)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(5 * 15)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(5 * 16)) + .farUttakRundtFødselDager(10)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FEDREKVOTE, + termindato.minusWeeks(1), + termindato.plusWeeks(1).minusDays(1), + new SamtidigUttaksprosent(100), + false, + fødselsdato, + fødselsdato, + null, + null)) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(35), + fødselsdato.plusWeeks(42).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + null, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.stream() - .map(FastsettePeriodeResultat::uttakPeriode) - .map(UttakPeriode::getPerioderesultattype) - .allMatch(INNVILGET::equals)).isTrue(); + .map(FastsettePeriodeResultat::uttakPeriode) + .map(UttakPeriode::getPerioderesultattype) + .allMatch(INNVILGET::equals)) + .isTrue(); } @Test void skal_evaluere_normal_flyt_dersom_far_rundt_fødsel_mor_berørt_behandling_annen_part_samtidig() { - //Søkt samme dag, men mor har søkt etter far + // Søkt samme dag, men mor har søkt etter far var fødselsdato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 10, 3)); var termindato = Virkedager.justerHelgTilMandag(LocalDate.of(2022, 10, 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsSamtidigPeriode(FEDREKVOTE, termindato.minusWeeks(1), termindato.plusWeeks(1).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato)) - .uttaksperiode( - annenpartsSamtidigPeriode(FEDREKVOTE, fødselsdato.plusWeeks(41), fødselsdato.plusWeeks(50).minusDays(1), MOR_ARBEIDSFORHOLD, true, - fødselsdato))) - .behandling(morBehandling().berørtBehandling(true)) - .rettOgOmsorg(beggeRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(5 * 15)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(5 * 16)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(5 * 15)) - .farUttakRundtFødselDager(10)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode( - OppgittPeriode.forVanligPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(3), null, false, fødselsdato, - fødselsdato, null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsSamtidigPeriode( + FEDREKVOTE, + termindato.minusWeeks(1), + termindato.plusWeeks(1).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato)) + .uttaksperiode(annenpartsSamtidigPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(41), + fødselsdato.plusWeeks(50).minusDays(1), + MOR_ARBEIDSFORHOLD, + true, + fødselsdato))) + .behandling(morBehandling().berørtBehandling(true)) + .rettOgOmsorg(beggeRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(5 * 15)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(5 * 16)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(5 * 15)) + .farUttakRundtFødselDager(10)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(OppgittPeriode.forVanligPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(3), + null, + false, + fødselsdato, + fødselsdato, + null, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.stream() - .map(FastsettePeriodeResultat::uttakPeriode) - .map(UttakPeriode::getPerioderesultattype) - .allMatch(INNVILGET::equals)).isTrue(); + .map(FastsettePeriodeResultat::uttakPeriode) + .map(UttakPeriode::getPerioderesultattype) + .allMatch(INNVILGET::equals)) + .isTrue(); } - static AnnenpartUttakPeriode annenpartsPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - AktivitetIdentifikator aktivitet, - boolean innvilget) { + static AnnenpartUttakPeriode annenpartsPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + AktivitetIdentifikator aktivitet, + boolean innvilget) { return annenpartsPeriode(stønadskontotype, fom, tom, aktivitet, innvilget, null); } - static AnnenpartUttakPeriode annenpartsPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - AktivitetIdentifikator aktivitet, - boolean innvilget, - LocalDate senestMottattDato) { + static AnnenpartUttakPeriode annenpartsPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + AktivitetIdentifikator aktivitet, + boolean innvilget, + LocalDate senestMottattDato) { return AnnenpartUttakPeriode.Builder.uttak(fom, tom) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(aktivitet, stønadskontotype, new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), - Utbetalingsgrad.TEN)) - .innvilget(innvilget) - .senestMottattDato(senestMottattDato) - .build(); + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + aktivitet, + stønadskontotype, + new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), + Utbetalingsgrad.TEN)) + .innvilget(innvilget) + .senestMottattDato(senestMottattDato) + .build(); } - static AnnenpartUttakPeriode annenpartsSamtidigPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - AktivitetIdentifikator aktivitet, - boolean innvilget, - LocalDate senestMottattDato) { + static AnnenpartUttakPeriode annenpartsSamtidigPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + AktivitetIdentifikator aktivitet, + boolean innvilget, + LocalDate senestMottattDato) { return AnnenpartUttakPeriode.Builder.uttak(fom, tom) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(aktivitet, stønadskontotype, new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), - Utbetalingsgrad.TEN)) - .innvilget(innvilget) - .samtidigUttak(true) - .senestMottattDato(senestMottattDato) - .build(); + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + aktivitet, + stønadskontotype, + new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), + Utbetalingsgrad.TEN)) + .innvilget(innvilget) + .samtidigUttak(true) + .senestMottattDato(senestMottattDato) + .build(); } - static AnnenpartUttakPeriode annenpartsPeriodeSamtidig(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - AktivitetIdentifikator aktivitet, - boolean innvilget, - LocalDate senestMottattDato) { + static AnnenpartUttakPeriode annenpartsPeriodeSamtidig( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + AktivitetIdentifikator aktivitet, + boolean innvilget, + LocalDate senestMottattDato) { return AnnenpartUttakPeriode.Builder.uttak(fom, tom) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(aktivitet, stønadskontotype, new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), - Utbetalingsgrad.TEN)) - .innvilget(innvilget) - .senestMottattDato(senestMottattDato) - .samtidigUttak(true) - .build(); + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + aktivitet, + stønadskontotype, + new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), + Utbetalingsgrad.TEN)) + .innvilget(innvilget) + .senestMottattDato(senestMottattDato) + .samtidigUttak(true) + .build(); } - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ToParterOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ToParterOrkestreringTest.java index b5d1f5d8..abcf3954 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ToParterOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ToParterOrkestreringTest.java @@ -12,9 +12,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; @@ -37,6 +34,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class ToParterOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @@ -49,10 +47,11 @@ class ToParterOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBas private final LocalDate fødselsdato = LocalDate.of(2018, 1, 1); private RegelGrunnlag.Builder leggPåKvoter(RegelGrunnlag.Builder builder) { - var kontoer = new Kontoer.Builder().konto(kvote(FORELDREPENGER_FØR_FØDSEL, UKER_FPFF)) - .konto(kvote(MØDREKVOTE, UKER_MK)) - .konto(kvote(FEDREKVOTE, UKER_FK)) - .konto(kvote(FELLESPERIODE, UKER_FP)); + var kontoer = new Kontoer.Builder() + .konto(kvote(FORELDREPENGER_FØR_FØDSEL, UKER_FPFF)) + .konto(kvote(MØDREKVOTE, UKER_MK)) + .konto(kvote(FEDREKVOTE, UKER_FK)) + .konto(kvote(FELLESPERIODE, UKER_FP)); return builder.kontoer(kontoer); } @@ -60,7 +59,6 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke return new Konto.Builder().type(foreldrepengerFørFødsel).trekkdager(uker * 5); } - @Test void far_har_uttak_og_mor_søker_før_og_etter_fars_uttak() { var fomFarsFP = fødselsdato.plusWeeks(UKER_MK); @@ -70,14 +68,21 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke var tomMorsFPsøknad = fødselsdato.plusWeeks(50); var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP, tomMorsFPsøknad))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP, tomMorsFPsøknad))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(5); @@ -111,14 +116,21 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke var tomMorsFPsøknad = fødselsdato.plusWeeks(50); var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFPorginal, true))) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP, tomMorsFPsøknad))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFPorginal, true))) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP, tomMorsFPsøknad))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(5); @@ -144,29 +156,43 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke } @Test - void når_far_har_uttak_og_gradert_i_ett_arbeidsforhold_ser_mors_tilgjengelige_dager_kun_det_arbeidsforholdet_for_far_med_minst_forbruk() { + void + når_far_har_uttak_og_gradert_i_ett_arbeidsforhold_ser_mors_tilgjengelige_dager_kun_det_arbeidsforholdet_for_far_med_minst_forbruk() { var fomFarsFP = fødselsdato.plusWeeks(UKER_MK); var tomFarsFP = fødselsdato.plusWeeks(UKER_MK + UKER_FP / 2).minusDays(1); var fomMorsFP = fødselsdato.plusWeeks(UKER_MK + UKER_FP / 2); - var tomMorsFP = fødselsdato.plusWeeks(UKER_MK + UKER_FP + 7).minusDays(1); //7 ekstra uker pga fars gradering + var tomMorsFP = fødselsdato.plusWeeks(UKER_MK + UKER_FP + 7).minusDays(1); // 7 ekstra uker pga fars gradering var tomMorsFPsøknad = fødselsdato.plusWeeks(50); var farArbeidsforhold2 = RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_3; var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fomFarsFP, tomFarsFP) - .samtidigUttak(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(FAR_ARBEIDSFORHOLD, FELLESPERIODE, - new Trekkdager(Virkedager.beregnAntallVirkedager(fomFarsFP, tomFarsFP)), Utbetalingsgrad.TEN)) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(farArbeidsforhold2, FELLESPERIODE, new Trekkdager(5), new Utbetalingsgrad(87.5))) - .build())) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP, tomMorsFPsøknad))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fomFarsFP, tomFarsFP) + .samtidigUttak(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + FAR_ARBEIDSFORHOLD, + FELLESPERIODE, + new Trekkdager(Virkedager.beregnAntallVirkedager(fomFarsFP, tomFarsFP)), + Utbetalingsgrad.TEN)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + farArbeidsforhold2, + FELLESPERIODE, + new Trekkdager(5), + new Utbetalingsgrad(87.5))) + .build())) + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP, tomMorsFPsøknad))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(5); @@ -198,23 +224,30 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke var fomMorsFP1 = fødselsdato.plusWeeks(UKER_MK); var tomMorsFP1 = fødselsdato.plusWeeks(UKER_MK).plusWeeks(2).minusDays(1); var fomMorsFP2 = fødselsdato.plusWeeks(UKER_MK).plusWeeks(2); - var tomMorsFP2 = fødselsdato.plusWeeks(UKER_MK).plusWeeks(UKER_FP).minusWeeks(4).plusWeeks(1); - + var tomMorsFP2 = + fødselsdato.plusWeeks(UKER_MK).plusWeeks(UKER_FP).minusWeeks(4).plusWeeks(1); var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP1, tomMorsFP1)) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP2, tomMorsFP2))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP1, tomMorsFP1)) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP2, tomMorsFP2))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(8); - //skal gå tom for dager + // skal gå tom for dager assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); @@ -223,7 +256,8 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke assertThat(resultat.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(6).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(7).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(7).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(resultat.get(7).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); } @Test @@ -235,17 +269,23 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke var fomMorsFP2 = fødselsdato.plusWeeks(UKER_MK).plusWeeks(6); var tomMorsFP2 = fødselsdato.plusWeeks(UKER_MK).plusWeeks(8).minusDays(1); - var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP1, tomMorsFP1)) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP2, tomMorsFP2))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP1, tomMorsFP1)) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP2, tomMorsFP2))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(5); @@ -259,19 +299,34 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke @Test void skalHåndtereAnnenPartPeriodeOverlapperMedFlereSøknadsperioder_medSamtidigUttak() { var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - lagPeriodeForFar(FELLESPERIODE, fødselsdato.plusWeeks(UKER_MK), fødselsdato.plusWeeks(UKER_MK).plusWeeks(20).minusDays(1), true))) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(UKER_MK).plusWeeks(2), - fødselsdato.plusWeeks(UKER_MK).plusWeeks(3).minusDays(1))) - //Når denne perioden skal inn i reglene skal er det igjen 6 uke på fellesperioden - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(UKER_MK).plusWeeks(6), - fødselsdato.plusWeeks(UKER_MK).plusWeeks(17).minusDays(1)))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(lagPeriodeForFar( + FELLESPERIODE, + fødselsdato.plusWeeks(UKER_MK), + fødselsdato.plusWeeks(UKER_MK).plusWeeks(20).minusDays(1), + true))) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(UKER_MK).plusWeeks(2), + fødselsdato.plusWeeks(UKER_MK).plusWeeks(3).minusDays(1))) + // Når denne perioden skal inn i reglene skal er det igjen 6 uke på + // fellesperioden + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(UKER_MK).plusWeeks(6), + fødselsdato.plusWeeks(UKER_MK).plusWeeks(17).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(6); @@ -280,26 +335,41 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //Tom for dager + // Tom for dager assertThat(resultat.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); } @Test void skalHåndtereAnnenPartPeriodeOverlapperMedFlereSøknadsperioder_utenSamtidigUttak() { var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - lagPeriodeForFar(FELLESPERIODE, fødselsdato.plusWeeks(UKER_MK), fødselsdato.plusWeeks(UKER_MK).plusWeeks(20).minusDays(1), false))) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(UKER_MK).plusWeeks(2), - fødselsdato.plusWeeks(UKER_MK).plusWeeks(3).minusDays(1))) - //Når denne perioden skal inn i reglene skal er det igjen 6 uke på fellesperioden - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(UKER_MK).plusWeeks(6), - fødselsdato.plusWeeks(UKER_MK).plusWeeks(17).minusDays(1)))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(lagPeriodeForFar( + FELLESPERIODE, + fødselsdato.plusWeeks(UKER_MK), + fødselsdato.plusWeeks(UKER_MK).plusWeeks(20).minusDays(1), + false))) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(UKER_MK).plusWeeks(2), + fødselsdato.plusWeeks(UKER_MK).plusWeeks(3).minusDays(1))) + // Når denne perioden skal inn i reglene skal er det igjen 6 uke på + // fellesperioden + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(UKER_MK).plusWeeks(6), + fødselsdato.plusWeeks(UKER_MK).plusWeeks(17).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(6); @@ -308,7 +378,7 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //Tom for dager + // Tom for dager assertThat(resultat.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); } @@ -319,16 +389,22 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke var fomMorsFP1 = fødselsdato.plusWeeks(UKER_MK); var tomMorsFP1 = fødselsdato.plusWeeks(UKER_MK).plusWeeks(10).minusDays(1); - var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP1, tomMorsFP1))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP1, tomMorsFP1))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); @@ -346,24 +422,32 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke var tomMorsFP1 = fødselsdato.plusWeeks(UKER_MK).plusWeeks(6).minusDays(1); var grunnlag = RegelGrunnlagTestBuilder.create(); - leggPåKvoter(grunnlag).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) - .behandling(new Behandling.Builder().søkerErMor(true).berørtBehandling(true)) - .revurdering(new Revurdering.Builder()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(UKER_MK).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP1, tomMorsFP1))); + leggPåKvoter(grunnlag) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(lagPeriodeForFar(FELLESPERIODE, fomFarsFP, tomFarsFP, true))) + .behandling(new Behandling.Builder().søkerErMor(true).berørtBehandling(true)) + .revurdering(new Revurdering.Builder()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(UKER_FPFF), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(UKER_MK).minusDays(1))) + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fomMorsFP1, tomMorsFP1))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //skal gå tom for dager + // skal gå tom for dager assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); } @Test @@ -371,53 +455,77 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke var fødselsdato = LocalDate.of(2019, 9, 25); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(FAR_ARBEIDSFORHOLD))) - .kontoer(kontoer) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartPeriodeInnvilget(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), MØDREKVOTE, new Trekkdager(30))) - .uttaksperiode( - annenpartPeriodeOpphold(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER))) - .behandling(farBehandling().kreverSammenhengendeUttak(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(23).minusDays(1)))); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(FAR_ARBEIDSFORHOLD))) + .kontoer(kontoer) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartPeriodeInnvilget( + fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), MØDREKVOTE, new Trekkdager(30))) + .uttaksperiode(annenpartPeriodeOpphold( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER))) + .behandling(farBehandling().kreverSammenhengendeUttak(true)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(23).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - //skal gå tom for dager + // skal gå tom for dager assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(resultat.get(1).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); + assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(resultat.get(1).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); } @Test void skal_ikke_trekke_for_opphold_i_berørt_behandling_hvis_søker_har_søkt_i_perioden() { var fødselsdato = LocalDate.of(2019, 9, 25); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); var grunnlag = RegelGrunnlagTestBuilder.create() - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(FAR_ARBEIDSFORHOLD))) - .kontoer(kontoer) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartPeriodeInnvilget(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), FEDREKVOTE, new Trekkdager(20))) - .uttaksperiode(annenpartPeriodeOpphold(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(19).minusDays(1), - OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER))) - .behandling(new Behandling.Builder().søkerErMor(true).berørtBehandling(true)) - .revurdering(new Revurdering.Builder().endringsdato(fødselsdato.plusWeeks(10))) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(19).minusDays(1)))); + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(FAR_ARBEIDSFORHOLD))) + .kontoer(kontoer) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartPeriodeInnvilget( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + FEDREKVOTE, + new Trekkdager(20))) + .uttaksperiode(annenpartPeriodeOpphold( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(19).minusDays(1), + OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER))) + .behandling(new Behandling.Builder().søkerErMor(true).berørtBehandling(true)) + .revurdering(new Revurdering.Builder().endringsdato(fødselsdato.plusWeeks(10))) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(19).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - //skal gå tom for dager + // skal gå tom for dager assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); } @@ -426,137 +534,235 @@ private Konto.Builder kvote(Stønadskontotype foreldrepengerFørFødsel, int uke void skal_trekke_for_overlappende_avslått_hos_annenpart_i_berørt_behandling() { var fødselsdato = LocalDate.of(2019, 9, 25); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); var grunnlag = RegelGrunnlagTestBuilder.create() - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(FAR_ARBEIDSFORHOLD))) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)) - .innvilget(false) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(80), Utbetalingsgrad.ZERO)) - .build())) - .behandling(new Behandling.Builder().søkerErMor(true).berørtBehandling(true)) - .revurdering(new Revurdering.Builder().endringsdato(fødselsdato)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)))); + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(FAR_ARBEIDSFORHOLD))) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1)) + .innvilget(false) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(80), Utbetalingsgrad.ZERO)) + .build())) + .behandling(new Behandling.Builder().søkerErMor(true).berørtBehandling(true)) + .revurdering(new Revurdering.Builder().endringsdato(fødselsdato)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - //skal gå tom for dager + // skal gå tom for dager assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //tom på dager - assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(resultat.get(1).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); + // tom på dager + assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(resultat.get(1).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); } @Test void skal_ikke_trekke_for_opphold_hvis_søker_har_søkt_i_perioden() { var fødselsdato = LocalDate.of(2019, 9, 25); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) - .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); - var søknad = new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(21).minusDays(1), MORS_AKTIVITET_GODKJENT)) - .oppgittPeriode( - oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(21), fødselsdato.plusWeeks(22).minusDays(1), MORS_AKTIVITET_GODKJENT)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FEDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(MØDREKVOTE).trekkdager(75)) + .konto(new Konto.Builder().type(FELLESPERIODE).trekkdager(80)); + var søknad = new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(21).minusDays(1), + MORS_AKTIVITET_GODKJENT)) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(21), + fødselsdato.plusWeeks(22).minusDays(1), + MORS_AKTIVITET_GODKJENT)); var grunnlag = RegelGrunnlagTestBuilder.create() - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(FAR_ARBEIDSFORHOLD))) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartPeriodeInnvilget(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), MØDREKVOTE, new Trekkdager(30))) - .uttaksperiode( - annenpartPeriodeOpphold(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(21).minusDays(1), OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER)) - .uttaksperiode( - annenpartPeriodeInnvilget(fødselsdato.plusWeeks(21), fødselsdato.plusWeeks(30).minusDays(1), MØDREKVOTE, new Trekkdager(45)))) - .behandling(farBehandling()) - .søknad(søknad); + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(FAR_ARBEIDSFORHOLD))) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartPeriodeInnvilget( + fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), MØDREKVOTE, new Trekkdager(30))) + .uttaksperiode(annenpartPeriodeOpphold( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(21).minusDays(1), + OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER)) + .uttaksperiode(annenpartPeriodeInnvilget( + fødselsdato.plusWeeks(21), + fødselsdato.plusWeeks(30).minusDays(1), + MØDREKVOTE, + new Trekkdager(45)))) + .behandling(farBehandling()) + .søknad(søknad); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - //skal gå tom for dager + // skal gå tom for dager assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); } @Test void oppholdsperioder_som_overlapper_med_annenpart_skal_fjernes() { var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), forFrilans(), true)) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1), forFrilans(), true)) - .uttaksperiode(annenpartsPeriode(FELLESPERIODE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(17), forFrilans(), true))) - .behandling(farBehandling().kreverSammenhengendeUttak(true)) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(14), fødselsdato.plusWeeks(15).minusDays(1))) - .oppgittPeriode(OppgittPeriode.forOpphold(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16).minusDays(1), - OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER, null, null)) - .oppgittPeriode( - OppgittPeriode.forOpphold(fødselsdato.plusWeeks(16), fødselsdato.plusWeeks(20), OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER, null, - null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + forFrilans(), + true)) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1), + forFrilans(), + true)) + .uttaksperiode(annenpartsPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(17), + forFrilans(), + true))) + .behandling(farBehandling().kreverSammenhengendeUttak(true)) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(14), + fødselsdato.plusWeeks(15).minusDays(1))) + .oppgittPeriode(OppgittPeriode.forOpphold( + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(16).minusDays(1), + OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER, + null, + null)) + .oppgittPeriode(OppgittPeriode.forOpphold( + fødselsdato.plusWeeks(16), + fødselsdato.plusWeeks(20), + OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER, + null, + null))); var resultat = fastsettPerioder(grunnlag); - //Skal ligge igjen opphold på slutten som ikke overlapper med annenpart, alt som overlapper skal fjernes + // Skal ligge igjen opphold på slutten som ikke overlapper med annenpart, alt som overlapper + // skal fjernes assertThat(resultat).hasSize(2); assertThat(resultat.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FEDREKVOTE); - assertThat(resultat.get(1).uttakPeriode().getOppholdÅrsak()).isEqualTo(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER); - assertThat(resultat.get(1).uttakPeriode().getFom()).isEqualTo(fødselsdato.plusWeeks(17).plusDays(1)); + assertThat(resultat.get(1).uttakPeriode().getOppholdÅrsak()) + .isEqualTo(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER); + assertThat(resultat.get(1).uttakPeriode().getFom()) + .isEqualTo(fødselsdato.plusWeeks(17).plusDays(1)); assertThat(resultat.get(1).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(20)); } @Test void oppholdsperioder_som_overlapper_med_annenpart_uten_trekkdager_skal_ikke_fjernes() { - var annenpartAktivitet = new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, Trekkdager.ZERO, Utbetalingsgrad.ZERO); - var annenpartPeriodeUtenTrekkdager = AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16)) - .innvilget(false) - .uttakPeriodeAktivitet(annenpartAktivitet) - .build(); + var annenpartAktivitet = + new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, Trekkdager.ZERO, Utbetalingsgrad.ZERO); + var annenpartPeriodeUtenTrekkdager = AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16)) + .innvilget(false) + .uttakPeriodeAktivitet(annenpartAktivitet) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), forFrilans(), true)) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1), forFrilans(), true)) - .uttaksperiode(annenpartPeriodeUtenTrekkdager)) - .behandling(farBehandling().kreverSammenhengendeUttak(true)) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(14), fødselsdato.plusWeeks(15).minusDays(1))) - .oppgittPeriode(OppgittPeriode.forOpphold(annenpartPeriodeUtenTrekkdager.getFom(), annenpartPeriodeUtenTrekkdager.getTom(), - OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER, null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + forFrilans(), + true)) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1), + forFrilans(), + true)) + .uttaksperiode(annenpartPeriodeUtenTrekkdager)) + .behandling(farBehandling().kreverSammenhengendeUttak(true)) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(14), + fødselsdato.plusWeeks(15).minusDays(1))) + .oppgittPeriode(OppgittPeriode.forOpphold( + annenpartPeriodeUtenTrekkdager.getFom(), + annenpartPeriodeUtenTrekkdager.getTom(), + OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER, + null, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FEDREKVOTE); - assertThat(resultat.get(1).uttakPeriode().getOppholdÅrsak()).isEqualTo(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER); + assertThat(resultat.get(1).uttakPeriode().getOppholdÅrsak()) + .isEqualTo(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER); } @Test void oppholdsperioder_som_overlapper_med_annenpart_innvilget_utsettelse_skal_fjernes() { - var annenpartAktivitet = new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, Trekkdager.ZERO, Utbetalingsgrad.ZERO); - var annenpartPeriodeUtsettelse = AnnenpartUttakPeriode.Builder.utsettelse(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16)) - .innvilget(true) - .uttakPeriodeAktivitet(annenpartAktivitet) - .build(); + var annenpartAktivitet = + new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, Trekkdager.ZERO, Utbetalingsgrad.ZERO); + var annenpartPeriodeUtsettelse = AnnenpartUttakPeriode.Builder.utsettelse( + fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(16)) + .innvilget(true) + .uttakPeriodeAktivitet(annenpartAktivitet) + .build(); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), forFrilans(), true)) - .uttaksperiode(annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1), forFrilans(), true)) - .uttaksperiode(annenpartPeriodeUtsettelse)) - .behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(14), fødselsdato.plusWeeks(15).minusDays(1))) - .oppgittPeriode(OppgittPeriode.forOpphold(annenpartPeriodeUtsettelse.getFom(), annenpartPeriodeUtsettelse.getTom(), - OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER, null, null))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + FORELDREPENGER_FØR_FØDSEL, + fødselsdato.minusWeeks(3), + fødselsdato.minusDays(1), + forFrilans(), + true)) + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1), + forFrilans(), + true)) + .uttaksperiode(annenpartPeriodeUtsettelse)) + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(14), + fødselsdato.plusWeeks(15).minusDays(1))) + .oppgittPeriode(OppgittPeriode.forOpphold( + annenpartPeriodeUtsettelse.getFom(), + annenpartPeriodeUtsettelse.getTom(), + OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER, + null, + null))); var resultat = fastsettPerioder(grunnlag); @@ -564,19 +770,30 @@ void oppholdsperioder_som_overlapper_med_annenpart_innvilget_utsettelse_skal_fje assertThat(resultat.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FEDREKVOTE); } - //FAGSYSTEM-85385 + // FAGSYSTEM-85385 @Test void berørt_behandling_som_har_annenpart_med_overlappende_oppholdsperiode_skal_ikke_tape_perioden() { var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - annenpartsPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(15).minusDays(1), forFrilans(), true)) - .uttaksperiode(annenpartPeriodeOpphold(fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(30).minusDays(1), - OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER))) - .behandling(farBehandling().berørtBehandling(true)) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(30).minusDays(1)))); + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartsPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(15).minusDays(1), + forFrilans(), + true)) + .uttaksperiode(annenpartPeriodeOpphold( + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(30).minusDays(1), + OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER))) + .behandling(farBehandling().berørtBehandling(true)) + .rettOgOmsorg(beggeRett()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(15), + fødselsdato.plusWeeks(30).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); @@ -587,275 +804,422 @@ void oppholdsperioder_som_overlapper_med_annenpart_innvilget_utsettelse_skal_fje @Test void samtidig_uttak_automatiseres_i_berørt_hvis_samlet_lik_100_prosent_uttak() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(40))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(60)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(40))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(60)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(60)); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(new Utbetalingsgrad(60)); } @Test void samtidig_uttak_automatiseres_i_berørt_hvis_samlet_under_100_prosent_uttak() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(30))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(30)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(30))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(30)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(30)); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(new Utbetalingsgrad(30)); } @Test void samtidig_uttak_til_manuell_i_berørt_hvis_samlet_over_100_prosent_uttak_ene_over_80_prosent() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(85))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(70)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(85))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(70)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(resultat.get(1).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.VURDER_SAMTIDIG_UTTAK); + assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(resultat.get(1).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.VURDER_SAMTIDIG_UTTAK); } @Test void samtidig_uttak_automatisk_reduksjon_i_berørt_hvis_samlet_over_100_prosent_uttak() { var forventetRedusertTil = 40; var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(60))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(70)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(60))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(70)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getSamtidigUttaksprosent()).isEqualTo(new SamtidigUttaksprosent(forventetRedusertTil)); - assertThat(resultat.get(1).uttakPeriode().getAktiviteter().stream().findFirst().orElseThrow().getUtbetalingsgrad()).isEqualTo( - new Utbetalingsgrad(forventetRedusertTil)); + assertThat(resultat.get(1).uttakPeriode().getSamtidigUttaksprosent()) + .isEqualTo(new SamtidigUttaksprosent(forventetRedusertTil)); + assertThat(resultat.get(1).uttakPeriode().getAktiviteter().stream() + .findFirst() + .orElseThrow() + .getUtbetalingsgrad()) + .isEqualTo(new Utbetalingsgrad(forventetRedusertTil)); } @Test void samtidig_uttak_automatiseres_i_berørt_hvis_samlet_lik_150_prosent_uttak() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(5), new Utbetalingsgrad(50))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(100)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(5), new Utbetalingsgrad(50))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(100)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(100)); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(new Utbetalingsgrad(100)); } @Test void samtidig_uttak_automatiseres_i_berørt_hvis_samlet_lik_150_prosent_uttak_byttom() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(100))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(50)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(100))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(50)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(50)); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(new Utbetalingsgrad(50)); } @Test void samtidig_uttak_automatiseres_i_berørt_hvis_samlet_under_150_prosent_uttak() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(30))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(30)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(30))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(30)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(30)); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(new Utbetalingsgrad(30)); } @Test void samtidig_uttak_til_manuell_i_berørt_hvis_samlet_over_150_prosent_uttak() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FELLESPERIODE, new Trekkdager(5), new Utbetalingsgrad(60))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(70)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FELLESPERIODE, new Trekkdager(5), new Utbetalingsgrad(60))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(70)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); } @Test void samtidig_uttak_til_manuell_i_berørt_hvis_samlet_over_150_prosent_uttak_byttom() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(60))) - .innvilget(true) - .samtidigUttak(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), false, new SamtidigUttaksprosent(70)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(60))) + .innvilget(true) + .samtidigUttak(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + false, + new SamtidigUttaksprosent(70)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); } @Test void skal_gi_riktig_saldo_for_flerbarnsdager() { var fh = LocalDate.of(2022, 4, 1); - var annenpartUttakPeriode1 = AnnenpartUttakPeriode.Builder.uttak(fh, fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), MØDREKVOTE, new Trekkdager(30), Utbetalingsgrad.HUNDRED)) - .innvilget(true) - .build(); - var annenpartUttakPeriode2 = AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(9), fh.plusWeeks(10).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) - .innvilget(true) - .flerbarnsdager(true) - .samtidigUttak(true) - .build(); - var annenpartUttakPeriode3 = AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(10), fh.plusWeeks(11).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) - .innvilget(true) - .flerbarnsdager(true) - .samtidigUttak(false) - .build(); - var annenpartUttakPeriode4 = AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(11), fh.plusWeeks(12).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) - .innvilget(true) - .flerbarnsdager(false) - .samtidigUttak(false) - .build(); - var grunnlag = basicGrunnlagFar(fh).annenPart(new AnnenPart.Builder().uttaksperiode(annenpartUttakPeriode1) - .uttaksperiode(annenpartUttakPeriode2) - .uttaksperiode(annenpartUttakPeriode3) - .uttaksperiode(annenpartUttakPeriode4)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode( - oppgittPeriode(FEDREKVOTE, fh.plusWeeks(8), fh.plusWeeks(17).minusDays(1), true, new SamtidigUttaksprosent(100)))) - .kontoer(new Kontoer.Builder().flerbarnsdager(40) - .konto(konto(MØDREKVOTE, 100)) - .konto(konto(FELLESPERIODE, 100)) - .konto(konto(FEDREKVOTE, 100))); + var annenpartUttakPeriode1 = AnnenpartUttakPeriode.Builder.uttak( + fh, fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), MØDREKVOTE, new Trekkdager(30), Utbetalingsgrad.HUNDRED)) + .innvilget(true) + .build(); + var annenpartUttakPeriode2 = AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(9), fh.plusWeeks(10).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) + .innvilget(true) + .flerbarnsdager(true) + .samtidigUttak(true) + .build(); + var annenpartUttakPeriode3 = AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(10), fh.plusWeeks(11).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) + .innvilget(true) + .flerbarnsdager(true) + .samtidigUttak(false) + .build(); + var annenpartUttakPeriode4 = AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(11), fh.plusWeeks(12).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) + .innvilget(true) + .flerbarnsdager(false) + .samtidigUttak(false) + .build(); + var grunnlag = basicGrunnlagFar(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartUttakPeriode1) + .uttaksperiode(annenpartUttakPeriode2) + .uttaksperiode(annenpartUttakPeriode3) + .uttaksperiode(annenpartUttakPeriode4)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fh.plusWeeks(8), + fh.plusWeeks(17).minusDays(1), + true, + new SamtidigUttaksprosent(100)))) + .kontoer(new Kontoer.Builder() + .flerbarnsdager(40) + .konto(konto(MØDREKVOTE, 100)) + .konto(konto(FELLESPERIODE, 100)) + .konto(konto(FEDREKVOTE, 100))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(6); - //Siste periode knekkes og siste 5 dagene går til manuell pga tom for flerbarnsdager - assertThat(resultat.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(resultat.get(5).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(resultat.get(5).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); - //5 dager over flerbarns-kvoten. Dette er pga vi ikke skal dobbelt trekke flerbarnsdager i perioder der begge har oppgitt flerbarnsdager + // Siste periode knekkes og siste 5 dagene går til manuell pga tom for flerbarnsdager + assertThat(resultat.get(5).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(resultat.get(5).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(resultat.get(5).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); + // 5 dager over flerbarns-kvoten. Dette er pga vi ikke skal dobbelt trekke flerbarnsdager i + // perioder der begge har oppgitt flerbarnsdager assertThat(resultat.get(5).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); } @Test void skal_ikke_trekke_dobbelt_flerbarnsdager_når_begge_foreldre_oppgir_flerbarnsdager() { var fh = LocalDate.of(2022, 4, 1); - var annenpartUttakPeriode1 = AnnenpartUttakPeriode.Builder.uttak(fh, fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), MØDREKVOTE, new Trekkdager(30), Utbetalingsgrad.HUNDRED)) - .innvilget(true) - .build(); - var annenpartUttakPeriode2 = AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(9), fh.plusWeeks(10).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) - .innvilget(true) - .flerbarnsdager(true) - .samtidigUttak(false) - .build(); - var grunnlag = basicGrunnlagFar(fh).annenPart( - new AnnenPart.Builder().uttaksperiode(annenpartUttakPeriode1).uttaksperiode(annenpartUttakPeriode2)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode( - oppgittPeriode(FEDREKVOTE, fh.plusWeeks(8), fh.plusWeeks(15).minusDays(1), true, new SamtidigUttaksprosent(100)))) - .kontoer(new Kontoer.Builder().flerbarnsdager(34) - .konto(konto(MØDREKVOTE, 100)) - .konto(konto(FELLESPERIODE, 100)) - .konto(konto(FEDREKVOTE, 100))); + var annenpartUttakPeriode1 = AnnenpartUttakPeriode.Builder.uttak( + fh, fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), MØDREKVOTE, new Trekkdager(30), Utbetalingsgrad.HUNDRED)) + .innvilget(true) + .build(); + var annenpartUttakPeriode2 = AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(9), fh.plusWeeks(10).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), MØDREKVOTE, new Trekkdager(5), Utbetalingsgrad.HUNDRED)) + .innvilget(true) + .flerbarnsdager(true) + .samtidigUttak(false) + .build(); + var grunnlag = basicGrunnlagFar(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartUttakPeriode1) + .uttaksperiode(annenpartUttakPeriode2)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fh.plusWeeks(8), + fh.plusWeeks(15).minusDays(1), + true, + new SamtidigUttaksprosent(100)))) + .kontoer(new Kontoer.Builder() + .flerbarnsdager(34) + .konto(konto(MØDREKVOTE, 100)) + .konto(konto(FELLESPERIODE, 100)) + .konto(konto(FEDREKVOTE, 100))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //Siste periode knekkes og siste 1 dagene går til manuell pga tom for flerbarnsdager - assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); - assertThat(resultat.get(3).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); + // Siste periode knekkes og siste 1 dagene går til manuell pga tom for flerbarnsdager + assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN); + assertThat(resultat.get(3).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.STØNADSKONTO_TOM); assertThat(resultat.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); } @Test void overlappende_gradering_avslås_i_berørt_selv_om_samlet_under_100_prosent_uttak() { var fh = LocalDate.of(2022, 4, 1); - var grunnlag = basicGrunnlagMor(fh).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(30))) - .innvilget(true) - .build())) - .behandling(morBehandling().berørtBehandling(true)) - .søknad(søknad(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) - .oppgittPeriode(gradertoppgittPeriode(MØDREKVOTE, fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1), BigDecimal.valueOf(30), - Set.of(ARBEIDSFORHOLD)))); + var grunnlag = basicGrunnlagMor(fh) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fh.plusWeeks(6), fh.plusWeeks(7).minusDays(1)) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), FEDREKVOTE, new Trekkdager(5), new Utbetalingsgrad(30))) + .innvilget(true) + .build())) + .behandling(morBehandling().berørtBehandling(true)) + .søknad(søknad(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, fh, fh.plusWeeks(6).minusDays(1))) + .oppgittPeriode(gradertoppgittPeriode( + MØDREKVOTE, + fh.plusWeeks(6), + fh.plusWeeks(7).minusDays(1), + BigDecimal.valueOf(30), + Set.of(ARBEIDSFORHOLD)))); var resultat = fastsettPerioder(grunnlag); @@ -864,31 +1228,42 @@ void skal_gi_riktig_saldo_for_flerbarnsdager() { } private AnnenpartUttakPeriode annenpartPeriodeOpphold(LocalDate fom, LocalDate tom, OppholdÅrsak oppholdÅrsak) { - return AnnenpartUttakPeriode.Builder.opphold(fom, tom, oppholdÅrsak).innvilget(true).build(); + return AnnenpartUttakPeriode.Builder.opphold(fom, tom, oppholdÅrsak) + .innvilget(true) + .build(); } - private AnnenpartUttakPeriode annenpartPeriodeInnvilget(LocalDate fom, LocalDate tom, Stønadskontotype stønadskontotype, Trekkdager trekkdager) { + private AnnenpartUttakPeriode annenpartPeriodeInnvilget( + LocalDate fom, LocalDate tom, Stønadskontotype stønadskontotype, Trekkdager trekkdager) { return AnnenpartUttakPeriode.Builder.uttak(fom, tom) - .innvilget(true) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(forFrilans(), stønadskontotype, trekkdager, Utbetalingsgrad.HUNDRED)) - .build(); + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + forFrilans(), stønadskontotype, trekkdager, Utbetalingsgrad.HUNDRED)) + .build(); } - private AnnenpartUttakPeriode lagPeriodeForFar(Stønadskontotype stønadskontotype, LocalDate fom, LocalDate tom, boolean samtidigUttak) { - return lagPeriode(stønadskontotype, fom, tom, FAR_ARBEIDSFORHOLD, new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), samtidigUttak); + private AnnenpartUttakPeriode lagPeriodeForFar( + Stønadskontotype stønadskontotype, LocalDate fom, LocalDate tom, boolean samtidigUttak) { + return lagPeriode( + stønadskontotype, + fom, + tom, + FAR_ARBEIDSFORHOLD, + new Trekkdager(Virkedager.beregnAntallVirkedager(fom, tom)), + samtidigUttak); } - private AnnenpartUttakPeriode lagPeriode(Stønadskontotype stønadskontotype, - LocalDate fom, - LocalDate tom, - AktivitetIdentifikator aktivitet, - Trekkdager trekkdager, - boolean samtidigUttak) { + private AnnenpartUttakPeriode lagPeriode( + Stønadskontotype stønadskontotype, + LocalDate fom, + LocalDate tom, + AktivitetIdentifikator aktivitet, + Trekkdager trekkdager, + boolean samtidigUttak) { return AnnenpartUttakPeriode.Builder.uttak(fom, tom) - .samtidigUttak(samtidigUttak) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(aktivitet, stønadskontotype, trekkdager, Utbetalingsgrad.TEN)) - .build(); + .samtidigUttak(samtidigUttak) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + aktivitet, stønadskontotype, trekkdager, Utbetalingsgrad.TEN)) + .build(); } - - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtilTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtilTest.java index 283beb04..b6ddf9b9 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtilTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtilTest.java @@ -5,12 +5,10 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; +import org.junit.jupiter.api.Test; class TrekkdagerUtregningUtilTest { @@ -19,10 +17,20 @@ void skal_runde_ned_ved_gradering() { var fom = LocalDate.of(2019, 3, 14); var tom = LocalDate.of(2019, 3, 15); - //periode på 2 dager, 1% gradering + // periode på 2 dager, 1% gradering var arbeidstidsprosent = BigDecimal.valueOf(1); - var periode = OppgittPeriode.forGradering(Stønadskontotype.FORELDREPENGER, fom, tom, arbeidstidsprosent, null, false, Set.of(), null, null, - null, null); + var periode = OppgittPeriode.forGradering( + Stønadskontotype.FORELDREPENGER, + fom, + tom, + arbeidstidsprosent, + null, + false, + Set.of(), + null, + null, + null, + null); var trekkdager = TrekkdagerUtregningUtil.trekkdagerFor(periode, true, arbeidstidsprosent, null); assertThat(trekkdager).isEqualTo(new Trekkdager(1.9)); @@ -31,13 +39,13 @@ void skal_runde_ned_ved_gradering() { @Test void skal_redusere_trekkdager_ved_samtidig_uttak_uten_gradering() { - //10 virkdager + // 10 virkdager var fom = LocalDate.of(2019, 4, 1); var tom = LocalDate.of(2019, 4, 12); var samtidigUttaksprosent = new SamtidigUttaksprosent(50); - var periode = OppgittPeriode.forVanligPeriode(Stønadskontotype.FORELDREPENGER, fom, tom, samtidigUttaksprosent, false, null, null, null, - null); + var periode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.FORELDREPENGER, fom, tom, samtidigUttaksprosent, false, null, null, null, null); var trekkdager = TrekkdagerUtregningUtil.trekkdagerFor(periode, false, null, samtidigUttaksprosent); assertThat(trekkdager).isEqualTo(new Trekkdager(5)); diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradMedGraderingUtregningTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradMedGraderingUtregningTest.java index 92b528df..ce1c726f 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradMedGraderingUtregningTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradMedGraderingUtregningTest.java @@ -5,14 +5,12 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; +import org.junit.jupiter.api.Test; class UtbetalingsgradMedGraderingUtregningTest { @@ -22,8 +20,18 @@ void toArbeidsforholdMedEnGradertGirRedusertUtbetalingsgrad() { var aktivitet2 = AktivitetIdentifikator.forFrilans(); var arbeidstidsprosent = BigDecimal.valueOf(20); - var periode = OppgittPeriode.forGradering(Stønadskontotype.FEDREKVOTE, LocalDate.now(), LocalDate.now().plusWeeks(1), arbeidstidsprosent, - null, false, Set.of(aktivitet1), null, null, null, null); + var periode = OppgittPeriode.forGradering( + Stønadskontotype.FEDREKVOTE, + LocalDate.now(), + LocalDate.now().plusWeeks(1), + arbeidstidsprosent, + null, + false, + Set.of(aktivitet1), + null, + null, + null, + null); var utregningForAktivitet1 = utregning(aktivitet1, periode); var utregningForAktivitet2 = utregning(aktivitet2, periode); @@ -32,7 +40,8 @@ void toArbeidsforholdMedEnGradertGirRedusertUtbetalingsgrad() { assertThat(utregningForAktivitet2.resultat()).isEqualTo(Utbetalingsgrad.FULL); } - private UtbetalingsgradMedGraderingUtregning utregning(AktivitetIdentifikator aktivitetIdentifikator, OppgittPeriode periode) { + private UtbetalingsgradMedGraderingUtregning utregning( + AktivitetIdentifikator aktivitetIdentifikator, OppgittPeriode periode) { return new UtbetalingsgradMedGraderingUtregning(periode, aktivitetIdentifikator, SamtidigUttaksprosent.ZERO); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradOrkestreringTest.java index 63858214..7117d4fd 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradOrkestreringTest.java @@ -12,9 +12,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; @@ -26,6 +23,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UtsettelseÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class UtbetalingsgradOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @@ -34,7 +32,8 @@ void tom_for_dager_skal_gi_null_utbetaling() { var fødselsdato = LocalDate.of(2018, 1, 1); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(20).minusDays(1)); + var mødrekvote = oppgittPeriode( + MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(20).minusDays(1)); var grunnlag = basicGrunnlag(fødselsdato).søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote)); var perioder = fastsettPerioder(grunnlag); @@ -42,7 +41,8 @@ void tom_for_dager_skal_gi_null_utbetaling() { assertThat(perioder).hasSize(4); var up0 = perioder.get(0).uttakPeriode(); - verifiserPeriode(up0, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), INNVILGET, FORELDREPENGER_FØR_FØDSEL); + verifiserPeriode( + up0, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), INNVILGET, FORELDREPENGER_FØR_FØDSEL); assertThat(up0.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); var up1 = perioder.get(1).uttakPeriode(); @@ -50,39 +50,51 @@ void tom_for_dager_skal_gi_null_utbetaling() { assertThat(up1.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); var up2 = perioder.get(2).uttakPeriode(); - verifiserPeriode(up2, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNVILGET, MØDREKVOTE); + verifiserPeriode( + up2, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNVILGET, MØDREKVOTE); assertThat(up2.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); var up3 = perioder.get(3).uttakPeriode(); - verifiserManuellBehandlingPeriode(up3, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(20).minusDays(1), MØDREKVOTE, - IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM); + verifiserManuellBehandlingPeriode( + up3, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(20).minusDays(1), + MØDREKVOTE, + IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, + Manuellbehandlingårsak.STØNADSKONTO_TOM); assertThat(up3.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - } @Test void gyldig_utsettelse_gir_ingen_utbetaling() { var fødselsdato = LocalDate.of(2018, 1, 1); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1)); - var utsettelseFellesperiode = utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), UtsettelseÅrsak.FERIE, - null); - var fellesperiode = oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(14).minusDays(1)); - - //Krever sammenhengende pga søkt om ferie som innvilges, dette er gamle regler - var grunnlag = basicGrunnlag(fødselsdato).behandling(morBehandling().kreverSammenhengendeUttak(true)) - .søknad(new Søknad.Builder().oppgittPeriode(fpff) - .oppgittPeriode(mødrekvote) - .oppgittPeriode(utsettelseFellesperiode) - .oppgittPeriode(fellesperiode) - .type(Søknadstype.FØDSEL)); + var mødrekvote = oppgittPeriode( + MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1)); + var utsettelseFellesperiode = utsettelsePeriode( + fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), UtsettelseÅrsak.FERIE, null); + var fellesperiode = oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(12), + fødselsdato.plusWeeks(14).minusDays(1)); + + // Krever sammenhengende pga søkt om ferie som innvilges, dette er gamle regler + var grunnlag = basicGrunnlag(fødselsdato) + .behandling(morBehandling().kreverSammenhengendeUttak(true)) + .søknad(new Søknad.Builder() + .oppgittPeriode(fpff) + .oppgittPeriode(mødrekvote) + .oppgittPeriode(utsettelseFellesperiode) + .oppgittPeriode(fellesperiode) + .type(Søknadstype.FØDSEL)); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(5); var up0 = perioder.get(0).uttakPeriode(); - verifiserPeriode(up0, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), INNVILGET, FORELDREPENGER_FØR_FØDSEL); + verifiserPeriode( + up0, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), INNVILGET, FORELDREPENGER_FØR_FØDSEL); assertThat(up0.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); var up1 = perioder.get(1).uttakPeriode(); @@ -90,17 +102,20 @@ void gyldig_utsettelse_gir_ingen_utbetaling() { assertThat(up1.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); var up2 = perioder.get(2).uttakPeriode(); - verifiserPeriode(up2, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNVILGET, MØDREKVOTE); + verifiserPeriode( + up2, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNVILGET, MØDREKVOTE); assertThat(up2.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); var up3 = perioder.get(3).uttakPeriode(); assertThat(up3.getUtsettelseÅrsak()).isEqualTo(UtsettelseÅrsak.FERIE); - verifiserPeriode(up3, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), INNVILGET, null); + verifiserPeriode( + up3, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), INNVILGET, null); assertThat(up3.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(up3.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); var up4 = perioder.get(4).uttakPeriode(); - verifiserPeriode(up4, fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(14).minusDays(1), INNVILGET, FELLESPERIODE); + verifiserPeriode( + up4, fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(14).minusDays(1), INNVILGET, FELLESPERIODE); assertThat(up4.getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); } @@ -111,22 +126,30 @@ void gradering_gir_redusert_utbetalingsgrad() { var grunnlag = basicGrunnlag(); leggPåKvoter(grunnlag); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); - var gradertFellesperiode = gradertoppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), - BigDecimal.valueOf(20), aktiviteter); + var mødrekvote = + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); + var gradertFellesperiode = gradertoppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + BigDecimal.valueOf(20), + aktiviteter); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .inngangsvilkår(oppfyltAlleVilkår()) - .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote, gradertFellesperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)).arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))); + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .inngangsvilkår(oppfyltAlleVilkår()) + .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote, gradertFellesperiode)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)) + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); var up0 = perioder.get(0).uttakPeriode(); - verifiserPeriode(up0, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), INNVILGET, FORELDREPENGER_FØR_FØDSEL); + verifiserPeriode( + up0, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1), INNVILGET, FORELDREPENGER_FØR_FØDSEL); assertThat(up0.getUtbetalingsgrad(ARBEIDSFORHOLD_1)).isEqualTo(Utbetalingsgrad.HUNDRED); var up1 = perioder.get(1).uttakPeriode(); @@ -134,7 +157,8 @@ void gradering_gir_redusert_utbetalingsgrad() { assertThat(up1.getUtbetalingsgrad(ARBEIDSFORHOLD_1)).isEqualTo(Utbetalingsgrad.HUNDRED); var up2 = perioder.get(2).uttakPeriode(); - verifiserPeriode(up2, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), INNVILGET, FELLESPERIODE); + verifiserPeriode( + up2, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), INNVILGET, FELLESPERIODE); assertThat(up2.getUtbetalingsgrad(ARBEIDSFORHOLD_1)).isEqualTo(new Utbetalingsgrad(80)); } @@ -145,15 +169,22 @@ void gradering_gir_redusert_utbetalingsgrad_avrunding() { var grunnlag = basicGrunnlag(); leggPåKvoter(grunnlag); var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)); - var mødrekvote = oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); - var gradertFellesperiode = gradertoppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), - new BigDecimal("17.55"), aktivititeter); + var mødrekvote = + oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)); + var gradertFellesperiode = gradertoppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + new BigDecimal("17.55"), + aktivititeter); grunnlag.datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(beggeRett()) - .behandling(morBehandling()) - .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote, gradertFellesperiode)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)).arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))) - .inngangsvilkår(oppfyltAlleVilkår()); + .rettOgOmsorg(beggeRett()) + .behandling(morBehandling()) + .søknad(søknad(Søknadstype.FØDSEL, fpff, mødrekvote, gradertFellesperiode)) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1)) + .arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_2))) + .inngangsvilkår(oppfyltAlleVilkår()); var perioder = fastsettPerioder(grunnlag); @@ -163,10 +194,11 @@ void gradering_gir_redusert_utbetalingsgrad_avrunding() { } private RegelGrunnlag.Builder leggPåKvoter(RegelGrunnlag.Builder builder) { - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 50)) - .konto(konto(FEDREKVOTE, 50)) - .konto(konto(FELLESPERIODE, 130)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 50)) + .konto(konto(FEDREKVOTE, 50)) + .konto(konto(FELLESPERIODE, 130)); return builder.kontoer(kontoer); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradSamtidigUttakUtregningTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradSamtidigUttakUtregningTest.java index e1012d51..97cef26c 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradSamtidigUttakUtregningTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradSamtidigUttakUtregningTest.java @@ -1,21 +1,20 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; - import static org.assertj.core.api.Assertions.assertThat; import java.math.BigDecimal; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; +import org.junit.jupiter.api.Test; class UtbetalingsgradSamtidigUttakUtregningTest { @Test void hvis_ugradert_periode_skal_utbetalingsgrad_være_lik_samtidig_uttaksprosent() { var samtidigUttaksprosent = SamtidigUttaksprosent.TEN; - var resultat = new UtbetalingsgradSamtidigUttakUtregning(samtidigUttaksprosent, null, SamtidigUttaksprosent.ZERO).resultat(); + var resultat = new UtbetalingsgradSamtidigUttakUtregning( + samtidigUttaksprosent, null, SamtidigUttaksprosent.ZERO) + .resultat(); assertThat(resultat.decimalValue()).isEqualTo(samtidigUttaksprosent.decimalValue()); } @@ -24,8 +23,9 @@ class UtbetalingsgradSamtidigUttakUtregningTest { void hvis_gradert_periode_skal_utbetalingsgrad_være_gradering_arbeidstidsprosent() { var samtidigUttaksprosent = SamtidigUttaksprosent.TEN; var graderingArbeidstidsprosent = BigDecimal.ONE; - var resultat = new UtbetalingsgradSamtidigUttakUtregning(samtidigUttaksprosent, graderingArbeidstidsprosent, - SamtidigUttaksprosent.ZERO).resultat(); + var resultat = new UtbetalingsgradSamtidigUttakUtregning( + samtidigUttaksprosent, graderingArbeidstidsprosent, SamtidigUttaksprosent.ZERO) + .resultat(); assertThat(resultat).isEqualByComparingTo(Utbetalingsgrad.HUNDRED.subtract(graderingArbeidstidsprosent)); } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradUtenGraderingUtregningTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradUtenGraderingUtregningTest.java index d23a5b54..3160a755 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradUtenGraderingUtregningTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtbetalingsgradUtenGraderingUtregningTest.java @@ -1,12 +1,10 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; - import static org.assertj.core.api.Assertions.assertThat; -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.SamtidigUttaksprosent; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; +import org.junit.jupiter.api.Test; class UtbetalingsgradUtenGraderingUtregningTest { diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseDelregelSammenhengendeUttakTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseDelregelSammenhengendeUttakTest.java index 37056fbd..0e4e9aa9 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseDelregelSammenhengendeUttakTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseDelregelSammenhengendeUttakTest.java @@ -1,15 +1,11 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode; - import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.DelRegelTestUtil.kjørRegel; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.DelRegelTestUtil.utsettelsePeriode; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.DokumentasjonVurdering.INNLEGGELSE_BARN_GODKJENT; import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; @@ -26,25 +22,33 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UtsettelseÅrsak; +import org.junit.jupiter.api.Test; class UtsettelseDelregelSammenhengendeUttakTest { - @Test void UT1101_ferie_innenfor_seks_første_uker() { var fødselsdato = LocalDate.of(2019, 7, 1); - var periode = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(5), UtsettelseÅrsak.FERIE, - fødselsdato.minusWeeks(1), null, null, null); // innenfor seks uker etter fødsel + var periode = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(5), + UtsettelseÅrsak.FERIE, + fødselsdato.minusWeeks(1), + null, + null, + null); // innenfor seks uker etter fødsel var aktivitetIdentifikator = AktivitetIdentifikator.forFrilans(); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(100).type(Stønadskontotype.MØDREKVOTE)); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(periode)) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(fødselsdato)) - .inngangsvilkår(oppfylt()) - .build(); + var kontoer = + new Kontoer.Builder().konto(new Konto.Builder().trekkdager(100).type(Stønadskontotype.MØDREKVOTE)); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .kontoer(kontoer) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(periode)) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(fødselsdato)) + .inngangsvilkår(oppfylt()) + .build(); var resultat = kjørRegel(periode, grunnlag); @@ -60,18 +64,21 @@ class UtsettelseDelregelSammenhengendeUttakTest { var fom = LocalDate.of(2019, 7, 1); var periode = utsettelsePeriode(fom, fom, UtsettelseÅrsak.INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT); var aktivitetIdentifikator = AktivitetIdentifikator.forFrilans(); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(100).type(Stønadskontotype.MØDREKVOTE)); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(periode)) - .behandling(morBehandling()) - .revurdering(new Revurdering.Builder().endringsdato(fom)) - .rettOgOmsorg(beggeRett()) - .datoer(new Datoer.Builder() - //Nok til å få prematuruker - .fødsel(fom).termin(fom.plusWeeks(8))) - .inngangsvilkår(oppfylt()) - .build(); + var kontoer = + new Kontoer.Builder().konto(new Konto.Builder().trekkdager(100).type(Stønadskontotype.MØDREKVOTE)); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .kontoer(kontoer) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(periode)) + .behandling(morBehandling()) + .revurdering(new Revurdering.Builder().endringsdato(fom)) + .rettOgOmsorg(beggeRett()) + .datoer(new Datoer.Builder() + // Nok til å få prematuruker + .fødsel(fom) + .termin(fom.plusWeeks(8))) + .inngangsvilkår(oppfylt()) + .build(); var resultat = kjørRegel(periode, grunnlag); @@ -81,20 +88,24 @@ class UtsettelseDelregelSammenhengendeUttakTest { @Test void UT1120_fødsel_mer_enn_7_uker_før_termin_perioden_ligger_etter_termin() { var fom = LocalDate.of(2019, 7, 1); - var periode = utsettelsePeriode(fom.plusWeeks(10), fom.plusWeeks(10), UtsettelseÅrsak.INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT); + var periode = utsettelsePeriode( + fom.plusWeeks(10), fom.plusWeeks(10), UtsettelseÅrsak.INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT); var aktivitetIdentifikator = AktivitetIdentifikator.forFrilans(); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(100).type(Stønadskontotype.MØDREKVOTE)); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(periode)) - .behandling(morBehandling()) - .revurdering(new Revurdering.Builder().endringsdato(fom)) - .rettOgOmsorg(beggeRett()) - .datoer(new Datoer.Builder() - //Nok til å få prematuruker - .fødsel(fom).termin(fom.plusWeeks(8))) - .inngangsvilkår(oppfylt()) - .build(); + var kontoer = + new Kontoer.Builder().konto(new Konto.Builder().trekkdager(100).type(Stønadskontotype.MØDREKVOTE)); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .kontoer(kontoer) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(periode)) + .behandling(morBehandling()) + .revurdering(new Revurdering.Builder().endringsdato(fom)) + .rettOgOmsorg(beggeRett()) + .datoer(new Datoer.Builder() + // Nok til å få prematuruker + .fødsel(fom) + .termin(fom.plusWeeks(8))) + .inngangsvilkår(oppfylt()) + .build(); var resultat = kjørRegel(periode, grunnlag); @@ -106,18 +117,21 @@ class UtsettelseDelregelSammenhengendeUttakTest { var fom = LocalDate.of(2019, 7, 1); var periode = utsettelsePeriode(fom, fom, UtsettelseÅrsak.INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT); var aktivitetIdentifikator = AktivitetIdentifikator.forFrilans(); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().trekkdager(100).type(Stønadskontotype.MØDREKVOTE)); - var grunnlag = new RegelGrunnlag.Builder().arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(periode)) - .behandling(morBehandling()) - .revurdering(new Revurdering.Builder().endringsdato(fom)) - .rettOgOmsorg(beggeRett()) - .datoer(new Datoer.Builder() - //Nok til å få prematuruker - .fødsel(fom).termin(fom)) - .inngangsvilkår(oppfylt()) - .build(); + var kontoer = + new Kontoer.Builder().konto(new Konto.Builder().trekkdager(100).type(Stønadskontotype.MØDREKVOTE)); + var grunnlag = new RegelGrunnlag.Builder() + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(aktivitetIdentifikator))) + .kontoer(kontoer) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(periode)) + .behandling(morBehandling()) + .revurdering(new Revurdering.Builder().endringsdato(fom)) + .rettOgOmsorg(beggeRett()) + .datoer(new Datoer.Builder() + // Nok til å få prematuruker + .fødsel(fom) + .termin(fom)) + .inngangsvilkår(oppfylt()) + .build(); var resultat = kjørRegel(periode, grunnlag); @@ -133,6 +147,10 @@ private Behandling.Builder morBehandling() { } private Inngangsvilkår.Builder oppfylt() { - return new Inngangsvilkår.Builder().fødselOppfylt(true).adopsjonOppfylt(true).foreldreansvarnOppfylt(true).opptjeningOppfylt(true); + return new Inngangsvilkår.Builder() + .fødselOppfylt(true) + .adopsjonOppfylt(true) + .foreldreansvarnOppfylt(true) + .opptjeningOppfylt(true); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseOrkestreringTest.java index 4e72d8f2..3f9b5a17 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseOrkestreringTest.java @@ -32,11 +32,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Set; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.EnumSource; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriodeAktivitet; @@ -58,17 +53,28 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.ytelser.Ytelser; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; class UtsettelseOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void periode_med_dokumentert_utsettelse_pga_barn_innlagt_innenfor_første_6_ukene_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(3).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(6).minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(3).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(6).minusDays(1), + INNLAGT_BARN, + INNLEGGELSE_BARN_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -84,11 +90,19 @@ class UtsettelseOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void periode_med_dokumentert_utsettelse_pga_barn_innlagt_etter_første_6_ukene_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + INNLAGT_BARN, + INNLEGGELSE_BARN_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -104,11 +118,19 @@ class UtsettelseOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void periode_med_dokumentert_utsettelse_pga_søker_innlagt_innenfor_første_6_ukene_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(3).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(6).minusDays(1), INNLAGT_SØKER, INNLEGGELSE_SØKER_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(3).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(6).minusDays(1), + INNLAGT_SØKER, + INNLEGGELSE_SØKER_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -124,11 +146,19 @@ class UtsettelseOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void periode_med_dokumentert_utsettelse_pga_søker_innlagt_etter_første_6_ukene_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), INNLAGT_SØKER, INNLEGGELSE_SØKER_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + INNLAGT_SØKER, + INNLEGGELSE_SØKER_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -144,11 +174,19 @@ class UtsettelseOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void periode_med_dokumentert_utsettelse_pga_søker_syk_innenfor_første_6_ukene_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(3).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(6).minusDays(1), SYKDOM_SKADE, SYKDOM_SØKER_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(3).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(6).minusDays(1), + SYKDOM_SKADE, + SYKDOM_SØKER_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -164,11 +202,19 @@ class UtsettelseOrkestreringTest extends FastsettePerioderRegelOrkestreringTestB @Test void periode_med_dokumentert_utsettelse_pga_søker_syk_etter_første_6_ukene_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), SYKDOM_SKADE, SYKDOM_SØKER_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + SYKDOM_SKADE, + SYKDOM_SØKER_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -186,9 +232,13 @@ void periode_med_utsettelse_pga_arbeid_etter_uke_6_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); var utsettelseFom = fødselsdato.plusWeeks(6); var utsettelseTom = fødselsdato.plusWeeks(10).minusDays(1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, ARBEID, null))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, ARBEID, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); @@ -206,9 +256,13 @@ void periode_med_utsettelse_pga_arbeid_etter_uke_6_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); var utsettelseFom = fødselsdato.plusWeeks(4); var utsettelseTom = fødselsdato.plusWeeks(10).minusDays(1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(4).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, ARBEID, null))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(4).minusDays(1))) + .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, ARBEID, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -229,9 +283,13 @@ void periode_med_utsettelse_pga_ferie_etter_uke_6_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); var utsettelseFom = fødselsdato.plusWeeks(6); var utsettelseTom = fødselsdato.plusWeeks(10).minusDays(1); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, FERIE, null))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, FERIE, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); @@ -248,10 +306,17 @@ void periode_med_utsettelse_pga_ferie_etter_uke_6_skal_innvilges() { @Test void skal_ikke_utlede_stønadskontotype_ved_innvilgelse_av_utsettelse() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(4).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(6).minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(4).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(6).minusDays(1), + INNLAGT_BARN, + INNLEGGELSE_BARN_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); @@ -264,46 +329,71 @@ void periode_med_utsettelse_pga_ferie_etter_uke_6_skal_innvilges() { @Test void periode_med_utsettelse_sykdom_som_ikke_er_dokumentert_skal_avslås() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(2).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(3).minusDays(1), SYKDOM_SKADE, null)) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(12).minusDays(1), SYKDOM_SKADE, SYKDOM_SØKER_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(2).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(3).minusDays(1), + SYKDOM_SKADE, + null)) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(12).minusDays(1), + SYKDOM_SKADE, + SYKDOM_SØKER_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); var utsettelseFørsteUkeneSomIkkeErDokumentert = resultat.get(1).uttakPeriode(); - assertThat(utsettelseFørsteUkeneSomIkkeErDokumentert.getUtsettelseÅrsak()).isEqualTo(SYKDOM_SKADE); + assertThat(utsettelseFørsteUkeneSomIkkeErDokumentert.getUtsettelseÅrsak()) + .isEqualTo(SYKDOM_SKADE); assertThat(utsettelseFørsteUkeneSomIkkeErDokumentert.getFom()).isEqualTo(fødselsdato.plusWeeks(2)); - assertThat(utsettelseFørsteUkeneSomIkkeErDokumentert.getTom()).isEqualTo(fødselsdato.plusWeeks(3).minusDays(1)); - assertThat(utsettelseFørsteUkeneSomIkkeErDokumentert.getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); + assertThat(utsettelseFørsteUkeneSomIkkeErDokumentert.getTom()) + .isEqualTo(fødselsdato.plusWeeks(3).minusDays(1)); + assertThat(utsettelseFørsteUkeneSomIkkeErDokumentert.getPerioderesultattype()) + .isEqualTo(Perioderesultattype.AVSLÅTT); var utsettelseFørsteUkeneSomErDokumentert = resultat.get(2).uttakPeriode(); assertThat(utsettelseFørsteUkeneSomErDokumentert.getUtsettelseÅrsak()).isEqualTo(SYKDOM_SKADE); assertThat(utsettelseFørsteUkeneSomErDokumentert.getFom()).isEqualTo(fødselsdato.plusWeeks(3)); - assertThat(utsettelseFørsteUkeneSomErDokumentert.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); - assertThat(utsettelseFørsteUkeneSomErDokumentert.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); + assertThat(utsettelseFørsteUkeneSomErDokumentert.getTom()) + .isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); + assertThat(utsettelseFørsteUkeneSomErDokumentert.getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); var utsettelseEtterFørsteUkeneDokumentert = resultat.get(3).uttakPeriode(); assertThat(utsettelseEtterFørsteUkeneDokumentert.getUtsettelseÅrsak()).isEqualTo(SYKDOM_SKADE); assertThat(utsettelseEtterFørsteUkeneDokumentert.getFom()).isEqualTo(fødselsdato.plusWeeks(6)); - assertThat(utsettelseEtterFørsteUkeneDokumentert.getTom()).isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); - assertThat(utsettelseEtterFørsteUkeneDokumentert.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); + assertThat(utsettelseEtterFørsteUkeneDokumentert.getTom()) + .isEqualTo(fødselsdato.plusWeeks(12).minusDays(1)); + assertThat(utsettelseEtterFørsteUkeneDokumentert.getPerioderesultattype()) + .isEqualTo(Perioderesultattype.INNVILGET); } @Test void utsettelse_periode_med_ukjent_kontotype_må_settes_til_neste_tilgjengelig() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(4).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(6).minusDays(1), SYKDOM_SKADE, null))); - - //Her skal det gis avslag (mangler dok) og trekke dager, skal velge konto å trekke fra + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(4).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(6).minusDays(1), + SYKDOM_SKADE, + null))); + + // Her skal det gis avslag (mangler dok) og trekke dager, skal velge konto å trekke fra var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - var utsettelse = resultat.get(1).uttakPeriode(); assertThat(utsettelse.getUtsettelseÅrsak()).isEqualTo(SYKDOM_SKADE); assertThat(utsettelse.getFom()).isEqualTo(fødselsdato.plusWeeks(4)); @@ -315,46 +405,58 @@ void periode_med_utsettelse_pga_ferie_etter_uke_6_skal_innvilges() { @Test void pleiepenger_utsettelse_skal_trekke_fra_fellesperiode() { - //Over 7 uker for tidlig, får pleiepenger. Utsettelsen skal avlås og det skal trekkes dager + // Over 7 uker for tidlig, får pleiepenger. Utsettelsen skal avlås og det skal trekkes dager var termindato = LocalDate.of(2019, 9, 1); var fødselsdato = LocalDate.of(2019, 7, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).rettOgOmsorg(beggeRett().harOmsorg(true)) - .datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) - .søknad(fødselSøknad() - //Starter med pleiepenger - .oppgittPeriode(utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(4).minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT)) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(4), termindato))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .rettOgOmsorg(beggeRett().harOmsorg(true)) + .datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) + .søknad(fødselSøknad() + // Starter med pleiepenger + .oppgittPeriode(utsettelsePeriode( + fødselsdato, + fødselsdato.plusWeeks(4).minusDays(1), + INNLAGT_BARN, + INNLEGGELSE_BARN_GODKJENT)) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(4), termindato))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.get(0).uttakPeriode().getUtsettelseÅrsak()).isEqualTo(INNLAGT_BARN); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); - assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); + assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FELLESPERIODE); } @Test void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { - //Over 7 uker for tidlig, får pleiepenger. Utsettelsen skal avlås og det skal trekkes dager + // Over 7 uker for tidlig, får pleiepenger. Utsettelsen skal avlås og det skal trekkes dager var termindato = LocalDate.of(2019, 9, 1); var fødselsdato = LocalDate.of(2019, 7, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(100)); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).kontoer(kontoer) - .datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) - .søknad(fødselSøknad() - //Starter med pleiepenger - .oppgittPeriode(utsettelsePeriode(fødselsdato, termindato.minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT)) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, termindato, termindato.plusWeeks(10)))); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(100)); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .kontoer(kontoer) + .datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) + .søknad(fødselSøknad() + // Starter med pleiepenger + .oppgittPeriode(utsettelsePeriode( + fødselsdato, termindato.minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT)) + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, termindato, termindato.plusWeeks(10)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.get(0).uttakPeriode().getUtsettelseÅrsak()).isEqualTo(INNLAGT_BARN); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); - assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); + assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } @@ -362,30 +464,47 @@ void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { void pleiepenger_med_overlappende_uttaksperiode_skal_gå_til_manuell() { var fødselsdato = LocalDate.of(2019, 7, 1); var innleggelse = new PleiepengerPeriode(fødselsdato, fødselsdato.plusWeeks(3), true); - var utenInnleggelse = new PleiepengerPeriode(fødselsdato.plusWeeks(3).plusDays(1), fødselsdato.plusWeeks(6).minusDays(1), false); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)))) - .ytelser(new Ytelser(new Pleiepenger(List.of(innleggelse, utenInnleggelse)))); + var utenInnleggelse = new PleiepengerPeriode( + fødselsdato.plusWeeks(3).plusDays(1), fødselsdato.plusWeeks(6).minusDays(1), false); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)))) + .ytelser(new Ytelser(new Pleiepenger(List.of(innleggelse, utenInnleggelse)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(0).uttakPeriode().getFom()).isEqualTo(innleggelse.getFom()); - assertThat(resultat.get(0).uttakPeriode().getManuellbehandlingårsak()).isEqualTo( - Manuellbehandlingårsak.OVERLAPPENDE_PLEIEPENGER_MED_INNLEGGELSE); + assertThat(resultat.get(0).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.OVERLAPPENDE_PLEIEPENGER_MED_INNLEGGELSE); assertThat(resultat.get(1).uttakPeriode().getFom()).isEqualTo(utenInnleggelse.getFom()); - assertThat(resultat.get(1).uttakPeriode().getManuellbehandlingårsak()).isEqualTo( - Manuellbehandlingårsak.OVERLAPPENDE_PLEIEPENGER_UTEN_INNLEGGELSE); + assertThat(resultat.get(1).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.OVERLAPPENDE_PLEIEPENGER_UTEN_INNLEGGELSE); } @Test void utsettelse_pga_sykdom_før_søknad_mottatt_dato_skal_innvilges() { - //Mottatt dato skal ikke være relevant for utsettelse første 6 ukene hvis det er dokumentert + // Mottatt dato skal ikke være relevant for utsettelse første 6 ukene hvis det er + // dokumentert var fødselsdato = LocalDate.of(2019, 7, 1); - var utsettelse = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(4), fødselsdato.plusWeeks(6).minusDays(1), SYKDOM_SKADE, - fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(8), null, SYKDOM_SØKER_GODKJENT); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(4).minusDays(1))).oppgittPeriode(utsettelse)); + var utsettelse = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(4), + fødselsdato.plusWeeks(6).minusDays(1), + SYKDOM_SKADE, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(8), + null, + SYKDOM_SØKER_GODKJENT); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(4).minusDays(1))) + .oppgittPeriode(utsettelse)); var resultat = fastsettPerioder(grunnlag); @@ -396,11 +515,19 @@ void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { @Test void skal_avslå_periode_hvis_overlapp_med_innvilget_utsettelse_i_tidsperiode_forbeholdt_mor_i_berørt_behandling() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart( - new AnnenPart.Builder().uttaksperiode(uttak(fødselsdato, fødselsdato.plusWeeks(2).minusDays(1)).build()) - .uttaksperiode(utsettelse(fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(6)).build())) - .behandling(farBehandling().berørtBehandling(true)) - .søknad(fødselSøknad().oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(4).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + uttak(fødselsdato, fødselsdato.plusWeeks(2).minusDays(1)) + .build()) + .uttaksperiode(utsettelse(fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(6)) + .build())) + .behandling(farBehandling().berørtBehandling(true)) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(4).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(1); @@ -411,13 +538,22 @@ void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { } @Test - void skal_innvilge_periode_hvis_overlapp_med_innvilget_utsettelse_etter_tidsperiode_forbeholdt_mor_i_berørt_behandling() { + void + skal_innvilge_periode_hvis_overlapp_med_innvilget_utsettelse_etter_tidsperiode_forbeholdt_mor_i_berørt_behandling() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart( - new AnnenPart.Builder().uttaksperiode(uttak(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)).build()) - .uttaksperiode(utsettelse(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10)).build())) - .behandling(farBehandling().berørtBehandling(true)) - .søknad(fødselSøknad().oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + uttak(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) + .build()) + .uttaksperiode(utsettelse(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10)) + .build())) + .behandling(farBehandling().berørtBehandling(true)) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(1); @@ -426,16 +562,23 @@ void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); } - //FAGSYSTEM-151437 + // FAGSYSTEM-151437 @Test void utsettelse_innvilges_tilbake_i_tid_for_bare_far_har_rett_hvis_mor_er_i_aktivitet() { var fødselsdato = LocalDate.of(2019, 10, 10); - var utsettelse = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(50), ARBEID, fødselsdato.plusWeeks(100), - fødselsdato.plusWeeks(100), MorsAktivitet.UTDANNING, MORS_AKTIVITET_GODKJENT); - var grunnlag = basicGrunnlagFar(fødselsdato).behandling(farBehandling()) - .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 100))) - .rettOgOmsorg(bareFarRett()) - .søknad(søknad(FØDSEL, utsettelse)); + var utsettelse = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(50), + ARBEID, + fødselsdato.plusWeeks(100), + fødselsdato.plusWeeks(100), + MorsAktivitet.UTDANNING, + MORS_AKTIVITET_GODKJENT); + var grunnlag = basicGrunnlagFar(fødselsdato) + .behandling(farBehandling()) + .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 100))) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad(FØDSEL, utsettelse)); var perioder = fastsettPerioder(grunnlag); @@ -447,12 +590,21 @@ void utsettelse_innvilges_tilbake_i_tid_for_bare_far_har_rett_hvis_mor_er_i_akti @Test void innvilge_eller_avslå_basert_på_pleiepenger_med_innleggelse() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(3).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(6).minusDays(1), INNLAGT_BARN, null))) - .ytelser( - new Ytelser(new Pleiepenger(Set.of(new PleiepengerPeriode(fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(5).minusDays(1), true))))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(3).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(6).minusDays(1), + INNLAGT_BARN, + null))) + .ytelser(new Ytelser(new Pleiepenger(Set.of(new PleiepengerPeriode( + fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(5).minusDays(1), true))))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); @@ -474,54 +626,67 @@ void utsettelse_innvilges_tilbake_i_tid_for_bare_far_har_rett_hvis_mor_er_i_akti @Test void avslag_utsettelse_med_trekkdager_skal_knekkes_når_saldo_går_tom() { var fødselsdato = LocalDate.of(2021, 1, 20); - //Skal få avslag pga mor ikke er i aktivitet + // Skal få avslag pga mor ikke er i aktivitet var fom = fødselsdato.plusWeeks(6); var tom = fødselsdato.plusWeeks(9); - //Skal gå tom for dager - var utsettelse = OppgittPeriode.forUtsettelse(fom, tom, FRI, fødselsdato, fødselsdato, MorsAktivitet.ARBEID, MORS_AKTIVITET_IKKE_GODKJENT); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().trekkdager(10).type(FORELDREPENGER))) - .søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelse)); + // Skal gå tom for dager + var utsettelse = OppgittPeriode.forUtsettelse( + fom, tom, FRI, fødselsdato, fødselsdato, MorsAktivitet.ARBEID, MORS_AKTIVITET_IKKE_GODKJENT); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(10).type(FORELDREPENGER))) + .søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelse)); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(2); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fom); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fom.plusWeeks(2).minusDays(1)); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fom.plusWeeks(2).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IKKE_STØNADSDAGER_IGJEN); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fom.plusWeeks(2)); assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(tom); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); } @Test void utsettelse_akt_krav_bare_far_rett_innvilget_uten_trekk() { var fødselsdato = LocalDate.of(2021, 1, 20); - //Skal få avslag pga mor ikke er i aktivitet + // Skal få avslag pga mor ikke er i aktivitet var fom = fødselsdato.plusWeeks(6); var tom = fødselsdato.plusWeeks(9); - //Skal gå tom for dager - var utsettelse = OppgittPeriode.forUtsettelse(fom, tom, FRI, fødselsdato, fødselsdato, MorsAktivitet.ARBEID, MORS_AKTIVITET_GODKJENT); - var grunnlag = basicGrunnlagFar(fødselsdato).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().trekkdager(10).type(FORELDREPENGER))) - .søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelse)); + // Skal gå tom for dager + var utsettelse = OppgittPeriode.forUtsettelse( + fom, tom, FRI, fødselsdato, fødselsdato, MorsAktivitet.ARBEID, MORS_AKTIVITET_GODKJENT); + var grunnlag = basicGrunnlagFar(fødselsdato) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(10).type(FORELDREPENGER))) + .søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelse)); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.UTSETTELSE_GYLDIG_BFR_AKT_KRAV_OPPFYLT); + assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(InnvilgetÅrsak.UTSETTELSE_GYLDIG_BFR_AKT_KRAV_OPPFYLT); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fom); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(tom); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isFalse(); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isFalse(); } @Test @@ -530,16 +695,23 @@ void utsettelse_akt_krav_bare_far_rett_innvilget_uten_trekk() { var fom = fødselsdato.minusWeeks(5); var tom = fødselsdato.minusWeeks(3).minusDays(1); var utsettelse = utsettelsePeriode(fom, tom, FRI, null); - var grunnlag = basicGrunnlagMor(fødselsdato).søknad( - søknad(FØDSEL, utsettelse, oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), - oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)))); + var grunnlag = basicGrunnlagMor(fødselsdato) + .søknad(søknad( + FØDSEL, + utsettelse, + oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1)), + oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isZero(); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isZero(); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fom); assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(tom); } @@ -548,9 +720,12 @@ void utsettelse_akt_krav_bare_far_rett_innvilget_uten_trekk() { void prematur_fødsel_pleiepenger_skal_gi_utsettelse_med_trekkdager_fram_til_termindato() { var fødselsdato = LocalDate.of(2021, 11, 22); var termindato = fødselsdato.plusWeeks(8); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) - .søknad(fødselSøknad().oppgittPeriode(utsettelsePeriode(fødselsdato, termindato.minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT)) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, termindato, termindato.plusWeeks(6)))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termindato)) + .søknad(fødselSøknad() + .oppgittPeriode(utsettelsePeriode( + fødselsdato, termindato.minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT)) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, termindato, termindato.plusWeeks(6)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); @@ -578,9 +753,17 @@ void utsettelse_akt_krav_bare_far_rett_innvilget_uten_trekk() { @Test void fri_utsettelse_første_6_ukene_skal_gå_til_manuell_pre_wlb() { var fødselsdato = LocalDate.of(2022, 6, 28); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(defaultKontoer()) - .søknad(søknad(FØDSEL, utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), FRI, null), - oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(2).minusDays(1), false, SamtidigUttaksprosent.HUNDRED))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(defaultKontoer()) + .søknad(søknad( + FØDSEL, + utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), FRI, null), + oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(2).minusDays(1), + false, + SamtidigUttaksprosent.HUNDRED))); var perioder = fastsettPerioder(grunnlag); @@ -592,39 +775,64 @@ void utsettelse_akt_krav_bare_far_rett_innvilget_uten_trekk() { @Test void fri_utsettelse_første_6_ukene_skal_innvilges_for_far_begge_rett() { var fødselsdato = LocalDate.of(2022, 6, 28); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(defaultKontoer().farUttakRundtFødselDager(10)) - .søknad(søknad(FØDSEL, utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), FRI, null), - oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(2).minusDays(1), false, SamtidigUttaksprosent.HUNDRED), - utsettelsePeriode(fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(3).minusDays(1), FRI, null), - oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(5).minusDays(1), false, new SamtidigUttaksprosent(50)), - utsettelsePeriode(fødselsdato.plusWeeks(5), fødselsdato.plusWeeks(8).minusDays(1), FRI, null), - oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(defaultKontoer().farUttakRundtFødselDager(10)) + .søknad(søknad( + FØDSEL, + utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), FRI, null), + oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(2).minusDays(1), + false, + SamtidigUttaksprosent.HUNDRED), + utsettelsePeriode( + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(3).minusDays(1), + FRI, + null), + oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(5).minusDays(1), + false, + new SamtidigUttaksprosent(50)), + utsettelsePeriode( + fødselsdato.plusWeeks(5), + fødselsdato.plusWeeks(8).minusDays(1), + FRI, + null), + oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(7); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(4).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(4).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); // Knekk ved fødsel + 6uker assertThat(perioder.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(5).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(5).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(5).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(5).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(6).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); @@ -633,37 +841,70 @@ void utsettelse_akt_krav_bare_far_rett_innvilget_uten_trekk() { @Test void fri_utsettelse_første_6_ukene_skal_innvilges_for_bfhr() { var fødselsdato = LocalDate.of(2022, 6, 28); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(FORELDREPENGER, 100).minsterettDager(40).farUttakRundtFødselDager(10)) - .søknad(søknad(FØDSEL, utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), FRI, null), - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(2).minusDays(1)), - utsettelsePeriode(fødselsdato.plusWeeks(2), fødselsdato.plusWeeks(3).minusDays(1), FRI, null), - gradertoppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(5).minusDays(1), BigDecimal.valueOf(50)), - utsettelsePeriode(fødselsdato.plusWeeks(5), fødselsdato.plusWeeks(6).minusDays(1), FRI, MorsAktivitet.ARBEID, null), - utsettelsePeriode(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(8).minusDays(1), FRI, MorsAktivitet.ARBEID, - MORS_AKTIVITET_GODKJENT), - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(10), MORS_AKTIVITET_GODKJENT))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(FORELDREPENGER, 100) + .minsterettDager(40) + .farUttakRundtFødselDager(10)) + .søknad(søknad( + FØDSEL, + utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(1).minusDays(1), FRI, null), + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(2).minusDays(1)), + utsettelsePeriode( + fødselsdato.plusWeeks(2), + fødselsdato.plusWeeks(3).minusDays(1), + FRI, + null), + gradertoppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(5).minusDays(1), + BigDecimal.valueOf(50)), + utsettelsePeriode( + fødselsdato.plusWeeks(5), + fødselsdato.plusWeeks(6).minusDays(1), + FRI, + MorsAktivitet.ARBEID, + null), + utsettelsePeriode( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(8).minusDays(1), + FRI, + MorsAktivitet.ARBEID, + MORS_AKTIVITET_GODKJENT), + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(10), + MORS_AKTIVITET_GODKJENT))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(7); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(2).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(4).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(4).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(5).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); @@ -674,60 +915,104 @@ void utsettelse_akt_krav_bare_far_rett_innvilget_uten_trekk() { @Test void fri_utsettelse_før_termin_far_begge_rett() { var fødselsdato = LocalDate.of(2022, 6, 28); - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(defaultKontoer().farUttakRundtFødselDager(10)) - .søknad(søknad(FØDSEL, utsettelsePeriode(fødselsdato.minusWeeks(1), fødselsdato.plusWeeks(1).minusDays(1), FRI, null), - oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(3), fødselsdato.plusWeeks(5).minusDays(1), false, SamtidigUttaksprosent.HUNDRED))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(defaultKontoer().farUttakRundtFødselDager(10)) + .søknad(søknad( + FØDSEL, + utsettelsePeriode( + fødselsdato.minusWeeks(1), + fødselsdato.plusWeeks(1).minusDays(1), + FRI, + null), + oppgittPeriode( + FEDREKVOTE, + fødselsdato.plusWeeks(3), + fødselsdato.plusWeeks(5).minusDays(1), + false, + SamtidigUttaksprosent.HUNDRED))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.HUNDRED); } @Test void fri_utsettelse_før_termin_bfhr() { var fødselsdato = LocalDate.of(2022, 6, 28); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(FORELDREPENGER, 100).minsterettDager(40).farUttakRundtFødselDager(10)) - .søknad(søknad(FØDSEL, utsettelsePeriode(fødselsdato.minusWeeks(1), fødselsdato.plusWeeks(1).minusDays(1), FRI, null), - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(1), fødselsdato.plusWeeks(3).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(FORELDREPENGER, 100) + .minsterettDager(40) + .farUttakRundtFødselDager(10)) + .søknad(søknad( + FØDSEL, + utsettelsePeriode( + fødselsdato.minusWeeks(1), + fødselsdato.plusWeeks(1).minusDays(1), + FRI, + null), + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(1), + fødselsdato.plusWeeks(3).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(3); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(0).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(UTSETTELSE_GYLDIG); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.HUNDRED); + assertThat(perioder.get(2).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.HUNDRED); } @Test void fri_utsettelse_etter_uke_6_far_aleneomsorg_innvilges() { var fødselsdato = LocalDate.of(2024, 5, 13); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(aleneomsorg()) - .kontoer(new Kontoer.Builder().konto(FORELDREPENGER, 100)) - .søknad(søknad(FØDSEL, oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)), - utsettelsePeriode(fødselsdato.plusWeeks(8), fødselsdato.plusWeeks(10).minusDays(1), FRI, null), - oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15).minusDays(1)))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(aleneomsorg()) + .kontoer(new Kontoer.Builder().konto(FORELDREPENGER, 100)) + .søknad(søknad( + FØDSEL, + oppgittPeriode( + FORELDREPENGER, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1)), + utsettelsePeriode( + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(10).minusDays(1), + FRI, + null), + oppgittPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(15).minusDays(1)))); var perioder = fastsettPerioder(grunnlag); @@ -738,33 +1023,54 @@ void fri_utsettelse_etter_uke_6_far_aleneomsorg_innvilges() { @ParameterizedTest @EnumSource(UtsettelseÅrsak.class) - void annen_parts_periode_skal_trekke_dager_selv_om_de_overlapper_med_søkers_utsettelse(UtsettelseÅrsak utsettelseÅrsak) { - //FAGSYSTEM-243708 + void annen_parts_periode_skal_trekke_dager_selv_om_de_overlapper_med_søkers_utsettelse( + UtsettelseÅrsak utsettelseÅrsak) { + // FAGSYSTEM-243708 var fødselsdato = of(2018, 1, 1); var mottattDatoFar = fødselsdato.plusWeeks(5); - var utsettelsePeriode = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), utsettelseÅrsak, - mottattDatoFar, mottattDatoFar, null, null); + var utsettelsePeriode = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + utsettelseÅrsak, + mottattDatoFar, + mottattDatoFar, + null, + null); var fellesperiodeFom = utsettelsePeriode.getTom().plusDays(1); - var fellesperiode = OppgittPeriode.forVanligPeriode(FELLESPERIODE, fellesperiodeFom, fellesperiodeFom.plusWeeks(1).minusDays(1), null, false, - mottattDatoFar, mottattDatoFar, MorsAktivitet.ARBEID, MORS_AKTIVITET_GODKJENT); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).behandling(farBehandling()) - .søknad(søknad(Søknadstype.FØDSEL, utsettelsePeriode, fellesperiode)) - .annenPart(new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) - .innvilget(true) - .senestMottattDato(fødselsdato) - .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet(ARBEIDSFORHOLD_3, MØDREKVOTE, new Trekkdager(30), Utbetalingsgrad.HUNDRED)) - .build()) - .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(utsettelsePeriode.getFom(), utsettelsePeriode.getTom()) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(ARBEIDSFORHOLD_3, FELLESPERIODE, new Trekkdager(130), Utbetalingsgrad.HUNDRED)) - .senestMottattDato(fødselsdato) - .build())); + var fellesperiode = OppgittPeriode.forVanligPeriode( + FELLESPERIODE, + fellesperiodeFom, + fellesperiodeFom.plusWeeks(1).minusDays(1), + null, + false, + mottattDatoFar, + mottattDatoFar, + MorsAktivitet.ARBEID, + MORS_AKTIVITET_GODKJENT); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .behandling(farBehandling()) + .søknad(søknad(Søknadstype.FØDSEL, utsettelsePeriode, fellesperiode)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) + .innvilget(true) + .senestMottattDato(fødselsdato) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + ARBEIDSFORHOLD_3, MØDREKVOTE, new Trekkdager(30), Utbetalingsgrad.HUNDRED)) + .build()) + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + utsettelsePeriode.getFom(), utsettelsePeriode.getTom()) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + ARBEIDSFORHOLD_3, FELLESPERIODE, new Trekkdager(130), Utbetalingsgrad.HUNDRED)) + .senestMottattDato(fødselsdato) + .build())); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(MANUELL_BEHANDLING); assertThat(resultat.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(IKKE_STØNADSDAGER_IGJEN); @@ -779,7 +1085,10 @@ private RegelGrunnlag.Builder basicUtsettelseGrunnlag(LocalDate fødselsdato) { } private RegelGrunnlag.Builder basicUtsettelseGrunnlag(LocalDate fødselsdato, Behandling.Builder behandling) { - return basicGrunnlag().datoer(datoer(fødselsdato)).behandling(behandling).rettOgOmsorg(beggeRett()); + return basicGrunnlag() + .datoer(datoer(fødselsdato)) + .behandling(behandling) + .rettOgOmsorg(beggeRett()); } private Søknad.Builder fødselSøknad() { diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseSammenhengendeUttakOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseSammenhengendeUttakOrkestreringTest.java index 7c65aa6d..b0a8ffea 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseSammenhengendeUttakOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/UtsettelseSammenhengendeUttakOrkestreringTest.java @@ -25,9 +25,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode; @@ -47,24 +44,33 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.Manuellbehandlingårsak; +import org.junit.jupiter.api.Test; class UtsettelseSammenhengendeUttakOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { @Test void periode_med_gyldig_utsettelse_pga_barn_innlagt_i_helseinstitusjon_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + INNLAGT_BARN, + INNLEGGELSE_BARN_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertDeTreFørstePeriodene(resultat, fødselsdato); - //2 neste uker med gyldig utsettelse + // 2 neste uker med gyldig utsettelse var uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getUtsettelseÅrsak()).isEqualTo(INNLAGT_BARN); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10)); @@ -76,18 +82,26 @@ void periode_med_gyldig_utsettelse_pga_barn_innlagt_i_helseinstitusjon_skal_innv @Test void periode_med_gyldig_utsettelse_pga_søker_innlagt_i_helseinstitusjon_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), INNLAGT_SØKER, INNLEGGELSE_SØKER_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + INNLAGT_SØKER, + INNLEGGELSE_SØKER_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertDeTreFørstePeriodene(resultat, fødselsdato); - //2 neste uker med gyldig utsettelse + // 2 neste uker med gyldig utsettelse var uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getUtsettelseÅrsak()).isEqualTo(INNLAGT_SØKER); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10)); @@ -99,18 +113,26 @@ void periode_med_gyldig_utsettelse_pga_barn_innlagt_i_helseinstitusjon_skal_innv @Test void periode_med_gyldig_utsettelse_pga_søkers_sykdom_eller_skade_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode( - utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), SYKDOM_SKADE, SYKDOM_SØKER_GODKJENT))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + SYKDOM_SKADE, + SYKDOM_SØKER_GODKJENT))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertDeTreFørstePeriodene(resultat, fødselsdato); - //2 neste uker med gyldig utsettelse + // 2 neste uker med gyldig utsettelse var uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getUtsettelseÅrsak()).isEqualTo(SYKDOM_SKADE); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10)); @@ -124,24 +146,29 @@ void periode_med_gyldig_utsettelse_pga_arbeid_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); var utsettelseFom = fødselsdato.plusWeeks(10); var utsettelseTom = fødselsdato.plusWeeks(12).minusDays(1); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 75)) - .konto(konto(FEDREKVOTE, 75)) - .konto(konto(FELLESPERIODE, 80)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 75)) + .konto(konto(FEDREKVOTE, 75)) + .konto(konto(FELLESPERIODE, 80)); var arbeidsforhold = new Arbeidsforhold(ARBEIDSFORHOLD); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).arbeid( - new Arbeid.Builder().arbeidsforhold(arbeidsforhold).endringAvStilling(new EndringAvStilling(fødselsdato, BigDecimal.valueOf(100)))) - .kontoer(kontoer) - .søknad(fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, utsettelseFom.minusDays(1))) - .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, ARBEID, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(arbeidsforhold) + .endringAvStilling(new EndringAvStilling(fødselsdato, BigDecimal.valueOf(100)))) + .kontoer(kontoer) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, utsettelseFom.minusDays(1))) + .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, ARBEID, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertDeTreFørstePeriodene(resultat, fødselsdato); - //2 neste uker med gyldig utsettelse + // 2 neste uker med gyldig utsettelse var uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getUtsettelseÅrsak()).isEqualTo(ARBEID); assertThat(uttakPeriode.getFom()).isEqualTo(utsettelseFom); @@ -155,24 +182,29 @@ void UT1110_periode_med_utsettelse_pga_arbeid_med_50_prosent_stilling_skal_manue var fødselsdato = LocalDate.of(2018, 1, 1); var utsettelseFom = fødselsdato.plusWeeks(10); var utsettelseTom = fødselsdato.plusWeeks(12).minusDays(1); - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 75)) - .konto(konto(FELLESPERIODE, 80)) - .konto(konto(FEDREKVOTE, 75)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 75)) + .konto(konto(FELLESPERIODE, 80)) + .konto(konto(FEDREKVOTE, 75)); var arbeidsforhold = new Arbeidsforhold(ARBEIDSFORHOLD); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).kontoer(kontoer) - .søknad(fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, utsettelseFom.minusDays(1))) - .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, ARBEID, null))) - .arbeid( - new Arbeid.Builder().arbeidsforhold(arbeidsforhold).endringAvStilling(new EndringAvStilling(utsettelseFom, BigDecimal.valueOf(50)))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .kontoer(kontoer) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, utsettelseFom.minusDays(1))) + .oppgittPeriode(utsettelsePeriode(utsettelseFom, utsettelseTom, ARBEID, null))) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(arbeidsforhold) + .endringAvStilling(new EndringAvStilling(utsettelseFom, BigDecimal.valueOf(50)))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertDeTreFørstePeriodene(resultat, fødselsdato); - //2 neste uker med utsettelse + // 2 neste uker med utsettelse var uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getUtsettelseÅrsak()).isEqualTo(ARBEID); assertThat(uttakPeriode.getFom()).isEqualTo(utsettelseFom); @@ -185,17 +217,26 @@ void UT1110_periode_med_utsettelse_pga_arbeid_med_50_prosent_stilling_skal_manue @Test void periode_med_utsettelse_pga_ferie_skal_innvilges() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), FERIE, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + FERIE, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertDeTreFørstePeriodene(resultat, fødselsdato); - //2 neste uker med gyldig utsettelse + // 2 neste uker med gyldig utsettelse var uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getUtsettelseÅrsak()).isEqualTo(FERIE); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10)); @@ -207,10 +248,19 @@ void periode_med_utsettelse_pga_ferie_skal_innvilges() { @Test void skal_ikke_utlede_stønadskontotype_ved_innvilgelse_av_utsettelse() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), FERIE, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + FERIE, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); @@ -223,10 +273,19 @@ void periode_med_utsettelse_pga_ferie_skal_innvilges() { @Test void periode_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet_bevegelige_helligdager() { var fødselsdato = LocalDate.of(2018, 1, 15); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), FERIE, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + FERIE, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(8); @@ -241,7 +300,7 @@ void periode_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet_bevege assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); - //2 neste uker med ugyldig utsettelse grunnet bevegelig helligdag + // 2 neste uker med ugyldig utsettelse grunnet bevegelig helligdag // 29.03 - 29.03 er en periode fordi 29.mars er skjærtorsdag uttakPeriode = resultat.get(4).uttakPeriode(); @@ -249,8 +308,10 @@ void periode_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet_bevege assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10).plusDays(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(10).plusDays(3)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(uttakPeriode.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); - assertThat(uttakPeriode.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); + assertThat(uttakPeriode.getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); + assertThat(uttakPeriode.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); // 30.03 - 30.03 er en periode fordi 30.mars er en helligdag @@ -259,8 +320,10 @@ void periode_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet_bevege assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10).plusDays(4)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(10).plusDays(4)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(uttakPeriode.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); - assertThat(uttakPeriode.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); + assertThat(uttakPeriode.getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); + assertThat(uttakPeriode.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); // 02.04 - 02.04 er en periode fordi 02.april er 2.påskedag @@ -269,8 +332,10 @@ void periode_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet_bevege assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(11)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(11)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(uttakPeriode.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); - assertThat(uttakPeriode.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); + assertThat(uttakPeriode.getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); + assertThat(uttakPeriode.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); // 03.04 - 08.04 er en periode fordi det er resten av perioden, uten helligdag @@ -285,12 +350,28 @@ void periode_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet_bevege @Test void flere_perioder_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet_bevegelige_helligdager() { var fødselsdato = LocalDate.of(2018, 1, 15); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), FERIE, null)) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(17).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(17), fødselsdato.plusWeeks(18).minusDays(1), FERIE, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + FERIE, + null)) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(12), + fødselsdato.plusWeeks(17).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(17), + fødselsdato.plusWeeks(18).minusDays(1), + FERIE, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(12); @@ -305,7 +386,7 @@ void flere_perioder_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); - //2 neste uker med ugyldig utsettelse grunnet bevegelig helligdag + // 2 neste uker med ugyldig utsettelse grunnet bevegelig helligdag // 29.03 - 29.03 er en periode fordi 29.mars er skjærtorsdag uttakPeriode = resultat.get(4).uttakPeriode(); @@ -313,8 +394,10 @@ void flere_perioder_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10).plusDays(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(10).plusDays(3)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(uttakPeriode.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); - assertThat(uttakPeriode.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); + assertThat(uttakPeriode.getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); + assertThat(uttakPeriode.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); // 30.03 - 30.03 er en periode fordi 30.mars er en helligdag (langfredag) @@ -323,8 +406,10 @@ void flere_perioder_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10).plusDays(4)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(10).plusDays(4)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(uttakPeriode.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); - assertThat(uttakPeriode.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); + assertThat(uttakPeriode.getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); + assertThat(uttakPeriode.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); // 02.04 - 02.04 er en periode fordi 02.april er 2.påskedag @@ -333,8 +418,10 @@ void flere_perioder_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(11)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(11)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(uttakPeriode.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); - assertThat(uttakPeriode.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); + assertThat(uttakPeriode.getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); + assertThat(uttakPeriode.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); // 03.04 - 08.04 er en periode fordi det er resten av perioden, uten helligdag @@ -366,8 +453,10 @@ void flere_perioder_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(17).plusDays(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(17).plusDays(3)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(uttakPeriode.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); - assertThat(uttakPeriode.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); + assertThat(uttakPeriode.getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); + assertThat(uttakPeriode.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); assertThat(uttakPeriode.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); // 18.05 - 20.05 er en periode fordi det er resten av perioden, uten helligdag @@ -382,17 +471,26 @@ void flere_perioder_med_utsettelse_pga_ferie_skal_til_manuell_behandling_grunnet @Test void periode_med_ugyldig_utsettelse_skal_til_manuell_behandling() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), INNLAGT_BARN, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + INNLAGT_BARN, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertDeTreFørstePeriodene(resultat, fødselsdato); - //2 neste uker med forsøkt utsettelse + // 2 neste uker med forsøkt utsettelse var uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getUtsettelseÅrsak()).isEqualTo(INNLAGT_BARN); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10)); @@ -404,20 +502,26 @@ void periode_med_ugyldig_utsettelse_skal_til_manuell_behandling() { @Test void utsettelse_uten_stønadskonto_på_helligdag_skal_gi_ugyldig_opphold() { var fødselsdato = LocalDate.of(2018, 11, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, LocalDate.of(2018, 12, 24))) - .oppgittPeriode(utsettelsePeriode(LocalDate.of(2018, 12, 25), LocalDate.of(2018, 12, 25), FERIE, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, LocalDate.of(2018, 12, 24))) + .oppgittPeriode(utsettelsePeriode( + LocalDate.of(2018, 12, 25), LocalDate.of(2018, 12, 25), FERIE, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); - //2 neste uker med gyldig utsettelse + // 2 neste uker med gyldig utsettelse var utsettelse = resultat.get(3).uttakPeriode(); assertThat(utsettelse.getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(utsettelse.getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); - assertThat(utsettelse.getPeriodeResultatÅrsak()).isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); - //Utsettelse periode med UKJENT stønadskontotype er settes til neste tilgjengelige stønadskontotype + assertThat(utsettelse.getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.IKKE_GYLDIG_GRUNN_FOR_UTSETTELSE); + assertThat(utsettelse.getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.UTSETTELSE_FERIE_PÅ_BEVEGELIG_HELLIGDAG); + // Utsettelse periode med UKJENT stønadskontotype er settes til neste tilgjengelige + // stønadskontotype assertThat(utsettelse.getStønadskontotype()).isEqualTo(MØDREKVOTE); assertThat(utsettelse.getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(1)); } @@ -425,17 +529,26 @@ void periode_med_ugyldig_utsettelse_skal_til_manuell_behandling() { @Test void utsettelse_periode_med_ukjent_kontotype_må_settes_til_neste_tilgjengelig() { var fødselsdato = LocalDate.of(2018, 1, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(12).minusDays(1), SYKDOM_SKADE, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(12).minusDays(1), + SYKDOM_SKADE, + null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(4); assertDeTreFørstePeriodene(resultat, fødselsdato); - //2 neste uker med forsøkt utsettelse + // 2 neste uker med forsøkt utsettelse var uttakPeriode = resultat.get(3).uttakPeriode(); assertThat(uttakPeriode.getUtsettelseÅrsak()).isEqualTo(SYKDOM_SKADE); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(10)); @@ -447,106 +560,149 @@ void periode_med_ugyldig_utsettelse_skal_til_manuell_behandling() { @Test void pleiepenger_utsettelse_skal_trekke_fra_fellesperiode() { - //Over 7 uker for tidlig, får pleiepenger. Utsettelsen skal avlås og det skal trekkes dager + // Over 7 uker for tidlig, får pleiepenger. Utsettelsen skal avlås og det skal trekkes dager var termindato = LocalDate.of(2019, 9, 1); var fødselsdato = LocalDate.of(2019, 7, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)).søknad(fødselSøknad() - //Starter med pleiepenger - .oppgittPeriode(utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT)) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), termindato))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) + .søknad(fødselSøknad() + // Starter med pleiepenger + .oppgittPeriode(utsettelsePeriode( + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1), + INNLAGT_BARN, + INNLEGGELSE_BARN_GODKJENT)) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato.plusWeeks(6), termindato))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(0).uttakPeriode().getUtsettelseÅrsak()).isEqualTo(INNLAGT_BARN); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); - assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); + assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FELLESPERIODE); } @Test void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { - //Over 7 uker for tidlig, får pleiepenger. Utsettelsen skal avlås og det skal trekkes dager + // Over 7 uker for tidlig, får pleiepenger. Utsettelsen skal avlås og det skal trekkes dager var termindato = LocalDate.of(2019, 9, 1); var fødselsdato = LocalDate.of(2019, 7, 1); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(100)); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).kontoer(kontoer) - .datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) - .søknad(fødselSøknad() - //Starter med pleiepenger - .oppgittPeriode(utsettelsePeriode(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1), INNLAGT_BARN, INNLEGGELSE_BARN_GODKJENT)) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), termindato))); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(100)); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .kontoer(kontoer) + .datoer(new Datoer.Builder().termin(termindato).fødsel(fødselsdato)) + .søknad(fødselSøknad() + // Starter med pleiepenger + .oppgittPeriode(utsettelsePeriode( + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1), + INNLAGT_BARN, + INNLEGGELSE_BARN_GODKJENT)) + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), termindato))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(2); assertThat(resultat.get(0).uttakPeriode().getUtsettelseÅrsak()).isEqualTo(INNLAGT_BARN); assertThat(resultat.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); - assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); + assertThat(resultat.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } @Test void skal_trekke_fra_mødrekvote_ved_avslag_ferie_innenfor_første_seks_uker() { - //Søkt om ferieutsettelse innenfor seks uker etter fødsel. Utsettelsen skal avlås og det skal trekkes dager fra mødrekvote + // Søkt om ferieutsettelse innenfor seks uker etter fødsel. Utsettelsen skal avlås og det + // skal trekkes dager fra mødrekvote var fødselsdato = LocalDate.of(2019, 7, 1); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(4))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(4).plusDays(1), fødselsdato.plusWeeks(8), FERIE, null))); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(4))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(4).plusDays(1), fødselsdato.plusWeeks(8), FERIE, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.get(1).uttakPeriode().getUtsettelseÅrsak()).isEqualTo(FERIE); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isNotEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isNotEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(MØDREKVOTE); } @Test void skal_trekke_fra_foreldrepengekvote_ved_avslag_ferie_innenfor_første_seks_uker_ved_aleneomsorg_far() { var fødselsdato = LocalDate.of(2019, 7, 1); - var grunnlag = aleneomsorgUtsettelseGrunnlag(fødselsdato, farBehandling()).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(4))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(4).plusDays(1), fødselsdato.plusWeeks(8), FERIE, null))); + var grunnlag = aleneomsorgUtsettelseGrunnlag(fødselsdato, farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(4))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(4).plusDays(1), fødselsdato.plusWeeks(8), FERIE, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.get(1).uttakPeriode().getUtsettelseÅrsak()).isEqualTo(FERIE); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isNotEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isNotEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } @Test void skal_trekke_fra_foreldrepengekvote_ved_avslag_ferie_innenfor_første_seks_uker_ved_aleneomsorg_mor() { var fødselsdato = LocalDate.of(2019, 7, 1); - var grunnlag = aleneomsorgUtsettelseGrunnlag(fødselsdato, morBehandling()).datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(fødselSøknad().oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(4))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(4).plusDays(1), fødselsdato.plusWeeks(8), FERIE, null))); + var grunnlag = aleneomsorgUtsettelseGrunnlag(fødselsdato, morBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødselsdato, fødselsdato.plusWeeks(4))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(4).plusDays(1), fødselsdato.plusWeeks(8), FERIE, null))); var resultat = fastsettPerioder(grunnlag); assertThat(resultat).hasSize(3); assertThat(resultat.get(1).uttakPeriode().getUtsettelseÅrsak()).isEqualTo(FERIE); assertThat(resultat.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()).isNotZero(); - assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isNotEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).decimalValue()) + .isNotZero(); + assertThat(resultat.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isNotEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(1).uttakPeriode().getStønadskontotype()).isEqualTo(FORELDREPENGER); } @Test void utsettelse_før_søknad_mottatt_dato_skal_innvilges() { var fødselsdato = LocalDate.of(2019, 7, 1); - var utsettelse = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10), FERIE, fødselsdato.plusWeeks(8), - fødselsdato.plusWeeks(8), null, null); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))).oppgittPeriode(utsettelse)); + var utsettelse = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10), + FERIE, + fødselsdato.plusWeeks(8), + fødselsdato.plusWeeks(8), + null, + null); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(utsettelse)); var resultat = fastsettPerioder(grunnlag); @@ -560,10 +716,21 @@ void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { var fødselsdato = LocalDate.of(2019, 7, 1); var tidligstMottattDato = fødselsdato; var senestMottattDato = fødselsdato.plusWeeks(8); - var utsettelse = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10), FERIE, senestMottattDato, - tidligstMottattDato, null, null); - var grunnlag = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6).minusDays(1))).oppgittPeriode(utsettelse)); + var utsettelse = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10), + FERIE, + senestMottattDato, + tidligstMottattDato, + null, + null); + var grunnlag = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(6).minusDays(1))) + .oppgittPeriode(utsettelse)); var resultat = fastsettPerioder(grunnlag); @@ -574,22 +741,37 @@ void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { @Test void utsettelse_ved_tomme_dager_skal_også_avslås() { var fødselsdato = LocalDate.of(2019, 7, 1); - var uttakAvsluttetMedUtsettelse = basicUtsettelseGrunnlag(fødselsdato).søknad( - fødselSøknad().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10).minusDays(1))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(36).minusDays(1))) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(36), fødselsdato.plusWeeks(37).minusDays(1), FERIE, null)) - .oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(37), fødselsdato.plusWeeks(100), ARBEID, null))).build(); + var uttakAvsluttetMedUtsettelse = basicUtsettelseGrunnlag(fødselsdato) + .søknad(fødselSøknad() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, + fødselsdato, + fødselsdato.plusWeeks(10).minusDays(1))) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(36).minusDays(1))) + .oppgittPeriode(utsettelsePeriode( + fødselsdato.plusWeeks(36), + fødselsdato.plusWeeks(37).minusDays(1), + FERIE, + null)) + .oppgittPeriode( + utsettelsePeriode(fødselsdato.plusWeeks(37), fødselsdato.plusWeeks(100), ARBEID, null))) + .build(); var resultat = fastsettPerioder(uttakAvsluttetMedUtsettelse); assertThat(resultat).hasSize(5); - assertThat(resultat.get(3).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(3).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(3).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(resultat.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo( - IkkeOppfyltÅrsak.INGEN_STØNADSDAGER_IGJEN_FOR_AVSLÅTT_UTSETTELSE); + assertThat(resultat.get(3).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.INGEN_STØNADSDAGER_IGJEN_FOR_AVSLÅTT_UTSETTELSE); - assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(resultat.get(4).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(resultat.get(4).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); assertThat(resultat.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); } @@ -597,28 +779,38 @@ void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { @Test void skal_knekke_riktig_på_helligdager_i_jula_ved_utsettelse_pga_ferie() { var fødselsdato = LocalDate.of(2019, 10, 10); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build())) - .søknad( - new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelsePeriode(fødselsdato.plusWeeks(6), LocalDate.of(2020, 1, 1), FERIE, null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato, fødselsdato.plusWeeks(6).minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + MØDREKVOTE, + Trekkdager.ZERO, + Utbetalingsgrad.ZERO)) + .build())) + .søknad(new Søknad.Builder() + .type(FØDSEL) + .oppgittPeriode( + utsettelsePeriode(fødselsdato.plusWeeks(6), LocalDate.of(2020, 1, 1), FERIE, null))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(5); - //Før jul ok + // Før jul ok assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //25 - assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - //26 - assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - //Romjul + // 25 + assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + // 26 + assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + // Romjul assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //1 - assertThat(perioder.get(4).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + // 1 + assertThat(perioder.get(4).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); } @Test @@ -626,18 +818,27 @@ void pleiepenger_utsettelse_skal_trekke_fra_foreldrepenger() { var fødselsdato = LocalDate.of(2019, 10, 10); var hvFom = fødselsdato.plusWeeks(6); var hvTom = fødselsdato.plusWeeks(7).minusDays(1); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato, hvFom.minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build())).søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelsePeriode(hvFom, hvTom, HV_OVELSE, null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato, hvFom.minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + MØDREKVOTE, + Trekkdager.ZERO, + Utbetalingsgrad.ZERO)) + .build())) + .søknad(new Søknad.Builder() + .type(FØDSEL) + .oppgittPeriode(utsettelsePeriode(hvFom, hvTom, HV_OVELSE, null))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); - assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); } @@ -646,18 +847,26 @@ void utsettelse_pga_heimevernet_skal_innvilges_hvis_dokumentert() { var fødselsdato = LocalDate.of(2019, 10, 10); var hvFom = fødselsdato.plusWeeks(6); var hvTom = fødselsdato.plusWeeks(7).minusDays(1); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato, hvFom.minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build())).søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelsePeriode(hvFom, hvTom, HV_OVELSE, HV_OVELSE_GODKJENT))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato, hvFom.minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + MØDREKVOTE, + Trekkdager.ZERO, + Utbetalingsgrad.ZERO)) + .build())) + .søknad(new Søknad.Builder() + .type(FØDSEL) + .oppgittPeriode(utsettelsePeriode(hvFom, hvTom, HV_OVELSE, HV_OVELSE_GODKJENT))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); } @@ -666,17 +875,25 @@ void utsettelse_pga_heimevernet_skal_til_manuell_hvis_ikke_dokumentert() { var fødselsdato = LocalDate.of(2019, 10, 10); var hvFom = fødselsdato.plusWeeks(6); var hvTom = fødselsdato.plusWeeks(7).minusDays(1); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato, hvFom.minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build())).søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelsePeriode(hvFom, hvTom, HV_OVELSE, null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato, hvFom.minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + MØDREKVOTE, + Trekkdager.ZERO, + Utbetalingsgrad.ZERO)) + .build())) + .søknad(new Søknad.Builder() + .type(FØDSEL) + .oppgittPeriode(utsettelsePeriode(hvFom, hvTom, HV_OVELSE, null))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); - assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); } @Test @@ -684,18 +901,27 @@ void utsettelse_pga_heimevernet_skal_til_manuell_hvis_ikke_dokumentert() { var fødselsdato = LocalDate.of(2019, 10, 10); var tiltakFom = fødselsdato.plusWeeks(6); var tiltakTom = fødselsdato.plusWeeks(7).minusDays(1); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato, tiltakFom.minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build())).søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelsePeriode(tiltakFom, tiltakTom, NAV_TILTAK, null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato, tiltakFom.minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + MØDREKVOTE, + Trekkdager.ZERO, + Utbetalingsgrad.ZERO)) + .build())) + .søknad(new Søknad.Builder() + .type(FØDSEL) + .oppgittPeriode(utsettelsePeriode(tiltakFom, tiltakTom, NAV_TILTAK, null))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); - assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(5)); } @@ -704,19 +930,26 @@ void utsettelse_pga_tiltak_i_regi_av_nav_skal_innvilges_hvis_dokumentert() { var fødselsdato = LocalDate.of(2019, 10, 10); var tiltakFom = fødselsdato.plusWeeks(6); var tiltakTom = fødselsdato.plusWeeks(7).minusDays(1); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato, tiltakFom.minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build())) - .søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelsePeriode(tiltakFom, tiltakTom, NAV_TILTAK, NAV_TILTAK_GODKJENT))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato, tiltakFom.minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + MØDREKVOTE, + Trekkdager.ZERO, + Utbetalingsgrad.ZERO)) + .build())) + .søknad(new Søknad.Builder() + .type(FØDSEL) + .oppgittPeriode(utsettelsePeriode(tiltakFom, tiltakTom, NAV_TILTAK, NAV_TILTAK_GODKJENT))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); } @@ -725,94 +958,142 @@ void utsettelse_pga_tiltak_i_regi_av_nav_skal_til_manuell_hvis_ikke_dokumentert( var fødselsdato = LocalDate.of(2019, 10, 10); var tiltakFom = fødselsdato.plusWeeks(6); var tiltakTom = fødselsdato.plusWeeks(7).minusDays(1); - var grunnlag = basicGrunnlagFar(fødselsdato).annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato, tiltakFom.minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build())).søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelsePeriode(tiltakFom, tiltakTom, NAV_TILTAK, null))); + var grunnlag = basicGrunnlagFar(fødselsdato) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato, tiltakFom.minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), + MØDREKVOTE, + Trekkdager.ZERO, + Utbetalingsgrad.ZERO)) + .build())) + .søknad(new Søknad.Builder() + .type(FØDSEL) + .oppgittPeriode(utsettelsePeriode(tiltakFom, tiltakTom, NAV_TILTAK, null))); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(1); - assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); } @Test void avslag_utsettelse_med_trekkdager_skal_knekkes_når_saldo_går_tom() { var fødselsdato = LocalDate.of(2021, 1, 20); - //Skal få avslag pga mor ikke er i aktivitet + // Skal få avslag pga mor ikke er i aktivitet var fom = fødselsdato.plusWeeks(6); var tom = fødselsdato.plusWeeks(9); - //Skal gå tom for dager - var utsettelse = OppgittPeriode.forUtsettelse(fom, tom, ARBEID, fødselsdato, fødselsdato, MorsAktivitet.ARBEID, MORS_AKTIVITET_IKKE_GODKJENT); - var grunnlag = basicGrunnlagFar(fødselsdato).rettOgOmsorg(bareFarRett()) - .kontoer(new Kontoer.Builder().konto(new Konto.Builder().trekkdager(10).type(FORELDREPENGER))) - .søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelse)); + // Skal gå tom for dager + var utsettelse = OppgittPeriode.forUtsettelse( + fom, tom, ARBEID, fødselsdato, fødselsdato, MorsAktivitet.ARBEID, MORS_AKTIVITET_IKKE_GODKJENT); + var grunnlag = basicGrunnlagFar(fødselsdato) + .rettOgOmsorg(bareFarRett()) + .kontoer(new Kontoer.Builder() + .konto(new Konto.Builder().trekkdager(10).type(FORELDREPENGER))) + .søknad(new Søknad.Builder().type(FØDSEL).oppgittPeriode(utsettelse)); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(2); assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); assertThat(perioder.get(0).uttakPeriode().getFom()).isEqualTo(fom); - assertThat(perioder.get(0).uttakPeriode().getTom()).isEqualTo(fom.plusWeeks(2).minusDays(1)); - assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); - assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()).isTrue(); + assertThat(perioder.get(0).uttakPeriode().getTom()) + .isEqualTo(fom.plusWeeks(2).minusDays(1)); + assertThat(perioder.get(0).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(0).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD).merEnn0()) + .isTrue(); assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT); - assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo( - IkkeOppfyltÅrsak.INGEN_STØNADSDAGER_IGJEN_FOR_AVSLÅTT_UTSETTELSE); + assertThat(perioder.get(1).uttakPeriode().getPeriodeResultatÅrsak()) + .isEqualTo(IkkeOppfyltÅrsak.INGEN_STØNADSDAGER_IGJEN_FOR_AVSLÅTT_UTSETTELSE); assertThat(perioder.get(1).uttakPeriode().getFom()).isEqualTo(fom.plusWeeks(2)); assertThat(perioder.get(1).uttakPeriode().getTom()).isEqualTo(tom); - assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(Utbetalingsgrad.ZERO); + assertThat(perioder.get(1).uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)) + .isEqualTo(Utbetalingsgrad.ZERO); assertThat(perioder.get(1).uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(Trekkdager.ZERO); } @Test void bfhr_utsettelse_som_trenger_dok_og_aktivitetskrav_vurdering_skal_gå_til_manuell() { var fødselsdato = LocalDate.of(2019, 10, 10); - var periode = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(6), fødselsdato.plusWeeks(10).minusDays(1), null, false, - fødselsdato, fødselsdato, MorsAktivitet.ARBEID, MORS_AKTIVITET_GODKJENT); - var sykdom = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(11).minusDays(1), SYKDOM_SKADE, fødselsdato, - fødselsdato, MorsAktivitet.ARBEID, SYKDOM_SØKER_GODKJENT); - - var innleggelse = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(11), fødselsdato.plusWeeks(12).minusDays(1), INNLAGT_SØKER, fødselsdato, - fødselsdato, MorsAktivitet.UTDANNING, INNLEGGELSE_SØKER_GODKJENT); - - var sykdomBarn = OppgittPeriode.forUtsettelse(fødselsdato.plusWeeks(12), fødselsdato.plusWeeks(13).minusDays(1), INNLAGT_BARN, fødselsdato, - fødselsdato, MorsAktivitet.INTROPROG, INNLEGGELSE_BARN_GODKJENT); - - var grunnlag = basicGrunnlagFar(fødselsdato).kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 100))) - .rettOgOmsorg(bareFarRett()) - .søknad(søknad(FØDSEL, periode, sykdom, innleggelse, sykdomBarn)); + var periode = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(6), + fødselsdato.plusWeeks(10).minusDays(1), + null, + false, + fødselsdato, + fødselsdato, + MorsAktivitet.ARBEID, + MORS_AKTIVITET_GODKJENT); + var sykdom = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(10), + fødselsdato.plusWeeks(11).minusDays(1), + SYKDOM_SKADE, + fødselsdato, + fødselsdato, + MorsAktivitet.ARBEID, + SYKDOM_SØKER_GODKJENT); + + var innleggelse = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(11), + fødselsdato.plusWeeks(12).minusDays(1), + INNLAGT_SØKER, + fødselsdato, + fødselsdato, + MorsAktivitet.UTDANNING, + INNLEGGELSE_SØKER_GODKJENT); + + var sykdomBarn = OppgittPeriode.forUtsettelse( + fødselsdato.plusWeeks(12), + fødselsdato.plusWeeks(13).minusDays(1), + INNLAGT_BARN, + fødselsdato, + fødselsdato, + MorsAktivitet.INTROPROG, + INNLEGGELSE_BARN_GODKJENT); + + var grunnlag = basicGrunnlagFar(fødselsdato) + .kontoer(new Kontoer.Builder().konto(konto(FORELDREPENGER, 100))) + .rettOgOmsorg(bareFarRett()) + .søknad(søknad(FØDSEL, periode, sykdom, innleggelse, sykdomBarn)); var perioder = fastsettPerioder(grunnlag); assertThat(perioder).hasSize(4); - assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); - - assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(2).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); - - assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(perioder.get(3).uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); + assertThat(perioder.get(1).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(1).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); + + assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(2).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); + + assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()) + .isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); + assertThat(perioder.get(3).uttakPeriode().getManuellbehandlingårsak()) + .isEqualTo(Manuellbehandlingårsak.AKTIVITEKTSKRAVET_MÅ_SJEKKES_MANUELT); } private void assertDeTreFørstePeriodene(List resultat, LocalDate fødselsdato) { - //3 uker før fødsel - innvilges + // 3 uker før fødsel - innvilges var uttakPeriode = resultat.get(0).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.minusWeeks(3)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //6 første uker mødrekvote innvilges + // 6 første uker mødrekvote innvilges uttakPeriode = resultat.get(1).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1)); assertThat(uttakPeriode.getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); - //4 neste uker mødrekvote innvilges + // 4 neste uker mødrekvote innvilges uttakPeriode = resultat.get(2).uttakPeriode(); assertThat(uttakPeriode.getFom()).isEqualTo(fødselsdato.plusWeeks(6)); assertThat(uttakPeriode.getTom()).isEqualTo(fødselsdato.plusWeeks(10).minusDays(1)); @@ -828,12 +1109,20 @@ private RegelGrunnlag.Builder basicUtsettelseGrunnlag(LocalDate fødselsdato) { } private RegelGrunnlag.Builder aleneomsorgUtsettelseGrunnlag(LocalDate fødselsdato, Behandling.Builder behandling) { - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); - return basicGrunnlag().datoer(datoer(fødselsdato)).behandling(behandling).kontoer(kontoer).rettOgOmsorg(aleneomsorg()); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(FORELDREPENGER).trekkdager(130)); + return basicGrunnlag() + .datoer(datoer(fødselsdato)) + .behandling(behandling) + .kontoer(kontoer) + .rettOgOmsorg(aleneomsorg()); } private RegelGrunnlag.Builder basicUtsettelseGrunnlag(LocalDate fødselsdato, Behandling.Builder behandling) { - return basicGrunnlag().datoer(datoer(fødselsdato)).behandling(behandling).rettOgOmsorg(beggeRett()); + return basicGrunnlag() + .datoer(datoer(fødselsdato)) + .behandling(behandling) + .rettOgOmsorg(beggeRett()); } private Søknad.Builder fødselSøknad() { diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/VirkedagerTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/VirkedagerTest.java index ae1affae..95464b8c 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/VirkedagerTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/VirkedagerTest.java @@ -7,7 +7,6 @@ import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; - import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -19,7 +18,8 @@ class VirkedagerTest { void setUp() { var iDag = LocalDate.now(); var mandag = iDag.minusDays(iDag.getDayOfWeek().getValue() - DayOfWeek.MONDAY.getValue()); - uke = Stream.of(DayOfWeek.values()).collect(Collectors.toMap(day -> day, day -> mandag.plusDays(day.ordinal()))); + uke = Stream.of(DayOfWeek.values()) + .collect(Collectors.toMap(day -> day, day -> mandag.plusDays(day.ordinal()))); } @Test @@ -28,17 +28,27 @@ void skalBeregneAntallVirkedager() { var søndag = getDayOfWeek(DayOfWeek.SUNDAY); Assertions.assertThat(Virkedager.beregnAntallVirkedager(mandag, søndag)).isEqualTo(5); - assertThat(Virkedager.beregnAntallVirkedager(mandag, søndag.plusDays(1))).isEqualTo(6); - assertThat(Virkedager.beregnAntallVirkedager(mandag, søndag.plusDays(10))).isEqualTo(13); - assertThat(Virkedager.beregnAntallVirkedager(mandag.plusDays(1), søndag)).isEqualTo(4); - assertThat(Virkedager.beregnAntallVirkedager(mandag.plusDays(1), søndag.plusDays(1))).isEqualTo(5); - assertThat(Virkedager.beregnAntallVirkedager(mandag.plusDays(4), søndag)).isEqualTo(1); - assertThat(Virkedager.beregnAntallVirkedager(mandag.plusDays(5), søndag)).isZero(); - - assertThat(Virkedager.beregnAntallVirkedager(mandag.minusDays(1), søndag)).isEqualTo(5); - assertThat(Virkedager.beregnAntallVirkedager(mandag.minusDays(2), søndag)).isEqualTo(5); - assertThat(Virkedager.beregnAntallVirkedager(mandag.minusDays(3), søndag)).isEqualTo(6); - assertThat(Virkedager.beregnAntallVirkedager(mandag.minusDays(3), søndag.plusDays(1))).isEqualTo(7); + assertThat(Virkedager.beregnAntallVirkedager(mandag, søndag.plusDays(1))) + .isEqualTo(6); + assertThat(Virkedager.beregnAntallVirkedager(mandag, søndag.plusDays(10))) + .isEqualTo(13); + assertThat(Virkedager.beregnAntallVirkedager(mandag.plusDays(1), søndag)) + .isEqualTo(4); + assertThat(Virkedager.beregnAntallVirkedager(mandag.plusDays(1), søndag.plusDays(1))) + .isEqualTo(5); + assertThat(Virkedager.beregnAntallVirkedager(mandag.plusDays(4), søndag)) + .isEqualTo(1); + assertThat(Virkedager.beregnAntallVirkedager(mandag.plusDays(5), søndag)) + .isZero(); + + assertThat(Virkedager.beregnAntallVirkedager(mandag.minusDays(1), søndag)) + .isEqualTo(5); + assertThat(Virkedager.beregnAntallVirkedager(mandag.minusDays(2), søndag)) + .isEqualTo(5); + assertThat(Virkedager.beregnAntallVirkedager(mandag.minusDays(3), søndag)) + .isEqualTo(6); + assertThat(Virkedager.beregnAntallVirkedager(mandag.minusDays(3), søndag.plusDays(1))) + .isEqualTo(7); } @Test diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTidsperiodeForbeholdtMorTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTidsperiodeForbeholdtMorTest.java index eeb6075c..c34c3459 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTidsperiodeForbeholdtMorTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTidsperiodeForbeholdtMorTest.java @@ -1,15 +1,11 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser; - import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.MorsAktivitet.INNLAGT; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype.FØDSEL; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UtsettelseÅrsak.INNLAGT_SØKER; import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlagImpl; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.DokumentasjonVurdering; @@ -18,6 +14,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.fpsak.nare.evaluation.Evaluation; import no.nav.fpsak.nare.evaluation.Resultat; +import org.junit.jupiter.api.Test; class SjekkOmTidsperiodeForbeholdtMorTest { @@ -89,11 +86,21 @@ private SjekkOmTidsperiodeForbeholdtMor sjekk() { return new SjekkOmTidsperiodeForbeholdtMor(); } - private FastsettePeriodeGrunnlagImpl grunnlag(LocalDate familiehendelse, LocalDate periodeFom, LocalDate periodeTom) { + private FastsettePeriodeGrunnlagImpl grunnlag( + LocalDate familiehendelse, LocalDate periodeFom, LocalDate periodeTom) { var datoer = new Datoer.Builder().fødsel(familiehendelse); - var regelGrunnlag = new RegelGrunnlag.Builder().datoer(datoer).søknad(new Søknad.Builder().type(FØDSEL)).build(); - var aktuellPeriode = OppgittPeriode.forUtsettelse(periodeFom, periodeTom, INNLAGT_SØKER, periodeFom, periodeFom, INNLAGT, - DokumentasjonVurdering.INNLEGGELSE_SØKER_GODKJENT); + var regelGrunnlag = new RegelGrunnlag.Builder() + .datoer(datoer) + .søknad(new Søknad.Builder().type(FØDSEL)) + .build(); + var aktuellPeriode = OppgittPeriode.forUtsettelse( + periodeFom, + periodeTom, + INNLAGT_SØKER, + periodeFom, + periodeFom, + INNLAGT, + DokumentasjonVurdering.INNLEGGELSE_SØKER_GODKJENT); return new FastsettePeriodeGrunnlagImpl(regelGrunnlag, null, null, aktuellPeriode); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTomForAlleSineKontoerTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTomForAlleSineKontoerTest.java index d818080c..dac94d0c 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTomForAlleSineKontoerTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/SjekkOmTomForAlleSineKontoerTest.java @@ -5,9 +5,6 @@ import java.time.LocalDate; import java.util.List; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlagImpl; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.RegelGrunnlagTestBuilder; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; @@ -24,24 +21,29 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregningGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregningTjeneste; import no.nav.fpsak.nare.evaluation.Resultat; +import org.junit.jupiter.api.Test; class SjekkOmTomForAlleSineKontoerTest { @Test - void når_søknadstype_er_fødsel_og_søker_er_mor_og_begge_har_rett_skal_søker_sine_kontoer_vær_MK_FP_og_FORELDREPENGER() { // 1 + void + når_søknadstype_er_fødsel_og_søker_er_mor_og_begge_har_rett_skal_søker_sine_kontoer_vær_MK_FP_og_FORELDREPENGER() { // 1 var grunnlag = RegelGrunnlagTestBuilder.create() - .behandling(new Behandling.Builder().søkerErMor(true)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .build(); + .behandling(new Behandling.Builder().søkerErMor(true)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .build(); var stønadskontotypene = stønadskontotypene(grunnlag); - assertThat(stønadskontotypene).containsExactly(Stønadskontotype.MØDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); + assertThat(stønadskontotypene) + .containsExactly( + Stønadskontotype.MØDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); } private List stønadskontotypene(RegelGrunnlag grunnlag) { - return SjekkOmTomForAlleSineKontoer.hentSøkerSineKontoer(new FastsettePeriodeGrunnlagImpl(grunnlag, null, null, null)); + return SjekkOmTomForAlleSineKontoer.hentSøkerSineKontoer( + new FastsettePeriodeGrunnlagImpl(grunnlag, null, null, null)); } @Test @@ -49,124 +51,146 @@ class SjekkOmTomForAlleSineKontoerTest { var periodeStart = LocalDate.of(2018, 1, 8); var periodeSlutt = periodeStart.plusWeeks(6); - var uttakPeriode = OppgittPeriode.forVanligPeriode(Stønadskontotype.MØDREKVOTE, periodeStart, periodeSlutt, null, false, null, null, null, - null); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(15 * 5)) - .konto(new Konto.Builder().type(Stønadskontotype.FELLESPERIODE).trekkdager(10 * 5)); + var uttakPeriode = OppgittPeriode.forVanligPeriode( + Stønadskontotype.MØDREKVOTE, periodeStart, periodeSlutt, null, false, null, null, null, null); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(15 * 5)) + .konto(new Konto.Builder().type(Stønadskontotype.FELLESPERIODE).trekkdager(10 * 5)); var grunnlag = RegelGrunnlagTestBuilder.create() - .kontoer(kontoer) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(uttakPeriode).mottattTidspunkt(periodeStart.atStartOfDay())) - .behandling(new Behandling.Builder().søkerErMor(true)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .build(); + .kontoer(kontoer) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(uttakPeriode) + .mottattTidspunkt(periodeStart.atStartOfDay())) + .behandling(new Behandling.Builder().søkerErMor(true)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .build(); var sjekkOmTomForAlleSineKontoer = new SjekkOmTomForAlleSineKontoer(); uttakPeriode.setAktiviteter(grunnlag.getArbeid().getAktiviteter()); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(), List.of(), grunnlag, uttakPeriode.getFom()); - var evaluation = sjekkOmTomForAlleSineKontoer.evaluate( - new FastsettePeriodeGrunnlagImpl(grunnlag, null, SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag), uttakPeriode)); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(), List.of(), grunnlag, uttakPeriode.getFom()); + var evaluation = sjekkOmTomForAlleSineKontoer.evaluate(new FastsettePeriodeGrunnlagImpl( + grunnlag, null, SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag), uttakPeriode)); assertThat(evaluation.result()).isEqualTo(Resultat.NEI); } @Test - void når_søknadstype_er_fødsel_og_søker_er_mor_og_kun_mor_har_rett_skal_søker_sine_kontoer_være_FORELDREPENGER() { // 2 + void + når_søknadstype_er_fødsel_og_søker_er_mor_og_kun_mor_har_rett_skal_søker_sine_kontoer_være_FORELDREPENGER() { // 2 - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(50)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(50)); var grunnlag = RegelGrunnlagTestBuilder.create() - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .behandling(new Behandling.Builder().søkerErMor(true)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .build(); + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .behandling(new Behandling.Builder().søkerErMor(true)) + .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .build(); var stønadskontotypene = stønadskontotypene(grunnlag); assertThat(stønadskontotypene).containsExactly(Stønadskontotype.FORELDREPENGER); } @Test - void når_søknadstype_er_fødsel_og_søker_er_far_og_begge_har_rett_skal_søker_sine_kontoer_være_FK_FP_og_FORELDREPENGER() { // 3 + void + når_søknadstype_er_fødsel_og_søker_er_far_og_begge_har_rett_skal_søker_sine_kontoer_være_FK_FP_og_FORELDREPENGER() { // 3 var grunnlag = RegelGrunnlagTestBuilder.create() - .behandling(new Behandling.Builder().søkerErMor(false)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .build(); + .behandling(new Behandling.Builder().søkerErMor(false)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .build(); var stønadskontotypene = stønadskontotypene(grunnlag); - assertThat(stønadskontotypene).containsExactly(Stønadskontotype.FEDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); + assertThat(stønadskontotypene) + .containsExactly( + Stønadskontotype.FEDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); } @Test - void når_søknadstype_er_fødsel_og_søker_er_far_og_kun_far_har_rett_skal_søker_sine_kontoer_være_FORELDREPENGER() { // 4 + void + når_søknadstype_er_fødsel_og_søker_er_far_og_kun_far_har_rett_skal_søker_sine_kontoer_være_FORELDREPENGER() { // 4 - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(50)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(50)); var grunnlag = RegelGrunnlagTestBuilder.create() - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .behandling(new Behandling.Builder().søkerErMor(false)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) - .build(); + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .behandling(new Behandling.Builder().søkerErMor(false)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true)) + .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL)) + .build(); var stønadskontotypene = stønadskontotypene(grunnlag); assertThat(stønadskontotypene).containsExactly(Stønadskontotype.FORELDREPENGER); } @Test - void når_søknadstype_er_adopsjon_og_søker_er_mor_og_begge_har_rett_skal_søker_sine_kontoer_være_MK_FP_og_FORELDREPENGER() { // 5 + void + når_søknadstype_er_adopsjon_og_søker_er_mor_og_begge_har_rett_skal_søker_sine_kontoer_være_MK_FP_og_FORELDREPENGER() { // 5 var grunnlag = RegelGrunnlagTestBuilder.create() - .behandling(new Behandling.Builder().søkerErMor(true)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) - .build(); + .behandling(new Behandling.Builder().søkerErMor(true)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) + .build(); var stønadskontotypene = stønadskontotypene(grunnlag); - assertThat(stønadskontotypene).containsExactly(Stønadskontotype.MØDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); + assertThat(stønadskontotypene) + .containsExactly( + Stønadskontotype.MØDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); } @Test - void når_søknadstype_er_adopsjon_og_søker_er_mor_og_kun_mor_har_rett_skal_søker_sine_kontoer_være_FORELDREPENGER() { // 6 + void + når_søknadstype_er_adopsjon_og_søker_er_mor_og_kun_mor_har_rett_skal_søker_sine_kontoer_være_FORELDREPENGER() { // 6 - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(50)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(50)); var grunnlag = RegelGrunnlagTestBuilder.create() - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .behandling(new Behandling.Builder().søkerErMor(true)) - .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) - .build(); + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .behandling(new Behandling.Builder().søkerErMor(true)) + .rettOgOmsorg(new RettOgOmsorg.Builder().morHarRett(true)) + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) + .build(); var stønadskontotypene = stønadskontotypene(grunnlag); assertThat(stønadskontotypene).containsExactly(Stønadskontotype.FORELDREPENGER); } @Test - void når_søknadstype_er_adopsjon_og_søker_er_far_og_begge_har_rett_skal_søker_sine_kontoer_være_FK_FP_og_FORELDREPENGER() { // 7 + void + når_søknadstype_er_adopsjon_og_søker_er_far_og_begge_har_rett_skal_søker_sine_kontoer_være_FK_FP_og_FORELDREPENGER() { // 7 var grunnlag = RegelGrunnlagTestBuilder.create() - .behandling(new Behandling.Builder().søkerErMor(false)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) - .build(); + .behandling(new Behandling.Builder().søkerErMor(false)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) + .build(); var stønadskontotypene = stønadskontotypene(grunnlag); - assertThat(stønadskontotypene).containsExactly(Stønadskontotype.FEDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); + assertThat(stønadskontotypene) + .containsExactly( + Stønadskontotype.FEDREKVOTE, Stønadskontotype.FELLESPERIODE, Stønadskontotype.FORELDREPENGER); } @Test - void når_søknadstype_er_adopsjon_og_søker_er_far_og_kun_en_har_rett_skal_søker_sine_kontoer_være_FORELDREPENGER() { // 8 + void + når_søknadstype_er_adopsjon_og_søker_er_far_og_kun_en_har_rett_skal_søker_sine_kontoer_være_FORELDREPENGER() { // 8 - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(50)); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.FORELDREPENGER).trekkdager(50)); var grunnlag = RegelGrunnlagTestBuilder.create() - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) - .behandling(new Behandling.Builder().søkerErMor(false)) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true)) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) - .build(); + .kontoer(kontoer) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD_1))) + .behandling(new Behandling.Builder().søkerErMor(false)) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true)) + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON)) + .build(); var stønadskontotypene = stønadskontotypene(grunnlag); assertThat(stønadskontotypene).containsExactly(Stønadskontotype.FORELDREPENGER); diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/LukketPeriodeTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/LukketPeriodeTest.java index a5c652ef..8949adbc 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/LukketPeriodeTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/LukketPeriodeTest.java @@ -3,7 +3,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - import org.junit.jupiter.api.Test; class LukketPeriodeTest { @@ -15,16 +14,24 @@ void omsluttet() { var dag3 = dag1.plusDays(2); var dag4 = dag1.plusDays(3); - assertThat(new LukketPeriode(dag2, dag2).erOmsluttetAv(new LukketPeriode(dag2, dag2))).isTrue(); - assertThat(new LukketPeriode(dag2, dag3).erOmsluttetAv(new LukketPeriode(dag2, dag3))).isTrue(); - assertThat(new LukketPeriode(dag2, dag3).erOmsluttetAv(new LukketPeriode(dag1, dag3))).isTrue(); - assertThat(new LukketPeriode(dag2, dag3).erOmsluttetAv(new LukketPeriode(dag2, dag4))).isTrue(); - assertThat(new LukketPeriode(dag2, dag3).erOmsluttetAv(new LukketPeriode(dag1, dag4))).isTrue(); - - assertThat(new LukketPeriode(dag1, dag4).erOmsluttetAv(new LukketPeriode(dag1, dag3))).isFalse(); - assertThat(new LukketPeriode(dag1, dag4).erOmsluttetAv(new LukketPeriode(dag2, dag4))).isFalse(); - assertThat(new LukketPeriode(dag1, dag4).erOmsluttetAv(new LukketPeriode(dag2, dag2))).isFalse(); - assertThat(new LukketPeriode(dag1, dag4).erOmsluttetAv(new LukketPeriode(dag4, dag4))).isFalse(); - + assertThat(new LukketPeriode(dag2, dag2).erOmsluttetAv(new LukketPeriode(dag2, dag2))) + .isTrue(); + assertThat(new LukketPeriode(dag2, dag3).erOmsluttetAv(new LukketPeriode(dag2, dag3))) + .isTrue(); + assertThat(new LukketPeriode(dag2, dag3).erOmsluttetAv(new LukketPeriode(dag1, dag3))) + .isTrue(); + assertThat(new LukketPeriode(dag2, dag3).erOmsluttetAv(new LukketPeriode(dag2, dag4))) + .isTrue(); + assertThat(new LukketPeriode(dag2, dag3).erOmsluttetAv(new LukketPeriode(dag1, dag4))) + .isTrue(); + + assertThat(new LukketPeriode(dag1, dag4).erOmsluttetAv(new LukketPeriode(dag1, dag3))) + .isFalse(); + assertThat(new LukketPeriode(dag1, dag4).erOmsluttetAv(new LukketPeriode(dag2, dag4))) + .isFalse(); + assertThat(new LukketPeriode(dag1, dag4).erOmsluttetAv(new LukketPeriode(dag2, dag2))) + .isFalse(); + assertThat(new LukketPeriode(dag1, dag4).erOmsluttetAv(new LukketPeriode(dag4, dag4))) + .isFalse(); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/OrgnummerTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/OrgnummerTest.java index 31a866e7..100ae6c0 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/OrgnummerTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/OrgnummerTest.java @@ -11,5 +11,4 @@ void to_string_maskerer() { var orgnr = new Orgnummer("000000000"); assertThat(orgnr.toString()).hasToString("*****0000"); } - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/PeriodeTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/PeriodeTest.java index 48206bd9..ab1fe7f7 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/PeriodeTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/PeriodeTest.java @@ -1,13 +1,10 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag; - import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - import org.junit.jupiter.api.Test; - class PeriodeTest { @Test @@ -17,7 +14,6 @@ void periode_med_start_og_slutt_og_dato_utenfor_skal_ikke_overlappe() { assertThat(testPeriode.overlapper(LocalDate.of(2019, 1, 1))).isFalse(); } - @Test void periode_uten_start_og_slutt_skal_overlappe() { var testPeriode = new Periode(null, null); @@ -25,7 +21,6 @@ void periode_uten_start_og_slutt_skal_overlappe() { assertThat(testPeriode.overlapper(LocalDate.of(2017, 1, 1))).isTrue(); } - @Test void periode_med_start_og_slutt_skal_overlappe() { var testPeriode = new Periode(LocalDate.of(2016, 1, 1), LocalDate.of(2018, 1, 1)); @@ -53,8 +48,10 @@ void helePeriodenOverlapper() { var tom = fom.plusWeeks(2); var periode = new LukketPeriode(fom, tom); - assertThat(periode.overlapper(new LukketPeriode(fom.minusDays(1), tom.plusDays(1)))).isTrue(); - assertThat(periode.overlapper(new LukketPeriode(fom.plusDays(1), tom.minusDays(1)))).isTrue(); + assertThat(periode.overlapper(new LukketPeriode(fom.minusDays(1), tom.plusDays(1)))) + .isTrue(); + assertThat(periode.overlapper(new LukketPeriode(fom.plusDays(1), tom.minusDays(1)))) + .isTrue(); assertThat(periode.overlapper(periode)).isTrue(); } @@ -64,7 +61,8 @@ void begynnelsenAvPeriodenOverlapper() { var tom = fom.plusWeeks(2); var periode = new LukketPeriode(fom, tom); - assertThat(periode.overlapper(new LukketPeriode(fom.minusDays(1), tom.minusDays(1)))).isTrue(); + assertThat(periode.overlapper(new LukketPeriode(fom.minusDays(1), tom.minusDays(1)))) + .isTrue(); assertThat(periode.overlapper(new LukketPeriode(fom, fom))).isTrue(); assertThat(periode.overlapper(new LukketPeriode(fom.minusDays(1), fom))).isTrue(); } @@ -75,7 +73,8 @@ void sluttenAvPeriodenOverlapper() { var tom = fom.plusWeeks(2); var periode = new LukketPeriode(fom, tom); - assertThat(periode.overlapper(new LukketPeriode(fom.plusDays(1), tom.plusDays(1)))).isTrue(); + assertThat(periode.overlapper(new LukketPeriode(fom.plusDays(1), tom.plusDays(1)))) + .isTrue(); assertThat(periode.overlapper(new LukketPeriode(tom, tom))).isTrue(); assertThat(periode.overlapper(new LukketPeriode(tom, tom.plusDays(1)))).isTrue(); } @@ -86,7 +85,8 @@ void sluttenAvPeriodenOverlapper() { var tom = fom.plusWeeks(2); var periode = new LukketPeriode(fom, tom); - assertThat(periode.overlapper(new LukketPeriode(fom.minusDays(10), fom.minusDays(1)))).isFalse(); + assertThat(periode.overlapper(new LukketPeriode(fom.minusDays(10), fom.minusDays(1)))) + .isFalse(); } @Test @@ -95,8 +95,7 @@ void periodenRettEtterOverlapperIkke() { var tom = fom.plusWeeks(2); var periode = new LukketPeriode(fom, tom); - assertThat(periode.overlapper(new LukketPeriode(tom.plusDays(1), tom.plusDays(5)))).isFalse(); + assertThat(periode.overlapper(new LukketPeriode(tom.plusDays(1), tom.plusDays(5)))) + .isFalse(); } - - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/BevegeligeHelligdagerUtilTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/BevegeligeHelligdagerUtilTest.java index 05851c90..4d1ce352 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/BevegeligeHelligdagerUtilTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/BevegeligeHelligdagerUtilTest.java @@ -3,10 +3,8 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; +import org.junit.jupiter.api.Test; class BevegeligeHelligdagerUtilTest { @@ -24,7 +22,7 @@ void skal_gi_helligdagene_for_2017() { var andreJuledag = LocalDate.of(2017, 12, 26); var helligdager2018 = BevegeligeHelligdagerUtil.finnBevegeligeHelligdagerUtenHelg( - new LukketPeriode(LocalDate.of(2017, 1, 1), LocalDate.of(2017, 1, 1))); + new LukketPeriode(LocalDate.of(2017, 1, 1), LocalDate.of(2017, 1, 1))); assertThat(helligdager2018).hasSize(9); @@ -55,7 +53,7 @@ void skal_gi_helligdagene_for_2018() { var andreJuledag = LocalDate.of(2018, 12, 26); var helligdager2018 = BevegeligeHelligdagerUtil.finnBevegeligeHelligdagerUtenHelg( - new LukketPeriode(LocalDate.of(2018, 1, 1), LocalDate.of(2018, 1, 1))); + new LukketPeriode(LocalDate.of(2018, 1, 1), LocalDate.of(2018, 1, 1))); assertThat(helligdager2018).hasSize(10); @@ -86,7 +84,7 @@ void skal_gi_helligdagene_for_2019() { var andreJuledag = LocalDate.of(2019, 12, 26); var helligdager2018 = BevegeligeHelligdagerUtil.finnBevegeligeHelligdagerUtenHelg( - new LukketPeriode(LocalDate.of(2019, 1, 1), LocalDate.of(2019, 1, 1))); + new LukketPeriode(LocalDate.of(2019, 1, 1), LocalDate.of(2019, 1, 1))); assertThat(helligdager2018).hasSize(10); diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/KonfigurasjonBuilderTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/KonfigurasjonBuilderTest.java index ec2ae5a1..0accb4fb 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/KonfigurasjonBuilderTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/KonfigurasjonBuilderTest.java @@ -4,7 +4,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import java.time.LocalDate; - import org.junit.jupiter.api.Test; class KonfigurasjonBuilderTest { @@ -12,28 +11,33 @@ class KonfigurasjonBuilderTest { @Test void konfigurasjon_med_en_verdi() { var nå = LocalDate.now(); - var konfigurasjon = KonfigurasjonBuilder.create().leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå, null, 6).build(); - assertThat(konfigurasjon.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå)).isEqualTo(6); + var konfigurasjon = KonfigurasjonBuilder.create() + .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå, null, 6) + .build(); + assertThat(konfigurasjon.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå)) + .isEqualTo(6); } @Test void konfigurasjon_med_en_verdi_i_to_intervaller() { var nå = LocalDate.now(); var konfigurasjon = KonfigurasjonBuilder.create() - .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå, nå.plusDays(6), 6) - .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå.plusDays(7), null, 7) - .build(); - assertThat(konfigurasjon.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå)).isEqualTo(6); - assertThat(konfigurasjon.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå.plusDays(7))).isEqualTo(7); - assertThat(konfigurasjon.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå.plusDays(70))).isEqualTo(7); + .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå, nå.plusDays(6), 6) + .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå.plusDays(7), null, 7) + .build(); + assertThat(konfigurasjon.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå)) + .isEqualTo(6); + assertThat(konfigurasjon.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå.plusDays(7))) + .isEqualTo(7); + assertThat(konfigurasjon.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå.plusDays(70))) + .isEqualTo(7); } @Test void konfigurasjon_med_en_verdi_i_to_intervaller_med_overlapp() { var nå = LocalDate.now(); assertThrows(IllegalArgumentException.class, () -> KonfigurasjonBuilder.create() - .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå, nå.plusDays(6), 6) - .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå.plusDays(5), null, 7)); + .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå, nå.plusDays(6), 6) + .leggTilParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, nå.plusDays(5), null, 7)); } - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PerioderUtenHelgUtilTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PerioderUtenHelgUtilTest.java index aa730289..856afc86 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PerioderUtenHelgUtilTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/PerioderUtenHelgUtilTest.java @@ -7,14 +7,11 @@ import java.time.DayOfWeek; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; +import org.junit.jupiter.api.Test; class PerioderUtenHelgUtilTest { - private static final LocalDate SØNDAG_FØR_UKE_1 = LocalDate.of(2017, 1, 1); private final LocalDate fredagUke1 = dag(DayOfWeek.FRIDAY, 1); @@ -28,57 +25,87 @@ class PerioderUtenHelgUtilTest { @Test void skal_si_at_perioder_er_like() { - assertThat(likNårHelgIgnoreres(tirsdagUke2, fredagUke2, tirsdagUke2, lørdagUke2)).isTrue(); - assertThat(likNårHelgIgnoreres(tirsdagUke2, fredagUke2, tirsdagUke2, søndagUke2)).isTrue(); - assertThat(likNårHelgIgnoreres(søndagUke1, tirsdagUke2, mandagUke2, tirsdagUke2)).isTrue(); - assertThat(likNårHelgIgnoreres(lørdagUke1, tirsdagUke2, mandagUke2, tirsdagUke2)).isTrue(); - assertThat(likNårHelgIgnoreres(mandagUke2, tirsdagUke2, mandagUke2, tirsdagUke2)).isTrue(); - - assertThat(likNårHelgIgnoreres(lørdagUke1, lørdagUke1, søndagUke1, søndagUke1)).isTrue(); - assertThat(likNårHelgIgnoreres(lørdagUke1, søndagUke1, lørdagUke1, søndagUke1)).isTrue(); - assertThat(likNårHelgIgnoreres(lørdagUke1, søndagUke2, mandagUke2, fredagUke2)).isTrue(); + assertThat(likNårHelgIgnoreres(tirsdagUke2, fredagUke2, tirsdagUke2, lørdagUke2)) + .isTrue(); + assertThat(likNårHelgIgnoreres(tirsdagUke2, fredagUke2, tirsdagUke2, søndagUke2)) + .isTrue(); + assertThat(likNårHelgIgnoreres(søndagUke1, tirsdagUke2, mandagUke2, tirsdagUke2)) + .isTrue(); + assertThat(likNårHelgIgnoreres(lørdagUke1, tirsdagUke2, mandagUke2, tirsdagUke2)) + .isTrue(); + assertThat(likNårHelgIgnoreres(mandagUke2, tirsdagUke2, mandagUke2, tirsdagUke2)) + .isTrue(); + + assertThat(likNårHelgIgnoreres(lørdagUke1, lørdagUke1, søndagUke1, søndagUke1)) + .isTrue(); + assertThat(likNårHelgIgnoreres(lørdagUke1, søndagUke1, lørdagUke1, søndagUke1)) + .isTrue(); + assertThat(likNårHelgIgnoreres(lørdagUke1, søndagUke2, mandagUke2, fredagUke2)) + .isTrue(); } @Test void skal_si_at_perioder_er_ulike() { - assertThat(likNårHelgIgnoreres(fredagUke1, fredagUke2, lørdagUke2, fredagUke2)).isFalse(); - assertThat(likNårHelgIgnoreres(fredagUke1, mandagUke2, fredagUke1, fredagUke1)).isFalse(); + assertThat(likNårHelgIgnoreres(fredagUke1, fredagUke2, lørdagUke2, fredagUke2)) + .isFalse(); + assertThat(likNårHelgIgnoreres(fredagUke1, mandagUke2, fredagUke1, fredagUke1)) + .isFalse(); - assertThat(likNårHelgIgnoreres(lørdagUke1, søndagUke1, lørdagUke2, søndagUke2)).isFalse(); + assertThat(likNårHelgIgnoreres(lørdagUke1, søndagUke1, lørdagUke2, søndagUke2)) + .isFalse(); } @Test void skal_si_at_periode_omslutter_den_andre() { - assertThat(periodeUtenHelgOmslutter(new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(lørdagUke1, søndagUke2))).isTrue(); - assertThat(periodeUtenHelgOmslutter(new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(lørdagUke2, søndagUke2))).isTrue(); - assertThat(periodeUtenHelgOmslutter(new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(lørdagUke1, søndagUke1))).isTrue(); - assertThat(periodeUtenHelgOmslutter(new LukketPeriode(lørdagUke1, søndagUke1), new LukketPeriode(lørdagUke1, søndagUke1))).isTrue(); + assertThat(periodeUtenHelgOmslutter( + new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(lørdagUke1, søndagUke2))) + .isTrue(); + assertThat(periodeUtenHelgOmslutter( + new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(lørdagUke2, søndagUke2))) + .isTrue(); + assertThat(periodeUtenHelgOmslutter( + new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(lørdagUke1, søndagUke1))) + .isTrue(); + assertThat(periodeUtenHelgOmslutter( + new LukketPeriode(lørdagUke1, søndagUke1), new LukketPeriode(lørdagUke1, søndagUke1))) + .isTrue(); } @Test void skal_si_at_periode_ikke_omslutter_den_andre_nå_andre_periode_er_lenger() { - assertThat(periodeUtenHelgOmslutter(new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(fredagUke1, søndagUke2))).isFalse(); - assertThat(periodeUtenHelgOmslutter(new LukketPeriode(mandagUke2, tirsdagUke2), new LukketPeriode(mandagUke2, søndagUke2))).isFalse(); + assertThat(periodeUtenHelgOmslutter( + new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(fredagUke1, søndagUke2))) + .isFalse(); + assertThat(periodeUtenHelgOmslutter( + new LukketPeriode(mandagUke2, tirsdagUke2), new LukketPeriode(mandagUke2, søndagUke2))) + .isFalse(); } @Test void skal_si_at_helg1_ikke_omslutter_helg2() { - assertThat(periodeUtenHelgOmslutter(new LukketPeriode(lørdagUke1, søndagUke1), new LukketPeriode(lørdagUke2, søndagUke2))).isFalse(); + assertThat(periodeUtenHelgOmslutter( + new LukketPeriode(lørdagUke1, søndagUke1), new LukketPeriode(lørdagUke2, søndagUke2))) + .isFalse(); } @Test void skal_si_at_perioder_overlapper() { - assertThat(perioderUtenHelgOverlapper(new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(fredagUke1, søndagUke2))).isTrue(); + assertThat(perioderUtenHelgOverlapper( + new LukketPeriode(mandagUke2, fredagUke2), new LukketPeriode(fredagUke1, søndagUke2))) + .isTrue(); } @Test void skal_si_at_helg_ikke_overlapper() { - assertThat(perioderUtenHelgOverlapper(new LukketPeriode(fredagUke1, søndagUke1), new LukketPeriode(lørdagUke1, søndagUke2))).isFalse(); - assertThat(perioderUtenHelgOverlapper(new LukketPeriode(fredagUke1, søndagUke1), new LukketPeriode(lørdagUke1, søndagUke1))).isFalse(); + assertThat(perioderUtenHelgOverlapper( + new LukketPeriode(fredagUke1, søndagUke1), new LukketPeriode(lørdagUke1, søndagUke2))) + .isFalse(); + assertThat(perioderUtenHelgOverlapper( + new LukketPeriode(fredagUke1, søndagUke1), new LukketPeriode(lørdagUke1, søndagUke1))) + .isFalse(); } private LocalDate dag(DayOfWeek dag, int ukenr) { return SØNDAG_FØR_UKE_1.plusWeeks(ukenr - 1).plusDays(dag.getValue()); } - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/StandardKonfigurasjonTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/StandardKonfigurasjonTest.java index 579a28eb..99aa71a8 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/StandardKonfigurasjonTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/konfig/StandardKonfigurasjonTest.java @@ -4,21 +4,25 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import java.time.LocalDate; - import org.junit.jupiter.api.Test; class StandardKonfigurasjonTest { @Test void test_standard_konfiguration() { - assertThat(Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, LocalDate.of(2017, 12, 5))).isEqualTo(6); - assertThat(Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, LocalDate.of(2017, 12, 5))).isEqualTo(6); + assertThat(Konfigurasjon.STANDARD.getParameter( + Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, LocalDate.of(2017, 12, 5))) + .isEqualTo(6); + assertThat(Konfigurasjon.STANDARD.getParameter( + Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, LocalDate.of(2017, 12, 5))) + .isEqualTo(6); } @Test void hent_parameter_utenfor_periode_skal_gi_exception() { - assertThrows(IllegalArgumentException.class, - () -> Konfigurasjon.STANDARD.getParameter(Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, LocalDate.of(1970, 12, 5))); + assertThrows( + IllegalArgumentException.class, + () -> Konfigurasjon.STANDARD.getParameter( + Parametertype.FORBEHOLDT_MOR_ETTER_FØDSEL_UKER, LocalDate.of(1970, 12, 5))); } - } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningFlerbarnsdagerTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningFlerbarnsdagerTest.java index febe03de..736cc4e5 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningFlerbarnsdagerTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningFlerbarnsdagerTest.java @@ -5,9 +5,6 @@ import java.util.List; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode; @@ -16,26 +13,35 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; +import org.junit.jupiter.api.Test; class SaldoUtregningFlerbarnsdagerTest { - @Test - void skal_bare_trekke_flerbarnsdager_fra_perioder_med_flerbarnsdager_med_minsterett_hvis_perioden_trekker_minsterett() { + void + skal_bare_trekke_flerbarnsdager_fra_perioder_med_flerbarnsdager_med_minsterett_hvis_perioden_trekker_minsterett() { var aktivitetIdentifikator = AktivitetIdentifikator.forFrilans(); - var periode1 = new FastsattUttakPeriode.Builder().flerbarnsdager(true) - .periodeResultatType(Perioderesultattype.INNVILGET) - .resultatÅrsak(mapTilÅrsak(InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), Stønadskontotype.FORELDREPENGER, aktivitetIdentifikator))) - .build(); - var periode2 = new FastsattUttakPeriode.Builder().flerbarnsdager(true) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .resultatÅrsak(mapTilÅrsak(IkkeOppfyltÅrsak.AKTIVITET_UKJENT_UDOKUMENTERT)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), Stønadskontotype.FORELDREPENGER, aktivitetIdentifikator))) - .build(); - var saldoUtregning = new SaldoUtregningFlerbarnsdager(List.of(periode1, periode2), List.of(), Set.of(aktivitetIdentifikator), - new Trekkdager(10), new Trekkdager(10)); + var periode1 = new FastsattUttakPeriode.Builder() + .flerbarnsdager(true) + .periodeResultatType(Perioderesultattype.INNVILGET) + .resultatÅrsak(mapTilÅrsak(InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT_UTEN_AKTIVITETSKRAV)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet( + new Trekkdager(5), Stønadskontotype.FORELDREPENGER, aktivitetIdentifikator))) + .build(); + var periode2 = new FastsattUttakPeriode.Builder() + .flerbarnsdager(true) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .resultatÅrsak(mapTilÅrsak(IkkeOppfyltÅrsak.AKTIVITET_UKJENT_UDOKUMENTERT)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet( + new Trekkdager(5), Stønadskontotype.FORELDREPENGER, aktivitetIdentifikator))) + .build(); + var saldoUtregning = new SaldoUtregningFlerbarnsdager( + List.of(periode1, periode2), + List.of(), + Set.of(aktivitetIdentifikator), + new Trekkdager(10), + new Trekkdager(10)); assertThat(saldoUtregning.restSaldo()).isEqualTo(new Trekkdager(5)); } @@ -43,18 +49,26 @@ void skal_bare_trekke_flerbarnsdager_fra_perioder_med_flerbarnsdager_med_minster @Test void skal_alltid_trekke_flerbarnsdager_fra_perioder_med_flerbarnsdager_hvis_uten_minsterett() { var aktivitetIdentifikator = AktivitetIdentifikator.forFrilans(); - var periode1 = new FastsattUttakPeriode.Builder().flerbarnsdager(true) - .periodeResultatType(Perioderesultattype.INNVILGET) - .resultatÅrsak(mapTilÅrsak(InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), Stønadskontotype.FORELDREPENGER, aktivitetIdentifikator))) - .build(); - var periode2 = new FastsattUttakPeriode.Builder().flerbarnsdager(true) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .resultatÅrsak(mapTilÅrsak(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN)) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), Stønadskontotype.FORELDREPENGER, aktivitetIdentifikator))) - .build(); - var saldoUtregning = new SaldoUtregningFlerbarnsdager(List.of(periode1, periode2), List.of(), Set.of(aktivitetIdentifikator), - new Trekkdager(10), Trekkdager.ZERO); + var periode1 = new FastsattUttakPeriode.Builder() + .flerbarnsdager(true) + .periodeResultatType(Perioderesultattype.INNVILGET) + .resultatÅrsak(mapTilÅrsak(InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet( + new Trekkdager(5), Stønadskontotype.FORELDREPENGER, aktivitetIdentifikator))) + .build(); + var periode2 = new FastsattUttakPeriode.Builder() + .flerbarnsdager(true) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .resultatÅrsak(mapTilÅrsak(IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN)) + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet( + new Trekkdager(5), Stønadskontotype.FORELDREPENGER, aktivitetIdentifikator))) + .build(); + var saldoUtregning = new SaldoUtregningFlerbarnsdager( + List.of(periode1, periode2), + List.of(), + Set.of(aktivitetIdentifikator), + new Trekkdager(10), + Trekkdager.ZERO); assertThat(saldoUtregning.restSaldo()).isEqualTo(Trekkdager.ZERO); } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTest.java index ad03591c..72c4dff4 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTest.java @@ -1,6 +1,5 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo; - import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype.FEDREKVOTE; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype.FELLESPERIODE; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype.FORELDREPENGER; @@ -13,9 +12,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode; @@ -25,125 +21,180 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Orgnummer; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Perioderesultattype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; +import org.junit.jupiter.api.Test; class SaldoUtregningTest { - private static final AktivitetIdentifikator AKTIVITET1_SØKER = AktivitetIdentifikator.forArbeid(new Orgnummer("111"), "222"); - private static final AktivitetIdentifikator AKTIVITET2_SØKER = AktivitetIdentifikator.forArbeid(new Orgnummer("333"), "444"); - private static final AktivitetIdentifikator AKTIVITET1_ANNENPART = AktivitetIdentifikator.forArbeid(new Orgnummer("555"), "666"); - private static final AktivitetIdentifikator AKTIVITET2_ANNENPART = AktivitetIdentifikator.forArbeid(new Orgnummer("777"), "888"); + private static final AktivitetIdentifikator AKTIVITET1_SØKER = + AktivitetIdentifikator.forArbeid(new Orgnummer("111"), "222"); + private static final AktivitetIdentifikator AKTIVITET2_SØKER = + AktivitetIdentifikator.forArbeid(new Orgnummer("333"), "444"); + private static final AktivitetIdentifikator AKTIVITET1_ANNENPART = + AktivitetIdentifikator.forArbeid(new Orgnummer("555"), "666"); + private static final AktivitetIdentifikator AKTIVITET2_ANNENPART = + AktivitetIdentifikator.forArbeid(new Orgnummer("777"), "888"); private final LocalDate enTirsdag = LocalDate.of(2019, 2, 19); - private Map.Entry stønadskonto(Stønadskontotype kontoType, int trekkdager) { return Map.entry(kontoType, new Trekkdager(trekkdager)); } @Test void ingen_max_dag_og_ingen_trekkdager_skal_alltid_gi_0_i_saldo() { - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 0)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 0)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET1_SØKER)).isZero(); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isZero(); } @Test void max_dager_minus_trekkdag_skal_bli_saldo() { - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET1_SØKER)).isEqualTo(10 - 5); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(10 - 5); } @Test void flere_trekk_gir_riktig_saldo() { - var fastsattUttakPeriode1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); - var fastsattUttakPeriode2 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var fastsattUttakPeriode1 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); + var fastsattUttakPeriode2 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(fastsattUttakPeriode1, fastsattUttakPeriode2); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 12)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 12)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET1_SØKER)).isEqualTo(12 - 5 - 5); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(12 - 5 - 5); } @Test void skal_runde_opp_hvis_ikke_brukt_mer_enn_maks() { - var fastsattUttakPeriode1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10.5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var fastsattUttakPeriode1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10.5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(fastsattUttakPeriode1); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 12)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 12)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(2); } @Test void skal_runde_opp_hvis_brukt_mer_enn_maks() { - var fastsattUttakPeriode1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(13.5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var fastsattUttakPeriode1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(13.5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(fastsattUttakPeriode1); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 12)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 12)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(-1); } @Test void for_stort_trekk_gir_riktig_saldo() { - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), MØDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), MØDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 10)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 10)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(MØDREKVOTE, AKTIVITET1_SØKER)).isEqualTo(10 - 15); assertThat(saldoUtregning.saldo(MØDREKVOTE)).isEqualTo(10 - 15); } @Test void returnerer_dagerUtenAktivitetskrav() { - var fastsattUttakPeriode1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FORELDREPENGER, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) - .build(); - var fastsattUttakPeriode2 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FORELDREPENGER, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) - .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) - .build(); + var fastsattUttakPeriode1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FORELDREPENGER, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) + .build(); + var fastsattUttakPeriode2 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FORELDREPENGER, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) + .build(); var perioderSøker = List.of(fastsattUttakPeriode1, fastsattUttakPeriode2); - var saldoUtregning = lagForenkletSaldoUtregning(Map.of(FORELDREPENGER, 15), perioderSøker, Trekkdager.ZERO, new Trekkdager(10), - Optional.empty(), Trekkdager.ZERO); - assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)).isEqualTo(new Trekkdager(7)); + var saldoUtregning = lagForenkletSaldoUtregning( + Map.of(FORELDREPENGER, 15), + perioderSøker, + Trekkdager.ZERO, + new Trekkdager(10), + Optional.empty(), + Trekkdager.ZERO); + assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)) + .isEqualTo(new Trekkdager(7)); assertThat(saldoUtregning.saldo(FORELDREPENGER)).isEqualTo(2); assertThat(saldoUtregning.getMaxDagerUtenAktivitetskrav()).isEqualTo(new Trekkdager(10)); } @@ -151,24 +202,38 @@ void returnerer_dagerUtenAktivitetskrav() { @Test void for_stort_trekk_som_ikke_bruker_minsterett_gir_riktig_saldo_minsterett() { // assert/netto: kanTrekkeAvMinsterett = false for MSP, Uttak, Opphold - // Forbrukeravminsterett = innvilget utenom aktivitetskrav, avslag/søknadsfrist, eller manuellbehandling - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) - .build(); + // Forbrukeravminsterett = innvilget utenom aktivitetskrav, avslag/søknadsfrist, eller + // manuellbehandling + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = lagForenkletSaldoUtregning(Map.of(FORELDREPENGER, 10), perioderSøker, new Trekkdager(5), Trekkdager.ZERO, - Optional.empty(), Trekkdager.ZERO); + var saldoUtregning = lagForenkletSaldoUtregning( + Map.of(FORELDREPENGER, 10), + perioderSøker, + new Trekkdager(5), + Trekkdager.ZERO, + Optional.empty(), + Trekkdager.ZERO); // Skal beholde dager pga minsterett 5 derfor 5-15 - assertThat(saldoUtregning.nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, false).decimalValue().intValue()).isEqualTo( - 5 - 15); - assertThat(saldoUtregning.nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, true).decimalValue().intValue()).isEqualTo( - 10 - 15); + assertThat(saldoUtregning + .nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, false) + .decimalValue() + .intValue()) + .isEqualTo(5 - 15); + assertThat(saldoUtregning + .nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, true) + .decimalValue() + .intValue()) + .isEqualTo(10 - 15); assertThat(saldoUtregning.restSaldoMinsterett(AKTIVITET1_SØKER)).isEqualTo(new Trekkdager(5)); assertThat(saldoUtregning.restSaldoMinsterett()).isEqualTo(new Trekkdager(5)); - assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)).isEqualTo(Trekkdager.ZERO); + assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)) + .isEqualTo(Trekkdager.ZERO); assertThat(saldoUtregning.saldo(FORELDREPENGER, AKTIVITET1_SØKER)).isEqualTo(10 - 15); assertThat(saldoUtregning.saldo(FORELDREPENGER)).isEqualTo(10 - 15); assertThat(saldoUtregning.getMaxDagerMinsterett()).isEqualTo(new Trekkdager(5)); @@ -177,24 +242,38 @@ void for_stort_trekk_som_ikke_bruker_minsterett_gir_riktig_saldo_minsterett() { @Test void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_minsterett() { // assert/netto: kanTrekkeAvMinsterett = false for MSP, Uttak, Opphold - // Forbrukeravminsterett = innvilget utenom aktivitetskrav, avslag/søknadsfrist, eller manuellbehandling - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) - .build(); + // Forbrukeravminsterett = innvilget utenom aktivitetskrav, avslag/søknadsfrist, eller + // manuellbehandling + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = lagForenkletSaldoUtregning(Map.of(FORELDREPENGER, 10), perioderSøker, new Trekkdager(5), Trekkdager.ZERO, - Optional.empty(), Trekkdager.ZERO); + var saldoUtregning = lagForenkletSaldoUtregning( + Map.of(FORELDREPENGER, 10), + perioderSøker, + new Trekkdager(5), + Trekkdager.ZERO, + Optional.empty(), + Trekkdager.ZERO); // Skal forbruke minsterett - assertThat(saldoUtregning.nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, false).decimalValue().intValue()).isEqualTo( - 10 - 15); - assertThat(saldoUtregning.nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, true).decimalValue().intValue()).isEqualTo( - 10 - 15); + assertThat(saldoUtregning + .nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, false) + .decimalValue() + .intValue()) + .isEqualTo(10 - 15); + assertThat(saldoUtregning + .nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, true) + .decimalValue() + .intValue()) + .isEqualTo(10 - 15); assertThat(saldoUtregning.restSaldoMinsterett(AKTIVITET1_SØKER)).isEqualTo(new Trekkdager(-10)); assertThat(saldoUtregning.restSaldoMinsterett()).isEqualTo(new Trekkdager(-10)); - assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)).isEqualTo(Trekkdager.ZERO); + assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)) + .isEqualTo(Trekkdager.ZERO); assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav()).isEqualTo(Trekkdager.ZERO); assertThat(saldoUtregning.saldo(FORELDREPENGER, AKTIVITET1_SØKER)).isEqualTo(10 - 15); assertThat(saldoUtregning.saldo(FORELDREPENGER)).isEqualTo(10 - 15); @@ -204,23 +283,37 @@ void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_minsterett() { @Test void for_stort_trekk_som_ikke_bruker_minsterett_gir_riktig_saldo_utenAktivitetskrav() { // assert/netto: kanTrekkeAvMinsterett = false for MSP, Uttak, Opphold - // Forbrukeravminsterett = innvilget utenom aktivitetskrav, avslag/søknadsfrist, eller manuellbehandling - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) - .build(); + // Forbrukeravminsterett = innvilget utenom aktivitetskrav, avslag/søknadsfrist, eller + // manuellbehandling + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = lagForenkletSaldoUtregning(Map.of(FORELDREPENGER, 10), perioderSøker, Trekkdager.ZERO, new Trekkdager(5), - Optional.empty(), Trekkdager.ZERO); + var saldoUtregning = lagForenkletSaldoUtregning( + Map.of(FORELDREPENGER, 10), + perioderSøker, + Trekkdager.ZERO, + new Trekkdager(5), + Optional.empty(), + Trekkdager.ZERO); // Skal beholde dager pga minsterett 5 derfor 5-15 - assertThat(saldoUtregning.nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, false).decimalValue().intValue()).isEqualTo( - 10 - 15); - assertThat(saldoUtregning.nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, true).decimalValue().intValue()).isEqualTo( - 10 - 15); + assertThat(saldoUtregning + .nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, false) + .decimalValue() + .intValue()) + .isEqualTo(10 - 15); + assertThat(saldoUtregning + .nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, true) + .decimalValue() + .intValue()) + .isEqualTo(10 - 15); assertThat(saldoUtregning.restSaldoMinsterett(AKTIVITET1_SØKER)).isEqualTo(Trekkdager.ZERO); - assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)).isEqualTo(new Trekkdager(5)); + assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)) + .isEqualTo(new Trekkdager(5)); assertThat(saldoUtregning.saldo(FORELDREPENGER, AKTIVITET1_SØKER)).isEqualTo(10 - 15); assertThat(saldoUtregning.saldo(FORELDREPENGER)).isEqualTo(10 - 15); assertThat(saldoUtregning.getMaxDagerUtenAktivitetskrav()).isEqualTo(new Trekkdager(5)); @@ -230,72 +323,107 @@ void for_stort_trekk_som_ikke_bruker_minsterett_gir_riktig_saldo_utenAktivitetsk @Test void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_utenAktivitetskrav() { // assert/netto: kanTrekkeAvMinsterett = false for MSP, Uttak, Opphold - // Forbrukeravminsterett = innvilget utenom aktivitetskrav, avslag/søknadsfrist, eller manuellbehandling - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) - .build(); + // Forbrukeravminsterett = innvilget utenom aktivitetskrav, avslag/søknadsfrist, eller + // manuellbehandling + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = lagForenkletSaldoUtregning(Map.of(FORELDREPENGER, 10), perioderSøker, Trekkdager.ZERO, new Trekkdager(5), - Optional.empty(), Trekkdager.ZERO); + var saldoUtregning = lagForenkletSaldoUtregning( + Map.of(FORELDREPENGER, 10), + perioderSøker, + Trekkdager.ZERO, + new Trekkdager(5), + Optional.empty(), + Trekkdager.ZERO); // Skal forbruke minsterett - assertThat(saldoUtregning.nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, false).decimalValue().intValue()).isEqualTo( - 10 - 15); - assertThat(saldoUtregning.nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, true).decimalValue().intValue()).isEqualTo( - 10 - 15); + assertThat(saldoUtregning + .nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, false) + .decimalValue() + .intValue()) + .isEqualTo(10 - 15); + assertThat(saldoUtregning + .nettoSaldoJustertForMinsterett(FORELDREPENGER, AKTIVITET1_SØKER, true) + .decimalValue() + .intValue()) + .isEqualTo(10 - 15); assertThat(saldoUtregning.restSaldoMinsterett(AKTIVITET1_SØKER)).isEqualTo(Trekkdager.ZERO); - assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)).isEqualTo(new Trekkdager(-10)); + assertThat(saldoUtregning.restSaldoDagerUtenAktivitetskrav(AKTIVITET1_SØKER)) + .isEqualTo(new Trekkdager(-10)); assertThat(saldoUtregning.saldo(FORELDREPENGER, AKTIVITET1_SØKER)).isEqualTo(10 - 15); assertThat(saldoUtregning.saldo(FORELDREPENGER)).isEqualTo(10 - 15); } @Test void vanlig_far_fødsel_gir_riktig_saldo_far_fødsel() { - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FEDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) - .build(); + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FEDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = lagForenkletSaldoUtregning(Map.of(FEDREKVOTE, 10), perioderSøker, Trekkdager.ZERO, Trekkdager.ZERO, - Optional.of(new LukketPeriode(enTirsdag, enTirsdag)), new Trekkdager(10)); + var saldoUtregning = lagForenkletSaldoUtregning( + Map.of(FEDREKVOTE, 10), + perioderSøker, + Trekkdager.ZERO, + Trekkdager.ZERO, + Optional.of(new LukketPeriode(enTirsdag, enTirsdag)), + new Trekkdager(10)); // Skal forbruke minsterett var rundtFødsel = new LukketPeriode(enTirsdag, enTirsdag); - assertThat(saldoUtregning.restSaldoFarUttakRundtFødsel(AKTIVITET1_SØKER, rundtFødsel)).isEqualTo(new Trekkdager(5)); + assertThat(saldoUtregning.restSaldoFarUttakRundtFødsel(AKTIVITET1_SØKER, rundtFødsel)) + .isEqualTo(new Trekkdager(5)); assertThat(saldoUtregning.restSaldoFarUttakRundtFødsel(rundtFødsel)).isEqualTo(new Trekkdager(5)); } @Test void for_stort_trekk_far_fødsel_gir_riktig_saldo_far_fødsel() { - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FEDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) - .build(); + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FEDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = lagForenkletSaldoUtregning(Map.of(FEDREKVOTE, 10), perioderSøker, Trekkdager.ZERO, Trekkdager.ZERO, - Optional.of(new LukketPeriode(enTirsdag, enTirsdag)), new Trekkdager(10)); + var saldoUtregning = lagForenkletSaldoUtregning( + Map.of(FEDREKVOTE, 10), + perioderSøker, + Trekkdager.ZERO, + Trekkdager.ZERO, + Optional.of(new LukketPeriode(enTirsdag, enTirsdag)), + new Trekkdager(10)); // Skal forbruke minsterett var rundtFødsel = new LukketPeriode(enTirsdag, enTirsdag); - assertThat(saldoUtregning.restSaldoFarUttakRundtFødsel(AKTIVITET1_SØKER, rundtFødsel)).isEqualTo(new Trekkdager(-5)); + assertThat(saldoUtregning.restSaldoFarUttakRundtFødsel(AKTIVITET1_SØKER, rundtFødsel)) + .isEqualTo(new Trekkdager(-5)); assertThat(saldoUtregning.restSaldoFarUttakRundtFødsel(rundtFødsel)).isEqualTo(new Trekkdager(-5)); } @Test void for_stort_trekk_på_flere_aktiviteter_gir_riktig_saldo() { - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), MØDREKVOTE, AKTIVITET1_SØKER), - new FastsattUttakPeriodeAktivitet(new Trekkdager(20), MØDREKVOTE, AKTIVITET2_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), MØDREKVOTE, AKTIVITET1_SØKER), + new FastsattUttakPeriodeAktivitet(new Trekkdager(20), MØDREKVOTE, AKTIVITET2_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 10)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 10)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); assertThat(saldoUtregning.saldo(MØDREKVOTE, AKTIVITET1_SØKER)).isEqualTo(10 - 15); assertThat(saldoUtregning.saldo(MØDREKVOTE, AKTIVITET2_SØKER)).isEqualTo(10 - 20); assertThat(saldoUtregning.saldo(MØDREKVOTE)).isEqualTo(10 - 15); @@ -303,15 +431,22 @@ void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_utenAktivitetskrav() @Test void flere_trekk_på_forskjellig_aktivitet_gir_forskjellig_saldo() { - var fastsattUttakPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), MØDREKVOTE, AKTIVITET1_SØKER), - new FastsattUttakPeriodeAktivitet(new Trekkdager(10), MØDREKVOTE, AKTIVITET2_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var fastsattUttakPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), MØDREKVOTE, AKTIVITET1_SØKER), + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), MØDREKVOTE, AKTIVITET2_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(fastsattUttakPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 10)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 10)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); assertThat(saldoUtregning.saldo(MØDREKVOTE, AKTIVITET1_SØKER)).isEqualTo(5); assertThat(saldoUtregning.saldo(MØDREKVOTE, AKTIVITET2_SØKER)).isZero(); assertThat(saldoUtregning.saldo(MØDREKVOTE)).isEqualTo(5); @@ -319,21 +454,29 @@ void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_utenAktivitetskrav() @Test void trekkdager_på_annen_part_skal_telle_med_i_saldo() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER), - new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER), + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 10), stønadskonto(FELLESPERIODE, 20)), perioderSøker, - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 10), stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET1_SØKER)).isEqualTo(3); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET2_SØKER)).isEqualTo(-2); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(3); @@ -341,22 +484,30 @@ void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_utenAktivitetskrav() @Test void minste_trekkdager_på_annen_part_skal_telle_med_i_saldo() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER), - new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(7), FELLESPERIODE, AKTIVITET1_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET2_ANNENPART))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER), + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(7), FELLESPERIODE, AKTIVITET1_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET2_ANNENPART))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 10), stønadskonto(FELLESPERIODE, 20)), perioderSøker, - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 10), stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET1_SØKER)).isEqualTo(8); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET2_SØKER)).isEqualTo(3); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(8); @@ -364,28 +515,37 @@ void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_utenAktivitetskrav() @Test void flere_trekk_på_annen_part_skal_telle_med_i_saldo() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER), - new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); - var annenpartPeriode1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FELLESPERIODE, AKTIVITET2_ANNENPART))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) - .build(); - var annenpartPeriode2 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FELLESPERIODE, AKTIVITET2_ANNENPART))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER), + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); + var annenpartPeriode1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FELLESPERIODE, AKTIVITET2_ANNENPART))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) + .build(); + var annenpartPeriode2 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FELLESPERIODE, AKTIVITET2_ANNENPART))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode1, annenpartPeriode2); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 10), stønadskonto(FELLESPERIODE, 20)), perioderSøker, - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 10), stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET1_SØKER)).isEqualTo(11); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET2_SØKER)).isEqualTo(6); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(11); @@ -393,216 +553,298 @@ void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_utenAktivitetskrav() @Test void ikke_stjele_men_summere_begge_parter_hvis_berørt_behandling() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .mottattDato(LocalDate.MAX) - .samtidigUttak(false) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .mottattDato(LocalDate.MIN) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .mottattDato(LocalDate.MAX) + .samtidigUttak(false) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .mottattDato(LocalDate.MIN) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, true, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + true, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(3); } @Test void ikke_stjele_men_summere_begge_parter_hvis_tapende_periode() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .samtidigUttak(false) - .mottattDato(LocalDate.MIN) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .mottattDato(LocalDate.MAX) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .samtidigUttak(false) + .mottattDato(LocalDate.MIN) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .mottattDato(LocalDate.MAX) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(3); } @Test void ikke_stjele_men_summere_begge_parter_hvis_tapende_periode_søkt_samme_dag_søker_søkt_først() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .samtidigUttak(false) - .mottattDato(LocalDate.MIN) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .mottattDato(LocalDate.MIN) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .samtidigUttak(false) + .mottattDato(LocalDate.MIN) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .mottattDato(LocalDate.MIN) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), enTirsdag.atStartOfDay(), enTirsdag.atStartOfDay().plusHours(2)); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + enTirsdag.atStartOfDay(), + enTirsdag.atStartOfDay().plusHours(2)); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(3); } @Test void stjele_hvis_tapende_periode_søkt_samme_dag_og_annenpart_har_søkt_til_slutt() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .samtidigUttak(false) - .mottattDato(LocalDate.MIN) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .mottattDato(LocalDate.MIN) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .samtidigUttak(false) + .mottattDato(LocalDate.MIN) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .mottattDato(LocalDate.MIN) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), enTirsdag.atStartOfDay().plusHours(2), enTirsdag.atStartOfDay()); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + enTirsdag.atStartOfDay().plusHours(2), + enTirsdag.atStartOfDay()); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(15); } @Test void stjele_fra_annenpart_hvis_ikke_berørt_behandling_og_ikke_samtidig_uttak() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .samtidigUttak(false) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .samtidigUttak(false) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(15); } @Test void skal_summere_trekkdager_for_begge_parter_hvis_overlapp_og_samtidig_uttak_og_ikke_berørt_behandling() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .samtidigUttak(true) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .samtidigUttak(true) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(3); } @Test void skal_trekke_virkedager_fra_oppholdsperioder() { - var periodeSøker1 = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 15)) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .build(); - var periodeSøker2 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(LocalDate.of(2019, 2, 18), LocalDate.of(2019, 2, 18)) - .build(); + var periodeSøker1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 15)) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .build(); + var periodeSøker2 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(LocalDate.of(2019, 2, 18), LocalDate.of(2019, 2, 18)) + .build(); var perioderSøker = List.of(periodeSøker1, periodeSøker2); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(10 - 5); } @Test void skal_trekke_oppholdsperioder_for_annenpart() { - var periodeSøker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) - .build(); - var oppholdAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 22)) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .build(); - var periodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(LocalDate.of(2019, 2, 25), LocalDate.of(2019, 2, 25)) - .build(); + var periodeSøker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) + .build(); + var oppholdAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 22)) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .build(); + var periodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(LocalDate.of(2019, 2, 25), LocalDate.of(2019, 2, 25)) + .build(); var perioderSøker = List.of(periodeSøker); var perioderAnnenpart = List.of(oppholdAnnenpart, periodeAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(20 - 5 - 7); } @Test void skal_ikke_stjele_fra_annenpart_hvis_søker_har_oppholdsperiode() { - var oppholdsperiodeSøker = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) - .oppholdÅrsak(OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER) - .build(); - var periodeSøker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) - .build(); - var periodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), MØDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) - .build(); + var oppholdsperiodeSøker = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) + .oppholdÅrsak(OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER) + .build(); + var periodeSøker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) + .build(); + var periodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), MØDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) + .build(); var perioderSøker = List.of(periodeSøker, oppholdsperiodeSøker); var perioderAnnenpart = List.of(periodeAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20), stønadskonto(MØDREKVOTE, 20)), perioderSøker, - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20), stønadskonto(MØDREKVOTE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(20 - 2); assertThat(saldoUtregning.saldo(MØDREKVOTE)).isEqualTo(20 - 5); } @Test void skal_ikke_knekke_hvis_periode_er_i_en_helg() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER), - new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 16), LocalDate.of(2019, 2, 16)) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(LocalDate.of(2019, 2, 17), LocalDate.of(2019, 2, 17)) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER), + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 16), LocalDate.of(2019, 2, 16)) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(LocalDate.of(2019, 2, 17), LocalDate.of(2019, 2, 17)) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 10), stønadskonto(FELLESPERIODE, 20)), perioderSøker, - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 10), stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET1_SØKER)).isEqualTo(3); assertThat(saldoUtregning.saldo(FELLESPERIODE, AKTIVITET2_SØKER)).isEqualTo(-2); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(3); @@ -610,347 +852,467 @@ void skal_ikke_knekke_hvis_periode_er_i_en_helg() { @Test void overlappende_oppholdsperioder_skal_trekke_fra_annenparts_periode_ved() { - var periodeSøker1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) - .build(); - var oppholdsperiodeSøker = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .build(); - var oppholdsperiodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) - .oppholdÅrsak(OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER) - .build(); - var periodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), MØDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 18), LocalDate.of(2019, 2, 18)) - .build(); + var periodeSøker1 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) + .build(); + var oppholdsperiodeSøker = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .build(); + var oppholdsperiodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) + .oppholdÅrsak(OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER) + .build(); + var periodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), MØDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 18), LocalDate.of(2019, 2, 18)) + .build(); var perioderSøker = List.of(periodeSøker1, oppholdsperiodeSøker); var perioderAnnenpart = List.of(oppholdsperiodeAnnenpart, periodeAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20), stønadskonto(MØDREKVOTE, 20)), perioderSøker, - perioderAnnenpart, true, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20), stønadskonto(MØDREKVOTE, 20)), + perioderSøker, + perioderAnnenpart, + true, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(20 - 2); assertThat(saldoUtregning.saldo(MØDREKVOTE)).isEqualTo(20 - 3); } @Test void overlapp_med_avslått_perioder_på_søker_skal_telles_dobbelt() { - var søkerPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(enTirsdag, enTirsdag) - .build(); - var annenpartPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); + var søkerPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(enTirsdag, enTirsdag) + .build(); + var annenpartPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(12), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); var perioderSøker = List.of(søkerPeriode); var perioderAnnenpart = List.of(annenpartPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(20 - 12); } @Test void hvis_søkers_innvilget_periode_overlapper_med_annenparts_oppholdsperiode_skal_det_ikke_trekkes_dobbelt() { - var periodeSøker1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(3), MØDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) - .build(); - var oppholdsperiodeSøker = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) - .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) - .build(); - var oppholdsperiodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) - .oppholdÅrsak(OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER) - .build(); - var periodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FEDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) - .build(); + var periodeSøker1 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(3), MØDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) + .build(); + var oppholdsperiodeSøker = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) + .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) + .build(); + var oppholdsperiodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 11), LocalDate.of(2019, 2, 13)) + .oppholdÅrsak(OppholdÅrsak.MØDREKVOTE_ANNEN_FORELDER) + .build(); + var periodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FEDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 15)) + .build(); var perioderSøker = List.of(periodeSøker1, oppholdsperiodeSøker); var perioderAnnenpart = List.of(oppholdsperiodeAnnenpart, periodeAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 20), stønadskonto(FEDREKVOTE, 20)), perioderSøker, - perioderAnnenpart, true, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 20), stønadskonto(FEDREKVOTE, 20)), + perioderSøker, + perioderAnnenpart, + true, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FEDREKVOTE)).isEqualTo(20 - 2); assertThat(saldoUtregning.saldo(MØDREKVOTE)).isEqualTo(20 - 3); } @Test void hvis_alle_søkers_perioder_er_etter_annenpart_skal_det_ikke_være_nok_dager_å_frigi() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 15), LocalDate.of(2019, 2, 15)) - .build(); - var periode2Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 16), LocalDate.of(2019, 2, 16)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 13), LocalDate.of(2019, 2, 13)) - .build(); - var periode2Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 14)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 15), LocalDate.of(2019, 2, 15)) + .build(); + var periode2Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 16), LocalDate.of(2019, 2, 16)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 13), LocalDate.of(2019, 2, 13)) + .build(); + var periode2Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 14), LocalDate.of(2019, 2, 14)) + .build(); var perioderSøker = List.of(periode1Søker, periode2Søker); var perioderAnnenpart = List.of(periode1Annenpart, periode2Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isFalse(); } @Test void hvis_ikke_alle_søkers_perioder_er_etter_annenpart_skal_det_være_nok_dager_å_frigi() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 15), LocalDate.of(2019, 2, 20)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 10), LocalDate.of(2019, 2, 14)) - .build(); - var periode2Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 2, 15), LocalDate.of(2019, 2, 20)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 15), LocalDate.of(2019, 2, 20)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 10), LocalDate.of(2019, 2, 14)) + .build(); + var periode2Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 2, 15), LocalDate.of(2019, 2, 20)) + .build(); var perioderSøker = List.of(periode1Søker); var perioderAnnenpart = List.of(periode1Annenpart, periode2Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isTrue(); } @Test void annenpart_har_ikke_nok_dager_å_frigi_selv_med_perioder_etter_søkers_siste_periode_med_trekkdager() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) - .build(); - var periode2Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) + .build(); + var periode2Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) + .build(); var perioderSøker = List.of(periode1Søker); var perioderAnnenpart = List.of(periode1Annenpart, periode2Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isFalse(); } @Test - void annenpart_har_ikke_nok_dager_å_frigi_selv_med_perioder_etter_søkers_siste_periode_med_trekkdager_flere_arbeidsforhold_hos_annenpart() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET1_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET2_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) - .build(); - var periode2Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET2_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) - .build(); + void + annenpart_har_ikke_nok_dager_å_frigi_selv_med_perioder_etter_søkers_siste_periode_med_trekkdager_flere_arbeidsforhold_hos_annenpart() { + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET1_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET2_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) + .build(); + var periode2Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET2_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) + .build(); var perioderSøker = List.of(periode1Søker); var perioderAnnenpart = List.of(periode1Annenpart, periode2Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isFalse(); } @Test void annenpart_har_nok_dager_å_frigi_etter_søkers_siste_periode_med_trekkdager() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) - .build(); - var periode2Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) + .build(); + var periode2Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) + .build(); var perioderSøker = List.of(periode1Søker); var perioderAnnenpart = List.of(periode1Annenpart, periode2Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isTrue(); } @Test - void annenpart_har_nok_dager_å_frigi_etter_søkers_siste_periode_med_trekkdager_hvis_søkers_siste_periode_starter_samme_dag_som_annenparts_siste_periode() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 5)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(30), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 12)) - .build(); + void + annenpart_har_nok_dager_å_frigi_etter_søkers_siste_periode_med_trekkdager_hvis_søkers_siste_periode_starter_samme_dag_som_annenparts_siste_periode() { + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 5)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(30), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 12)) + .build(); var perioderSøker = List.of(periode1Søker); var perioderAnnenpart = List.of(periode1Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 30)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 30)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isTrue(); } @Test - void annenpart_har_nok_dager_å_frigi_etter_søkers_siste_periode_med_trekkdager_flere_arbeidsforhold_hos_annenpart() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) - .build(); - var periode2Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET1_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) - .build(); + void + annenpart_har_nok_dager_å_frigi_etter_søkers_siste_periode_med_trekkdager_flere_arbeidsforhold_hos_annenpart() { + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) + .build(); + var periode2Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET1_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET2_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) + .build(); var perioderSøker = List.of(periode1Søker); var perioderAnnenpart = List.of(periode1Annenpart, periode2Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isTrue(); } @Test void annenpart_har_nok_dager_å_frigi_etter_søkers_siste_periode_med_trekkdager_oppholdsperiode() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) - .build(); - var periode2Annenpart = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 25)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) + .build(); + var periode2Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 25)) + .build(); var perioderSøker = List.of(periode1Søker); var perioderAnnenpart = List.of(periode1Annenpart, periode2Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isTrue(); } @Test void annenpart_har_ikke_nok_dager_å_frigi_etter_søkers_siste_periode_med_trekkdager() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) - .build(); - - var periode2Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FEDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 4)) - .build(); - - var periode1Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) - .build(); - var periode2Annenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) + .build(); + + var periode2Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FEDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 4), LocalDate.of(2019, 3, 4)) + .build(); + + var periode1Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 1), LocalDate.of(2019, 3, 1)) + .build(); + var periode2Annenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 3), LocalDate.of(2019, 3, 3)) + .build(); var perioderSøker = List.of(periode1Søker, periode2Søker); var perioderAnnenpart = List.of(periode1Annenpart, periode2Annenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20), stønadskonto(FEDREKVOTE, 20)), perioderSøker, - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20), stønadskonto(FEDREKVOTE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isFalse(); } @Test void har_søkt_samtidig_uttak() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .samtidigUttak(true) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .samtidigUttak(true) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) + .build(); var perioderSøker = List.of(periode1Søker); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.søktSamtidigUttak(FELLESPERIODE)).isTrue(); assertThat(saldoUtregning.søktSamtidigUttak(FEDREKVOTE)).isFalse(); @@ -958,15 +1320,22 @@ void overlappende_oppholdsperioder_skal_trekke_fra_annenparts_periode_ved() { @Test void har_ikke_søkt_samtidig_uttak() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 3, 2), LocalDate.of(2019, 3, 2)) + .build(); var perioderSøker = List.of(periode1Søker); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, List.of(), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.søktSamtidigUttak(FELLESPERIODE)).isFalse(); assertThat(saldoUtregning.søktSamtidigUttak(FEDREKVOTE)).isFalse(); @@ -974,189 +1343,255 @@ void overlappende_oppholdsperioder_skal_trekke_fra_annenparts_periode_ved() { @Test void skal_støtte_en_søknadsperiode_overlapper_med_flere_oppholdsperioder_hos_annenpart() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 7), LocalDate.of(2019, 10, 10)) - .build(); - - var opphold1 = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 7), LocalDate.of(2019, 10, 7)) - .build(); - var opphold2 = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 8), LocalDate.of(2019, 10, 8)) - .build(); - var uttakAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), MØDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 11), LocalDate.of(2019, 10, 11)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 7), LocalDate.of(2019, 10, 10)) + .build(); + + var opphold1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 7), LocalDate.of(2019, 10, 7)) + .build(); + var opphold2 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 8), LocalDate.of(2019, 10, 8)) + .build(); + var uttakAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), MØDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 11), LocalDate.of(2019, 10, 11)) + .build(); var perioderSøker = List.of(periode1Søker); var perioderAnnenpart = List.of(opphold1, opphold2, uttakAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); - - //1 per søknadsperioder + 1 for resterende opphold der det ikke er søkt + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); + + // 1 per søknadsperioder + 1 for resterende opphold der det ikke er søkt assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(16); } @Test void skal_støtte_flere_søknadsperioder_overlapper_med_opphold_hos_annenpart() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 7), LocalDate.of(2019, 10, 7)) - .build(); - - var periode2Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 8), LocalDate.of(2019, 10, 10)) - .build(); - - var opphold = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 7), LocalDate.of(2019, 10, 9)) - .build(); - var uttakAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), MØDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 11), LocalDate.of(2019, 10, 11)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 7), LocalDate.of(2019, 10, 7)) + .build(); + + var periode2Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 8), LocalDate.of(2019, 10, 10)) + .build(); + + var opphold = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 7), LocalDate.of(2019, 10, 9)) + .build(); + var uttakAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), MØDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 11), LocalDate.of(2019, 10, 11)) + .build(); var perioderSøker = List.of(periode1Søker, periode2Søker); var perioderAnnenpart = List.of(opphold, uttakAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 20)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(16); } @Test - void skal_ikke_telle_dobbelt_når_oppholdsperiode_annenpart_overlapper_mer_flere_søknadsperioder_i_berørt_behandling() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(42), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 1, 2), LocalDate.of(2020, 3, 1)) - .build(); - var periode2Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 3, 2), LocalDate.of(2020, 3, 5)) - .build(); - var periode3Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 3, 6), LocalDate.of(2020, 3, 12)) - .build(); - var oppholdAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(LocalDate.of(2020, 1, 2), LocalDate.of(2020, 3, 12)) - .build(); - var uttakAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FEDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 3, 13), LocalDate.of(2020, 3, 20)) - .build(); + void + skal_ikke_telle_dobbelt_når_oppholdsperiode_annenpart_overlapper_mer_flere_søknadsperioder_i_berørt_behandling() { + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(42), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 1, 2), LocalDate.of(2020, 3, 1)) + .build(); + var periode2Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 3, 2), LocalDate.of(2020, 3, 5)) + .build(); + var periode3Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 3, 6), LocalDate.of(2020, 3, 12)) + .build(); + var oppholdAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(LocalDate.of(2020, 1, 2), LocalDate.of(2020, 3, 12)) + .build(); + var uttakAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FEDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 3, 13), LocalDate.of(2020, 3, 20)) + .build(); var perioderSøker = List.of(periode1Søker, periode2Søker, periode3Søker); var perioderAnnenpart = List.of(oppholdAnnenpart, uttakAnnenpart); var saldoUtregning = new SaldoUtregning( - Map.ofEntries(stønadskonto(FELLESPERIODE, 51), stønadskonto(FEDREKVOTE, 75), stønadskonto(MØDREKVOTE, 75)), perioderSøker, - perioderAnnenpart, true, Set.of(AKTIVITET1_SØKER), null, null); + Map.ofEntries( + stønadskonto(FELLESPERIODE, 51), stønadskonto(FEDREKVOTE, 75), stønadskonto(MØDREKVOTE, 75)), + perioderSøker, + perioderAnnenpart, + true, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(0); } @Test void skal_ikke_frigi_dager_fra_oppholdsperiode_hvis_overlapp_med_avslått_periode_annenpart() { - var periode1Søker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(6), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 21), LocalDate.of(2019, 10, 23)) - .build(); - var oppholdSøker = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 24), LocalDate.of(2019, 10, 25)) - .build(); - var innvilgetPeriodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FEDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 24), LocalDate.of(2019, 10, 24)) - .build(); - var avslåttPeriodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FEDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.AVSLÅTT) - .tidsperiode(LocalDate.of(2019, 10, 25), LocalDate.of(2019, 10, 25)) - .build(); + var periode1Søker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(6), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 21), LocalDate.of(2019, 10, 23)) + .build(); + var oppholdSøker = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 24), LocalDate.of(2019, 10, 25)) + .build(); + var innvilgetPeriodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FEDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 24), LocalDate.of(2019, 10, 24)) + .build(); + var avslåttPeriodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), FEDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.AVSLÅTT) + .tidsperiode(LocalDate.of(2019, 10, 25), LocalDate.of(2019, 10, 25)) + .build(); var perioderSøker = List.of(periode1Søker, oppholdSøker); var perioderAnnenpart = List.of(innvilgetPeriodeAnnenpart, avslåttPeriodeAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FEDREKVOTE, 10)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FEDREKVOTE, 10)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FEDREKVOTE)).isEqualTo(9); } @Test void skal_ikke_trekke_dager_for_oppholdsperioder_på_annenpart_som_ligger_etter_søkers_siste_periode() { - var periodeSøker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FEDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 29), LocalDate.of(2019, 10, 30)) - .build(); - var innvilgetPeriodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), MØDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 28), LocalDate.of(2019, 10, 28)) - .build(); - var oppholdAnnenpart1 = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 30), LocalDate.of(2019, 10, 30)) - .build(); - var oppholdAnnenpart2 = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 31), LocalDate.of(2019, 10, 31)) - .build(); + var periodeSøker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FEDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 29), LocalDate.of(2019, 10, 30)) + .build(); + var innvilgetPeriodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), MØDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 28), LocalDate.of(2019, 10, 28)) + .build(); + var oppholdAnnenpart1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 30), LocalDate.of(2019, 10, 30)) + .build(); + var oppholdAnnenpart2 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 31), LocalDate.of(2019, 10, 31)) + .build(); var perioderSøker = List.of(periodeSøker); var perioderAnnenpart = List.of(innvilgetPeriodeAnnenpart, oppholdAnnenpart1, oppholdAnnenpart2); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FEDREKVOTE, 10), stønadskonto(MØDREKVOTE, 10)), perioderSøker, - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FEDREKVOTE, 10), stønadskonto(MØDREKVOTE, 10)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FEDREKVOTE)).isZero(); - var saldoUtregningBerørt = new SaldoUtregning(Map.ofEntries(stønadskonto(FEDREKVOTE, 10), stønadskonto(MØDREKVOTE, 10)), perioderSøker, - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregningBerørt = new SaldoUtregning( + Map.ofEntries(stønadskonto(FEDREKVOTE, 10), stønadskonto(MØDREKVOTE, 10)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregningBerørt.saldo(FEDREKVOTE)).isZero(); } @Test void riktig_saldo_ved_delvis_overlapp_og_gradering_på_annenpart_der_annenpart_har_flere_arbeidsforhold() { - var periodeSøker = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 1, 27), LocalDate.of(2020, 1, 31)) - .build(); - var innvilgetPeriodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET2_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(8), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 1, 20), LocalDate.of(2020, 1, 29)) - .build(); + var periodeSøker = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(5), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 1, 27), LocalDate.of(2020, 1, 31)) + .build(); + var innvilgetPeriodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET2_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(8), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 1, 20), LocalDate.of(2020, 1, 29)) + .build(); var perioderSøker = List.of(periodeSøker); var perioderAnnenpart = List.of(innvilgetPeriodeAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 100)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 100)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldoITrekkdager(FELLESPERIODE)).isEqualTo(new Trekkdager(92)); } @@ -1164,124 +1599,181 @@ void overlappende_oppholdsperioder_skal_trekke_fra_annenparts_periode_ved() { void skal_ikke_finnes_nok_dager_å_frigi_ved_flere_arbeidsforhold_der_bare_det_ene_arbeidsforholdet_har_nok_dager() { var aktivitet1 = new FastsattUttakPeriodeAktivitet(new Trekkdager(8), FELLESPERIODE, AKTIVITET1_SØKER); var aktivitet2 = new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FELLESPERIODE, AKTIVITET2_SØKER); - var søkersPeriode = new FastsattUttakPeriode.Builder().aktiviteter(List.of(aktivitet1, aktivitet2)) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag, enTirsdag) - .build(); - var annenpartsPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) - .build(); + var søkersPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of(aktivitet1, aktivitet2)) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag, enTirsdag) + .build(); + var annenpartsPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(enTirsdag.plusDays(1), enTirsdag.plusDays(1)) + .build(); var perioderSøker = List.of(søkersPeriode); var perioderAnnenpart = List.of(annenpartsPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); - var saldoUtregningBerørtBehandling = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), perioderSøker, perioderAnnenpart, - true, Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); + var saldoUtregningBerørtBehandling = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), + perioderSøker, + perioderAnnenpart, + true, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isFalse(); - assertThat(saldoUtregningBerørtBehandling.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isFalse(); + assertThat(saldoUtregningBerørtBehandling.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)) + .isFalse(); } @Test void skal_finne_saldo_for_søker_uten_uttaksperioder() { - var innvilgetPeriodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), MØDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 28), LocalDate.of(2019, 10, 28)) - .build(); + var innvilgetPeriodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), MØDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 28), LocalDate.of(2019, 10, 28)) + .build(); List perioderSøker = List.of(); var perioderAnnenpart = List.of(innvilgetPeriodeAnnenpart); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FEDREKVOTE, 10)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FEDREKVOTE, 10)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FEDREKVOTE)).isEqualTo(10); } - //FAGSYSTEM-81103 + // FAGSYSTEM-81103 @Test void skal_finnes_nok_dager_å_frigi_hvis_annenparts_uttaksperiode_starter_før_men_overlapper_med_søkers_periode() { - var søkersPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(32), FEDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 17), LocalDate.of(2019, 11, 29)) - .build(); - var annenpartsPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(75.2), FEDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 14), LocalDate.of(2020, 2, 20)) - .build(); + var søkersPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(32), FEDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 17), LocalDate.of(2019, 11, 29)) + .build(); + var annenpartsPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(75.2), FEDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 14), LocalDate.of(2020, 2, 20)) + .build(); var perioderSøker = List.of(søkersPeriode); var perioderAnnenpart = List.of(annenpartsPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FEDREKVOTE, 75)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FEDREKVOTE, 75)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FEDREKVOTE)).isTrue(); } @Test - void skal_ikke_finnes_nok_dager_å_frigi_hvis_annenparts_uttaksperiode_starter_før_men_overlapper_med_søkers_periode_og_ikke_nok_dager_etter_søkers_fom() { - var søkersPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(32), FEDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 1, 20), LocalDate.of(2020, 2, 10)) - .build(); - var annenpartsPeriode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(75.2), FEDREKVOTE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 14), LocalDate.of(2020, 2, 20)) - .build(); + void + skal_ikke_finnes_nok_dager_å_frigi_hvis_annenparts_uttaksperiode_starter_før_men_overlapper_med_søkers_periode_og_ikke_nok_dager_etter_søkers_fom() { + var søkersPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(32), FEDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 1, 20), LocalDate.of(2020, 2, 10)) + .build(); + var annenpartsPeriode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(75.2), FEDREKVOTE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 14), LocalDate.of(2020, 2, 20)) + .build(); var perioderSøker = List.of(søkersPeriode); var perioderAnnenpart = List.of(annenpartsPeriode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FEDREKVOTE, 75)), perioderSøker, perioderAnnenpart, false, - Set.of(AKTIVITET1_SØKER), null, null); - - //-20 dager på saldo, bare 19 dager igjen å frigi fra annenpart + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FEDREKVOTE, 75)), + perioderSøker, + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); + + // -20 dager på saldo, bare 19 dager igjen å frigi fra annenpart assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FEDREKVOTE)).isFalse(); } @Test void skal_telle_riktig_antall_dager_på_annenpart_når_det_er_tilkommet_nytt_arbeidsforhold() { - var annenpartsPeriode1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(80), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 14), LocalDate.of(2020, 2, 20)) - .build(); - var annenpartsPeriode2 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(75), MØDREKVOTE, AKTIVITET1_ANNENPART), - new FastsattUttakPeriodeAktivitet(new Trekkdager(75), MØDREKVOTE, AKTIVITET2_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 2, 21), LocalDate.of(2020, 5, 5)) - .build(); + var annenpartsPeriode1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(80), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 14), LocalDate.of(2020, 2, 20)) + .build(); + var annenpartsPeriode2 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(75), MØDREKVOTE, AKTIVITET1_ANNENPART), + new FastsattUttakPeriodeAktivitet(new Trekkdager(75), MØDREKVOTE, AKTIVITET2_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 2, 21), LocalDate.of(2020, 5, 5)) + .build(); var perioderAnnenpart = List.of(annenpartsPeriode1, annenpartsPeriode2); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 75), stønadskonto(FELLESPERIODE, 80)), List.of(), - perioderAnnenpart, false, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 75), stønadskonto(FELLESPERIODE, 80)), + List.of(), + perioderAnnenpart, + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isZero(); } @Test - void skal_telle_riktig_antall_dager_når_det_er_tilkommet_nytt_arbeidsforhold_og_siste_periode_før_tilkommet_er_opphold() { - var periodeUtenNyttArbeidsforhold = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(40), MØDREKVOTE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 1), LocalDate.of(2020, 10, 13)) - .build(); - var opphold = new FastsattUttakPeriode.Builder().aktiviteter(List.of()) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2019, 10, 14), LocalDate.of(2020, 2, 20)) - .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) - .build(); - var periodeMedNyttArbeidsforhold = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(35), MØDREKVOTE, AKTIVITET1_SØKER), - new FastsattUttakPeriodeAktivitet(new Trekkdager(35), MØDREKVOTE, AKTIVITET2_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 2, 21), LocalDate.of(2020, 5, 5)) - .build(); + void + skal_telle_riktig_antall_dager_når_det_er_tilkommet_nytt_arbeidsforhold_og_siste_periode_før_tilkommet_er_opphold() { + var periodeUtenNyttArbeidsforhold = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(40), MØDREKVOTE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 1), LocalDate.of(2020, 10, 13)) + .build(); + var opphold = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of()) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2019, 10, 14), LocalDate.of(2020, 2, 20)) + .oppholdÅrsak(OppholdÅrsak.FEDREKVOTE_ANNEN_FORELDER) + .build(); + var periodeMedNyttArbeidsforhold = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(35), MØDREKVOTE, AKTIVITET1_SØKER), + new FastsattUttakPeriodeAktivitet(new Trekkdager(35), MØDREKVOTE, AKTIVITET2_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 2, 21), LocalDate.of(2020, 5, 5)) + .build(); var søkersPerioder = List.of(periodeUtenNyttArbeidsforhold, opphold, periodeMedNyttArbeidsforhold); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(MØDREKVOTE, 75)), søkersPerioder, List.of(), false, - Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(MØDREKVOTE, 75)), + søkersPerioder, + List.of(), + false, + Set.of(AKTIVITET1_SØKER, AKTIVITET2_SØKER), + null, + null); assertThat(saldoUtregning.saldo(MØDREKVOTE, AKTIVITET1_SØKER)).isZero(); assertThat(saldoUtregning.saldo(MØDREKVOTE, AKTIVITET2_SØKER)).isZero(); @@ -1289,19 +1781,26 @@ void overlappende_oppholdsperioder_skal_trekke_fra_annenparts_periode_ved() { @Test void innvilget_utsettelse_overlapper_med_annenpart() { - var periode = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), null, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 2, 21), LocalDate.of(2020, 5, 5)) - .build(); - var periodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(75), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 2, 21), LocalDate.of(2020, 5, 5)) - .build(); + var periode = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(0), null, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 2, 21), LocalDate.of(2020, 5, 5)) + .build(); + var periodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(75), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 2, 21), LocalDate.of(2020, 5, 5)) + .build(); var søkersPerioder = List.of(periode); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 75)), søkersPerioder, List.of(periodeAnnenpart), false, - Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 75)), + søkersPerioder, + List.of(periodeAnnenpart), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(75); assertThat(saldoUtregning.saldo(null)).isZero(); @@ -1309,34 +1808,45 @@ void innvilget_utsettelse_overlapper_med_annenpart() { @Test void skal_ta_med_overlappende_perioder_i_utregningen_av_dager_å_frigi_på_annenpart() { - var periode1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 5, 17), LocalDate.of(2020, 5, 17)) - .build(); - var periode2 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 5, 18), LocalDate.of(2020, 5, 22)) - .build(); - var periodeAnnenpart1 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 5, 18), LocalDate.of(2020, 5, 20)) - .build(); - var periodeAnnenpart2 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 5, 21), LocalDate.of(2020, 5, 22)) - .build(); - var periodeAnnenpart3 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2020, 5, 23), LocalDate.of(2020, 5, 23)) - .build(); + var periode1 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 5, 17), LocalDate.of(2020, 5, 17)) + .build(); + var periode2 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 5, 18), LocalDate.of(2020, 5, 22)) + .build(); + var periodeAnnenpart1 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(3), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 5, 18), LocalDate.of(2020, 5, 20)) + .build(); + var periodeAnnenpart2 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(2), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 5, 21), LocalDate.of(2020, 5, 22)) + .build(); + var periodeAnnenpart3 = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(10), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2020, 5, 23), LocalDate.of(2020, 5, 23)) + .build(); var søkersPerioder = List.of(periode1, periode2); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 5)), søkersPerioder, - List.of(periodeAnnenpart1, periodeAnnenpart2, periodeAnnenpart3), false, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 5)), + søkersPerioder, + List.of(periodeAnnenpart1, periodeAnnenpart2, periodeAnnenpart3), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(-10); assertThat(saldoUtregning.nokDagerÅFrigiPåAnnenpart(FELLESPERIODE)).isTrue(); @@ -1344,42 +1854,64 @@ void innvilget_utsettelse_overlapper_med_annenpart() { @Test void samtidig_uttak_som_overlapper_delvis_med_oppholdsperioder_skal_trekke_dager_for_resten_av_oppholdet() { - var samtidigUttak = new FastsattUttakPeriode.Builder().samtidigUttak(true) - .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2021, 8, 2), LocalDate.of(2021, 8, 6)) - .build(); - var oppholdAnnenpart = new FastsattUttakPeriode.Builder().oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2021, 8, 2), LocalDate.of(2021, 8, 13)) - .build(); - var søkersPeriode2 = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET1_SØKER))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2021, 8, 10), LocalDate.of(2021, 8, 13)) - .build(); - var periodeAnnenpart = new FastsattUttakPeriode.Builder().aktiviteter( - List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, AKTIVITET1_ANNENPART))) - .periodeResultatType(Perioderesultattype.INNVILGET) - .tidsperiode(LocalDate.of(2021, 8, 15), LocalDate.of(2021, 8, 15)) - .build(); + var samtidigUttak = new FastsattUttakPeriode.Builder() + .samtidigUttak(true) + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2021, 8, 2), LocalDate.of(2021, 8, 6)) + .build(); + var oppholdAnnenpart = new FastsattUttakPeriode.Builder() + .oppholdÅrsak(OppholdÅrsak.FELLESPERIODE_ANNEN_FORELDER) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2021, 8, 2), LocalDate.of(2021, 8, 13)) + .build(); + var søkersPeriode2 = new FastsattUttakPeriode.Builder() + .aktiviteter( + List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(4), FELLESPERIODE, AKTIVITET1_SØKER))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2021, 8, 10), LocalDate.of(2021, 8, 13)) + .build(); + var periodeAnnenpart = new FastsattUttakPeriode.Builder() + .aktiviteter(List.of( + new FastsattUttakPeriodeAktivitet(new Trekkdager(1), FELLESPERIODE, AKTIVITET1_ANNENPART))) + .periodeResultatType(Perioderesultattype.INNVILGET) + .tidsperiode(LocalDate.of(2021, 8, 15), LocalDate.of(2021, 8, 15)) + .build(); var søkersPerioder = List.of(samtidigUttak, søkersPeriode2); - var saldoUtregning = new SaldoUtregning(Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), søkersPerioder, - List.of(oppholdAnnenpart, periodeAnnenpart), false, Set.of(AKTIVITET1_SØKER), null, null); + var saldoUtregning = new SaldoUtregning( + Map.ofEntries(stønadskonto(FELLESPERIODE, 10)), + søkersPerioder, + List.of(oppholdAnnenpart, periodeAnnenpart), + false, + Set.of(AKTIVITET1_SØKER), + null, + null); assertThat(saldoUtregning.saldo(FELLESPERIODE)).isEqualTo(3); } - private SaldoUtregning lagForenkletSaldoUtregning(Map stønadskontoer, - // NOSONAR - List søkersPerioder, - Trekkdager minsterettDager, - Trekkdager utenAktivitetskravDager, - Optional farUttakRundtFødselPeriode, - Trekkdager farUttakRundtFødselDager) { + private SaldoUtregning lagForenkletSaldoUtregning( + Map stønadskontoer, + // NOSONAR + List søkersPerioder, + Trekkdager minsterettDager, + Trekkdager utenAktivitetskravDager, + Optional farUttakRundtFødselPeriode, + Trekkdager farUttakRundtFødselDager) { var konti = new EnumMap(Stønadskontotype.class); stønadskontoer.forEach((key, value) -> konti.put(key, new Trekkdager(value))); - return new SaldoUtregning(konti, søkersPerioder, List.of(), false, Set.of(AKTIVITET1_SØKER), null, null, minsterettDager, - utenAktivitetskravDager, Trekkdager.ZERO, farUttakRundtFødselDager); + return new SaldoUtregning( + konti, + søkersPerioder, + List.of(), + false, + Set.of(AKTIVITET1_SØKER), + null, + null, + minsterettDager, + utenAktivitetskravDager, + Trekkdager.ZERO, + farUttakRundtFødselDager); } } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoIdentifisererTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoIdentifisererTest.java index 0c70cc13..a9836aa7 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoIdentifisererTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/TomKontoIdentifisererTest.java @@ -7,9 +7,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Set; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.RegelGrunnlagTestBuilder; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Virkedager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Behandling; @@ -20,6 +17,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregningGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregningTjeneste; +import org.junit.jupiter.api.Test; class TomKontoIdentifisererTest { @@ -28,7 +26,6 @@ void knekkpunkt_ved_50_prosent_arbeid_og_gradering() { verifiserKnekkpunktVedGradering(100, 1, 50, 2); } - @Test void knekkpunkt_ved_80_prosent_arbeid_og_gradering() { verifiserKnekkpunktVedGradering(100, 1, 80, 5); @@ -53,22 +50,44 @@ private void verifiserKnekkpunktVedGradering(int søktOmDag, int saldo, int arbe verifiserKnekkpunktVedGradering(søktOmDag, saldo, BigDecimal.valueOf(arbeidsprosent), virkedagerVarighet); } - private void verifiserKnekkpunktVedGradering(int søktOmDag, int saldo, BigDecimal arbeidsprosent, int virkedagerVarighet) { + private void verifiserKnekkpunktVedGradering( + int søktOmDag, int saldo, BigDecimal arbeidsprosent, int virkedagerVarighet) { var idag = LocalDate.of(2019, 3, 14); - var oppgittPeriode = OppgittPeriode.forGradering(Stønadskontotype.MØDREKVOTE, idag, idag.plusDays(søktOmDag - 1), arbeidsprosent, null, false, - Set.of(ARBEIDSFORHOLD_1), null, null, null, null); - var kontoer = new Kontoer.Builder().konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(saldo)); + var oppgittPeriode = OppgittPeriode.forGradering( + Stønadskontotype.MØDREKVOTE, + idag, + idag.plusDays(søktOmDag - 1), + arbeidsprosent, + null, + false, + Set.of(ARBEIDSFORHOLD_1), + null, + null, + null, + null); + var kontoer = new Kontoer.Builder() + .konto(new Konto.Builder().type(Stønadskontotype.MØDREKVOTE).trekkdager(saldo)); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) - .behandling(new Behandling.Builder().søkerErMor(true)) - .kontoer(kontoer) - .build(); + .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) + .behandling(new Behandling.Builder().søkerErMor(true)) + .kontoer(kontoer) + .build(); - var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak(List.of(), List.of(), grunnlag, oppgittPeriode.getFom()); + var saldoUtregningGrunnlag = SaldoUtregningGrunnlag.forUtregningAvDelerAvUttak( + List.of(), List.of(), grunnlag, oppgittPeriode.getFom()); var saldoUtregning = SaldoUtregningTjeneste.lagUtregning(saldoUtregningGrunnlag); - var tomKontoKnekkpunkt = TomKontoIdentifiserer.identifiser(oppgittPeriode, List.of(ARBEIDSFORHOLD_1), saldoUtregning, - Stønadskontotype.MØDREKVOTE, null, null, true, InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, UtfallType.INNVILGET); - assertThat(tomKontoKnekkpunkt.orElseThrow().dato()).isEqualTo(Virkedager.plusVirkedager(idag, virkedagerVarighet)); + var tomKontoKnekkpunkt = TomKontoIdentifiserer.identifiser( + oppgittPeriode, + List.of(ARBEIDSFORHOLD_1), + saldoUtregning, + Stønadskontotype.MØDREKVOTE, + null, + null, + true, + InnvilgetÅrsak.KVOTE_ELLER_OVERFØRT_KVOTE, + UtfallType.INNVILGET); + assertThat(tomKontoKnekkpunkt.orElseThrow().dato()) + .isEqualTo(Virkedager.plusVirkedager(idag, virkedagerVarighet)); } } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktPeriodeUtilTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktPeriodeUtilTest.java" index a6b2c4c9..f6432b97 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktPeriodeUtilTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktPeriodeUtilTest.java" @@ -6,11 +6,9 @@ import java.time.LocalDate; import java.util.Arrays; import java.util.List; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.LukketPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; +import org.junit.jupiter.api.Test; class ManglendeSøktPeriodeUtilTest { @@ -22,10 +20,10 @@ class ManglendeSøktPeriodeUtilTest { /* Tre dagers "period of interest" f.o.m. i dag */ var poi = new LukketPeriode(start, slutt); List perioder = Arrays.asList( - // !!! Skal finne et msp her (f.o.m. i dag t.o.m. i dag) !!! - periode(start.plusDays(1), start.plusDays(1)), // En uttaksperiode f.o.m. i morgen t.o.m. i morgen - periode(slutt, slutt) // En uttaksperiode f.o.m. overimorgen t.o.m. overimorgen - ); + // !!! Skal finne et msp her (f.o.m. i dag t.o.m. i dag) !!! + periode(start.plusDays(1), start.plusDays(1)), // En uttaksperiode f.o.m. i morgen t.o.m. i morgen + periode(slutt, slutt) // En uttaksperiode f.o.m. overimorgen t.o.m. overimorgen + ); var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, poi); @@ -45,11 +43,12 @@ void skalFinneEttHullInniEnPeriodOfInterest() { /* Tre dagers "period of interest" f.o.m. i dag */ var poi = new LukketPeriode(start, slutt); - List perioder = Arrays.asList(periode(start, start), - // En uttaksperiode f.o.m. i dag t.o.m. i dag - // !!! Skal finne et msp her (f.o.m. i morgen t.o.m. i morgen) !!! - periode(slutt, slutt) // En uttaksperiode f.o.m. overimorgen t.o.m. overimorgen - ); + List perioder = Arrays.asList( + periode(start, start), + // En uttaksperiode f.o.m. i dag t.o.m. i dag + // !!! Skal finne et msp her (f.o.m. i morgen t.o.m. i morgen) !!! + periode(slutt, slutt) // En uttaksperiode f.o.m. overimorgen t.o.m. overimorgen + ); var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, poi); @@ -65,13 +64,15 @@ void skalFinneFlereHullInniEnPeriodOfInterest() { /* Fem dagers "period of interest" f.o.m. i dag */ var poi = new LukketPeriode(start, slutt); - List perioder = Arrays.asList(periode(start, start), - // En uttaksperiode f.o.m. i dag t.o.m. i dag - // !!! Skal finne et msp her (f.o.m. i morgen t.o.m. i morgen) !!! - periode(start.plusDays(2), start.plusDays(2)), // En uttaksperiode f.o.m. overimorgen t.o.m. overimorgen - // !!! Skal finne et msp her (f.o.m. om tre dager t.o.m. om tre dager) !!! - periode(slutt, slutt) // En uttaksperiode f.o.m. om fire dager t.o.m. om fire dager - ); + List perioder = Arrays.asList( + periode(start, start), + // En uttaksperiode f.o.m. i dag t.o.m. i dag + // !!! Skal finne et msp her (f.o.m. i morgen t.o.m. i morgen) !!! + periode(start.plusDays(2), start.plusDays(2)), // En uttaksperiode f.o.m. overimorgen t.o.m. + // overimorgen + // !!! Skal finne et msp her (f.o.m. om tre dager t.o.m. om tre dager) !!! + periode(slutt, slutt) // En uttaksperiode f.o.m. om fire dager t.o.m. om fire dager + ); var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, poi); @@ -89,11 +90,12 @@ void skalFinneFlereHullInniEnPeriodOfInterest() { /* Tre dagers "period of interest" f.o.m. i dag */ var poi = new LukketPeriode(start, slutt); - List perioder = Arrays.asList(periode(start, start), - // En uttaksperiode f.o.m. i dag t.o.m. i dag - periode(start.plusDays(1), start.plusDays(1)) // En uttaksperiode f.o.m. i morgen t.o.m. i morgen - // !!! Skal finne et msp her (f.o.m. overimorgen t.o.m. overimorgen) !!! - ); + List perioder = Arrays.asList( + periode(start, start), + // En uttaksperiode f.o.m. i dag t.o.m. i dag + periode(start.plusDays(1), start.plusDays(1)) // En uttaksperiode f.o.m. i morgen t.o.m. i morgen + // !!! Skal finne et msp her (f.o.m. overimorgen t.o.m. overimorgen) !!! + ); var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, poi); @@ -109,13 +111,13 @@ void skalIkkeFinneHullHvisDetIkkeErNoenHull() { /* Tre dagers "period of interest" f.o.m. i dag */ var poi = new LukketPeriode(start, slutt); - List perioder = Arrays.asList(periode(start, start), - // En uttaksperiode f.o.m. i dag t.o.m. i dag - periode(start.plusDays(1), start.plusDays(1)), // En uttaksperiode f.o.m. i morgen t.o.m. i morgen - periode(slutt, slutt) // En uttaksperiode f.o.m. overimorgen t.o.m. overimorgen - /// !!! Skal ikke finne noen msp !!! - ); - + List perioder = Arrays.asList( + periode(start, start), + // En uttaksperiode f.o.m. i dag t.o.m. i dag + periode(start.plusDays(1), start.plusDays(1)), // En uttaksperiode f.o.m. i morgen t.o.m. i morgen + periode(slutt, slutt) // En uttaksperiode f.o.m. overimorgen t.o.m. overimorgen + /// !!! Skal ikke finne noen msp !!! + ); var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, poi); @@ -129,10 +131,11 @@ void skalIkkeFinneHullHvisDetIkkeErNoenHull() { /* Tre dagers "period of interest" f.o.m. i dag */ var poi = new LukketPeriode(start, slutt); - List perioder = List.of(periode(start.minusDays(1), slutt.minusDays(1)) - // En uttaksperiode f.o.m. i går t.o.m. i morgen - // !!! Skal finne et msp her (f.o.m. overimorgen t.o.m. overimorgen) !!! - ); + List perioder = List.of( + periode(start.minusDays(1), slutt.minusDays(1)) + // En uttaksperiode f.o.m. i går t.o.m. i morgen + // !!! Skal finne et msp her (f.o.m. overimorgen t.o.m. overimorgen) !!! + ); var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, poi); @@ -149,9 +152,9 @@ void skalIkkeFinneHullHvisDetIkkeErNoenHull() { /* Tre dagers "period of interest" f.o.m. i dag */ var poi = new LukketPeriode(start, slutt); List perioder = List.of( - // !!! Skal finne et msp her (f.o.m. i dag t.o.m. i dag) !!! - periode(start.plusDays(1), slutt.plusDays(1)) // En uttaksperiode f.o.m. i morgen t.o.m. om tre dager - ); + // !!! Skal finne et msp her (f.o.m. i dag t.o.m. i dag) !!! + periode(start.plusDays(1), slutt.plusDays(1)) // En uttaksperiode f.o.m. i morgen t.o.m. om tre dager + ); var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, poi); @@ -166,7 +169,8 @@ void enDagPerioderSkalIkkeGiHull() { var enDagPeriode = new LukketPeriode(LocalDate.of(2019, 1, 1), LocalDate.of(2019, 1, 1)); var etterPeriode = new LukketPeriode(LocalDate.of(2019, 1, 2), LocalDate.of(2019, 1, 10)); var perioder = Arrays.asList(førPeriode, enDagPeriode, etterPeriode); - var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, new LukketPeriode(førPeriode.getFom(), etterPeriode.getTom())); + var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder( + perioder, new LukketPeriode(førPeriode.getFom(), etterPeriode.getTom())); assertThat(msp).isEmpty(); } @@ -179,7 +183,8 @@ void skalFinneFlereHull() { var periode4 = new LukketPeriode(LocalDate.of(2019, 1, 15), LocalDate.of(2019, 1, 20)); var periode5 = new LukketPeriode(LocalDate.of(2019, 1, 25), LocalDate.of(2019, 1, 30)); var perioder = Arrays.asList(periode1, periode2, periode3, periode4, periode5); - var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder(perioder, new LukketPeriode(periode1.getFom(), periode5.getTom())); + var msp = ManglendeSøktPeriodeUtil.finnManglendeSøktePerioder( + perioder, new LukketPeriode(periode1.getFom(), periode5.getTom())); assertThat(msp).hasSize(2); assertThat(msp.get(0).getFom()).isEqualTo(LocalDate.of(2019, 1, 11)); diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderForSammenhengendeUttakTjenesteTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderForSammenhengendeUttakTjenesteTest.java" index 96013b2d..c15d7dab 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderForSammenhengendeUttakTjenesteTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderForSammenhengendeUttakTjenesteTest.java" @@ -9,9 +9,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.RegelGrunnlagTestBuilder; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.Trekkdager; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon; @@ -35,6 +32,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UtsettelseÅrsak; +import org.junit.jupiter.api.Test; class ManglendeSøktePerioderForSammenhengendeUttakTjenesteTest { @@ -47,18 +45,21 @@ class ManglendeSøktePerioderForSammenhengendeUttakTjenesteTest { void farMedAleneomsorgSkalHaUttakFraFødsel() { // Case: PFP-6988. Far med aleneomsorg, 80% dekningsgrad, søkt uttak 9 uker etter fødsel. // Det skal legges til manglende periode fra fødselen og frem til hans første uttaksdag. - // Skjæringstidspunktet for opptjening og beregning er ved hans første uttaksdag, men vi må trekke dager fra fødselen eller omsorgsovertakelsedatoen ved adopsjon. + // Skjæringstidspunktet for opptjening og beregning er ved hans første uttaksdag, men vi må + // trekke dager fra fødselen eller omsorgsovertakelsedatoen ved adopsjon. var fødsel = LocalDate.of(2018, 12, 4); var førsteUttakSøktFom = fødsel.plusWeeks(9); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, førsteUttakSøktFom, førsteUttakSøktFom.plusWeeks(10)))) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) - .datoer(new Datoer.Builder().fødsel(fødsel)) - .build(); + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(FORELDREPENGER, førsteUttakSøktFom, førsteUttakSøktFom.plusWeeks(10)))) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) + .datoer(new Datoer.Builder().fødsel(fødsel)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -81,13 +82,15 @@ void farMedAleneomsorgSkalHaUttakFraAdopsjon() { var førsteUttakSøktFom = adopsjonsDato.plusWeeks(9); var grunnlag = RegelGrunnlagTestBuilder.create() - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, førsteUttakSøktFom, førsteUttakSøktFom.plusWeeks(10)))) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(adopsjonsDato)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(adopsjonsDato).stebarnsadopsjon(false)) - .build(); + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode( + oppgittPeriode(FORELDREPENGER, førsteUttakSøktFom, førsteUttakSøktFom.plusWeeks(10)))) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().aleneomsorg(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(adopsjonsDato)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(adopsjonsDato).stebarnsadopsjon(false)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -103,25 +106,35 @@ void farMedAleneomsorgMedInnvilgetAnnetPartPerioder() { var morTom = LocalDate.of(2020, 12, 3); var farFom = morTom.plusDays(10); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(LocalDate.of(2020, 11, 5))) - .annenPart(new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2020, 11, 5), morTom).build())) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true).aleneomsorg(true).samtykke(false)) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(FORELDREPENGER, farFom, farFom.plusDays(10)))) - .build(); + .datoer(new Datoer.Builder().fødsel(LocalDate.of(2020, 11, 5))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2020, 11, 5), morTom) + .build())) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(true) + .aleneomsorg(true) + .samtykke(false)) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, farFom, farFom.plusDays(10)))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); } private RegelGrunnlag.Builder grunnlagMedKontoer() { - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, førFødselDager)) - .konto(konto(MØDREKVOTE, mødrekvoteDager)) - .konto(konto(FELLESPERIODE, fellesperiodDedager)) - .konto(konto(FEDREKVOTE, fedrekvoteDager)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, førFødselDager)) + .konto(konto(MØDREKVOTE, mødrekvoteDager)) + .konto(konto(FELLESPERIODE, fellesperiodDedager)) + .konto(konto(FEDREKVOTE, fedrekvoteDager)); return RegelGrunnlagTestBuilder.create() - .opptjening(new Opptjening.Builder().skjæringstidspunkt(LocalDate.MIN)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1))); + .opptjening(new Opptjening.Builder().skjæringstidspunkt(LocalDate.MIN)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1))); } private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) { @@ -133,19 +146,20 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) var omsorgsovertakelse = LocalDate.of(2018, 6, 4).plusWeeks(4); var uttakPeriode = oppgittPeriode(FELLESPERIODE, omsorgsovertakelse, omsorgsovertakelse.plusWeeks(7)); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(uttakPeriode)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(LocalDate.of(2018, 6, 5))) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(uttakPeriode)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(LocalDate.of(2018, 6, 5))) + .build(); var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag); - //Skal utlede msp mellom ankomst norge og første søkte dag + // Skal utlede msp mellom ankomst norge og første søkte dag assertThat(manglendeSøktePerioder).isNotEmpty(); var mspFørFødsel = manglendeSøktePerioder.stream() - .filter(mspPeriode -> FORELDREPENGER_FØR_FØDSEL.equals(mspPeriode.getStønadskontotype())) - .findFirst(); + .filter(mspPeriode -> FORELDREPENGER_FØR_FØDSEL.equals(mspPeriode.getStønadskontotype())) + .findFirst(); assertThat(mspFørFødsel).isEmpty(); } @@ -154,23 +168,27 @@ private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) void skalUtledeMspIFellesperiodeFørFødsel() { var familiehendelsesDato = LocalDate.of(2018, 6, 4); - - var uttakPeriode = oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(8), familiehendelsesDato.minusWeeks(5)); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) - .søknad(new Søknad.Builder().oppgittPeriode(uttakPeriode)) - .build(); - + var uttakPeriode = + oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(8), familiehendelsesDato.minusWeeks(5)); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) + .søknad(new Søknad.Builder().oppgittPeriode(uttakPeriode)) + .build(); var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag); assertThat(manglendeSøktePerioder).isNotEmpty(); - var mspFørFødsel = manglendeSøktePerioder.stream().filter(periode -> periode.getStønadskontotype().equals(FELLESPERIODE)).findFirst(); + var mspFørFødsel = manglendeSøktePerioder.stream() + .filter(periode -> periode.getStønadskontotype().equals(FELLESPERIODE)) + .findFirst(); assertThat(mspFørFødsel).isPresent(); mspFørFødsel.ifPresent(msp -> { - assertThat(msp.getFom()).isEqualTo(familiehendelsesDato.minusWeeks(5).plusDays(1)); - assertThat(msp.getTom()).isEqualTo(familiehendelsesDato.minusWeeks(3).minusDays(3)); //-3 pga helg + assertThat(msp.getFom()) + .isEqualTo(familiehendelsesDato.minusWeeks(5).plusDays(1)); + assertThat(msp.getTom()) + .isEqualTo(familiehendelsesDato.minusWeeks(3).minusDays(3)); // -3 pga helg }); } @@ -182,60 +200,78 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local void skal_ikke_overlappe_msp_fpff_og_msp_fellesperiode_før_fødsel() { var familiehendelsesDato = LocalDate.of(2019, 12, 11); - var fellesperiode1 = oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(10), familiehendelsesDato.minusWeeks(8)); - var fellesperiode2 = oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(7), familiehendelsesDato.minusWeeks(5)); - var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, familiehendelsesDato.minusWeeks(3), familiehendelsesDato.minusWeeks(2)); - var fellesperiode3 = oppgittPeriode(FELLESPERIODE, familiehendelsesDato, familiehendelsesDato.plusWeeks(6).minusDays(1)); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) - .søknad(new Søknad.Builder().oppgittPeriode(fellesperiode1) - .oppgittPeriode(fellesperiode2) - .oppgittPeriode(fpff) - .oppgittPeriode(fellesperiode3)) - .build(); + var fellesperiode1 = + oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(10), familiehendelsesDato.minusWeeks(8)); + var fellesperiode2 = + oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(7), familiehendelsesDato.minusWeeks(5)); + var fpff = oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, familiehendelsesDato.minusWeeks(3), familiehendelsesDato.minusWeeks(2)); + var fellesperiode3 = oppgittPeriode( + FELLESPERIODE, + familiehendelsesDato, + familiehendelsesDato.plusWeeks(6).minusDays(1)); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(fellesperiode1) + .oppgittPeriode(fellesperiode2) + .oppgittPeriode(fpff) + .oppgittPeriode(fellesperiode3)) + .build(); var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag); assertThat(manglendeSøktePerioder.get(0).getStønadskontotype()).isEqualTo(FELLESPERIODE); - assertThat(manglendeSøktePerioder.get(0).getFom()).isEqualTo(familiehendelsesDato.minusWeeks(8).plusDays(1)); - assertThat(manglendeSøktePerioder.get(0).getTom()).isEqualTo(familiehendelsesDato.minusWeeks(7).minusDays(1)); + assertThat(manglendeSøktePerioder.get(0).getFom()) + .isEqualTo(familiehendelsesDato.minusWeeks(8).plusDays(1)); + assertThat(manglendeSøktePerioder.get(0).getTom()) + .isEqualTo(familiehendelsesDato.minusWeeks(7).minusDays(1)); assertThat(manglendeSøktePerioder.get(1).getStønadskontotype()).isEqualTo(FELLESPERIODE); - assertThat(manglendeSøktePerioder.get(1).getFom()).isEqualTo(familiehendelsesDato.minusWeeks(5).plusDays(1)); - assertThat(manglendeSøktePerioder.get(1).getTom()).isEqualTo(familiehendelsesDato.minusWeeks(3).minusDays(1)); + assertThat(manglendeSøktePerioder.get(1).getFom()) + .isEqualTo(familiehendelsesDato.minusWeeks(5).plusDays(1)); + assertThat(manglendeSøktePerioder.get(1).getTom()) + .isEqualTo(familiehendelsesDato.minusWeeks(3).minusDays(1)); assertThat(manglendeSøktePerioder.get(2).getStønadskontotype()).isEqualTo(FORELDREPENGER_FØR_FØDSEL); - assertThat(manglendeSøktePerioder.get(2).getFom()).isEqualTo(familiehendelsesDato.minusWeeks(2).plusDays(1)); + assertThat(manglendeSøktePerioder.get(2).getFom()) + .isEqualTo(familiehendelsesDato.minusWeeks(2).plusDays(1)); assertThat(manglendeSøktePerioder.get(2).getTom()).isEqualTo(familiehendelsesDato.minusDays(1)); } @Test void skalUtledeMspMødrekvoteITidsperiodenForbeholdtMorEtterFødsel() { var familiehendelsesDato = LocalDate.of(2018, 6, 4).plusWeeks(4); - var grunnlag = grunnlagMedKontoer().søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelsesDato.plusWeeks(6), familiehendelsesDato.plusWeeks(7)))) - .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, familiehendelsesDato.plusWeeks(6), familiehendelsesDato.plusWeeks(7)))) + .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) + .build(); var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag); - var mspEtterFødsel = manglendeSøktePerioder.stream().filter(msp -> msp.getStønadskontotype().equals(MØDREKVOTE)).findFirst(); + var mspEtterFødsel = manglendeSøktePerioder.stream() + .filter(msp -> msp.getStønadskontotype().equals(MØDREKVOTE)) + .findFirst(); assertThat(mspEtterFødsel).isPresent(); mspEtterFødsel.ifPresent(msp -> { assertThat(msp.getFom()).isEqualTo(familiehendelsesDato); - assertThat(msp.getTom()).isEqualTo(familiehendelsesDato.plusWeeks(6).minusDays(3));//-3 pga helg + assertThat(msp.getTom()).isEqualTo(familiehendelsesDato.plusWeeks(6).minusDays(3)); // -3 pga helg }); } @Test void skalIkkeUtledeMspIPerioderFørEndringsdato() { var familiehendelsesDato = LocalDate.of(2018, 6, 4).plusWeeks(4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder()) - .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) - .behandling(new Behandling.Builder()) - .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2019, 6, 4))) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder()) + .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) + .behandling(new Behandling.Builder()) + .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2019, 6, 4))) + .build(); var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag); @@ -246,13 +282,17 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local void finnerHullMellomSøktePerioderOgAnnenPartsUttakperioder() { var fødselsdato = LocalDate.of(2018, 6, 6); var hullDato = fødselsdato.plusWeeks(6); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, hullDato.minusDays(1)))) - .annenPart( - new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(hullDato.plusDays(1), fødselsdato.plusWeeks(10)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, hullDato.minusDays(1)))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(hullDato.plusDays(1), fødselsdato.plusWeeks(10)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); @@ -264,23 +304,30 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local void finnerHullMellomSøktePerioderOgAnnenPartsUttakperioderAvslåttPeriodeUtenTrekkdagerOgUtbetaling() { var familiehendelse = LocalDate.of(2018, 12, 4); - var annenpartInnvilgetMødrekvote = AnnenpartUttakPeriode.Builder.uttak(familiehendelse, familiehendelse.plusWeeks(6).minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, new Trekkdager(10), Utbetalingsgrad.TEN)) - .build(); - var annenpartAvslåttMødrekvote = AnnenpartUttakPeriode.Builder.uttak(familiehendelse.plusWeeks(6), familiehendelse.plusWeeks(7)) - .innvilget(false) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build(); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, familiehendelse.plusWeeks(8), familiehendelse.plusWeeks(15)))) - .behandling(farBehandling()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(familiehendelse.plusWeeks(10))) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .annenPart(new AnnenPart.Builder().uttaksperiode(annenpartInnvilgetMødrekvote).uttaksperiode(annenpartAvslåttMødrekvote)) - .build(); + var annenpartInnvilgetMødrekvote = AnnenpartUttakPeriode.Builder.uttak( + familiehendelse, familiehendelse.plusWeeks(6).minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), MØDREKVOTE, new Trekkdager(10), Utbetalingsgrad.TEN)) + .build(); + var annenpartAvslåttMødrekvote = AnnenpartUttakPeriode.Builder.uttak( + familiehendelse.plusWeeks(6), familiehendelse.plusWeeks(7)) + .innvilget(false) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) + .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, familiehendelse.plusWeeks(8), familiehendelse.plusWeeks(15)))) + .behandling(farBehandling()) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(familiehendelse.plusWeeks(10))) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartInnvilgetMødrekvote) + .uttaksperiode(annenpartAvslåttMødrekvote)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); @@ -292,32 +339,41 @@ private OppgittPeriode oppgittPeriode(Stønadskontotype stønadskontotype, Local void finnerIkkeHullFørRevurderingEndringsdato() { var fødselsdato = LocalDate.of(2018, 6, 6); var hullDato = fødselsdato.plusWeeks(6); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, hullDato.minusDays(1)))) - .annenPart( - new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(hullDato.plusDays(1), fødselsdato.plusWeeks(10)).build())) - .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2019, 1, 1))) - .behandling(new Behandling.Builder()) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, hullDato.minusDays(1)))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(hullDato.plusDays(1), fødselsdato.plusWeeks(10)) + .build())) + .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2019, 1, 1))) + .behandling(new Behandling.Builder()) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).isEmpty(); } - @Test void overlappendePerioderMedAnnenPartUtenHull() { var fødselsdato = LocalDate.of(2018, 6, 6); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10)))) - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(7).plusDays(1), fødselsdato.plusWeeks(8)).build()) - .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(9).plusDays(1), fødselsdato.plusWeeks(11)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10)))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.plusWeeks(7).plusDays(1), fødselsdato.plusWeeks(8)) + .build()) + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.plusWeeks(9).plusDays(1), fødselsdato.plusWeeks(11)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).isEmpty(); @@ -328,13 +384,16 @@ void helgErIkkeHull() { var fødselsdato = LocalDate.of(2018, 6, 6); var mødrekvoteSlutt = LocalDate.of(2018, 7, 20); var annenPartStart = LocalDate.of(2018, 7, 23); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, mødrekvoteSlutt))) - .annenPart( - new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(annenPartStart, annenPartStart.plusWeeks(10)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, mødrekvoteSlutt))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(annenPartStart, annenPartStart.plusWeeks(10)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).isEmpty(); @@ -344,18 +403,27 @@ void helgErIkkeHull() { void skalLageManglendeSøktFraUke7TilFørsteUttaksdagNårBareFarHarRett() { var familiehendelse = LocalDate.of(2018, 12, 4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(8)))) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(8)))) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); - assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6)); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getSøknad().getOppgittePerioder().get(0).getFom().minusDays(1)); + assertThat(msp.get(0).getFom()) + .isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6)); + assertThat(msp.get(0).getTom()) + .isEqualTo(grunnlag.getSøknad() + .getOppgittePerioder() + .get(0) + .getFom() + .minusDays(1)); assertThat(msp.get(0).getStønadskontotype()).isEqualTo(FORELDREPENGER); } @@ -364,25 +432,39 @@ void helgErIkkeHull() { var familiehendelse = LocalDate.of(2018, 12, 27); var søknadsperiodeFom = familiehendelse.minusWeeks(3); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, søknadsperiodeFom, familiehendelse.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelse, familiehendelse.plusWeeks(3))) - .oppgittPeriode( - OppgittPeriode.forUtsettelse(familiehendelse.plusWeeks(6).plusDays(1), familiehendelse.plusWeeks(8), UtsettelseÅrsak.ARBEID, null, - null, null, null))) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, søknadsperiodeFom, familiehendelse.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelse, familiehendelse.plusWeeks(3))) + .oppgittPeriode(OppgittPeriode.forUtsettelse( + familiehendelse.plusWeeks(6).plusDays(1), + familiehendelse.plusWeeks(8), + UtsettelseÅrsak.ARBEID, + null, + null, + null, + null))) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(2); - assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(3).plusDays(1)); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6).minusDays(1)); - assertThat(msp.get(1).getFom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6)); - assertThat(msp.get(1).getTom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6)); + assertThat(msp.get(0).getFom()) + .isEqualTo( + grunnlag.getDatoer().getFamiliehendelse().plusWeeks(3).plusDays(1)); + assertThat(msp.get(0).getTom()) + .isEqualTo( + grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6).minusDays(1)); + assertThat(msp.get(1).getFom()) + .isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6)); + assertThat(msp.get(1).getTom()) + .isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6)); assertThat(msp.get(0).getStønadskontotype()).isEqualTo(MØDREKVOTE); } @@ -391,14 +473,17 @@ void helgErIkkeHull() { var familiehendelse = LocalDate.of(2018, 12, 4); var søknadsperiodeFom = familiehendelse.plusWeeks(9); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, søknadsperiodeFom, familiehendelse.plusWeeks(10)))) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(FORELDREPENGER, søknadsperiodeFom, familiehendelse.plusWeeks(10)))) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -409,31 +494,39 @@ void helgErIkkeHull() { void skalLageManglendeSøktFraMellomForeldreFørStpForOpptjeningAnnenpartAvslåttSistePeriode() { var familiehendelse = LocalDate.of(2018, 12, 4); - var annenpartInnvilgetMødrekvote = AnnenpartUttakPeriode.Builder.uttak(familiehendelse, familiehendelse.plusWeeks(6).minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, new Trekkdager(10), Utbetalingsgrad.TEN)) - .build(); - var annenpartInnvilgetUtsettelse = AnnenpartUttakPeriode.Builder.utsettelse(familiehendelse.plusWeeks(6), - familiehendelse.plusWeeks(7).minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build(); - var annenpartAvslåttMødrekvote = AnnenpartUttakPeriode.Builder.uttak(familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(7).plusDays(2)) - .innvilget(false) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build(); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, familiehendelse.plusWeeks(8), familiehendelse.plusWeeks(15)))) - .behandling(farBehandling()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(familiehendelse.plusWeeks(10))) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .annenPart(new AnnenPart.Builder().uttaksperiode(annenpartInnvilgetMødrekvote) - .uttaksperiode(annenpartInnvilgetUtsettelse) - .uttaksperiode(annenpartAvslåttMødrekvote)) - .build(); + var annenpartInnvilgetMødrekvote = AnnenpartUttakPeriode.Builder.uttak( + familiehendelse, familiehendelse.plusWeeks(6).minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), MØDREKVOTE, new Trekkdager(10), Utbetalingsgrad.TEN)) + .build(); + var annenpartInnvilgetUtsettelse = AnnenpartUttakPeriode.Builder.utsettelse( + familiehendelse.plusWeeks(6), + familiehendelse.plusWeeks(7).minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) + .build(); + var annenpartAvslåttMødrekvote = AnnenpartUttakPeriode.Builder.uttak( + familiehendelse.plusWeeks(7), + familiehendelse.plusWeeks(7).plusDays(2)) + .innvilget(false) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) + .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, familiehendelse.plusWeeks(8), familiehendelse.plusWeeks(15)))) + .behandling(farBehandling()) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(familiehendelse.plusWeeks(10))) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartInnvilgetMødrekvote) + .uttaksperiode(annenpartInnvilgetUtsettelse) + .uttaksperiode(annenpartAvslåttMødrekvote)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -445,65 +538,81 @@ void helgErIkkeHull() { void skalLageManglendeSøktFraMellomForeldreFørStpForOpptjeningAnnenpartInnvilgetUtsettelseSistePeriode() { var familiehendelse = LocalDate.of(2018, 12, 4); - var annenpartInnvilgetMødrekvote = AnnenpartUttakPeriode.Builder.uttak(familiehendelse, familiehendelse.plusWeeks(6).minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, new Trekkdager(10), Utbetalingsgrad.TEN)) - .build(); - var annenpartInnvilgetUtsettelse = AnnenpartUttakPeriode.Builder.utsettelse(familiehendelse.plusWeeks(6), - familiehendelse.plusWeeks(7).minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) - .build(); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, familiehendelse.plusWeeks(8), familiehendelse.plusWeeks(15)))) - .behandling(farBehandling()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(familiehendelse.plusWeeks(10))) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .annenPart(new AnnenPart.Builder().uttaksperiode(annenpartInnvilgetMødrekvote).uttaksperiode(annenpartInnvilgetUtsettelse)) - .build(); + var annenpartInnvilgetMødrekvote = AnnenpartUttakPeriode.Builder.uttak( + familiehendelse, familiehendelse.plusWeeks(6).minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), MØDREKVOTE, new Trekkdager(10), Utbetalingsgrad.TEN)) + .build(); + var annenpartInnvilgetUtsettelse = AnnenpartUttakPeriode.Builder.utsettelse( + familiehendelse.plusWeeks(6), + familiehendelse.plusWeeks(7).minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), MØDREKVOTE, Trekkdager.ZERO, Utbetalingsgrad.ZERO)) + .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, familiehendelse.plusWeeks(8), familiehendelse.plusWeeks(15)))) + .behandling(farBehandling()) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(familiehendelse.plusWeeks(10))) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(annenpartInnvilgetMødrekvote) + .uttaksperiode(annenpartInnvilgetUtsettelse)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); - assertThat(msp.get(0).getFom()).isEqualTo(annenpartInnvilgetUtsettelse.getTom().plusDays(1)); + assertThat(msp.get(0).getFom()) + .isEqualTo(annenpartInnvilgetUtsettelse.getTom().plusDays(1)); } @Test void skalLageManglendeSøktFraMellomForeldreFørStpForOpptjening() { var familiehendelse = LocalDate.of(2018, 12, 4); - var annenpartInnvilgetMødrekvote = AnnenpartUttakPeriode.Builder.uttak(familiehendelse, familiehendelse.plusWeeks(6).minusDays(1)) - .innvilget(true) - .uttakPeriodeAktivitet( - new AnnenpartUttakPeriodeAktivitet(AktivitetIdentifikator.forFrilans(), MØDREKVOTE, new Trekkdager(10), Utbetalingsgrad.TEN)) - .build(); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, familiehendelse.plusWeeks(8), familiehendelse.plusWeeks(15)))) - .behandling(farBehandling()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(familiehendelse.plusWeeks(10))) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .annenPart(new AnnenPart.Builder().uttaksperiode(annenpartInnvilgetMødrekvote)) - .build(); + var annenpartInnvilgetMødrekvote = AnnenpartUttakPeriode.Builder.uttak( + familiehendelse, familiehendelse.plusWeeks(6).minusDays(1)) + .innvilget(true) + .uttakPeriodeAktivitet(new AnnenpartUttakPeriodeAktivitet( + AktivitetIdentifikator.forFrilans(), MØDREKVOTE, new Trekkdager(10), Utbetalingsgrad.TEN)) + .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FEDREKVOTE, familiehendelse.plusWeeks(8), familiehendelse.plusWeeks(15)))) + .behandling(farBehandling()) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(familiehendelse.plusWeeks(10))) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .annenPart(new AnnenPart.Builder().uttaksperiode(annenpartInnvilgetMødrekvote)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); - assertThat(msp.get(0).getFom()).isEqualTo(annenpartInnvilgetMødrekvote.getTom().plusDays(1)); + assertThat(msp.get(0).getFom()) + .isEqualTo(annenpartInnvilgetMødrekvote.getTom().plusDays(1)); } @Test void skalLageManglendeSøktFraOmsorgsovertakelseTilFørsteUttaksdagVedAdopsjon() { var familiehendelse = LocalDate.of(2018, 12, 4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelse.plusWeeks(1), familiehendelse.plusWeeks(3)))) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, familiehendelse.plusWeeks(1), familiehendelse.plusWeeks(3)))) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -521,15 +630,18 @@ private Behandling.Builder morBehandling() { void skalLageManglendeSøktFraOmsorgsovertakelseTilFørsteUttaksdagVedAdopsjonDerAnnenpartIkkeHarUttaksperioder() { var familiehendelse = LocalDate.of(2018, 12, 4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelse.plusWeeks(1), familiehendelse.plusWeeks(3)))) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - //Annenpart finnes, men har fått avslag på alle sine perioder - .annenPart(new AnnenPart.Builder()) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, familiehendelse.plusWeeks(1), familiehendelse.plusWeeks(3)))) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + // Annenpart finnes, men har fått avslag på alle sine perioder + .annenPart(new AnnenPart.Builder()) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -543,19 +655,27 @@ private Behandling.Builder morBehandling() { void skalLageManglendeSøktFraOmsorgsovertakelseTilFørsteUttaksdagNårBareFarHarRett() { var familiehendelse = LocalDate.of(2018, 12, 4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(8)))) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(8)))) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse()); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getSøknad().getOppgittePerioder().get(0).getFom().minusDays(1)); + assertThat(msp.get(0).getTom()) + .isEqualTo(grunnlag.getSøknad() + .getOppgittePerioder() + .get(0) + .getFom() + .minusDays(1)); assertThat(msp.get(0).getStønadskontotype()).isNull(); } @@ -563,19 +683,27 @@ private Behandling.Builder morBehandling() { void skalLageManglendeSøktFraAnkomstNorgeDatoTilFørsteUttaksdag() { var familiehendelse = LocalDate.of(2018, 12, 4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelse.plusWeeks(1), familiehendelse.plusWeeks(3)))) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(familiehendelse.plusDays(3))) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, familiehendelse.plusWeeks(1), familiehendelse.plusWeeks(3)))) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(familiehendelse.plusDays(3))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getAdopsjon().getAnkomstNorgeDato()); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getSøknad().getOppgittePerioder().get(0).getFom().minusDays(1)); + assertThat(msp.get(0).getTom()) + .isEqualTo(grunnlag.getSøknad() + .getOppgittePerioder() + .get(0) + .getFom() + .minusDays(1)); assertThat(msp.get(0).getStønadskontotype()).isNull(); } @@ -584,15 +712,19 @@ private Behandling.Builder morBehandling() { var omsorgsovertakelse = LocalDate.of(2018, 12, 4); var førsteUttaksdato = omsorgsovertakelse.plusWeeks(5); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, førsteUttaksdato, førsteUttaksdato.plusWeeks(2)))) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .annenPart( - new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(omsorgsovertakelse, førsteUttaksdato.minusDays(1)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode(FEDREKVOTE, førsteUttaksdato, førsteUttaksdato.plusWeeks(2)))) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(omsorgsovertakelse, førsteUttaksdato.minusDays(1)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -600,46 +732,71 @@ private Behandling.Builder morBehandling() { } @Test - void skalLageManglendeSøktFraOmsorgsovertakelseTilFørsteUttaksdagHvisAnnenpartIkkeHarTattHelePeriodenFramTilSøkersFørsteUttaksdato() { + void + skalLageManglendeSøktFraOmsorgsovertakelseTilFørsteUttaksdagHvisAnnenpartIkkeHarTattHelePeriodenFramTilSøkersFørsteUttaksdato() { var omsorgsovertakelse = LocalDate.of(2018, 12, 4); var førsteUttaksdato = omsorgsovertakelse.plusWeeks(5); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, førsteUttaksdato, førsteUttaksdato.plusWeeks(2)))) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(omsorgsovertakelse, førsteUttaksdato.minusWeeks(1)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, førsteUttaksdato, førsteUttaksdato.plusWeeks(2)))) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(omsorgsovertakelse, førsteUttaksdato.minusWeeks(1)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); - assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getAnnenPart().getUttaksperioder().get(0).getTom().plusDays(1)); + assertThat(msp.get(0).getFom()) + .isEqualTo(grunnlag.getAnnenPart() + .getUttaksperioder() + .get(0) + .getTom() + .plusDays(1)); assertThat(msp.get(0).getTom()).isEqualTo(førsteUttaksdato.minusDays(1)); } @Test - void skalLageManglendeSøktFraOmsorgsovertakelseTilFørsteUttaksdagAnnenpartHvisAnnenpartHarUttakMidtMellomOmsorgsovertakelseOgSøkersFørsteUttaksdag() { + void + skalLageManglendeSøktFraOmsorgsovertakelseTilFørsteUttaksdagAnnenpartHvisAnnenpartHarUttakMidtMellomOmsorgsovertakelseOgSøkersFørsteUttaksdag() { var omsorgsovertakelse = LocalDate.of(2018, 12, 4); var førsteUttaksdato = omsorgsovertakelse.plusWeeks(5); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, førsteUttaksdato, førsteUttaksdato.plusWeeks(2)))) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(omsorgsovertakelse.plusWeeks(1), førsteUttaksdato.minusWeeks(1)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, førsteUttaksdato, førsteUttaksdato.plusWeeks(2)))) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + omsorgsovertakelse.plusWeeks(1), førsteUttaksdato.minusWeeks(1)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(2); assertThat(msp.get(0).getFom()).isEqualTo(omsorgsovertakelse); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getAnnenPart().getUttaksperioder().get(0).getFom().minusDays(1)); - assertThat(msp.get(1).getFom()).isEqualTo(grunnlag.getAnnenPart().getUttaksperioder().get(0).getTom().plusDays(1)); + assertThat(msp.get(0).getTom()) + .isEqualTo(grunnlag.getAnnenPart() + .getUttaksperioder() + .get(0) + .getFom() + .minusDays(1)); + assertThat(msp.get(1).getFom()) + .isEqualTo(grunnlag.getAnnenPart() + .getUttaksperioder() + .get(0) + .getTom() + .plusDays(1)); assertThat(msp.get(1).getTom()).isEqualTo(førsteUttaksdato.minusDays(1)); } @@ -647,24 +804,43 @@ private Behandling.Builder morBehandling() { void skalLageManglendeSøktFraAnkomstNorgeDatoTilFørsteUttaksdagPlussVanligeHullMellomPerioder() { var familiehendelse = LocalDate.of(2018, 12, 4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelse.plusWeeks(1), familiehendelse.plusWeeks(3))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, familiehendelse.plusWeeks(5), familiehendelse.plusWeeks(7)))) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(familiehendelse.plusDays(3))) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, familiehendelse.plusWeeks(1), familiehendelse.plusWeeks(3))) + .oppgittPeriode(oppgittPeriode( + FELLESPERIODE, familiehendelse.plusWeeks(5), familiehendelse.plusWeeks(7)))) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(familiehendelse.plusDays(3))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(2); assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getAdopsjon().getAnkomstNorgeDato()); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getSøknad().getOppgittePerioder().get(0).getFom().minusDays(1)); + assertThat(msp.get(0).getTom()) + .isEqualTo(grunnlag.getSøknad() + .getOppgittePerioder() + .get(0) + .getFom() + .minusDays(1)); assertThat(msp.get(0).getStønadskontotype()).isNull(); - assertThat(msp.get(1).getFom()).isEqualTo(grunnlag.getSøknad().getOppgittePerioder().get(0).getTom().plusDays(1)); - assertThat(msp.get(1).getTom()).isEqualTo(grunnlag.getSøknad().getOppgittePerioder().get(1).getFom().minusDays(1)); + assertThat(msp.get(1).getFom()) + .isEqualTo(grunnlag.getSøknad() + .getOppgittePerioder() + .get(0) + .getTom() + .plusDays(1)); + assertThat(msp.get(1).getTom()) + .isEqualTo(grunnlag.getSøknad() + .getOppgittePerioder() + .get(1) + .getFom() + .minusDays(1)); assertThat(msp.get(1).getStønadskontotype()).isNull(); } @@ -672,19 +848,26 @@ private Behandling.Builder morBehandling() { void manglende_fpff_skal_ikke_slutte_i_helg() { var fødselsdato = LocalDate.of(2018, 6, 11); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2018, 5, 21), LocalDate.of(2018, 6, 7))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, LocalDate.of(2018, 6, 11), LocalDate.of(2018, 8, 17))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, LocalDate.of(2018, 9, 10), LocalDate.of(2018, 10, 12)))) - .annenPart(new AnnenPart.Builder() - // Annen part starter mandagen etter - .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2018, 8, 20), LocalDate.of(2018, 9, 8)).samtidigUttak(true).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2018, 5, 21), LocalDate.of(2018, 6, 7))) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, LocalDate.of(2018, 6, 11), LocalDate.of(2018, 8, 17))) + .oppgittPeriode( + oppgittPeriode(FELLESPERIODE, LocalDate.of(2018, 9, 10), LocalDate.of(2018, 10, 12)))) + .annenPart(new AnnenPart.Builder() + // Annen part starter mandagen etter + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2018, 8, 20), LocalDate.of(2018, 9, 8)) + .samtidigUttak(true) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); - //Lager manglende søkt bare for fredagen, ok ikke helgen + // Lager manglende søkt bare for fredagen, ok ikke helgen assertThat(msp).hasSize(1); assertThat(msp.get(0).getFom()).isEqualTo(LocalDate.of(2018, 6, 8)); assertThat(msp.get(0).getTom()).isEqualTo(LocalDate.of(2018, 6, 8)); @@ -694,10 +877,12 @@ void manglende_fpff_skal_ikke_slutte_i_helg() { void skalIkkeOppretteManglendeSøktFørSkjæringstidspunktForOpptjening() { var fødselsdato = LocalDate.of(2018, 6, 11); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6)))) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6)))) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -708,12 +893,14 @@ void manglende_fpff_skal_ikke_slutte_i_helg() { void skalOppretteManglendeSøktFraSkjæringstidspunktForOpptjening() { var fødselsdato = LocalDate.of(2018, 6, 13); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusWeeks(2))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6)))) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato.minusWeeks(1))) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusWeeks(2))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6)))) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato.minusWeeks(1))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -726,14 +913,18 @@ void manglende_fpff_skal_ikke_slutte_i_helg() { void skalIkkeOppretteManglendeSøktBasertPåAnnenPartFørSkjæringstidspunktForOpptjening() { var fødselsdato = LocalDate.of(2018, 6, 13); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6)))) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato.plusWeeks(7))) - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(8)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(6)))) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato.plusWeeks(7))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(7), fødselsdato.plusWeeks(8)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -744,15 +935,24 @@ void manglende_fpff_skal_ikke_slutte_i_helg() { void skal_ikke_opprette_manglende_søkt_før_endringsdato() { var fødselsdato = LocalDate.of(2018, 6, 13); - var oppgittPeriode = OppgittPeriode.forVanligPeriode(FORELDREPENGER, fødselsdato.plusWeeks(20), fødselsdato.plusWeeks(22), null, false, - fødselsdato.plusWeeks(17), null, null, null); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato.plusWeeks(7))) - .behandling(farBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) - .revurdering(new Revurdering.Builder().endringsdato(fødselsdato.plusWeeks(18))) - .build(); + var oppgittPeriode = OppgittPeriode.forVanligPeriode( + FORELDREPENGER, + fødselsdato.plusWeeks(20), + fødselsdato.plusWeeks(22), + null, + false, + fødselsdato.plusWeeks(17), + null, + null, + null); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(fødselsdato.plusWeeks(7))) + .behandling(farBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false)) + .revurdering(new Revurdering.Builder().endringsdato(fødselsdato.plusWeeks(18))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -760,5 +960,4 @@ void manglende_fpff_skal_ikke_slutte_i_helg() { assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getRevurdering().getEndringsdato()); assertThat(msp.get(0).getTom()).isEqualTo(fødselsdato.plusWeeks(20).minusDays(1)); } - } diff --git "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderTjenesteTest.java" "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderTjenesteTest.java" index 5b1b3ca7..4d434a7b 100644 --- "a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderTjenesteTest.java" +++ "b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/util/ManglendeS\303\270ktePerioderTjenesteTest.java" @@ -9,10 +9,6 @@ import java.time.LocalDate; import java.util.List; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.RegelGrunnlagTestBuilder; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart; @@ -33,6 +29,8 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknadstype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UtsettelseÅrsak; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; class ManglendeSøktePerioderTjenesteTest { @@ -42,12 +40,16 @@ void farMedAleneomsorgMedInnvilgetAnnetPartPerioder() { var morTom = LocalDate.of(2020, 12, 3); var farFom = morTom.plusDays(10); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(LocalDate.of(2020, 11, 5))) - .annenPart(new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2020, 11, 5), morTom).build())) - .behandling(farBehandling()) - .rettOgOmsorg(aleneomsorg()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL).oppgittPeriode(oppgittPeriode(FORELDREPENGER, farFom, farFom.plusDays(10)))) - .build(); + .datoer(new Datoer.Builder().fødsel(LocalDate.of(2020, 11, 5))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(LocalDate.of(2020, 11, 5), morTom) + .build())) + .behandling(farBehandling()) + .rettOgOmsorg(aleneomsorg()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, farFom, farFom.plusDays(10)))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); } @@ -56,13 +58,14 @@ void farMedAleneomsorgMedInnvilgetAnnetPartPerioder() { void farMedAleneomsorgSkalIkkeHaMsp() { var fødsel = LocalDate.of(2022, 7, 29); var grunnlag = RegelGrunnlagTestBuilder.create() - .datoer(new Datoer.Builder().fødsel(fødsel)) - .behandling(farBehandling()) - .rettOgOmsorg(aleneomsorg()) - .søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødsel, fødsel.plusDays(10))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødsel.plusWeeks(3), fødsel.plusWeeks(10)))) - .build(); + .datoer(new Datoer.Builder().fødsel(fødsel)) + .behandling(farBehandling()) + .rettOgOmsorg(aleneomsorg()) + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødsel, fødsel.plusDays(10))) + .oppgittPeriode(oppgittPeriode(FORELDREPENGER, fødsel.plusWeeks(3), fødsel.plusWeeks(10)))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).isEmpty(); } @@ -71,12 +74,21 @@ void farMedAleneomsorgSkalIkkeHaMsp() { void skal_ikke_opprette_msp_før_fødsel() { var familiehendelsesDato = LocalDate.of(2019, 12, 11); - var fellesperiode = oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(10), familiehendelsesDato.minusWeeks(8)); - var fpff = oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, familiehendelsesDato.minusWeeks(3), familiehendelsesDato.minusWeeks(2)); - var mødrekvote = oppgittPeriode(MØDREKVOTE, familiehendelsesDato, familiehendelsesDato.plusWeeks(6).minusDays(1)); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) - .søknad(new Søknad.Builder().oppgittPeriode(fellesperiode).oppgittPeriode(fpff).oppgittPeriode(mødrekvote)) - .build(); + var fellesperiode = + oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(10), familiehendelsesDato.minusWeeks(8)); + var fpff = oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, familiehendelsesDato.minusWeeks(3), familiehendelsesDato.minusWeeks(2)); + var mødrekvote = oppgittPeriode( + MØDREKVOTE, + familiehendelsesDato, + familiehendelsesDato.plusWeeks(6).minusDays(1)); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(fellesperiode) + .oppgittPeriode(fpff) + .oppgittPeriode(mødrekvote)) + .build(); var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag); @@ -86,32 +98,38 @@ void farMedAleneomsorgSkalIkkeHaMsp() { @Test void skalUtledeMspMødrekvoteITidsperiodenForbeholdtMorEtterFødsel() { var familiehendelsesDato = LocalDate.of(2018, 6, 4).plusWeeks(4); - var grunnlag = grunnlagMedKontoer().søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelsesDato.plusWeeks(6), familiehendelsesDato.plusWeeks(7)))) - .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, familiehendelsesDato.plusWeeks(6), familiehendelsesDato.plusWeeks(7)))) + .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) + .build(); var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag); - var mspEtterFødsel = manglendeSøktePerioder.stream().filter(msp -> msp.getStønadskontotype().equals(MØDREKVOTE)).findFirst(); + var mspEtterFødsel = manglendeSøktePerioder.stream() + .filter(msp -> msp.getStønadskontotype().equals(MØDREKVOTE)) + .findFirst(); assertThat(mspEtterFødsel).isPresent(); mspEtterFødsel.ifPresent(msp -> { assertThat(msp.getFom()).isEqualTo(familiehendelsesDato); - assertThat(msp.getTom()).isEqualTo(familiehendelsesDato.plusWeeks(6).minusDays(3));//-3 pga helg + assertThat(msp.getTom()).isEqualTo(familiehendelsesDato.plusWeeks(6).minusDays(3)); // -3 pga helg }); } @Test void skalIkkeUtledeMspIPerioderFørEndringsdato() { var familiehendelsesDato = LocalDate.of(2018, 6, 4).plusWeeks(4); - var grunnlag = grunnlagMedKontoer().søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelsesDato.plusWeeks(6), familiehendelsesDato.plusWeeks(7)))) - .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) - .behandling(new Behandling.Builder()) - .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2019, 6, 4))) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + MØDREKVOTE, familiehendelsesDato.plusWeeks(6), familiehendelsesDato.plusWeeks(7)))) + .datoer(new Datoer.Builder().fødsel(familiehendelsesDato)) + .behandling(new Behandling.Builder()) + .revurdering(new Revurdering.Builder().endringsdato(LocalDate.of(2019, 6, 4))) + .build(); var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag); @@ -122,13 +140,17 @@ void farMedAleneomsorgSkalIkkeHaMsp() { void finnerHullMellomParteneITidsrommetForbeholdtMor() { var fødselsdato = LocalDate.of(2018, 6, 6); var hullDato = fødselsdato.plusWeeks(3); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, hullDato.minusDays(1)))) - .annenPart( - new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(hullDato.plusDays(1), fødselsdato.plusWeeks(10)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, hullDato.minusDays(1)))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(hullDato.plusDays(1), fødselsdato.plusWeeks(10)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); @@ -139,32 +161,45 @@ void finnerHullMellomParteneITidsrommetForbeholdtMor() { @Test void skal_ikke_opprette_msp_hvis_mor_ikke_søkt() { var fødselsdato = LocalDate.of(2021, 9, 27); - var grunnlag = grunnlagMedKontoer().behandling(farBehandling()) - .rettOgOmsorg(beggeRett()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(4))) - .oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(20)))) - .build(); + var grunnlag = grunnlagMedKontoer() + .behandling(farBehandling()) + .rettOgOmsorg(beggeRett()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(4))) + .oppgittPeriode( + oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(15), fødselsdato.plusWeeks(20)))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).isEmpty(); } private RettOgOmsorg.Builder beggeRett() { - return new RettOgOmsorg.Builder().aleneomsorg(false).morHarRett(true).farHarRett(true).samtykke(true); + return new RettOgOmsorg.Builder() + .aleneomsorg(false) + .morHarRett(true) + .farHarRett(true) + .samtykke(true); } @Test void overlappendePerioderMedAnnenPartUtenHull() { var fødselsdato = LocalDate.of(2018, 6, 6); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10)))) - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(7).plusDays(1), fødselsdato.plusWeeks(8)).build()) - .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato.plusWeeks(9).plusDays(1), fødselsdato.plusWeeks(11)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, fødselsdato.plusWeeks(10)))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.plusWeeks(7).plusDays(1), fødselsdato.plusWeeks(8)) + .build()) + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.plusWeeks(9).plusDays(1), fødselsdato.plusWeeks(11)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).isEmpty(); @@ -175,13 +210,16 @@ void helgErIkkeHull() { var fødselsdato = LocalDate.of(2018, 6, 6); var mødrekvoteSlutt = LocalDate.of(2018, 7, 13); var annenPartStart = LocalDate.of(2018, 7, 16); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, mødrekvoteSlutt))) - .annenPart( - new AnnenPart.Builder().uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(annenPartStart, annenPartStart.plusWeeks(10)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, fødselsdato.minusWeeks(3), fødselsdato.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, fødselsdato, mødrekvoteSlutt))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(annenPartStart, annenPartStart.plusWeeks(10)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).isEmpty(); @@ -191,18 +229,27 @@ void helgErIkkeHull() { void skalLageManglendeSøktFraUke7TilFørsteUttaksdagNårBareFarHarRett() { var familiehendelse = LocalDate.of(2018, 12, 4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(8)))) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarHarRett()) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(8)))) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarHarRett()) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); - assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6)); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getSøknad().getOppgittePerioder().get(0).getFom().minusDays(1)); + assertThat(msp.get(0).getFom()) + .isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6)); + assertThat(msp.get(0).getTom()) + .isEqualTo(grunnlag.getSøknad() + .getOppgittePerioder() + .get(0) + .getFom() + .minusDays(1)); assertThat(msp.get(0).getStønadskontotype()).isEqualTo(FORELDREPENGER); } @@ -210,15 +257,21 @@ void helgErIkkeHull() { void skalLageManglendeSøktIMellomliggendePerioderNårBareFarHarRett_fødsel() { var familiehendelse = LocalDate.of(2021, 9, 28); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.minusWeeks(3), familiehendelse.plusWeeks(2))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(4), familiehendelse.plusWeeks(5))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(12), familiehendelse.plusWeeks(15))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(16), familiehendelse.plusWeeks(18)))) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarHarRett()) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.minusWeeks(3), familiehendelse.plusWeeks(2))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(4), familiehendelse.plusWeeks(5))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(12), familiehendelse.plusWeeks(15))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(16), familiehendelse.plusWeeks(18)))) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarHarRett()) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -235,16 +288,22 @@ void helgErIkkeHull() { void skalLageManglendeSøktIMellomliggendePerioderNårBareFarHarRett_adopsjon() { var familiehendelse = LocalDate.of(2021, 9, 28); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.minusWeeks(3), familiehendelse.plusWeeks(2))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(4), familiehendelse.plusWeeks(5))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(12), familiehendelse.plusWeeks(15))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(16), familiehendelse.plusWeeks(18)))) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarHarRett()) - .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(familiehendelse)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.minusWeeks(3), familiehendelse.plusWeeks(2))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(4), familiehendelse.plusWeeks(5))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(12), familiehendelse.plusWeeks(15))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(16), familiehendelse.plusWeeks(18)))) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarHarRett()) + .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(familiehendelse)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -265,12 +324,13 @@ void helgErIkkeHull() { var omsorgsovertakelse = LocalDate.of(2023, 3, 3); var søktPeriode = oppgittPeriode(FORELDREPENGER, LocalDate.of(2023, 4, 4), LocalDate.of(2023, 4, 10)); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(søktPeriode)) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarHarRett()) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(søktPeriode)) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarHarRett()) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -282,16 +342,17 @@ void helgErIkkeHull() { @Test void skalLageManglendeSøktHvisBfhrAdopsjonIkkeStarterPåOmsorgsovertakelseDato_endagsperiode() { - //FAGSYSTEM-276286 + // FAGSYSTEM-276286 var omsorgsovertakelse = LocalDate.of(2023, 3, 3); var søktPeriode = oppgittPeriode(FORELDREPENGER, LocalDate.of(2023, 4, 4), LocalDate.of(2023, 4, 4)); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(søktPeriode)) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarHarRett()) - .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON).oppgittPeriode(søktPeriode)) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarHarRett()) + .datoer(new Datoer.Builder().omsorgsovertakelse(omsorgsovertakelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -310,23 +371,35 @@ private static RettOgOmsorg.Builder bareFarHarRett() { var familiehendelse = LocalDate.of(2018, 12, 27); var søknadsperiodeFom = familiehendelse.minusWeeks(3); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, søknadsperiodeFom, familiehendelse.minusDays(1))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelse, familiehendelse.plusWeeks(3))) - .oppgittPeriode( - OppgittPeriode.forUtsettelse(familiehendelse.plusWeeks(6).plusDays(1), familiehendelse.plusWeeks(8), UtsettelseÅrsak.SYKDOM_SKADE, - null, null, null, DokumentasjonVurdering.SYKDOM_ANNEN_FORELDER_GODKJENT))) - .behandling(morBehandling()) - .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, søknadsperiodeFom, familiehendelse.minusDays(1))) + .oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelse, familiehendelse.plusWeeks(3))) + .oppgittPeriode(OppgittPeriode.forUtsettelse( + familiehendelse.plusWeeks(6).plusDays(1), + familiehendelse.plusWeeks(8), + UtsettelseÅrsak.SYKDOM_SKADE, + null, + null, + null, + DokumentasjonVurdering.SYKDOM_ANNEN_FORELDER_GODKJENT))) + .behandling(morBehandling()) + .rettOgOmsorg(new RettOgOmsorg.Builder().farHarRett(true).morHarRett(true)) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); - assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(3).plusDays(1)); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6).minusDays(1)); + assertThat(msp.get(0).getFom()) + .isEqualTo( + grunnlag.getDatoer().getFamiliehendelse().plusWeeks(3).plusDays(1)); + assertThat(msp.get(0).getTom()) + .isEqualTo( + grunnlag.getDatoer().getFamiliehendelse().plusWeeks(6).minusDays(1)); assertThat(msp.get(0).getStønadskontotype()).isEqualTo(MØDREKVOTE); } @@ -335,14 +408,17 @@ private static RettOgOmsorg.Builder bareFarHarRett() { var familiehendelse = LocalDate.of(2018, 12, 4); var søknadsperiodeFom = familiehendelse.plusWeeks(9); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.FØDSEL) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, søknadsperiodeFom, familiehendelse.plusWeeks(10)))) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarHarRett()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) - .datoer(new Datoer.Builder().fødsel(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.FØDSEL) + .oppgittPeriode( + oppgittPeriode(FORELDREPENGER, søknadsperiodeFom, familiehendelse.plusWeeks(10)))) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarHarRett()) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) + .datoer(new Datoer.Builder().fødsel(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -353,19 +429,27 @@ private static RettOgOmsorg.Builder bareFarHarRett() { void skalLageManglendeSøktFraOmsorgsovertakelseTilFørsteUttaksdagNårBareFarHarRett() { var familiehendelse = LocalDate.of(2018, 12, 4); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.ADOPSJON) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER, familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(8)))) - .behandling(farBehandling()) - .rettOgOmsorg(bareFarHarRett()) - .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) - .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.ADOPSJON) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER, familiehendelse.plusWeeks(7), familiehendelse.plusWeeks(8)))) + .behandling(farBehandling()) + .rettOgOmsorg(bareFarHarRett()) + .datoer(new Datoer.Builder().omsorgsovertakelse(familiehendelse)) + .adopsjon(new Adopsjon.Builder().ankomstNorge(null)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).hasSize(1); assertThat(msp.get(0).getFom()).isEqualTo(grunnlag.getDatoer().getFamiliehendelse()); - assertThat(msp.get(0).getTom()).isEqualTo(grunnlag.getSøknad().getOppgittePerioder().get(0).getFom().minusDays(1)); + assertThat(msp.get(0).getTom()) + .isEqualTo(grunnlag.getSøknad() + .getOppgittePerioder() + .get(0) + .getFom() + .minusDays(1)); assertThat(msp.get(0).getStønadskontotype()).isEqualTo(FORELDREPENGER); } @@ -373,16 +457,19 @@ private static RettOgOmsorg.Builder bareFarHarRett() { void manglende_fpff_skal_ikke_slutte_i_helg() { var fødselsdato = LocalDate.of(2021, 6, 21); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad( - new Søknad.Builder().oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2021, 5, 29), LocalDate.of(2021, 6, 18))) - //Mor har ikke søkt første uken etter fødsel - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, LocalDate.of(2021, 6, 27), LocalDate.of(2021, 8, 8)))) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2021, 5, 29), LocalDate.of(2021, 6, 18))) + // Mor har ikke søkt første uken etter fødsel + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, LocalDate.of(2021, 6, 27), LocalDate.of(2021, 8, 8)))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); - //Lager manglende søkt bare for fredagen, ok ikke helgen + // Lager manglende søkt bare for fredagen, ok ikke helgen assertThat(msp).hasSize(1); assertThat(msp.get(0).getFom()).isEqualTo(LocalDate.of(2021, 6, 21)); assertThat(msp.get(0).getTom()).isEqualTo(LocalDate.of(2021, 6, 25)); @@ -391,17 +478,23 @@ void manglende_fpff_skal_ikke_slutte_i_helg() { @Test @DisplayName("Skal lage manglende søkt periode for den ene dagen som ligger innen første 6 ukene.") void ikke_msp_hvis_fødsel_etter_termin_med_påfølgende_fritt_uttak() { - //Fra prod saksnummer 152085835 + // Fra prod saksnummer 152085835 var termin = LocalDate.of(2021, 12, 15); var fødselsdato = LocalDate.of(2021, 12, 16); - var grunnlag = grunnlagMedKontoer().datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termin)) - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode(FELLESPERIODE, LocalDate.of(2021, 11, 24), LocalDate.of(2021, 11, 24))) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2021, 11, 25), LocalDate.of(2021, 12, 15))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, LocalDate.of(2021, 12, 16), LocalDate.of(2022, 1, 25))) - //Opprinnelig søkt fritt uttak etter uke 6 - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, LocalDate.of(2022, 2, 16), LocalDate.of(2022, 2, 16)))) - .build(); + var grunnlag = grunnlagMedKontoer() + .datoer(new Datoer.Builder().fødsel(fødselsdato).termin(termin)) + .søknad(new Søknad.Builder() + .oppgittPeriode( + oppgittPeriode(FELLESPERIODE, LocalDate.of(2021, 11, 24), LocalDate.of(2021, 11, 24))) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2021, 11, 25), LocalDate.of(2021, 12, 15))) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, LocalDate.of(2021, 12, 16), LocalDate.of(2022, 1, 25))) + // Opprinnelig søkt fritt uttak etter uke 6 + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, LocalDate.of(2022, 2, 16), LocalDate.of(2022, 2, 16)))) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -411,23 +504,28 @@ void manglende_fpff_skal_ikke_slutte_i_helg() { } @Test - @DisplayName( - "FAGSYSTEM-214259 - Mor søker en dag fellesperiode lenge før fødsel. Termin på en lørdag. " + "Skal ikke få opprettet msp før fpff perioden") + @DisplayName("FAGSYSTEM-214259 - Mor søker en dag fellesperiode lenge før fødsel. Termin på en lørdag. " + + "Skal ikke få opprettet msp før fpff perioden") void skalIkkeLageManglendeSøktFørUke3FørFødsel() { var termindato = LocalDate.of(2022, 4, 16); var søknadsperiodeFom = LocalDate.of(2022, 1, 31); - var grunnlag = grunnlagMedKontoer().søknad(new Søknad.Builder().type(Søknadstype.TERMIN) - //Søker en dag - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, søknadsperiodeFom, søknadsperiodeFom)) - .oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2022, 3, 28), LocalDate.of(2022, 4, 15))) - .oppgittPeriode(oppgittPeriode(MØDREKVOTE, LocalDate.of(2022, 4, 18), LocalDate.of(2022, 7, 29))) - .oppgittPeriode(oppgittPeriode(FELLESPERIODE, LocalDate.of(2022, 8, 1), LocalDate.of(2022, 11, 17)))) - .behandling(morBehandling()) - .rettOgOmsorg(beggeRett()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) - .datoer(new Datoer.Builder().termin(termindato)) - .build(); + var grunnlag = grunnlagMedKontoer() + .søknad(new Søknad.Builder() + .type(Søknadstype.TERMIN) + // Søker en dag + .oppgittPeriode(oppgittPeriode(FELLESPERIODE, søknadsperiodeFom, søknadsperiodeFom)) + .oppgittPeriode(oppgittPeriode( + FORELDREPENGER_FØR_FØDSEL, LocalDate.of(2022, 3, 28), LocalDate.of(2022, 4, 15))) + .oppgittPeriode( + oppgittPeriode(MØDREKVOTE, LocalDate.of(2022, 4, 18), LocalDate.of(2022, 7, 29))) + .oppgittPeriode( + oppgittPeriode(FELLESPERIODE, LocalDate.of(2022, 8, 1), LocalDate.of(2022, 11, 17)))) + .behandling(morBehandling()) + .rettOgOmsorg(beggeRett()) + .opptjening(new Opptjening.Builder().skjæringstidspunkt(søknadsperiodeFom)) + .datoer(new Datoer.Builder().termin(termindato)) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); @@ -436,16 +534,25 @@ void manglende_fpff_skal_ikke_slutte_i_helg() { @Test void ikke_msp_for_for_ved_tidlig_oppstart_mor_der_hun_ikke_tar_alle_ukene_fpff() { - //FAGSYSTEM-295613 + // FAGSYSTEM-295613 var fødselsdato = LocalDate.of(2023, 9, 28); - var grunnlag = grunnlagMedKontoer().behandling(farBehandling()) - .datoer(new Datoer.Builder().fødsel(fødselsdato)) - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15)))) - .annenPart(new AnnenPart.Builder().uttaksperiode( - AnnenpartUttakPeriode.Builder.uttak(fødselsdato.minusWeeks(5), fødselsdato.minusWeeks(4)).build()) - .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato.minusWeeks(2), fødselsdato.minusDays(1)).build()) - .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak(fødselsdato, fødselsdato.plusWeeks(10).minusDays(1)).build())) - .build(); + var grunnlag = grunnlagMedKontoer() + .behandling(farBehandling()) + .datoer(new Datoer.Builder().fødsel(fødselsdato)) + .søknad(new Søknad.Builder() + .oppgittPeriode( + oppgittPeriode(FEDREKVOTE, fødselsdato.plusWeeks(10), fødselsdato.plusWeeks(15)))) + .annenPart(new AnnenPart.Builder() + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato.minusWeeks(5), fødselsdato.minusWeeks(4)) + .build()) + .uttaksperiode( + AnnenpartUttakPeriode.Builder.uttak(fødselsdato.minusWeeks(2), fødselsdato.minusDays(1)) + .build()) + .uttaksperiode(AnnenpartUttakPeriode.Builder.uttak( + fødselsdato, fødselsdato.plusWeeks(10).minusDays(1)) + .build())) + .build(); var msp = finnManglendeSøktePerioder(grunnlag); assertThat(msp).isEmpty(); @@ -456,18 +563,24 @@ void ikke_msp_for_for_ved_tidlig_oppstart_mor_der_hun_ikke_tar_alle_ukene_fpff() } private RettOgOmsorg.Builder aleneomsorg() { - return new RettOgOmsorg.Builder().farHarRett(true).morHarRett(false).aleneomsorg(true).samtykke(false); + return new RettOgOmsorg.Builder() + .farHarRett(true) + .morHarRett(false) + .aleneomsorg(true) + .samtykke(false); } private RegelGrunnlag.Builder grunnlagMedKontoer() { - var kontoer = new Kontoer.Builder().konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) - .konto(konto(MØDREKVOTE, 75)) - .konto(konto(FELLESPERIODE, 85)) - .konto(konto(FEDREKVOTE, 75)); + var kontoer = new Kontoer.Builder() + .konto(konto(FORELDREPENGER_FØR_FØDSEL, 15)) + .konto(konto(MØDREKVOTE, 75)) + .konto(konto(FELLESPERIODE, 85)) + .konto(konto(FEDREKVOTE, 75)); return RegelGrunnlagTestBuilder.create() - .opptjening(new Opptjening.Builder().skjæringstidspunkt(LocalDate.MIN)) - .kontoer(kontoer) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1))); + .opptjening(new Opptjening.Builder().skjæringstidspunkt(LocalDate.MIN)) + .kontoer(kontoer) + .arbeid(new Arbeid.Builder() + .arbeidsforhold(new Arbeidsforhold(RegelGrunnlagTestBuilder.ARBEIDSFORHOLD_1))); } private Konto.Builder konto(Stønadskontotype stønadskontotype, int trekkdager) {