Odoo payslip with salary in salary rule python code

时间:2016-08-17 04:38:18

标签: python openerp odoo-8

我必须用if条件来计算基本工资。如果员工没有带薪休假,则表示未工作的工作日期间没有工资,而工资单下的输入则为无薪假,则应为o(零)。     我已经尝试了下面的代码但它给出了错误。

day=contract.wage/30
if not worked_days.Unpaid.number_of_days in payslip:
      result=day*(30-0)
else:
      result=day*(30-worked_days.Unpaid.number_of_days)

3 个答案:

答案 0 :(得分:1)

python中的in命令用于检查成员资格。 例如。 :3 in [1, 2, 3]结果为True。 我不确定您的代码中payslip的用途是什么,但据我所知,您可以尝试这样做:

day=contract.wage/30
if Not(worked_days.Unpaid.number_of_days):
    result=day*(30-0)
else:
    result=day*(30-worked_days.Unpaid.number_of_days)

评论后编辑:

day=contract.wage/30
if worked_days.Unpaid and worked_days.Unpaid.number_of_days or False:
    result=day*(30-0)
else:
    result=day*(30-worked_days.Unpaid.number_of_days)

答案 1 :(得分:0)

您可以在此博客中查看详细的工资单规则,以扣除未付款的树叶及其计算和配置here

答案 2 :(得分:0)

您好朋友我也遇到了同样的问题,但我得到了解决方案,无需面对错误就可以获得number_of_days,并根据工资计算扣除合同。

从payslip获得number_of_days

number_of_days = 0

for line in payslip.worked_days_line_ids:
    number_of_days += line.number_of_days

计算DAC(对合同的工资扣除)

if contract.deduct_salary_from_payslip == True:
    if payslip.date_from <= employee.joining_date and employee.joining_date <= payslip.date_to:
        result = -(number_of_days*(contract.wage/30))*.10
    else:
        result = -(contract.wage * 0.10)
else:
    result=0.0

我认为此代码可以帮助您解决在计算Payslip的扣除或补贴时遇到的问题。