From f598f65f45871162252a7f79472220e262526c1d Mon Sep 17 00:00:00 2001 From: Dario Lodeiros Date: Mon, 17 Dec 2018 11:18:01 +0100 Subject: [PATCH] [ADD] Price type on board service template --- hotel/models/hotel_board_service.py | 3 ++ hotel/models/hotel_board_service_room_type.py | 1 + hotel/models/hotel_service.py | 45 ++++++++++--------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/hotel/models/hotel_board_service.py b/hotel/models/hotel_board_service.py index 0a28fa80f..e9fa26b15 100644 --- a/hotel/models/hotel_board_service.py +++ b/hotel/models/hotel_board_service.py @@ -11,6 +11,9 @@ class HotelBoardService(models.Model): name = fields.Char('Board Name', size=64, required=True, index=True) board_service_line_ids = fields.One2many('hotel.board.service.line', 'hotel_board_service_id') + price_type = fields.Selection([ + ('fixed','Fixed'), + ('percent','Percent')], string='Type', default='fixed', required=True) hotel_board_service_room_type_ids = fields.One2many( 'hotel.board.service.room.type', 'hotel_board_service_id') amount = fields.Float('Amount', diff --git a/hotel/models/hotel_board_service_room_type.py b/hotel/models/hotel_board_service_room_type.py index ba10dd8a7..ae09426dc 100644 --- a/hotel/models/hotel_board_service_room_type.py +++ b/hotel/models/hotel_board_service_room_type.py @@ -65,6 +65,7 @@ class HotelBoardServiceRoomType(models.Model): action = self.env.ref('hotel.action_hotel_board_service_room_type_view').read()[0] action['views'] = [(self.env.ref('hotel.hotel_board_service_room_type_form').id, 'form')] action['res_id'] = self.id + action['target'] = 'new' return action @api.depends('board_service_line_ids.amount') diff --git a/hotel/models/hotel_service.py b/hotel/models/hotel_service.py index 8e2cf25e1..9190c6a7e 100644 --- a/hotel/models/hotel_service.py +++ b/hotel/models/hotel_service.py @@ -205,29 +205,30 @@ class HotelService(models.Model): self.ensure_one() folio = self.folio_id or self.env.context.get('default_folio_id') reservation = self.ser_room_line or self.env.context.get('ser_room_line') - partner = folio.partner_id if folio else reservation.partner_id - pricelist = folio.pricelist_id if folio else reservation.pricelist_id - if reservation and self.is_board_service: - board_room_type = reservation.board_service_room_id - if board_room_type.price_type == 'fixed': - return self.env['hotel.board.service.room.type.line'].search([ - ('hotel_board_service_room_type_id', '=', board_room_type.id), - ('product_id','=',self.product_id.id)]).amount + if folio or reservation: + partner = folio.partner_id if folio else reservation.partner_id + pricelist = folio.pricelist_id if folio else reservation.pricelist_id + if reservation and self.is_board_service: + board_room_type = reservation.board_service_room_id + if board_room_type.price_type == 'fixed': + return self.env['hotel.board.service.room.type.line'].search([ + ('hotel_board_service_room_type_id', '=', board_room_type.id), + ('product_id','=',self.product_id.id)]).amount + else: + return (reservation.price_total * self.env['hotel.board.service.room.type.line'].search([ + ('hotel_board_service_room_type_id', '=', board_room_type.id), + ('product_id','=',self.product_id.id)]).amount) / 100 else: - return (reservation.price_total * self.env['hotel.board.service.room.type.line'].search([ - ('hotel_board_service_room_type_id', '=', board_room_type.id), - ('product_id','=',self.product_id.id)]).amount) / 100 - else: - product = self.product_id.with_context( - lang=partner.lang, - partner=partner.id, - quantity=self.product_qty, - date=folio.date_order or fields.Date.today(), - pricelist=pricelist.id, - uom=self.product_id.uom_id.id, - fiscal_position=False - ) - return self.env['account.tax']._fix_tax_included_price_company(self._get_display_price(product), product.taxes_id, self.tax_ids, folio.company_id) + product = self.product_id.with_context( + lang=partner.lang, + partner=partner.id, + quantity=self.product_qty, + date=folio.date_order or fields.Date.today(), + pricelist=pricelist.id, + uom=self.product_id.uom_id.id, + fiscal_position=False + ) + return self.env['account.tax']._fix_tax_included_price_company(self._get_display_price(product), product.taxes_id, self.tax_ids, folio.company_id)