2016-01-30 30 views
0

我有一個模型,繼承「hr.employee」,我有一個動作,將 只顯示在特殊部門的僱員。強制字段的值,如果從另一個行動創建

我希望在該列表頂部的「創建」按鈕可以讓我 在hr.employee中創建一個記錄,其中department部分字段已設置爲該特殊部門。

當然,標準「hr」模塊 的其他「創建」按鈕不應設置部門的默認值。

這裏的模型:

# -*- coding: utf-8 -*- 
from openerp import models, fields 

class Patient(models.Model): 
    _inherit = 'hr.employee' 

    date_debut_contrat = fields.Date('Début Contrat de Prise en Charge') 
    date_fin_contrat = fields.Date('Fin Contrat de Prise en Charge') 

而這裏的行動:

<record id="action_liste_patients" model="ir.actions.act_window"> 
    <field name="name">Patients</field> 
    <field name="res_model">hr.employee</field> 
    <field name="view_mode">kanban,tree,form</field> 
    <field name="domain">[('department_id.is_patients', '=', 'true')]</field> 
</record> 

我是否有一種方法來告訴Odoo從這一行動中,部門標識字段應該有一個默認值,無需改變標準行爲的行爲?

非常感謝大家。

馬克

回答

2

您可以使用

<field name="context">{'department_id': 'special department'}</field>

現在同時創造病人,在創建(),您可以獲取從上下文值和相應的行動。

+0

謝謝你,你讓我在正確的軌道上:-)有一招雖然,因爲我沒有」不知道部門ID,必須搜索它。所以我找到了一個解決方案,我會在下面回答。 –

0

基於憫的評論,這裏是我申請完整的解決方案:

1)添加上下文的行動。上下文將具有名爲 「create_as_patient」的值,該值爲True或False。

<record id="action_liste_patients" model="ir.actions.act_window"> 
    <field name="name">Patients</field> 
    <field name="res_model">hr.employee</field> 
    <field name="view_mode">kanban,tree,form</field> 
    <field name="domain">[('department_id.is_patients', '=', 'true')]</field> 
    <field name="context">{'create_as_patient': True}</field> 
</record> 

2)在我的模型的建立()方法,我取從 方面的價值,如果它的存在。然後,我在「hr.department」模型 中搜索標記爲患者默認部門的部門。 然後,如果找到了默認部門,我將新記錄的 department_id設置爲它。

# -*- coding: utf-8 -*- 
from openerp import models, fields, api 

class Patient(models.Model): 
    _inherit = 'hr.employee' 

    date_debut_contrat = fields.Date('Début Contrat de Prise en Charge') 
    date_fin_contrat = fields.Date('Fin Contrat de Prise en Charge') 

    @api.model 
    def create(self, vals): 
     if 'create_as_patient' in self.env.context: 
      if self.env.context['create_as_patient']: 
       departmentId = self.env['hr.department'].search([('is_patients', '=', True)], limit=1).id 
       if departmentId is not None: 
        vals['department_id'] = departmentId 

     record = super(Patient, self).create(vals) 
     return record 

這符合我的要求:

  • 從員工的行動,這不具有「create_as_patient」在其上下文 標誌,新創建的員工不會有 默認的部門設置。
  • 另一方面,如果我從 我的患者行爲創建記錄,該標誌將出現,並且默認 部門將被添加到新記錄中。

許多再次感謝賈敏指着我正確的方向:-)

馬克

相關問題