66 lines
2.0 KiB
ABAP
66 lines
2.0 KiB
ABAP
CLASS {{p}}chimney_checker DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
|
PUBLIC SECTION.
|
|
INTERFACES {{p}}if_sweep_check.
|
|
|
|
PRIVATE SECTION.
|
|
CONSTANTS c_discount TYPE p LENGTH 3 DECIMALS 2 VALUE '0.90'.
|
|
|
|
METHODS flue_fee
|
|
IMPORTING iv_kind TYPE {{p}}if_sweep_check=>ty_flue_kind
|
|
RETURNING VALUE(rv_fee) TYPE {{p}}if_sweep_check=>ty_amount.
|
|
|
|
METHODS is_known_kind
|
|
IMPORTING iv_kind TYPE {{p}}if_sweep_check=>ty_flue_kind
|
|
RETURNING VALUE(rv_known) TYPE abap_bool.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}chimney_checker IMPLEMENTATION.
|
|
METHOD {{p}}if_sweep_check~check_order.
|
|
IF iv_flues < 1.
|
|
rv_reason = {{p}}if_sweep_check=>c_reason-no_flues.
|
|
ELSEIF iv_flues > {{p}}if_sweep_check=>c_max_flues.
|
|
rv_reason = {{p}}if_sweep_check=>c_reason-too_many.
|
|
ELSEIF is_known_kind( iv_kind ) = abap_true.
|
|
rv_reason = {{p}}if_sweep_check=>c_reason-bad_kind.
|
|
ELSEIF iv_blocked = abap_true.
|
|
rv_reason = {{p}}if_sweep_check=>c_reason-blocked.
|
|
ELSEIF iv_year - iv_last_sweep > 2.
|
|
rv_reason = {{p}}if_sweep_check=>c_reason-old_sweep.
|
|
ELSE.
|
|
rv_reason = {{p}}if_sweep_check=>c_reason-ok.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD {{p}}if_sweep_check~fee.
|
|
IF iv_flues < 1.
|
|
rv_fee = 0.
|
|
RETURN.
|
|
ENDIF.
|
|
DATA lv_total TYPE {{p}}if_sweep_check=>ty_amount.
|
|
lv_total = flue_fee( iv_kind ) * iv_flues.
|
|
IF iv_flues >= 5.
|
|
lv_total = lv_total * c_discount.
|
|
ENDIF.
|
|
rv_fee = round( val = lv_total dec = 2 ).
|
|
ENDMETHOD.
|
|
|
|
METHOD flue_fee.
|
|
IF iv_kind = {{p}}if_sweep_check=>c_kind-open.
|
|
rv_fee = '60.00'.
|
|
ELSEIF iv_kind = {{p}}if_sweep_check=>c_kind-closed.
|
|
rv_fee = '45.00'.
|
|
ELSEIF iv_kind = {{p}}if_sweep_check=>c_kind-indust.
|
|
rv_fee = '120.00'.
|
|
ELSE.
|
|
rv_fee = 0.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD is_known_kind.
|
|
rv_known = xsdbool( iv_kind = {{p}}if_sweep_check=>c_kind-open
|
|
OR iv_kind = {{p}}if_sweep_check=>c_kind-closed
|
|
OR iv_kind = {{p}}if_sweep_check=>c_kind-indust ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|