Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
71
tasks_gen/train/G1082/seed/climb_pricer.clas.abap
Normal file
71
tasks_gen/train/G1082/seed/climb_pricer.clas.abap
Normal file
@@ -0,0 +1,71 @@
|
||||
CLASS {{p}}climb_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_entry TYPE c LENGTH 1.
|
||||
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
|
||||
TYPES:
|
||||
BEGIN OF ty_session,
|
||||
entry_type TYPE ty_entry,
|
||||
hours TYPE i,
|
||||
climbers TYPE i,
|
||||
equipment TYPE abap_bool,
|
||||
member TYPE abap_bool,
|
||||
visits TYPE i,
|
||||
END OF ty_session.
|
||||
TYPES:
|
||||
BEGIN OF ty_result,
|
||||
base TYPE ty_amount,
|
||||
surcharge TYPE ty_amount,
|
||||
discount TYPE ty_amount,
|
||||
total TYPE ty_amount,
|
||||
message TYPE string,
|
||||
END OF ty_result.
|
||||
METHODS price
|
||||
IMPORTING is_session TYPE ty_session
|
||||
RETURNING VALUE(rs_result) TYPE ty_result.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}climb_pricer IMPLEMENTATION.
|
||||
METHOD price.
|
||||
DATA: lv_rate TYPE ty_amount,
|
||||
lv_gross TYPE ty_amount.
|
||||
|
||||
CLEAR rs_result.
|
||||
|
||||
IF is_session-entry_type = 'A' OR is_session-entry_type = 'Y' OR is_session-entry_type = 'F'.
|
||||
IF is_session-hours GE 1 AND is_session-hours LE 6.
|
||||
IF is_session-climbers GE 1 AND is_session-climbers LE 10.
|
||||
IF is_session-entry_type = 'A'.
|
||||
lv_rate = '9.00'.
|
||||
ELSEIF is_session-entry_type = 'Y'.
|
||||
lv_rate = '6.00'.
|
||||
ELSE.
|
||||
lv_rate = '7.00'.
|
||||
ENDIF.
|
||||
rs_result-base = is_session-hours * lv_rate * is_session-climbers.
|
||||
IF is_session-equipment = 'X'.
|
||||
rs_result-surcharge = is_session-climbers * '4.00'.
|
||||
ENDIF.
|
||||
IF is_session-climbers GE 6.
|
||||
rs_result-surcharge = rs_result-surcharge + '15.00'.
|
||||
ENDIF.
|
||||
lv_gross = rs_result-base + rs_result-surcharge.
|
||||
IF is_session-member = 'X'.
|
||||
rs_result-discount = lv_gross * 15 / 100.
|
||||
ELSEIF is_session-visits GE 10.
|
||||
rs_result-discount = lv_gross * 20 / 100.
|
||||
ELSEIF is_session-visits GE 3.
|
||||
rs_result-discount = lv_gross * 5 / 100.
|
||||
ENDIF.
|
||||
rs_result-total = lv_gross - rs_result-discount.
|
||||
ELSE.
|
||||
rs_result-message = 'INVALID CLIMBERS'.
|
||||
ENDIF.
|
||||
ELSE.
|
||||
rs_result-message = 'INVALID HOURS'.
|
||||
ENDIF.
|
||||
ELSE.
|
||||
rs_result-message = 'UNKNOWN ENTRY TYPE'.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user