Pipeline controller: plan 2 (hard +, error +50 %), backlog throttle, 2 trajectory workers, stop rules, summaries every 50; budget reserve

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 13:35:54 +02:00
parent 1c4667a0fc
commit 13360292dd
781 changed files with 50211 additions and 22 deletions

View File

@@ -0,0 +1,93 @@
CLASS {{p}}med_copay DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES {{p}}if_med_copay.
PRIVATE SECTION.
CONSTANTS:
c_percent_standard TYPE i VALUE 30,
c_percent_chronic TYPE i VALUE 10,
c_min_standard TYPE {{p}}if_med_copay=>ty_amount VALUE '5.00',
c_max_standard TYPE {{p}}if_med_copay=>ty_amount VALUE '50.00',
c_min_chronic TYPE {{p}}if_med_copay=>ty_amount VALUE '5.00',
c_max_chronic TYPE {{p}}if_med_copay=>ty_amount VALUE '10.00'.
METHODS copay_for_tier
IMPORTING iv_total TYPE {{p}}if_med_copay=>ty_amount
iv_tier TYPE {{p}}if_med_copay=>ty_tier
RETURNING VALUE(rv_amount) TYPE {{p}}if_med_copay=>ty_amount.
METHODS percentage
IMPORTING iv_total TYPE {{p}}if_med_copay=>ty_amount
iv_percent TYPE i
RETURNING VALUE(rv_amount) TYPE {{p}}if_med_copay=>ty_amount.
METHODS apply_limits
IMPORTING iv_amount TYPE {{p}}if_med_copay=>ty_amount
iv_min TYPE {{p}}if_med_copay=>ty_amount
iv_max TYPE {{p}}if_med_copay=>ty_amount
RETURNING VALUE(rv_amount) TYPE {{p}}if_med_copay=>ty_amount.
METHODS is_known_tier
IMPORTING iv_tier TYPE {{p}}if_med_copay=>ty_tier
RETURNING VALUE(rv_known) TYPE abap_bool.
ENDCLASS.
CLASS {{p}}med_copay IMPLEMENTATION.
METHOD {{p}}if_med_copay~calculate.
IF iv_price <= 0.
rs_result = VALUE #( copay = 0 reason = {{p}}if_med_copay=>c_reason-price ).
RETURN.
ENDIF.
IF iv_quantity < 1.
rs_result = VALUE #( copay = 0 reason = {{p}}if_med_copay=>c_reason-quantity ).
RETURN.
ENDIF.
IF is_known_tier( iv_tier ) = abap_false.
rs_result = VALUE #( copay = 0 reason = {{p}}if_med_copay=>c_reason-tier ).
RETURN.
ENDIF.
DATA lv_total TYPE {{p}}if_med_copay=>ty_amount.
lv_total = iv_price * iv_quantity.
rs_result = VALUE #( copay = copay_for_tier( iv_total = lv_total iv_tier = iv_tier )
reason = {{p}}if_med_copay=>c_reason-ok ).
IF rs_result-copay > lv_total.
rs_result-copay = lv_total.
ENDIF.
ENDMETHOD.
METHOD copay_for_tier.
CASE iv_tier.
WHEN {{p}}if_med_copay=>c_tier-exempt.
rv_amount = 0.
WHEN {{p}}if_med_copay=>c_tier-chronic.
rv_amount = apply_limits(
iv_amount = percentage( iv_total = iv_total iv_percent = c_percent_chronic )
iv_min = c_min_chronic
iv_max = c_max_chronic ).
WHEN {{p}}if_med_copay=>c_tier-standard.
rv_amount = apply_limits(
iv_amount = percentage( iv_total = iv_total iv_percent = c_percent_standard )
iv_min = c_min_standard
iv_max = c_max_standard ).
WHEN OTHERS.
rv_amount = 0.
ENDCASE.
ENDMETHOD.
METHOD percentage.
rv_amount = round( val = iv_total * iv_percent / 100 dec = 2 ).
ENDMETHOD.
METHOD apply_limits.
rv_amount = iv_amount.
IF rv_amount < iv_min.
rv_amount = iv_min.
ELSEIF rv_amount > iv_max.
rv_amount = iv_max.
ENDIF.
ENDMETHOD.
METHOD is_known_tier.
rv_known = xsdbool( iv_tier = {{p}}if_med_copay=>c_tier-standard
OR iv_tier = {{p}}if_med_copay=>c_tier-chronic
OR iv_tier = {{p}}if_med_copay=>c_tier-exempt ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,73 @@
CLASS ltc_med_copay DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}if_med_copay.
METHODS setup.
METHODS standard_pays_minimum FOR TESTING.
METHODS standard_pays_percentage FOR TESTING.
METHODS chronic_pays_percentage FOR TESTING.
METHODS exempt_pays_nothing FOR TESTING.
METHODS copay_is_capped_at_total FOR TESTING.
METHODS zero_price_is_rejected FOR TESTING.
METHODS zero_quantity_is_rejected FOR TESTING.
METHODS unknown_tier_is_rejected FOR TESTING.
ENDCLASS.
CLASS ltc_med_copay IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}med_copay( ).
ENDMETHOD.
METHOD standard_pays_minimum.
DATA(ls_result) = mo_cut->calculate( iv_price = '10.00' iv_quantity = 1 iv_tier = 'S' ).
cl_abap_unit_assert=>assert_equals(
exp = CONV {{p}}if_med_copay=>ty_amount( '5.00' )
act = ls_result-copay ).
ENDMETHOD.
METHOD standard_pays_percentage.
DATA(ls_result) = mo_cut->calculate( iv_price = '100.00' iv_quantity = 1 iv_tier = 'S' ).
cl_abap_unit_assert=>assert_equals(
exp = CONV {{p}}if_med_copay=>ty_amount( '30.00' )
act = ls_result-copay ).
ENDMETHOD.
METHOD chronic_pays_percentage.
DATA(ls_result) = mo_cut->calculate( iv_price = '66.67' iv_quantity = 1 iv_tier = 'C' ).
cl_abap_unit_assert=>assert_equals(
exp = CONV {{p}}if_med_copay=>ty_amount( '6.67' )
act = ls_result-copay ).
ENDMETHOD.
METHOD exempt_pays_nothing.
DATA(ls_result) = mo_cut->calculate( iv_price = '100.00' iv_quantity = 3 iv_tier = 'E' ).
cl_abap_unit_assert=>assert_equals(
exp = CONV {{p}}if_med_copay=>ty_amount( '0.00' )
act = ls_result-copay ).
ENDMETHOD.
METHOD copay_is_capped_at_total.
DATA(ls_result) = mo_cut->calculate( iv_price = '2.00' iv_quantity = 1 iv_tier = 'S' ).
cl_abap_unit_assert=>assert_equals(
exp = CONV {{p}}if_med_copay=>ty_amount( '2.00' )
act = ls_result-copay ).
ENDMETHOD.
METHOD zero_price_is_rejected.
DATA(ls_result) = mo_cut->calculate( iv_price = '0.00' iv_quantity = 2 iv_tier = 'S' ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_med_copay=>c_reason-price
act = ls_result-reason ).
ENDMETHOD.
METHOD zero_quantity_is_rejected.
DATA(ls_result) = mo_cut->calculate( iv_price = '10.00' iv_quantity = 0 iv_tier = 'C' ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_med_copay=>c_reason-quantity
act = ls_result-reason ).
ENDMETHOD.
METHOD unknown_tier_is_rejected.
DATA(ls_result) = mo_cut->calculate( iv_price = '10.00' iv_quantity = 1 iv_tier = 'Z' ).
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_med_copay=>c_reason-tier
act = ls_result-reason ).
ENDMETHOD.
ENDCLASS.