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,83 @@
CLASS {{p}}pool_fee DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_ticket TYPE c LENGTH 1.
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
METHODS calculate_fee
IMPORTING iv_ticket TYPE ty_ticket
iv_minutes TYPE i
iv_sauna TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
PRIVATE SECTION.
CONSTANTS:
c_ticket_adult TYPE ty_ticket VALUE 'A',
c_ticket_child TYPE ty_ticket VALUE 'C',
c_ticket_senior TYPE ty_ticket VALUE 'S',
c_ticket_family TYPE ty_ticket VALUE 'F'.
CONSTANTS:
c_base_adult TYPE ty_amount VALUE '6.50',
c_base_child TYPE ty_amount VALUE '3.50',
c_base_senior TYPE ty_amount VALUE '4.50',
c_base_family TYPE ty_amount VALUE '15.00',
c_block_fee TYPE ty_amount VALUE '1.00',
c_sauna_fee TYPE ty_amount VALUE '5.00',
c_sauna_family TYPE ty_amount VALUE '8.00'.
CONSTANTS:
c_free_minutes TYPE i VALUE 60,
c_block_minutes TYPE i VALUE 30.
METHODS base_fee
IMPORTING iv_ticket TYPE ty_ticket
RETURNING VALUE(rv_fee) TYPE ty_amount.
METHODS duration_fee
IMPORTING iv_minutes TYPE i
RETURNING VALUE(rv_fee) TYPE ty_amount.
METHODS sauna_fee
IMPORTING iv_ticket TYPE ty_ticket
iv_sauna TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
ENDCLASS.
CLASS {{p}}pool_fee IMPLEMENTATION.
METHOD calculate_fee.
rv_fee = base_fee( iv_ticket )
+ duration_fee( iv_minutes )
+ sauna_fee( iv_ticket = iv_ticket iv_sauna = iv_sauna ).
ENDMETHOD.
METHOD base_fee.
CASE iv_ticket.
WHEN c_ticket_adult.
rv_fee = c_base_adult.
WHEN c_ticket_child.
rv_fee = c_base_child.
WHEN c_ticket_senior.
rv_fee = c_base_senior.
WHEN c_ticket_family.
rv_fee = c_base_family.
WHEN OTHERS.
rv_fee = 0.
ENDCASE.
ENDMETHOD.
METHOD duration_fee.
DATA(lv_minutes) = nmax( val1 = iv_minutes val2 = 0 ).
IF lv_minutes > c_free_minutes.
RETURN.
ENDIF.
DATA(lv_blocks) = ( lv_minutes - c_free_minutes + c_block_minutes - 1 ) DIV c_block_minutes.
rv_fee = lv_blocks * c_block_fee.
ENDMETHOD.
METHOD sauna_fee.
IF iv_sauna <> abap_true OR iv_ticket = c_ticket_child.
RETURN.
ENDIF.
IF iv_ticket = c_ticket_family.
rv_fee = c_sauna_family.
ELSE.
rv_fee = c_sauna_fee.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,83 @@
CLASS {{p}}pool_fee DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_ticket TYPE c LENGTH 1.
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
METHODS calculate_fee
IMPORTING iv_ticket TYPE ty_ticket
iv_minutes TYPE i
iv_sauna TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
PRIVATE SECTION.
CONSTANTS:
c_ticket_adult TYPE ty_ticket VALUE 'A',
c_ticket_child TYPE ty_ticket VALUE 'C',
c_ticket_senior TYPE ty_ticket VALUE 'S',
c_ticket_family TYPE ty_ticket VALUE 'F'.
CONSTANTS:
c_base_adult TYPE ty_amount VALUE '6.50',
c_base_child TYPE ty_amount VALUE '3.50',
c_base_senior TYPE ty_amount VALUE '4.50',
c_base_family TYPE ty_amount VALUE '15.00',
c_block_fee TYPE ty_amount VALUE '1.00',
c_sauna_fee TYPE ty_amount VALUE '5.00',
c_sauna_family TYPE ty_amount VALUE '8.00'.
CONSTANTS:
c_free_minutes TYPE i VALUE 60,
c_block_minutes TYPE i VALUE 30.
METHODS base_fee
IMPORTING iv_ticket TYPE ty_ticket
RETURNING VALUE(rv_fee) TYPE ty_amount.
METHODS duration_fee
IMPORTING iv_minutes TYPE i
RETURNING VALUE(rv_fee) TYPE ty_amount.
METHODS sauna_fee
IMPORTING iv_ticket TYPE ty_ticket
iv_sauna TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
ENDCLASS.
CLASS {{p}}pool_fee IMPLEMENTATION.
METHOD calculate_fee.
rv_fee = base_fee( iv_ticket )
+ duration_fee( iv_minutes )
+ sauna_fee( iv_ticket = iv_ticket iv_sauna = iv_sauna ).
ENDMETHOD.
METHOD base_fee.
CASE iv_ticket.
WHEN c_ticket_adult.
rv_fee = c_base_adult.
WHEN c_ticket_child.
rv_fee = c_base_child.
WHEN c_ticket_senior.
rv_fee = c_base_senior.
WHEN c_ticket_family.
rv_fee = c_base_family.
WHEN OTHERS.
rv_fee = 0.
ENDCASE.
ENDMETHOD.
METHOD duration_fee.
DATA(lv_minutes) = nmax( val1 = iv_minutes val2 = 0 ).
IF lv_minutes <= c_free_minutes.
RETURN.
ENDIF.
DATA(lv_blocks) = ( lv_minutes - c_free_minutes + c_block_minutes - 1 ) DIV c_block_minutes.
rv_fee = lv_blocks * c_block_fee.
ENDMETHOD.
METHOD sauna_fee.
IF iv_sauna <> abap_false OR iv_ticket = c_ticket_child.
RETURN.
ENDIF.
IF iv_ticket = c_ticket_family.
rv_fee = c_sauna_family.
ELSE.
rv_fee = c_sauna_fee.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,83 @@
CLASS {{p}}pool_fee DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_ticket TYPE c LENGTH 1.
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
METHODS calculate_fee
IMPORTING iv_ticket TYPE ty_ticket
iv_minutes TYPE i
iv_sauna TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
PRIVATE SECTION.
CONSTANTS:
c_ticket_adult TYPE ty_ticket VALUE 'A',
c_ticket_child TYPE ty_ticket VALUE 'C',
c_ticket_senior TYPE ty_ticket VALUE 'S',
c_ticket_family TYPE ty_ticket VALUE 'F'.
CONSTANTS:
c_base_adult TYPE ty_amount VALUE '6.50',
c_base_child TYPE ty_amount VALUE '3.50',
c_base_senior TYPE ty_amount VALUE '4.50',
c_base_family TYPE ty_amount VALUE '15.00',
c_block_fee TYPE ty_amount VALUE '1.00',
c_sauna_fee TYPE ty_amount VALUE '5.00',
c_sauna_family TYPE ty_amount VALUE '8.00'.
CONSTANTS:
c_free_minutes TYPE i VALUE 60,
c_block_minutes TYPE i VALUE 30.
METHODS base_fee
IMPORTING iv_ticket TYPE ty_ticket
RETURNING VALUE(rv_fee) TYPE ty_amount.
METHODS duration_fee
IMPORTING iv_minutes TYPE i
RETURNING VALUE(rv_fee) TYPE ty_amount.
METHODS sauna_fee
IMPORTING iv_ticket TYPE ty_ticket
iv_sauna TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
ENDCLASS.
CLASS {{p}}pool_fee IMPLEMENTATION.
METHOD calculate_fee.
rv_fee = base_fee( iv_ticket )
+ duration_fee( iv_minutes )
+ sauna_fee( iv_ticket = iv_ticket iv_sauna = iv_sauna ).
ENDMETHOD.
METHOD base_fee.
CASE iv_ticket.
WHEN c_ticket_adult.
rv_fee = c_base_adult.
WHEN c_ticket_child.
rv_fee = c_base_child.
WHEN c_ticket_senior.
rv_fee = c_base_senior.
WHEN c_ticket_family.
rv_fee = c_base_family.
WHEN OTHERS.
rv_fee = 0.
ENDCASE.
ENDMETHOD.
METHOD duration_fee.
DATA(lv_minutes) = nmax( val1 = iv_minutes val2 = 0 ).
IF lv_minutes <= c_free_minutes.
RETURN.
ENDIF.
DATA(lv_blocks) = ( lv_minutes - c_free_minutes + c_block_minutes - 1 ) DIV c_block_minutes.
rv_fee = lv_blocks * c_block_fee.
ENDMETHOD.
METHOD sauna_fee.
IF iv_sauna <> abap_true AND iv_ticket = c_ticket_child.
RETURN.
ENDIF.
IF iv_ticket = c_ticket_family.
rv_fee = c_sauna_family.
ELSE.
rv_fee = c_sauna_fee.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,83 @@
CLASS {{p}}pool_fee DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_ticket TYPE c LENGTH 1.
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
METHODS calculate_fee
IMPORTING iv_ticket TYPE ty_ticket
iv_minutes TYPE i
iv_sauna TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
PRIVATE SECTION.
CONSTANTS:
c_ticket_adult TYPE ty_ticket VALUE 'A',
c_ticket_child TYPE ty_ticket VALUE 'C',
c_ticket_senior TYPE ty_ticket VALUE 'S',
c_ticket_family TYPE ty_ticket VALUE 'F'.
CONSTANTS:
c_base_adult TYPE ty_amount VALUE '6.50',
c_base_child TYPE ty_amount VALUE '3.50',
c_base_senior TYPE ty_amount VALUE '4.50',
c_base_family TYPE ty_amount VALUE '15.00',
c_block_fee TYPE ty_amount VALUE '1.00',
c_sauna_fee TYPE ty_amount VALUE '5.00',
c_sauna_family TYPE ty_amount VALUE '8.00'.
CONSTANTS:
c_free_minutes TYPE i VALUE 60,
c_block_minutes TYPE i VALUE 30.
METHODS base_fee
IMPORTING iv_ticket TYPE ty_ticket
RETURNING VALUE(rv_fee) TYPE ty_amount.
METHODS duration_fee
IMPORTING iv_minutes TYPE i
RETURNING VALUE(rv_fee) TYPE ty_amount.
METHODS sauna_fee
IMPORTING iv_ticket TYPE ty_ticket
iv_sauna TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
ENDCLASS.
CLASS {{p}}pool_fee IMPLEMENTATION.
METHOD calculate_fee.
rv_fee = base_fee( iv_ticket )
+ duration_fee( iv_minutes )
+ sauna_fee( iv_ticket = iv_ticket iv_sauna = iv_sauna ).
ENDMETHOD.
METHOD base_fee.
CASE iv_ticket.
WHEN c_ticket_adult.
rv_fee = c_base_adult.
WHEN c_ticket_child.
rv_fee = c_base_child.
WHEN c_ticket_senior.
rv_fee = c_base_senior.
WHEN c_ticket_family.
rv_fee = c_base_family.
WHEN OTHERS.
rv_fee = 0.
ENDCASE.
ENDMETHOD.
METHOD duration_fee.
DATA(lv_minutes) = nmax( val1 = iv_minutes val2 = 0 ).
IF lv_minutes <= c_free_minutes.
RETURN.
ENDIF.
DATA(lv_blocks) = ( lv_minutes - c_free_minutes + c_block_minutes - 1 ) DIV c_block_minutes.
rv_fee = lv_blocks * c_block_fee.
ENDMETHOD.
METHOD sauna_fee.
IF iv_sauna <> abap_true OR iv_ticket = c_ticket_child.
RETURN.
ENDIF.
IF iv_ticket <> c_ticket_family.
rv_fee = c_sauna_family.
ELSE.
rv_fee = c_sauna_fee.
ENDIF.
ENDMETHOD.
ENDCLASS.