99 lines
1.9 KiB
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.
|