OpenERP 7.0人力资源费用模块到期金额计算

OpenERP 7.0人力资源费用模块到期金额计算,openerp,Openerp,在OpenERP人力资源费用模块中,我们需要一些定制,我添加了两个字段,一个是来自公司的预付款(x_adv)和到期金额(x_dueam)。我们的要求是计算到期金额(总金额-x_adv)。我应该在哪里以及写什么代码 例如,员工A从公司获得项目X 500卢比的预付款 但他的总费用是1000卢比。现在我们要计算到期金额500卢比 自动(x_dueam为只读) 请帮助我们。。。。提前感谢…您可以通过两种方式实现这一点: (1) 您可以在从公司取得的预付款和总费用上写入更改方法,因此当这两个字段发生任何更

在OpenERP人力资源费用模块中,我们需要一些定制,我添加了两个字段,一个是来自公司的预付款(x_adv)和到期金额(x_dueam)。我们的要求是计算到期金额(总金额-x_adv)。我应该在哪里以及写什么代码

例如,员工A从公司获得项目X 500卢比的预付款 但他的总费用是1000卢比。现在我们要计算到期金额500卢比 自动(x_dueam为只读)


请帮助我们。。。。提前感谢…

您可以通过两种方式实现这一点:

(1) 您可以在
从公司取得的预付款
总费用
上写入更改方法,因此当这两个字段发生任何更改时,您可以计算金额并返回为
到期金额
字段计算的值

举个例子,

这将很好地工作,但如果结果字段(此处为due_amount)是只读的,则会有一个小问题,它不会显示在客户端和数据库中。因此,还有第二种方法可以使用sp;我来解决你的问题

(2) 将到期金额设置为字段函数

这是解决您的问题的最佳方法之一。通过函数字段,您可以将值存储在数据库中,也可以将字段设置为只读。希望这对你有用

<field name="x_adv" on_change="onchange_amount(x_adv,total_expense)"/>
<field name="total_expense" on_change="onchange_amount(x_adv,total_expense)"/>
<field name="due_amount"/>
def onchange_amount(self, cr, uid, ids, x_adv, total_amount, context={}):
    // Your calculation
    value = {'due_amount': calculate_value}
    return {'value': value}
def _calculate_due_amount(self, cr, uid, ids, field_name, arg, context=None):
    res = {}
    if context is None:
        context = {}
    for current_ids in self.browse(cr, uid, ids, context=context)[0]
        // Your calculation
        res[current_ids] = calculated_amount
    return res



'due_amount': fields.function(_calculate_due_amount, string='Due Amount', help="Due amount of employee.",
                              store={
                                     'your_object': (lambda self, cr, uid, ids, c={}: ids, ['x_adv', 'total_expense'], 10)
                                    }),