Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
68 lines
1.2 KiB
ABAP
68 lines
1.2 KiB
ABAP
FUNCTION {{p}}bowl_fee_old
|
|
IMPORTING
|
|
iv_lanes TYPE i
|
|
iv_minutes TYPE i
|
|
iv_players TYPE i
|
|
iv_day TYPE string
|
|
iv_start TYPE t
|
|
iv_member TYPE abap_bool
|
|
EXPORTING
|
|
ev_fee TYPE decfloat34
|
|
EXCEPTIONS
|
|
invalid_input.
|
|
|
|
DATA: lv_a TYPE decfloat34,
|
|
lv_b TYPE decfloat34,
|
|
lv_c TYPE decfloat34,
|
|
lv_slots TYPE i,
|
|
lv_day TYPE string,
|
|
lv_shoe TYPE decfloat34 VALUE '2.5'.
|
|
|
|
IF iv_lanes < 1.
|
|
RAISE invalid_input.
|
|
ELSE.
|
|
IF iv_minutes < 1.
|
|
RAISE invalid_input.
|
|
ELSE.
|
|
IF iv_players < 0.
|
|
RAISE invalid_input.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
lv_slots = iv_minutes / 30.
|
|
IF lv_slots * 30 < iv_minutes.
|
|
lv_slots = lv_slots + 1.
|
|
ENDIF.
|
|
|
|
lv_a = iv_lanes * lv_slots * 6.
|
|
|
|
IF iv_start >= '180000'.
|
|
IF iv_start < '220000'.
|
|
lv_a = lv_a * 12 / 10.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
lv_day = iv_day.
|
|
IF lv_day = 'SAT'.
|
|
lv_a = lv_a * 115 / 100.
|
|
ELSE.
|
|
IF lv_day = 'SUN'.
|
|
lv_a = lv_a * 115 / 100.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
lv_b = iv_players * lv_shoe.
|
|
|
|
lv_c = lv_a + lv_b.
|
|
|
|
IF iv_member = 'X'.
|
|
IF lv_c >= 20.
|
|
lv_c = lv_c * 9 / 10.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
ev_fee = round( val = lv_c dec = 2 mode = cl_abap_math=>round_half_up ).
|
|
|
|
ENDFUNCTION.
|