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,113 @@
CLASS {{p}}commission_calc DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES {{p}}if_commission.
PRIVATE SECTION.
TYPES ty_exact TYPE p LENGTH 15 DECIMALS 4.
CONSTANTS:
c_rate_base TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0100',
c_rate_mid TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0300',
c_rate_top TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0500',
c_bonus_5 TYPE {{p}}if_commission=>ty_amount VALUE '200',
c_bonus_10 TYPE {{p}}if_commission=>ty_amount VALUE '500',
c_cap TYPE {{p}}if_commission=>ty_amount VALUE '5000'.
METHODS base_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS extra_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS top_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS round_to_cents
IMPORTING iv_value TYPE ty_exact
RETURNING VALUE(rv_value) TYPE {{p}}if_commission=>ty_amount.
METHODS loyalty_bonus
IMPORTING iv_years TYPE i
RETURNING VALUE(rv_bonus) TYPE {{p}}if_commission=>ty_amount.
ENDCLASS.
CLASS {{p}}commission_calc IMPLEMENTATION.
METHOD {{p}}if_commission~calculate.
DATA: lv_exact TYPE ty_exact,
lv_bonus TYPE {{p}}if_commission=>ty_amount.
IF iv_sales <= 0 AND iv_target <= 0.
RETURN.
ENDIF.
IF iv_sales * 2 < iv_target.
RETURN.
ENDIF.
lv_exact = base_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_exact = lv_exact + extra_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_exact = lv_exact + top_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_bonus = round_to_cents( lv_exact ) + loyalty_bonus( iv_years ).
IF lv_bonus > c_cap.
lv_bonus = c_cap.
ENDIF.
rv_bonus = lv_bonus.
ENDMETHOD.
METHOD base_commission.
DATA lv_base TYPE ty_exact.
IF iv_sales < iv_target.
lv_base = iv_sales.
ELSE.
lv_base = iv_target.
ENDIF.
rv_part = lv_base * c_rate_base.
ENDMETHOD.
METHOD extra_commission.
DATA: lv_excess TYPE ty_exact,
lv_limit TYPE ty_exact.
IF iv_sales <= iv_target.
RETURN.
ENDIF.
lv_excess = iv_sales - iv_target.
lv_limit = iv_target / 2.
IF lv_excess > lv_limit.
lv_excess = lv_limit.
ENDIF.
rv_part = lv_excess * c_rate_mid.
ENDMETHOD.
METHOD top_commission.
DATA: lv_threshold TYPE ty_exact,
lv_top TYPE ty_exact.
lv_threshold = iv_target * 3.
lv_threshold = lv_threshold / 2.
IF iv_sales <= lv_threshold.
RETURN.
ENDIF.
lv_top = iv_sales - lv_threshold.
rv_part = lv_top * c_rate_top.
ENDMETHOD.
METHOD round_to_cents.
DATA lv_cents TYPE {{p}}if_commission=>ty_amount.
lv_cents = round( val = iv_value dec = 2 ).
rv_value = lv_cents.
ENDMETHOD.
METHOD loyalty_bonus.
IF iv_years >= 10.
rv_bonus = c_bonus_10.
ELSEIF iv_years >= 5.
rv_bonus = c_bonus_5.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,113 @@
CLASS {{p}}commission_calc DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES {{p}}if_commission.
PRIVATE SECTION.
TYPES ty_exact TYPE p LENGTH 15 DECIMALS 4.
CONSTANTS:
c_rate_base TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0100',
c_rate_mid TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0300',
c_rate_top TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0500',
c_bonus_5 TYPE {{p}}if_commission=>ty_amount VALUE '200',
c_bonus_10 TYPE {{p}}if_commission=>ty_amount VALUE '500',
c_cap TYPE {{p}}if_commission=>ty_amount VALUE '5000'.
METHODS base_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS extra_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS top_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS round_to_cents
IMPORTING iv_value TYPE ty_exact
RETURNING VALUE(rv_value) TYPE {{p}}if_commission=>ty_amount.
METHODS loyalty_bonus
IMPORTING iv_years TYPE i
RETURNING VALUE(rv_bonus) TYPE {{p}}if_commission=>ty_amount.
ENDCLASS.
CLASS {{p}}commission_calc IMPLEMENTATION.
METHOD {{p}}if_commission~calculate.
DATA: lv_exact TYPE ty_exact,
lv_bonus TYPE {{p}}if_commission=>ty_amount.
IF iv_sales <= 0 OR iv_target <= 0.
RETURN.
ENDIF.
IF iv_sales / 2 < iv_target.
RETURN.
ENDIF.
lv_exact = base_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_exact = lv_exact + extra_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_exact = lv_exact + top_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_bonus = round_to_cents( lv_exact ) + loyalty_bonus( iv_years ).
IF lv_bonus > c_cap.
lv_bonus = c_cap.
ENDIF.
rv_bonus = lv_bonus.
ENDMETHOD.
METHOD base_commission.
DATA lv_base TYPE ty_exact.
IF iv_sales < iv_target.
lv_base = iv_sales.
ELSE.
lv_base = iv_target.
ENDIF.
rv_part = lv_base * c_rate_base.
ENDMETHOD.
METHOD extra_commission.
DATA: lv_excess TYPE ty_exact,
lv_limit TYPE ty_exact.
IF iv_sales <= iv_target.
RETURN.
ENDIF.
lv_excess = iv_sales - iv_target.
lv_limit = iv_target / 2.
IF lv_excess > lv_limit.
lv_excess = lv_limit.
ENDIF.
rv_part = lv_excess * c_rate_mid.
ENDMETHOD.
METHOD top_commission.
DATA: lv_threshold TYPE ty_exact,
lv_top TYPE ty_exact.
lv_threshold = iv_target * 3.
lv_threshold = lv_threshold / 2.
IF iv_sales <= lv_threshold.
RETURN.
ENDIF.
lv_top = iv_sales - lv_threshold.
rv_part = lv_top * c_rate_top.
ENDMETHOD.
METHOD round_to_cents.
DATA lv_cents TYPE {{p}}if_commission=>ty_amount.
lv_cents = round( val = iv_value dec = 2 ).
rv_value = lv_cents.
ENDMETHOD.
METHOD loyalty_bonus.
IF iv_years >= 10.
rv_bonus = c_bonus_10.
ELSEIF iv_years >= 5.
rv_bonus = c_bonus_5.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,113 @@
CLASS {{p}}commission_calc DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES {{p}}if_commission.
PRIVATE SECTION.
TYPES ty_exact TYPE p LENGTH 15 DECIMALS 4.
CONSTANTS:
c_rate_base TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0100',
c_rate_mid TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0300',
c_rate_top TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0500',
c_bonus_5 TYPE {{p}}if_commission=>ty_amount VALUE '200',
c_bonus_10 TYPE {{p}}if_commission=>ty_amount VALUE '500',
c_cap TYPE {{p}}if_commission=>ty_amount VALUE '5000'.
METHODS base_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS extra_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS top_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS round_to_cents
IMPORTING iv_value TYPE ty_exact
RETURNING VALUE(rv_value) TYPE {{p}}if_commission=>ty_amount.
METHODS loyalty_bonus
IMPORTING iv_years TYPE i
RETURNING VALUE(rv_bonus) TYPE {{p}}if_commission=>ty_amount.
ENDCLASS.
CLASS {{p}}commission_calc IMPLEMENTATION.
METHOD {{p}}if_commission~calculate.
DATA: lv_exact TYPE ty_exact,
lv_bonus TYPE {{p}}if_commission=>ty_amount.
IF iv_sales <= 0 OR iv_target <= 0.
RETURN.
ENDIF.
IF iv_sales * 2 < iv_target.
RETURN.
ENDIF.
lv_exact = base_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_exact = lv_exact + extra_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_exact = lv_exact + top_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_bonus = round_to_cents( lv_exact ) + loyalty_bonus( iv_years ).
IF lv_bonus > c_cap.
lv_bonus = c_cap.
ENDIF.
rv_bonus = lv_bonus.
ENDMETHOD.
METHOD base_commission.
DATA lv_base TYPE ty_exact.
IF iv_sales < iv_target.
lv_base = iv_sales.
ELSE.
lv_base = iv_target.
ENDIF.
rv_part = lv_base * c_rate_base.
ENDMETHOD.
METHOD extra_commission.
DATA: lv_excess TYPE ty_exact,
lv_limit TYPE ty_exact.
IF iv_sales <= iv_target.
RETURN.
ENDIF.
lv_excess = iv_sales - iv_target.
lv_limit = iv_target / 2.
IF lv_excess > lv_limit.
lv_excess = lv_limit.
ENDIF.
rv_part = lv_excess * c_rate_mid.
ENDMETHOD.
METHOD top_commission.
DATA: lv_threshold TYPE ty_exact,
lv_top TYPE ty_exact.
lv_threshold = iv_target * 3.
lv_threshold = lv_threshold / 2.
IF iv_sales > lv_threshold.
RETURN.
ENDIF.
lv_top = iv_sales - lv_threshold.
rv_part = lv_top * c_rate_top.
ENDMETHOD.
METHOD round_to_cents.
DATA lv_cents TYPE {{p}}if_commission=>ty_amount.
lv_cents = round( val = iv_value dec = 2 ).
rv_value = lv_cents.
ENDMETHOD.
METHOD loyalty_bonus.
IF iv_years >= 10.
rv_bonus = c_bonus_10.
ELSEIF iv_years >= 5.
rv_bonus = c_bonus_5.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,113 @@
CLASS {{p}}commission_calc DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES {{p}}if_commission.
PRIVATE SECTION.
TYPES ty_exact TYPE p LENGTH 15 DECIMALS 4.
CONSTANTS:
c_rate_base TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0100',
c_rate_mid TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0300',
c_rate_top TYPE p LENGTH 7 DECIMALS 4 VALUE '0.0500',
c_bonus_5 TYPE {{p}}if_commission=>ty_amount VALUE '200',
c_bonus_10 TYPE {{p}}if_commission=>ty_amount VALUE '500',
c_cap TYPE {{p}}if_commission=>ty_amount VALUE '5000'.
METHODS base_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS extra_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS top_commission
IMPORTING iv_sales TYPE {{p}}if_commission=>ty_amount
iv_target TYPE {{p}}if_commission=>ty_amount
RETURNING VALUE(rv_part) TYPE ty_exact.
METHODS round_to_cents
IMPORTING iv_value TYPE ty_exact
RETURNING VALUE(rv_value) TYPE {{p}}if_commission=>ty_amount.
METHODS loyalty_bonus
IMPORTING iv_years TYPE i
RETURNING VALUE(rv_bonus) TYPE {{p}}if_commission=>ty_amount.
ENDCLASS.
CLASS {{p}}commission_calc IMPLEMENTATION.
METHOD {{p}}if_commission~calculate.
DATA: lv_exact TYPE ty_exact,
lv_bonus TYPE {{p}}if_commission=>ty_amount.
IF iv_sales <= 0 OR iv_target <= 0.
RETURN.
ENDIF.
IF iv_sales * 2 < iv_target.
RETURN.
ENDIF.
lv_exact = base_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_exact = lv_exact + extra_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_exact = lv_exact + top_commission( iv_sales = iv_sales iv_target = iv_target ).
lv_bonus = round_to_cents( lv_exact ) + loyalty_bonus( iv_years ).
IF lv_bonus > c_cap.
lv_bonus = c_cap.
ENDIF.
rv_bonus = lv_bonus.
ENDMETHOD.
METHOD base_commission.
DATA lv_base TYPE ty_exact.
IF iv_sales < iv_target.
lv_base = iv_sales.
ELSE.
lv_base = iv_target.
ENDIF.
rv_part = lv_base * c_rate_base.
ENDMETHOD.
METHOD extra_commission.
DATA: lv_excess TYPE ty_exact,
lv_limit TYPE ty_exact.
IF iv_sales <= iv_target.
RETURN.
ENDIF.
lv_excess = iv_sales - iv_target.
lv_limit = iv_target / 2.
IF lv_excess > lv_limit.
lv_excess = lv_limit.
ENDIF.
rv_part = lv_excess * c_rate_mid.
ENDMETHOD.
METHOD top_commission.
DATA: lv_threshold TYPE ty_exact,
lv_top TYPE ty_exact.
lv_threshold = iv_target * 3.
lv_threshold = lv_threshold / 2.
IF iv_sales <= lv_threshold.
RETURN.
ENDIF.
lv_top = iv_sales + lv_threshold.
rv_part = lv_top * c_rate_top.
ENDMETHOD.
METHOD round_to_cents.
DATA lv_cents TYPE {{p}}if_commission=>ty_amount.
lv_cents = round( val = iv_value dec = 2 ).
rv_value = lv_cents.
ENDMETHOD.
METHOD loyalty_bonus.
IF iv_years >= 10.
rv_bonus = c_bonus_10.
ELSEIF iv_years >= 5.
rv_bonus = c_bonus_5.
ENDIF.
ENDMETHOD.
ENDCLASS.