In odoo 8.0, I am working on Hotel Management module but while adding calendar view to display reservations why I have this kind of error like,
IntegrityError: insert or update on table "hotel_restaurant_order" violates foreign key constraint "hotel_restaurant_order_waiter_name_fkey" DETAIL: Key (waiter_name)=(10) is not present in table "res_partner".
Can anyone suggest me the solution?
Here is the code,
class hotel_restaurant_order(osv.Model):
def _sub_total(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for sale in self.browse(cr, uid, ids, context=context):
res[sale.id] = sum(line.price_subtotal for line in sale.order_list)
return res
def _total(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for line in self.browse(cr, uid, ids, context=context):
res[line.id] = line.amount_subtotal + (line.amount_subtotal * line.tax) / 100
return res
def generate_kot(self, cr, uid, ids, part):
order_tickets_obj = self.pool.get('hotel.restaurant.kitchen.order.tickets')
restaurant_order_list_obj = self.pool.get('hotel.restaurant.order.list')
for order in self.browse(cr, uid, ids):
table_ids = [x.id for x in order.table_no]
kot_data = order_tickets_obj.create(cr, uid, {
'orderno':order.order_no,
'kot_date':order.o_date,
'room_no':order.room_no.name,
'w_name':order.waiter_name.name,
'tableno':[(6, 0, table_ids)],
})
for order_line in order.order_list:
o_line = {
'kot_order_list':kot_data,
'name':order_line.name.id,
'item_qty':order_line.item_qty,
}
restaurant_order_list_obj.create(cr, uid, o_line)
return True
_name = "hotel.restaurant.order"
_description = "Includes Hotel Restaurant Order"
_columns = {
'order_no':fields.char('Order Number', size=64, required=True),
'o_date':fields.datetime('Date', required=True),
'room_no':fields.many2one('hotel.room', 'Room No'),
'waiter_name':fields.many2one('res.partner', 'Waiter Name'),
'table_no':fields.many2many('hotel.restaurant.tables', 'temp_table2', 'table_no', 'name', 'Table Number'),
'order_list':fields.one2many('hotel.restaurant.order.list', 'o_list', 'Order List'),
'tax': fields.float('Tax (%) '),
'amount_subtotal': fields.function(_sub_total, method=True, string='Subtotal'),
'amount_total':fields.function(_total, method=True, string='Total'),
}
_defaults = {
'order_no': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'hotel.restaurant.order'),
}