# 1. Goal Calculate the price of one firing in a pottery kiln. The kiln booking program calls the calculation before it confirms a booking. The program needs one price for each booking. # 2. Open questions None. # 3. Context - The interface {{P}}IF_KILN_PRICE exists in package $TMP. It is active. - The interface has the types TY_CLAY (2 characters), TY_WEIGHT (packed, length 6, decimals 2) and TY_PRICE (packed, length 8, decimals 2). - The interface has one method: CALCULATE_PRICE IMPORTING iv_pieces TYPE i iv_weight TYPE ty_weight iv_clay TYPE ty_clay iv_glaze TYPE abap_bool iv_member TYPE abap_bool RETURNING VALUE(rv_price) TYPE ty_price. iv_pieces is the number of pieces. iv_weight is the weight in kilograms. iv_glaze is 'X' when the customer books a glaze firing. iv_member is 'X' when the customer is a member. - The kiln booking program calls the method for each booking. The customer can leave the clay type empty when the booking is created. The customer chooses the clay type later. # 4. Contract - Create the class {{P}}KILN_PRICER in package $TMP. - The class is public, final, and has a public constructor without parameters. - The class implements {{P}}IF_KILN_PRICE. - Do not add other public methods. # 5. Business rules The price is in euro. Apply the rules in this sequence. 1. Base fee: 40.00 for each firing. 2. Piece fee: 12.00 for each piece. 3. Weight surcharge: 3.00 for each kilogram of the weight that is above 10 kg. A weight of 10 kg or less gives no surcharge. 4. Clay factor: multiply the sum of rules 1 to 3 by the factor of the chosen clay type: EA 1.00, ST 1.20, PO 1.50. 5. Glaze firing: add 25.00 when the customer books a glaze firing. 6. Member discount: subtract 15 per cent when the customer is a member. 7. Round the result to two decimals. Round half up. # 6. Constraints - Release target: SAP_BASIS 816 (ABAP Platform 2025). - Coding standards: Clean ABAP. Method length below 40 statements. No global variables. No comment that restates the code. - Out of scope: do not change {{P}}IF_KILN_PRICE. # 7. Acceptance - The class is active and has no syntax error. - Write your own ABAP Unit tests for the class.