mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP]: product_template daily_limit and list_price depends of property
This commit is contained in:
@@ -3,11 +3,14 @@ from odoo import fields, models
|
||||
|
||||
class IrPmsProperty(models.Model):
|
||||
_name = "ir.pms.property"
|
||||
|
||||
_description = "IrPmsProperty"
|
||||
pms_property_id = fields.Many2one(string="Properties", comodel_name="pms.property")
|
||||
|
||||
model_id = fields.Many2one(string="Model", comodel_name="ir.model")
|
||||
|
||||
field_id = fields.Many2one(string="Field", comodel_name="ir.model.fields")
|
||||
record = fields.Integer(string="Record Id")
|
||||
|
||||
value = fields.Integer(string="Field Value")
|
||||
value_integer = fields.Integer(string="Integer Field Value")
|
||||
|
||||
value_float = fields.Float(string="Float Field Value")
|
||||
|
||||
value_reference = fields.Text(string="Reference Field Value")
|
||||
|
||||
@@ -38,6 +38,8 @@ class PmsBoardServiceLine(models.Model):
|
||||
string="Amount",
|
||||
help="Price for this Board Service Line/Product",
|
||||
default=lambda self: self._get_default_price(),
|
||||
compute="_compute_amount",
|
||||
inverse="_inverse_ir_pms_property",
|
||||
digits=("Product Price"),
|
||||
)
|
||||
|
||||
@@ -45,6 +47,58 @@ class PmsBoardServiceLine(models.Model):
|
||||
if self.product_id:
|
||||
return self.product_id.list_price
|
||||
|
||||
@api.depends_context("allowed_pms_property_ids")
|
||||
# @api.depends("pms_property_ids")
|
||||
def _compute_amount(self):
|
||||
for record in self:
|
||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||
if pms_property_id:
|
||||
model_id = self.env["ir.model"].browse(self._name).id
|
||||
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||
if model:
|
||||
field_id = self.env["ir.model.fields"].search(
|
||||
[("name", "=", "amount"), ("model_id", "=", model.id)]
|
||||
)
|
||||
ir_pms_property = self.env["ir.pms.property"].search(
|
||||
[
|
||||
("pms_property_id", "=", pms_property_id),
|
||||
("field_id", "=", field_id[0].id),
|
||||
("record", "=", record.id),
|
||||
]
|
||||
)
|
||||
if ir_pms_property:
|
||||
record.amount = ir_pms_property.value_float
|
||||
|
||||
def _inverse_ir_pms_property(self):
|
||||
for record in self:
|
||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||
if pms_property_id:
|
||||
model_id = self.env["ir.model"].browse(self._name).id
|
||||
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||
if model:
|
||||
field_id = self.env["ir.model.fields"].search(
|
||||
[("name", "=", "amount"), ("model_id", "=", model.id)]
|
||||
)
|
||||
ir_pms_property = self.env["ir.pms.property"].search(
|
||||
[
|
||||
("pms_property_id", "=", pms_property_id),
|
||||
("field_id", "=", field_id[0].id),
|
||||
("record", "=", record.id),
|
||||
]
|
||||
)
|
||||
if ir_pms_property:
|
||||
ir_pms_property.value_float = record.amount
|
||||
else:
|
||||
self.env["ir.pms.property"].create(
|
||||
{
|
||||
"pms_property_id": pms_property_id,
|
||||
"model_id": model.id,
|
||||
"field_id": field_id[0].id,
|
||||
"value_float": record.amount,
|
||||
"record": record.id,
|
||||
}
|
||||
)
|
||||
|
||||
@api.onchange("product_id")
|
||||
def onchange_product_id(self):
|
||||
if self.product_id:
|
||||
|
||||
@@ -38,9 +38,11 @@ class ProductTemplate(models.Model):
|
||||
string="Daily limit",
|
||||
help="Indicates how much products can consumed in one day",
|
||||
compute="_compute_daily_limit",
|
||||
inverse="_inverse_ir_pms_property",
|
||||
readonly=False,
|
||||
store=True,
|
||||
inverse="_inverse_daily_limit",
|
||||
)
|
||||
list_price = fields.Float(
|
||||
compute="_compute_list_price",
|
||||
inverse="_inverse_list_price",
|
||||
)
|
||||
is_extra_bed = fields.Boolean(
|
||||
string="Is extra bed",
|
||||
@@ -53,47 +55,108 @@ class ProductTemplate(models.Model):
|
||||
default=False,
|
||||
)
|
||||
|
||||
# @api.depends_context("allowed_pms_property_ids")
|
||||
@api.depends("pms_property_ids")
|
||||
@api.depends_context("allowed_pms_property_ids")
|
||||
# @api.depends("pms_property_ids")
|
||||
def _compute_daily_limit(self):
|
||||
for record in self:
|
||||
pms_property_id = False
|
||||
if record.pms_property_ids:
|
||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||
if pms_property_id:
|
||||
property = self.env["pms.property"].browse(pms_property_id)
|
||||
else:
|
||||
property = False
|
||||
if property:
|
||||
model_id = self.env["ir.model"].browse(self._name)
|
||||
model = self.env["ir.model"].search([("id", "=", model_id)])
|
||||
field_id = self.env["ir.model.fields"].search(
|
||||
[("name", "=", "daily_limit"), ("model_id", "=", model)]
|
||||
)
|
||||
ir_pms_property = self.env["ir.pms.property"].search(
|
||||
[
|
||||
("pms_property_id", "=", property.id),
|
||||
("field_id", "=", field_id.id),
|
||||
("res_id", "=", record),
|
||||
]
|
||||
)
|
||||
record.daily_limit = ir_pms_property.value
|
||||
model_id = self.env["ir.model"].browse(self._name).id
|
||||
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||
if model:
|
||||
field_id = self.env["ir.model.fields"].search(
|
||||
[("name", "=", "daily_limit"), ("model_id", "=", model.id)]
|
||||
)
|
||||
ir_pms_property = self.env["ir.pms.property"].search(
|
||||
[
|
||||
("pms_property_id", "=", pms_property_id),
|
||||
("field_id", "=", field_id[0].id),
|
||||
("record", "=", record.id),
|
||||
]
|
||||
)
|
||||
if ir_pms_property:
|
||||
record.daily_limit = ir_pms_property.value_integer
|
||||
else:
|
||||
record.daily_limit = False
|
||||
|
||||
def _inverse_ir_pms_property(self):
|
||||
@api.depends_context("allowed_pms_property_ids")
|
||||
# @api.depends("pms_property_ids")
|
||||
def _compute_list_price(self):
|
||||
for record in self:
|
||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||
field_id = self.env["ir.model.fields"].search(
|
||||
[("name", "=", "daily_limit")]
|
||||
)
|
||||
model_id = self.env["ir.model"].search([("field_id", "=", field_id[1].id)])
|
||||
ir_pms_property = self.env["ir.pms.property"].search(
|
||||
[
|
||||
("pms_property_id", "=", pms_property_id),
|
||||
("model_id", "=", model_id.id),
|
||||
("field_id", "=", field_id[1].id),
|
||||
]
|
||||
)
|
||||
if ir_pms_property:
|
||||
ir_pms_property.value = record.daily_limit
|
||||
# else:
|
||||
# crear
|
||||
if pms_property_id:
|
||||
model_id = self.env["ir.model"].browse(self._name).id
|
||||
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||
if model:
|
||||
field_id = self.env["ir.model.fields"].search(
|
||||
[("name", "=", "list_price"), ("model_id", "=", model.id)]
|
||||
)
|
||||
ir_pms_property = self.env["ir.pms.property"].search(
|
||||
[
|
||||
("pms_property_id", "=", pms_property_id),
|
||||
("field_id", "=", field_id[0].id),
|
||||
("record", "=", record.id),
|
||||
]
|
||||
)
|
||||
if ir_pms_property:
|
||||
record.list_price = ir_pms_property.value_float
|
||||
|
||||
def _inverse_daily_limit(self):
|
||||
for record in self:
|
||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||
if pms_property_id:
|
||||
model_id = self.env["ir.model"].browse(self._name).id
|
||||
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||
if model:
|
||||
field_id = self.env["ir.model.fields"].search(
|
||||
[("name", "=", "daily_limit"), ("model_id", "=", model.id)]
|
||||
)
|
||||
ir_pms_property = self.env["ir.pms.property"].search(
|
||||
[
|
||||
("pms_property_id", "=", pms_property_id),
|
||||
("field_id", "=", field_id[0].id),
|
||||
("record", "=", record.id),
|
||||
]
|
||||
)
|
||||
if ir_pms_property:
|
||||
ir_pms_property.value_integer = record.daily_limit
|
||||
else:
|
||||
self.env["ir.pms.property"].create(
|
||||
{
|
||||
"pms_property_id": pms_property_id,
|
||||
"model_id": model.id,
|
||||
"field_id": field_id[0].id,
|
||||
"value_integer": record.daily_limit,
|
||||
"record": record.id,
|
||||
}
|
||||
)
|
||||
|
||||
def _inverse_list_price(self):
|
||||
for record in self:
|
||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||
if pms_property_id:
|
||||
model_id = self.env["ir.model"].browse(self._name).id
|
||||
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||
if model:
|
||||
field_id = self.env["ir.model.fields"].search(
|
||||
[("name", "=", "list_price"), ("model_id", "=", model.id)]
|
||||
)
|
||||
ir_pms_property = self.env["ir.pms.property"].search(
|
||||
[
|
||||
("pms_property_id", "=", pms_property_id),
|
||||
("field_id", "=", field_id[0].id),
|
||||
("record", "=", record.id),
|
||||
]
|
||||
)
|
||||
if ir_pms_property:
|
||||
ir_pms_property.value_float = record.list_price
|
||||
else:
|
||||
self.env["ir.pms.property"].create(
|
||||
{
|
||||
"pms_property_id": pms_property_id,
|
||||
"model_id": model.id,
|
||||
"field_id": field_id[0].id,
|
||||
"value_float": record.list_price,
|
||||
"record": record.id,
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user