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:
Kral
2026-10-05 13:35:54 +02:00
parent 1c4667a0fc
commit 13360292dd
781 changed files with 50211 additions and 22 deletions

View File

@@ -0,0 +1,75 @@
CLASS {{p}}storage_pricer DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
TYPES ty_sqm TYPE i.
TYPES ty_months TYPE i.
TYPES:
BEGIN OF ty_booking,
size_sqm TYPE ty_sqm,
months TYPE ty_months,
climate TYPE abap_bool,
insurance TYPE abap_bool,
END OF ty_booking.
METHODS calculate_price
IMPORTING is_booking TYPE ty_booking
RETURNING VALUE(rv_price) TYPE ty_amount.
ENDCLASS.
CLASS {{p}}storage_pricer IMPLEMENTATION.
METHOD calculate_price.
" price of the booking
DATA lv_rate TYPE p LENGTH 8 DECIMALS 2.
DATA lv_rent TYPE p LENGTH 12 DECIMALS 2.
DATA lv_disc TYPE p LENGTH 12 DECIMALS 2.
DATA lv_ins TYPE p LENGTH 12 DECIMALS 2.
DATA lv_sum TYPE p LENGTH 12 DECIMALS 2.
DATA lv_tmp TYPE p LENGTH 12 DECIMALS 2.
rv_price = 0.
IF is_booking-size_sqm > 0.
IF is_booking-months > 0.
IF is_booking-size_sqm <= 5.
lv_rate = '14.00'.
ELSE.
IF is_booking-size_sqm <= 15.
lv_rate = '11.50'.
ELSE.
lv_rate = '9.00'.
ENDIF.
ENDIF.
IF is_booking-climate = 'X'.
lv_rate = lv_rate + '4.50'.
ENDIF.
lv_rent = is_booking-size_sqm * is_booking-months * lv_rate.
lv_disc = 0.
IF is_booking-months >= 24.
lv_disc = lv_rent * 15 / 100.
ELSE.
IF is_booking-months >= 12.
lv_disc = lv_rent * 10 / 100.
ELSE.
IF is_booking-months >= 6.
lv_disc = lv_rent * 5 / 100.
ENDIF.
ENDIF.
ENDIF.
lv_ins = 0.
IF is_booking-insurance = 'X'.
lv_ins = is_booking-size_sqm * is_booking-months * '0.90'.
ENDIF.
lv_tmp = lv_rent - lv_disc.
lv_sum = lv_tmp + lv_ins + '19.00'.
rv_price = lv_sum.
ENDIF.
ENDIF.
ENDMETHOD.
ENDCLASS.