[IMP] cancelation rule py guideline

This commit is contained in:
Dario Lodeiros
2019-09-24 17:15:40 +02:00
parent 60b789bef8
commit 3621e37dbb
4 changed files with 32 additions and 22 deletions

View File

@@ -10,7 +10,8 @@ class HotelRoomAmenityType(models.Model):
# Fields declaration # Fields declaration
name = fields.Char('Amenity Type Name', translate=True, required=True) name = fields.Char('Amenity Type Name', translate=True, required=True)
hotel_ids = fields.Many2many('hotel.property', string='Hotels', required=False, ondelete='restrict') hotel_ids = fields.Many2many(
'hotel.property', string='Hotels', required=False, ondelete='restrict')
room_amenity_ids = fields.One2many('hotel.amenity', room_amenity_ids = fields.One2many('hotel.amenity',
'room_amenity_type_id', 'room_amenity_type_id',
'Amenities in this category') 'Amenities in this category')

View File

@@ -1,4 +1,4 @@
# Copyright 2017 Dario Lodeiros # Copyright 2017 Dario
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models, _ from odoo import api, fields, models, _
from odoo.addons import decimal_precision as dp from odoo.addons import decimal_precision as dp
@@ -79,7 +79,8 @@ class HotelBoardServiceRoomType(models.Model):
board_pricelist = self.env['hotel.board.service.room.type'].search([ board_pricelist = self.env['hotel.board.service.room.type'].search([
('pricelist_id', '=', record.pricelist_id.id), ('pricelist_id', '=', record.pricelist_id.id),
('hotel_room_type_id', '=', record.hotel_room_type_id.id), ('hotel_room_type_id', '=', record.hotel_room_type_id.id),
('hotel_board_service_id', '=', record.hotel_board_service_id.id), ('hotel_board_service_id', '=',
record.hotel_board_service_id.id),
('id', '!=', record.id) ('id', '!=', record.id)
]) ])
if board_pricelist: if board_pricelist:
@@ -89,7 +90,8 @@ class HotelBoardServiceRoomType(models.Model):
board_pricelist = self.env['hotel.board.service.room.type'].search([ board_pricelist = self.env['hotel.board.service.room.type'].search([
('pricelist_id', '=', False), ('pricelist_id', '=', False),
('hotel_room_type_id', '=', record.hotel_room_type_id.id), ('hotel_room_type_id', '=', record.hotel_room_type_id.id),
('hotel_board_service_id', '=', record.hotel_board_service_id.id), ('hotel_board_service_id', '=',
record.hotel_board_service_id.id),
('id', '!=', record.id) ('id', '!=', record.id)
]) ])
if board_pricelist: if board_pricelist:
@@ -124,18 +126,18 @@ class HotelBoardServiceRoomType(models.Model):
def create(self, vals): def create(self, vals):
if 'hotel_board_service_id' in vals: if 'hotel_board_service_id' in vals:
vals.update( vals.update(
self.prepare_board_service_room_lines( self.prepare_board_service_room_lines(
vals['hotel_board_service_id']) vals['hotel_board_service_id'])
) )
return super(HotelBoardServiceRoomType, self).create(vals) return super(HotelBoardServiceRoomType, self).create(vals)
@api.multi @api.multi
def write(self, vals): def write(self, vals):
if 'hotel_board_service_id' in vals: if 'hotel_board_service_id' in vals:
vals.update( vals.update(
self.prepare_board_service_room_lines( self.prepare_board_service_room_lines(
vals['hotel_board_service_id']) vals['hotel_board_service_id'])
) )
return super(HotelBoardServiceRoomType, self).write(vals) return super(HotelBoardServiceRoomType, self).write(vals)
# Business methods # Business methods
@@ -148,8 +150,8 @@ class HotelBoardServiceRoomType(models.Model):
board_service = self.env['hotel.board.service'].browse( board_service = self.env['hotel.board.service'].browse(
board_service_id) board_service_id)
for line in board_service.board_service_line_ids: for line in board_service.board_service_line_ids:
cmds.append((0, False, { cmds.append((0, False, {
'product_id': line.product_id.id, 'product_id': line.product_id.id,
'amount': line.amount 'amount': line.amount
})) }))
return {'board_service_line_ids': cmds} return {'board_service_line_ids': cmds}

View File

@@ -3,6 +3,7 @@
from odoo import fields, models from odoo import fields, models
from odoo.addons import decimal_precision as dp from odoo.addons import decimal_precision as dp
class HotelBoardServiceRoomTypeLine(models.Model): class HotelBoardServiceRoomTypeLine(models.Model):
_name = 'hotel.board.service.room.type.line' _name = 'hotel.board.service.room.type.line'
_description = 'Services on Board Service included in Room' _description = 'Services on Board Service included in Room'
@@ -18,5 +19,6 @@ class HotelBoardServiceRoomTypeLine(models.Model):
'Product', 'Product',
required=True, required=True,
readonly=True) readonly=True)
#TODO def default_amount "amount of service" # TODO def default_amount "amount of service"
amount = fields.Float('Amount', digits=dp.get_precision('Product Price'), default=0.0) amount = fields.Float('Amount', digits=dp.get_precision(
'Product Price'), default=0.0)

View File

@@ -9,11 +9,18 @@ class HotelCancelationRule(models.Model):
_name = 'hotel.cancelation.rule' _name = 'hotel.cancelation.rule'
_description = 'Cancelation Rules' _description = 'Cancelation Rules'
# Fields declaration
name = fields.Char('Amenity Name', translate=True, required=True) name = fields.Char('Amenity Name', translate=True, required=True)
pricelist_ids = fields.One2many(
'product.pricelist',
'cancelation_rule_id',
'Pricelist that use this rule')
hotel_ids = fields.Many2many(
'hotel.property',
string='Hotels',
required=False,
ondelete='restrict')
active = fields.Boolean('Active', default=True) active = fields.Boolean('Active', default=True)
pricelist_ids = fields.One2many('product.pricelist',
'cancelation_rule_id',
'Pricelist that use this rule')
days_intime = fields.Integer( days_intime = fields.Integer(
'Days Late', 'Days Late',
help='Maximum number of days for free cancellation before Checkin') help='Maximum number of days for free cancellation before Checkin')
@@ -29,7 +36,5 @@ class HotelCancelationRule(models.Model):
('all', 'All Days'), ('all', 'All Days'),
('days', 'Specify days')], 'No Show apply on', default='all') ('days', 'Specify days')], 'No Show apply on', default='all')
days_noshow = fields.Integer('NoShow first days', default="2") days_noshow = fields.Integer('NoShow first days', default="2")
hotel_ids = fields.Many2many('hotel.property', string='Hotels', required=False,
ondelete='restrict')
#TODO: Constrain coherence hotel_ids pricelist and cancelation_rules # TODO: Constrain coherence hotel_ids pricelist and cancelation_rules