2015-11-02 109 views
-4

大家好我陷入了一個問題,即在預訂部分,如果房間已經預訂,它應該創建一個異常顯示房間已經預訂,也可以在退房日期後在先進的預訂同一個房間是我使用的代碼:酒店管理

@api.one 
@api.onchange('time_date') 
def onchange_same(self): 
    x=self.env['hotel.management'].search([('room','=','self.room.room')]) 
# check_out = datetime.datetime.strptime(self.env['hotel.management'].search([('room','=','self.room.room')]).check_out, "%Y-%m-%d").date() 
    time_date = datetime.datetime.strptime(self.time_date, "%Y-%m-%d").date() 
    check_out = datetime.datetime.strptime(self.check_out, "%Y-%m-%d").date() 
    if x: 
     if time_date>=x.check_out: 
      pass 
     else: 
      print 'working till now--------' 
      raise except_orm('Payment Error!',"This room is booked please select another one") 

但是它顯示:

Type Error: must be string, not bool

+0

不使用api.one api.onchange就足夠了。 ([''room','=','self.room.room')]) 使用像:([('room','=',self.room.room)]) – user00000341

+0

由於錯誤,我添加了引號,謝謝指出它,但它不會幫助我這個謝謝 –

回答

1

當過我們是從數據庫中獲取任何價值,我們首先需要檢查這個條件=>氣象領域已儲值或不。

第二件事(在你的情況下)search()方法有問題。

搜索()方法一般語法:

self.env['model.name'].search(['field_name', 'operator', 'value']) 

與此代碼嘗試:

@api.one 
@api.onchange('time_date') 
def onchange_same(self): 

    x=self.env['hotel.management'].search([('room','=',self.room.room)]) 
    if self.time_date or self.check_out: 
     time_date = datetime.datetime.strptime(self.time_date, "%Y-%m-%d").date() 
     check_out = datetime.datetime.strptime(self.check_out, "%Y-%m-%d").date() 
     if x and x.check_out: 
      if time_date>=x.check_out: 
       pass 
      else: 
       print 'working till now--------' 
       raise except_orm('Payment Error!',"This room is booked please select another one") 
    else: 
     print "\n=====date not define" 

更多關於Odoo Search method

0

感謝@Odedra指導我,但我用以下解決碼。

@api.onchange('time_date') 
def onchange_same(self): 
    x=self.env['hotel.management'].search([('room','=',self.room.room)]) 
    if x: 
     if self.time_date>=x.check_out: 
      pass 
     else: 
      print 'working till now--------' 
      raise except_orm('Payment Error!',"This room is booked please select another one")