Step F first pass: 81/92 accepted; budget floor 60 calls; rejected slots moved for regeneration

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
Kral
2026-10-03 12:10:52 +02:00
parent d3250acfb8
commit 39769afce8
741 changed files with 40573 additions and 317 deletions

View File

@@ -0,0 +1,58 @@
CLASS {{p}}kiln_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES {{p}}if_kiln_price.
PRIVATE SECTION.
TYPES ty_amount TYPE p LENGTH 10 DECIMALS 4.
CONSTANTS:
c_base_fee TYPE ty_amount VALUE '40.00',
c_piece_fee TYPE ty_amount VALUE '12.00',
c_free_weight TYPE {{p}}if_kiln_price=>ty_weight VALUE '10.00',
c_kg_fee TYPE ty_amount VALUE '3.00',
c_glaze_fee TYPE ty_amount VALUE '25.00',
c_member_rate TYPE ty_amount VALUE '0.85'.
METHODS clay_factor
IMPORTING iv_clay TYPE {{p}}if_kiln_price=>ty_clay
RETURNING VALUE(rv_factor) TYPE ty_amount.
ENDCLASS.
CLASS {{p}}kiln_pricer IMPLEMENTATION.
METHOD {{p}}if_kiln_price~calculate_price.
IF iv_clay IS INITIAL.
rv_price = 0.
RETURN.
ENDIF.
DATA lv_price TYPE ty_amount.
lv_price = c_base_fee + iv_pieces * c_piece_fee.
IF iv_weight > c_free_weight.
lv_price = lv_price + ( iv_weight - c_free_weight ) * c_kg_fee.
ENDIF.
DATA(lv_factor) = clay_factor( iv_clay ).
lv_price = lv_price * lv_factor.
IF iv_glaze = abap_true.
lv_price = lv_price + c_glaze_fee.
ENDIF.
IF iv_member = abap_true.
lv_price = lv_price * c_member_rate.
ENDIF.
rv_price = round( val = lv_price dec = 2 ).
ENDMETHOD.
METHOD clay_factor.
CASE iv_clay.
WHEN 'ST'.
rv_factor = '1.20'.
WHEN 'PO'.
rv_factor = '1.50'.
WHEN OTHERS.
rv_factor = '1.00'.
ENDCASE.
ENDMETHOD.
ENDCLASS.