Fix coverage with several contract classes; table annotation and file path checks; clean task dir on write
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
108
tasks_gen/eval/G0102/reference/hotel_rate.clas.abap
Normal file
108
tasks_gen/eval/G0102/reference/hotel_rate.clas.abap
Normal file
@@ -0,0 +1,108 @@
|
||||
CLASS {{p}}hotel_rate DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES {{p}}if_hotel_rate.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
c_breakfast TYPE {{p}}if_hotel_rate=>ty_amount VALUE '12.50',
|
||||
c_city_tax TYPE {{p}}if_hotel_rate=>ty_amount VALUE '3.00'.
|
||||
|
||||
METHODS validate
|
||||
IMPORTING iv_category TYPE {{p}}if_hotel_rate=>ty_category
|
||||
iv_nights TYPE i
|
||||
iv_guests TYPE i
|
||||
RETURNING VALUE(rv_reason) TYPE {{p}}if_hotel_rate=>ty_reason.
|
||||
METHODS room_count
|
||||
IMPORTING iv_guests TYPE i
|
||||
RETURNING VALUE(rv_rooms) TYPE i.
|
||||
METHODS nightly_rate
|
||||
IMPORTING iv_category TYPE {{p}}if_hotel_rate=>ty_category
|
||||
RETURNING VALUE(rv_amount) TYPE {{p}}if_hotel_rate=>ty_amount.
|
||||
METHODS discount_percent
|
||||
IMPORTING iv_nights TYPE i
|
||||
RETURNING VALUE(rv_percent) TYPE i.
|
||||
METHODS net_room_total
|
||||
IMPORTING iv_category TYPE {{p}}if_hotel_rate=>ty_category
|
||||
iv_nights TYPE i
|
||||
iv_guests TYPE i
|
||||
RETURNING VALUE(rv_total) TYPE {{p}}if_hotel_rate=>ty_amount.
|
||||
METHODS extras
|
||||
IMPORTING iv_nights TYPE i
|
||||
iv_guests TYPE i
|
||||
iv_breakfast TYPE abap_bool
|
||||
RETURNING VALUE(rv_extras) TYPE {{p}}if_hotel_rate=>ty_amount.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}hotel_rate IMPLEMENTATION.
|
||||
METHOD {{p}}if_hotel_rate~calculate.
|
||||
rs_result-reason = validate( iv_category = iv_category
|
||||
iv_nights = iv_nights
|
||||
iv_guests = iv_guests ).
|
||||
IF rs_result-reason <> {{p}}if_hotel_rate=>c_reason-ok.
|
||||
rs_result-price = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
rs_result-price = net_room_total( iv_category = iv_category
|
||||
iv_nights = iv_nights
|
||||
iv_guests = iv_guests )
|
||||
+ extras( iv_nights = iv_nights
|
||||
iv_guests = iv_guests
|
||||
iv_breakfast = iv_breakfast ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD validate.
|
||||
IF iv_nights < 1.
|
||||
rv_reason = {{p}}if_hotel_rate=>c_reason-nights.
|
||||
ELSEIF iv_guests < 1.
|
||||
rv_reason = {{p}}if_hotel_rate=>c_reason-guests.
|
||||
ELSEIF iv_category <> {{p}}if_hotel_rate=>c_category-basic
|
||||
AND iv_category <> {{p}}if_hotel_rate=>c_category-comfort
|
||||
AND iv_category <> {{p}}if_hotel_rate=>c_category-suite.
|
||||
rv_reason = {{p}}if_hotel_rate=>c_reason-category.
|
||||
ELSE.
|
||||
rv_reason = {{p}}if_hotel_rate=>c_reason-ok.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD room_count.
|
||||
rv_rooms = ( iv_guests + 1 ) DIV 2.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD nightly_rate.
|
||||
CASE iv_category.
|
||||
WHEN {{p}}if_hotel_rate=>c_category-basic.
|
||||
rv_amount = '90.00'.
|
||||
WHEN {{p}}if_hotel_rate=>c_category-comfort.
|
||||
rv_amount = '140.00'.
|
||||
WHEN {{p}}if_hotel_rate=>c_category-suite.
|
||||
rv_amount = '260.00'.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD discount_percent.
|
||||
IF iv_nights >= 28.
|
||||
rv_percent = 20.
|
||||
ELSEIF iv_nights >= 14.
|
||||
rv_percent = 15.
|
||||
ELSEIF iv_nights >= 7.
|
||||
rv_percent = 10.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD net_room_total.
|
||||
DATA lv_total TYPE {{p}}if_hotel_rate=>ty_amount.
|
||||
lv_total = nightly_rate( iv_category ) * room_count( iv_guests ) * iv_nights.
|
||||
DATA lv_discount TYPE {{p}}if_hotel_rate=>ty_amount.
|
||||
lv_discount = lv_total * discount_percent( iv_nights ) / 100.
|
||||
rv_total = lv_total - lv_discount.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD extras.
|
||||
DATA(lv_guest_nights) = iv_guests * iv_nights.
|
||||
rv_extras = lv_guest_nights * c_city_tax.
|
||||
IF iv_breakfast = abap_true.
|
||||
rv_extras = rv_extras + lv_guest_nights * c_breakfast.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user