python - 有没有一个函数可以再次生成代码,或者更好的想法?

标签 python odoo openerp-7

我创建了一个模块,计算一天中早餐、午餐和晚餐的费用,我需要在其他日子(第2天、第3天......)再次计算它,而不需要再次复制代码,所以我们可以输入任意多的天数,有什么建议吗 我的模块看起来像:

from openerp.osv import fields, orm

class daily_allowances(orm.Model):

    def _compute_breakfast(self, cr, uid, ids, name, args, context=None):
        x = {}
        for record in self.browse(cr,uid,ids,context):
            x[record.id] = record.breakfast_allowances - record.breakfast_cost
        return x

    def _compute_lunch(self, cr, uid, ids, name, args, context=None):
        x = {}
        for record in self.browse(cr,uid,ids,context):
            x[record.id] = record.lunch_allowances - record.lunch_cost
        return x

    def _compute_dinner(self, cr, uid, ids, name, args, context=None):
        x = {}
        for record in self.browse(cr,uid,ids,context):
            x[record.id] = record.dinner_allowances - record.dinner_cost
        return x


    _name = 'daily.allowances'
    _columns = {
        'employee_id': fields.many2one('hr.employee', string="Employee Name", required=True),
        'trip_date': fields.date('date of the trip', required=False),       
        'daily_allowances': fields.float('Daily Allowances', required=False),
        'breakfast_allowances': fields.float('Breakfast Allowances', required=False),
        'breakfast_date': fields.datetime('Date', required=False),
        'brekfast_cost': fields.float('Costed', required=False),
        'breakfast_remaining': fields.function(_compute_breakfast, store=True,string='Breakfast Balance'),
        'lunch_allowances': fields.float('Lunch Allowances', required=False),
        'lunch_date': fields.datetime('Date', required=False),
        'lunch_cost': fields.float('Costed', required=False),
        'lunch_remaining': fields.function(_compute_breakfast, store=True,string='Breakfast Balance'),
        'dinner_allowances': fields.float('Dinner Allowances', required=False),
        'dinner_date': fields.datetime('Date', required=False),
        'dinner_cost': fields.float('Costed', required=False),
        'dinner_remaining': fields.function(_compute_breakfast, store=True,string='Breakfast Balance'),
       }

最佳答案

看来您的模块已设置为每天跟踪每日津贴。这意味着您需要为每位员工每天创建一个新记录,并输入他们每顿饭的花费金额。

这看起来不错。

一个观察结果:您有一个 trip_date 字段,因此您不需要 breakfast_datelunch_datedinner_date code> 字段——它们应该都是相同的。

如果您需要更多帮助,您将向我们展示如何调用此代码以及 xml View 文件。

关于python - 有没有一个函数可以再次生成代码,或者更好的想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31512924/

相关文章:

python - ValidateError 验证字段 arch 时发生错误 : Invalid XML for View Architecture

python - 如何处理脚本语言中的用户认证和错误修改?

python - 名称错误 : name 'api' is not defined

odoo - 属性错误: 'NoneType' object has no attribute 'get_default_company'

javascript - odoo中如何调用网站端widget

python - 如何在 Odoo 的创建模式下隐藏按钮

odoo - 解释 OpenERP 7.0 中的安全性以及 (6,0) 和 (4) 有什么用?

python - 在Factory Boy中,如何连接Faker创建的字符串?

python - 用 Python 向客户端推送消息

python - Gurobi/python 中的稀疏矩阵 LP 问题