Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
65
tasks_gen/train/G1075/spec.md
Normal file
65
tasks_gen/train/G1075/spec.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 1. Goal
|
||||
Calculate the monthly fee for a child at a day care centre. The billing program
|
||||
calls the calculation for each child before it creates the invoice. The program
|
||||
needs the fee and one reason code for each child.
|
||||
|
||||
# 2. Open questions
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
- The class {{P}}CHILDCARE_PRICER does not exist yet. Create it in package $TMP.
|
||||
- The billing program is not part of this task. It calls the calculation for
|
||||
each child and reads the reason and the fee.
|
||||
|
||||
# 4. Contract
|
||||
- Create the class {{P}}CHILDCARE_PRICER in package $TMP.
|
||||
- The class is public, final, and has a public constructor without parameters.
|
||||
- Define these public types:
|
||||
TY_AGE_BAND TYPE c LENGTH 4
|
||||
TY_REASON TYPE c LENGTH 6
|
||||
TY_AMOUNT TYPE p LENGTH 8 DECIMALS 2
|
||||
TY_RESULT a structure with the components REASON (TY_REASON) and
|
||||
FEE (TY_AMOUNT)
|
||||
- Define the public constant structure C_REASON with the components OK, AGE and
|
||||
DAYS. Each component has the type TY_REASON.
|
||||
- Add one public method:
|
||||
CALCULATE
|
||||
IMPORTING iv_age_months TYPE i
|
||||
iv_days TYPE i
|
||||
iv_full_day TYPE abap_bool
|
||||
iv_sibling TYPE abap_bool
|
||||
RETURNING VALUE(rs_result) TYPE ty_result
|
||||
- Do not add other public methods.
|
||||
|
||||
# 5. Business rules
|
||||
Apply the rules in this sequence.
|
||||
1. If iv_age_months is less than 3 or more than 60, return the reason AGE and
|
||||
the fee 0.
|
||||
2. If iv_days is less than 1 or more than 5, return the reason DAYS and the fee
|
||||
0.
|
||||
3. Find the age band of the child:
|
||||
3 to 11 months: BABY
|
||||
12 to 35 months: TODD
|
||||
36 to 60 months: PRE
|
||||
4. Find the daily rate of the age band:
|
||||
BABY: 62.00 for a full day, 38.00 for a half day
|
||||
TODD: 54.00 for a full day, 33.00 for a half day
|
||||
PRE: 46.00 for a full day, 28.00 for a half day
|
||||
iv_full_day = abap_true means a full day. All other values mean a half day.
|
||||
5. The monthly fee is the daily rate multiplied by iv_days and by 4.348. Round
|
||||
the result to 2 decimal places.
|
||||
6. If iv_sibling = abap_true, multiply the monthly fee by 0.9 and round the
|
||||
result to 2 decimal places.
|
||||
7. If the monthly fee is more than 1050.00, set it to 1050.00.
|
||||
8. Return the reason OK and the monthly fee.
|
||||
|
||||
# 6. Constraints
|
||||
- Release target: 8.16.
|
||||
- Coding standards: Clean ABAP. Method length below 40 statements. No global
|
||||
variables. No comment that restates the code.
|
||||
- Out of scope: no other object.
|
||||
|
||||
# 7. Acceptance
|
||||
- The class is active and has no syntax error.
|
||||
- The hidden tests pass.
|
||||
- Write your own ABAP Unit tests for the class.
|
||||
Reference in New Issue
Block a user