2017-04-24 53 views
2

在V10中,如何控制自動序列號的生成?例如,如果我們採用員工標識。當我們創建員工ID時,會生成一個類似EMP-0001的序列。假設我們沒有保存就丟棄它。下次當我們創建一個新的員工ID時,我們得到的順序是EMP-0002。如何防止這一點?請給出答案在odoo 10Odoo python編程語言

+3

您的標題不能反映您的問題。請[編輯]並使其更具描述性。 – Chris

回答

0

你不應該採取默認參數順序其他明智的系統將採取順序,當你點擊創建按鈕。

您應該在create方法中編寫序列邏輯。

例:

@api.model 
def create(self, vals): 
    if vals.get('name', 'New') == 'New': 
     vals['name'] = self.env['ir.sequence'].next_by_code('sale.order') or 'New' 
    return super(sale_order,self).create(vals) 

在上面的例子中系統會讀取序列,當你出售它。

您可以在銷售訂單基本模塊中找到相同的參考。

這可能對你有幫助。

+0

此方法返回錯誤。創建方法只需要兩個參數即可在字段中調用方法。 – BHANUPRATAPSINGH

+0

你能在這裏寫你的代碼嗎? –

+0

@ api.model def create(self,vals): if vals.get('barcode','New')=='New': vals ['barcode'] = self.env ['ir.sequence '] .next_by_code('emp.code')或'New' return super(HrEmployee,self).create(vals) – BHANUPRATAPSINGH

0

首先,您必須爲員工ID插入一個字段,如下所示!

name = fields.Char(string="Employee ID", Index= True, default=lambda self:('New'), readonly=True) 

之後,你必須創建一個名爲ir_sequence.xml在意見文件folder.Write代碼像下面。

<odoo> 
    <data> 
    <record id="seq_bi_ticket" model="ir.sequence"> 
      <field name="name"> [NAME] </field> 
      <field name="code">[class_name]</field> 
      <field name="prefix"> EMP </field> 
      <field name="padding"> 5 </field> 
      <!-- The length of the number you need is 5 --> 
      <field name="company_id" eval="False"/> 
     </record> 
    </data> 
</odoo> 

也有與那場,我說above.The功能代碼是在這裏沿下方寫主類的內部功能:

@api.model 
    def create(self, vals): 
     if vals.get('name', _('New')) == _('New'): 
      if 'company_id' in vals: 
       vals['name'] = self.env['ir.sequence'].with_context(force_company=vals['company_id']).next_by_code('[CLASS_NAME]') or _('New') 
      else: 
       vals['name'] = self.env['ir.sequence'].next_by_code('[CLASS_NAME]') or _('New')  
     result = super([CLASS_NAME], self).create(vals) 
     return result 

一切都結束了。因此你走!