Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
126
tasks_gen/train/G1050/faulty/m4_tailor_pricer.clas.abap
Normal file
126
tasks_gen/train/G1050/faulty/m4_tailor_pricer.clas.abap
Normal file
@@ -0,0 +1,126 @@
|
||||
CLASS {{p}}tailor_pricer DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES ty_garment TYPE c LENGTH 10.
|
||||
TYPES ty_service TYPE c LENGTH 10.
|
||||
TYPES ty_price TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate_price
|
||||
IMPORTING iv_garment TYPE ty_garment
|
||||
iv_service TYPE ty_service
|
||||
iv_quantity TYPE i
|
||||
iv_express TYPE abap_bool
|
||||
RETURNING VALUE(rv_price) TYPE ty_price.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
CONSTANTS:
|
||||
c_express_fee TYPE ty_price VALUE '6.00',
|
||||
c_minimum_price TYPE ty_price VALUE '15.00',
|
||||
c_discount_low TYPE ty_price VALUE '10.00',
|
||||
c_discount_high TYPE ty_price VALUE '20.00',
|
||||
c_qty_low TYPE i VALUE 3,
|
||||
c_qty_high TYPE i VALUE 5,
|
||||
c_percent_base TYPE i VALUE 100.
|
||||
|
||||
METHODS service_base
|
||||
IMPORTING iv_service TYPE ty_service
|
||||
RETURNING VALUE(rv_base) TYPE ty_price.
|
||||
METHODS garment_factor
|
||||
IMPORTING iv_garment TYPE ty_garment
|
||||
RETURNING VALUE(rv_factor) TYPE ty_price.
|
||||
METHODS discount_percent
|
||||
IMPORTING iv_quantity TYPE i
|
||||
RETURNING VALUE(rv_percent) TYPE ty_price.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}tailor_pricer IMPLEMENTATION.
|
||||
|
||||
METHOD calculate_price.
|
||||
|
||||
DATA lv_base TYPE ty_price.
|
||||
DATA lv_factor TYPE ty_price.
|
||||
DATA lv_unit TYPE ty_price.
|
||||
DATA lv_total TYPE ty_price.
|
||||
DATA lv_discount TYPE ty_price.
|
||||
|
||||
IF iv_quantity <= 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_base = service_base( iv_service ).
|
||||
lv_factor = garment_factor( iv_garment ).
|
||||
IF lv_base <= 0 OR lv_factor <= 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_unit = lv_base * lv_factor.
|
||||
IF iv_express = abap_true.
|
||||
lv_unit = lv_unit + c_express_fee.
|
||||
ENDIF.
|
||||
|
||||
lv_total = lv_unit * iv_quantity.
|
||||
lv_discount = discount_percent( iv_quantity ).
|
||||
lv_total = lv_total - lv_total * lv_discount / c_percent_base.
|
||||
|
||||
IF lv_total < c_minimum_price.
|
||||
rv_price = c_minimum_price.
|
||||
ELSE.
|
||||
rv_price = lv_total.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD service_base.
|
||||
CASE iv_service.
|
||||
WHEN 'HEM'.
|
||||
rv_base = '8.00'.
|
||||
WHEN 'TAKE_IN'.
|
||||
rv_base = '15.00'.
|
||||
WHEN 'ZIP'.
|
||||
rv_base = '12.00'.
|
||||
WHEN 'SLEEVE'.
|
||||
rv_base = '10.00'.
|
||||
WHEN 'LINING'.
|
||||
rv_base = '25.00'.
|
||||
WHEN OTHERS.
|
||||
rv_base = 0.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD garment_factor.
|
||||
CASE iv_garment.
|
||||
WHEN 'TROUSERS'.
|
||||
rv_factor = '1.00'.
|
||||
WHEN 'SKIRT'.
|
||||
rv_factor = '1.00'.
|
||||
WHEN 'JACKET'.
|
||||
rv_factor = '1.50'.
|
||||
WHEN 'DRESS'.
|
||||
rv_factor = '1.50'.
|
||||
WHEN 'COAT'.
|
||||
rv_factor = '2.00'.
|
||||
WHEN OTHERS.
|
||||
rv_factor = 0.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD discount_percent.
|
||||
IF iv_quantity < c_qty_high.
|
||||
rv_percent = c_discount_high.
|
||||
ELSEIF iv_quantity >= c_qty_low.
|
||||
rv_percent = c_discount_low.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user