[odoo 11 開發] 編號自動產生 (sample: 流水編號, keyword: 序列, sequence)


剛正式接觸 odoo 開發一個禮拜了

自創發票系統時,苦惱流水編號怎麼產生

試著用 search_count() 來計算,但如果數量太大,會造成效能消耗過大

畢竟每創一筆資料,就要算一次

詢問公司的學長,提供了這段程式

# model.py
invoice_number = field.Char(string="統一編號", readonly="1")

@api.model
def create(self, vals):
    seq = self.env['ir.sequence'].next_by_code('model.name') or '/'
    vals['invoice_number'] = seq
    return super(class_name, self).create(vals)

但是發現序列還是要去手動設定,很麻煩

於是去跟 google大神請示 "odoo sequence"

給我了一個 stack overflow,要從views的xml來寫

# views.xml
<record id="model_sequence_employee" model="ir.sequence">
    <!-- field定義的順序如下: 序列名稱, 模型名稱(models.Model._name),
                             前綴字, 號碼長度, 下一個要出現的號碼 -->
    <field name="name">model sequence</field>
    <field name="code">model.name</field>
    <field name="prefix">NO</field>
    <field name="padding">3</field>
    <field name="number_next_actual">1</field>
</record>

Source:
公司的學長,
https://stackoverflow.com/questions/46435870/create-a-sequence-number-odoo-10







留言