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:
@@ -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}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user