85 lines
2.6 KiB
ABAP
85 lines
2.6 KiB
ABAP
INTERFACE {{p}}if_laundry_fee PUBLIC.
|
|
TYPES ty_item TYPE c LENGTH 7.
|
|
TYPES ty_service TYPE c LENGTH 4.
|
|
TYPES ty_reason TYPE c LENGTH 10.
|
|
TYPES ty_quantity TYPE i.
|
|
TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
|
|
TYPES ty_flag TYPE abap_bool.
|
|
|
|
TYPES:
|
|
BEGIN OF ty_order_line,
|
|
item TYPE ty_item,
|
|
service TYPE ty_service,
|
|
quantity TYPE ty_quantity,
|
|
express TYPE ty_flag,
|
|
END OF ty_order_line.
|
|
TYPES tt_order_line TYPE STANDARD TABLE OF ty_order_line WITH EMPTY KEY.
|
|
|
|
CONSTANTS:
|
|
BEGIN OF c_reason,
|
|
ok TYPE ty_reason VALUE 'ZK',
|
|
item TYPE ty_reason VALUE 'ITEM',
|
|
service TYPE ty_reason VALUE 'SERVICE',
|
|
qty TYPE ty_reason VALUE 'QTY',
|
|
END OF c_reason.
|
|
|
|
CONSTANTS:
|
|
BEGIN OF c_item,
|
|
shirt TYPE ty_item VALUE 'SHIRT',
|
|
trousers TYPE ty_item VALUE 'TROUS',
|
|
suit TYPE ty_item VALUE 'SUIT',
|
|
coat TYPE ty_item VALUE 'COAT',
|
|
dress TYPE ty_item VALUE 'DRESS',
|
|
curtain TYPE ty_item VALUE 'CURTAIN',
|
|
END OF c_item.
|
|
|
|
CONSTANTS:
|
|
BEGIN OF c_service,
|
|
wash TYPE ty_service VALUE 'WASH',
|
|
dryc TYPE ty_service VALUE 'DRYC',
|
|
iron TYPE ty_service VALUE 'IRON',
|
|
mend TYPE ty_service VALUE 'MEND',
|
|
END OF c_service.
|
|
|
|
CONSTANTS:
|
|
BEGIN OF c_price,
|
|
shirt TYPE ty_amount VALUE '3.50',
|
|
trousers TYPE ty_amount VALUE '5.00',
|
|
suit TYPE ty_amount VALUE '12.00',
|
|
coat TYPE ty_amount VALUE '14.50',
|
|
dress TYPE ty_amount VALUE '8.00',
|
|
curtain TYPE ty_amount VALUE '9.50',
|
|
END OF c_price.
|
|
|
|
CONSTANTS:
|
|
BEGIN OF c_factor,
|
|
wash TYPE i VALUE 100,
|
|
dryc TYPE i VALUE 180,
|
|
iron TYPE i VALUE 40,
|
|
mend TYPE i VALUE 220,
|
|
END OF c_factor.
|
|
|
|
CONSTANTS c_max_qty TYPE ty_quantity VALUE 99.
|
|
CONSTANTS c_bulk_min_qty TYPE ty_quantity VALUE 10.
|
|
CONSTANTS c_bulk_discount TYPE i VALUE 10.
|
|
CONSTANTS c_express_surcharge TYPE i VALUE 25.
|
|
CONSTANTS c_min_fee TYPE ty_amount VALUE '5.00'.
|
|
|
|
METHODS check_item
|
|
IMPORTING iv_item TYPE ty_item
|
|
iv_service TYPE ty_service
|
|
iv_quantity TYPE ty_quantity
|
|
RETURNING VALUE(rv_reason) TYPE ty_reason.
|
|
|
|
METHODS calculate_fee
|
|
IMPORTING iv_item TYPE ty_item
|
|
iv_service TYPE ty_service
|
|
iv_quantity TYPE ty_quantity
|
|
iv_express TYPE ty_flag
|
|
RETURNING VALUE(rv_fee) TYPE ty_amount.
|
|
|
|
METHODS calculate_order
|
|
IMPORTING it_lines TYPE tt_order_line
|
|
RETURNING VALUE(rv_total) TYPE ty_amount.
|
|
ENDINTERFACE.
|