有没有重新生成代码的功能,或者更好的想法?
is there a function to generates the code again, or better ideas?
我创建了一个计算一天早餐、午餐和晚餐费用的模块,我需要为其他日子(第 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_date
、lunch_date
,也不需要 dinner_date
字段——它们都应该是一样。
如果您需要更多帮助,请向我们展示如何调用此代码,以及 xml 查看文件。
我创建了一个计算一天早餐、午餐和晚餐费用的模块,我需要为其他日子(第 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_date
、lunch_date
,也不需要 dinner_date
字段——它们都应该是一样。
如果您需要更多帮助,请向我们展示如何调用此代码,以及 xml 查看文件。