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>