Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
87
tasks_gen/train/G1054/seed/pest_fee.clas.abap
Normal file
87
tasks_gen/train/G1054/seed/pest_fee.clas.abap
Normal file
@@ -0,0 +1,87 @@
|
||||
CLASS {{p}}pest_fee DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_pest TYPE c LENGTH 4.
|
||||
TYPES ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate_fee
|
||||
IMPORTING iv_pest_type TYPE ty_pest
|
||||
iv_area TYPE i
|
||||
iv_urgent TYPE abap_bool
|
||||
iv_contract TYPE abap_bool
|
||||
RETURNING VALUE(rv_fee) TYPE ty_fee.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}pest_fee IMPLEMENTATION.
|
||||
METHOD calculate_fee.
|
||||
DATA lv_base TYPE ty_fee.
|
||||
DATA lv_area_fee TYPE ty_fee.
|
||||
DATA lv_area_fee2 TYPE ty_fee.
|
||||
DATA lv_total TYPE ty_fee.
|
||||
DATA lv_discount TYPE ty_fee.
|
||||
DATA lv_steps TYPE i.
|
||||
DATA lv_rest TYPE i.
|
||||
DATA lv_dummy TYPE i.
|
||||
|
||||
" get the base fee
|
||||
IF iv_pest_type = 'RATS'.
|
||||
lv_base = 120.
|
||||
ELSEIF iv_pest_type = 'MICE'.
|
||||
lv_base = 55.
|
||||
ELSEIF iv_pest_type = 'WASP'.
|
||||
lv_base = 150.
|
||||
ELSEIF iv_pest_type = 'ANTS'.
|
||||
lv_base = 80.
|
||||
ELSE.
|
||||
lv_base = 0.
|
||||
ENDIF.
|
||||
|
||||
IF lv_base = 0.
|
||||
rv_fee = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
" area surcharge
|
||||
lv_area_fee = 0.
|
||||
IF iv_area > 100.
|
||||
lv_rest = iv_area - 100.
|
||||
lv_steps = lv_rest DIV 50.
|
||||
IF lv_rest MOD 50 <> 0.
|
||||
lv_steps = lv_steps + 1.
|
||||
ENDIF.
|
||||
lv_area_fee = lv_steps * 15.
|
||||
ENDIF.
|
||||
|
||||
lv_total = lv_base + lv_area_fee.
|
||||
|
||||
" urgent jobs cost more
|
||||
IF iv_urgent = 'X'.
|
||||
lv_total = lv_total + 45.
|
||||
ENDIF.
|
||||
|
||||
" contract customers get a discount
|
||||
IF iv_contract = 'X'.
|
||||
lv_area_fee2 = 0.
|
||||
IF iv_area > 100.
|
||||
lv_rest = iv_area - 100.
|
||||
lv_steps = lv_rest DIV 50.
|
||||
IF lv_rest MOD 50 <> 0.
|
||||
lv_steps = lv_steps + 1.
|
||||
ENDIF.
|
||||
lv_area_fee2 = lv_steps * 15.
|
||||
ENDIF.
|
||||
lv_discount = ( lv_base + lv_area_fee2 ) * 10 / 100.
|
||||
lv_total = lv_total - lv_discount.
|
||||
ENDIF.
|
||||
|
||||
IF lv_total < 50.
|
||||
lv_total = 50.
|
||||
ENDIF.
|
||||
|
||||
rv_fee = lv_total.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user