Generator: pilot analysis and fixes; G0002-G0021 tasks; handover notes merged
- 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>
This commit is contained in:
106
tasks_gen/eval/G0006/seed/freight_calculator.clas.abap
Normal file
106
tasks_gen/eval/G0006/seed/freight_calculator.clas.abap
Normal file
@@ -0,0 +1,106 @@
|
||||
CLASS {{p}}freight_calculator DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
BEGIN OF ty_result,
|
||||
status TYPE c LENGTH 10,
|
||||
base TYPE p LENGTH 9 DECIMALS 2,
|
||||
surcharge TYPE p LENGTH 9 DECIMALS 2,
|
||||
total TYPE p LENGTH 9 DECIMALS 2,
|
||||
END OF ty_result.
|
||||
|
||||
CONSTANTS:
|
||||
BEGIN OF c_status,
|
||||
ok TYPE c LENGTH 10 VALUE 'OK',
|
||||
weight TYPE c LENGTH 10 VALUE 'WEIGHT',
|
||||
zone TYPE c LENGTH 10 VALUE 'ZONE',
|
||||
END OF c_status.
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING
|
||||
iv_weight_kg TYPE p LENGTH 8 DECIMALS 2
|
||||
iv_zone TYPE string
|
||||
iv_express TYPE abap_bool DEFAULT abap_false
|
||||
RETURNING
|
||||
VALUE(rs_result) TYPE ty_result.
|
||||
|
||||
METHODS is_zone_supported
|
||||
IMPORTING
|
||||
iv_zone TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_supported) TYPE abap_bool.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mv_last_zone TYPE string.
|
||||
CONSTANTS c_express_share TYPE p LENGTH 5 DECIMALS 2 VALUE '0.25'.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}freight_calculator IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
DATA lv_zone TYPE string.
|
||||
DATA lv_rate TYPE p LENGTH 6 DECIMALS 2.
|
||||
DATA lv_amount TYPE p LENGTH 13 DECIMALS 4.
|
||||
DATA lv_express TYPE abap_bool.
|
||||
|
||||
lv_zone = to_upper( replace( val = iv_zone sub = ` ` with = `` occ = 0 ) ).
|
||||
mv_last_zone = lv_zone.
|
||||
|
||||
IF iv_weight_kg <= 0.
|
||||
rs_result-status = 'WEIGHT'.
|
||||
rs_result-base = 0.
|
||||
rs_result-surcharge = 0.
|
||||
rs_result-total = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
* IF lv_zone = 'BE'.
|
||||
* lv_rate = '5.60'.
|
||||
* ENDIF.
|
||||
IF lv_zone = 'DE'.
|
||||
lv_rate = '4.50'.
|
||||
ELSEIF lv_zone = 'AT'.
|
||||
lv_rate = '5.20'.
|
||||
ELSEIF lv_zone = 'CH'.
|
||||
lv_rate = '7.80'.
|
||||
ELSEIF lv_zone = 'FR'.
|
||||
lv_rate = '6.40'.
|
||||
ELSEIF lv_zone = 'NL'.
|
||||
lv_rate = '4.90'.
|
||||
ELSEIF lv_zone = 'PL'.
|
||||
lv_rate = '5.10'.
|
||||
ELSEIF lv_zone = 'ES'.
|
||||
lv_rate = '6.90'.
|
||||
ELSE.
|
||||
rs_result-status = 'ZONE'.
|
||||
rs_result-base = 0.
|
||||
rs_result-surcharge = 0.
|
||||
rs_result-total = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_amount = lv_rate * iv_weight_kg.
|
||||
rs_result-base = round( val = lv_amount dec = 2 ).
|
||||
|
||||
lv_express = iv_express.
|
||||
IF lv_express = abap_true.
|
||||
lv_amount = rs_result-base * c_express_share.
|
||||
rs_result-surcharge = round( val = lv_amount dec = 2 ).
|
||||
ELSE.
|
||||
rs_result-surcharge = 0.
|
||||
ENDIF.
|
||||
|
||||
rs_result-total = rs_result-base + rs_result-surcharge.
|
||||
rs_result-status = 'OK'.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_zone_supported.
|
||||
DATA lv_zone TYPE string.
|
||||
lv_zone = to_upper( replace( val = iv_zone sub = ` ` with = `` occ = 0 ) ).
|
||||
IF lv_zone = 'DE' OR lv_zone = 'AT' OR lv_zone = 'CH' OR lv_zone = 'FR'
|
||||
OR lv_zone = 'NL' OR lv_zone = 'PL' OR lv_zone = 'ES'.
|
||||
rv_supported = abap_true.
|
||||
ELSE.
|
||||
rv_supported = abap_false.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
@@ -0,0 +1,25 @@
|
||||
CLASS ltc_legacy_freight DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
METHODS base_parcel FOR TESTING.
|
||||
METHODS express_parcel FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_legacy_freight IMPLEMENTATION.
|
||||
METHOD base_parcel.
|
||||
DATA(lo_cut) = NEW {{p}}freight_calculator( ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = VALUE {{p}}freight_calculator=>ty_result( status = 'OK' base = '45.00' total = '45.00' )
|
||||
act = lo_cut->calculate( iv_weight_kg = '10.00' iv_zone = `DE` ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD express_parcel.
|
||||
DATA(lo_cut) = NEW {{p}}freight_calculator( ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = VALUE {{p}}freight_calculator=>ty_result( status = 'OK'
|
||||
base = '45.00'
|
||||
surcharge = '11.25'
|
||||
total = '56.25' )
|
||||
act = lo_cut->calculate( iv_weight_kg = '10.00' iv_zone = `DE` iv_express = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user