sequence trong odoo

0
135

Sinh mã tự động trong quá trình hay được sử dụng odoo là việc cần thiết .Ví dụ như mã đơn hàng,mã thanh toán .Vậy làm cách nào để có thể sinh mã tự động trong odoo trong app của mình .Sau đây mình xin giới thiệu đến các bạn các bước cần làm để có thể sinh mã tự động được

Bước 1 tạo file xml có tên ir_sequence_data.xml như sau

<data noupdate="1">

        <!-- Sequences for sale.order -->
        <record id="seq_app1" model="ir.sequence">
            <field name="name">App 1 </field>
            <field name="code">app1.sanpham.seq</field>
            <field name="prefix">APP1</field>
            <field name="padding">4</field>
            <field name="number_next">1</field>
            <field name="number_increment">1</field>
        </record>

    </data>

để noupdate để báo cho odoo rằng biến này ko cần update lại tránh trường hợp trung mã giữa các row

Thêm đoạn mã trong mục model 

name_seq = fields.Char(string='App1  Reference', required=True, copy=False, readonly=True,default='New')

    @api.model
    def create(self, vals):
        if vals.get('name_seq', 'New') == 'New':
            vals['name_seq'] = self.env['ir.sequence'].next_by_code(
                'app1.sanpham.seq') or 'New'
        result = super(Sanpham, self).create(vals)
        return result

Đoạn này có ý nghĩa là tự động khởi tạo 1 hàng tên name_seq với defaute là New .

@api.model có tác dụng là sinh mã tự động tăng lên 

Còn muốn show ra thì chỉ cần  thêm 

<field name="name_seq"/>

Ở mục tree hoặc kanban .Dưới đây là tree

<tree string="View All Record">
                    <field name="name_seq"/>
                    <field name="name"/>
                    <field name="description"/>
                    <field name="price"/>
                </tree>