Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

contributionValuationRule inherit from absCalculationRule

static version = 1
status = active
static UUID = 0e1b6dd4-04a0-4ee6-ac47-2a99cfa5e9a8
static CalculationRuleName = “CV: percent of income “

...

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':"floatnumber",'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':"floatnumber",'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

thenno signal listener to register

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 checkCalculation(cp)

match = True

break

}

calculate(instance)

if instance.__class__ == ContractContributionPlanDetails

...

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