Concepts
The pricing for the same benefit plan may differ from a sector to another; the «Contribution plan» are to define different cost/pricing rules and the payment periodicity (in a month) for a given Benefit plan.
A benefit package (product in IMIS) can have multiple Contribution plans attached meaning different insurees may have different contributions level (or/and different calculation) but contribute to the same pool. The Contribution plans will have parameters such as maximum payment delay, grace periods.
...
To manage the group insurance several authorities will be added,the prefix of this module will be 151
ContributionPlanBundle, prefix 1511
Search → 151101
Create → 151102
Update → 151103
Delete → 151104
Replace → 151106
ContributionPlan, prefix 1512
Search →151201
Create → 151202
Update → 151203
Delete → 151204
Replace → 151206
...
Code (varchar 32)*
name(varchar 256)*
CalculationUUID*
BenefitPlanUUID (fk_product )*
Periodicity (int)*
Number of month between 2 payment
Not save in database:
length : int = None
(NICE TO HAVE)dependantList : Dict/List = []
Grace Period,Rate,Threshold will be stored on the json_ext part of HistoryModel
...
C/U/D service ContributionPlanBundle
check authority
ensure Code uniqueness for ValidTo/ValidFrom
Ensure mandatory fields are present
code not editable once created
Ensure that the periodicity for the contribution plan are the same
Ensure that the detail DatevalidFrom is greater or equal to CP DatevalidFrom
Ensure that the detail DatevalidTo is lesseror equal to CP DatevalidTo or DatevalidTo is null
Replace ContributionPlanBundle
Keep the code
normal HistoryBusinessModel replace
C/U/D service ContributionPlan
check authority
ensure Code uniqueness for ValidTo/ValidFrom
Ensure mandatory fields are present
code not editable once created
(Nice to have)Replace ContributionPlan
Keep the code
normal HistoryBusinessModel replace
GetContributionLength
set the length param to periodicity
send a signalread the signal result, if >0 take that result as duration in month else take periodicity instead
return the length param (modified or not by the signal recievers)
(NICE TO HAVE)GetDependants
set a member data denpendantList to []
send a signal
return dependantList modified or not by signals
Front end detailed design
...