2016-10-04 82 views
-1

在我的班級中,當考勤出席時,有兩個選擇字段出席和離開類型,只有當我的出勤類型爲空時,離開類型才應爲只讀模式,離開類型選擇字段處於要求和我選擇病假,我保存記錄,當我編輯相同的記錄,我出席標記爲目前假期類型字段值應該錯誤他們。我給出的場只假,但記錄被保存在數據庫中...任何一個可以幫助這個如何在odoo中通過onchange虛假字段值

這是平變化功能

@api.onchange('attendance', 'employee_id', 'attendance_date') 
def onchange_attendance(self): 
    if self.attendance: 
     if self.attendance == 'present': 

      time_in = time_out = False 

      self.present = True 
      self.absent = False 
      self.half_day = False 
      self.late = False 
      self.comp_off = False 
      self.leave_type = False 
      self.holiday = False 
      self.weekly_off = False 
      self.compensation_date = False 
     if self.attendance == 'absent': 
      self.present = False 
      self.absent = True 
      self.half_day = False 
      self.late = False 
      self.comp_off = False 
      self.holiday = False 
      self.weekly_off = False 
      self.compensation_date = False 
     if self.attendance == 'half_day': 
      self.present = False 
      self.absent = False 
      self.half_day = True 
      self.late = False 
      self.comp_off = False 
      self.holiday = False 
      self.weekly_off = False 
      self.compensation_date = False 
     if self.attendance == 'comp_off': 
      self.present = False 
      self.absent = False 
      self.half_day = False 
      self.late = False 
      self.comp_off = True 
      self.leave_type = False 
      self.holiday = False 
      self.weekly_off = False 
     if self.attendance == 'holiday': 
      self.present = False 
      self.absent = False 
      self.half_day = False 
      self.late = False 
      self.comp_off = False 
      self.leave_type = False 
      self.holiday = True 
      self.weekly_off = False 
      self.compensation_date = False 
     if self.attendance == 'weekly_off': 
      self.present = False 
      self.absent = False 
      self.half_day = False 
      self.late = False 
      self.comp_off = False 
      self.leave_type = False 
      self.holiday = False 
      self.weekly_off = True 
      self.compensation_date = False 
+0

leave_type是選擇場或布爾值,什麼是leave_type –

+0

leave_type = fields.Selection([( 'casual_leave', '事假'), ( 'sick_leave', '病假'), ('earned_leave選項'','贏得假'), ('maternity_leave','產假'), ('paternity_leave','陪產假'), ('loss_of_pay','Loss of Pay')], sting ='離開類型',只讀=真,狀態= {'草案':[('readonly',False)]}) – Muniswaran

回答

0

我總結你的觀點。

  1. 出席=當前,離開類型=只讀。
  2. 出席=假然後離開類型=必需。
  3. 您正在保存一個記錄,其中考勤= False和離開類型=病假(這是保存在數據庫中的值)。
  4. 現在您正在嘗試編輯此記錄。改變出席=真,現在離開類型=只讀。所以這個字段不能用onchange方法更新。

如果要更新此字段值,則必須在寫入方法中執行此操作。

@api.multi 
def write(self, vals): 
    res = super(*yourmodel*, self).write(vals) 
    if vals.get('attendance') and vals.get('attendance') == 'present': 
     self.leave_type = False 
    return res 

我希望這會有所幫助。

+0

我試過這種方法,它對我有幫助,但我面臨的一個問題是,所有的記錄,但我想虛假出席的特殊記錄...請幫助的處境...感謝 – Muniswaran

+0

@ api.multi 高清寫(個體經營,丘壑): 打印自我, 「自我」 打印丘壑, 「丘壑」 解析度=超(ManualAttendanceLine,個體經營).WRITE(瓦爾斯) 如果vals.get('attendance')和vals.get('attendance')!=('absent','half_day'): self.leave_type = False #if vals.get('attendance')and vals.get ('attendance')!='half_day': #self.leave_type = False if vals.get('attendance')and vals.get('attendance')!='comp_off': self.compensation_date = False 返回水庫 – Muniswaran

相關問題