- Static bundle checks (name length, seed type, reserved words, contract test classes, testclasses_file), local abaplint parser check before SAP, max_tokens, robust JSON parse - Runner: G2 for CDS views with parameters, contract_check detail in report - G0020 and G0013 fixed by review and revalidated (oracle 100, null 0) - Pilot results in docs/faz1-tasarim.md 11e; handover notes merged into CLAUDE.md and docs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
57 lines
1.6 KiB
ABAP
57 lines
1.6 KiB
ABAP
CLASS {{p}}shipping_cost_calc DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
|
PUBLIC SECTION.
|
|
INTERFACES {{p}}if_shipping_cost.
|
|
|
|
PRIVATE SECTION.
|
|
METHODS base_rate
|
|
IMPORTING iv_weight TYPE {{p}}if_shipping_cost=>ty_weight
|
|
RETURNING VALUE(rv_rate) TYPE {{p}}if_shipping_cost=>ty_amount.
|
|
|
|
METHODS express_surcharge
|
|
IMPORTING iv_rate TYPE {{p}}if_shipping_cost=>ty_amount
|
|
RETURNING VALUE(rv_surcharge) TYPE {{p}}if_shipping_cost=>ty_amount.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}shipping_cost_calc IMPLEMENTATION.
|
|
METHOD {{p}}if_shipping_cost~calculate.
|
|
IF iv_weight <= 0.
|
|
rv_cost = 0.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
DATA(lv_cost) = base_rate( iv_weight ).
|
|
|
|
IF iv_express = abap_true.
|
|
lv_cost = lv_cost + express_surcharge( lv_cost ).
|
|
ENDIF.
|
|
|
|
IF lv_cost < {{p}}if_shipping_cost=>c_rate-min_charge.
|
|
rv_cost = {{p}}if_shipping_cost=>c_rate-min_charge.
|
|
ELSE.
|
|
rv_cost = lv_cost.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD base_rate.
|
|
IF iv_weight <= 1.
|
|
rv_rate = '4.90'.
|
|
ELSEIF iv_weight <= 5.
|
|
rv_rate = '8.50'.
|
|
ELSEIF iv_weight <= 10.
|
|
rv_rate = '12.00'.
|
|
ELSEIF iv_weight <= {{p}}if_shipping_cost=>c_rate-bulk_weight.
|
|
rv_rate = '18.75'.
|
|
ELSE.
|
|
DATA(lv_started_kg) = CONV i(
|
|
ceil( iv_weight - {{p}}if_shipping_cost=>c_rate-bulk_weight ) ).
|
|
rv_rate = '18.75' + lv_started_kg * {{p}}if_shipping_cost=>c_rate-bulk_step.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD express_surcharge.
|
|
rv_surcharge = round( val = iv_rate * {{p}}if_shipping_cost=>c_rate-express_percent / 100
|
|
dec = 2 ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|