Pipeline controller: plan 2 (hard +, error +50 %), backlog throttle, 2 trajectory workers, stop rules, summaries every 50; budget reserve
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
66
tasks_gen/train/G1023/reference/rideshare_split.clas.abap
Normal file
66
tasks_gen/train/G1023/reference/rideshare_split.clas.abap
Normal file
@@ -0,0 +1,66 @@
|
||||
CLASS {{p}}rideshare_split DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_distance TYPE i.
|
||||
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS constructor.
|
||||
METHODS calculate_total
|
||||
IMPORTING iv_distance_km TYPE ty_distance
|
||||
iv_passengers TYPE i
|
||||
RETURNING VALUE(rv_total) TYPE ty_amount.
|
||||
METHODS calculate_share
|
||||
IMPORTING iv_distance_km TYPE ty_distance
|
||||
iv_passengers TYPE i
|
||||
RETURNING VALUE(rv_share) TYPE ty_amount.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
c_base_fee TYPE ty_amount VALUE '3.00',
|
||||
c_fee_per_km TYPE ty_amount VALUE '0.40',
|
||||
c_detour_fee TYPE ty_amount VALUE '1.20',
|
||||
c_min_share TYPE ty_amount VALUE '1.50'.
|
||||
|
||||
METHODS distance_fee
|
||||
IMPORTING iv_distance_km TYPE ty_distance
|
||||
RETURNING VALUE(rv_fee) TYPE ty_amount.
|
||||
METHODS detour_fee
|
||||
IMPORTING iv_passengers TYPE i
|
||||
RETURNING VALUE(rv_fee) TYPE ty_amount.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}rideshare_split IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD calculate_total.
|
||||
IF iv_passengers < 1.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
rv_total = c_base_fee + distance_fee( iv_distance_km ) + detour_fee( iv_passengers ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD calculate_share.
|
||||
IF iv_passengers < 1.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
DATA(lv_total) = calculate_total( iv_distance_km = iv_distance_km
|
||||
iv_passengers = iv_passengers ).
|
||||
DATA lv_share TYPE p LENGTH 15 DECIMALS 5.
|
||||
lv_share = lv_total / iv_passengers.
|
||||
rv_share = round( val = lv_share dec = 2 ).
|
||||
IF rv_share < c_min_share.
|
||||
rv_share = c_min_share.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD distance_fee.
|
||||
IF iv_distance_km > 0.
|
||||
rv_fee = c_fee_per_km * iv_distance_km.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD detour_fee.
|
||||
rv_fee = c_detour_fee * ( iv_passengers - 1 ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user