Files
abap-llm/tasks_gen/eval/G0169/reference/cowork_fee.clas.abap

77 lines
1.8 KiB
ABAP

CLASS {{p}}cowork_fee DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_desk TYPE c LENGTH 3.
TYPES ty_amount TYPE i.
METHODS constructor.
METHODS calculate_fee
IMPORTING
iv_desk TYPE ty_desk
iv_months TYPE i
iv_student TYPE abap_bool
iv_under_25 TYPE abap_bool
RETURNING
VALUE(rv_fee) TYPE ty_amount.
PRIVATE SECTION.
METHODS monthly_fee
IMPORTING
iv_desk TYPE ty_desk
iv_student TYPE abap_bool
iv_under_25 TYPE abap_bool
RETURNING
VALUE(rv_fee) TYPE ty_amount.
ENDCLASS.
CLASS {{p}}cowork_fee IMPLEMENTATION.
METHOD constructor.
ENDMETHOD.
METHOD calculate_fee.
IF iv_months < 1.
rv_fee = 0.
RETURN.
ENDIF.
DATA(lv_monthly) = monthly_fee( iv_desk = iv_desk
iv_student = iv_student
iv_under_25 = iv_under_25 ).
rv_fee = lv_monthly * iv_months.
ENDMETHOD.
METHOD monthly_fee.
" Resolve the contradiction: the student rule wins over the under-25 rule.
IF iv_student = abap_true.
CASE iv_desk.
WHEN 'HOT'.
rv_fee = 160.
WHEN 'DED'.
rv_fee = 280.
WHEN 'PRI'.
rv_fee = 480.
WHEN OTHERS.
rv_fee = 0.
ENDCASE.
ELSEIF iv_under_25 = abap_true.
CASE iv_desk.
WHEN 'HOT'.
rv_fee = 150.
WHEN 'DED'.
rv_fee = 260.
WHEN 'PRI'.
rv_fee = 450.
WHEN OTHERS.
rv_fee = 0.
ENDCASE.
ELSE.
CASE iv_desk.
WHEN 'HOT'.
rv_fee = 200.
WHEN 'DED'.
rv_fee = 350.
WHEN 'PRI'.
rv_fee = 600.
WHEN OTHERS.
rv_fee = 0.
ENDCASE.
ENDIF.
ENDMETHOD.
ENDCLASS.