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,85 @@
CLASS {{p}}overdraft_calc DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES {{p}}if_overdraft.
PRIVATE SECTION.
CONSTANTS:
c_free_days TYPE i VALUE 3,
c_percent_divisor TYPE i VALUE 100,
c_days_per_year TYPE i VALUE 360,
c_business_discount TYPE p LENGTH 3 DECIMALS 2 VALUE '2.00',
c_min_rate TYPE p LENGTH 3 DECIMALS 2 VALUE '5.00'.
TYPES:
ty_rate TYPE p LENGTH 5 DECIMALS 2,
ty_interest TYPE p LENGTH 15 DECIMALS 6.
METHODS chargeable_days
IMPORTING iv_days TYPE i
RETURNING VALUE(rv_days) TYPE i.
METHODS base_rate
IMPORTING iv_amount TYPE {{p}}if_overdraft=>ty_amount
RETURNING VALUE(rv_rate) TYPE ty_rate.
METHODS interest_rate
IMPORTING iv_amount TYPE {{p}}if_overdraft=>ty_amount
iv_segment TYPE {{p}}if_overdraft=>ty_segment
RETURNING VALUE(rv_rate) TYPE ty_rate.
ENDCLASS.
CLASS {{p}}overdraft_calc IMPLEMENTATION.
METHOD {{p}}if_overdraft~calculate.
DATA:
lv_days TYPE i,
lv_rate TYPE ty_rate,
lv_annual TYPE ty_interest.
IF iv_amount <= 0 OR iv_days <= 0.
rv_interest = 0.
RETURN.
ENDIF.
lv_days = chargeable_days( iv_days ).
lv_rate = interest_rate( iv_amount = iv_amount
iv_segment = iv_segment ).
lv_annual = iv_amount / lv_rate / c_percent_divisor.
rv_interest = lv_annual * lv_days / c_days_per_year.
IF rv_interest > 0 AND rv_interest < {{p}}if_overdraft=>c_min_interest.
rv_interest = {{p}}if_overdraft=>c_min_interest.
ENDIF.
ENDMETHOD.
METHOD chargeable_days.
rv_days = iv_days - c_free_days.
IF rv_days < 0.
rv_days = 0.
ENDIF.
ENDMETHOD.
METHOD base_rate.
IF iv_amount <= 1000.
rv_rate = '12.00'.
ELSEIF iv_amount <= 5000.
rv_rate = '10.00'.
ELSEIF iv_amount <= 20000.
rv_rate = '8.00'.
ELSE.
rv_rate = '6.50'.
ENDIF.
ENDMETHOD.
METHOD interest_rate.
rv_rate = base_rate( iv_amount ).
IF iv_segment = {{p}}if_overdraft=>c_segment_business.
rv_rate = rv_rate - c_business_discount.
IF rv_rate < c_min_rate.
rv_rate = c_min_rate.
ENDIF.
ENDIF.
ENDMETHOD.
ENDCLASS.