mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[REF] Change pms_room_type (m2o->m2m) pms_property
This commit is contained in:
@@ -310,16 +310,16 @@
|
||||
<!-- pms.room.type -->
|
||||
<record id="demo_pms_room_type_0" model="pms.room.type">
|
||||
<field name="pms_property_ids" eval="[(4, ref('pms.demo_pms_property'))]" />
|
||||
<field name="name">Prop. Demo Economic</field>
|
||||
<field name="code_type">ECO</field>
|
||||
<field name="name">Prop. Demo Suite</field>
|
||||
<field name="code_type">SUI</field>
|
||||
<field name="list_price">21.00</field>
|
||||
<field name="class_id" ref="pms_room_type_class_0" />
|
||||
<field name="room_amenity_ids" eval="[(4, ref('pms_amenity_0'))]" />
|
||||
</record>
|
||||
<record id="demo_pms_room_type_1" model="pms.room.type">
|
||||
<field name="pms_property_ids" eval="[(4, ref('pms.demo_pms_property'))]" />
|
||||
<field name="name">Prop. Demo Single</field>
|
||||
<field name="code_type">SNG</field>
|
||||
<field name="name">Prop. Demo Views</field>
|
||||
<field name="code_type">VIE</field>
|
||||
<field name="list_price">20.00</field>
|
||||
<field name="class_id" ref="pms_room_type_class_0" />
|
||||
<field
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<field name="board_service_room_id" ref="pms_board_service_room_2" />
|
||||
</record>
|
||||
<record id="pms_reservation_1" model="pms.reservation">
|
||||
<field name="partner_id" ref="main_pms_property" />
|
||||
<field name="reservation_type">"out"</field>
|
||||
<field name="room_type_id" ref="pms_room_type_0" />
|
||||
<field name="checkin" eval="DateTime.today() + timedelta(-3)" />
|
||||
|
||||
@@ -48,7 +48,7 @@ class PmsBoardServiceRoomType(models.Model):
|
||||
"pms.board.service.room.type.line", "pms_board_service_room_type_id"
|
||||
)
|
||||
pms_property_id = fields.Many2one(
|
||||
"pms.property", related="pms_room_type_id.pms_property_id"
|
||||
"pms.property",
|
||||
)
|
||||
price_type = fields.Selection(
|
||||
[("fixed", "Fixed"), ("percent", "Percent")],
|
||||
|
||||
@@ -30,7 +30,6 @@ class PmsProperty(models.Model):
|
||||
"user_id",
|
||||
string="Accepted Users",
|
||||
)
|
||||
room_type_ids = fields.Many2many("pms.room.type", "pms_property_ids", "Room Types")
|
||||
room_ids = fields.One2many("pms.room", "pms_property_id", "Rooms")
|
||||
default_pricelist_id = fields.Many2one(
|
||||
"product.pricelist",
|
||||
|
||||
@@ -68,46 +68,6 @@ class PmsRoom(models.Model):
|
||||
)
|
||||
)
|
||||
|
||||
# CRUD methods
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
if (
|
||||
vals.get("pms_property_id", self.env.user.pms_property_id.id)
|
||||
!= self.env["pms.room.type"].browse(vals["room_type_id"]).pms_property_id.id
|
||||
):
|
||||
raise ValidationError(
|
||||
_(
|
||||
"A room cannot be created in a room type \
|
||||
of another property."
|
||||
)
|
||||
)
|
||||
return super().create(vals)
|
||||
|
||||
def write(self, vals):
|
||||
for record in self:
|
||||
if (
|
||||
vals.get("pms_property_id", record.pms_property_id.id)
|
||||
!= record.pms_property_id.id
|
||||
):
|
||||
raise ValidationError(
|
||||
_("A room cannot be changed to another property.")
|
||||
+ " "
|
||||
+ _("%s does not belong to %s.") % (record, record.pms_property_id)
|
||||
)
|
||||
room_type_ids = (
|
||||
self.env["pms.room.type"]
|
||||
.search([("pms_property_id", "=", record.pms_property_id.id)])
|
||||
.ids
|
||||
)
|
||||
if vals.get("room_type_id", record.room_type_id.id) not in room_type_ids:
|
||||
raise ValidationError(
|
||||
_(
|
||||
"A room cannot be changed to a room type of \
|
||||
another property or unlinked from a room type."
|
||||
)
|
||||
)
|
||||
return super().write(vals)
|
||||
|
||||
# Business methods
|
||||
|
||||
def get_capacity(self, extra_bed=0):
|
||||
|
||||
@@ -17,11 +17,6 @@ class PmsRoomType(models.Model):
|
||||
_inherits = {"product.product": "product_id"}
|
||||
_order = "sequence, code_type, name"
|
||||
|
||||
# Default methods
|
||||
@api.model
|
||||
def _get_default_pms_property(self):
|
||||
return self.env.user.pms_property_id
|
||||
|
||||
# Fields declaration
|
||||
product_id = fields.Many2one(
|
||||
"product.product",
|
||||
@@ -30,12 +25,13 @@ class PmsRoomType(models.Model):
|
||||
delegate=True,
|
||||
ondelete="cascade",
|
||||
)
|
||||
pms_property_id = fields.Many2one(
|
||||
pms_property_ids = fields.Many2many(
|
||||
"pms.property",
|
||||
"Property",
|
||||
required=True,
|
||||
"pms_property_room_type_rel",
|
||||
"room_type_id",
|
||||
"pms_property_id",
|
||||
ondelete="restrict",
|
||||
default=_get_default_pms_property,
|
||||
string="Properties",
|
||||
)
|
||||
room_ids = fields.One2many("pms.room", "room_type_id", "Rooms")
|
||||
class_id = fields.Many2one("pms.room.type.class", "Property Type Class")
|
||||
@@ -77,8 +73,8 @@ class PmsRoomType(models.Model):
|
||||
_sql_constraints = [
|
||||
(
|
||||
"code_type_pms_unique",
|
||||
"unique(code_type, pms_property_id)",
|
||||
"Room Type Code must be unique by Property!",
|
||||
"unique(code_type)",
|
||||
"Room Type Code must be unique",
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@@ -20,11 +20,9 @@ class PmsSharedRoom(models.Model):
|
||||
ondelete="restrict",
|
||||
domain=[("shared_room", "=", True)],
|
||||
)
|
||||
pms_property_id = fields.Many2one(
|
||||
# TODO: properties relation
|
||||
pms_property_ids = fields.Many2many(
|
||||
"pms.property",
|
||||
store=True,
|
||||
readonly=True,
|
||||
related="room_type_id.pms_property_id",
|
||||
)
|
||||
floor_id = fields.Many2one(
|
||||
"pms.floor",
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
</page>
|
||||
<page string="Rooms" name="property_rooms">
|
||||
<group>
|
||||
<field name="room_type_ids" />
|
||||
<field name="room_ids" />
|
||||
</group>
|
||||
</page>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<field name="class_id" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="pms_property_ids" invisible="1" />
|
||||
<field name="pms_property_ids" widget="many2many_tags" />
|
||||
<field
|
||||
name="list_price"
|
||||
widget='monetary'
|
||||
@@ -82,7 +82,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string=" Property Room Type">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="pms_property_ids" />
|
||||
<field name="pms_property_ids" widget="many2many_tags" />
|
||||
<field name="name" />
|
||||
<field name="code_type" />
|
||||
<field name="list_price" />
|
||||
|
||||
Reference in New Issue
Block a user