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 -->
|
<!-- pms.room.type -->
|
||||||
<record id="demo_pms_room_type_0" model="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="pms_property_ids" eval="[(4, ref('pms.demo_pms_property'))]" />
|
||||||
<field name="name">Prop. Demo Economic</field>
|
<field name="name">Prop. Demo Suite</field>
|
||||||
<field name="code_type">ECO</field>
|
<field name="code_type">SUI</field>
|
||||||
<field name="list_price">21.00</field>
|
<field name="list_price">21.00</field>
|
||||||
<field name="class_id" ref="pms_room_type_class_0" />
|
<field name="class_id" ref="pms_room_type_class_0" />
|
||||||
<field name="room_amenity_ids" eval="[(4, ref('pms_amenity_0'))]" />
|
<field name="room_amenity_ids" eval="[(4, ref('pms_amenity_0'))]" />
|
||||||
</record>
|
</record>
|
||||||
<record id="demo_pms_room_type_1" model="pms.room.type">
|
<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="pms_property_ids" eval="[(4, ref('pms.demo_pms_property'))]" />
|
||||||
<field name="name">Prop. Demo Single</field>
|
<field name="name">Prop. Demo Views</field>
|
||||||
<field name="code_type">SNG</field>
|
<field name="code_type">VIE</field>
|
||||||
<field name="list_price">20.00</field>
|
<field name="list_price">20.00</field>
|
||||||
<field name="class_id" ref="pms_room_type_class_0" />
|
<field name="class_id" ref="pms_room_type_class_0" />
|
||||||
<field
|
<field
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
<field name="board_service_room_id" ref="pms_board_service_room_2" />
|
<field name="board_service_room_id" ref="pms_board_service_room_2" />
|
||||||
</record>
|
</record>
|
||||||
<record id="pms_reservation_1" model="pms.reservation">
|
<record id="pms_reservation_1" model="pms.reservation">
|
||||||
|
<field name="partner_id" ref="main_pms_property" />
|
||||||
<field name="reservation_type">"out"</field>
|
<field name="reservation_type">"out"</field>
|
||||||
<field name="room_type_id" ref="pms_room_type_0" />
|
<field name="room_type_id" ref="pms_room_type_0" />
|
||||||
<field name="checkin" eval="DateTime.today() + timedelta(-3)" />
|
<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.board.service.room.type.line", "pms_board_service_room_type_id"
|
||||||
)
|
)
|
||||||
pms_property_id = fields.Many2one(
|
pms_property_id = fields.Many2one(
|
||||||
"pms.property", related="pms_room_type_id.pms_property_id"
|
"pms.property",
|
||||||
)
|
)
|
||||||
price_type = fields.Selection(
|
price_type = fields.Selection(
|
||||||
[("fixed", "Fixed"), ("percent", "Percent")],
|
[("fixed", "Fixed"), ("percent", "Percent")],
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ class PmsProperty(models.Model):
|
|||||||
"user_id",
|
"user_id",
|
||||||
string="Accepted Users",
|
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")
|
room_ids = fields.One2many("pms.room", "pms_property_id", "Rooms")
|
||||||
default_pricelist_id = fields.Many2one(
|
default_pricelist_id = fields.Many2one(
|
||||||
"product.pricelist",
|
"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
|
# Business methods
|
||||||
|
|
||||||
def get_capacity(self, extra_bed=0):
|
def get_capacity(self, extra_bed=0):
|
||||||
|
|||||||
@@ -17,11 +17,6 @@ class PmsRoomType(models.Model):
|
|||||||
_inherits = {"product.product": "product_id"}
|
_inherits = {"product.product": "product_id"}
|
||||||
_order = "sequence, code_type, name"
|
_order = "sequence, code_type, name"
|
||||||
|
|
||||||
# Default methods
|
|
||||||
@api.model
|
|
||||||
def _get_default_pms_property(self):
|
|
||||||
return self.env.user.pms_property_id
|
|
||||||
|
|
||||||
# Fields declaration
|
# Fields declaration
|
||||||
product_id = fields.Many2one(
|
product_id = fields.Many2one(
|
||||||
"product.product",
|
"product.product",
|
||||||
@@ -30,12 +25,13 @@ class PmsRoomType(models.Model):
|
|||||||
delegate=True,
|
delegate=True,
|
||||||
ondelete="cascade",
|
ondelete="cascade",
|
||||||
)
|
)
|
||||||
pms_property_id = fields.Many2one(
|
pms_property_ids = fields.Many2many(
|
||||||
"pms.property",
|
"pms.property",
|
||||||
"Property",
|
"pms_property_room_type_rel",
|
||||||
required=True,
|
"room_type_id",
|
||||||
|
"pms_property_id",
|
||||||
ondelete="restrict",
|
ondelete="restrict",
|
||||||
default=_get_default_pms_property,
|
string="Properties",
|
||||||
)
|
)
|
||||||
room_ids = fields.One2many("pms.room", "room_type_id", "Rooms")
|
room_ids = fields.One2many("pms.room", "room_type_id", "Rooms")
|
||||||
class_id = fields.Many2one("pms.room.type.class", "Property Type Class")
|
class_id = fields.Many2one("pms.room.type.class", "Property Type Class")
|
||||||
@@ -77,8 +73,8 @@ class PmsRoomType(models.Model):
|
|||||||
_sql_constraints = [
|
_sql_constraints = [
|
||||||
(
|
(
|
||||||
"code_type_pms_unique",
|
"code_type_pms_unique",
|
||||||
"unique(code_type, pms_property_id)",
|
"unique(code_type)",
|
||||||
"Room Type Code must be unique by Property!",
|
"Room Type Code must be unique",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -20,11 +20,9 @@ class PmsSharedRoom(models.Model):
|
|||||||
ondelete="restrict",
|
ondelete="restrict",
|
||||||
domain=[("shared_room", "=", True)],
|
domain=[("shared_room", "=", True)],
|
||||||
)
|
)
|
||||||
pms_property_id = fields.Many2one(
|
# TODO: properties relation
|
||||||
|
pms_property_ids = fields.Many2many(
|
||||||
"pms.property",
|
"pms.property",
|
||||||
store=True,
|
|
||||||
readonly=True,
|
|
||||||
related="room_type_id.pms_property_id",
|
|
||||||
)
|
)
|
||||||
floor_id = fields.Many2one(
|
floor_id = fields.Many2one(
|
||||||
"pms.floor",
|
"pms.floor",
|
||||||
|
|||||||
@@ -43,7 +43,6 @@
|
|||||||
</page>
|
</page>
|
||||||
<page string="Rooms" name="property_rooms">
|
<page string="Rooms" name="property_rooms">
|
||||||
<group>
|
<group>
|
||||||
<field name="room_type_ids" />
|
|
||||||
<field name="room_ids" />
|
<field name="room_ids" />
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
<field name="class_id" />
|
<field name="class_id" />
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="pms_property_ids" invisible="1" />
|
<field name="pms_property_ids" widget="many2many_tags" />
|
||||||
<field
|
<field
|
||||||
name="list_price"
|
name="list_price"
|
||||||
widget='monetary'
|
widget='monetary'
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string=" Property Room Type">
|
<tree string=" Property Room Type">
|
||||||
<field name="sequence" widget="handle" />
|
<field name="sequence" widget="handle" />
|
||||||
<field name="pms_property_ids" />
|
<field name="pms_property_ids" widget="many2many_tags" />
|
||||||
<field name="name" />
|
<field name="name" />
|
||||||
<field name="code_type" />
|
<field name="code_type" />
|
||||||
<field name="list_price" />
|
<field name="list_price" />
|
||||||
|
|||||||
Reference in New Issue
Block a user