[RFC] Renaming pms_wizard_folio to pms_booking_engine

This commit is contained in:
Dario Lodeiros
2021-06-19 13:38:09 +02:00
parent 24aa7b2d94
commit ffb0389b83
12 changed files with 216 additions and 220 deletions

View File

@@ -41,7 +41,7 @@
"data/menus.xml",
"wizards/wizard_payment_folio.xml",
"wizards/folio_make_invoice_advance_views.xml",
"wizards/wizard_folio.xml",
"wizards/pms_booking_engine_views.xml",
"wizards/wizard_folio_changes.xml",
"views/pms_amenity_views.xml",
"views/pms_amenity_type_views.xml",

View File

@@ -987,7 +987,7 @@ class PmsFolio(models.Model):
def _check_required_partner_name(self):
for record in self:
if not record.partner_name:
raise models.ValidationError(_("You musyt assign a customer name"))
raise models.ValidationError(_("You must assign a customer name"))
@api.model
def create(self, vals):

View File

@@ -1518,7 +1518,7 @@ class PmsReservation(models.Model):
folio = self.env["pms.folio"].browse(vals["folio_id"])
default_vals = {"pms_property_id": folio.pms_property_id.id}
if folio.partner_id:
default_vals["partner_id"] = folio.partner_id
default_vals["partner_id"] = folio.partner_id.id
elif folio.partner_name:
default_vals["partner_name"] = folio.partner_name
default_vals["partner_mobile"] = folio.mobile

View File

@@ -53,7 +53,7 @@ user_access_pms_reservation_split_join_swap_wizard,user_access_pms_reservation_s
user_access_pms_wizard_reservation_lines_split,user_access_pms_wizard_reservation_lines_split,model_pms_wizard_reservation_lines_split,pms.group_pms_user,1,1,1,1
user_access_pms_massive_changes_wizard,user_access_pms_massive_changes_wizard,model_pms_massive_changes_wizard,pms.group_pms_user,1,1,1,1
user_access_pms_advanced_filters_wizard,user_access_pms_advanced_filters_wizard,model_pms_advanced_filters_wizard,pms.group_pms_user,1,1,1,1
user_access_pms_folio_wizard,user_access_pms_folio_wizard,model_pms_folio_wizard,pms.group_pms_user,1,1,1,1
user_access_pms_booking_engine,user_access_pms_booking_engine,model_pms_booking_engine,pms.group_pms_user,1,1,1,1
user_access_pms_folio_availability_wizard,user_access_pms_folio_availability_wizard,model_pms_folio_availability_wizard,pms.group_pms_user,1,1,1,1
user_access_pms_num_rooms_selection,user_access_pms_num_rooms_selection,model_pms_num_rooms_selection,pms.group_pms_user,1,1,1,1
user_access_pms_folio_sale_line,user_access_pms_folio_sale_line,model_folio_sale_line,pms.group_pms_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
53 user_access_pms_wizard_reservation_lines_split user_access_pms_wizard_reservation_lines_split model_pms_wizard_reservation_lines_split pms.group_pms_user 1 1 1 1
54 user_access_pms_massive_changes_wizard user_access_pms_massive_changes_wizard model_pms_massive_changes_wizard pms.group_pms_user 1 1 1 1
55 user_access_pms_advanced_filters_wizard user_access_pms_advanced_filters_wizard model_pms_advanced_filters_wizard pms.group_pms_user 1 1 1 1
56 user_access_pms_folio_wizard user_access_pms_booking_engine user_access_pms_folio_wizard user_access_pms_booking_engine model_pms_folio_wizard model_pms_booking_engine pms.group_pms_user 1 1 1 1
57 user_access_pms_folio_availability_wizard user_access_pms_folio_availability_wizard model_pms_folio_availability_wizard pms.group_pms_user 1 1 1 1
58 user_access_pms_num_rooms_selection user_access_pms_num_rooms_selection model_pms_num_rooms_selection pms.group_pms_user 1 1 1 1
59 user_access_pms_folio_sale_line user_access_pms_folio_sale_line model_folio_sale_line pms.group_pms_user 1 0 0 0

