Files
abap-llm/tasks_gen/eval/G0136/seed/kennel_pricer.clas.abap

72 lines
1.7 KiB
ABAP

CLASS {{p}}kennel_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_pet_type TYPE c LENGTH 4.
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
METHODS calculate_fee
IMPORTING iv_pet_type TYPE ty_pet_type
iv_nights TYPE i
iv_high_season TYPE abap_bool
iv_grooming TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_amount.
ENDCLASS.
CLASS {{p}}kennel_pricer IMPLEMENTATION.
METHOD calculate_fee.
DATA: lv_rate TYPE i,
lv_total TYPE p LENGTH 8 DECIMALS 2,
lv_discount TYPE i.
IF iv_nights < 1.
rv_fee = 0.
RETURN.
ENDIF.
IF iv_pet_type = 'DOG'.
IF iv_high_season = 'X'.
lv_rate = 2500 * 1125 DIV 1000.
ELSE.
lv_rate = 2500.
ENDIF.
ELSEIF iv_pet_type = 'CAT'.
IF iv_high_season = 'X'.
lv_rate = 1800 * 1125 DIV 1000.
ELSE.
lv_rate = 1800.
ENDIF.
ELSEIF iv_pet_type = 'RABB'.
IF iv_high_season = 'X'.
lv_rate = 800 * 1125 DIV 1000.
ELSE.
lv_rate = 800.
ENDIF.
ELSE.
IF iv_high_season = 'X'.
lv_rate = 2000 * 1125 DIV 1000.
ELSE.
lv_rate = 2000.
ENDIF.
ENDIF.
CLEAR lv_total.
DO iv_nights TIMES.
lv_total = lv_total + lv_rate.
ENDDO.
IF iv_nights >= 7.
lv_discount = lv_rate * 10 DIV 100.
lv_total = lv_total - lv_discount * iv_nights.
ENDIF.
IF iv_pet_type = 'CAT' AND iv_high_season = 'X'.
lv_total = lv_total - 500.
ENDIF.
IF iv_grooming = 'X'.
lv_total = lv_total + 1500.
ENDIF.
rv_fee = lv_total / 100.
ENDMETHOD.
ENDCLASS.