Files
abap-llm/tasks_gen/train/G1022/seed/sweep_pricer.clas.abap

99 lines
1.9 KiB
ABAP

CLASS {{p}}sweep_pricer DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
TYPES:
ty_building TYPE c LENGTH 1,
ty_fee TYPE p LENGTH 8 DECIMALS 2.
METHODS calculate
IMPORTING iv_flues TYPE i
iv_building TYPE ty_building
iv_soot TYPE i
iv_express TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_fee.
ENDCLASS.
CLASS {{p}}sweep_pricer IMPLEMENTATION.
METHOD calculate.
DATA lv_rate TYPE ty_fee.
DATA lv_fee TYPE ty_fee.
DATA lv_pct TYPE i.
DATA lv_i TYPE i.
rv_fee = 0.
IF iv_flues > 0.
IF iv_building = 'H'.
lv_rate = '45.00'.
ELSE.
IF iv_building = 'A'.
lv_rate = '35.00'.
ELSE.
IF iv_building = 'R'.
lv_rate = '60.00'.
ELSE.
lv_rate = 0.
ENDIF.
ENDIF.
ENDIF.
IF lv_rate > 0.
lv_fee = 0.
lv_i = 0.
WHILE lv_i < iv_flues.
lv_fee = lv_fee + lv_rate.
lv_i = lv_i + 1.
ENDWHILE.
IF iv_flues >= 4.
lv_fee = lv_fee - lv_fee * 10 / 100.
ENDIF.
IF iv_soot = 1.
lv_pct = 0.
ELSE.
IF iv_soot = 2.
lv_pct = 5.
ELSE.
IF iv_soot = 3.
lv_pct = 10.
ELSE.
IF iv_soot = 4.
lv_pct = 15.
ELSE.
IF iv_soot = 5.
lv_pct = 20.
ELSE.
lv_pct = 0.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
lv_fee = lv_fee + lv_fee * lv_pct / 100.
IF iv_express = 'X'.
lv_fee = lv_fee + 25.
ENDIF.
IF lv_fee < 60.
lv_fee = 60.
ENDIF.
rv_fee = lv_fee.
ENDIF.
ENDIF.
ENDMETHOD.
ENDCLASS.