Files
abap-llm/tasks_gen/train/G1062/seed/parking_pricer.clas.abap
2026-10-05 18:02:52 +02:00

92 lines
2.2 KiB
ABAP

CLASS {{p}}parking_pricer DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_vehicle TYPE c LENGTH 1.
TYPES ty_fee TYPE p LENGTH 8 DECIMALS 2.
CONSTANTS:
c_vehicle_car TYPE ty_vehicle VALUE 'C',
c_vehicle_motorcycle TYPE ty_vehicle VALUE 'M',
c_vehicle_van TYPE ty_vehicle VALUE 'V'.
METHODS calculate_fee
IMPORTING iv_minutes TYPE i
iv_vehicle TYPE ty_vehicle
iv_lost_ticket TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE ty_fee.
PRIVATE SECTION.
METHODS lost_ticket_fee
IMPORTING iv_vehicle TYPE ty_vehicle
EXPORTING ev_fee TYPE ty_fee.
ENDCLASS.
CLASS {{p}}parking_pricer IMPLEMENTATION.
METHOD calculate_fee.
DATA lv_minutes TYPE i.
DATA lv_hours TYPE i.
DATA lv_rate TYPE ty_fee.
DATA lv_cap TYPE ty_fee.
IF iv_lost_ticket = abap_true.
" a lost ticket is charged with a flat fee
lost_ticket_fee( EXPORTING iv_vehicle = iv_vehicle
IMPORTING ev_fee = rv_fee ).
ELSE.
IF iv_minutes < 0.
lv_minutes = 0.
ELSE.
lv_minutes = iv_minutes.
ENDIF.
IF lv_minutes <= 15.
" the first 15 minutes are free
rv_fee = 0.
ELSE.
lv_hours = lv_minutes DIV 60.
IF lv_minutes MOD 60 <> 0.
lv_hours = lv_hours + 1.
ENDIF.
IF lv_hours < 1.
lv_hours = 1.
ENDIF.
IF iv_vehicle = 'C'.
lv_rate = '2.00'.
lv_cap = '20.00'.
ELSEIF iv_vehicle = 'M'.
lv_rate = '1.00'.
lv_cap = '10.00'.
ELSEIF iv_vehicle = 'V'.
lv_rate = '3.00'.
lv_cap = '24.00'.
ELSE.
lv_rate = '0.00'.
lv_cap = '0.00'.
ENDIF.
rv_fee = lv_hours * lv_rate.
IF rv_fee > lv_cap.
rv_fee = lv_cap.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.
METHOD lost_ticket_fee.
IF iv_vehicle = 'C'.
ev_fee = '25.00'.
ELSEIF iv_vehicle = 'M'.
ev_fee = '15.00'.
ELSEIF iv_vehicle = 'V'.
ev_fee = '35.00'.
ELSE.
ev_fee = '25.00'.
ENDIF.
ENDMETHOD.
ENDCLASS.