Files
abap-llm/tasks_gen/train/G1937/faulty/m3_chimney_checker.clas.abap
2026-10-05 22:08:59 +02:00

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_false.
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.