[REF] Change pms_room_type (m2o->m2m) pms_property

This commit is contained in:
Darío Lodeiros
2020-10-23 12:12:08 +02:00
parent 392502cfd5
commit 38abcaa2c0
9 changed files with 17 additions and 64 deletions

View File

@@ -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

View File

@@ -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)" />

View File

@@ -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")],

View File

@@ -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",

View File

@@ -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):

View File

@@ -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",
), ),
] ]

View File

@@ -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",

View File

@@ -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>

View File

@@ -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" />