2016-10-04 8 views
-1

My classには、出席があるときに2つの選択フィールド出席と離脱タイプがあります。出席タイプが不在のときに離脱タイプが読み取り専用である必要があります。必要と私は病気の休暇として選択していると私は私が同じレコードを編集し、私は出席が現在のようにマーキングしているときに記録を保存する離脱型のフィールド値はそれらを偽る必要があります。私は偽だけでフィールドを与えられたが、レコードはデータベースに保存されて...いずれかの助けこのodooでonchangeでフィールド値をfalseにする方法

は、これは私があなたのポイントを合算しています

@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のためのオプションであるかの選択フィールドまたはブール値であり、 sting = '、' Earned Leave ') (' paternity_leave '、' Paternity Leave ')、 (' loss_of_pay '、' Loss of Pay ' – Muniswaran

答えて

0

のonchange関数であることができます。

  1. 出席依頼=存在してから、タイプを[読み取り専用]にします。
  2. 出席=偽、次に離脱=必須。
  3. Attendance = False、Leave Type = Sick Leave(DBに保存されている値)のレコードを保存しています。
  4. このレコードを編集しようとしています。出席を変更する= True、今すぐ離脱タイプ=読み取り専用。したがって、このフィールドはonchangeメソッドを使用して更新することはできません。

このフィールド値を更新する場合は、writeメソッドで行う必要があります。

@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

私はこの方法を試みましたが、それは私に役立ちますが、私が直面している問題の1つは、休暇が間違っているということです。すべてのレコードが、私は出席の特定のレコードを偽りたい...あなたのために助けてくださいsの状況... api.multi @ – Muniswaran

+0

はデフ書き込みおかげで(自己、ヴァルス): プリント自己、 "自己" 印刷ヴァルス、 "ヴァルス" RES =スーパー(ManualAttendanceLine、自己).WRITE(ヴァルス) 場合 self.leave_type = False #if vals.get( 'attendance')とvals.get( '出席')とvals.get( '出席')!= ( '出席')!= '半日': #self.leave_type = False vals.get( 'attendance')とvals.get( 'attendance')!= 'comp_off': self.compensation_date = False リターンレス – Muniswaran

関連する問題