如何将字段或任何变量作为序列放入odoo

时间:2017-05-18 04:41:16

标签: python openerp

我想在我的销售订单中生成序列为a/b/c,其中a是many2one字段的序号,b是当前年份,c是客户参考。我编码是这样的。但是这个价值不会得到(除了年份)因为创造fn左右我认为

def create(self, vals):
    seq = str(self.projects_id.sequence)
    year = str(datetime.now().year-2000)
    ref = str(self.client_order_ref)
    if vals.get('name', 'New') == 'New':
        vals['name'] = seq+'/'+year+'/'+ref
    return super(sale_order,self).create(vals) 

任何想法?

1 个答案:

答案 0 :(得分:2)

这是我朋友的残酷错误!!

您正在使用CREATE方法编写代码,并且您不会在自己中获取任何记录/记录集,

因此您无法访问

等字段
  

self.projects_id.sequence

所有值都在vals字典中。

def create(self, vals):
    project_id = vals.get('projects_id',False)
    project_obj = self.env['project.project']

    seq = str(project_obj.browse(project_id).sequence)
    year= str(datetime.now().year-2000)
    ref = vals.get('client_order_ref','')

    if vals.get('name', 'New') == 'New':
        vals['name'] = seq+'/'+year+'/'+ref
    return super(sale_order,self).create(vals) 

****使用项目顺序不是个好主意!因为它们不是唯一的。你有时可能会得到重复序列。***