mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
@@ -3751,13 +3751,14 @@
|
||||
</record>
|
||||
|
||||
<!--pricelist 10% discount on public pricelist-->
|
||||
<record id="pricelist_discount_10%" model="product.pricelist">
|
||||
<record id="pricelist_discount_10_percent" model="product.pricelist">
|
||||
<field name="name">Public Pricelist Discount 10%</field>
|
||||
<field name="pricelist_type" />
|
||||
<field name="availability_plan_id" ref="demo_pms_availability" />
|
||||
</record>
|
||||
|
||||
<record id="pms_pricelist_item_discount_10%" model="product.pricelist.item">
|
||||
<field name="pricelist_id" ref="pricelist_discount_10%" />
|
||||
<field name="pricelist_id" ref="pricelist_discount_10_percent" />
|
||||
<field name="applied_on">3_global</field>
|
||||
<field name="base">pricelist</field>
|
||||
<field name="base_pricelist_id" ref="product.list0" />
|
||||
@@ -3765,9 +3766,6 @@
|
||||
<field name="price_discount">10.00</field>
|
||||
</record>
|
||||
|
||||
<record id="product.list0" model="product.pricelist">
|
||||
<field name="availability_plan_id" ref="demo_pms_availability" />
|
||||
</record>
|
||||
<!--Availability Plan Rules -->
|
||||
<!--room_type:double-->
|
||||
<record id="availability_rule_double_1" model="pms.availability.plan.rule">
|
||||
|
||||
@@ -14,7 +14,9 @@ from odoo.tools.misc import get_lang
|
||||
class FolioSaleLine(models.Model):
|
||||
_name = "folio.sale.line"
|
||||
_description = "Folio Sale Line"
|
||||
_order = "folio_id, sequence, reservation_order desc, service_order, date_order"
|
||||
_order = (
|
||||
"folio_id, sequence, reservation_order desc, service_order, name, date_order"
|
||||
)
|
||||
_check_company_auto = True
|
||||
|
||||
folio_id = fields.Many2one(
|
||||
|
||||
@@ -87,7 +87,7 @@ class PmsAvailabilityPlan(models.Model):
|
||||
if pricelist_id and room_type_id and date:
|
||||
rule = self.env["pms.availability.plan.rule"].search(
|
||||
[
|
||||
("availability_plan_id.pms_pricelist_ids", "=", pricelist_id),
|
||||
("availability_plan_id.pms_pricelist_ids", "in", pricelist_id),
|
||||
("room_type_id", "=", room_type_id),
|
||||
("date", "=", date),
|
||||
("pms_property_id", "=", pms_property_id),
|
||||
@@ -126,7 +126,7 @@ class PmsAvailabilityPlan(models.Model):
|
||||
[("id", "=", impacts_quota_id)]
|
||||
)
|
||||
# and restore quota in old rule item
|
||||
if old_rule:
|
||||
if old_rule and (not rule or rule.id != old_rule.id):
|
||||
old_rule.quota += 1
|
||||
|
||||
return False
|
||||
|
||||
@@ -688,6 +688,10 @@ class PmsCheckinPartner(models.Model):
|
||||
raise ValidationError(
|
||||
_("Is mandatory indicate the reservation on the checkin")
|
||||
)
|
||||
# If a checkin is manually created, we need make sure that
|
||||
# the reservation adults are computed
|
||||
if not reservation.checkin_partner_ids:
|
||||
reservation.flush()
|
||||
draft_checkins = reservation.checkin_partner_ids.filtered(
|
||||
lambda c: c.state == "draft"
|
||||
)
|
||||
|
||||
@@ -809,20 +809,61 @@ class PmsFolio(models.Model):
|
||||
)
|
||||
def _compute_sale_line_ids(self):
|
||||
for folio in self:
|
||||
sale_lines_vals = []
|
||||
if folio.reservation_type == "normal":
|
||||
sale_lines_vals_to_drop = []
|
||||
for reservation in folio.reservation_ids:
|
||||
# RESERVATION LINES
|
||||
# res = self.env['pms.reservation'].browse(reservation.id)
|
||||
self.generate_reservation_lines_sale_lines(folio, reservation)
|
||||
|
||||
reservation_sale_lines = []
|
||||
reservation_sale_lines_to_drop = []
|
||||
if reservation.reservation_line_ids:
|
||||
(
|
||||
reservation_sale_lines,
|
||||
reservation_sale_lines_to_drop,
|
||||
) = self._get_reservation_sale_lines(
|
||||
folio, reservation, sequence=reservation.folio_sequence
|
||||
)
|
||||
if reservation_sale_lines:
|
||||
sale_lines_vals.extend(reservation_sale_lines)
|
||||
if reservation_sale_lines_to_drop:
|
||||
sale_lines_vals_to_drop.extend(reservation_sale_lines_to_drop)
|
||||
# RESERVATION SERVICES
|
||||
self.generate_reservation_services_sale_lines(folio, reservation)
|
||||
|
||||
service_sale_lines = []
|
||||
service_sale_lines_to_drop = []
|
||||
if reservation.service_ids:
|
||||
(
|
||||
service_sale_lines,
|
||||
service_sale_lines_to_drop,
|
||||
) = self._get_service_sale_lines(
|
||||
folio,
|
||||
reservation,
|
||||
sequence=reservation.folio_sequence
|
||||
+ len(reservation_sale_lines),
|
||||
)
|
||||
if service_sale_lines:
|
||||
sale_lines_vals.extend(service_sale_lines)
|
||||
if service_sale_lines_to_drop:
|
||||
sale_lines_vals_to_drop.extend(service_sale_lines_to_drop)
|
||||
# FOLIO SERVICES
|
||||
self.generate_folio_services_sale_lines(folio)
|
||||
else:
|
||||
for reservation in folio.reservation_ids:
|
||||
reservation.sale_line_ids = False
|
||||
if folio.service_ids.filtered(lambda r: not r.reservation_id):
|
||||
service_sale_lines = False
|
||||
service_sale_lines_to_drop = False
|
||||
(
|
||||
service_sale_lines,
|
||||
service_sale_lines_to_drop,
|
||||
) = self._get_folio_services_sale_lines(
|
||||
folio, sequence=len(sale_lines_vals)
|
||||
)
|
||||
if service_sale_lines:
|
||||
sale_lines_vals.extend(service_sale_lines)
|
||||
if service_sale_lines_to_drop:
|
||||
sale_lines_vals_to_drop.extend(service_sale_lines_to_drop)
|
||||
if sale_lines_vals:
|
||||
folio.sale_line_ids = sale_lines_vals
|
||||
if sale_lines_vals_to_drop:
|
||||
self.env["folio.sale.line"].browse(sale_lines_vals_to_drop).unlink()
|
||||
if not sale_lines_vals:
|
||||
folio.sale_line_ids = False
|
||||
|
||||
@api.depends("pms_property_id")
|
||||
def _compute_company_id(self):
|
||||
@@ -2135,9 +2176,10 @@ class PmsFolio(models.Model):
|
||||
}
|
||||
|
||||
@api.model
|
||||
def generate_reservation_lines_sale_lines(self, folio, reservation):
|
||||
def _get_reservation_sale_lines(self, folio, reservation, sequence):
|
||||
sale_reservation_vals = []
|
||||
if not reservation.sale_line_ids.filtered(lambda x: x.name == reservation.name):
|
||||
reservation.sale_line_ids = [
|
||||
sale_reservation_vals.append(
|
||||
(
|
||||
0,
|
||||
0,
|
||||
@@ -2150,9 +2192,23 @@ class PmsFolio(models.Model):
|
||||
"price_unit": 0,
|
||||
"tax_ids": False,
|
||||
"folio_id": folio.id,
|
||||
"reservation_id": reservation.id,
|
||||
"sequence": sequence,
|
||||
},
|
||||
)
|
||||
]
|
||||
)
|
||||
else:
|
||||
sale_reservation_vals.append(
|
||||
(
|
||||
1,
|
||||
reservation.sale_line_ids.filtered(
|
||||
lambda x: x.name == reservation.name
|
||||
).id,
|
||||
{
|
||||
"sequence": sequence,
|
||||
},
|
||||
)
|
||||
)
|
||||
expected_reservation_lines = self.env["pms.reservation.line"].read_group(
|
||||
[
|
||||
("reservation_id", "=", reservation.id),
|
||||
@@ -2169,15 +2225,22 @@ class PmsFolio(models.Model):
|
||||
)
|
||||
|
||||
for index, item in enumerate(expected_reservation_lines):
|
||||
sequence += 1
|
||||
lines_to = self.env["pms.reservation.line"].search(item["__domain"])
|
||||
final_discount = self.concat_discounts(
|
||||
item["discount"], item["cancel_discount"]
|
||||
)
|
||||
|
||||
if current_sale_line_ids and index <= (len(current_sale_line_ids) - 1):
|
||||
current_sale_line_ids[index].price_unit = item["price"]
|
||||
current_sale_line_ids[index].discount = final_discount
|
||||
current_sale_line_ids[index].reservation_line_ids = lines_to.ids
|
||||
current = {
|
||||
"price_unit": item["price"],
|
||||
"discount": final_discount,
|
||||
"reservation_line_ids": [(6, 0, lines_to.ids)],
|
||||
"sequence": sequence,
|
||||
}
|
||||
sale_reservation_vals.append(
|
||||
(1, current_sale_line_ids[index].id, current)
|
||||
)
|
||||
else:
|
||||
new = {
|
||||
"reservation_id": reservation.id,
|
||||
@@ -2187,16 +2250,162 @@ class PmsFolio(models.Model):
|
||||
"product_id": reservation.room_type_id.product_id.id,
|
||||
"tax_ids": [(6, 0, reservation.tax_ids.ids)],
|
||||
"reservation_line_ids": [(6, 0, lines_to.ids)],
|
||||
"sequence": sequence,
|
||||
}
|
||||
reservation.sale_line_ids = [(0, 0, new)]
|
||||
sale_reservation_vals.append((0, 0, new))
|
||||
folio_sale_lines_to_remove = []
|
||||
if len(expected_reservation_lines) < len(current_sale_line_ids):
|
||||
folio_sale_lines_to_remove = [
|
||||
value.id
|
||||
for index, value in enumerate(current_sale_line_ids)
|
||||
if index > (len(expected_reservation_lines) - 1)
|
||||
]
|
||||
for fsl in folio_sale_lines_to_remove:
|
||||
self.env["folio.sale.line"].browse(fsl).unlink()
|
||||
return sale_reservation_vals, folio_sale_lines_to_remove
|
||||
|
||||
@api.model
|
||||
def _get_service_sale_lines(self, folio, reservation, sequence):
|
||||
sale_service_vals = []
|
||||
folio_sale_lines_to_remove = []
|
||||
for service in reservation.service_ids:
|
||||
expected_reservation_services = self.env["pms.service.line"].read_group(
|
||||
[
|
||||
("reservation_id", "=", reservation.id),
|
||||
("service_id", "=", service.id),
|
||||
("cancel_discount", "<", 100),
|
||||
],
|
||||
["price_unit", "discount", "cancel_discount"],
|
||||
["price_unit", "discount", "cancel_discount"],
|
||||
lazy=False,
|
||||
)
|
||||
current_sale_service_ids = reservation.sale_line_ids.filtered(
|
||||
lambda x: x.reservation_id.id == reservation.id
|
||||
and not x.display_type
|
||||
and x.service_id.id == service.id
|
||||
)
|
||||
|
||||
for index, item in enumerate(expected_reservation_services):
|
||||
lines_to = self.env["pms.service.line"].search(item["__domain"])
|
||||
final_discount = self.concat_discounts(
|
||||
item["discount"], item["cancel_discount"]
|
||||
)
|
||||
|
||||
if current_sale_service_ids and index <= (
|
||||
len(current_sale_service_ids) - 1
|
||||
):
|
||||
current = {
|
||||
"price_unit": item["price_unit"],
|
||||
"discount": final_discount,
|
||||
"service_line_ids": [(6, 0, lines_to.ids)],
|
||||
"sequence": sequence,
|
||||
}
|
||||
sale_service_vals.append(
|
||||
(1, current_sale_service_ids[index].id, current)
|
||||
)
|
||||
else:
|
||||
new = {
|
||||
"service_id": service.id,
|
||||
"price_unit": item["price_unit"],
|
||||
"discount": final_discount,
|
||||
"folio_id": folio.id,
|
||||
"reservation_id": reservation.id,
|
||||
"service_line_ids": [(6, 0, lines_to.ids)],
|
||||
"product_id": service.product_id.id,
|
||||
"tax_ids": [(6, 0, service.tax_ids.ids)],
|
||||
"sequence": sequence,
|
||||
}
|
||||
sale_service_vals.append((0, 0, new))
|
||||
sequence = sequence + 1
|
||||
if len(expected_reservation_services) < len(current_sale_service_ids):
|
||||
folio_sale_lines_to_remove = [
|
||||
value.id
|
||||
for index, value in enumerate(current_sale_service_ids)
|
||||
if index > (len(expected_reservation_services) - 1)
|
||||
]
|
||||
return sale_service_vals, folio_sale_lines_to_remove
|
||||
|
||||
@api.model
|
||||
def _get_folio_services_sale_lines(self, folio, sequence):
|
||||
folio_services = folio.service_ids.filtered(lambda x: not x.reservation_id)
|
||||
sale_folio_lines = []
|
||||
sale_folio_lines_to_remove = []
|
||||
if folio_services:
|
||||
if not folio.sale_line_ids.filtered(lambda x: x.name == _("Others")):
|
||||
folio.sale_line_ids = [
|
||||
(
|
||||
0,
|
||||
False,
|
||||
{
|
||||
"display_type": "line_section",
|
||||
"product_id": False,
|
||||
"product_uom_qty": 0,
|
||||
"discount": 0,
|
||||
"price_unit": 0,
|
||||
"tax_ids": False,
|
||||
"name": _("Others"),
|
||||
"sequence": sequence,
|
||||
},
|
||||
)
|
||||
]
|
||||
for folio_service in folio_services:
|
||||
sequence += 1
|
||||
expected_folio_services = self.env["pms.service.line"].read_group(
|
||||
[
|
||||
("service_id.folio_id", "=", folio.id),
|
||||
("service_id", "=", folio_service.id),
|
||||
("reservation_id", "=", False),
|
||||
("cancel_discount", "<", 100),
|
||||
],
|
||||
["price_unit", "discount", "cancel_discount"],
|
||||
["price_unit", "discount", "cancel_discount"],
|
||||
lazy=False,
|
||||
)
|
||||
current_folio_service_ids = folio.sale_line_ids.filtered(
|
||||
lambda x: x.service_id.folio_id.id == folio.id
|
||||
and not x.display_type
|
||||
and not x.reservation_id
|
||||
and x.service_id.id == folio_service.id
|
||||
)
|
||||
|
||||
for index, item in enumerate(expected_folio_services):
|
||||
lines_to = self.env["pms.service.line"].search(item["__domain"])
|
||||
final_discount = self.concat_discounts(
|
||||
item["discount"], item["cancel_discount"]
|
||||
)
|
||||
if current_folio_service_ids and index <= (
|
||||
len(current_folio_service_ids) - 1
|
||||
):
|
||||
current = {
|
||||
"price_unit": item["price_unit"],
|
||||
"discount": final_discount,
|
||||
"service_line_ids": [(6, 0, lines_to.ids)],
|
||||
"sequence": sequence,
|
||||
}
|
||||
sale_folio_lines.append(
|
||||
(1, current_folio_service_ids[index].id, current)
|
||||
)
|
||||
else:
|
||||
new = {
|
||||
"service_id": folio_service.id,
|
||||
"price_unit": item["price_unit"],
|
||||
"discount": final_discount,
|
||||
"folio_id": folio.id,
|
||||
"service_line_ids": [(6, 0, lines_to.ids)],
|
||||
"product_id": folio_service.product_id.id,
|
||||
"tax_ids": [(6, 0, folio_service.tax_ids.ids)],
|
||||
"sequence": sequence,
|
||||
}
|
||||
sale_folio_lines.append((0, 0, new))
|
||||
if len(expected_folio_services) < len(current_folio_service_ids):
|
||||
sale_folio_lines_to_remove = [
|
||||
value.id
|
||||
for index, value in enumerate(current_folio_service_ids)
|
||||
if index > (len(expected_folio_services) - 1)
|
||||
]
|
||||
else:
|
||||
sale_folio_lines_to_remove = folio.sale_line_ids.filtered(
|
||||
lambda x: x.name == _("Others")
|
||||
)
|
||||
return sale_folio_lines, sale_folio_lines_to_remove
|
||||
|
||||
@api.model
|
||||
def _prepare_down_payment_section_line(self, **optional_values):
|
||||
@@ -2234,130 +2443,6 @@ class PmsFolio(models.Model):
|
||||
)
|
||||
return UserError(msg)
|
||||
|
||||
@api.model
|
||||
def generate_reservation_services_sale_lines(self, folio, reservation):
|
||||
for service in reservation.service_ids:
|
||||
expected_reservation_services = self.env["pms.service.line"].read_group(
|
||||
[
|
||||
("reservation_id", "=", reservation.id),
|
||||
("service_id", "=", service.id),
|
||||
("cancel_discount", "<", 100),
|
||||
],
|
||||
["price_unit", "discount", "cancel_discount"],
|
||||
["price_unit", "discount", "cancel_discount"],
|
||||
lazy=False,
|
||||
)
|
||||
current_sale_service_ids = reservation.sale_line_ids.filtered(
|
||||
lambda x: x.reservation_id.id == reservation.id
|
||||
and not x.display_type
|
||||
and x.service_id.id == service.id
|
||||
)
|
||||
|
||||
for index, item in enumerate(expected_reservation_services):
|
||||
lines_to = self.env["pms.service.line"].search(item["__domain"])
|
||||
final_discount = self.concat_discounts(
|
||||
item["discount"], item["cancel_discount"]
|
||||
)
|
||||
|
||||
if current_sale_service_ids and index <= (
|
||||
len(current_sale_service_ids) - 1
|
||||
):
|
||||
current_sale_service_ids[index].price_unit = item["price_unit"]
|
||||
current_sale_service_ids[index].discount = final_discount
|
||||
current_sale_service_ids[index].service_line_ids = lines_to.ids
|
||||
else:
|
||||
new = {
|
||||
"service_id": service.id,
|
||||
"price_unit": item["price_unit"],
|
||||
"discount": final_discount,
|
||||
"folio_id": folio.id,
|
||||
"service_line_ids": [(6, 0, lines_to.ids)],
|
||||
"product_id": service.product_id.id,
|
||||
"tax_ids": [(6, 0, service.tax_ids.ids)],
|
||||
}
|
||||
reservation.sale_line_ids = [(0, 0, new)]
|
||||
if len(expected_reservation_services) < len(current_sale_service_ids):
|
||||
folio_sale_lines_to_remove = [
|
||||
value.id
|
||||
for index, value in enumerate(current_sale_service_ids)
|
||||
if index > (len(expected_reservation_services) - 1)
|
||||
]
|
||||
for fsl in folio_sale_lines_to_remove:
|
||||
self.env["folio.sale.line"].browse(fsl).unlink()
|
||||
|
||||
@api.model
|
||||
def generate_folio_services_sale_lines(self, folio):
|
||||
folio_services = folio.service_ids.filtered(lambda x: not x.reservation_id)
|
||||
if folio_services:
|
||||
if not folio.sale_line_ids.filtered(lambda x: x.name == _("Others")):
|
||||
folio.sale_line_ids = [
|
||||
(
|
||||
0,
|
||||
False,
|
||||
{
|
||||
"display_type": "line_section",
|
||||
"product_id": False,
|
||||
"product_uom_qty": 0,
|
||||
"discount": 0,
|
||||
"price_unit": 0,
|
||||
"tax_ids": False,
|
||||
"name": _("Others"),
|
||||
},
|
||||
)
|
||||
]
|
||||
for folio_service in folio_services:
|
||||
expected_folio_services = self.env["pms.service.line"].read_group(
|
||||
[
|
||||
("service_id.folio_id", "=", folio.id),
|
||||
("service_id", "=", folio_service.id),
|
||||
("reservation_id", "=", False),
|
||||
("cancel_discount", "<", 100),
|
||||
],
|
||||
["price_unit", "discount", "cancel_discount"],
|
||||
["price_unit", "discount", "cancel_discount"],
|
||||
lazy=False,
|
||||
)
|
||||
current_folio_service_ids = folio.sale_line_ids.filtered(
|
||||
lambda x: x.service_id.folio_id.id == folio.id
|
||||
and not x.display_type
|
||||
and not x.reservation_id
|
||||
and x.service_id.id == folio_service.id
|
||||
)
|
||||
|
||||
for index, item in enumerate(expected_folio_services):
|
||||
lines_to = self.env["pms.service.line"].search(item["__domain"])
|
||||
final_discount = self.concat_discounts(
|
||||
item["discount"], item["cancel_discount"]
|
||||
)
|
||||
if current_folio_service_ids and index <= (
|
||||
len(current_folio_service_ids) - 1
|
||||
):
|
||||
current_folio_service_ids[index].price_unit = item["price_unit"]
|
||||
current_folio_service_ids[index].discount = final_discount
|
||||
current_folio_service_ids[index].service_line_ids = lines_to.ids
|
||||
else:
|
||||
new = {
|
||||
"service_id": folio_service.id,
|
||||
"price_unit": item["price_unit"],
|
||||
"discount": final_discount,
|
||||
"folio_id": folio.id,
|
||||
"service_line_ids": [(6, 0, lines_to.ids)],
|
||||
"product_id": folio_service.product_id.id,
|
||||
"tax_ids": [(6, 0, folio_service.tax_ids.ids)],
|
||||
}
|
||||
folio.sale_line_ids = [(0, 0, new)]
|
||||
if len(expected_folio_services) < len(current_folio_service_ids):
|
||||
folio_sale_lines_to_remove = [
|
||||
value.id
|
||||
for index, value in enumerate(current_folio_service_ids)
|
||||
if index > (len(expected_folio_services) - 1)
|
||||
]
|
||||
for fsl in folio_sale_lines_to_remove:
|
||||
self.env["folio.sale.line"].browse(fsl).unlink()
|
||||
else:
|
||||
to_unlink = folio.sale_line_ids.filtered(lambda x: x.name == _("Others"))
|
||||
to_unlink.unlink()
|
||||
|
||||
@api.model
|
||||
def concat_discounts(self, discount, cancel_discount):
|
||||
discount_factor = 1.0
|
||||
|
||||
@@ -1624,6 +1624,13 @@ class PmsReservation(models.Model):
|
||||
)
|
||||
)
|
||||
|
||||
def _check_capacity(self):
|
||||
for record in self:
|
||||
if record.reservation_type != "out":
|
||||
self.env["pms.room"]._check_adults(
|
||||
record, record.service_ids.service_line_ids
|
||||
)
|
||||
|
||||
@api.constrains("reservation_line_ids")
|
||||
def checkin_checkout_consecutive_dates(self):
|
||||
"""
|
||||
@@ -1711,14 +1718,6 @@ class PmsReservation(models.Model):
|
||||
if record.agency_id and not record.agency_id.is_agency:
|
||||
raise ValidationError(_("booking agency with wrong configuration: "))
|
||||
|
||||
@api.constrains("check_adults")
|
||||
def _check_capacity(self):
|
||||
for record in self:
|
||||
if record.reservation_type != "out":
|
||||
self.env["pms.room"]._check_adults(
|
||||
record, record.service_ids.service_line_ids
|
||||
)
|
||||
|
||||
@api.constrains("closure_reason_id")
|
||||
def _check_closure_reason_id(self):
|
||||
for record in self:
|
||||
@@ -1917,8 +1916,8 @@ class PmsReservation(models.Model):
|
||||
vals["reservation_type"] = (
|
||||
folio.reservation_type if folio.reservation_type else "normal"
|
||||
)
|
||||
|
||||
record = super(PmsReservation, self).create(vals)
|
||||
record._check_capacity()
|
||||
if record.preconfirm and record.state == "draft":
|
||||
record.confirm()
|
||||
|
||||
@@ -1929,6 +1928,10 @@ class PmsReservation(models.Model):
|
||||
def write(self, vals):
|
||||
asset = super(PmsReservation, self).write(vals)
|
||||
self._check_services(vals)
|
||||
# Only check if adult to avoid to check capacity in intermediate states (p.e. flush)
|
||||
# that not take access to possible extra beds service in vals
|
||||
if "adults" in vals:
|
||||
self._check_capacity()
|
||||
return asset
|
||||
|
||||
def _check_services(self, vals):
|
||||
|
||||
@@ -338,16 +338,13 @@ class PmsReservationLine(models.Model):
|
||||
def _compute_impacts_quota(self):
|
||||
for line in self:
|
||||
reservation = line.reservation_id
|
||||
if isinstance(line.id, int):
|
||||
impacts_quota = False
|
||||
else:
|
||||
impacts_quota = line.impacts_quota
|
||||
impacts_quota_id = line.impacts_quota
|
||||
line.impacts_quota = self.env["pms.availability.plan"].update_quota(
|
||||
pricelist_id=reservation.pricelist_id.id,
|
||||
room_type_id=reservation.room_type_id.id,
|
||||
date=line.date,
|
||||
pms_property_id=reservation.pms_property_id.id,
|
||||
impacts_quota_id=impacts_quota,
|
||||
impacts_quota_id=impacts_quota_id,
|
||||
)
|
||||
|
||||
@api.depends(
|
||||
|
||||
@@ -615,7 +615,7 @@ class TestPmsRoomTypeAvailabilityRules(TestPms):
|
||||
"""
|
||||
# ARRANGE
|
||||
test_quota = 2
|
||||
test_pricelist2 = self.env["product.pricelist"].create(
|
||||
test_pricelist3 = self.env["product.pricelist"].create(
|
||||
{
|
||||
"name": "test pricelist 2",
|
||||
}
|
||||
@@ -647,7 +647,7 @@ class TestPmsRoomTypeAvailabilityRules(TestPms):
|
||||
)
|
||||
|
||||
# ACT
|
||||
reservation.pricelist_id = test_pricelist2.id
|
||||
reservation.pricelist_id = test_pricelist3.id
|
||||
reservation.flush()
|
||||
self.assertEqual(
|
||||
test_quota,
|
||||
|
||||
@@ -164,6 +164,7 @@ class TestProductTemplate(TestPms):
|
||||
"board_service_room_id": board_service_room_type.id,
|
||||
}
|
||||
)
|
||||
reservation.flush()
|
||||
# ASSERT
|
||||
self.assertEqual(
|
||||
reservation.service_ids.service_line_ids.day_qty,
|
||||
@@ -212,6 +213,7 @@ class TestProductTemplate(TestPms):
|
||||
"board_service_room_id": board_service_room_type.id,
|
||||
}
|
||||
)
|
||||
reservation.flush()
|
||||
# ASSERT
|
||||
# self.assertTrue(reservation, "The reservation should have been created.")
|
||||
# ASSERT
|
||||
|
||||
@@ -488,14 +488,9 @@
|
||||
<field
|
||||
name="price_subtotal"
|
||||
widget="monetary"
|
||||
groups="account.group_show_line_subtotals_tax_excluded"
|
||||
optional="hide"
|
||||
/>
|
||||
<field
|
||||
name="price_total"
|
||||
widget="monetary"
|
||||
groups="account.group_show_line_subtotals_tax_included"
|
||||
optional="show"
|
||||
/>
|
||||
<field name="price_total" widget="monetary" />
|
||||
<field name="state" invisible="1" />
|
||||
<field name="invoice_status" invisible="1" />
|
||||
<field name="currency_id" invisible="1" />
|
||||
|
||||
Reference in New Issue
Block a user