View File

@@ -11,7 +11,7 @@ odoo.define("booking.engine.tree", function (require) {
self.do_action({
name: "Booking Engine",
type: "ir.actions.act_window",
res_model: "pms.folio.wizard",
res_model: "pms.booking.engine",
target: "new",
views: [[false, "form"]],
context: {is_modal: true},

View File

@@ -29,7 +29,7 @@ from . import test_pms_room_type
from . import test_pms_room_type_class
from . import test_pms_board_service
from . import test_pms_wizard_massive_changes
from . import test_pms_wizard_folio
from . import test_pms_booking_engine
from . import test_pms_res_users
from . import test_pms_amenity
from . import test_pms_room

View File

@@ -202,7 +202,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
]
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -213,7 +213,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
)
# force pricelist load
wizard_folio.flush()
booking_engine.flush()
# availability items belonging to test property
lines_availability_test = self.env["pms.folio.availability.wizard"].search(
@@ -234,11 +234,11 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
for discount in discounts:
with self.subTest(k=discount):
# ACT
wizard_folio.discount = discount["discount"]
booking_engine.discount = discount["discount"]
# ASSERT
self.assertEqual(
wizard_folio.total_price_folio,
booking_engine.total_price_folio,
discount["expected_price"],
"The total price calculation is wrong",
)
@@ -284,7 +284,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
pricelist_item.flush()
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -293,7 +293,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
"pms_property_id": self.test_property.id,
}
)
wizard_folio.flush()
booking_engine.flush()
# availability items belonging to test property
lines_availability_test = self.env["pms.folio.availability.wizard"].search(
@@ -315,7 +315,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
# ASSERT
self.assertEqual(
wizard_folio.total_price_folio,
booking_engine.total_price_folio,
expected_price_total,
"The total price calculation is wrong",
)
@@ -355,7 +355,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
# pricelist_item.flush()
# # create folio wizard with partner id => pricelist & start-end dates
# wizard_folio = self.env["pms.folio.wizard"].create(
# booking_engine = self.env["pms.booking.engine"].create(
# {
# "start_date": checkin,
# "end_date": checkout,
@@ -363,7 +363,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
# "pricelist_id": self.test_pricelist.id,
# }
# )
# wizard_folio.flush()
# booking_engine.flush()
# # availability items belonging to test property
# lines_availability_test = self.env["pms.folio.availability.wizard"].search(
@@ -395,7 +395,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
# # ASSERT
# self.assertEqual(
# wizard_folio.total_price_folio,
# booking_engine.total_price_folio,
# tc["expected_price"],
# "The total price calculation is wrong",
# )
@@ -413,7 +413,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
checkout = fields.date.today() + datetime.timedelta(days=1)
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -422,7 +422,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
"pms_property_id": self.test_property.id,
}
)
wizard_folio.flush()
booking_engine.flush()
# availability items belonging to test property
lines_availability_test = self.env["pms.folio.availability.wizard"].search(
@@ -440,7 +440,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
lines_availability_test[0].num_rooms_selected = value
# ACT
wizard_folio.create_folio()
booking_engine.create_folio()
# ASSERT
folio = self.env["pms.folio"].search_count(
@@ -462,7 +462,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
checkout = fields.date.today() + datetime.timedelta(days=1)
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -471,7 +471,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
"pms_property_id": self.test_property.id,
}
)
wizard_folio.flush()
booking_engine.flush()
# availability items belonging to test property
lines_availability_test = self.env["pms.folio.availability.wizard"].search(
@@ -489,10 +489,10 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
lines_availability_test[0].num_rooms_selected = value
lines_availability_test[0].value_num_rooms_selected = 2
lines_availability_test.flush()
wizard_folio.flush()
booking_engine.flush()
# ACT
wizard_folio.create_folio()
booking_engine.create_folio()
folio = self.env["pms.folio"].search([("partner_id", "=", self.partner_id.id)])
folio.flush()
@@ -513,7 +513,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
checkout = fields.date.today() + datetime.timedelta(days=1)
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -522,7 +522,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
"pms_property_id": self.test_property.id,
}
)
wizard_folio.flush()
booking_engine.flush()
# availability items belonging to test property
lines_availability_test = self.env["pms.folio.availability.wizard"].search(
@@ -541,7 +541,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
lines_availability_test[0].value_num_rooms_selected = 1
# ACT
wizard_folio.create_folio()
booking_engine.create_folio()
vals = {
"partner_id": self.partner_id.id,
"pricelist_id": self.test_pricelist.id,
@@ -570,7 +570,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
checkout = fields.date.today() + datetime.timedelta(days=1)
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -579,7 +579,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
"pms_property_id": self.test_property.id,
}
)
wizard_folio.flush()
booking_engine.flush()
# availability items belonging to test property
lines_availability_test = self.env["pms.folio.availability.wizard"].search(
@@ -598,7 +598,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
lines_availability_test[0].value_num_rooms_selected = 1
# ACT
wizard_folio.create_folio()
booking_engine.create_folio()
folio = self.env["pms.folio"].search([("partner_id", "=", self.partner_id.id)])
@@ -639,7 +639,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
discount = 0.5
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -649,7 +649,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
"pms_property_id": self.test_property.id,
}
)
wizard_folio.flush()
booking_engine.flush()
# availability items belonging to test property
lines_availability_test = self.env["pms.folio.availability.wizard"].search(
@@ -668,7 +668,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
lines_availability_test[0].value_num_rooms_selected = 1
# ACT
wizard_folio.create_folio()
booking_engine.create_folio()
folio = self.env["pms.folio"].search([("partner_id", "=", self.partner_id.id)])
@@ -705,7 +705,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
)
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -714,9 +714,9 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
"pms_property_id": self.test_property.id,
}
)
wizard_folio.flush()
booking_engine.flush()
room_type_plan_avail = wizard_folio.availability_results.filtered(
room_type_plan_avail = booking_engine.availability_results.filtered(
lambda r: r.room_type_id.id == self.test_room_type_double.id
).num_rooms_available
@@ -747,7 +747,7 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
)
# create folio wizard with partner id => pricelist & start-end dates
wizard_folio = self.env["pms.folio.wizard"].create(
booking_engine = self.env["pms.booking.engine"].create(
{
"start_date": checkin,
"end_date": checkout,
@@ -756,9 +756,9 @@ class TestPmsWizardMassiveChanges(common.SavepointCase):
"pms_property_id": self.test_property.id,
}
)
wizard_folio.flush()
booking_engine.flush()
room_type_plan_avail = wizard_folio.availability_results.filtered(
room_type_plan_avail = booking_engine.availability_results.filtered(
lambda r: r.room_type_id.id == self.test_room_type_double.id
).num_rooms_available

View File

@@ -140,7 +140,7 @@
<button
type="action"
class="oe_stat_button"
name="%(action_wizard_folio)d"
name="%(action_booking_engine)d"
icon="fa-users"
context="{'default_folio_id': id, 'default_partner_id': partner_id, 'default_pricelist_id': pricelist_id}"
>

View File

@@ -1,8 +1,7 @@
from . import wizard_split_join_swap_reservation
from . import wizard_massive_changes
from . import wizard_advanced_filters
from . import wizard_folio
from . import wizard_folio_availability
from . import pms_booking_engine
from . import folio_make_invoice_advance
from . import wizard_payment_folio
from . import wizard_folio_changes

View File

@@ -3,8 +3,8 @@ import datetime
from odoo import api, fields, models
class FolioWizard(models.TransientModel):
_name = "pms.folio.wizard"
class BookingEngine(models.TransientModel):
_name = "pms.booking.engine"
_description = "Booking engine"
_check_pms_properties_auto = True
@@ -58,7 +58,7 @@ class FolioWizard(models.TransientModel):
readonly=False,
store=True,
comodel_name="pms.folio.availability.wizard",
inverse_name="folio_wizard_id",
inverse_name="booking_engine_id",
compute="_compute_availability_results",
check_pms_properties=True,
)
@@ -162,7 +162,7 @@ class FolioWizard(models.TransientModel):
0,
0,
{
"folio_wizard_id": record.id,
"booking_engine_id": record.id,
"checkin": record.start_date,
"checkout": record.end_date,
"room_type_id": room_type_iterator.id,
@@ -215,3 +215,168 @@ class FolioWizard(models.TransientModel):
action["views"] = [(self.env.ref("pms.pms_folio_view_form").id, "form")]
action["res_id"] = folio.id
return action
class NumRoomsSelectionModel(models.TransientModel):
_name = "pms.num.rooms.selection"
_description = "Dinamic Selection based on avails room"
_rec_name = "value"
value = fields.Integer()
room_type_id = fields.Char()
booking_engine_id = fields.One2many(
comodel_name="pms.folio.availability.wizard",
inverse_name="id",
)
class AvailabilityWizard(models.TransientModel):
_name = "pms.folio.availability.wizard"
_description = "Room type line in Booking Engine"
_check_pms_properties_auto = True
booking_engine_id = fields.Many2one(
string="Folio Wizard ID",
comodel_name="pms.booking.engine",
)
checkin = fields.Date(
string="From:",
help="Date Reservation starts ",
required=True,
)
checkout = fields.Date(
string="To:",
help="Date Reservation ends",
required=True,
)
room_type_id = fields.Many2one(
string="Room Type",
help="Room Type reserved",
comodel_name="pms.room.type",
check_pms_properties=True,
)
num_rooms_available = fields.Integer(
string="Available rooms",
help="Number of rooms that are available",
store="true",
compute="_compute_num_rooms_available",
)
num_rooms_selected = fields.Many2one(
string="Selected rooms",
readonly=False,
store=True,
comodel_name="pms.num.rooms.selection",
domain="[('value', '<=', num_rooms_available), "
"('room_type_id', '=', room_type_id)]",
compute="_compute_num_rooms_selected",
)
value_num_rooms_selected = fields.Integer(
string="Number of Rooms Selected",
readonly=False,
store=True,
compute="_compute_value_num_rooms_selected",
)
price_per_room = fields.Float(
string="Price per room",
help="Price per room in folio",
compute="_compute_price_per_room",
)
price_total = fields.Float(
string="Total price",
help="The total price in the folio",
compute="_compute_price_total",
)
pms_property_id = fields.Many2one(
string="Property",
help="Propertiy with access to the element;",
related="booking_engine_id.pms_property_id",
)
board_service_room_id = fields.Many2one(
string="Board Service",
help="Board Service included in the room",
comodel_name="pms.board.service.room.type",
domain="[('pms_room_type_id','=',room_type_id)]",
check_pms_properties=True,
)
@api.depends("room_type_id", "checkin", "checkout")
def _compute_num_rooms_available(self):
for record in self:
record.num_rooms_available = self.env[
"pms.availability.plan"
].get_count_rooms_available(
record.checkin,
record.checkout,
room_type_id=record.room_type_id.id,
pricelist_id=record.booking_engine_id.pricelist_id.id,
pms_property_id=record.booking_engine_id.pms_property_id.id,
)
@api.depends("num_rooms_available")
def _compute_num_rooms_selected(self):
for record in self:
for elem_to_insert in range(0, record.num_rooms_available + 1):
if (
self.env["pms.num.rooms.selection"].search_count(
[
("value", "=", elem_to_insert),
("room_type_id", "=", record.room_type_id.id),
]
)
== 0
):
self.env["pms.num.rooms.selection"].create(
{
"value": elem_to_insert,
"room_type_id": record.room_type_id.id,
}
)
record.num_rooms_selected = self.env["pms.num.rooms.selection"].search(
[("value", "=", 0), ("room_type_id", "=", record.room_type_id.id)]
)
@api.depends("num_rooms_selected")
def _compute_value_num_rooms_selected(self):
for record in self:
if record.num_rooms_selected and record.num_rooms_selected.value:
record.value_num_rooms_selected = record.num_rooms_selected.value
elif not record.value_num_rooms_selected:
record.value_num_rooms_selected = 0
@api.depends("room_type_id", "board_service_room_id", "checkin", "checkout")
def _compute_price_per_room(self):
for record in self:
room_type_total_price_per_room = 0
for date_iterator in [
record.checkin + datetime.timedelta(days=x)
for x in range(0, (record.checkout - record.checkin).days)
]:
partner = record.booking_engine_id.partner_id
product = record.room_type_id.product_id
product = product.with_context(
lang=partner.lang,
partner=partner.id,
quantity=1,
date=fields.Date.today(),
consumption_date=date_iterator,
pricelist=record.booking_engine_id.pricelist_id.id,
uom=product.uom_id.id,
property=record.booking_engine_id.pms_property_id.id,
)
room_type_total_price_per_room += product.price
if record.board_service_room_id:
nights = (record.checkout - record.checkin).days
room_type_total_price_per_room += (
record.board_service_room_id.amount * nights
)
record.price_per_room = room_type_total_price_per_room
@api.depends("price_per_room", "value_num_rooms_selected")
def _compute_price_total(self):
for record in self:
record.price_total = record.price_per_room * record.value_num_rooms_selected

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" ?>
<odoo>
<record id="folio_wizard" model="ir.ui.view">
<record id="booking_engine" model="ir.ui.view">
<field name="name">Folio Wizard</field>
<field name="model">pms.folio.wizard</field>
<field name="model">pms.booking.engine</field>
<field name="arch" type="xml">
<form class="pt-1">
<div class="row">
@@ -141,19 +141,19 @@
</field>
</record>
<record id="action_wizard_folio" model="ir.actions.act_window">
<record id="action_booking_engine" model="ir.actions.act_window">
<field name="name">Folio creation</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">pms.folio.wizard</field>
<field name="view_id" ref="folio_wizard" />
<field name="res_model">pms.booking.engine</field>
<field name="view_id" ref="booking_engine" />
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem
name="Booking Engine"
id="menu_pms_folio_wizard"
action="action_wizard_folio"
id="menu_pms_booking_engine"
action="action_booking_engine"
sequence="55"
parent="pms.menu_reservations"
/>

View File

@@ -1,168 +0,0 @@
import datetime
from odoo import api, fields, models
class NumRoomsSelectionModel(models.TransientModel):
_name = "pms.num.rooms.selection"
_description = "Dinamic Selection based on avails room"
_rec_name = "value"
value = fields.Integer()
room_type_id = fields.Char()
folio_wizard_id = fields.One2many(
comodel_name="pms.folio.availability.wizard",
inverse_name="id",
)
class AvailabilityWizard(models.TransientModel):
_name = "pms.folio.availability.wizard"
_description = "Room type line in Booking Engine"
_check_pms_properties_auto = True
folio_wizard_id = fields.Many2one(
string="Folio Wizard ID",
comodel_name="pms.folio.wizard",
)
checkin = fields.Date(
string="From:",
help="Date Reservation starts ",
required=True,
)
checkout = fields.Date(
string="To:",
help="Date Reservation ends",
required=True,
)
room_type_id = fields.Many2one(
string="Room Type",
help="Room Type reserved",
comodel_name="pms.room.type",
check_pms_properties=True,
)
num_rooms_available = fields.Integer(
string="Available rooms",
help="Number of rooms that are available",
store="true",
compute="_compute_num_rooms_available",
)
num_rooms_selected = fields.Many2one(
string="Selected rooms",
readonly=False,
store=True,
comodel_name="pms.num.rooms.selection",
domain="[('value', '<=', num_rooms_available), "
"('room_type_id', '=', room_type_id)]",
compute="_compute_num_rooms_selected",
)
value_num_rooms_selected = fields.Integer(
string="Number of Rooms Selected",
readonly=False,
store=True,
compute="_compute_value_num_rooms_selected",
)
price_per_room = fields.Float(
string="Price per room",
help="Price per room in folio",
compute="_compute_price_per_room",
)
price_total = fields.Float(
string="Total price",
help="The total price in the folio",
compute="_compute_price_total",
)
pms_property_id = fields.Many2one(
string="Property",
help="Propertiy with access to the element;",
related="folio_wizard_id.pms_property_id",
)
board_service_room_id = fields.Many2one(
string="Board Service",
help="Board Service included in the room",
comodel_name="pms.board.service.room.type",
domain="[('pms_room_type_id','=',room_type_id)]",
check_pms_properties=True,
)
@api.depends("room_type_id", "checkin", "checkout")
def _compute_num_rooms_available(self):
for record in self:
record.num_rooms_available = self.env[
"pms.availability.plan"
].get_count_rooms_available(
record.checkin,
record.checkout,
room_type_id=record.room_type_id.id,
pricelist_id=record.folio_wizard_id.pricelist_id.id,
pms_property_id=record.folio_wizard_id.pms_property_id.id,
)
@api.depends("num_rooms_available")
def _compute_num_rooms_selected(self):
for record in self:
for elem_to_insert in range(0, record.num_rooms_available + 1):
if (
self.env["pms.num.rooms.selection"].search_count(
[
("value", "=", elem_to_insert),
("room_type_id", "=", record.room_type_id.id),
]
)
== 0
):
self.env["pms.num.rooms.selection"].create(
{
"value": elem_to_insert,
"room_type_id": record.room_type_id.id,
}
)
record.num_rooms_selected = self.env["pms.num.rooms.selection"].search(
[("value", "=", 0), ("room_type_id", "=", record.room_type_id.id)]
)
@api.depends("num_rooms_selected")
def _compute_value_num_rooms_selected(self):
for record in self:
if record.num_rooms_selected and record.num_rooms_selected.value:
record.value_num_rooms_selected = record.num_rooms_selected.value
elif not record.value_num_rooms_selected:
record.value_num_rooms_selected = 0
@api.depends("room_type_id", "board_service_room_id", "checkin", "checkout")
def _compute_price_per_room(self):
for record in self:
room_type_total_price_per_room = 0
for date_iterator in [
record.checkin + datetime.timedelta(days=x)
for x in range(0, (record.checkout - record.checkin).days)
]:
partner = record.folio_wizard_id.partner_id
product = record.room_type_id.product_id
product = product.with_context(
lang=partner.lang,
partner=partner.id,
quantity=1,
date=fields.Date.today(),
consumption_date=date_iterator,
pricelist=record.folio_wizard_id.pricelist_id.id,
uom=product.uom_id.id,
property=record.folio_wizard_id.pms_property_id.id,
)
room_type_total_price_per_room += product.price
if record.board_service_room_id:
nights = (record.checkout - record.checkin).days
room_type_total_price_per_room += (
record.board_service_room_id.amount * nights
)
record.price_per_room = room_type_total_price_per_room
@api.depends("price_per_room", "value_num_rooms_selected")
def _compute_price_total(self):
for record in self:
record.price_total = record.price_per_room * record.value_num_rooms_selected