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:
79
tasks_gen/eval/G0188/reference/laundry_pricer.clas.abap
Normal file
79
tasks_gen/eval/G0188/reference/laundry_pricer.clas.abap
Normal file
@@ -0,0 +1,79 @@
|
||||
CLASS {{p}}laundry_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_weight_kg TYPE p LENGTH 5 DECIMALS 2,
|
||||
ty_amount TYPE p LENGTH 8 DECIMALS 2,
|
||||
ty_service TYPE c LENGTH 4.
|
||||
CONSTANTS:
|
||||
c_service_wash TYPE ty_service VALUE 'WASH',
|
||||
c_service_dry TYPE ty_service VALUE 'DRY',
|
||||
c_service_iron TYPE ty_service VALUE 'IRON'.
|
||||
METHODS calculate
|
||||
IMPORTING
|
||||
iv_weight_kg TYPE ty_weight_kg
|
||||
iv_service TYPE ty_service
|
||||
iv_express TYPE abap_bool
|
||||
iv_member TYPE abap_bool
|
||||
RETURNING
|
||||
VALUE(rv_price) TYPE ty_amount.
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
c_rate_wash TYPE ty_amount VALUE '2.50',
|
||||
c_rate_dry TYPE ty_amount VALUE '4.00',
|
||||
c_rate_iron TYPE ty_amount VALUE '1.50',
|
||||
c_express_fee TYPE ty_amount VALUE '5.00',
|
||||
c_min_price TYPE ty_amount VALUE '10.00',
|
||||
c_member_discount TYPE ty_amount VALUE '0.90'.
|
||||
METHODS rate_per_kg
|
||||
IMPORTING iv_service TYPE ty_service
|
||||
RETURNING VALUE(rv_rate) TYPE ty_amount.
|
||||
METHODS round_currency
|
||||
IMPORTING iv_amount TYPE ty_amount
|
||||
RETURNING VALUE(rv_amount) TYPE ty_amount.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}laundry_pricer IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
IF iv_weight_kg <= 0.
|
||||
rv_price = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA lv_rate TYPE ty_amount.
|
||||
DATA lv_price TYPE ty_amount.
|
||||
lv_rate = rate_per_kg( iv_service ).
|
||||
lv_price = iv_weight_kg * lv_rate.
|
||||
|
||||
IF iv_member = abap_true.
|
||||
lv_price = lv_price * c_member_discount.
|
||||
ENDIF.
|
||||
|
||||
IF iv_express = abap_true.
|
||||
lv_price = lv_price + c_express_fee.
|
||||
ENDIF.
|
||||
|
||||
IF lv_price < c_min_price.
|
||||
lv_price = c_min_price.
|
||||
ENDIF.
|
||||
|
||||
rv_price = round_currency( lv_price ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rate_per_kg.
|
||||
CASE iv_service.
|
||||
WHEN c_service_wash.
|
||||
rv_rate = c_rate_wash.
|
||||
WHEN c_service_dry.
|
||||
rv_rate = c_rate_dry.
|
||||
WHEN c_service_iron.
|
||||
rv_rate = c_rate_iron.
|
||||
WHEN OTHERS.
|
||||
rv_rate = c_rate_wash.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD round_currency.
|
||||
rv_amount = round( val = iv_amount dec = 2 ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user