Step F first pass: 81/92 accepted; budget floor 60 calls; rejected slots moved for regeneration

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
Kral
2026-10-03 12:10:52 +02:00
parent d3250acfb8
commit 39769afce8
741 changed files with 40573 additions and 317 deletions

View File

@@ -0,0 +1,93 @@
CLASS {{p}}kennel_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_pet_type TYPE c LENGTH 4.
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
METHODS calculate_fee
IMPORTING iv_pet_type TYPE ty_pet_type
iv_nights TYPE i
iv_high_season TYPE abap_bool
iv_grooming TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
PRIVATE SECTION.
CONSTANTS:
BEGIN OF c_pet_type,
dog TYPE ty_pet_type VALUE 'DOG',
cat TYPE ty_pet_type VALUE 'CAT',
rabb TYPE ty_pet_type VALUE 'RABB',
END OF c_pet_type,
BEGIN OF c_rate,
dog TYPE i VALUE 2500,
cat TYPE i VALUE 1800,
rabb TYPE i VALUE 800,
other TYPE i VALUE 2000,
END OF c_rate,
c_surcharge_num TYPE i VALUE 1125,
c_surcharge_den TYPE i VALUE 1000,
c_discount_percent TYPE i VALUE 10,
c_percent_base TYPE i VALUE 100,
c_long_stay_nights TYPE i VALUE 7,
c_cat_high_cut TYPE i VALUE 500,
c_grooming_fee TYPE i VALUE 1500,
c_cents_per_euro TYPE i VALUE 100.
METHODS nightly_rate
IMPORTING iv_pet_type TYPE ty_pet_type
iv_high_season TYPE abap_bool
RETURNING VALUE(rv_rate) TYPE i.
METHODS long_stay_discount
IMPORTING iv_rate TYPE i
iv_nights TYPE i
RETURNING VALUE(rv_discount) TYPE i.
ENDCLASS.
CLASS {{p}}kennel_pricer IMPLEMENTATION.
METHOD calculate_fee.
IF iv_nights < 1.
rv_fee = 0.
RETURN.
ENDIF.
DATA(lv_rate) = nightly_rate( iv_pet_type = iv_pet_type
iv_high_season = iv_high_season ).
DATA(lv_cents) = CONV ty_amount( lv_rate * iv_nights ).
IF iv_nights >= c_long_stay_nights.
lv_cents = lv_cents - long_stay_discount( iv_rate = lv_rate
iv_nights = iv_nights ).
ENDIF.
IF iv_pet_type = c_pet_type-cat AND iv_high_season = abap_true.
lv_cents = lv_cents - c_cat_high_cut.
ENDIF.
IF iv_grooming = abap_true.
lv_cents = lv_cents + c_grooming_fee.
ENDIF.
rv_fee = lv_cents / c_cents_per_euro.
ENDMETHOD.
METHOD nightly_rate.
CASE iv_pet_type.
WHEN c_pet_type-dog.
rv_rate = c_rate-dog.
WHEN c_pet_type-cat.
rv_rate = c_rate-cat.
WHEN c_pet_type-rabb.
rv_rate = c_rate-rabb.
WHEN OTHERS.
rv_rate = c_rate-other.
ENDCASE.
IF iv_high_season = abap_true.
rv_rate = rv_rate * c_surcharge_num DIV c_surcharge_den.
ENDIF.
ENDMETHOD.
METHOD long_stay_discount.
DATA(lv_per_night) = iv_rate * c_discount_percent DIV c_percent_base.
rv_discount = lv_per_night * iv_nights.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,68 @@
CLASS ltc_kennel_pricer DEFINITION FINAL FOR TESTING
DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES ty_amount TYPE {{p}}kennel_pricer=>ty_amount.
CONSTANTS:
c_dog_1n TYPE ty_amount VALUE '25.00',
c_cat_3n_hi TYPE ty_amount VALUE '55.75',
c_dog_7n_hi TYPE ty_amount VALUE '177.17',
c_zero TYPE ty_amount VALUE '0.00',
c_bird_2n TYPE ty_amount VALUE '40.00'.
DATA mo_cut TYPE REF TO {{p}}kennel_pricer.
METHODS setup.
METHODS dog_low_season FOR TESTING.
METHODS cat_high_season FOR TESTING.
METHODS long_stay FOR TESTING.
METHODS no_nights FOR TESTING.
METHODS unknown_type FOR TESTING.
ENDCLASS.
CLASS ltc_kennel_pricer IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}kennel_pricer( ).
ENDMETHOD.
METHOD dog_low_season.
cl_abap_unit_assert=>assert_equals( exp = c_dog_1n
act = mo_cut->calculate_fee( iv_pet_type = 'DOG'
iv_nights = 1
iv_high_season = abap_false
iv_grooming = abap_false ) ).
ENDMETHOD.
METHOD cat_high_season.
cl_abap_unit_assert=>assert_equals( exp = c_cat_3n_hi
act = mo_cut->calculate_fee( iv_pet_type = 'CAT'
iv_nights = 3
iv_high_season = abap_true
iv_grooming = abap_false ) ).
ENDMETHOD.
METHOD long_stay.
cl_abap_unit_assert=>assert_equals( exp = c_dog_7n_hi
act = mo_cut->calculate_fee( iv_pet_type = 'DOG'
iv_nights = 7
iv_high_season = abap_true
iv_grooming = abap_false ) ).
ENDMETHOD.
METHOD no_nights.
cl_abap_unit_assert=>assert_equals( exp = c_zero
act = mo_cut->calculate_fee( iv_pet_type = 'DOG'
iv_nights = 0
iv_high_season = abap_false
iv_grooming = abap_false ) ).
ENDMETHOD.
METHOD unknown_type.
cl_abap_unit_assert=>assert_equals( exp = c_bird_2n
act = mo_cut->calculate_fee( iv_pet_type = 'BIRD'
iv_nights = 2
iv_high_season = abap_false
iv_grooming = abap_false ) ).
ENDMETHOD.
ENDCLASS.