OpenERP表单加载时
我需要创建一个与员工注册信息相关的表单。我的需求是这样的……当用户点击创建按钮时,应该在员工编号字段中加载当前员工编号加1的值。我想弄清楚如何调用方法'_form_onload()'。也就是说,我应该在哪里调用我的这个函数呢?
这是我现在的代码
def create(self, cr, uid, vals, context=None):
vals['register_no'] =self.pool.get('ir.sequence').get(cr, uid, 'bpl.worker')
worker_reg_seq = super(bpl_worker_registration, self).create(cr, uid, vals, context=context)
return worker_reg_seq
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="seq_bpl_worker_registration" model="ir.sequence.type">
<field name="name">bpl_worker_registration</field>
<field name="code">bpl.worker</field>
</record>
<record id="seq_bpl_worker_registration" model="ir.sequence">
<field name="name">bpl_worker_registration</field>
<field name="code">bpl.worker</field>
<field name="prefix">BPL</field>
<field name="padding">5</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="company_id" eval="False"/>
</record>
</data>
</openerp>
xml已经添加到openerp.py的数据部分
1 个回答
3
为了这个目的,你需要创建一个序列,默认情况下在创建时调用这个序列。每当你创建一个新记录时,它会自动加1。
举个例子:你可以把一个名为 purchase_sequence.xml 的文件放在 openerp.py 文件的 data 目录下。
<record id="seq_type_purchase_order" model="ir.sequence.type">
<field name="name">Purchase Order</field>
<field name="code">purchase.order</field>
</record>
<record id="seq_purchase_order" model="ir.sequence">
<field name="name">Purchase Order</field>
<field name="code">purchase.order</field>
<field name="prefix">PO</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
def create(self, cr, uid, vals, context=None):
if vals.get('name','/')=='/':
vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'purchase.order') or '/'
order = super(purchase_order, self).create(cr, uid, vals, context=context)
return order
同样的,你也需要为员工编号创建一个序列:前缀是你序列的起始点,比如你可以用 "EMP";填充是指你的编号长度,可以设置为5位或10位,随你喜欢。
希望这能帮到你。