contribution plan calcrule : percentage of income
contributionValuationRule inherit from absCalculationRule
static version = 1
status = active
static UUID = 0e1b6dd4-04a0-4ee6-ac47-2a99cfa5e9a8
static CalculationRuleName = “CV: percent of income “
dateValidTo = None
dateValidFrom = 2000-01-01
static description = “ This calcutation will add the income in the contract details and PHinsuree and the percentage in the Contribution plan so when a contract valuation is requested then the calculation will determine the value based on the contract details income and CP percentage “
list of impacted class and parameters
{class:"ContributionPlan", ‘parameters':[
{'type':"select",'name':"rate",'label':{'en':'Percentage of income',’fr':'Pourcentage du salaire'},'rights':{'read':"151201", “write':'151202', 'update’:'151203','replace’:'151206'}, relevance:"True",condition:".$_>1", 'optionSet':[{'value':'5',label:{'en':'5%','fr':'5%'}},{'value':'10',label:{'en':'10%','fr':'10%'}},{'value':'15',label:{'en':'15%','fr':'15%'}},],'default':'5'},
{'type':"checkbox",'name':"includeFamilly",'label':{'en':'include family members',’fr':'Inclure les membres de la familles'},'rights':{'read':"151201", ‘write':'151202','update’:'151203','replace’:'151206'},relevance:"True"}]}
{class:"ContractDetails", ‘parameters':[{'type':"number",'name':"income",'label':{'en':'Income','fr':'Salaire'},'rights':{'read':"152101", ‘create':"152102”,'update’:”152103",'replace’:”152103"},relevance:"True",condition:"$_>100",'default':''}]}
{class:"PolicyHolderInsuree", ‘parameters':[{'type':"number",'name':"income",'label':{'en':'Income','fr':'Salaire'},'rights':{'read':"150201", ‘create':"150202”,'update’:”150203",'replace’:”150206"},relevance:"True",condition:"$_>100",'default':''}]}@rafa
relevance and condition are Nice to have.
Methods
ready()
Make sure the now is within dataValid (or after dateValidFrom if dateValidTo is None)
make sure the status is active
then
Register
getParameter to getParameter signal
getLinkedClass ot getLinkedClass signal
activeForObject(self, instance, context)
instance.__class__ == CCPD and context IN (create,update) and self.checkCalculation(instance)
checkCalculation(self, instance)
class= class of instance
match = False
if class == ContributionPlan
match =self.UUID == instance.calculation
else if class == PH insuree
match = checkCalculation(instance.cpb)
else if class == ContractDetails:
match =checkCalculation(instance.cpb)
else if class == ContractContributionPlanDetails
match =checkCalculation(instance.cp)
else if class == ContributionPlanBundle:
for cp in instance.cp
if checkCalculation(cp)
match = True
break
}
calculate(instance)
if instance.__class__ == ContractContributionPlanDetails
rate = instance.contribution_plan.json_ext.rate
income = instance.contract_details.json_ext.income
CCPD.value = income * rate
return CCPD.value
else Return False
getLinkedClass(classname)
ListClass = []
if class == ContributionPlan or class == None
ListClass.amend(Calculation)
else if class == PH insuree or class == None
ListClass.amend( ContributionPlanBundle)
else if class == ContractDetails or class == None
ListClass.amend( ContributionPlanBundle)
else if class == ContractContributionPlanDetails or class == None
ListClass.amend(ContributionPlan)
else if class == ContributionPlanBundle or class == None
ListClass.amend(ContributionPlan)
return listClass
Did you encounter a problem or do you have a suggestion?
Please contact our Service Desk
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/