This question has been flagged
2341 Views

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'),

}

Avatar
Discard