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/