利用Python的三元表达式解决Odoo中工资条中城镇、农村保险的问题
Python中没有像C#中有三元表达式 A?B:C 但在python中可以通过 A if condition else B 的方式来达到同样的效果。
例如 : 1 if True else 0 输出 1 ,1 if False else 0 输出 0
很简单。
下面我们利用这个三元表达式来解决Odoo中保险计算的问题。
由于国内公司投保时通常要考虑员工的户口类型问题,我们在系统中本地化了这么一个字段叫做e_hukou_locaiton,它有两个值,一个urban ,一个rural.
那么我们就可以在工资规则中新创建一条规则,然后条件选总为真,在计算的框里填入下面的计算公式:
1 result = employee.e_ss_base * 0.105 if employee.e_hukou_location=='urban' else employee.e_ss_base * 0.10
其中employee.e_ss_base是社保基数,这样的话既可以通过一条公式来计算出城镇员工和农村员工的社保金额了,而不必在分别为其创建对应的工资规则。