mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD] Base template produtc/prices to Board Services
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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})
|
||||
|
||||
|
||||
29
hotel/models/hotel_board_service_line.py
Normal file
29
hotel/models/hotel_board_service_line.py
Normal file
@@ -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})
|
||||
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
@@ -3,20 +3,20 @@
|
||||
|
||||
<!--==================================================== Board Services ==================================================== -->
|
||||
<!-- Form view of hotel board service -->
|
||||
<record model="ir.ui.view" id="hotel_board_service_view_form">
|
||||
<record model="ir.ui.view" id="hotel_board_service_form">
|
||||
<field name="name">hotel.board.service.form</field>
|
||||
<field name="model">hotel.board.service</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Hotel Board Service">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" select="1" />
|
||||
<field name="sequence" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="service_ids" />
|
||||
</group>
|
||||
</sheet>
|
||||
<form string="Board Service Line">
|
||||
<group>
|
||||
<field name="amount"/>
|
||||
<field name="board_service_line_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="product_id"/>
|
||||
<field name="amount" />
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -28,7 +28,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Hotel Board Services">
|
||||
<field name="name" />
|
||||
<field name="sequence" />
|
||||
<field name="amount" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
Reference in New Issue
Block a user