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:
85
tasks_gen/eval/G0163/faulty/m1_overdraft_calc.clas.abap
Normal file
85
tasks_gen/eval/G0163/faulty/m1_overdraft_calc.clas.abap
Normal 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.
|
||||
Reference in New Issue
Block a user