From 8c1863e1965f2268d26677614fa2b7c3946cffee Mon Sep 17 00:00:00 2001 From: Dario Lodeiros Date: Sun, 16 Dec 2018 13:36:21 +0100 Subject: [PATCH] [ADD] Base template produtc/prices to Board Services --- hotel/__manifest__.py | 2 +- hotel/models/__init__.py | 1 + hotel/models/hotel_board_service.py | 22 ++++++++++---- hotel/models/hotel_board_service_line.py | 29 +++++++++++++++++++ hotel/models/hotel_board_service_room_type.py | 7 ++--- hotel/security/ir.model.access.csv | 1 + ...> hotel_board_service_room_type_views.xml} | 0 hotel/views/hotel_board_service_views.xml | 24 +++++++-------- 8 files changed, 63 insertions(+), 23 deletions(-) create mode 100644 hotel/models/hotel_board_service_line.py rename hotel/views/{hotel_board_service_room_type.xml => hotel_board_service_room_type_views.xml} (100%) diff --git a/hotel/__manifest__.py b/hotel/__manifest__.py index 13fb04ca2..ba6a25e45 100644 --- a/hotel/__manifest__.py +++ b/hotel/__manifest__.py @@ -50,7 +50,7 @@ 'views/hotel_board_service_views.xml', 'views/hotel_checkin_partner_views.xml', 'views/hotel_room_type_availability_views.xml', - 'views/hotel_board_service_room_type.xml', + 'views/hotel_board_service_room_type_views.xml', 'data/cron_jobs.xml', 'data/records.xml', 'data/email_template_cancel.xml', diff --git a/hotel/models/__init__.py b/hotel/models/__init__.py index 3c9619694..c68f79c5b 100644 --- a/hotel/models/__init__.py +++ b/hotel/models/__init__.py @@ -30,3 +30,4 @@ from . import hotel_room_closure_reason from . import hotel_service_line from . import hotel_board_service from . import hotel_board_service_room_type_line +from . import hotel_board_service_line diff --git a/hotel/models/hotel_board_service.py b/hotel/models/hotel_board_service.py index 4c2a94447..0a28fa80f 100644 --- a/hotel/models/hotel_board_service.py +++ b/hotel/models/hotel_board_service.py @@ -1,6 +1,7 @@ # Copyright 2017 Dario Lodeiros # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import models, fields +from odoo import api, models, fields +from odoo.addons import decimal_precision as dp class HotelBoardService(models.Model): @@ -8,11 +9,20 @@ class HotelBoardService(models.Model): _description = "Board Services" name = fields.Char('Board Name', size=64, required=True, index=True) - service_ids = fields.Many2many(comodel_name='product.product', - relation='hotel_board_services_reservation', - column1='board_id', - column2='service_id') - sequence = fields.Integer('Sequence') + board_service_line_ids = fields.One2many('hotel.board.service.line', + 'hotel_board_service_id') hotel_board_service_room_type_ids = fields.One2many( 'hotel.board.service.room.type', 'hotel_board_service_id') + amount = fields.Float('Amount', + digits=dp.get_precision('Product Price'), + compute='_compute_board_amount', + store=True) + + @api.depends('board_service_line_ids.amount') + def _compute_board_amount(self): + for record in self: + total = 0 + for service in record.board_service_line_ids: + total += service.amount + record.update({'amount': total}) diff --git a/hotel/models/hotel_board_service_line.py b/hotel/models/hotel_board_service_line.py new file mode 100644 index 000000000..8475f57cc --- /dev/null +++ b/hotel/models/hotel_board_service_line.py @@ -0,0 +1,29 @@ +# Copyright 2017 Dario Lodeiros +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import api, fields, models, _ +from odoo.addons import decimal_precision as dp +from odoo.exceptions import UserError + + +class HotelBoardServiceLine(models.Model): + _name = 'hotel.board.service.line' + _description = 'Services on Board Service included' + + def _get_default_price(self): + if self.product_id: + return self.product_id.list_price + + hotel_board_service_id = fields.Many2one( + 'hotel.board.service', 'Board Service', ondelete='cascade', required=True) + product_id = fields.Many2one( + 'product.product', 'Product', required=True) + amount = fields.Float('Amount', + digits=dp.get_precision('Product Price'), default=_get_default_price) + + @api.onchange('product_id') + def onchange_product_id(self): + if self.product_id: + self.update({'amount': self.product_id.list_price}) + + + diff --git a/hotel/models/hotel_board_service_room_type.py b/hotel/models/hotel_board_service_room_type.py index bc80c8318..ba10dd8a7 100644 --- a/hotel/models/hotel_board_service_room_type.py +++ b/hotel/models/hotel_board_service_room_type.py @@ -82,11 +82,10 @@ class HotelBoardServiceRoomType(models.Model): """ cmds=[(5,0,0)] board_service = self.env['hotel.board.service'].browse(board_service_id) - today = fields.Date.today() - for product in board_service.service_ids: + for line in board_service.board_service_line_ids: cmds.append((0, False, { - 'product_id': product.id, - 'amount': product.list_price #TODO: default amomunt?¿ + 'product_id': line.product_id.id, + 'amount': line.amount })) return {'board_service_line_ids': cmds} diff --git a/hotel/security/ir.model.access.csv b/hotel/security/ir.model.access.csv index 582f9f9d9..3d41900d3 100644 --- a/hotel/security/ir.model.access.csv +++ b/hotel/security/ir.model.access.csv @@ -18,3 +18,4 @@ access_hotel_folio,access_hotel_folio,model_hotel_folio,base.group_user,1,0,0,0 access_hotel_room_type,access_hotel_room_type,model_hotel_room_type,base.group_user,1,0,0,0 access_hotel_board_service_room_type,access_hotel_board_service_room_type,model_hotel_board_service_room_type,base.group_user,1,0,0,0 access_hotel_board_service_room_type_line,access_hotel_board_service_room_type_line,model_hotel_board_service_room_type_line,base.group_user,1,0,0,0 +access_hotel_board_service_line,access_hotel_board_service_line,model_hotel_board_service_line,base.group_user,1,0,0,0 diff --git a/hotel/views/hotel_board_service_room_type.xml b/hotel/views/hotel_board_service_room_type_views.xml similarity index 100% rename from hotel/views/hotel_board_service_room_type.xml rename to hotel/views/hotel_board_service_room_type_views.xml diff --git a/hotel/views/hotel_board_service_views.xml b/hotel/views/hotel_board_service_views.xml index 0dbc15fba..35faeee72 100644 --- a/hotel/views/hotel_board_service_views.xml +++ b/hotel/views/hotel_board_service_views.xml @@ -3,20 +3,20 @@ - + hotel.board.service.form hotel.board.service -
- - - - - - - - - + + + + + + + + + +
@@ -28,7 +28,7 @@ - +